'FINISH' then '1' else '0' fi, else '0' fi, XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX CORREC 'PODB' '^A'&uf('+D'),'^B'v903 MPU,'BI=',v4003 REP 4001 F 'FINISH' XXXXXXXXXXXXXXXXXXX ADD 4010 XXXXXXXXXXXXXXXXXXX v1001 XXXXXXXXXXXXXXXXXXX DEL 1001 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX END XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX "; $bases=mnu_read($datapath.$dbnnamecatr); $base_ini=null; $bases_sql_template=file_get_contents('sql/irb_bases.sql'); // Название базы данных по умолчанию if ($irbModification==='i64'){ if (empty($rs_ini_array['MAIN']['READ_INI']) or !$rs_ini_array['MAIN']['READ_INI']) err("Нет параметра READ_INI в секции MAIN загруженного INI файла"); $i64reader_ini=ini_read($irbispath.$rs_ini_array['MAIN']['READ_INI']); $defaultdb=$i64reader_ini['MAIN']['DEFAULTDB']; }else $defaultdb=$rs_ini_array['MAIN']['DEFAULTDB']; if (!$bases[$defaultdb]){ foreach ($bases as $basename=>$basedescr){ $defaultdb=$basename; break; } } // Путь к базе данных по умолчанию $defaultdb_path=$datapath.$defaultdb.'/'; $bases_sql_result=''; foreach ($bases as $basename=>$basedescr){ //==================INI============================ $delim="\n\n\n\n######### $basedescr ############\n"; $curbase=($periodb===$basename) ? $bperio_ini_tempate_path : $bases_ini_tempate_path; $base_ini.=$delim.str_replace('{basename}',$basename,file_get_contents($curbase)); //==================SQL============================ $find=array('{parent}','{basedescr}','{basename}','{prof_enable}','{kat_module_id}'); $replase=array($sql_id,$basedescr,$basename,(($periodb===$basename) ? '0':'1'),$kat_module_id); $bases_sql=str_replace($find,$replase,$bases_sql_template); for($i=1;$i<10;$i++) $bases_sql=str_replace("{id$i}",$i+$sql_id,$bases_sql); $sql_id+=10; $bases_sql_result.="\n$bases_sql"; //==================FST============================ $fst_path="$datapath$basename/$basename.fst"; $autoin_path="$datapath$basename/autoin.gbl"; $to_fst=""; if($AutorsInKW) $to_fst.="1111 0 MHL,(|K=|v210^d/),(|K=|v461^h/),(|K=|v463^j/),\n1111 8 MHL,'/K=/'(v700^a/),(v970^a/),(v701^a/),(v961^a/),(v702^a/),(v926^a/),(v454^d/),(v454^e/),(v454^f/),(v470^a/),(v391^a/),(v925^f/),(v925^2/),(v925^3/),(v922^f/),(v922^2/),(v922^3/),(v330^f/),(v330^2/),(v330^3/),(v481^x/),(v481^2/),(v481^3/)\n"; if($irbKN_Display) $to_fst.="1111 0 MHL,(|K=|v691^d/),\n1111 0 MHL,(|K=|v691^a/),\n1111 0 MHL,(|K=|v691^c/),\n691 0 MHL,(|D=|v691^d/),\n691 0 MHL,(|SP=|v691^c/),\n691 0 MHL,(|FV=|v691^a/),\n691 0 MHL,(|KAF=|v691^b/),\n"; $to_fst.="3556 0 'MFN=',f(mfn,0,0),\n1111 0 MHL,(|K=|v215^d/)\n"; file_add($fst_path,$to_fst,"1111 0 |J-ИРБИС|"); file_add($autoin_path,$kzak_autoin,"//J-IRBIS"); $del_bases[]=$basename; } foreach ($del_bases as $basename){ foreach ($for_dele as $delfile){ if (is_file("$datapath$basename/$delfile")) @unlink("$datapath$basename/$delfile"); } } $new_ini_text=str_replace('{abspath}',sld($mosConfig_absolute_path.'/'),$base_ini.file_get_contents($main_ini_tempate_path)); $new_web_ini=ini_text_read($new_ini_text); //------------Корректировка отдельных параметров INI файла------------ $new_web_ini['MAIN']['IRBISPATH']=sld($irbispath); $new_web_ini['MAIN']['DATAPATH']=sld($datapath); $new_web_ini['MAIN']['WORKDIR']=sld($workdir); $new_web_ini['MAIN']['SYSPATH']=sld($syspath); $new_web_ini['MAIN']['ACTABPATH']=sld($actabpath); $new_web_ini['MAIN']['UCTABPATH']=sld($uctabpath); $new_web_ini['MAIN']['DEPOSITPATH']=sld($mosConfig_absolute_path.'/!irbis/Common_PFT/'); $new_web_ini['MAIN']['CGIFLC']=sld($mosConfig_absolute_path.'/!irbis/Common_PFT/CGIflc.pft'); $new_web_ini['WEB']['FRAMES']=sld($mosConfig_absolute_path.'/!irbis/frames/Common/'); $new_web_ini['WEB']['CGIPATH']=sld($mosConfig_absolute_path.'/!irbis/exe/'); //------------Корректировка отдельных параметров INI файла------------ //print_r($new_web_ini); //print_r($bases_sql_result); //print_r($to_fst); $find=array('{defaultdb}','{kzak_en}'); $replase=array($defaultdb,$irbKzakEn); $bases_sql_result.=str_replace($find,$replase,file_get_contents('sql/irb_static.sql')); $database = new database( $DBhostname, $DBuserName, $DBpassword, $DBname, $DBPrefix ); populate_db_string($database,$bases_sql_result); //print_r($errors); //=====================Запись SYS.MNU================================ $new_web_ini['JIRBIS']['irbModification']=$irbModification; $new_web_ini['JIRBIS']['Main_format']=($irbOldGost) ? 'fullwebr' : 'fullwebr_new'; $new_web_ini['JIRBIS']['Free_Ed']=$irbEDForUnreged; $new_web_ini['JIRBIS']['Order_Enable']=$irbZakaz; $new_web_ini['JIRBIS']['Same_search_enable']=$irbSameSearch; $new_web_ini['JIRBIS']['KO_display']=$irbKN_Display; $new_web_ini['JIRBIS']['KO_in_acquisition']=$irbKomplzak_ko; //=====================Запись jirbis_configuration.php================================ ini_write($ini_path,$new_web_ini); $config_string=<< C; $cfg=fopen($mosConfig_absolute_path.'/jirbis_configuration.php','w+') or err('Не удаётся создать файл jirbis_configuration.php'); fwrite($cfg,$config_string); fclose($cfg); //=====================Спецоперации для заказа на комплектование====================== if ($irbKzakEn){ if (!is_file($irbKomplPath))err("Не удаётся найти файл: $irbKomplPath"); //$fst_path="$datapath$basename/$basename.fst"; $to_fst="4003 0 v4003\n"; file_add($datapath."cmpl/Transn.fst",$to_fst,"1111 0 |J-ИРБИС|"); $fn[]=array($install_path.'irbfiles/autoin.gbl',$datapath.'podb/autoin.gbl',1); $fn[]=array($install_path.'irbfiles/Podb.fst',$datapath.'podb/Podb.fst',1); $fn[]=array($install_path.'irbfiles/Podb.pft',$datapath.'podb/Podb.pft',1); $fn[]=array($install_path.'irbfiles/Podb.ws',$datapath.'podb/Podb.ws',1); $fn[]=array($install_path.'irbfiles/Tabcmpl.mnu',$datapath.'podb/Tabcmpl.mnu',0); $fn[]=array($install_path.'irbfiles/zak_print.pft',$datapath.'podb/zak_print.pft',0); $fn[]=array($install_path.'irbfiles/zak_print.srw',$datapath.'podb/zak_print.srw',0); $fn[]=array($install_path.'irbfiles/zak_print.tab',$datapath.'podb/zak_print.tab',0); $fn[]=array($install_path.'irbfiles/zakaz.pft',$datapath.'podb/zakaz.pft',1); $fn[]=array($install_path.'irbfiles/dn.mnu',$datapath.'podb/dn.mnu',0); $fn[]=array($datapath.'vuz/kafch.mnu',$pft_path.'kafch.mnu',0); $kompl_ini=ini_read($irbKomplPath); $komplzak_params=ini_read($install_path.'irbini/irbisp.ini'); $kompl_ini['SEARCH']=array_merge($kompl_ini['SEARCH'],$komplzak_params['SEARCH']); if ($irbModification==='i64') $kompl_ini['SEARCHCMP']=array_merge($kompl_ini['SEARCHCMP'],$komplzak_params['SEARCH']); ini_write($irbKomplPath,$kompl_ini); //ItemNumbPdp - количество значений } //=====================Копирование файлов в Common_PFT================================ //function cf($f1,$f2){ $fn[]=array($datapath.'vuz/kafch.mnu',$pft_path.'kafch.mnu',0); $fn[]=array($defaultdb_path.'Org.mnu',$pft_path.'Org.mnu',0); $fn[]=array($defaultdb_path.'Mhr.mnu',$pft_path.'Mhr.mnu',0); $fn[]=array($datapath.'deposit/'.'Org.mnu',$pft_path.'Org.mnu',0); $fn[]=array($datapath.'deposit/'.'Mhr.mnu',$pft_path.'Mhr.mnu',0); $fn[]=array($datapath.$dbnnamecatr,$pft_path.'Dbnam3.mnu',1); foreach($fn as $filepars){ if(!@copy($filepars[0],$filepars[1])){ if ($filepars[2]==1) err('Не удаётся копирование файла: '.$filepars[0].' в папку '.$filepars[1]); } } if (file_exists( '../configuration.php' )) { $canWrite = is_writable( '../configuration.php' ); } else { $canWrite = is_writable( '..' ); } $config=file_get_contents('../configuration.php'); function file_add($fst_path,$fst_add,$fst_mark){ if($fst_contents=file($fst_path)){ $fst_flag=false; $to_fst=''; foreach ($fst_contents as $fst_string){ if (trim($fst_string)===$fst_mark)$fst_flag=($fst_flag==true) ? false : true; else if (!$fst_flag && trim($fst_string)) $to_fst.=$fst_string; } $to_fst.="$fst_mark\n$fst_add$fst_mark\n"; $fst=fopen($fst_path,'w') or $GLOBALS['err'][]="Не удаётся открыть файл: $fst_path.fst на запись"; fwrite($fst,$to_fst); fclose($fst); } else $GLOBALS['err'][]="Не удаётся открыть файл: $fst_path.fst на чтение"; } function sla($string){ return str_replace(array(chr(92),'//',chr(92).chr(92)),'/',$string); } function sld($string){ return str_replace('/',chr(92),$string); } function ini_read($ini_path){ if (!($strings=file($ini_path))) err('Не удаётся открыть INI файл:'.$ini_path); return ini_read_common($strings); } function ini_text_read($ini_text){ if (!$ini_text) err('Текст INI файла не передан'); $strings=explode("\n",$ini_text); return ini_read_common($strings); } function ini_read_common($strings){ $counter=0; $section_name='NO_SECTIONS'; foreach ($strings as $string){ if (preg_match('{\\[(.+)\\]}',$string,$rez)){ //print_r($rez[1]); $section_name=strtoupper(trim($rez[1])); }elseif (preg_match('{(.+?)=(.+)}',$string,$rez)){ $ini_array[$section_name][strtoupper($rez[1])]=trim($rez[2]); }elseif (preg_match('{(#.+)}',$string,$rez)){ $ini_array[$section_name][$counter++]=trim($rez[1]); } //echo $string; } return $ini_array; } function mnu_read($mnu_path){ $keys=file($mnu_path); for($i=0;$i$section_value){ if ($section!=='NO_SECTIONS') fwrite($inifile,"\n\n[".$section."]\n"); foreach ($section_value as $par=>$value){ if (is_numeric($par)) fwrite($inifile,"$value\n"); else fwrite($inifile,"$par=$value\n"); } } fclose($inifile); return true; } function ini_replase($find,$replase,$ini_array){ foreach ($ini_array as $section=>$value){ $new_section=str_replace($find,$replase,strtolower($section)); $new_ini[strtoupper($new_section)]=str_replace($find,$replase,$section); } return $new_ini; } function err($message){ echo "
"; echo ""; echo ""; //exit(); } function log_errors($errno,$msg,$file,$line){ $error="Произошла ошибка с кодом $errno. Файл $file, строка $line. Текст ошибки: $msg.\n"; @error_log($error,1,'sokolinsky_k_e@mail.ru'); $f=fopen($GLOBALS['mosConfig_absolute_path'].'/install_errors.log',"a+t") or die("Проблемы с открытием файла протокола"); fwrite($f,(date('Y m d H:i:s')).$error); fclose($f); } ?>