public function __construct() { $rc = WPRC_Loader::getRepositoryConnector(); $this->RepositoryConnector = $rc; }
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; } } } }