Exemplo n.º 1
0
 /**
  * Handles the installation of the add-on
  *
  * @since 2.2
  */
 public function handle_install_request()
 {
     if (!isset($_GET['_wpnonce']) || !wp_verify_nonce($_GET['_wpnonce'], 'install-cac-addon') || !isset($_GET['plugin'])) {
         return;
     }
     if (!$this->get_addon($_GET['plugin'])) {
         cpac_admin_message('Addon does not exist.', 'error');
         return;
     }
     if (!class_exists('CAC_Addon_Pro')) {
         cpac_admin_message('You need Admin Columns Pro.', 'error');
         return;
     }
     // Hook: trigger possible warning message before running WP installer ( api errors etc. )
     if ($error = apply_filters('cac/addons/install_request/maybe_error', false, $_GET['plugin'])) {
         cpac_admin_message($error, 'error');
         return;
     }
     $install_url = add_query_arg(array('action' => 'install-plugin', 'plugin' => $_GET['plugin'], 'cpac-redirect' => true), wp_nonce_url(network_admin_url('update.php'), 'install-plugin_' . $_GET['plugin']));
     wp_redirect($install_url);
     exit;
 }
Exemplo n.º 2
0
 /**
  * @since 2.0
  */
 function store($columns = '')
 {
     if (!empty($_POST[$this->key])) {
         $columns = array_filter($_POST[$this->key]);
     }
     if (!$columns) {
         cpac_admin_message(__('No columns settings available.', 'cpac'), 'error');
         return false;
     }
     // sanitize user inputs
     foreach ($columns as $name => $options) {
         if ($_column = $this->get_column_by_name($name)) {
             $columns[$name] = $_column->sanitize_storage($options);
         }
         // Santize Label: Need to replace the url for images etc, so we do not have url problem on exports
         // this can not be done by CPAC_Column::sanitize_storage() because 3rd party plugins are not available there
         $columns[$name]['label'] = stripslashes(str_replace(site_url(), '[cpac_site_url]', trim($columns[$name]['label'])));
     }
     // store columns
     $result = update_option("cpac_options_{$this->key}", $columns);
     $result_default = update_option("cpac_options_{$this->key}_default", array_keys($this->get_default_columns()));
     // error
     if (!$result && !$result_default) {
         cpac_admin_message(sprintf(__('You are trying to store the same settings for %s.', 'cpac'), "<strong>{$this->label}</strong>"), 'error');
         return false;
     }
     cpac_admin_message(sprintf(__('Settings for %s updated succesfully.', 'cpac'), "<strong>{$this->label}</strong>"), 'updated');
     // refresh columns otherwise the newly added columns will not be displayed
     $this->set_columns_on_current_screen();
     /**
      * Fires after a new column setup is stored in the database
      * Primarily used when columns are saved through the Admin Columns settings screen
      *
      * @since 2.2.9
      *
      * @param array $columns List of columns ([columnid] => (array) [column properties])
      * @param CPAC_Storage_Model $storage_model_instance Storage model instance
      */
     do_action('cac/storage_model/columns_stored', $columns, $this);
     return true;
 }
Exemplo n.º 3
0
 /**
  * Restore all column defaults
  *
  * @since 1.0
  */
 private function restore_all()
 {
     global $wpdb;
     $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'cpac_options_%'");
     cpac_admin_message(__('Default settings succesfully restored.', 'cpac'), 'updated');
 }
Exemplo n.º 4
0
 /**
  * @since 2.0
  */
 public function init()
 {
     // @dev_only delete_option( 'cpac_version' ); set_transient( 'cpac_show_welcome', 'display' );
     $version = get_option('cpac_version', false);
     // Maybe version pre 2.0.0 was used
     if (!$version && get_option('cpac_options')) {
         $version = '1.0.0';
     }
     // @dev_only if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) echo "--------- CPAC DEBUG: START ---------<br/>\n" . $version . "<br/>\n" . CPAC_VERSION . "<br/>\n" . CPAC_UPGRADE_VERSION . "<br/>\n" . get_transient( 'cpac_show_welcome' ) . "<br/>\n" . "--------- CPAC DEBUG: END ---------<br/>\n";
     // Maybe upgrade?
     if ($version) {
         // run every upgrade
         if ($version < CPAC_VERSION) {
             // nothing yet
         }
         // run only when updating from v1 to v2
         if ($version < '2.0.0') {
             // show welcome screen
             set_transient('cpac_show_welcome', 'display');
         }
         // run only when database upgrade is needed
         if ($version < CPAC_UPGRADE_VERSION) {
             // display upgrade message on every page except upgrade page itself
             if (!(isset($_REQUEST['page']) && 'cpac-upgrade' === $_REQUEST['page'])) {
                 $message = __('Admin Columns', 'codepress-admin-columns') . ' v' . CPAC_VERSION . ' ' . __('requires a database upgrade', 'codepress-admin-columns') . ' (<a class="thickbox" href="' . admin_url() . 'plugin-install.php?tab=plugin-information&plugin=codepress-admin-columns&section=changelog&TB_iframe=true&width=640&height=559">' . __('why?', 'codepress-admin-columns') . '</a>). ' . __("Please", 'codepress-admin-columns') . ' <a href="http://codex.wordpress.org/Backing_Up_Your_Database">' . __("backup your database", 'codepress-admin-columns') . '</a>, ' . __("then click", 'codepress-admin-columns') . ' <a href="' . admin_url() . 'options-general.php?page=cpac-upgrade" class="button">' . __("Upgrade Database", 'codepress-admin-columns') . '</a>';
                 cpac_admin_message($message, 'updated');
             }
         } elseif ($version < CPAC_VERSION) {
             update_option('cpac_version', CPAC_VERSION);
         }
     } else {
         update_option('cpac_version', CPAC_VERSION);
     }
 }
