PluginProbe ʕ •ᴥ•ʔ
Permalink Manager Lite / 2.1.0
Permalink Manager Lite v2.1.0
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
249 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.0
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.0' );
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 'pro-functions' => 'Permalink_Manager_Pro_Functions'
64 ),
65 'views' => array(
66 'uri-editor' => 'Permalink_Manager_Uri_Editor',
67 'tools' => 'Permalink_Manager_Tools',
68 'permastructs' => 'Permalink_Manager_Permastructs',
69 'settings' => 'Permalink_Manager_Settings',
70 'debug' => 'Permalink_Manager_Debug',
71 'pro-addons' => 'Permalink_Manager_Pro_Addons',
72 'upgrade' => 'Permalink_Manager_Upgrade',
73 'uri-editor-tax' => false,
74 'uri-editor-post' => false
75 )
76 );
77
78 // Load classes and set-up their instances
79 foreach($classes as $class_type => $classes_array) {
80 foreach($classes_array as $class => $class_name) {
81 $filename = PERMALINK_MANAGER_DIR . "/includes/{$class_type}/permalink-manager-{$class}.php";
82
83 if(file_exists($filename)) {
84 require_once $filename;
85 if($class_name) { $this->functions[$class] = new $class_name(); }
86 }
87 }
88 }
89 }
90
91 /**
92 * Register general hooks
93 */
94 public function register_init_hooks() {
95 // Localize plugin
96 add_action( 'init', array($this, 'localize_me'), 1 );
97
98 // Load globals & options
99 add_action( 'plugins_loaded', array($this, 'get_options_and_globals'), 9 );
100
101 // Legacy support
102 add_action( 'init', array($this, 'legacy_support'), 2 );
103
104 // Default settings & alerts
105 add_filter( 'permalink-manager-options', array($this, 'default_settings'), 1 );
106 add_filter( 'permalink-manager-alerts', array($this, 'default_alerts'), 1 );
107 }
108
109 /**
110 * Localize this plugin
111 */
112 function localize_me() {
113 load_plugin_textdomain( 'permalink-manager', false, PERMALINK_MANAGER_BASENAME . "/languages" );
114 }
115
116 /**
117 * Get options values & set global
118 */
119 public function get_options_and_globals() {
120 // 1. Globals with data stored in DB
121 global $permalink_manager_options, $permalink_manager_uris, $permalink_manager_permastructs, $permalink_manager_redirects, $permalink_manager_external_redirects;
122
123 $this->permalink_manager_options = $permalink_manager_options = apply_filters('permalink-manager-options', get_option('permalink-manager', array()));
124 $this->permalink_manager_uris = $permalink_manager_uris = apply_filters('permalink-manager-uris', get_option('permalink-manager-uris', array()));
125 $this->permalink_manager_permastructs = $permalink_manager_permastructs = apply_filters('permalink-manager-permastructs', get_option('permalink-manager-permastructs', array()));
126 $this->permalink_manager_redirects = $permalink_manager_redirects = apply_filters('permalink-manager-redirects', get_option('permalink-manager-redirects', array()));
127 $this->permalink_manager_external_redirects = $permalink_manager_external_redirects = apply_filters('permalink-manager-external-redirects', get_option('permalink-manager-external-redirects', array()));
128
129 // 2. Globals used to display additional content (eg. alerts)
130 global $permalink_manager_alerts, $permalink_manager_before_sections_html, $permalink_manager_after_sections_html;
131
132 $this->permalink_manager_alerts = $permalink_manager_alerts = apply_filters('permalink-manager-alerts', get_option('permalink-manager-alerts', array()));
133 $this->permalink_manager_before_sections_html = $permalink_manager_before_sections_html = apply_filters('permalink-manager-before-sections', '');
134 $this->permalink_manager_after_sections_html = $permalink_manager_after_sections_html = apply_filters('permalink-manager-after-sections', '');
135 }
136
137 /**
138 * Set the initial/default settings (including "Screen Options")
139 */
140 public function default_settings($settings) {
141 $all_taxonomies = Permalink_Manager_Helper_Functions::get_taxonomies_array();
142 $all_post_types = Permalink_Manager_Helper_Functions::get_post_types_array();
143
144 $default_settings = apply_filters('permalink-manager-default-options', array(
145 'screen-options' => array(
146 'per_page' => 20,
147 'post_statuses' => array('publish'),
148 'group' => false,
149 ),
150 'general' => array(
151 'force_custom_slugs' => 0,
152 'show_native_slug_field' => 0,
153 'auto_update_uris' => 0,
154 'setup_redirects' => 1,
155 'redirect' => '301',
156 'canonical_redirect' => 1,
157 'trailing_slashes' => 0,
158 'pagination_redirect' => 0,
159 'auto_remove_duplicates' => 0,
160 'partial_disable' => array(),
161 'deep_detect' => 1,
162 'fix_language_mismatch' => 1
163 ),
164 'licence' => array()
165 ));
166
167 // Apply the default settings (if empty values) in all settings sections
168 foreach($default_settings as $group_name => $fields) {
169 foreach($fields as $field_name => $field) {
170 if(!isset($settings[$group_name][$field_name])) {
171 $settings[$group_name][$field_name] = $field;
172 }
173 }
174 }
175
176 return $settings;
177 }
178
179 /**
180 * Set the initial/default admin notices
181 */
182 public function default_alerts($alerts) {
183 $default_alerts = apply_filters('permalink-manager-default-alerts', array(
184 'spring' => array(
185 'txt' => sprintf(
186 __("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"),
187 PERMALINK_MANAGER_WEBSITE,
188 '20&#37;',
189 'SPRING',
190 '31.03'
191 ),
192 'type' => 'notice-info',
193 'show' => 'pro_hide',
194 'plugin_only' => true,
195 'until' => '2018-04-01'
196 )
197 ));
198
199 // Apply the default settings (if empty values) in all settings sections
200 return (array) $alerts + (array) $default_alerts;
201 }
202
203 /**
204 * Temporary hook
205 */
206 function legacy_support() {
207 global $permalink_manager_permastructs, $permalink_manager_options;
208
209 if(isset($permalink_manager_options['base-editor'])) {
210 $new_options['post_types'] = $permalink_manager_options['base-editor'];
211 update_option('permalink-manager-permastructs', $new_options);
212 }
213 else if(empty($permalink_manager_permastructs['post_types']) && count($permalink_manager_permastructs) > 0) {
214 $new_options['post_types'] = $permalink_manager_permastructs;
215 update_option('permalink-manager-permastructs', $new_options);
216 }
217
218 // Adjust options structure
219 if(!empty($permalink_manager_options['miscellaneous'])) {
220 // Get the options direclty from database
221 $permalink_manager_unfiltered_options = get_option('permalink-manager', array('general' => array(), 'miscellaneous' => array(), 'licence'));
222
223 // Combine general & general
224 $permalink_manager_unfiltered_options['general'] = array_merge($permalink_manager_unfiltered_options['general'], $permalink_manager_unfiltered_options['miscellaneous']);
225
226 // Move licence key to different section
227 $permalink_manager_unfiltered_options['licence']['licence_key'] = (!empty($permalink_manager_unfiltered_options['miscellaneous']['license_key'])) ? $permalink_manager_unfiltered_options['miscellaneous']['license_key'] : "";
228
229 // Remove redundant keys
230 unset($permalink_manager_unfiltered_options['general']['license_key']);
231 unset($permalink_manager_unfiltered_options['miscellaneous']);
232 unset($permalink_manager_unfiltered_options['permalink_manager_options']);
233 unset($permalink_manager_unfiltered_options['_wp_http_referer']);
234
235 // Save the settings in database
236 update_option('permalink-manager', $permalink_manager_unfiltered_options);
237 }
238 }
239
240 }
241
242 /**
243 * Begins execution of the plugin.
244 */
245 function run_permalink_manager() {
246 $Permalink_Manager_Class = new Permalink_Manager_Class();
247 }
248 run_permalink_manager();
249