public function RepositoryLogin()
 {
     list($get, $post) = func_get_args();
     if (isset($get['repository_id'])) {
         $this->repo_model = WPRC_Loader::getModel('repositories');
         $this->repository = $this->repo_model->getRepositoryByField('id', (int) $get['repository_id']);
         if (empty($get['submit'])) {
             //$nonce=$get['_wpnonce'];
             if (!array_key_exists('_wpnonce', $get) || !wp_verify_nonce($get['_wpnonce'], 'installer-login-link')) {
                 die("Security check");
             }
             self::render();
         } else {
             //$nonce=$get['_wpnonce'];
             if (!array_key_exists('_wpnonce', $get) || !wp_verify_nonce($get['_wpnonce'], 'installer-login-form')) {
                 die("Security check");
             }
             if (!array_key_exists('repository_id', $get) || !array_key_exists('username', $get) || !array_key_exists('password', $get)) {
                 die;
             }
             $login = $this->repo_model->testLogin($get['repository_id'], $get['username'], $get['password'], isset($get['_plain']) && $get['_plain'] == 'true' ? true : false);
             if ($login != false && empty($login['error'])) {
                 echo json_encode(array('success' => 1, 'message' => $login['message']));
             } else {
                 echo json_encode(array('success' => 0, 'message' => $login['message']));
             }
             exit;
         }
     }
 }
 public function skipUninstallReport($get, $post)
 {
     if (isset($post['uninstall_no_more_reports'])) {
         $model_settings = WPRC_Loader::getModel('settings');
         $model_settings->save(array());
     }
     // redirect to the deactivation page
     $this->redirectToDeactivationPage();
 }
 /**
  * Prepare report data from the post data
  *
  * @param array $post_data raw data
  * 
  * @return array report
  */
 public function prepareRequest(array $post_data)
 {
     // get key and type of extension that need to be checked
     if (!array_key_exists('check_extension_name', $post_data) || !array_key_exists('check_extension_type', $post_data)) {
         return false;
     }
     $check_extension_name = $post_data['check_extension_name'];
     $check_extension_type = $post_data['check_extension_type'];
     $check_extension_repository_url = $post_data['check_extension_repository_url'];
     $check_extension_version = $post_data['check_extension_version'];
     $check_extension_slug = $post_data['check_extension_slug'];
     $extension_model = WPRC_Loader::getModel('extensions');
     $extensions_tree = $extension_model->getFullExtensionsTree();
     $extensions_tree['themes'] = $extension_model->changeExtensionsKey($extensions_tree['themes'], 'Name');
     $typekeys = $extension_model->getExtensionTypeKeys();
     $activetypekeys = $extension_model->getActiveExtensionTypeKeys();
     // ---------- left extensions ------------
     if (array_key_exists($check_extension_type, $extensions_tree) && is_array($check_extension)) {
         $check_extension = $extensions_tree[$check_extension_type][$check_extension_name];
         $left_extension = $this->prepareExtensionInfo($check_extension_name, $check_extension_type, $check_extension);
     } else {
         $left_extension = array('name' => $check_extension_name, 'type' => $check_extension_type, 'repository_url' => $check_extension_repository_url, 'version' => $check_extension_version, 'slug' => $check_extension_slug);
     }
     $left_extensions = array($check_extension_name => $left_extension);
     // ---------- right extensions -----------
     $active_extensions = $extension_model->getActiveExtensions();
     // cycle on each extension type
     if (count($active_extensions) == 0) {
         return false;
     }
     $right_extensions = array();
     foreach ($active_extensions as $extension_type => $extensions) {
         for ($i = 0; $i < count($extensions); $i++) {
             $key = $activetypekeys[$extension_type];
             //$key=$typekeys[$extension_type];
             $extension = $extension_model->findExtensionwithKey($extensions_tree, $extension_type, $key, $extensions[$i]);
             if ($extension === false) {
                 continue;
             }
             //if (!isset($extensions_tree[$extension_type][$extensions[$i]])) continue;
             //$extension = $extensions_tree[$extension_type][$extensions[$i]];
             $right_extensions[$extension['Name']] = $this->prepareExtensionInfo($extensions[$i], $extension_type, $extension);
         }
     }
     // prepare report data
     $report_data = array('left_extensions' => $left_extensions, 'right_extensions' => $right_extensions);
     $creport = $this->formRequestStructure($report_data);
     //file_put_contents(WPRC_PLUGIN_PATH.'/debug_comp.txt',print_r($report_data,true),FILE_APPEND);
     return $creport;
 }
 /**
  * Save wprc settings
  * 
  * @param array $_GET array
  * @param array $_POST array
  */
 public function save($get, $post)
 {
     $settings = array();
     if (!array_key_exists('_wpnonce', $post) || !wp_verify_nonce($post['_wpnonce'], 'installer-settings-form')) {
         die("Security check");
     }
     if (array_key_exists('settings', $post) && is_array($post['settings'])) {
         $settings = $post['settings'];
     }
     $settings_model = WPRC_Loader::getModel('settings');
     $res = $settings_model->save($settings);
     $flag = 'failure';
     if ($res) {
         $flag = 'success';
     }
     $this->redirect_to_index($flag);
 }
 /**
  * Form arguments for plugin_api function
  * 
  * @param mixed arguments array
  * @param string action
  */
 public function extensionsApiArgs($args, $action)
 {
     switch ($action) {
         case 'query_plugins':
             $args = $this->extensionApiArgsQueryExtensions($args);
             if (!isset($args->repositories)) {
                 if (isset($_REQUEST['repos']) && is_array($_REQUEST['repos'])) {
                     $args->repositories = (array) $_REQUEST['repos'];
                 } else {
                     $rm = WPRC_Loader::getModel('repositories');
                     $repos = $rm->getRepositoriesIds('enabled_repositories', 'plugins');
                     $args->repositories = (array) $repos;
                 }
             }
             break;
         case 'plugin_information':
             if (!isset($args->repositories)) {
                 if (array_key_exists('repository_id', $_REQUEST) && !empty($_REQUEST['repository_id'])) {
                     $args->repositories = array($_REQUEST['repository_id']);
                 } else {
                     $rm = WPRC_Loader::getModel('repositories');
                     if (isset($_GET['plugin'])) {
                         $repos = $rm->getRepositoryByExtension($_GET['plugin']);
                     }
                     if (isset($repos) && $repos !== false && count($repos) > 0) {
                         $args->repositories = array($repos[0]['id']);
                     } else {
                         $repo = $rm->getRepositoryByField('repository_endpoint_url', WPRC_WP_PLUGINS_REPO);
                         if (isset($repo) && $repo !== false) {
                             $args->repositories = array($repo->id);
                         }
                     }
                 }
             }
             //$args->slug=$_GET['plugin'];
             break;
         case 'hot_tags':
             $rm = WPRC_Loader::getModel('repositories');
             $args->repositories = $rm->getRepositoriesIds('enabled_repositories', 'plugins');
             break;
     }
     $args = apply_filters('wprc_plugins_api_args_' . $action, $args);
     return $args;
 }
 /**
  * Form arguments for extensions_api function
  * 
  * @param mixed arguments array
  * @param string action
  */
 public function extensionsApiArgs($args, $action)
 {
     switch ($action) {
         case 'query_themes':
             $args = $this->extensionApiArgsQueryExtensions($args, WPRC_THEMES_API_QUERY_THEMES_PER_PAGE);
             if (!isset($args->repositories)) {
                 if (isset($_REQUEST['repos']) && is_array($_REQUEST['repos'])) {
                     $args->repositories = (array) $_REQUEST['repos'];
                 } else {
                     $rm = WPRC_Loader::getModel('repositories');
                     $repos = $rm->getRepositoriesIds('enabled_repositories', 'themes');
                     $args->repositories = (array) $repos;
                 }
             }
             break;
         case 'theme_information':
             if (!isset($args->repositories)) {
                 if (array_key_exists('repository_id', $_REQUEST) && !empty($_REQUEST['repository_id'])) {
                     $args->repositories = array($_REQUEST['repository_id']);
                 } else {
                     $rm = WPRC_Loader::getModel('repositories');
                     $repos = $rm->getRepositoryByExtension($_GET['theme']);
                     if (isset($repos) && $repos !== false && count($repos) > 0) {
                         $args->repositories = array($repos[0]['id']);
                     } else {
                         $repo = $rm->getRepositoryByField('repository_endpoint_url', WPRC_WP_THEMES_REPO);
                         if (isset($repo) && $repo !== false) {
                             $args->repositories = array($repo->id);
                         }
                     }
                 }
             }
             break;
         case 'feature_list':
             $rm = WPRC_Loader::getModel('repositories');
             $args->repositories = $rm->getRepositoriesIds('enabled_repositories', 'themes');
             break;
     }
     $args = apply_filters('wprc_themes_api_args_' . $action, $args);
     return $args;
 }
