Uname: Linux webm005.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: 6036 (villadal)
Group: 100 (users)
Disabled functions: NONE
Safe mode: On[ PHPinfo ]
//home/villadal/www/wp-content/plugins/duplicate-post/src/admin      ( Reset | Go to )
File Name: options-page.php
Edit
<?php

namespace Yoast\WP\Duplicate_Post\Admin;

use 
Yoast\WP\Duplicate_Post\UI\Asset_Manager;
use 
Yoast\WP\Duplicate_Post\Utils;

/**
 * Class Options_Page.
 */
class Options_Page {

    
/**
     * The Options instance.
     *
     * @var Options
     */
    
protected $options;

    
/**
     * The Options_Form_Generator instance.
     *
     * @var Options_Form_Generator
     */
    
protected $generator;

    
/**
     * Holds the asset manager.
     *
     * @var Asset_Manager
     */
    
protected $asset_manager;

    
/**
     * Options_Page constructor.
     *
     * @param Options                $options       The Options class instance.
     * @param Options_Form_Generator $generator     The Options_Form_Generator class instance.
     * @param Asset_Manager          $asset_manager The Asset_Manager class instance.
     */
    
public function __constructOptions $optionsOptions_Form_Generator $generatorAsset_Manager $asset_manager ) {
        
$this->options       $options;
        
$this->generator     $generator;
        
$this->asset_manager $asset_manager;
    }

    
/**
     * Registers the necessary hooks.
     *
     * @return void
     */
    
public function register_hooks() {
        if ( \
is_admin() ) {
            \
add_action'admin_menu', [ $this'register_menu' ] );
            \
add_action'admin_init', [ $this->options'register_settings' ] );
        }
    }

    
/**
     * Enqueues the assets.
     *
     * @return void
     */
    
public function enqueue_assets() {
        
$this->asset_manager->enqueue_options_styles();
        
$this->asset_manager->enqueue_options_script();
    }

    
/**
     * Registers the menu item.
     *
     * @return void
     */
    
public function register_menu() {
        
$page_hook = \add_options_page(
            \
__'Duplicate Post Options''duplicate-post' ),
            \
__'Duplicate Post''duplicate-post' ),
            
'manage_options',
            
'duplicatepost',
            [ 
$this'generate_page' ]
        );

        \
add_action$page_hook, [ $this'enqueue_assets' ] );
    }

    
/**
     * Generates the inputs for the specified tab / fieldset.
     *
     * @codeCoverageIgnore As this is a simple wrapper for two functions that are already tested elsewhere, we can skip testing.
     *
     * @param string $tab      The tab to get the configuration for.
     * @param string $fieldset The fieldset to get the configuration for. Optional.
     *
     * @return string The HTML output for the controls present on the tab / fieldset.
     */
    
public function generate_tab_inputs$tab$fieldset '' ) {
        
$options $this->options->get_options_for_tab$tab$fieldset );

        return 
$this->generator->generate_options_input$options );
    }

    
/**
     * Generates an input for a single option.
     *
     * @codeCoverageIgnore As this is a simple wrapper for two functions that are already tested elsewhere, we can skip testing.
     *
     * @param string $option The option configuration to base the input on.
     *
     * @return string The input HTML.
     */
    
public function generate_input$option ) {
        return 
$this->generator->generate_options_input$this->options->get_option$option ) );
    }

    
/**
     * Registers the proper capabilities.
     *
     * @return void
     */
    
public function register_capabilities() {
        if ( ! \
current_user_can'promote_users' ) || ! $this->settings_updated() ) {
            return;
        }

        
$roles $this->get_duplicate_post_roles();

        foreach ( 
Utils::get_roles() as $name => $display_name ) {
            
$role = \get_role$name );

            if ( ! 
$role->has_cap'copy_posts' ) && \in_array$name$rolestrue ) ) {
                
/* If the role doesn't have the capability and it was selected, add it. */
                
$role->add_cap'copy_posts' );
            }

            if ( 
$role->has_cap'copy_posts' ) && ! \in_array$name$rolestrue ) ) {
                
/* If the role has the capability and it wasn't selected, remove it. */
                
$role->remove_cap'copy_posts' );
            }
        }
    }

    
/**
     * Generates the options page.
     *
     * @codeCoverageIgnore
     *
     * @return void
     */
    
public function generate_page() {
        
$this->register_capabilities();

        require_once \
DUPLICATE_POST_PATH 'src/admin/views/options.php';
    }

    
/**
     * Checks whether settings have been updated.
     *
     * @return bool Whether or not the settings have been updated.
     */
    
protected function settings_updated() {
        return isset( 
$_GET['settings-updated'] ) && $_GET['settings-updated'] === 'true';
    }

    
/**
     * Gets the registered custom roles.
     *
     * @return array The roles. Returns an empty array if there are none.
     */
    
protected function get_duplicate_post_roles() {
        
$roles = \get_option'duplicate_post_roles' );

        if ( empty( 
$roles ) ) {
            
$roles = [];
        }

        return 
$roles;
    }
}

All system for education purposes only. For more tools: Telegram @jackleet

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL