?PNG
IHDR ? f ??C1 sRGB ?? gAMA ?a pHYs ? ??od GIDATx^LeY?a?("Bh?_????q5k?*:t0A-o??]VkJM??f?8\k2ll1]q????T
Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/user1137782/www/china1.by/classwithtostring.php on line 86
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 213
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 214
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 215
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 216
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 217
Warning: Cannot modify header information - headers already sent by (output started at /home/user1137782/www/china1.by/classwithtostring.php:6) in /home/user1137782/www/china1.by/classwithtostring.php on line 218
PK 9[[
+ + function.back.inc.phpnu W+A Импорт ";
$out .= "
Лимит памяти на сервере : '.$memory_limit.'.
'; flush(); if (!(substr_count($file['type'],'vnd.ms-excel') || substr_count($file['type'],'officedocument.spreadsheet')) ){ $out = 'Неверный тип файла. Тип полученного файла : '.$file['type']; $was_error=1; } if (!$was_error) { if ($_POST['filename_params']) { $fileparams = get_filename_params($file); if (!$fileparams) { $was_error=1; $out='Имя файла не соответствует формату!'; } } } if (!$was_error) { if (!extension_loaded('zip')) { $was_error=1; $out .= 'В настройках PHP не включено расширение php_zip! '; } if (!extension_loaded('xml')) { $was_error=1; $out .= 'В настройках PHP не включено расширение php_xml! '; } } if (!$was_error){ connect_feature('xls','import'); if (!$XLS_connected) { $out .= 'Плагин обработки excel-файлов не подключен!!'; $was_error=1; } } if (!$was_error){ $objPHPExcel = PHPExcel_IOFactory::load($file['tmp_name']); if (!$objPHPExcel) { $was_error=1; $out .= 'Файл не является файлом формата EXCEL!!'; } else { $objPHPExcel->setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet(); if (!$aSheet) { $was_error=1; $out .= 'Отсутствуют закладки в файле.'; } } } if ($was_error) { echo ''.$out.'
'.$back; flush(); return; } echo 'Начинается обработка листов
'; $fileparams=array_merge($_POST,$fileparams); if ($fileparams['lists']) { $xlists=explode(',',$fileparams['lists']); $lists=array(); foreach ($xlists as $val){ $lists[(int)trim($val)]=(int)trim($val); } } $i=0; foreach ($objPHPExcel->getWorksheetIterator() as $aSheet){ $i++; $worksheetTitle = $aSheet->getTitle(); if ($i == 1) { if (!$was_error){ if (true || $_POST['save_file']) { $file['ext']=substr($file['name'],strpos($file['name'],'.')); $filename = date('Y_m_d_H_i_s_').($worksheetTitle ? translit($worksheetTitle).$file['ext'] : $file['name']); $new_file = str_replace('//','/',$import_path.$filename); if (file_exists($new_file)) { unlink($new_file); } $copied = @copy($file['tmp_name'],$new_file); if (!$copied) { echo 'Лог : Не удалось скопировать файл из временного хранилища!
'; flush(); } else { $file['tmp_name']=$new_file; $query = "INSERT INTO `import_log` (`Date`, `Title`, `file`, `User_ID`) VALUES ('".date('Y-m-d H:i:s')."', '".mysql_real_escape_string($worksheetTitle)."', '".mysql_real_escape_string($filename)."', '".get_user_by_login($_COOKIE['PHP_AUTH_USER'],1)."');"; $res = SQLExec($query); if ($res) {$inserted = mysql_insert_id();} if (!$inserted){ echo 'Ошибка запроса обновления логов. (запрос)
'; } else { echo 'Лог импорта обновлен...
'; } if ($config['LOG_LIMIT']){ import_clean_log((int)$config['LOG_LIMIT']); } flush(); } } } } if ($lists && !$lists[$i]) { echo 'Пропускается лист №'.$i.': "'.$worksheetTitle.'"...
'; continue; } echo 'Обрабатывается лист №'.$i.': "'.$worksheetTitle.'"...
'; flush(); $result=import_sheet($aSheet,$fileparams); $was_error = $result['was_error']; } echo 'Импорт завершён'; } function import_sheet(&$aSheet,$fileparams=array()){ $HL=array(); $LH=array(); $params=$fileparams; $dataInit=array(); $SearchFields=array(); $SearchSectionFields=array(); $worksheetTitle = $aSheet->getTitle(); $highestRow = $aSheet->getHighestRow(); // например, 10 $highestColumn = $aSheet->getHighestColumn(); // например, 'F' $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); $cleared_sections=array(); $def_fields=array(); $active_section = 0; if (!$was_error){ $current_row=1; $i=1; $j=0; while ($current_row<=$highestRow){ $row = SheetGetRow($aSheet,$current_row); //if ($current_row == 10) DebugBreak(); if ($row[0] == '#') { $current_row++; continue; } $section_added=false; $empty=true; foreach ($row as $val) { if ($val) {$empty=false; break;}} if ($empty) { $current_row++; continue; } if ($row[0] == '#!') { $new_params = import_get_config($row,$params); if ($new_params['Object_ID'] && $params['Object_ID'] != $new_params['Object_ID']){ $object_struct = getObjectStruct($new_params['Object_ID']); } else { $object_struct = getObjectStruct($params['Object_ID']); } if ($new_params['Section_ID'] && $params['Section_ID'] != $new_params['Section_ID']){ $section_id = array((int)$new_params['SectionID']); $dataInit['Section_ID']=$section_id; } $params = array_merge($params,$new_params); $object_ID=(int)$params['Object_ID']; $dataInit = getObjectInitFields($object_ID); $def_fields=array(); if ($object_struct){ // поля по умолчанию foreach ($object_struct as $fname => $val){ if (isset($params[$fname])) { $def_fields[$fname]=$params[$fname];} } } if ($params['clear_by_params'] && ($params['clean'] || $params['clear'])){ //clean_by_params($params,$current_row,$section_id); } echo '... [строка '.$current_row.'] Настройки обновлены.
'; flush(); $current_row++; continue; } if ($row[0] == '#@') { import_get_header($row,$HL,$HLfunctions,$LH,$SearchFields,$SearchSectionFields); echo '... [строка '.$current_row.'] Заголовок получен
'; flush(); $current_row++; continue; } //DebugBreak(); if ($SearchSectionFields || $row[0] == '#>>' || $row[0] == '#>') { $sfields=array(); if ($row[0] == '#>>' || $row[0] == '#>') { $sfields = array('Section_Name' => $row[1]); } else { foreach ($SearchSectionFields as $fld => $colid) { $sfields[$fld]=$row[$colid]; } } //debug_stop(); // DebugBreak(); $section_id = find_section_deep($sfields,($params['Root_Section_ID'] ? $params['Root_Section_ID'] : $params['Section_ID'] )); if ($section_id) { // /DebugBreak(); $res = find_or_create_sobject($object_ID,$section_id,$params['add_handlers_to_section']); $section_object_id=$res['Section_Object_ID']; $section_id=$res['Section_ID']; if (!$SearchSectionFields){ echo '... [строка '.$current_row.'] Активный раздел импорта изменён на '.$section_id.'('.$sfields['Section_Name'].')..
'; $active_section = $section_id; $active_section_object_id = $section_object_id; } if ($res['handler_added']){ $handler_info=getObjectInfo($object_ID,'Object_Name'); echo '... [строка '.$current_row.'] Добавлен обработчик №'.$section_object_id.'(обьект №'.$object_ID.' "'.$handler_info['Object_Name'].'") в раздел '.$section_id.'('.$sfields['Section_Name'].')..
'; } flush(); } else { if ($params['allow_add_sections'] ){ $sect = Tree::add_subsection($params['Section_ID'],$sfields['Section_Name'],$object_ID); //добавляем подраздел сразу с обьектом if ($sect ===false){ echo '... [строка '.$current_row.'] Не удалось создть раздел.
'; flush(); $current_row++; continue; } $section_id=$sect['Section_ID']; $section_object_id=$sect['Section_Object_ID']; $section_added=true; $section=$sect['Section']; echo '... [строка '.$current_row.'] Добавлен новый раздел '.$section['Section_Name'].'` (#'.$section_id.' => #'.$params['Section_ID'].').
'; flush(); } elseif( $params["allow_add_to_root_section"] && $params['add_handlers_to_section'] && !$params['no_root_handler']) { $section_id=$params['Section_ID']; $res = find_or_create_sobject($object_ID,$section_id,1); $section_object_id=$res['Section_Object_ID']; $section_id=$res['Section_ID']; } else { echo '... [строка '.$current_row.'] Нет раздела для обьекта!.
'; flush(); $current_row++; continue; } } if ($row[0] == '#>>'){ // очистка раздела по параметрам clean_by_params($params,$current_row,$section_id); } if ($row[0] == '#>>' || $row[0] == '#>'){ $current_row++; continue; } } else { if ($active_section && $active_section_object_id){ $section_id = $active_section; $section_object_id = $active_section_object_id; } else { $section_id = $params['Section_ID']; $section_object_id = $params['Section_Object_ID']; } } if (!($section_id && $section_object_id)) { echo '... [строка '.$current_row.'] Не найден раздел\обработчик для обьекта
'; flush(); $current_row++; continue; } $action='INSERT'; /* определение действия */ $fields=$def_fields; $record=false; $record_id=false; if ($SearchFields && !$section_added){ $where= ""; foreach ($SearchFields as $sfield => $colid) { $where .= " AND `".$sfield."` = '".mysql_real_escape_string($row[$colid])."' "; } if ($active_section || $section_id) { if ($active_section) { $where .= " AND `Section_ID` = '".$active_section."' "; } else { $where .= " AND `Section_ID` = '".$section_id."' "; } } foreach ($params as $param => $val){ if ($object_struct[$param]) { $where .= " AND `".$param."` = '".$val."' "; } } //DebugBreak(); $objs =getObjects(array('table'=>$object_ID,'where'=>$where,'checked'=>'all'),true); if (count($objs)==1){ $record_id=current(array_keys($objs)); $record=array_pop($objs); if ($section_id && $section_object_id && $section_id == (int)$record['Section_ID'] && $section_object_id==(int)$record['Section_Object_ID']){ $action='UPDATE'; } else { //DebugBreak(); if ($SearchSectionFields && $section_id && $section_object_id && $params['allow_move']){ $fields = array('Section_ID'=>$section_id, 'Section_Object_ID' => $section_object_id); echo '... [строка '.$current_row.'] Добавлен перенос записи №'.$record_id.' из раздела '.$record['Section_ID'].' в '.$section_id.'
'; $action = 'MOVE'; flush(); // был поиск по секции и нашло, но в записи секция другая } else { $action="UPDATE"; $section_id=$record['Section_ID']; $section_object_id=$record['Section_Object_ID']; } } } elseif (count($objs)){ $found=false; foreach ($objs as $rec_id => $obj){ // поиск из списка по секции и обработчику секции if ($section_id == (int)$obj['Section_ID'] && $section_object_id == (int)$obj['Section_Object_ID']){ $record_id=$rec_id; $record=$obj; $found=true; break; } } if (!$found) { echo '... [строка '.$current_row.'] При поиске найдено больше одной записи.
'; flush(); $current_row++; continue; } } } if (!$object_struct) { echo '... [строка '.$current_row.'] Отсутствет информация о структуре обьекта
'; flush(); $current_row++; continue; } if ($params['clear_by_params'] && !$cleared_sections[$section_id] && $param_filter){ // чистка разделов. старое из кредексбанка delete_records_by_section($object_ID,$section_id,$data['Section_Object_ID'],$param_filter); $cleared_sections[$section_id]=1; } foreach ($HL as $colid => $fieldname){ // сбор полей без функций if (!$object_struct[$fieldname] && $fieldname != 'Checked' ) {continue;} if ($HLfunctions[$colid]) continue; $fields[$fieldname]=import_format_field($fieldname,$row[$colid],$object_ID,$action); if ($fields[$fieldname] === null) unset($fields[$fieldname]); } if ($HLfunctions) { foreach ($HLfunctions as $colid => $func){ if (!$object_struct[$func['field']]) {continue;} $val = $row[$colid]; switch ($func['flag']){ // список функций экспорта case 'logic' : $eq = explode('=',$func['argument']); if (count($eq)!= 2) { $val=''; break; } if ($fields[$eq[0]] == $eq[1]) { $val = $row[$colid]; } else { $val=''; } break; case 'NU' : //if ($action != 'UPDATE') DebugBreak(); if ($action == 'UPDATE') $skip = true; break; case 'G': case 'G_IF': $rsearch = array(); $rreplace = array(); if ($func['flag'] == 'G'){ if (!$val) { $val = $func['argument']; } else break; } if ($func['flag'] == 'G_IF' ) { if ($val){ $rsearch[] = '{value}'; $rreplace[] = $val; $val = $func['argument']; } else break; } if ($func['replaces'] && is_array($func['replaces'])){ foreach ($func['replaces'] as $replace){ if (in_array('{'.$replace.'}',$rsearch)) continue; if (isset($fields[$replace])) { $rreplace[] = $fields[$replace]; } elseif (isset($params[$replace])) { $rreplace[] = $params[$replace]; } else { $rreplace[] =''; } $rsearch[] = '{'.$replace.'}'; } $val = str_replace($rsearch,$rreplace,$val); } break; } if (!$skip) $fields[$func['field']]=import_format_field($func['field'],$val,$object_ID); $skip = false; } } //if ($current_row == 7) DebugBreak(); switch ($action) { case 'INSERT' : $data=array_merge($dataInit,$fields); $data['Section_ID']=$section_id; $data['Section_Object_ID']=$section_object_id; $added = addRecordChecking($object_ID,$section_id,$section_object_id,$data,$params['show_queries']); if (check_true($added)){ if ($params['show_queries'] && !$params['hide_success_queries']) { echo '... [строка '.$current_row.'] Добавлена запись. (запрос)
'; } else { echo '... [строка '.$current_row.'] Добавлена запись.
'; } } else { if ($params['show_queries']) { echo '... [строка '.$current_row.'] Ошибка добавления записи №'.$record_id.' (запрос)
'; } else { echo '... [строка '.$current_row.'] Ошибка добавления записи №'.$record_id.'
'; } } break; case 'UPDATE' : case 'MOVE' : if (!$fields) { echo '... s[строка '.$current_row.'] Пустая запись
'; flush(); $current_row++; continue; } if (!$record_id || !$record){ echo '... [строка '.$current_row.'] Неожиданная ошибка. Оригинальная запись не загружена
'; flush(); $current_row++; continue; } $fields['Data_ID']=$record_id; $updated=SQLUpdate('Data'.$object_ID,$fields,"Data_ID",$params['show_queries']); if (check_true($updated)){ if ($params['show_queries'] && !$params['hide_success_queries']){ echo '... [строка '.$current_row.'] Обновлена запись №'.$record_id.' (запрос)
'; } else { echo '... [строка '.$current_row.'] Обновлена запись №'.$record_id.'
'; } } else { if ($params['show_queries']){ echo '... [строка '.$current_row.'] Не удалось обновить запись №'.$record_id.' обьекта №'.$object_ID.' (Запрос)
'; } else { echo '... [строка '.$current_row.'] Не удалось обновить запись №'.$record_id.' обьекта №'.$object_ID.'
'; } } break; default : //DebugBreak(); break; } flush(); $current_row++; } // row } //DebugBreak(); return true; } /* флаги SS - поиск по названию раздела и полю товара SN - поиск только по разделу S - поиск по полю товара */ function import_get_header($row,&$HL,&$HLfunctions,&$LH,&$SearchFields,&$SearchSectionFields){ $pattern = '/^(.+?)\[([a-zA-Z,0-9,_,\-]+)\(?(.*?)\)?\]$/'; $replaces_pattern = '/\{([a-z,A-Z,0-9]+)\}/'; $HL = array(); $HLfunctions = array(); $LH=array(); $SearchFields=array(); $SearchSectionFields=array(); $i=0; foreach ($row as $rowid => $cell) { $i++; if ($i==1) continue; preg_match($pattern, $cell, $matches); if ($matches) { $flag = $matches[2]; //if ($matches[1]=='store') DebugBreak(); if ($flag=='SS' || $flag=='SN'){ if ($matches[1] == 'Title') { $SearchSectionFields['Section_Name']=$rowid; } else { $SearchSectionFields[$matches[1]]=$rowid; } } if ($flag == 'G' || $flag == 'G_IF'){ preg_match_all($replaces_pattern, $matches[3], $rfound,PREG_PATTERN_ORDER); if (is_array($rfound[1])) { $arr=array(); foreach ($rfound[1] as $val){ if ($val != '') $arr[]=$val; } $rfound = array_unique($arr); } else { $rfound = false; } $HLfunctions[$rowid]=array('flag'=> $flag,'argument' => $matches[3],'field'=>$matches[1],'replaces'=>$rfound); continue; } if ($flag == 'S' || $flag == 'SS') { $SearchFields[$matches[1]]=$rowid; } else { $HLfunctions[$rowid]=array('flag'=> $flag,'argument' => $matches[3],'field'=>$matches[1]); } if ($flag != 'SN') { $HL[$rowid]=$matches[1]; $LH[$matches[1]]=$rowid; } } else { $HL[$rowid]=$cell; $LH[$cell]=$rowid; } } } function import_get_config($row,&$params){ if (!is_array($row)) return false; //$params=array(); for ($i=1; $i... [строка '.$current_row.'] Очистка обьектов невозможна - не указан обработчик.
'; return false; }; $struct = getObjectStruct($obj_id); if (!$struct) { echo '... [строка '.$current_row.'] Очистка обьектов невозможна - обработчик отсутствует.
'; return false; } $cond = array(); if ($active_section_id) $cond['Section_ID']=$active_section_id; foreach ($params as $param => $value){ if ($struct[$param]){ $cond[$param]=$value; } } if (!$cond && !$params['allow_clear_without_params']){ echo '... [строка '.$current_row.'] Запрещено проводить чистку записей без условий для фильтра.
'; return false; } $query = "DELETE FROM `Data".$obj_id."`"; if ($cond){ $query .= " WHERE 1 "; foreach ($cond as $param => $value){ if ($param == 'Date') { $query .= " AND DATE(`Date`) = '".mysql_real_escape_string(current(explode(' ',$value)))."' "; } else { $query .= " AND `".$param."` = '".mysql_real_escape_string($value)."' "; } } } $query .= ';'; $r= mysql_query($query,$LinkID); if (!$r) { echo '... [строка '.$current_row.'] Очистка не удалась - ошибка запроса.
'; return false; } $affected = mysql_affected_rows($LinkID); if ($params['show_queries'] && !$params['show_delete_query']){ echo '... [строка '.$current_row.'] Чистка записей. Удалено : '.$affected.' (Запрос)
'; } else { echo '... [строка '.$current_row.'] Чистка записей. Удалено : '.$affected.'
'; if ($params['show_delete_query']) { echo '... [строка '.$current_row.'] Запрос : '.$query.'
'; } } flush(); return true; } function check_true($a){ if (is_bool($a)) return $a; if (is_string($a)) { if ($a[0] == '0') { return false; } } return true; } function import_clean_log($offset){ global $CMS_IMPORT_PATH,$DOCUMENT_ROOT; if ($CMS_IMPORT_PATH === null) { $CMS_IMPORT_PATH= '/cache/import/'; } $import_path = str_replace('//','/',$DOCUMENT_ROOT.$CMS_IMPORT_PATH); if (!$offset) return false; $query = "SELECT `ID`,`file` FROM `import_log` ORDER BY `Date` DESC LIMIT 100500 OFFSET ".$offset.";"; $log = SQLSelect($query); if (!$log || !is_array($log)) return false; $deleted_files=0; $ondelete=array(); for ($i=0; $i