Beispiel #7
0
function installer_repositories_page_tabs($current = 'default')
{
    if (isset($_GET['rtab'])) {
        $current = $_GET['rtab'];
    }
    $repo_model = WPRC_Loader::getModel('repositories');
    $not_delete_counts = count($repo_model->getAllRepositoriesNotDeleted());
    $delete_counts = count($repo_model->getAllRepositoriesDeleted());
    $tabs = array('default' => sprintf(__('Active repositories (%s)', 'installer'), $not_delete_counts), 'trash' => sprintf(__('Inactive repositories (%s)', 'installer'), $delete_counts));
    $links = array();
    foreach ($tabs as $tab => $name) {
        if ($tab == $current) {
            $links[] = '<a class="nav-tab nav-tab-active" href="?page=installer/pages/repositories.php&rtab=' . $tab . '">' . $name . '</a>';
        } else {
            $links[] = '<a class="nav-tab" href="?page=installer/pages/repositories.php&rtab=' . $tab . '">' . $name . '</a>';
        }
    }
    echo '<div id="icon-repositories-installer" class="icon32"><br></div>';
    echo '<h2 class="nav-tab-wrapper">';
    foreach ($links as $link) {
        echo $link;
    }
    echo '</h2>';
}
 public function prepare_items()
 {
     $tab = $this->get_current_tab();
     // replace search results tab only
     if ($tab != 'search') {
         parent::prepare_items();
         exit;
     }
     include_once ABSPATH . 'wp-admin/includes/theme-install.php';
     global $tabs, $tab, $paged, $type, $term, $theme_field_defaults;
     wp_reset_vars(array('tab'));
     $paged = $this->get_pagenum();
     $repositories_ids = array();
     if (!isset($_GET['repos'])) {
         $rm = WPRC_Loader::getModel('repositories');
         $repos = $rm->getRepositoriesIds('enabled_repositories', 'themes');
         $repos_number = count($repos);
     } else {
         $repos_number = count($_GET['repos']);
     }
     $per_page = WPRC_THEMES_API_QUERY_THEMES_PER_PAGE;
     // These are the tabs which are shown on the page,
     $tabs = array();
     $tabs['dashboard'] = __('Search', 'installer');
     if ('search' == $tab) {
         $tabs['search'] = __('Search Results', 'installer');
     }
     $tabs['upload'] = __('Upload', 'installer');
     $tabs['featured'] = _x('Featured', 'Theme Installer', 'installer');
     //$tabs['popular']  = _x( 'Popular','Theme Installer' );
     $tabs['new'] = _x('Newest', 'Theme Installer', 'installer');
     $tabs['updated'] = _x('Recently Updated', 'Theme Installer', 'installer');
     $nonmenu_tabs = array('theme-information');
     // Valid actions to perform which do not have a Menu item.
     $tabs = apply_filters('install_themes_tabs', $tabs);
     $nonmenu_tabs = apply_filters('install_themes_nonmenu_tabs', $nonmenu_tabs);
     // If a non-valid menu tab has been selected, And its not a non-menu action.
     if (empty($tab) || !isset($tabs[$tab]) && !in_array($tab, (array) $nonmenu_tabs)) {
         $tab = key($tabs);
     }
     $args = array('page' => $paged, 'per_page' => $per_page, 'fields' => $theme_field_defaults);
     switch ($tab) {
         case 'search':
             $type = isset($_REQUEST['type']) ? stripslashes($_REQUEST['type']) : '';
             $term = isset($_REQUEST['s']) ? stripslashes($_REQUEST['s']) : '';
             switch ($type) {
                 case 'tag':
                     $terms = explode(',', $term);
                     $terms = array_map('trim', $terms);
                     $terms = array_map('sanitize_title_with_dashes', $terms);
                     $args['tag'] = $terms;
                     break;
                 case 'author':
                     $args['author'] = $term;
                     break;
                 case 'term':
                     // make search term default in case type does not exist (wp34)
                 // make search term default in case type does not exist (wp34)
                 default:
                     $args['search'] = $term;
                     break;
             }
             if (isset($_REQUEST['features']) && (is_array($_REQUEST['features']) || !empty($_REQUEST['features']))) {
                 $terms = $_REQUEST['features'];
                 $terms = array_map('trim', $terms);
                 $terms = array_map('sanitize_title_with_dashes', $terms);
                 $args['tag'] = $terms;
                 $_REQUEST['s'] = implode(',', $terms);
                 $_REQUEST['type'] = 'tag';
                 //$args['type'] = 'tag';
                 //$args['search'] = $_REQUEST['search'];
             }
             add_action('install_themes_table_header', 'install_theme_search_form');
             break;
         case 'featured':
             //case 'popular':
         //case 'popular':
         case 'new':
         case 'updated':
             $args['browse'] = $tab;
             break;
         default:
             $args = false;
     }
     if (!$args) {
         return;
     }
     $api = themes_api('query_themes', $args);
     if (is_wp_error($api)) {
         wp_die($api->get_error_message() . '</p> <p><a href="#" onclick="document.location.reload(); return false;">' . __('Try again', 'installer') . '</a>');
     }
     $repo_model = WPRC_Loader::getModel('repositories');
     if (isset($_GET['repos'])) {
         $repos = $_GET['repos'];
     } else {
         $rm = WPRC_Loader::getModel('repositories');
         $repos = $rm->getRepositoriesIds('enabled_repositories', 'themes');
     }
     // Filtering by repository if is the case...
     $this->repositories_tabs = array();
     // Do we need tabs?
     $this->results_per_repo = $api->results_per_repo;
     $repo_results_gt_zero = 0;
     foreach ($this->results_per_repo as $repo_results) {
         if ($repo_results['results'] > 0) {
             $repo_results_gt_zero++;
         }
     }
     if ($api->info['results'] > WPRC_THEMES_API_QUERY_THEMES_PER_PAGE && count($repos) > 1 && $repo_results_gt_zero > 1) {
         // We have too many results => we have to tab the results
         // Ordering repos by ID so Wordpress.org plugins wil appear most of the time at first place
         sort($repos);
         $tmp = array();
         foreach ($repos as $repo_id) {
             if (isset($this->results_per_repo[$repo_id]) && $this->results_per_repo[$repo_id]['results'] == 0) {
                 continue;
             }
             // We need the name of the repo
             $repo_info = $repo_model->getRepositoryByField('id', $repo_id);
             if ($repo_info) {
                 $this->repositories_tabs[] = array('id' => $repo_info->id, 'name' => $repo_info->repository_name);
             }
         }
         $filtered_api = new stdClass();
         $filtered_api->info['results'] = $api->info['results'];
         $filtered_api->info['page'] = $api->info['page'];
         $filtered_api->themes = array();
         // If we are currently on a tab, we'll show only those results
         if (is_array($this->repositories_tabs) && count($this->repositories_tabs) > 0) {
             $current_repo = isset($_GET['repo-tab']) ? $_GET['repo-tab'] : $this->repositories_tabs[0]['id'];
         }
         foreach ($api->themes as $theme) {
             if ($theme->repository_id == $current_repo) {
                 $filtered_api->themes[] = $theme;
             } else {
                 $filtered_api->info['results']--;
             }
         }
         $filtered_api->info['results'] = $this->results_per_repo[$current_repo]['results'];
         $filtered_api->info['total_pages'] = (int) ceil($filtered_api->info['results'] / WPRC_THEMES_API_QUERY_THEMES_PER_PAGE);
     } else {
         $filtered_api = $api;
     }
     $this->items = $filtered_api->themes;
     //$this->items = $api;
     $this->set_pagination_args(array('total_items' => $filtered_api->info['results'], 'per_page' => $per_page));
 }
