/**
  * process bulk actions for module/plugin
  * @param array $plugins
  * @param $action action bulk
  */
 public function process_bulk_action($plugins = array(), $action = '')
 {
     // Grab plugin data from $_POST.
     #$plugins             = isset( $_POST['plugin'] ) ? (array) $_POST['plugin'] : array();
     $plugins_to_activate = array();
     // Split plugin value into array with plugin file path, plugin source and plugin name.
     $plugins_need2activate = array();
     if (is_array($plugins)) {
         foreach ($plugins as $i => $plugin) {
             $_plugin = explode(',', $plugin);
             if (isset(HW_TGM_Module_Activation::get_instance()->plugins[$_plugin[0]])) {
                 $module_info = HW_TGM_Module_Activation::get_instance()->plugins[$_plugin[0]];
                 $active = array();
                 //local downloaded plugins
                 if (!empty($module_info['require_wp_plugin']) && file_exists(WP_PLUGIN_DIR . '/' . trim($module_info['require_wp_plugin'], '/'))) {
                     $active[] = $module_info['require_wp_plugin'];
                     $active[] = 'repo';
                     $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . trim($module_info['require_wp_plugin'], '/'));
                     $active[] = $plugin_data['Name'];
                 }
                 if (!empty($module_info['require_module'])) {
                     //check module that require an other
                     $require_module = $module_info['require_module'];
                     if (!hw_is_active_module($require_module)) {
                         hw_inline_msg("Xin lỗi, module `{$module_info['name']}` yêu cầu cài trước module " . $require_module);
                         $plugins_to_activate[] = array($module_info['slug'], $module_info['name']);
                     }
                 }
                 if (!empty($module_info['require_wp_plugin']) && !is_plugin_active($module_info['require_wp_plugin']) && !empty($active)) {
                     $plugins_need2activate[] = $active;
                 }
             }
             $plugins_to_activate[] = $_plugin;
         }
     }
     foreach ($plugins_to_activate as $i => $array) {
         if (isset($array[1]) && !preg_match('|.php$|', $array[1])) {
             unset($plugins_to_activate[$i]);
         }
     }
     // Return early if there are no plugins to activate.
     if (empty($plugins_to_activate)) {
         return;
     }
     //activate plugins require for the your modules
     if (count($plugins_need2activate)) {
         $this->hw_activate_plugins($plugins_need2activate);
     }
     if ('tgmpa-bulk-activate' === $action) {
         // Now we are good to go - let's start activating plugins.
         hw_activate_modules($plugins_to_activate);
     } elseif ('tgmpa-bulk-deactivate' === $action) {
         //deactive module
         hw_deactivate_modules($plugins_to_activate);
     }
     // Update recently activated plugins option.
     $recent = (array) get_option('recently_activated');
     foreach ($plugins as $plugin => $time) {
         if (isset($recent[$plugin])) {
             unset($recent[$plugin]);
         }
     }
     update_option('recently_activated', $recent);
 }
Exemplo n.º 2
0
     if (isset($_data['from'])) {
         $url .= '&from=' . urlencode(stripslashes($_data['from']));
     }
     $type = 'web';
     //Install plugin type, From Web or an Upload.
     $upgrader = new HW_Module_Upgrader(new HW_Module_Installer_Skin(compact('title', 'url', 'nonce', 'plugin', 'api')), new HW_Modules_Packages_Upgrader($modules_package));
     if (!empty($api->download_link)) {
         $upgrader->install('http://localhost/wp2/wp-content/plugins/hw-hoangweb/data/uploads/test-module.zip');
     }
 } elseif ($action == 'activate-module') {
     if (!current_user_can('update_plugins')) {
         wp_die(__('You do not have sufficient permissions to update plugins for this site.'));
     }
     check_admin_referer('activate-module_' . $plugin);
     wp_redirect(admin_url('hw-update.php?action=activate-plugin&failure=true&plugin=' . urlencode($plugin) . '&_wpnonce=' . $_data['_wpnonce']));
     hw_activate_modules($plugin);
     wp_redirect(admin_url('hw-update.php?action=activate-plugin&success=true&plugin=' . urlencode($plugin) . '&_wpnonce=' . $_data['_wpnonce']));
     die;
 } elseif ('upload-module' == $action) {
     if (!current_user_can('upload_plugins')) {
         wp_die(__('You do not have sufficient permissions to install plugins on this site.'));
     }
     check_admin_referer('module-upload');
     $file_upload = new HW_File_Upload_Upgrader($_data['package']);
     $title = sprintf(__('Installing Module from uploaded file: %s'), esc_html(basename($_data['package'])));
     $nonce = 'module-upload';
     $url = add_query_arg(array('file' => base64_encode($_data['package'])), 'hw-update.php?action=upload-module');
     $type = 'upload';
     //Install plugin type, From Web or an Upload.
     $upgrader = new HW_Module_Upgrader(new HW_Module_Installer_Skin(compact('type', 'title', 'nonce', 'url')), new HW_Modules_Packages_Upgrader($modules_package));
     $result = $upgrader->install($_data['package']);