Exemplo n.º 5
0
 /**
  * Handle reset request
  *
  * @since 1.0
  */
 public function handle_reset()
 {
     global $pagenow;
     // On Admin settings page
     if (isset($_GET['cpac_action']) && 'restore_sorting_type' == $_GET['cpac_action'] && !empty($_GET['cpac_key']) && 'options-general.php' == $pagenow && !empty($_GET['page']) && 'codepress-admin-columns' == $_GET['page']) {
         // security check
         if (wp_verify_nonce($_GET['_cpac_nonce'], 'restore-sorting')) {
             $result = $this->do_reset($_GET['cpac_key']);
             if ($result) {
                 cpac_admin_message("<strong>{$this->storage_model->label}</strong> " . __('sorting preference succesfully reset.', 'cpac'), 'updated');
             }
         }
     }
     // On Columns page
     if ($this->storage_model->page . '.php' == $pagenow && !empty($_REQUEST['reset-sorting']) && $_REQUEST['reset-sorting'] == $this->storage_model->key) {
         // do a reset
         $this->do_reset($_REQUEST['reset-sorting']);
         // redirect back to admin
         $admin_url = trailingslashit(admin_url()) . $this->storage_model->page . '.php';
         // for posts we need to add the type to the admin url
         if ('post' == $this->storage_model->type) {
             $admin_url = $admin_url . '?post_type=' . $this->storage_model->key;
         }
         wp_safe_redirect($admin_url);
         exit;
     }
 }
 /**
  * Handle requests for license activation and deactivation
  *
  * @since 1.0
  */
 public function handle_request()
 {
     // Activation
     if (isset($_POST['_wpnonce_addon_activate']) && wp_verify_nonce($_POST['_wpnonce_addon_activate'], $this->option_key)) {
         $licence_key = isset($_POST[$this->option_key]) ? sanitize_text_field($_POST[$this->option_key]) : '';
         if (empty($licence_key)) {
             cpac_admin_message(__('Empty licence.', 'cpac'), 'error');
             return;
         }
         $response = $this->activate_licence($licence_key);
         if (is_wp_error($response)) {
             cpac_admin_message(__('Wrong response from API.', 'cpac') . ' ' . $response->get_error_message(), 'error');
         } elseif (isset($response->activated)) {
             cpac_admin_message($response->message, 'updated');
         } else {
             cpac_admin_message(__('Wrong response from API.', 'cpac'), 'error');
         }
     }
     // Deactivation
     if (isset($_POST['_wpnonce_addon_deactivate']) && wp_verify_nonce($_POST['_wpnonce_addon_deactivate'], $this->option_key)) {
         $response = $this->deactivate_licence();
         if (is_wp_error($response)) {
             cpac_admin_message(__('Wrong response from API.', 'cpac') . ' ' . $response->get_error_message(), 'error');
         } elseif (isset($response->deactivated)) {
             cpac_admin_message($response->message, 'updated');
         } else {
             cpac_admin_message(__('Wrong response from API.', 'cpac'), 'error');
         }
     }
     // Toggle SSL
     if (isset($_POST['_wpnonce_addon_toggle_ssl']) && wp_verify_nonce($_POST['_wpnonce_addon_toggle_ssl'], $this->option_key)) {
         // disable ssl
         if ('0' == $_POST['ssl']) {
             $this->disable_ssl();
         } else {
             $this->enable_ssl();
         }
     }
 }
 /**
  * @uses wp_import_handle_upload()
  * @since 2.0.0
  */
 function handle_file_import()
 {
     if (!isset($_REQUEST['_cpac_nonce']) || !wp_verify_nonce($_REQUEST['_cpac_nonce'], 'file-import') || empty($_FILES['import'])) {
         return false;
     }
     // handles upload
     $file = wp_import_handle_upload();
     // any errors?
     $error = false;
     if (isset($file['error'])) {
         $error = __('Sorry, there has been an error.', 'cpac') . '<br />' . esc_html($file['error']);
     } else {
         if (!file_exists($file['file'])) {
             $error = __('Sorry, there has been an error.', 'cpac') . '<br />' . sprintf(__('The export file could not be found at <code>%s</code>. It is likely that this was caused by a permissions problem.', 'cpac'), esc_html($file['file']));
         }
     }
     if ($error) {
         cpac_admin_message($error, 'error');
         return false;
     }
     // read file contents and start the import
     $content = file_get_contents($file['file']);
     // cleanup
     wp_delete_attachment($file['id']);
     // decode file contents
     $columns = $this->get_decoded_settings($content);
     if (empty($columns)) {
         cpac_admin_message(__('Import failed. File does not contain Admin Column settings.', 'cpac'), 'error');
         return false;
     }
     // store settings
     foreach ($columns as $type => $settings) {
         $storage_model = $this->cpac->get_storage_model($type);
         if (!$storage_model) {
             cpac_admin_message(sprintf(__('Screen %s does not exist.', 'cpac'), "<strong>{$type}</strong>"), 'error');
             continue;
         }
         $storage_model->store($settings);
     }
 }