<http://forum.pspad.com/read.php?f=2&i=10725&t=10725>
----------------------------------------------------------------
Version: 4.5.0(2175)
I met a case that "find" function didn't work. There are two
"$rlpf_base" variable in the perl file. But when I used "find"
function,It can't find it.
You can refer the perl file as following:
#!/usr/bin/perl
use FindBin;
use lib ("$FindBin::Bin/../util/EZXAP_FLEX");
use lib ("$FindBin::Bin/../util/EZXAP_FLEX/Compare");
use lib ("$FindBin::Bin/../util/EZXAP_FLEX/Setup");
use APFlexConst;
use APFlexUtil;
use APFlexTxtSync;
use CGI;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use APFlexTxtSync;
use APFlexGenerateSetup;
use Resource::APFlexGenerateResource;
use APFlexResourceSync;
use Template;
use DBI;
my $dbh_mysql =
DBI->connect("DBI:mysql:gsmflex:$MYSQL_HOST",'gsmflex_u1','gsmflex_u1')
or die "DB connect error".DBI->errstr;
my $sth_mysql;
#Get request id and model argument
my $cgi = CGI->new();
my $sync_obj = APFlexTxtSync->New();
my $setup_obj = APFlexGenerateSetup->New();
my @request = $cgi->param("sync_request");
my $fcc = $cgi->param("fcc");
my $session_user = cookie("session_user");
my %trans_request;
my ($req_id,$sync_model);
my $req_item;
foreach $req_item (@request)
{
($req_id,$sync_model) = split(/:/,$req_item,2);
push (@{$trans_request{$sync_model}},$req_id);
}
#update sync request status
my $sync_date = `date '+%Y/%m/%d'`;
my $update_sql = qq/UPDATE sync_request SET `Req_Status`
='done',`Sync_By`='$session_user',`Sync_Date`='$sync_date' WHERE
`Req_ID`=? AND `Model` = ?/;
my $get_base_sql = qq/SELECT `Sync_Base` FROM sync_request WHERE
(`Req_ID`=? AND `Model` = ?)/;
my $update_item_status = qq/UPDATE sync_request_status SET `Item_Status`=
'done' WHERE (`Req_ID`=? AND `Model` = ? AND `If_Need_Sync` = 'yes')/;
my $sth_update = $dbh_mysql->prepare($update_sql) ;
my $item_update = $dbh_mysql->prepare($update_item_status) ;
my $sth_get_base = $dbh_mysql->prepare($get_base_sql) ;
#begion to sync
my $sync_model ;
my $sync_request;
my %env_var;
my $pdc;
my $row_ref;
my $root_dir;
my $baseflex;
my $version;
my %all_flexurl;
my $fetch_result;
my $base_flex_version;
my $latest_flex_verion;
my $rlpf_base;
foreach $sync_model (keys %trans_request)
{
my %model_flexlocation;
my $query_sql = qq/ SELECT PDC FROM model_name WHERE NAME = ?/;
$sth_mysql = $dbh_mysql->prepare_cached($query_sql);
$sth_mysql->execute($sync_model);
$row_ref = $sth_mysql->fetchrow_hashref();
$pdc = $$row_ref{'PDC'};
my @request_bymodel = @{%trans_request->{$sync_model}};
# sync according the serize of request id
@request_bymodel = sort {$a<=>$b} @request_bymodel;
foreach $sync_request (@request_bymodel)
{
$sth_get_base->execute($sync_request,$sync_model);
$fetch_result = $sth_get_base->fetchrow_hashref();
$base_flex_version = $$fetch_result{'Sync_Base'};
if($fcc eq "FCC01")
{
%env_var =
$sync_obj->sync_feature($sync_request,$sync_model,"FCC01",$session_user,$base_flex_version);
$root_dir = %env_var->{'root_dir'};
$latest_flex_verion = %env_var->{'latest_flex'};
$version = substr($latest_flex_verion,-3);
$version = sprintf("%03U",($version + 1));
%model_flexlocation =
$setup_obj->generate_setup_flex($pdc,$sync_model,$version,$base_flex_version,$root_dir,$session_user);
push(@{$all_flexurl{$sync_model}},%model_flexlocation->{'url'});
$sth_update->execute($sync_request,$sync_model);
$item_update->execute($sync_request,$sync_model);
}
if($fcc eq "FCC05")
{
$rlpf_base = $$fetch_result{'Rlpf_Base'};
my $res_sync = APFlexResourceSync->New();
my $res_gen = APFlexGenerateResource->New();
my $tmp_dir = $EZXAP_FLEX_TEMP_ROOT_DIR;
$tmp_dir =~ s/session_user/$session_user/g;
$root_dir =
$res_sync->data_resource_sync($sync_request,$sync_model,$base_flex_version,$rlpf_base,$tmp_dir);
}
}
}
$sth_mysql->finish();
$sth_update->finish();
&front_end();
# front end
sub front_end()
{
my $tdir = $EZXAP_FLEX_CGI_ROOT_DIR . "/template";
$| = 1;
my $tt = Template->new( {INCLUDE_PATH => [ '.', $tdir ]});
my $input = 'sync_flex.html';
my $vars ={
head => {
title=>'Choice Sync Items',
css =>[
{
path =>$EZXAP_FLEX_CGI_ROOT_URL . "/css",
name=>'apflex_cr.css'
}
],
},
files =>{%all_flexurl},
APURL =>$EZXAP_FLEX_CGI_ROOT_URL,
};
$tt->process($input, $vars)|| die $tt->error( );
}
--
PSPad freeware editor http://www.pspad.com