PluginProbe ʕ •ᴥ•ʔ
Permalink Manager Lite / 2.1.1
Permalink Manager Lite v2.1.1
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 7 years ago languages 7 years ago out 7 years ago LICENSE.txt 7 years ago README.txt 7 years ago permalink-manager.php 7 years ago
permalink-manager.php
250 lines
1 <?php
2
3 /**
4 * Plugin Name: Permalink Manager Lite
5 * Plugin URI: https://permalinkmanager.pro?utm_source=plugin
6 * Description: Advanced plugin that allows to set-up custom permalinks (bulk editors included), slugs and permastructures (WooCommerce compatible).
7 * Version: 2.1.1
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', '2.1.1' );
25 define( 'PERMALINK_MANAGER_FILE', __FILE__ );
26 define( 'PERMALINK_MANAGER_DIR', untrailingslashit(dirname(__FILE__)) );
27 define( 'PERMALINK_MANAGER_BASENAME', dirname(plugin_basename(__FILE__)));
28 define( 'PERMALINK_MANAGER_URL', untrailingslashit( plugins_url('', __FILE__) ) );
29 define( 'PERMALINK_MANAGER_WEBSITE', 'http://permalinkmanager.pro?utm_source=plugin' );
30 define( 'PERMALINK_MANAGER_DONATE', 'https://www.paypal.me/Bismit' );
31
32 class Permalink_Manager_Class {
33
34 public $permalink_manager, $permalink_manager_options_page, $permalink_manager_options;
35 public $sections, $functions, $permalink_manager_before_sections_html, $permalink_manager_after_sections_html;
36
37 /**
38 * Get options from DB, load subclasses & hooks
39 */
40 public function __construct() {
41 $this->include_subclassess();
42 $this->register_init_hooks();
43 }
44
45 /**
46 * Include back-end classess and set their instances
47 */
48 function include_subclassess() {
49 // WP_List_Table needed for post types & taxnomies editors
50 if( ! class_exists( 'WP_List_Table' ) ) {
51 require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
52 }
53
54 $classes = array(
55 'core' => array(
56 'helper-functions' => 'Permalink_Manager_Helper_Functions',
57 'uri-functions-post' => 'Permalink_Manager_URI_Functions_Post',
58 'uri-functions-tax' => 'Permalink_Manager_URI_Functions_Tax',
59 'admin-functions' => 'Permalink_Manager_Admin_Functions',
60 'actions' => 'Permalink_Manager_Actions',
61 'third-parties' => 'Permalink_Manager_Third_Parties',
62 'core-functions' => 'Permalink_Manager_Core_Functions',
63 'gutenberg' => 'Permalink_Manager_Gutenberg',
64 'pro-functions' => 'Permalink_Manager_Pro_Functions'
65 ),
66 'views' => array(
67 'uri-editor' => 'Permalink_Manager_Uri_Editor',
68 'tools' => 'Permalink_Manager_Tools',
69 'permastructs' => 'Permalink_Manager_Permastructs',
70 'settings' => 'Permalink_Manager_Settings',
71 'debug' => 'Permalink_Manager_Debug',
72 'pro-addons' => 'Permalink_Manager_Pro_Addons',
73 'upgrade' => 'Permalink_Manager_Upgrade',
74 'uri-editor-tax' => false,
75 'uri-editor-post' => false
76 )
77 );
78
79 // Load classes and set-up their instances
80 foreach($classes as $class_type => $classes_array) {
81 foreach($classes_array as $class => $class_name) {
82 $filename = PERMALINK_MANAGER_DIR . "/includes/{$class_type}/permalink-manager-{$class}.php";
83
84 if(file_exists($filename)) {
85 require_once $filename;
86 if($class_name) { $this->functions[$class] = new $class_name(); }
87 }
88 }
89 }
90 }
91
92 /**
93 * Register general hooks
94 */
95 public function register_init_hooks() {
96 // Localize plugin
97 add_action( 'init', array($this, 'localize_me'), 1 );
98
99 // Load globals & options
100 add_action( 'plugins_loaded', array($this, 'get_options_and_globals'), 9 );
101
102 // Legacy support
103 add_action( 'init', array($this, 'legacy_support'), 2 );
104
105 // Default settings & alerts
106 add_filter( 'permalink-manager-options', array($this, 'default_settings'), 1 );
107 add_filter( 'permalink-manager-alerts', array($this, 'default_alerts'), 1 );
108 }
109
110 /**
111 * Localize this plugin
112 */
113 function localize_me() {
114 load_plugin_textdomain( 'permalink-manager', false, PERMALINK_MANAGER_BASENAME . "/languages" );
115 }
116
117 /**
118 * Get options values & set global
119 */
120 public function get_options_and_globals() {
121 // 1. Globals with data stored in DB
122 global $permalink_manager_options, $permalink_manager_uris, $permalink_manager_permastructs, $permalink_manager_redirects, $permalink_manager_external_redirects;
123
124 $this->permalink_manager_options = $permalink_manager_options = apply_filters('permalink-manager-options', get_option('permalink-manager', array()));
125 $this->permalink_manager_uris = $permalink_manager_uris = apply_filters('permalink-manager-uris', get_option('permalink-manager-uris', array()));
126 $this->permalink_manager_permastructs = $permalink_manager_permastructs = apply_filters('permalink-manager-permastructs', get_option('permalink-manager-permastructs', array()));
127 $this->permalink_manager_redirects = $permalink_manager_redirects = apply_filters('permalink-manager-redirects', get_option('permalink-manager-redirects', array()));
128 $this->permalink_manager_external_redirects = $permalink_manager_external_redirects = apply_filters('permalink-manager-external-redirects', get_option('permalink-manager-external-redirects', array()));
129
130 // 2. Globals used to display additional content (eg. alerts)
131 global $permalink_manager_alerts, $permalink_manager_before_sections_html, $permalink_manager_after_sections_html;
132
133 $this->permalink_manager_alerts = $permalink_manager_alerts = apply_filters('permalink-manager-alerts', get_option('permalink-manager-alerts', array()));
134 $this->permalink_manager_before_sections_html = $permalink_manager_before_sections_html = apply_filters('permalink-manager-before-sections', '');
135 $this->permalink_manager_after_sections_html = $permalink_manager_after_sections_html = apply_filters('permalink-manager-after-sections', '');
136 }
137
138 /**
139 * Set the initial/default settings (including "Screen Options")
140 */
141 public function default_settings($settings) {
142 $all_taxonomies = Permalink_Manager_Helper_Functions::get_taxonomies_array();
143 $all_post_types = Permalink_Manager_Helper_Functions::get_post_types_array();
144
145 $default_settings = apply_filters('permalink-manager-default-options', array(
146 'screen-options' => array(
147 'per_page' => 20,
148 'post_statuses' => array('publish'),
149 'group' => false,
150 ),
151 'general' => array(
152 'force_custom_slugs' => 0,
153 'show_native_slug_field' => 0,
154 'auto_update_uris' => 0,
155 'setup_redirects' => 1,
156 'redirect' => '301',
157 'canonical_redirect' => 1,
158 'trailing_slashes' => 0,
159 'pagination_redirect' => 0,
160 'auto_remove_duplicates' => 0,
161 'partial_disable' => array(),
162 'deep_detect' => 1,
163 'fix_language_mismatch' => 1
164 ),
165 'licence' => array()
166 ));
167
168 // Apply the default settings (if empty values) in all settings sections
169 foreach($default_settings as $group_name => $fields) {
170 foreach($fields as $field_name => $field) {
171 if(!isset($settings[$group_name][$field_name])) {
172 $settings[$group_name][$field_name] = $field;
173 }
174 }
175 }
176
177 return $settings;
178 }
179
180 /**
181 * Set the initial/default admin notices
182 */
183 public function default_alerts($alerts) {
184 $default_alerts = apply_filters('permalink-manager-default-alerts', array(
185 'october2018' => array(
186 'txt' => sprintf(
187 __("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 %s using \"%s\" coupon code!</strong> Valid until %s!", "permalink-manager"),
188 PERMALINK_MANAGER_WEBSITE,
189 '30&#37;',
190 'OCTOBER',
191 '31st October'
192 ),
193 'type' => 'notice-info',
194 'show' => 'pro_hide',
195 'plugin_only' => true,
196 'until' => '2018-11-01'
197 )
198 ));
199
200 // Apply the default settings (if empty values) in all settings sections
201 return (array) $alerts + (array) $default_alerts;
202 }
203
204 /**
205 * Temporary hook
206 */
207 function legacy_support() {
208 global $permalink_manager_permastructs, $permalink_manager_options;
209
210 if(isset($permalink_manager_options['base-editor'])) {
211 $new_options['post_types'] = $permalink_manager_options['base-editor'];
212 update_option('permalink-manager-permastructs', $new_options);
213 }
214 else if(empty($permalink_manager_permastructs['post_types']) && count($permalink_manager_permastructs) > 0) {
215 $new_options['post_types'] = $permalink_manager_permastructs;
216 update_option('permalink-manager-permastructs', $new_options);
217 }
218
219 // Adjust options structure
220 if(!empty($permalink_manager_options['miscellaneous'])) {
221 // Get the options direclty from database
222 $permalink_manager_unfiltered_options = get_option('permalink-manager', array('general' => array(), 'miscellaneous' => array(), 'licence'));
223
224 // Combine general & general
225 $permalink_manager_unfiltered_options['general'] = array_merge($permalink_manager_unfiltered_options['general'], $permalink_manager_unfiltered_options['miscellaneous']);
226
227 // Move licence key to different section
228 $permalink_manager_unfiltered_options['licence']['licence_key'] = (!empty($permalink_manager_unfiltered_options['miscellaneous']['license_key'])) ? $permalink_manager_unfiltered_options['miscellaneous']['license_key'] : "";
229
230 // Remove redundant keys
231 unset($permalink_manager_unfiltered_options['general']['license_key']);
232 unset($permalink_manager_unfiltered_options['miscellaneous']);
233 unset($permalink_manager_unfiltered_options['permalink_manager_options']);
234 unset($permalink_manager_unfiltered_options['_wp_http_referer']);
235
236 // Save the settings in database
237 update_option('permalink-manager', $permalink_manager_unfiltered_options);
238 }
239 }
240
241 }
242
243 /**
244 * Begins execution of the plugin.
245 */
246 function run_permalink_manager() {
247 $Permalink_Manager_Class = new Permalink_Manager_Class();
248 }
249 run_permalink_manager();
250