private function check_default_settings() { $this->load('modules'); $catalogue_ids = (array) $this->db->get_col("select Catalogue_ID from Catalogue"); $shop_mode = 0; if ($this->modules->get_by_keyword('netshop')) { $shop_mode++; } if ($this->modules->get_by_keyword('minishop')) { $shop_mode++; } foreach ($catalogue_ids as $id) { $this->set_settings('nc_shop_mode_' . $id, $shop_mode); } }
public function convert_system_vars($env_array, $reset = 0) { static $storage = array(); static $filetable_storage = array(); $reset = 1; if (!empty($storage[$this->essence][$env_array[$this->essence . "_ID"]]) && !$reset) { return $storage[$this->essence][$env_array[$this->essence . "_ID"]]; } /* $debug = debug_backtrace(); $debug_arr = array(); foreach ($debug as $value) { $debug_arr[] = $value['function']; } echo join( " -> ", array_reverse($debug_arr) )."<br/>"; echo $this->essence." - ".$env_array[$this->essence."_ID"]."<br/><br/>"; */ // system superior object $nc_core = nc_Core::get_object(); // load system table fields $table_fields = $nc_core->get_system_table_fields($this->essence); // count $field_count = count($table_fields); // поля типа файл $file_field_ids = array(); $filetable = array(); // найдем все поля типа файл for ($i = 0; $i < $field_count; $i++) { if ($table_fields[$i]['type'] == 6) { $file_field_ids[$table_fields[$i]['id']] = $table_fields[$i]['id']; } } // если есть поля типа файл, то выполним запрос к Filetable // TODO этот фрагмент требует дальнейшей оптимизации // (выбираются все файлы! бред) if (!empty($file_field_ids)) { $file_field_ids = join(',', $file_field_ids); if (!array_key_exists($file_field_ids, $filetable_storage)) { $filetable_storage[$file_field_ids] = $this->db->get_results("SELECT `Virt_Name`, `File_Path`, `Message_ID`, `Field_ID`\n FROM `Filetable`\n WHERE `Field_ID` IN ({$file_field_ids})", ARRAY_A); } $file_in_table = $filetable_storage[$file_field_ids]; if (!empty($file_in_table)) { foreach ($file_in_table as $v) { $filetable[$v['Message_ID']][$v['Field_ID']] = array($v['Virt_Name'], $v['File_Path']); } } } // Проход по всем полям for ($i = 0; $i < $field_count; $i++) { $field_id = $table_fields[$i]['id']; $field_name = $table_fields[$i]['name']; $field_type = $table_fields[$i]['type']; $field_format = $this->db->escape($table_fields[$i]['format']); $field_inherit = $table_fields[$i]['inheritance']; if ($env_array[$field_name]) { switch ($field_type) { // Select case 4: $table_name = strtok($field_format, ':'); $listname = $this->db->get_var("SELECT `" . $table_name . "_Name` FROM `Classificator_" . $table_name . "` WHERE `" . $table_name . "_ID` = '" . $env_array[$field_name] . "'"); $env_array[$field_name . "_id"] = $env_array[$field_name]; $env_array[$field_name] = $listname; break; // File // File case 6: //file_data - массив с ориг.названием, типом, размером, [именем_файла_на_диске] $file_data = explode(':', $env_array[$field_name]); $env_array[$field_name . "_name"] = $file_data[0]; // оригинальное имя $env_array[$field_name . "_type"] = $file_data[1]; // тип $env_array[$field_name . "_size"] = $file_data[2]; // размер $ext = substr($file_data[0], strrpos($file_data[0], ".")); // расширение // запись в таблице Filetable $row = $filetable[$env_array[$this->essence . "_ID"]][$field_id]; $row_parent = isset($env_array["Parent_Sub_ID"]) ? $filetable[$env_array["Parent_Sub_ID"]][$field_id] : false; if (!$row && $row_parent) { $row = $row_parent; } if ($row) { // Proteced FileSystem $env_array[$field_name] = $nc_core->get_variable("SUB_FOLDER") . $nc_core->get_variable("HTTP_FILES_PATH") . ltrim($row[1], '/') . "h_" . $row[0]; $env_array[$field_name . "_url"] = $nc_core->get_variable("SUB_FOLDER") . $nc_core->get_variable("HTTP_FILES_PATH") . ltrim($row[1], '/') . $row[0]; } else { if ($file_data[3]) { // Original FileSystem $env_array[$field_name] = $env_array[$field_name . "_url"] = $nc_core->get_variable("SUB_FOLDER") . $nc_core->get_variable("HTTP_FILES_PATH") . $file_data[3]; } else { // Simple FileSysytem $env_array[$field_name] = $env_array[$field_name . "_url"] = $nc_core->get_variable("SUB_FOLDER") . $nc_core->get_variable("HTTP_FILES_PATH") . $field_id . "_" . $env_array[$this->essence . "_ID"] . $ext; } } break; case 8: $env_array[$field_name . "_year"] = substr($env_array[$field_name], 0, 4); $env_array[$field_name . "_month"] = substr($env_array[$field_name], 5, 2); $env_array[$field_name . "_day"] = substr($env_array[$field_name], 8, 2); $env_array[$field_name . "_hours"] = substr($env_array[$field_name], 11, 2); $env_array[$field_name . "_minutes"] = substr($env_array[$field_name], 14, 2); $env_array[$field_name . "_seconds"] = substr($env_array[$field_name], 17, 2); break; // Multiselect // Multiselect case 10: $array_with_id = explode(',', $env_array[$field_name]); if (!$array_with_id[0]) { unset($array_with_id[0]); } if (!$array_with_id[count($array_with_id)]) { unset($array_with_id[count($array_with_id)]); } if (empty($array_with_id)) { break; } // латинское имя списка $table_name = strtok($field_format, ':'); // получим сами элементы $listname = $this->db->get_col("SELECT `" . $table_name . "_Name`\n FROM `Classificator_" . $table_name . "`\n WHERE `" . $table_name . "_ID` IN(" . join(',', $array_with_id) . ")"); $env_array[$field_name . "_id"] = (array) $array_with_id; $env_array[$field_name] = (array) $listname; break; } } } $storage[$this->essence][$env_array[$this->essence . "_ID"]] = $env_array; return $env_array; }