Example #1
0
 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);
 }