<?php

if (!defined('ABSPATH')) {
    die('Security check');
}
if (!current_user_can('manage_options')) {
    die('Access Denied');
}
// include needed files
WPRC_Loader::includeWPListTable();
$wp_list_table = WPRC_Loader::getListTable('deleted-repositories');
//Handle bulk deletes
$doaction = $wp_list_table->current_action();
if ($doaction) {
    $repository_model = WPRC_Loader::getModel('repositories');
}
$url = admin_url() . 'admin.php?page=' . WPRC_PLUGIN_FOLDER . '/pages/deleted-repositories.php';
if ($doaction && isset($_REQUEST['checked'])) {
    check_admin_referer('bulk-list-deleted-repositories');
    if ('undelete' == $doaction) {
        $bulklinks = (array) $_REQUEST['checked'];
        foreach ($bulklinks as $id) {
            $repository_id = (int) $id;
            $repository_model->softundeleteRepository($repository_id);
        }
    }
} elseif ($doaction) {
    switch ($doaction) {
        case 'undelete':
            if (!isset($_REQUEST['id'])) {
                break;
 /**
  * Prepare uninstall data for the sending
  * 
  * @param array array of posted data
  * 
  * @return array associative array of specified format
  */
 public function prepareRequest(array $post_array)
 {
     if (!array_key_exists('extension_keys', $post_array) || !array_key_exists('extension_type', $post_array) || !array_key_exists('uninstall_reason_code', $post_array)) {
         return false;
     }
     if (!is_array($post_array['extension_keys'])) {
         return false;
     }
     $extension_keys = $post_array['extension_keys'];
     // disable request sending if several plugins were deactivated
     if (count($extension_keys) > 1) {
         //return false;
     }
     $extension_type = preg_match('/^(plugin|theme)$/', $post_array['extension_type']) ? $post_array['extension_type'] : '';
     // set uninstall reason code
     $uninstall_reason_code = $post_array['uninstall_reason_code'];
     if (array_key_exists('uninstall_reason_code_child', $post_array) && $post_array['uninstall_reason_code_child'] != '') {
         $uninstall_reason_code .= '-' . $post_array['uninstall_reason_code_child'];
     }
     // set uninstall reason description
     $uninstall_reason_description = $this->filterText($post_array['uninstall_reason_description']);
     // set uninstall reason items -------------------------------
     $problem_array_name = '';
     $unistall_reason_items_type = '';
     switch ($uninstall_reason_code) {
         case '3-1':
             $problem_array_name = 'problem_themes';
             $unistall_reason_items_type = 'theme';
             break;
         case '3-2':
             $problem_array_name = 'problem_plugins';
             $unistall_reason_items_type = 'plugin';
             break;
     }
     $uninstall_reason_items_names = array();
     $uninstall_reason_items = array();
     if (isset($problem_array_name) && array_key_exists($problem_array_name, $post_array)) {
         if (is_array($post_array[$problem_array_name]) && count($post_array[$problem_array_name]) > 0) {
             $uninstall_reason_items_names = $post_array[$problem_array_name];
         }
     }
     // get all extension data
     $ext_model = WPRC_Loader::getModel('extensions');
     $all_extensions = $ext_model->getFullExtensionsTree();
     $all_extensions['themes'] = $ext_model->changeExtensionsKey($all_extensions['themes'], 'Name');
     // form plural extension type name
     $unistall_reason_items_type_plural = $unistall_reason_items_type . 's';
     // set all information for uninstall reason items
     $extension_path = '';
     for ($i = 0; $i < count($uninstall_reason_items_names); $i++) {
         $extension = $all_extensions[$unistall_reason_items_type_plural][$uninstall_reason_items_names[$i]];
         if ($unistall_reason_items_type == 'plugin') {
             $extension_path = $uninstall_reason_items_names[$i];
         }
         $uninstall_reason_items[$uninstall_reason_items_names[$i]] = array('name' => $extension['Name'], 'type' => $unistall_reason_items_type, 'path' => $extension_path, 'version' => $extension['Version'], 'slug' => $extension['extension_slug'], 'repository_url' => $extension['repository_endpoint_url']);
     }
     // set report data array ------------------------------------
     $extensions = array();
     // form plural extension type name
     $extension_type_plural = $extension_type . 's';
     $extension_path = '';
     for ($i = 0; $i < count($extension_keys); $i++) {
         if (!isset($all_extensions[$extension_type_plural][$extension_keys[$i]])) {
             continue;
         }
         $extension = $all_extensions[$extension_type_plural][$extension_keys[$i]];
         if ($extension_type == 'plugin') {
             $extension_path = $extension_keys[$i];
         }
         $slug = '';
         if (array_key_exists('extension_slug', $extension)) {
             $slug = $extension['extension_slug'];
         }
         $repository_endpoint_url = '';
         if (array_key_exists('repository_endpoint_url', $extension)) {
             $repository_endpoint_url = $extension['repository_endpoint_url'];
         }
         $extensions[$extension_keys[$i]] = array('name' => $extension['Name'], 'type' => $extension_type, 'path' => $extension_path, 'version' => $extension['Version'], 'slug' => $slug, 'repository_url' => $repository_endpoint_url);
     }
     $report_data = array('extensions' => $extensions, 'uninstall_reason_code' => $uninstall_reason_code, 'uninstall_reason_description' => $uninstall_reason_description, 'uninstall_reason_items' => $uninstall_reason_items);
     $report = $this->formRequestStructure($report_data);
     //file_put_contents(WPRC_PLUGIN_PATH.'/debug_uninstall.txt',print_r($report_data,true),FILE_APPEND);
     return $report;
 }
 /**
  * Reset theme timer
  * 
  * This method should be called on 'switch_theme' hook
  */
 public function resetThemeTimer()
 {
     $extension_model = WPRC_Loader::getModel('extensions');
     $swithed_theme = $extension_model->getSwitchedThemeName();
     WPRC_Loader::includeExtensionTimer();
     WPRC_ExtensionTimer::deleteTimer($swithed_theme);
 }
 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;
             }
         }
     }
 }
