PluginProbe ʕ •ᴥ•ʔ
Permalink Manager Lite / 1.1.2
Permalink Manager Lite v1.1.2
2.5.3.4 2.2.18 2.2.19.2 2.2.19.3 2.2.19.3.1 2.2.2 2.2.20 2.2.20.1 2.2.20.3 2.2.4 2.2.5 2.2.6 2.2.7.2 2.2.7.3 2.2.7.5 2.2.7.6 2.2.8.4 2.2.8.5 2.2.8.6 2.2.8.7 2.2.8.9 2.2.9.1 2.2.9.2 2.2.9.2.1 2.2.9.3 2.2.9.4 2.2.9.6 2.2.9.7 2.2.9.9 2.3.0 2.3.1.1 2.4.0 2.4.1 2.4.1.2 2.4.1.3 2.4.1.4 2.4.1.5 2.4.1.6 2.4.2 2.4.2.1 2.4.3 2.4.3.1 2.4.3.2 2.4.3.3 2.4.3.4 2.4.4 2.4.4.1 2.4.4.2 2.4.4.3 2.5.0 2.5.1 2.5.1.1 2.5.1.2 2.5.1.3 2.5.1.4 2.5.2 2.5.2.1 2.5.2.2 2.5.2.3 2.5.2.4 2.5.3 2.5.3.1 2.5.3.2 2.5.3.3 trunk 0.2 0.3 0.3.1 0.3.2 0.3.3 0.3.4 0.4 0.4.1 0.4.2 0.4.3 0.4.4 0.4.6 0.4.7 0.4.8 0.4.9 0.5.3 0.5.4 1.0.0 1.0.1 1.0.4 1.1.0 1.1.1 1.1.2 1.11.6.3 2.0.0 2.0.3 2.0.4 2.0.4.3 2.0.5.1 2.0.5.2 2.0.5.3 2.0.5.3.1 2.0.5.4 2.0.5.4a 2.0.5.5 2.0.5.6 2.0.5.6.1 2.0.5.7 2.0.5.9a 2.0.6.2.1 2.0.6.2a 2.0.6.3 2.1.0 2.1.1 2.1.2.4 2.2.0 2.2.1.1 2.2.1.2 2.2.11 2.2.12 2.2.13.1 2.2.14 2.2.15.1 2.2.16 2.2.17
permalink-manager / permalink-manager.php
permalink-manager Last commit date
includes 8 years ago languages 8 years ago out 8 years ago LICENSE.txt 8 years ago README.txt 8 years ago permalink-manager.php 8 years ago
permalink-manager.php
238 lines
1 <?php
2
3 /**
4 * Plugin Name: Permalink Manager Lite
5 * Plugin URI: https://permalinkmanager.pro?utm_source=plugin
6 * Description: Most advanced Permalink utility for Wordpress. It allows to bulk edit the permalinks & permastructures and regenerate/reset all the URIs in your Wordpress instance.
7 * Version: 1.1.2
8 * Author: Maciej Bis
9 * Author URI: http://maciejbis.net/
10 * License: GPL-2.0+
11 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
12 * Text Domain: permalink-manager
13 * Domain Path: /languages
14 */
15
16 // If this file is called directly or plugin is already defined, abort.
17 if (!defined('WPINC')) {
18 die;
19 }
20
21 // Define the directories used to load plugin files.
22 define( 'PERMALINK_MANAGER_PLUGIN_NAME', 'Permalink Manager' );
23 define( 'PERMALINK_MANAGER_PLUGIN_SLUG', 'permalink-manager' );
24 define( 'PERMALINK_MANAGER_VERSION', '1.1.2' );
25 define( 'PERMALINK_MANAGER_DIR', untrailingslashit( dirname( __FILE__ ) ) );
26 define( 'PERMALINK_MANAGER_BASENAME', plugin_basename(__FILE__) );
27 define( 'PERMALINK_MANAGER_URL', untrailingslashit( plugins_url( '', __FILE__ ) ) );
28 define( 'PERMALINK_MANAGER_WEBSITE', 'http://permalinkmanager.pro?utm_source=plugin' );
29 define( 'PERMALINK_MANAGER_DONATE', 'https://www.paypal.me/Bismit' );
30
31 class Permalink_Manager_Class {
32
33 public $permalink_manager, $permalink_manager_options_page, $permalink_manager_options;
34 public $sections, $functions, $permalink_manager_before_sections_html, $permalink_manager_after_sections_html;
35
36 /**
37 * Get options from DB, load subclasses & hooks
38 */
39 public function __construct() {
40 $this->include_subclassess();
41 $this->register_init_hooks();
42 }
43
44 /**
45 * Include back-end classess and set their instances
46 */
47 function include_subclassess() {
48 // WP_List_Table needed for post types & taxnomies editors
49 if( ! class_exists( 'WP_List_Table' ) ) {
50 require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
51 }
52
53 $classes = array(
54 'core' => array(
55 'helper-functions' => 'Permalink_Manager_Helper_Functions',
56 'uri-functions-post' => 'Permalink_Manager_URI_Functions_Post',
57 'uri-functions-tax' => 'Permalink_Manager_URI_Functions_Tax',
58 'admin-functions' => 'Permalink_Manager_Admin_Functions',
59 'actions' => 'Permalink_Manager_Actions',
60 'third-parties' => 'Permalink_Manager_Third_Parties',
61 'core-functions' => 'Permalink_Manager_Core_Functions',
62 'pro-functions' => 'Permalink_Manager_Pro_Functions'
63 ),
64 'views' => array(
65 'uri-editor' => 'Permalink_Manager_Uri_Editor',
66 'tools' => 'Permalink_Manager_Tools',
67 'permastructs' => 'Permalink_Manager_Permastructs',
68 'settings' => 'Permalink_Manager_Settings',
69 'debug' => 'Permalink_Manager_Debug',
70 'pro-addons' => 'Permalink_Manager_Pro_Addons',
71 'upgrade' => 'Permalink_Manager_Upgrade',
72 'uri-editor-tax' => false,
73 'uri-editor-post' => false
74 )
75 );
76
77 // Load classes and set-up their instances
78 foreach($classes as $class_type => $classes_array) {
79 foreach($classes_array as $class => $class_name) {
80 $filename = PERMALINK_MANAGER_DIR . "/includes/{$class_type}/permalink-manager-{$class}.php";
81
82 if(file_exists($filename)) {
83 require_once $filename;
84 if($class_name) { $this->functions[$class] = new $class_name(); }
85 }
86 }
87 }
88 }
89
90 /**
91 * Register general hooks
92 */
93 public function register_init_hooks() {
94 // Localize plugin
95 add_action( 'plugins_loaded', array($this, 'localize_me'), 1 );
96
97 // Load options
98 add_action( 'init', array($this, 'get_options_and_globals'), 1 );
99
100 // Legacy support
101 add_action( 'init', array($this, 'legacy_support'), 2 );
102
103 // Default settings & alerts
104 add_filter( 'permalink-manager-options', array($this, 'default_settings'), 1 );
105 add_filter( 'permalink-manager-alerts', array($this, 'default_alerts'), 1 );
106 }
107
108 /**
109 * Localize this plugin
110 */
111 function localize_me() {
112 load_plugin_textdomain( 'permalink-manager', false, PERMALINK_MANAGER_DIR );
113 }
114
115 /**
116 * Get options values & set global
117 */
118 public function get_options_and_globals() {
119 // 1. Globals with data stored in DB
120 global $permalink_manager_options, $permalink_manager_uris, $permalink_manager_permastructs;
121
122 $this->permalink_manager_options = $permalink_manager_options = apply_filters('permalink-manager-options', get_option('permalink-manager', array()));
123 $this->permalink_manager_uris = $permalink_manager_uris = apply_filters('permalink-manager-uris', get_option('permalink-manager-uris', array()));
124 $this->permalink_manager_permastructs = $permalink_manager_permastructs = apply_filters('permalink-manager-permastructs', get_option('permalink-manager-permastructs', array()));
125
126 // 2. Globals used to display additional content (eg. alerts)
127 global $permalink_manager_alerts, $permalink_manager_before_sections_html, $permalink_manager_after_sections_html;
128
129 $this->permalink_manager_alerts = $permalink_manager_alerts = apply_filters('permalink-manager-alerts', get_option('permalink-manager-alerts', array()));
130 $this->permalink_manager_before_sections_html = $permalink_manager_before_sections_html = apply_filters('permalink-manager-before-sections', '');
131 $this->permalink_manager_after_sections_html = $permalink_manager_after_sections_html = apply_filters('permalink-manager-after-sections', '');
132 }
133
134 /**
135 * Set the initial/default settings (including "Screen Options")
136 */
137 public function default_settings($settings) {
138 $all_taxonomies = Permalink_Manager_Helper_Functions::get_taxonomies_array();
139 $all_post_types = Permalink_Manager_Helper_Functions::get_post_types_array();
140
141 $default_settings = apply_filters('permalink-manager-default-options', array(
142 'screen-options' => array(
143 'per_page' => 20,
144 'post_statuses' => array('publish')
145 ),
146 'general' => array(
147 'force_custom_slugs' => 0,
148 'auto_update_uris' => 0,
149 'case_insensitive_permalinks' => 0,
150 'decode_uris' => 0,
151 'yoast_primary_term' => 1,
152 'redirect' => '302',
153 'canonical_redirect' => 1,
154 'trailing_slashes' => 0
155 ),
156 'licence' => array()
157 ));
158
159 // Apply the default settings (if empty values) in all settings sections
160 foreach($default_settings as $group_name => $fields) {
161 foreach($fields as $field_name => $field) {
162 if(!isset($settings[$group_name][$field_name])) {
163 $settings[$group_name][$field_name] = $field;
164 }
165 }
166 }
167
168 return $settings;
169 }
170
171 /**
172 * Set the initial/default admin notices
173 */
174 public function default_alerts($alerts) {
175 $default_alerts = apply_filters('permalink-manager-default-alerts', array(
176 'summer-promo' => array(
177 'txt' => sprintf(
178 __("Get access to extra features: full taxonomy and WooCommerce support, possibility to use custom fields inside the permalinks and more!<br /><strong>Buy Permalink Manager Pro <a href=\"%s\" target=\"_blank\">here</a> and save 30&#37; using \"SUMMER\" coupon code (valid until 2017-08-01)!</strong>", "permalink-manager"),
179 PERMALINK_MANAGER_WEBSITE
180 ),
181 'type' => 'notice-info',
182 'show' => 'pro_hide',
183 'plugin_only' => true,
184 'until' => '2017-08-01'
185 )
186 ));
187
188 // Apply the default settings (if empty values) in all settings sections
189 return $alerts + $default_alerts;
190 }
191
192 /**
193 * Temporary hook
194 */
195 function legacy_support() {
196 global $permalink_manager_permastructs, $permalink_manager_options;
197
198 if(isset($permalink_manager_options['base-editor'])) {
199 $new_options['post_types'] = $permalink_manager_options['base-editor'];
200 update_option('permalink-manager-permastructs', $new_options);
201 }
202 else if(empty($permalink_manager_permastructs['post_types']) && count($permalink_manager_permastructs) > 0) {
203 $new_options['post_types'] = $permalink_manager_permastructs;
204 update_option('permalink-manager-permastructs', $new_options);
205 }
206
207 // Adjust options structure
208 if(!empty($permalink_manager_options['miscellaneous'])) {
209 // Get the options direclty from database
210 $permalink_manager_unfiltered_options = get_option('permalink-manager', array('general' => array(), 'miscellaneous' => array(), 'licence'));
211
212 // Combine general & general
213 $permalink_manager_unfiltered_options['general'] = array_merge($permalink_manager_unfiltered_options['general'], $permalink_manager_unfiltered_options['miscellaneous']);
214
215 // Move licence key to different section
216 $permalink_manager_unfiltered_options['licence']['licence_key'] = (!empty($permalink_manager_unfiltered_options['miscellaneous']['license_key'])) ? $permalink_manager_unfiltered_options['miscellaneous']['license_key'] : "";
217
218 // Remove redundant keys
219 unset($permalink_manager_unfiltered_options['general']['license_key']);
220 unset($permalink_manager_unfiltered_options['miscellaneous']);
221 unset($permalink_manager_unfiltered_options['permalink_manager_options']);
222 unset($permalink_manager_unfiltered_options['_wp_http_referer']);
223
224 // Save the settings in database
225 update_option('permalink-manager', $permalink_manager_unfiltered_options);
226 }
227 }
228
229 }
230
231 /**
232 * Begins execution of the plugin.
233 */
234 function run_permalink_manager() {
235 $Permalink_Manager_Class = new Permalink_Manager_Class();
236 }
237 run_permalink_manager();
238