function process_row($row, $line) { $data = array("folder" => $this->_folder); if (DEBUG) { print_r(array($line, $row)); } foreach ($row as $key => $val) { if (isset($this->_fields[$this->_headers[$key]])) { $data[$this->_fields[$this->_headers[$key]]] = $val; } } if (DEBUG) { print_r($data); } $id = !empty($data["id"]) ? $data["id"] : -1; if ($this->_validate_only) { $result = $this->_sgsml->validate($data, $id); } else { $result = $this->_sgsml->update($data, $id); } sys::$db_queries = array(); // reduce memory usage if (empty($result)) { // validate $this->out("."); } else { if (is_array($result)) { $message = sprintf("{t}line{/t} %s: %s", $line, self::err_to_str($result)); $this->_errors[] = $message; $this->out("<span style='color:red; font-weight:bold;'>{t}Error{/t}:</span> " . q($message) . ", "); } else { $this->out("#" . $line . ": " . q($result) . ", "); } } }
static function rebuild_schema($rebuild_search = false) { if ($rebuild_search) { self::_out(sprintf("{t}Processing %s ...{/t}", "schema, search index")); } else { self::_out(sprintf("{t}Processing %s ...{/t}", "schema")); } if (sgsml_parser::table_exists("simple_sys_search") and $rebuild_search) { db_delete("simple_sys_search", array(), array()); } $files = array(); $folders = array("modules/schema/", "modules/schema_sys/", SIMPLE_EXT . "/modules/schema/", SIMPLE_EXT . "/modules/schema_sys/", SIMPLE_CUSTOM . "/modules/schema/", SIMPLE_CUSTOM . "/modules/schema_sys/"); foreach ($folders as $folder) { if (!is_dir($folder)) { continue; } foreach (scandir($folder) as $file) { if (!strpos($file, ".xml")) { continue; } $files[$file] = $folder . $file; } } @set_time_limit(60 * count($files)); foreach ($files as $file) { self::_out(basename($file) . " ", false); $schema = db_get_schema($file, "", "", false); sys::$db_queries = array(); // reduce memory usage if (!$rebuild_search or sys_strbegins(basename($file), "nodb_") or empty($schema["views"]["display"])) { continue; } if (!empty($schema["att"]["SQL_HANDLER"]) or !empty($schema["att"]["NO_SEARCH_INDEX"])) { continue; } $table = $schema["att"]["NAME"]; $fields = $schema["fields"]; $rows = db_select($table, array("id", "folder"), array(), "", ""); if (!is_array($rows) or count($rows) == 0) { continue; } self::_out("... ", false); foreach ($rows as $row) { if (folder_in_trash($row["folder"])) { continue; } db_search_update($table, $row["id"], $fields); } } self::_out("<br>", false); }
private static function _create_default_folder_xml_data($xml, $folder) { $assets = sys_array_shift(get_object_vars($xml)); if (is_object($assets)) { $assets = array($assets); } if (!is_array($assets) or count($assets) == 0) { return; } @set_time_limit(60); $sgsml = new sgsml($folder, "new"); $sgsml->notification = false; foreach ($assets as $asset) { $data = get_object_vars($asset); if (isset($data["@attributes"])) { unset($data["@attributes"]); } $result = $sgsml->insert($data); if (DEBUG and !is_int($result)) { print_r($result); } if (DEBUG) { echo " @" . memory_get_usage(true); } sys::$cache = array(); sys::$db_queries = array(); } }