Пример #1
0
 public static function import_all()
 {
     global $wp_rewrite;
     global $ojs_mapping;
     self::$start_time = time();
     self::$fetch_time = 0;
     self::$posttime = time();
     self::$global_imported_links = self::get_ojsimport_links();
     self::$global_imported_posts = self::get_ojsimport_posts();
     $sources = array();
     $import_tests = (bool) get_option('ojsimport_import_tests');
     if ($import_tests) {
         require_once dirname(__FILE__) . '/ojsimport-test.php';
         $sources = ojsimport_test::get_sources();
     }
     $sources = array_merge($sources, self::get_data_sources());
     // login to data source server if auth details are given
     $login_url = get_option('ojsimport_login_url');
     $username = get_option('ojsimport_username');
     $password = get_option('ojsimport_password');
     if ($username != "") {
         if ($login_url == "") {
             $login_url = null;
         }
         $ret = ojsaccess::login($login_url, $username, $password);
         if ($ret === false) {
             return new WP_Error('curl_not_installed', __("You have to install php5_curl to use authentication!"));
         }
     }
     self::load_ec3();
     $g_ret = true;
     foreach ($sources as $key => $source) {
         if (is_wp_error($source)) {
             $g_ret = $source;
             continue;
         }
         $items = call_user_func($source, $key);
         if (is_wp_error($items)) {
             if (is_array($source)) {
                 // source is a class function
                 $source = $source[0] . '::' . $source[1];
             }
             $source .= '(' . $key . ')';
             error_log("ojsimport: could not import from:" . $source);
             error_log($items->get_error_message());
             $g_ret = $items;
             continue;
         }
         foreach ($items as $item) {
             if (is_wp_error($item)) {
                 error_log($item->get_error_message());
                 $g_ret = $item;
                 continue;
             }
             $ret = self::import_data($item);
             if (is_wp_error($ret)) {
                 error_log($ret->get_error_message());
                 $g_ret = $ret;
             }
         }
     }
     // XXX: this is needed due to a bug in wordpress category cache
     wp_cache_flush();
     delete_option('category_children');
     // XXX: needed to make permalinks work (not documented)
     $wp_rewrite->flush_rules();
     // delete leftover posts that are not available in the sources anymore
     // only if import was successful
     $ret = true;
     if (is_wp_error($g_ret)) {
         error_log('Import was not successful. Not deleting leftover posts!');
     } else {
         if (!empty(self::$global_imported_posts)) {
             $ret = self::delete_posts(self::$global_imported_posts);
         }
         if (is_wp_error($ret)) {
             $g_ret = $ret;
         }
         if (!empty(self::$global_imported_links)) {
             $ret = self::delete_links(self::$global_imported_links);
         }
     }
     if (is_wp_error($ret)) {
         $g_ret = $ret;
     }
     if (!is_wp_error($g_ret)) {
         $g_ret = 'The import took ' . (time() - self::$start_time) . ' seconds.' . "\n";
         $g_ret .= 'Fetching data took ' . self::$fetch_time . ' seconds.';
     }
     return $g_ret;
 }