Beispiel #13
0
}
$result = '';
$result_msg = '';
if (array_key_exists('result', $_GET)) {
    $result = $_GET['result'];
    switch ($result) {
        case 'success':
            $result_msg = __('Settings are saved', 'installer');
            break;
        case 'failure':
            // $result_msg = __('Settings are not saved. Change a values of the settings please', 'installer');
            $result_msg = __('Settings are saved', 'installer');
            break;
    }
}
$settings_model = WPRC_Loader::getModel('settings');
$settings = $settings_model->getSettings();
$show_msg = '';
if (array_key_exists('warning', $_GET)) {
    $show_msg = $_GET['warning'];
}
$msg = '';
switch ($show_msg) {
    case 'https_not_provided':
        $msg = __('HTTPS is not provided by server. Please connect with your site administrator', 'installer');
        break;
}
?>

<div class="wrap">
	<h2><?php 
 public function clearLoginInfo($get, $post)
 {
     $msg = sprintf('Repositories clear login enter');
     WPRC_Functions::log($msg, 'controller', 'controller.log');
     if (isset($get['repository_id'])) {
         //$nonce=$get['_wpnonce'];
         if (!array_key_exists('_wpnonce', $get) || !wp_verify_nonce($get['_wpnonce'], 'installer-clear-link')) {
             die("Security check");
         }
         if (!array_key_exists('repository_id', $get)) {
             die;
         }
         $model = WPRC_Loader::getModel('repositories');
         $result = $model->clearLogin(intval($get['repository_id']));
         if ($result) {
             // clear cache
             $rmcache = WPRC_Loader::getModel('cached-requests');
             $rmcache->cleanCache();
             // clear updates
             delete_site_transient('update_themes');
             delete_site_transient('update_plugins');
         }
         echo json_encode(array('result' => $result));
     }
     $msg = sprintf('Repositories clear login completed');
     WPRC_Functions::log($msg, 'controller', 'controller.log');
     exit;
 }
 /**
  * Search plugins in multiple repositories 
  * This method replaces 'plugins_api' and 'themes_api' function
  */
 public function extensionsApi($state, $action, $args, $extension_type)
 {
     // default wp behaviour for tabs other than search
     //if ($action=='hot_tags') return false;
     if (isset($_GET['tab'])) {
         if ($_GET['tab'] != 'dashboard' && $_GET['tab'] != 'search' && $_GET['tab'] != 'plugin-information' && $_GET['tab'] != 'theme-information') {
             return false;
         }
     }
     $rauth = true;
     $rpass = '';
     $ruser = '';
     if (isset($_GET['repository_id']) && isset($_GET['user']) && isset($_GET['pass']) && ($action == 'plugin_information' || $action == 'theme_information')) {
         $rm = WPRC_Loader::getModel('repositories');
         $rid = $_GET['repository_id'];
         $repository = $rm->getRepository($rid);
         $ruser = rawurldecode($_GET['user']);
         $rsalt = $repository->repository_authsalt;
         $rpass = rawurldecode($_GET['pass']);
         //WPRC_Security::decrypt($repository->repository_authsalt,rawurldecode($_GET['pass']));
         $login = $rm->testLogin($rid, $ruser, $rpass);
         if ($login != false && empty($login['error'])) {
             $rauth = true;
         } else {
             $rauth = false;
         }
     }
     $repositories_ids = array();
     if (isset($args->repositories)) {
         $repositories_ids = $args->repositories;
         unset($args->repositories);
     }
     $rm = WPRC_Loader::getModel('repositories');
     $repos = $rm->getRepositoriesByIds($repositories_ids);
     $results = array();
     // Remade per_page parameters in order to get consistent pagination
     $per_page = 0;
     $repos_number = count($repos);
     if ($action == 'query_plugins') {
         $per_page = WPRC_PLUGINS_API_QUERY_PLUGINS_PER_PAGE;
     } elseif ($action == 'query_themes') {
         $per_page = WPRC_THEMES_API_QUERY_THEMES_PER_PAGE;
     }
     $results_per_repo = array();
     for ($i = 0; $i < $repos_number; $i++) {
         $res = false;
         $server_url = $repos[$i]->repository_endpoint_url;
         $repository_name = $repos[$i]->repository_name;
         $repository_username = $repos[$i]->repository_username;
         $repository_password = $repos[$i]->repository_password;
         $salt = $repos[$i]->repository_authsalt;
         $rid = $repos[$i]->id;
         $body_array = array('action' => $action);
         if ($repository_username != '' && $repository_password != '') {
             /*$args->username = $repository_username;
               $args->password = $repository_password;*/
             //$send_password=WPRC_Security::encrypt($salt,$repository_password);
             $body_array['auth'] = array('user' => $repository_username, 'pass' => $repository_password, 'salt' => $salt);
             //$body_array['auth'] = array('user'=>$repository_username,'pass'=>$repository_password,'salt'=>$salt);
         } else {
             unset($args->username);
             unset($args->password);
         }
         $request_array = $args;
         $request_array->per_page = $per_page;
         $body_array['request'] = serialize($args);
         if (isset($args->slug)) {
             $body_array['slug'] = $args->slug;
         }
         // debug log
         $reqargs = $body_array;
         if (isset($reqargs['auth'])) {
             $reqargs['auth'] = 'AUTH info';
         }
         $msg = sprintf("API Request to %s, request args: %s", $server_url, print_r($reqargs, true));
         WPRC_Functions::log($msg, 'api', 'api.log');
         unset($reqargs);
         $cached_request_results = apply_filters('wprc_extensions_api_before_each_repository', $server_url, $action, $args);
         if ($cached_request_results) {
             $results[$server_url] = $cached_request_results;
             // log
             $msg = sprintf("API Request to %s, using cached results", $server_url);
             WPRC_Functions::log($msg, 'api', 'api.log');
             continue;
         }
         $request = wp_remote_post($server_url, array('timeout' => 15, 'body' => $body_array));
         // log
         $msg = sprintf("API Request to %s, timeout: %d, response: %s", $server_url, 15, print_r($request, true));
         WPRC_Functions::log($msg, 'api', 'api.log');
         if (is_wp_error($request)) {
             $res = new WP_Error('extensions_api_failed', __('An unexpected HTTP Error occurred during the API request.', 'installer'), $request->get_error_message());
             // log
             $msg = sprintf("API Request to %s, response error: %s", $server_url, print_r($request->get_error_message(), true));
             WPRC_Functions::log($msg, 'api', 'api.log');
         } else {
             $request_body = wp_remote_retrieve_body($request);
             if (is_serialized($request_body)) {
                 $res = @unserialize($request_body);
             }
             if (false === $res) {
                 $res = new WP_Error('extensions_api_failed', __('An unknown error occurred.', 'installer'), wp_remote_retrieve_body($request));
                 // log
                 $msg = sprintf("API Request to %s, unknown error in response body: %s", $server_url, print_r($request_body, true));
                 WPRC_Functions::log($msg, 'api', 'api.log');
             } else {
                 if (is_object($res) && isset($res->error)) {
                     $res = new WP_Error('extensions_api_failed', $res->error, wp_remote_retrieve_body($request));
                     // log
                     $msg = sprintf("API Request to %s, action not implemented error: %s", $server_url, print_r($res, true));
                     WPRC_Functions::log($msg, 'api', 'api.log');
                 } else {
                     if (is_array($res) && isset($res['error'])) {
                         $res = new WP_Error('extensions_api_failed', $res['error'], wp_remote_retrieve_body($request));
                         // log
                         $msg = sprintf("API Request to %s, action not implemented error: %s", $server_url, print_r($res, true));
                         WPRC_Functions::log($msg, 'api', 'api.log');
                     } else {
                         // add some custom info onto the results (like repository salt etc..)
                         if ($action == 'query_plugins') {
                             foreach ($res->plugins as $key => $extension) {
                                 $res->plugins[$key]->salt = $salt;
                                 $res->plugins[$key]->repository_id = $rid;
                                 // strip non-serializable characters
                                 $res->plugins[$key]->description = preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x80-\\xFF]/u', '', $res->plugins[$key]->description);
                             }
                         } elseif ($action == 'query_themes') {
                             foreach ($res->themes as $key => $extension) {
                                 $res->themes[$key]->salt = $salt;
                                 $res->themes[$key]->repository_id = $rid;
                                 // strip non-serializable characters
                                 $res->themes[$key]->description = preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x80-\\xFF]/u', '', $res->themes[$key]->description);
                             }
                         } elseif ($action == 'plugin_information' || $action == 'theme_information') {
                             if (is_object($res)) {
                                 $res->rauth = $rauth;
                                 $res->pass = $rpass;
                                 $res->user = $ruser;
                                 $res->salt = $salt;
                                 $res->repository_id = $rid;
                             }
                         }
                     }
                 }
             }
         }
         $cached_them = apply_filters('wprc_extensions_api_after_each_repository', $server_url, $action, $args, $res);
         // log
         $msg = sprintf("API Request to %s, results cached: %s", $server_url, $cached_them == false ? 'NO' : 'YES');
         WPRC_Functions::log($msg, 'api', 'api.log');
         // set source
         $results[$server_url] = $res;
     }
     $general_results = new stdClass();
     $general_results->results = $results;
     return $general_results;
 }
 public static function wprc_plugin_update_row($file, $plugin_data)
 {
     $current = get_site_transient('update_plugins');
     if (!isset($current->response[$file])) {
         return false;
     }
     $r = $current->response[$file];
     $plugins_allowedtags = array('a' => array('href' => array(), 'title' => array()), 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), 'code' => array(), 'em' => array(), 'strong' => array());
     $plugin_name = wp_kses($plugin_data['Name'], $plugins_allowedtags);
     if (isset($r->repository_id)) {
         $details_url = self_admin_url('plugin-install.php?tab=plugin-information&repository_id=' . $r->repository_id . '&plugin=' . $r->slug . '&section=changelog&TB_iframe=true&width=640&height=484');
     } else {
         $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '&section=changelog&TB_iframe=true&width=640&height=484');
     }
     $wp_list_table = _get_list_table('WP_Plugins_List_Table');
     if (is_network_admin() || !is_multisite()) {
         echo '<tr class="plugin-update-tr"><td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange"><div class="update-message">';
         if (!current_user_can('update_plugins')) {
             printf(__('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>.', 'installer'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version);
         } else {
             if (empty($r->package)) {
                 $ext_model = WPRC_Loader::getModel('extensions');
                 $repository = $ext_model->get_extension_repository($file);
                 $nonce_login = wp_create_nonce('installer-login-link');
                 if (!empty($repository)) {
                     printf(__('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>. To update this plugin, first <a class="thickbox" href="%5$s">log-in to %6$s</a>.', 'installer'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, admin_url('admin.php?wprc_c=repository-login&amp;wprc_action=RepositoryLogin&amp;repository_id=' . $repository->id . '&amp;_wpnonce=' . $nonce_login), $repository->repository_name);
                 } else {
                     printf(__('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>. <em>Automatic update is unavailable for this plugin.</em>', 'installer'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version);
                 }
             } else {
                 printf(__('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a> or <a href="%5$s">update now</a>.', 'installer'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=') . $file, 'upgrade-plugin_' . $file));
             }
         }
         //if ( empty($r->package) )
         //{
         /*if (isset($r->message) && !empty($r->message))
         		{
         				echo '<br /> '.wp_kses($r->message, $plugins_allowedtags);
         		}*/
         if (isset($r->message) && !empty($r->message)) {
             $message = WPRC_Functions::formatMessage($r->message);
             if (isset($r->message_type) && $r->message_type == 'notify') {
                 WPRC_AdminNotifier::addMessage('wprc-plugin-info-' . $r->slug, $message);
             } else {
                 echo $message;
             }
         } else {
             if (isset($r->repository_id) && isset($r->purchase) && !empty($r->purchase) && isset($r->price) && !empty($r->price)) {
                 echo '<br /> ';
                 $purl = WPRC_Functions::sanitizeURL($r->purchase);
                 $return_url = rawurlencode(admin_url('plugin-install.php?tab=plugin-information&repository_id=' . $r->repository_id . '&plugin=' . $r->slug));
                 $salt = rawurlencode($r->repository_salt);
                 if (strpos($purl, '?')) {
                     $url_glue = '&';
                 } else {
                     $url_glue = '?';
                 }
                 $purl .= $url_glue . 'return_to=' . $return_url . '&rsalt=' . $salt;
                 echo '<a href="' . $purl . '&TB_iframe=true&width=640&height=484' . '" class="thickbox" title="' . sprintf(__('Upgrade %s', 'installer'), '(' . $r->currency->symbol . $r->price . ' ' . $r->currency->name . ')') . '">' . sprintf(__('Upgrade %s', 'installer'), '(' . $r->currency->symbol . $r->price . ' ' . $r->currency->name . ')') . '</a>';
             }
         }
         //}
         do_action("in_plugin_update_message-{$file}", $plugin_data, $r);
         echo '</div></td></tr>';
     }
 }
 public function addExtensionInstalled($extension_name, $extension_slug, $extension_path, $extension_type, $repository_id, $ext_was_installed)
 {
     // get extension type id
     $et_model = WPRC_Loader::getModel('extension-types');
     $types = $et_model->getExtensionTypesList();
     if (!array_key_exists($extension_type, $types)) {
         return false;
     }
     $extension_type_id = $types[$extension_type]['id'];
     $extension_exists = $this->isExtensionExists($extension_slug, $extension_type_id, $repository_id);
     // insert extension
     $insert_array = array('extension_name' => $extension_name, 'extension_slug' => $extension_slug, 'extension_path' => $extension_path, 'extension_type_id' => $extension_type_id, 'repository_id' => $repository_id, 'extension_was_installed' => $ext_was_installed);
     $insert_format_array = array('%s', '%s', '%s', '%d', '%d', '%d');
     $where = array('extension_name' => $extension_name);
     $where_format = array('%s');
     if ($extension_exists) {
         return $this->wpdb->update($this->table_name, $insert_array, $where, $insert_format_array, $where_format);
     }
     return $this->wpdb->insert($this->table_name, $insert_array, $insert_format_array);
 }
 public static function wprc_update_themes()
 {
     global $wp_version;
     $WP_UPDATE_THEMES_URL = WPRC_WP_THEMES_UPDATE_REPO;
     //include ABSPATH . WPINC . '/version.php'; // include an unmodified $wp_version
     if (defined('WP_INSTALLING')) {
         return false;
     }
     //if ( !function_exists( 'get_themes' ) )
     //require_once( ABSPATH . 'wp-includes/theme.php' );
     //$installed_themes = get_themes( );
     $last_update = get_site_transient('update_themes');
     if (!is_object($last_update)) {
         $last_update = new stdClass();
     }
     // Check for updated every 60 minutes if hitting update pages; else, check every 12 hours.
     $timeout = in_array(current_filter(), array('load-themes.php', 'load-update.php', 'load-update-core.php')) ? 3600 : 43200;
     $time_not_changed = isset($last_update->last_checked) && $timeout > time() - $last_update->last_checked;
     //$themes = array();
     $checked = array();
     $exclude_fields = array('Template Files', 'Stylesheet Files', 'Status', 'Theme Root', 'Theme Root URI', 'Template Dir', 'Stylesheet Dir', 'Description', 'Tags', 'Screenshot');
     // Put slug of current theme into request.
     //$themes['current_theme'] = get_option( 'stylesheet' );
     // get themes data from the DB
     $extensions_model = WPRC_Loader::getModel('extensions');
     $extensions = $extensions_model->getFullExtensionsTree();
     $installed_themes = $extensions['themes'];
     // arrange themes according to repository (if enabled)
     $repos = array();
     $current_theme = get_option('stylesheet');
     foreach ($installed_themes as $key => $theme) {
         $checked[$theme['Stylesheet']] = $theme['Version'];
         $rkey = $theme['repository_endpoint_url'] === null ? WPRC_WP_THEMES_REPO : $theme['repository_endpoint_url'];
         $sendtheme = $theme;
         // remove unwanted fields from the theme that is going to be sent
         unset($sendtheme['repository_endpoint_url']);
         unset($sendtheme['repository_id']);
         unset($sendtheme['repository_user']);
         unset($sendtheme['repository_pass']);
         unset($sendtheme['repository_salt']);
         unset($sendtheme['repository_name']);
         unset($sendtheme['repository_enabled']);
         unset($sendtheme['repository_deleted']);
         unset($sendtheme['extension_was_installed']);
         unset($sendtheme['type_name']);
         unset($sendtheme['extension_slug']);
         foreach ((array) $theme as $key2 => $value) {
             if (in_array($key2, $exclude_fields)) {
                 unset($sendtheme[$key2]);
             }
         }
         if (!isset($repos[$rkey])) {
             $repos[$rkey] = array('id' => $theme['repository_id'], 'url' => $rkey, 'user' => $theme['repository_user'], 'pass' => $theme['repository_pass'], 'salt' => $theme['repository_salt'], 'name' => $theme['repository_name'], 'themes' => array('current_theme' => $current_theme, $sendtheme['Stylesheet'] => $sendtheme));
             // Wordpress uses different install repository URL from Update Repository URL so hardcode it
             if ($rkey === WPRC_WP_THEMES_REPO) {
                 $repos[$rkey]['url'] = $WP_UPDATE_THEMES_URL;
             }
         } else {
             $repos[$rkey]['themes'][$sendtheme['Stylesheet']] = $sendtheme;
         }
     }
     $theme_changed = false;
     foreach ($checked as $slug => $v) {
         $update_request->checked[$slug] = $v;
         if (!isset($last_update->checked[$slug]) || strval($last_update->checked[$slug]) !== strval($v)) {
             $theme_changed = true;
         }
     }
     if (isset($last_update->response) && is_array($last_update->response)) {
         foreach ($last_update->response as $slug => $update_details) {
             if (!isset($checked[$slug])) {
                 $theme_changed = true;
                 break;
             }
         }
     }
     if ($time_not_changed && !$theme_changed) {
         return false;
     }
     // Update last_checked for current to prevent multiple blocking requests if request hangs
     $last_update->last_checked = time();
     set_site_transient('update_themes', $last_update);
     $allresponses = array();
     //WPRC_Loader::includeSecurity();
     foreach ($repos as $repo) {
         $to_send = $repo['themes'];
         $server_url = $repo['url'];
         $repository_username = $repo['user'];
         $repository_password = $repo['pass'];
         $repository_salt = $repo['salt'];
         // action is themes-update by default
         $body_array = array('action' => 'themes_update');
         // add authorization if needed
         if ($repository_username != '' && $repository_username != null && $repository_password != '' && $repository_password != null) {
             //$sendpassword=WPRC_Security::encrypt($repository_salt,$repository_password);
             $body_array['auth'] = array('user' => $repository_username, 'pass' => $repository_password, 'salt' => $repository_salt);
         } else {
             unset($body_array['auth']);
         }
         $body_array['themes'] = serialize($to_send);
         if ($server_url === $WP_UPDATE_THEMES_URL) {
             unset($body_array['action']);
         }
         $options = array('timeout' => defined('DOING_CRON') && DOING_CRON ? 30 : 3, 'body' => $body_array, 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo('url'));
         // debug log
         $reqargs = $body_array;
         if (isset($reqargs['auth'])) {
             $reqargs['auth'] = 'AUTH info';
         }
         $msg = sprintf("THEME UPDATE API Request to %s, timeout: %d, wpversion: %s, request args: %s", $server_url, $options['timeout'], $wp_version, print_r($reqargs, true));
         WPRC_Functions::log($msg, 'api', 'api.log');
         unset($reqargs);
         // send request
         $raw_response = wp_remote_post($server_url, $options);
         // log
         $msg = sprintf("THEME UPDATE API Request to %s, response: %s", $server_url, print_r($raw_response, true));
         WPRC_Functions::log($msg, 'api', 'api.log');
         if (is_wp_error($raw_response) || 200 != wp_remote_retrieve_response_code($raw_response)) {
             // log
             if (is_wp_error($raw_response)) {
                 $msg = sprintf("THEME UPDATE API Request to %s, response error: %s", $server_url, print_r($raw_response->get_error_message(), true));
                 WPRC_Functions::log($msg, 'api', 'api.log');
             }
             continue;
             //return false;
         }
         $response = @unserialize(wp_remote_retrieve_body($raw_response));
         // merge with other results
         if (false === $response) {
             // log
             $msg = sprintf("THEME UPDATE API Request to %s, response unserialize failed: %s", $server_url, print_r(wp_remote_retrieve_body($raw_response), true));
             WPRC_Functions::log($msg, 'api', 'api.log');
         } else {
             if (is_object($response) && isset($response->error)) {
                 $response = new WP_Error('extensions_api_failed', $response->error, wp_remote_retrieve_body($raw_response));
                 // log
                 $msg = sprintf("THEME UPDATE API Request to %s, action not implemented error: %s", $server_url, print_r($response, true));
                 WPRC_Functions::log($msg, 'api', 'api.log');
             } else {
                 if (is_array($response) && isset($response['error'])) {
                     $response = new WP_Error('extensions_api_failed', $response['error'], wp_remote_retrieve_body($raw_response));
                     // log
                     $msg = sprintf("THEME UPDATE API Request to %s, action not implemented error: %s", $server_url, print_r($response, true));
                     WPRC_Functions::log($msg, 'api', 'api.log');
                 } else {
                     // add some info about repository id etc..
                     foreach ($response as $key => $them) {
                         if (is_object($response[$key])) {
                             $response[$key]->repository_id = $repo['id'];
                             $response[$key]->repository_salt = $repo['salt'];
                         } else {
                             if (is_array($response[$key])) {
                                 $response[$key]['repository_id'] = $repo['id'];
                                 $response[$key]['repository_salt'] = $repo['salt'];
                             }
                         }
                         $response[$key] = (array) $response[$key];
                     }
                     $allresponses = array_merge($allresponses, $response);
                 }
             }
         }
     }
     // update transients for themes
     $new_update = new stdClass();
     $new_update->last_checked = time();
     $new_update->checked = $checked;
     $new_update->response = $allresponses;
     set_site_transient('update_themes', $new_update);
 }
<?php

if (!defined('ABSPATH')) {
    die('Security check');
}
// prepare fields values for the form in the template
$site_id = WPRC_Installer::getSiteId();
// get lists of extensions
$em = WPRC_Loader::getModel('extensions');
$extension_keys = array();
$bulk_deactivate = 0;
$bulk_data = array();
// get extenstions to deactivate
if (array_key_exists('checked', $_POST)) {
    // bulk deactivation
    // bulk deactivation accessible for plugins only
    $extension_type = 'plugin';
    $extension_keys = $_POST['checked'];
    $bulk_deactivate = 1;
    $bulk_data['_wpnonce'] = $_POST['_wpnonce'];
    $bulk_data['_wp_http_referer'] = $_POST['_wp_http_referer'];
    $bulk_data['checked'] = $_POST['checked'];
    $bulk_data['action'] = $_POST['action'];
    $bulk_data['action2'] = $_POST['action2'];
    $url = admin_url('plugins.php');
} else {
    // single extension deactivation
    $url = $_SERVER['REQUEST_URI'];
    $extension = WPRC_UrlAnalyzer::getExtensionFromUrl($url);
    $extension_type = $extension['type'];
    $extension_path = $extension['name'];
 public function __construct()
 {
     $this->model = WPRC_Loader::getModel('cached-requests');
 }
 function testLogin($repository_id, $username, $password, $plain = false)
 {
     //$rm = $this->repo_model;//WPRC_Loader::getModel('repositories');
     $repo = $this->getRepositoryByField('id', $repository_id);
     $body_array = array('action' => 'repository_login');
     $salt = $repo->repository_authsalt;
     //WPRC_Loader::includeSecurity();
     //$body_array['auth'] = array('user'=>$username,'pass'=>WPRC_Security::encrypt($salt,$password),'salt'=>$salt);
     $body_array['auth'] = array('user' => $username, 'pass' => $password, 'salt' => $salt);
     if ($plain) {
         $body_array['auth']['_plain'] = 'true';
     }
     // log
     if (!$plain) {
         $msg = sprintf('Repository Login to %s with auth, timeout: %d, action: %s', $repo->repository_endpoint_url, 5, $body_array['action']);
     } else {
         $msg = sprintf('Repository Login to %s with auth plain, timeout: %d, action: %s', $repo->repository_endpoint_url, 5, $body_array['action']);
     }
     WPRC_Functions::log($msg, 'controller', 'controller.log');
     $request = wp_remote_post($repo->repository_endpoint_url, array('timeout' => 15, 'body' => $body_array));
     // log
     $msg = sprintf('Repository Login to %s with auth, response: %s', $repo->repository_endpoint_url, print_r($request, true));
     WPRC_Functions::log($msg, 'controller', 'controller.log');
     if (is_wp_error($request)) {
         $res = new WP_Error('repository_login_failed', __('An unexpected HTTP Error occurred during the API request.', 'installer'), $request->get_error_message());
         // log
         $msg = sprintf('Repository Login to %s with auth, response error: %s', $repo->repository_endpoint_url, print_r($request->get_error_message()));
         WPRC_Functions::log($msg, 'controller', 'controller.log');
     } else {
         $request_body = wp_remote_retrieve_body($request);
         if (is_serialized($request_body)) {
             $res = @unserialize($request_body);
         }
     }
     if (!isset($res) || $res == false || is_wp_error($res)) {
         // log
         $msg = sprintf('Repository Login to %s with auth, response unserialize error: %s', $repo->repository_endpoint_url, print_r(wp_remote_retrieve_body($request)));
         WPRC_Functions::log($msg, 'controller', 'controller.log');
         return false;
     }
     if (isset($res->error) && !isset($res->success)) {
         $response = array('error' => 1, 'message' => $res->error);
     } else {
         $response = array('error' => 0, 'message' => $res->success);
         $doupdate = false;
         if ($plain && isset($res->pass) && $res->pass != '') {
             $password = $res->pass;
             $doupdate = true;
         }
         if (!$plain) {
             $doupdate = true;
         }
         if ($doupdate) {
             $this->updateRepositoryAuth($repository_id, $username, $password);
             // clear cache
             $rmcache = WPRC_Loader::getModel('cached-requests');
             $rmcache->cleanCache();
             // clear update data
             delete_site_transient('update_plugins');
             delete_site_transient('update_themes');
         }
     }
     return $response;
 }