Files
hub-insurance/wp-content/plugins/permalink-manager-pro/includes/views/permalink-manager-pro-addons.php
T
2026-07-02 15:54:39 -06:00

301 lines
14 KiB
PHP

<?php
if ( ! defined( 'ABSPATH' ) ) exit;
/**
* Display the page where the slugs could be regenerated or replaced
*/
class Permalink_Manager_Pro_Addons {
public function __construct() {
add_action( 'init', array( $this, 'init' ), 9 );
}
/**
* Register hooks used to change the Permalink Manager UI
*/
public function init() {
add_filter( 'permalink_manager_sections', array( $this, 'add_admin_section' ), 5 );
// Stop Words
add_action( 'admin_init', array( $this, 'save_stop_words' ), 9 );
add_filter( 'permalink_manager_tools_fields', array( $this, 'filter_tools_fields' ), 9, 2 );
add_filter( 'permalink_manager_settings_fields', array( $this, 'filter_settings_fields' ), 9 );
}
/**
* Activate the fields disabled in free version
*
* @param array $fields
* @param string $subsection
*
* @return array
*/
public function filter_tools_fields( $fields, $subsection ) {
unset( $fields['content_type']['disabled'] );
unset( $fields['content_type']['pro'] );
unset( $fields['taxonomies']['pro'] );
unset( $fields['ids']['disabled'] );
unset( $fields['ids']['pro'] );
return $fields;
}
/**
* Add support for taxonomies in Bulk URI Editor & allow import from "Custom Permalinks" plugin
*
* @param array $admin_sections
*
* @return array
*/
public function add_admin_section( $admin_sections ) {
// Add "Stop words" subsection for "Tools"
$admin_sections['tools']['subsections']['stop_words']['function'] = array( 'class' => 'Permalink_Manager_Pro_Addons', 'method' => 'stop_words_output' );
// Display Permalinks for all selected taxonomies
if ( ! empty( $admin_sections['uri_editor']['subsections'] ) ) {
foreach ( $admin_sections['uri_editor']['subsections'] as &$subsection ) {
if ( isset( $subsection['pro'] ) ) {
$subsection['function'] = array( 'class' => 'Permalink_Manager_Tax_Uri_Editor_Table', 'method' => 'display_admin_section' );
unset( $subsection['html'] );
}
}
}
// Add "Support" section
$admin_sections['support'] = array(
'name' => __( 'Support', 'permalink-manager' ),
'function' => array( 'class' => 'Permalink_Manager_Pro_Addons', 'method' => 'support_output' )
);
// Import support
$admin_sections['tools']['subsections']['import']['function'] = array( 'class' => 'Permalink_Manager_Pro_Addons', 'method' => 'import_output' );
return $admin_sections;
}
/**
* Filter the fields displayed in the "Settings" tab
*
* @param array $fields
*
* @return array
*/
public function filter_settings_fields( $fields ) {
// Network license key (multisite)
$license_key = Permalink_Manager_Pro_License::get_license_key();
$expiration_info = Permalink_Manager_Pro_License::get_expiration_date();
// 1. license key
$fields['licence'] = array(
'section_name' => __( 'License', 'permalink-manager' ),
'container' => 'row',
'fields' => array(
'licence_key' => array(
'type' => 'text',
'value' => $license_key,
'label' => __( 'License key', 'permalink-manager' ),
'after_description' => sprintf( '<p class="field-description description licence-info">%1$s</p><p class="field-description description"><a href="#" id="pm_get_exp_date" class="mute">%2$s</a> | <a href="%3$s" target="_blank" class="mute">%4$s</a></p>', $expiration_info, __( 'Reload the expiration date', 'permalink-manager' ), Permalink_Manager_Pro_License::get_license_info_link( $license_key ), __( 'Get license information', 'permalink-manager' ) )
)
)
);
if ( defined( 'PMP_LICENCE_KEY' ) || defined( 'PMP_LICENSE_KEY' ) ) {
$fields['licence']['fields']['licence_key']['disabled'] = true;
$fields['licence']['fields']['licence_key']['type'] = 'password';
}
// 2. Unblock some fields
unset( $fields['redirect']['fields']['setup_redirects']['pro'] );
unset( $fields['redirect']['fields']['setup_redirects']['disabled'] );
unset( $fields['redirect']['fields']['extra_redirects']['pro'] );
unset( $fields['redirect']['fields']['extra_redirects']['disabled'] );
unset( $fields['exclusion']['fields']['exclude_term_ids']['pro'] );
unset( $fields['exclusion']['fields']['exclude_term_ids']['disabled'] );
return $fields;
}
/**
* Add "Stop words" subsection
*
* @return string
*/
public function stop_words_output() {
global $permalink_manager_options;
// Fix the escaped quotes
$words_list = ( ! empty( $permalink_manager_options['stop-words']['stop-words-list'] ) ) ? stripslashes( $permalink_manager_options['stop-words']['stop-words-list'] ) : "";
// Get stop-words languages
$languages = array_merge( array( '' => __( '-- Use predefined words list --', 'permalink-manager' ) ), Permalink_Manager_Pro_Functions::load_stop_words_languages() );
$buttons = "<table class=\"stop-words-buttons\"><tr>";
$buttons .= sprintf( "<td><a href=\"#\" class=\"clear_all_words button button-small\">%s</a></td>", __( "Remove all words", "permalink-manager" ) );
$buttons .= sprintf( "<td>%s<td>", Permalink_Manager_UI_Elements::generate_option_field( "load_stop_words", array( "type" => "select", "input_class" => "widefat small-select load_stop_words", "choices" => $languages ) ) );
$buttons .= sprintf( "<td>%s</td>", get_submit_button( __( 'Add the words from the list', 'permalink-manager' ), 'button-small button-primary', 'load_stop_words_button', false ) );
$buttons .= "</tr></table>";
$fields = apply_filters( 'permalink_manager_tools_fields', array(
'stop-words' => array(
'container' => 'row',
'fields' => array(
'stop-words-enable' => array(
'label' => __( 'Enable "stop words"', 'permalink-manager' ),
'type' => 'single_checkbox',
'container' => 'row',
'input_class' => 'enable_stop_words'
),
'stop-words-list' => array(
'label' => __( '"Stop words" list', 'permalink-manager' ),
'type' => 'textarea',
'container' => 'row',
'value' => $words_list,
'description' => __( 'Type comma to separate the words.', 'permalink-manager' ),
'input_class' => 'widefat stop_words',
'after_description' => $buttons
)
)
)
), 'stop_words' );
$sidebar = '<h3>' . __( 'Instructions', 'permalink-manager' ) . '</h3>';
$sidebar .= wpautop( __( 'If enabled, all selected "stop words" will be automatically removed from default URIs.', 'permalink-manager' ) );
$sidebar .= wpautop( __( 'Each of the words can be removed and any new words can be added to the list. You can also use a predefined list (available in 21 languages).', 'permalink-manager' ) );
return Permalink_Manager_UI_Elements::get_the_form( $fields, '', array( 'text' => __( 'Save', 'permalink-manager' ), 'class' => 'primary margin-top' ), $sidebar, array( 'action' => 'permalink-manager', 'name' => 'save_stop_words' ), true );
}
/**
* Saves the user-defined stop words list
*/
public function save_stop_words() {
if ( isset( $_POST['stop-words'] ) && wp_verify_nonce( $_POST['save_stop_words'], 'permalink-manager' ) ) {
Permalink_Manager_Actions::save_settings( 'stop-words', $_POST['stop-words'] );
}
}
/**
* Display "Import" subsection (Custom Permalinks)
*
* @return string
*/
public function import_output() {
// Count custom permalinks URIs
$count_custom_permalinks = count( Permalink_Manager_Third_Parties::custom_permalinks_uris() );
$fields = apply_filters( 'permalink_manager_tools_fields', array(
'disable_custom_permalinks' => array(
'label' => __( 'Custom Permalinks', 'permalink-manager' ),
'checkbox_label' => __( 'Deactivate after import', 'permalink-manager' ),
'type' => 'single_checkbox',
'container' => 'row',
'description' => __( 'If selected, "Custom Permalinks" plugin will be deactivated after its custom URIs are imported.', 'permalink-manager' ),
'input_class' => ''
)
), 'custom_permalinks_import' );
$sidebar = '<h3>' . __( 'Instructions', 'permalink-manager' ) . '</h3>';
$sidebar .= wpautop( __( 'Please note that "Custom Permalinks" (if activated) may break the behavior of this plugin.', 'permalink-manager' ) );
$sidebar .= wpautop( __( 'Therefore, it is recommended to disable "Custom Permalink" and import old permalinks before using Permalink Manager Pro.', 'permalink-manager' ) );
// Show some additional info data
if ( $count_custom_permalinks > 0 ) {
$button = array(
/* translators: %s: Custom permalinks to import (count) */
'text' => sprintf( __( 'Import %d URIs', 'permalink-manager' ), $count_custom_permalinks ),
'class' => 'primary margin-top'
);
} else {
$button = array(
'text' => __( 'No custom URIs to import', 'permalink-manager' ),
'class' => 'secondary margin-top',
'attributes' => array( 'disabled' => 'disabled' )
);
}
return Permalink_Manager_UI_Elements::get_the_form( $fields, 'columns-3', $button, $sidebar, array( 'action' => 'permalink-manager', 'name' => 'import' ), true );
}
/**
* Add "Support" section
*
* @return string
*/
public function support_output() {
$output = sprintf( "<h3>%s</h3>", __( "Technical support", "permalink-manager" ) );
/* translators: %s: Support section heading */
$output .= wpautop( sprintf( __( 'To find the answers on frequently asked questions and information about how to deal with the most common issues please go to the <strong>Knowledge Base</strong> using <a target="_blank" href="%s">this link</a>.', 'permalink-manager' ), 'https://permalinkmanager.pro/docs/' ) );
$output .= wpautop( __( 'If you still did not find the answer to your question, please send us your question or a detailed description of your problem/issue to <a href="mailto:support@permalinkmanager.pro">support@permalinkmanager.pro</a>.', 'permalink-manager' ) );
$output .= wpautop( __( 'To reduce the response time, please attach your license key and if possible also: URL address of your website and screenshots explaining the issue.', 'permalink-manager' ) );
/* translators: %s: Support section heading */
$output .= sprintf( "<h3>%s</h3>", __( "Suggestions/feedback", "permalink-manager" ) );
$output .= wpautop( __( 'If you would like to suggest a new functionality or leave us feedback, we are open to all new ideas and would be grateful for all your comments!', 'permalink-manager' ) );
$output .= wpautop( __( ' Please send your remarks to <a href="mailto:contact@permalinkmanager.pro">contact@permalinkmanager.pro</a>.', 'permalink-manager' ) );
return $output;
}
/**
* Return the HTML output of "Custom Redirects" panel in URI Editor
*
* @return string
*/
public static function display_redirect_form( $element_id ) {
global $permalink_manager_redirects, $permalink_manager_options, $permalink_manager_external_redirects;
// Do not trigger if "Extra redirects" option is turned off
if ( empty( $permalink_manager_options['general']['redirect'] ) || empty( $permalink_manager_options['general']['extra_redirects'] ) ) {
return __( 'Turn on "<strong>Extra redirects (aliases)</strong>" in Permalink Manager settings to enable this feature.', 'permalink-manager' );
}
// 1. Extra redirects
$html = "<div class=\"single-section\">";
$html .= sprintf( "<p><label for=\"auto_auri\" class=\"strong\">%s %s</label></p>", __( "Extra redirects (aliases)", "permalink-manager" ), Permalink_Manager_UI_Elements::help_tooltip( __( "All URIs specified below will redirect the visitors to the custom URI defined above in \"Current URI\" field.", "permalink-manager" ) ) );
$html .= "<table>";
// 1A. Sample row
$html .= sprintf( "<tr class=\"sample-row\"><td>%s</td><td>%s</td></tr>", Permalink_Manager_UI_Elements::generate_option_field( "permalink-manager-redirects", array( "input_class" => "widefat", "value" => "", 'extra_atts' => "data-index=\"\"", "placeholder" => __( 'sample/custom-uri', 'permalink-manager' ) ) ), "<a href=\"#\" class=\"remove-redirect\"><span class=\"dashicons dashicons-no\"></span></a>" );
// 1B. Rows with redirects
if ( ! empty( $permalink_manager_redirects[ $element_id ] ) && is_array( $permalink_manager_redirects[ $element_id ] ) ) {
foreach ( $permalink_manager_redirects[ $element_id ] as $index => $redirect ) {
$html .= sprintf( "<tr><td>%s</td><td>%s</td></tr>", Permalink_Manager_UI_Elements::generate_option_field( "permalink-manager-redirects[{$index}]", array( "input_class" => "widefat", "value" => $redirect, 'extra_atts' => "data-index=\"{$index}\"" ) ), "<a href=\"#\" class=\"remove-redirect\"><span class=\"dashicons dashicons-no\"></span></a>" );
}
}
$html .= "</table>";
// 1C. Add new redirect button
$html .= sprintf( "<button type=\"button\" class=\"button button-small hide-if-no-js\" id=\"permalink-manager-new-redirect\">%s</button>", __( "Add new redirect", "permalink-manager" ) );
// 1D. Description
$html .= "<div class=\"redirects-panel-description\">";
/* translators: %s: Homepage URL */
$html .= sprintf( wpautop( __( "<strong>Please use URIs only!</strong><br />For instance, to set-up a redirect for <code>%s/old-uri</code> please use <code>old-uri</code>.", "permalink-manager" ) ), home_url() );
$html .= "</div>";
$html .= "</div>";
// 2. Extra redirects
$html .= "<div class=\"single-section\">";
$html .= sprintf( "<p><label for=\"auto_auri\" class=\"strong\">%s %s</label></p>", __( "Redirect this page to external URL", "permalink-manager" ), Permalink_Manager_UI_Elements::help_tooltip( __( "If not empty, the visitors trying to access this page will be redirected to the URL specified below.", "permalink-manager" ) ) );
$external_redirect_url = ( ! empty( $permalink_manager_external_redirects[ $element_id ] ) ) ? esc_url( $permalink_manager_external_redirects[ $element_id ] ) : "";
$html .= Permalink_Manager_UI_Elements::generate_option_field( "permalink-manager-external-redirect", array( "input_class" => "widefat", "value" => urldecode( $external_redirect_url ), "placeholder" => __( "http://another-website.com/final-target-url", "permalink-manager" ) ) );
// 2B. Description
$html .= "<div class=\"redirects-panel-description\">";
$html .= wpautop( __( "<strong>Please use full URLs!</strong><br />For instance, <code>http://another-website.com/final-target-url</code>.", "permalink-manager" ) );
$html .= "</div>";
$html .= "</div>";
return $html;
}
}