File manager - Edit - /home/antilam/web/antilam.ru/public_html/wp-content/plugins/cyr2lat/src/php/Settings/Converter.php
Back
<?php /** * Converter class file. * * @package cyr-to-lat */ namespace CyrToLat\Settings; use CyrToLat\Settings\Abstracts\SettingsBase; /** * Class Converter * * Settings page "Converter". */ class Converter extends PluginSettingsBase { /** * Admin script handle. */ public const HANDLE = 'cyr-to-lat-converter'; /** * Converter nonce. */ public const NONCE = 'cyr-to-lat-converter-nonce'; /** * Post types and statuses section id. */ private const SECTION_TYPES_STATUSES = 'types-statuses'; /** * Get page title. * * @return string */ protected function page_title(): string { return __( 'Converter', 'cyr2lat' ); } /** * Get section title. * * @return string */ protected function section_title(): string { return 'converter'; } /** * Init class hooks. */ protected function init_hooks(): void { parent::init_hooks(); add_action( 'in_admin_header', [ $this, 'in_admin_header' ] ); add_action( 'init', [ $this, 'delayed_init_settings' ], PHP_INT_MAX ); } /** * Empty method. Do stuff in the delayed_init_form_fields. */ public function init_form_fields(): void { $this->form_fields = []; $this->form_fields['background_post_statuses'] = [ 'label' => __( 'Post Statuses', 'cyr2lat' ), 'section' => self::SECTION_TYPES_STATUSES, 'type' => 'checkbox', 'placeholder' => '', 'helper' => __( 'Post statuses included in the conversion.', 'cyr2lat' ), 'supplemental' => '', 'options' => [], ]; $post_status_objects = get_post_stati( [ 'internal' => false ], 'objects' ); $post_stati = array_keys( $post_status_objects ); $default_post_statuses = array_intersect( $post_stati, [ 'publish', 'future', 'private' ] ); $array_flip = array_flip( $default_post_statuses ); $post_status_objects = array_intersect_key( $post_status_objects, $array_flip ) + array_diff_key( $post_status_objects, $array_flip ); foreach ( $post_status_objects as $post_status => $post_status_object ) { $this->form_fields['background_post_statuses']['options'][ $post_status ] = // phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText __( $post_status_object->label, 'cyr2lat' ) . ' (' . $post_status . ')'; } $this->form_fields['background_post_statuses']['default'] = $default_post_statuses; } /** * Get convertible post type objects. * * @return array */ private static function get_get_convertible_post_type_objects(): array { return get_post_types( [ 'public' => true, 'name' => 'nav_menu_item', ], 'objects', 'or' ); } /** * Get convertible post types. * * @return array */ public static function get_convertible_post_types(): array { return array_keys( self::get_get_convertible_post_type_objects() ); } /** * Init form fields. */ public function delayed_init_form_fields(): void { $this->form_fields['background_post_types'] = [ 'label' => __( 'Post Types', 'cyr2lat' ), 'section' => self::SECTION_TYPES_STATUSES, 'type' => 'checkbox', 'placeholder' => '', 'helper' => __( 'Post types included in the conversion.', 'cyr2lat' ), 'supplemental' => '', 'options' => [], ]; $post_type_objects = self::get_get_convertible_post_type_objects(); $post_types = array_keys( $post_type_objects ); $default_post_types = array_intersect( $post_types, [ 'post', 'page', 'nav_menu_item' ] ); $array_flip = array_flip( $default_post_types ); $post_type_objects = array_intersect_key( $post_type_objects, $array_flip ) + array_diff_key( $post_type_objects, $array_flip ); $filtered_post_types = array_filter( (array) apply_filters( 'ctl_post_types', $post_types ) ); foreach ( $post_type_objects as $post_type => $post_type_object ) { $this->form_fields['background_post_types']['options'][ $post_type ] = // phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText __( $post_type_object->label, 'cyr2lat' ) . ' (' . $post_type . ')'; } $this->form_fields['background_post_types']['default'] = $default_post_types; $this->form_fields['background_post_types']['disabled'] = array_diff( $default_post_types, $filtered_post_types ); } /** * Init form fields and settings late, on 'init' hook with PHP_INT_MAX priority, * to allow all plugins to register post types. * * @return void */ public function delayed_init_settings(): void { $this->delayed_init_form_fields(); $this->init_settings(); } /** * Show settings page. */ public function settings_page(): void { parent::settings_page(); ?> <form id="ctl-convert-existing-slugs" action="" method="post"> <input type="hidden" name="ctl-convert"/> <?php wp_nonce_field( self::NONCE ); submit_button( __( 'Convert Existing Slugs', 'cyr2lat' ), 'secondary', 'ctl-convert-button' ); ?> </form> <?php } /** * Section callback. * * @param array $arguments Section arguments. */ public function section_callback( array $arguments ): void { if ( self::SECTION_TYPES_STATUSES === $arguments['id'] ) { ?> <h2 class="title"> <?php esc_html_e( 'Existing Slugs Conversion Settings', 'cyr2lat' ); ?> </h2> <p> <?php echo wp_kses_post( __( 'Existing <strong>product attribute</strong> slugs will <strong>NOT</strong> be converted.', 'cyr2lat' ) ); ?> </p> <?php $this->print_section_header( $arguments['id'], __( 'Post Types and Statuses', 'cyr2lat' ) ); } } /** * Print section header. * * @param string $id Section id. * @param string $title Section title. * * @return void */ private function print_section_header( string $id, string $title ): void { ?> <h3 class="ctl-section-<?php echo esc_attr( $id ); ?>"><?php echo esc_html( $title ); ?></h3> <?php } /** * Output convert confirmation popup. * * @return void */ public function in_admin_header(): void { if ( ! $this->is_options_screen() ) { return; } ?> <div id="ctl-confirm-popup"> <div id="ctl-confirm-content"> <p> <strong><?php esc_html_e( 'Important:', 'cyr2lat' ); ?></strong> <?php esc_html_e( 'This operation is irreversible. Please make sure that you have made a backup copy of your database.', 'cyr2lat' ); ?> </p> <p> <?php esc_html_e( 'Also, you have to make a copy of your media files if the attachment post type is selected for conversion.', 'cyr2lat' ); ?> </p> <p> <?php esc_html_e( 'Upon conversion of attachments, please regenerate thumbnails.', 'cyr2lat' ); ?> </p> <p><?php esc_html_e( 'Are you sure to continue?', 'cyr2lat' ); ?></p> <div id="ctl-confirm-buttons"> <input type="button" id="ctl-confirm-ok" class="button button-primary" value="<?php esc_html_e( 'OK', 'cyr2lat' ); ?>"> <button type="button" id="ctl-confirm-cancel" class="button button-secondary"> <?php esc_html_e( 'Cancel', 'cyr2lat' ); ?> </button> </div> </div> </div> <?php } /** * Enqueue class scripts. */ public function admin_enqueue_scripts(): void { wp_enqueue_script( self::HANDLE, constant( 'CYR_TO_LAT_URL' ) . '/assets/js/apps/converter.js', [], constant( 'CYR_TO_LAT_VERSION' ), true ); wp_enqueue_style( self::HANDLE, constant( 'CYR_TO_LAT_URL' ) . "/assets/css/converter$this->min_prefix.css", [ SettingsBase::HANDLE ], constant( 'CYR_TO_LAT_VERSION' ) ); } }
| ver. 1.4 |
Github
|
.
| PHP 8.4.22 | Generation time: 0.12 |
proxy
|
phpinfo
|
Settings