BIHomeWP/wp-content/plugins/wordpress-seo/admin/config-ui/class-configuration-structure.php
2020-02-13 10:39:37 +07:00

118 lines
3.1 KiB
PHP

<?php
/**
* WPSEO plugin file.
*
* @package WPSEO\Admin\ConfigurationUI
*/
/**
* Class WPSEO_Configuration_Structure
*/
class WPSEO_Configuration_Structure {
/**
* Registered steps.
*
* @var array
*/
protected $steps = [];
/**
* List of fields for each configuration step.
*
* This list does not include the fields for the 'postTypeVisibility'
* step as that list will be generated on the fly.
*
* @var array
*/
private $fields = [
'environment_type' => [ 'environment_type' ],
'siteType' => [ 'siteType' ],
'publishingEntity' => [
'publishingEntity',
'publishingEntityType',
'publishingEntityCompanyInfo',
'publishingEntityCompanyName',
'publishingEntityCompanyLogo',
'publishingEntityPersonId',
'profileUrlFacebook',
'profileUrlTwitter',
'profileUrlInstagram',
'profileUrlLinkedIn',
'profileUrlMySpace',
'profileUrlPinterest',
'profileUrlYouTube',
'profileUrlWikipedia',
],
'multipleAuthors' => [ 'multipleAuthors' ],
'titleTemplate' => [
'titleIntro',
'siteName',
'separator',
],
'newsletter' => [
'mailchimpSignup',
'suggestions',
],
'success' => [ 'successMessage' ],
];
/**
* WPSEO_Configuration_Structure constructor.
*/
public function initialize() {
$this->add_step( 'environment-type', __( 'Environment', 'wordpress-seo' ), $this->fields['environment_type'] );
$this->add_step( 'site-type', __( 'Site type', 'wordpress-seo' ), $this->fields['siteType'] );
$this->add_step(
'publishing-entity',
__( 'Organization or person', 'wordpress-seo' ),
$this->fields['publishingEntity']
);
$fields = [ 'postTypeVisibility' ];
$post_type_factory = new WPSEO_Config_Factory_Post_Type();
foreach ( $post_type_factory->get_fields() as $post_type_field ) {
$fields[] = $post_type_field->get_identifier();
}
$this->add_step( 'post-type-visibility', __( 'Search engine visibility', 'wordpress-seo' ), $fields );
$this->add_step(
'multiple-authors',
__( 'Multiple authors', 'wordpress-seo' ),
$this->fields['multipleAuthors']
);
$this->add_step( 'title-template', __( 'Title settings', 'wordpress-seo' ), $this->fields['titleTemplate'] );
$this->add_step( 'newsletter', __( 'Continue learning', 'wordpress-seo' ), $this->fields['newsletter'], true, true );
$this->add_step( 'success', __( 'Success!', 'wordpress-seo' ), $this->fields['success'], true, true );
}
/**
* Add a step to the structure
*
* @param string $identifier Identifier for this step.
* @param string $title Title to display for this step.
* @param array $fields Fields to use on the step.
* @param bool $navigation Show navigation buttons.
* @param bool $full_width Wheter the step content is full width or not.
*/
protected function add_step( $identifier, $title, $fields, $navigation = true, $full_width = false ) {
$this->steps[ $identifier ] = [
'title' => $title,
'fields' => $fields,
'hideNavigation' => ! (bool) $navigation,
'fullWidth' => $full_width,
];
}
/**
* Retrieve the registered steps.
*
* @return array
*/
public function retrieve() {
return $this->steps;
}
}