コード例 #1
0
 public static function getInstance()
 {
     if (self::$instance === null) {
         self::$instance = new WPRC_RepositoryConnector();
     }
     return self::$instance;
 }
コード例 #2
0
 public static function wprc_update_extensions_maps()
 {
     WPRC_Loader::getRepositoryConnector();
     $url = WPRC_UPDATE_REPOS_URL;
     $timestamp = 0;
     $current = get_transient('wprc_update_extensions_maps');
     if (isset($current) && $current != false) {
         if (isset($current->last_checked)) {
             $timestamp = $current->last_checked;
         }
     }
     $args = array('action' => 'extensions_map', 'request' => array('timestamp' => $timestamp));
     // get existing extensions list
     $em = WPRC_Loader::getModel('extensions');
     $ext = $em->getFullExtensionsTree();
     $extensions = array();
     $ext_map = array();
     foreach (array('plugins', 'themes') as $etype) {
         $extensions[$etype] = array();
         foreach ($ext[$etype] as $exte) {
             $tmp = (array) $exte;
             if (isset($tmp['Name'])) {
                 $extensions[$etype][] = $tmp['Name'];
                 $ext_map[$etype][$tmp['Name']] = $tmp;
             } elseif (isset($tmp['name'])) {
                 $extensions[$etype][] = $tmp['name'];
                 $ext_map[$etype][$tmp['name']] = $tmp;
             }
         }
         $args['request'][$etype] = $extensions[$etype];
         unset($extensions[$etype]);
         unset($ext[$etype]);
     }
     // send request for info
     $response = WPRC_RepositoryConnector::sendRequest('post', $url, $args);
     if (isset($response) && $response != false && !is_wp_error($response)) {
         if (isset($response->result)) {
             if ($response->result == 'up_to_date') {
                 $current = new stdClass();
                 $current->last_checked = time();
                 $current->count = 0;
                 set_transient('wprc_update_extensions_maps', $current);
                 return false;
             } else {
                 $repo_model = WPRC_Loader::getModel('repositories');
                 $installed_repos = $repo_model->getAllRepositories();
                 $repo_map = array();
                 foreach ($installed_repos as $repo) {
                     $repo_map[$repo->repository_endpoint_url] = $repo->id;
                 }
                 unset($installed_repos);
                 $ext_count = 0;
                 foreach (array('plugins', 'themes') as $etype) {
                     if (isset($response->{$etype})) {
                         $tmp = (array) $response->{$etype};
                         foreach ($tmp as $name => $einfo) {
                             $einfo = (array) $einfo;
                             if (isset($ext_map[$etype]) && isset($ext_map[$etype][$name])) {
                                 if (isset($ext_map[$etype][$name]['repository_id'])) {
                                     if (isset($repo_map[$einfo['repository_url']])) {
                                         $type_id = $einfo['extension_type'] == 1 ? 1 : 2;
                                         $data = array('extension_name' => $einfo['extension_name'], 'extension_type_id' => $type_id, 'extension_slug' => $einfo['extension_slug'], 'extension_path' => $einfo['extension_path'], 'repository_id' => $repo_map[$einfo['repository_url']], 'extension_was_installed' => 1);
                                         $format = array('%s', '%d', '%s', '%s', '%d', '%d');
                                         $where = array('extension_name' => $name);
                                         $where_format = array('%s');
                                         $em->updateExtension($data, $where, $format, $where_format);
                                         $ext_count++;
                                     }
                                 } else {
                                     if (isset($repo_map[$einfo['repository_url']])) {
                                         $type_name = $einfo['extension_type'] == 1 ? 'plugins' : 'themes';
                                         $em->addExtensionInstalled($name, $einfo['extension_slug'], $einfo['extension_path'], $type_name, $repo_map[$einfo['repository_url']], 1);
                                         $ext_count++;
                                     }
                                 }
                             }
                         }
                     }
                 }
                 $current = new stdClass();
                 $current->last_checked = time();
                 $current->count = $ext_count;
                 set_transient('wprc_update_extensions_maps', $current);
                 return $ext_count;
             }
         }
     }
 }