| Current Path : /home/x/b/o/xbodynamge/namtation/wp-content/ |
| Current File : /home/x/b/o/xbodynamge/namtation/wp-content/SeoPress.tar |
Titles.php 0000666 00000026226 15114444066 0006542 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Migrates the Titles Settings.
*
* @since 4.1.4
*/
class Titles {
/**
* List of options.
*
* @since 4.2.7
*
* @var array
*/
private $options = [];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function __construct() {
$this->options = get_option( 'seopress_titles_option_name' );
if ( empty( $this->options ) ) {
return;
}
if (
! empty( $this->options['seopress_titles_archives_author_title'] ) ||
! empty( $this->options['seopress_titles_archives_author_desc'] ) ||
! empty( $this->options['seopress_titles_archives_author_noindex'] )
) {
aioseo()->options->searchAppearance->archives->author->show = true;
}
if (
! empty( $this->options['seopress_titles_archives_date_title'] ) ||
! empty( $this->options['seopress_titles_archives_date_desc'] ) ||
! empty( $this->options['seopress_titles_archives_date_noindex'] )
) {
aioseo()->options->searchAppearance->archives->date->show = true;
}
if (
! empty( $this->options['seopress_titles_archives_search_title'] ) ||
! empty( $this->options['seopress_titles_archives_search_desc'] )
) {
aioseo()->options->searchAppearance->archives->search->show = true;
}
$this->migrateTitleFormats();
$this->migrateDescriptionFormats();
$this->migrateNoIndexFormats();
$this->migratePostTypeSettings();
$this->migrateTaxonomiesSettings();
$this->migrateArchiveSettings();
$this->migrateAdvancedSettings();
$settings = [
'seopress_titles_sep' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'global', 'separator' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options, true );
}
/**
* Migrates the title formats.
*
* @since 4.1.4
*
* @return void
*/
private function migrateTitleFormats() {
$settings = [
'seopress_titles_home_site_title' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'global', 'siteTitle' ] ],
'seopress_titles_archives_author_title' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'archives', 'author', 'title' ] ],
'seopress_titles_archives_date_title' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'archives', 'date', 'title' ] ],
'seopress_titles_archives_search_title' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'archives', 'search', 'title' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options, true );
}
/**
* Migrates the description formats.
*
* @since 4.1.4
*
* @return void
*/
private function migrateDescriptionFormats() {
$settings = [
'seopress_titles_home_site_desc' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'global', 'metaDescription' ] ],
'seopress_titles_archives_author_desc' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'archives', 'author', 'metaDescription' ] ],
'seopress_titles_archives_date_desc' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'archives', 'date', 'metaDescription' ] ],
'seopress_titles_archives_search_desc' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'archives', 'search', 'metaDescription' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options, true );
}
/**
* Migrates the NoIndex formats.
*
* @since 4.1.4
*
* @return void
*/
private function migrateNoIndexFormats() {
$settings = [
'seopress_titles_archives_author_noindex' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'archives', 'author', 'show' ] ],
'seopress_titles_archives_date_noindex' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'archives', 'date', 'show' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
/**
* Migrates the post type settings.
*
* @since 4.1.4
*
* @return void
*/
private function migratePostTypeSettings() {
$titles = $this->options['seopress_titles_single_titles'];
if ( empty( $titles ) ) {
return;
}
foreach ( $titles as $postType => $options ) {
if ( ! aioseo()->dynamicOptions->searchAppearance->postTypes->has( $postType ) ) {
continue;
}
if ( ! empty( $options['title'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->title =
aioseo()->helpers->sanitizeOption( aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $options['title'] ) );
}
if ( ! empty( $options['description'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->metaDescription =
aioseo()->helpers->sanitizeOption( aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $options['description'] ) );
}
if ( ! empty( $options['enable'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->advanced->showMetaBox = false;
}
if ( ! empty( $options['noindex'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->show = false;
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->advanced->robotsMeta->default = false;
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->advanced->robotsMeta->noindex = true;
}
if ( ! empty( $options['nofollow'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->show = false;
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->advanced->robotsMeta->default = false;
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->advanced->robotsMeta->nofollow = true;
}
if ( ! empty( $options['date'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->advanced->showDateInGooglePreview = false;
}
if ( ! empty( $options['thumb_gcs'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->$postType->advanced->showPostThumbnailInSearch = true;
}
}
}
/**
* Migrates the taxonomies settings.
*
* @since 4.1.4
*
* @return void
*/
private function migrateTaxonomiesSettings() {
$titles = ! empty( $this->options['seopress_titles_tax_titles'] ) ? $this->options['seopress_titles_tax_titles'] : '';
if ( empty( $titles ) ) {
return;
}
foreach ( $titles as $taxonomy => $options ) {
if ( ! aioseo()->dynamicOptions->searchAppearance->taxonomies->has( $taxonomy ) ) {
continue;
}
if ( ! empty( $options['title'] ) ) {
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->title =
aioseo()->helpers->sanitizeOption( aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $options['title'] ) );
}
if ( ! empty( $options['description'] ) ) {
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->metaDescription =
aioseo()->helpers->sanitizeOption( aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $options['description'] ) );
}
if ( ! empty( $options['enable'] ) ) {
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->advanced->showMetaBox = false;
}
if ( ! empty( $options['noindex'] ) ) {
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->show = false;
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->advanced->robotsMeta->default = false;
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->advanced->robotsMeta->noindex = true;
}
if ( ! empty( $options['nofollow'] ) ) {
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->show = false;
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->advanced->robotsMeta->default = false;
aioseo()->dynamicOptions->searchAppearance->taxonomies->$taxonomy->advanced->robotsMeta->nofollow = true;
}
}
}
/**
* Migrates the archives settings.
*
* @since 4.1.4
*
* @return void
*/
private function migrateArchiveSettings() {
$titles = $this->options['seopress_titles_archive_titles'];
if ( empty( $titles ) ) {
return;
}
foreach ( $titles as $archive => $options ) {
if ( ! aioseo()->dynamicOptions->searchAppearance->archives->has( $archive ) ) {
continue;
}
if ( ! empty( $options['title'] ) ) {
aioseo()->dynamicOptions->searchAppearance->archives->$archive->title =
aioseo()->helpers->sanitizeOption( aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $options['title'] ) );
}
if ( ! empty( $options['description'] ) ) {
aioseo()->dynamicOptions->searchAppearance->archives->$archive->metaDescription =
aioseo()->helpers->sanitizeOption( aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $options['description'] ) );
}
if ( ! empty( $options['noindex'] ) ) {
aioseo()->dynamicOptions->searchAppearance->archives->$archive->show = false;
aioseo()->dynamicOptions->searchAppearance->archives->$archive->advanced->robotsMeta->default = false;
aioseo()->dynamicOptions->searchAppearance->archives->$archive->advanced->robotsMeta->noindex = true;
}
if ( ! empty( $options['nofollow'] ) ) {
aioseo()->dynamicOptions->searchAppearance->archives->$archive->show = false;
aioseo()->dynamicOptions->searchAppearance->archives->$archive->advanced->robotsMeta->default = false;
aioseo()->dynamicOptions->searchAppearance->archives->$archive->advanced->robotsMeta->nofollow = true;
}
}
}
/**
* Migrates the advanced settings.
*
* @since 4.1.4
*
* @return void
*/
private function migrateAdvancedSettings() {
if (
! empty( $this->options['seopress_titles_noindex'] ) || ! empty( $this->options['seopress_titles_nofollow'] ) || ! empty( $this->options['seopress_titles_noodp'] ) ||
! empty( $this->options['seopress_titles_noimageindex'] ) || ! empty( $this->options['seopress_titles_noarchive'] ) ||
! empty( $this->options['seopress_titles_nosnippet'] ) || ! empty( $this->options['seopress_titles_paged_noindex'] )
) {
aioseo()->options->searchAppearance->advanced->globalRobotsMeta->default = false;
}
$settings = [
'seopress_titles_noindex' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'advanced', 'globalRobotsMeta', 'noindex' ] ],
'seopress_titles_nofollow' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'advanced', 'globalRobotsMeta', 'nofollow' ] ],
'seopress_titles_noodp' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'advanced', 'globalRobotsMeta', 'noodp' ] ],
'seopress_titles_noimageindex' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'advanced', 'globalRobotsMeta', 'noimageindex' ] ],
'seopress_titles_noarchive' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'advanced', 'globalRobotsMeta', 'noarchive' ] ],
'seopress_titles_nosnippet' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'advanced', 'globalRobotsMeta', 'nosnippet' ] ],
'seopress_titles_paged_noindex' => [ 'type' => 'boolean', 'newOption' => [ 'searchAppearance', 'advanced', 'globalRobotsMeta', 'noindexPaginated' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
} PostMeta.php 0000666 00000015547 15114444066 0007036 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use AIOSEO\Plugin\Common\Models;
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Imports the post meta from SEOPress.
*
* @since 4.1.4
*/
class PostMeta {
/**
* The mapped meta
*
* @since 4.1.4
*
* @var array
*/
private $mappedMeta = [
'_seopress_analysis_target_kw' => '',
'_seopress_robots_archive' => 'robots_noarchive',
'_seopress_robots_canonical' => 'canonical_url',
'_seopress_robots_follow' => 'robots_nofollow',
'_seopress_robots_imageindex' => 'robots_noimageindex',
'_seopress_robots_index' => 'robots_noindex',
'_seopress_robots_odp' => 'robots_noodp',
'_seopress_robots_snippet' => 'robots_nosnippet',
'_seopress_social_twitter_desc' => 'twitter_description',
'_seopress_social_twitter_img' => 'twitter_image_custom_url',
'_seopress_social_twitter_title' => 'twitter_title',
'_seopress_social_fb_desc' => 'og_description',
'_seopress_social_fb_img' => 'og_image_custom_url',
'_seopress_social_fb_title' => 'og_title',
'_seopress_titles_desc' => 'description',
'_seopress_titles_title' => 'title',
'_seopress_robots_primary_cat' => 'primary_term'
];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function scheduleImport() {
if ( aioseo()->actionScheduler->scheduleSingle( aioseo()->importExport->seoPress->postActionName, 0 ) ) {
if ( ! aioseo()->core->cache->get( 'import_post_meta_seopress' ) ) {
aioseo()->core->cache->update( 'import_post_meta_seopress', time(), WEEK_IN_SECONDS );
}
}
}
/**
* Imports the post meta.
*
* @since 4.1.4
*
* @return void
*/
public function importPostMeta() {
$postsPerAction = apply_filters( 'aioseo_import_seopress_posts_per_action', 100 );
$publicPostTypes = implode( "', '", aioseo()->helpers->getPublicPostTypes( true ) );
$timeStarted = gmdate( 'Y-m-d H:i:s', aioseo()->core->cache->get( 'import_post_meta_seopress' ) );
$posts = aioseo()->core->db
->start( 'posts as p' )
->select( 'p.ID, p.post_type' )
->join( 'postmeta as pm', '`p`.`ID` = `pm`.`post_id`' )
->leftJoin( 'aioseo_posts as ap', '`p`.`ID` = `ap`.`post_id`' )
->whereRaw( "pm.meta_key LIKE '_seopress_%'" )
->whereRaw( "( p.post_type IN ( '$publicPostTypes' ) )" )
->whereRaw( "( ap.post_id IS NULL OR ap.updated < '$timeStarted' )" )
->groupBy( 'p.ID' )
->orderBy( 'p.ID DESC' )
->limit( $postsPerAction )
->run()
->result();
if ( ! $posts || ! count( $posts ) ) {
aioseo()->core->cache->delete( 'import_post_meta_seopress' );
return;
}
foreach ( $posts as $post ) {
$postMeta = aioseo()->core->db
->start( 'postmeta' . ' as pm' )
->select( 'pm.meta_key, pm.meta_value' )
->where( 'pm.post_id', $post->ID )
->whereRaw( "`pm`.`meta_key` LIKE '_seopress_%'" )
->run()
->result();
$meta = array_merge( [
'post_id' => (int) $post->ID,
], $this->getMetaData( $postMeta, $post->ID ) );
if ( ! $postMeta || ! count( $postMeta ) ) {
$aioseoPost = Models\Post::getPost( (int) $post->ID );
$aioseoPost->set( $meta );
$aioseoPost->save();
aioseo()->migration->meta->migrateAdditionalPostMeta( $post->ID );
continue;
}
$aioseoPost = Models\Post::getPost( (int) $post->ID );
$aioseoPost->set( $meta );
$aioseoPost->save();
aioseo()->migration->meta->migrateAdditionalPostMeta( $post->ID );
// Clear the Overview cache.
aioseo()->postSettings->clearPostTypeOverviewCache( $post->ID );
}
if ( count( $posts ) === $postsPerAction ) {
aioseo()->actionScheduler->scheduleSingle( aioseo()->importExport->seoPress->postActionName, 5, [], true );
} else {
aioseo()->core->cache->delete( 'import_post_meta_seopress' );
}
}
/**
* Get the meta data by post meta.
*
* @since 4.1.4
*
* @param object $postMeta The post meta from database.
* @return array The meta data.
*/
public function getMetaData( $postMeta, $postId ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
$meta = [
'robots_default' => true,
'robots_noarchive' => false,
'canonical_url' => '',
'robots_nofollow' => false,
'robots_noimageindex' => false,
'robots_noindex' => false,
'robots_noodp' => false,
'robots_nosnippet' => false,
'twitter_use_og' => aioseo()->options->social->twitter->general->useOgData,
'twitter_title' => '',
'twitter_description' => ''
];
foreach ( $postMeta as $record ) {
$name = $record->meta_key;
$value = $record->meta_value;
if ( ! in_array( $name, array_keys( $this->mappedMeta ), true ) ) {
continue;
}
switch ( $name ) {
case '_seopress_analysis_target_kw':
$keyphrases = array_map( 'trim', explode( ',', $value ) );
$keyphraseArray = [
'focus' => [ 'keyphrase' => aioseo()->helpers->sanitizeOption( $keyphrases[0] ) ],
'additional' => []
];
unset( $keyphrases[0] );
foreach ( $keyphrases as $keyphrase ) {
$keyphraseArray['additional'][] = [ 'keyphrase' => aioseo()->helpers->sanitizeOption( $keyphrase ) ];
}
$meta['keyphrases'] = $keyphraseArray;
break;
case '_seopress_robots_snippet':
case '_seopress_robots_archive':
case '_seopress_robots_imageindex':
case '_seopress_robots_odp':
case '_seopress_robots_follow':
case '_seopress_robots_index':
if ( 'yes' === $value ) {
$meta['robots_default'] = false;
$meta[ $this->mappedMeta[ $name ] ] = true;
}
break;
case '_seopress_social_twitter_img':
$meta['twitter_use_og'] = false;
$meta['twitter_image_type'] = 'custom_image';
$meta[ $this->mappedMeta[ $name ] ] = esc_url( $value );
break;
case '_seopress_social_twitter_desc':
case '_seopress_social_twitter_title':
$meta['twitter_use_og'] = false;
$meta[ $this->mappedMeta[ $name ] ] = esc_html( wp_strip_all_tags( strval( $value ) ) );
break;
case '_seopress_social_fb_img':
$meta['og_image_type'] = 'custom_image';
$meta[ $this->mappedMeta[ $name ] ] = esc_url( $value );
break;
case '_seopress_robots_primary_cat':
$taxonomy = 'category';
$options = new \stdClass();
$options->$taxonomy = (int) $value;
$meta[ $this->mappedMeta[ $name ] ] = wp_json_encode( $options );
break;
case '_seopress_titles_title':
case '_seopress_titles_desc':
$value = aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $value );
default:
$meta[ $this->mappedMeta[ $name ] ] = esc_html( wp_strip_all_tags( strval( $value ) ) );
break;
}
}
return $meta;
}
} Helpers.php 0000666 00000007264 15114444066 0006701 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use AIOSEO\Plugin\Common\ImportExport;
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Contains helper methods for the import from SEOPress.
*
* @since 4.1.4
*/
class Helpers extends ImportExport\Helpers {
/**
* Converts the macros from SEOPress to our own smart tags.
*
* @since 4.1.4
*
* @param string $string The string with macros.
* @param string $postType The post type.
* @return string The string with smart tags.
*/
public function macrosToSmartTags( $string, $postType = null ) {
$macros = $this->getMacros( $postType );
foreach ( $macros as $macro => $tag ) {
$string = aioseo()->helpers->pregReplace( "#$macro(?![a-zA-Z0-9_])#im", $tag, $string );
}
return trim( $string );
}
/**
* Returns the macro mappings.
*
* @since 4.1.4
*
* @param string $postType The post type.
* @param string $pageType The page type.
* @return array $macros The macros.
*/
protected function getMacros( $postType = null, $pageType = null ) {
$macros = [
'%%sep%%' => '#separator_sa',
'%%sitetitle%%' => '#site_title',
'%%sitename%%' => '#site_title',
'%%tagline%%' => '#tagline',
'%%sitedesc%%' => '#tagline',
'%%title%%' => '#site_title',
'%%post_title%%' => '#post_title',
'%%post_excerpt%%' => '#post_excerpt',
'%%excerpt%%' => '#post_excerpt',
'%%post_content%%' => '#post_content',
'%%post_url%%' => '#permalink',
'%%post_date%%' => '#post_date',
'%%post_permalink%%' => '#permalink',
'%%date%%' => '#post_date',
'%%post_author%%' => '#author_name',
'%%post_category%%' => '#categories',
'%%_category_title%%' => '#taxonomy_title',
'%%_category_description%%' => '#taxonomy_description',
'%%tag_title%%' => '#taxonomy_title',
'%%tag_description%%' => '#taxonomy_description',
'%%term_title%%' => '#taxonomy_title',
'%%term_description%%' => '#taxonomy_description',
'%%search_keywords%%' => '#search_term',
'%%current_pagination%%' => '#page_number',
'%%page%%' => '#page_number',
'%%archive_title%%' => '#archive_title',
'%%archive_date%%' => '#archive_date',
'%%wc_single_price%%' => '#woocommerce_price',
'%%wc_sku%%' => '#woocommerce_sku',
'%%currentday%%' => '#current_day',
'%%currentmonth%%' => '#current_month',
'%%currentmonth_short%%' => '#current_month',
'%%currentyear%%' => '#current_year',
'%%currentdate%%' => '#current_date',
'%%author_first_name%%' => '#author_first_name',
'%%author_last_name%%' => '#author_last_name',
'%%author_website%%' => '#author_link',
'%%author_nickname%%' => '#author_first_name',
'%%author_bio%%' => '#author_bio',
'%%currentmonth_num%%' => '#current_month',
];
if ( $postType ) {
$postType = get_post_type_object( $postType );
if ( ! empty( $postType ) ) {
$macros += [
'%%cpt_plural%%' => $postType->labels->name,
];
}
}
switch ( $pageType ) {
case 'archive':
$macros['%%title%%'] = '#archive_title';
break;
case 'term':
$macros['%%title%%'] = '#taxonomy_title';
break;
default:
$macros['%%title%%'] = '#post_title';
break;
}
// Strip all other tags.
$macros['%%[^%]*%%'] = '';
return $macros;
}
} SocialMeta.php 0000666 00000012322 15114444066 0007307 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Migrates the Social Meta Settings.
*
* @since 4.1.4
*/
class SocialMeta {
/**
* List of options.
*
* @since 4.2.7
*
* @var array
*/
private $options = [];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function __construct() {
$this->options = get_option( 'seopress_social_option_name' );
if ( empty( $this->options ) ) {
return;
}
$this->migrateSocialUrls();
$this->migrateKnowledge();
$this->migrateFacebookSettings();
$this->migrateTwitterSettings();
}
/**
* Migrates Basic Social Profiles URLs.
*
* @since 4.1.4
*
* @return void
*/
private function migrateSocialUrls() {
$settings = [
'seopress_social_accounts_facebook' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'facebookPageUrl' ] ],
'seopress_social_accounts_twitter' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'twitterUrl' ] ],
'seopress_social_accounts_pinterest' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'pinterestUrl' ] ],
'seopress_social_accounts_instagram' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'instagramUrl' ] ],
'seopress_social_accounts_youtube' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'youtubeUrl' ] ],
'seopress_social_accounts_linkedin' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'linkedinUrl' ] ],
'seopress_social_accounts_myspace' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'myspaceUrl' ] ],
'seopress_social_accounts_soundcloud' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'soundCloudUrl' ] ],
'seopress_social_accounts_tumblr' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'tumblrUrl' ] ],
'seopress_social_accounts_wordpress' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'wordPressUrl' ] ],
'seopress_social_accounts_bluesky' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'blueskyUrl' ] ],
'seopress_social_accounts_threads' => [ 'type' => 'string', 'newOption' => [ 'social', 'profiles', 'urls', 'threadsUrl' ] ]
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
/**
* Migrates Knowledge Graph data.
*
* @since 4.1.4
*
* @return void
*/
private function migrateKnowledge() {
$type = 'organization';
if ( ! empty( $this->options['seopress_social_knowledge_type'] ) ) {
$type = strtolower( $this->options['seopress_social_knowledge_type'] );
if ( 'person' === $type ) {
aioseo()->options->searchAppearance->global->schema->person = 'manual';
}
}
aioseo()->options->searchAppearance->global->schema->siteRepresents = $type;
$settings = [
'seopress_social_knowledge_img' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'global', 'schema', $type . 'Logo' ] ],
'seopress_social_knowledge_name' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'global', 'schema', $type . 'Name' ] ],
'seopress_social_knowledge_phone' => [ 'type' => 'string', 'newOption' => [ 'searchAppearance', 'global', 'schema', 'phone' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
/**
* Migrates the Facebook settings.
*
* @since 4.1.4
*
* @return void
*/
private function migrateFacebookSettings() {
if ( ! empty( $this->options['seopress_social_facebook_admin_id'] ) || ! empty( $this->options['seopress_social_facebook_app_id'] ) ) {
aioseo()->options->social->facebook->advanced->enable = true;
}
$settings = [
'seopress_social_facebook_og' => [ 'type' => 'boolean', 'newOption' => [ 'social', 'facebook', 'general', 'enable' ] ],
'seopress_social_facebook_img' => [ 'type' => 'string', 'newOption' => [ 'social', 'facebook', 'homePage', 'image' ] ],
'seopress_social_facebook_admin_id' => [ 'type' => 'string', 'newOption' => [ 'social', 'facebook', 'advanced', 'adminId' ] ],
'seopress_social_facebook_app_id' => [ 'type' => 'string', 'newOption' => [ 'social', 'facebook', 'advanced', 'appId' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
/**
* Migrates the Twitter settings.
*
* @since 4.1.4
*
* @return void
*/
private function migrateTwitterSettings() {
if ( ! empty( $this->options['seopress_social_twitter_card_img_size'] ) ) {
$twitterCard = ( 'large' === $this->options['seopress_social_twitter_card_img_size'] ) ? 'summary-card' : 'summary';
aioseo()->options->social->twitter->general->defaultCardType = $twitterCard;
}
$settings = [
'seopress_social_twitter_card' => [ 'type' => 'boolean', 'newOption' => [ 'social', 'twitter', 'general', 'enable' ] ],
'seopress_social_twitter_card_img' => [ 'type' => 'string', 'newOption' => [ 'social', 'twitter', 'homePage', 'image' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
} Breadcrumbs.php 0000666 00000003403 15114444066 0007517 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Migrates the Breadcrumb settings.
*
* @since 4.1.4
*/
class Breadcrumbs {
/**
* List of options.
*
* @since 4.2.7
*
* @var array
*/
private $options = [];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function __construct() {
$this->options = get_option( 'seopress_pro_option_name' );
if ( empty( $this->options ) ) {
return;
}
$this->migrate();
}
/**
* Migrates the Breadcrumbs settings.
*
* @since 4.1.4
*
* @return void
*/
private function migrate() {
if ( ! empty( $this->options['seopress_breadcrumbs_i18n_search'] ) ) {
aioseo()->options->breadcrumbs->searchResultFormat = sprintf( '%1$s #breadcrumb_archive_post_type_name', $this->options['seopress_breadcrumbs_i18n_search'] );
}
if ( ! empty( $this->options['seopress_breadcrumbs_remove_blog_page'] ) ) {
aioseo()->options->breadcrumbs->showBlogHome = false;
}
$settings = [
'seopress_breadcrumbs_enable' => [ 'type' => 'boolean', 'newOption' => [ 'breadcrumbs', 'enable' ] ],
'seopress_breadcrumbs_separator' => [ 'type' => 'string', 'newOption' => [ 'breadcrumbs', 'separator' ] ],
'seopress_breadcrumbs_i18n_home' => [ 'type' => 'string', 'newOption' => [ 'breadcrumbs', 'homepageLabel' ] ],
'seopress_breadcrumbs_i18n_here' => [ 'type' => 'string', 'newOption' => [ 'breadcrumbs', 'breadcrumbPrefix' ] ],
'seopress_breadcrumbs_i18n_404' => [ 'type' => 'string', 'newOption' => [ 'breadcrumbs', 'errorFormat404' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
} Sitemap.php 0000666 00000003600 15114444066 0006667 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Migrates the Sitemap Settings.
*
* @since 4.1.4
*/
class Sitemap {
/**
* List of options.
*
* @since 4.2.7
*
* @var array
*/
private $options = [];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function __construct() {
$this->options = get_option( 'seopress_xml_sitemap_option_name' );
if ( empty( $this->options ) ) {
return;
}
$this->migratePostTypesInclude();
$this->migrateTaxonomiesInclude();
$settings = [
'seopress_xml_sitemap_general_enable' => [ 'type' => 'boolean', 'newOption' => [ 'sitemap', 'general', 'enable' ] ],
'seopress_xml_sitemap_author_enable' => [ 'type' => 'boolean', 'newOption' => [ 'sitemap', 'general', 'author' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
/**
* Migrates the post types to include in sitemap settings.
*
* @since 4.1.4
*
* @return void
*/
public function migratePostTypesInclude() {
$postTypesMigrate = $this->options['seopress_xml_sitemap_post_types_list'];
$postTypesInclude = [];
foreach ( $postTypesMigrate as $postType => $options ) {
$postTypesInclude[] = $postType;
}
aioseo()->options->sitemap->general->postTypes->included = $postTypesInclude;
}
/**
* Migrates the taxonomies to include in sitemap settings.
*
* @since 4.1.4
*
* @return void
*/
public function migrateTaxonomiesInclude() {
$taxonomiesMigrate = $this->options['seopress_xml_sitemap_taxonomies_list'];
$taxonomiesInclude = [];
foreach ( $taxonomiesMigrate as $taxonomy => $options ) {
$taxonomiesInclude[] = $taxonomy;
}
aioseo()->options->sitemap->general->taxonomies->included = $taxonomiesInclude;
}
} Analytics.php 0000666 00000001527 15114444066 0007222 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Migrates the Analytics Settings.
*
* @since 4.1.4
*/
class Analytics {
/**
* List of options.
*
* @since 4.2.7
*
* @var array
*/
private $options = [];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function __construct() {
$this->options = get_option( 'seopress_google_analytics_option_name' );
if ( empty( $this->options ) ) {
return;
}
$settings = [
'seopress_google_analytics_other_tracking' => [ 'type' => 'string', 'newOption' => [ 'webmasterTools', 'miscellaneousVerification' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
} Rss.php 0000666 00000002242 15114444066 0006035 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Migrates the RSS settings.
*
* @since 4.1.4
*/
class Rss {
/**
* List of options.
*
* @since 4.2.7
*
* @var array
*/
private $options = [];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function __construct() {
$this->options = get_option( 'seopress_pro_option_name' );
if ( empty( $this->options ) ) {
return;
}
$this->migrateRss();
}
/**
* Migrates the RSS settings.
*
* @since 4.1.4
*
* @return void
*/
public function migrateRss() {
if ( ! empty( $this->options['seopress_rss_before_html'] ) ) {
aioseo()->options->rssContent->before = esc_html( aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $this->options['seopress_rss_before_html'] ) );
}
if ( ! empty( $this->options['seopress_rss_after_html'] ) ) {
aioseo()->options->rssContent->after = esc_html( aioseo()->importExport->seoPress->helpers->macrosToSmartTags( $this->options['seopress_rss_after_html'] ) );
}
}
} GeneralSettings.php 0000666 00000010307 15114444066 0010365 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Migrates the General Settings.
*
* @since 4.1.4
*/
class GeneralSettings {
/**
* List of options.
*
* @since 4.2.7
*
* @var array
*/
private $options = [];
/**
* List of our access control roles.
*
* @since 4.2.7
*
* @var array
*/
private $roles = [];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function __construct() {
$this->options = get_option( 'seopress_advanced_option_name' );
if ( empty( $this->options ) ) {
return;
}
$this->roles = aioseo()->access->getRoles();
$this->migrateBlockMetaboxRoles();
$this->migrateBlockContentAnalysisRoles();
$this->migrateAttachmentRedirects();
$settings = [
'seopress_advanced_advanced_google' => [ 'type' => 'string', 'newOption' => [ 'webmasterTools', 'google' ] ],
'seopress_advanced_advanced_bing' => [ 'type' => 'string', 'newOption' => [ 'webmasterTools', 'bing' ] ],
'seopress_advanced_advanced_pinterest' => [ 'type' => 'string', 'newOption' => [ 'webmasterTools', 'pinterest' ] ],
'seopress_advanced_advanced_yandex' => [ 'type' => 'string', 'newOption' => [ 'webmasterTools', 'yandex' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
/**
* Migrates Block AIOSEO metabox setting.
*
* @since 4.1.4
*
* @return void
*/
private function migrateBlockMetaboxRoles() {
$seoPressRoles = ! empty( $this->options['seopress_advanced_security_metaboxe_role'] ) ? $this->options['seopress_advanced_security_metaboxe_role'] : '';
if ( empty( $seoPressRoles ) ) {
return;
}
$roleSettings = [ 'useDefault', 'pageAnalysis', 'pageGeneralSettings', 'pageSocialSettings', 'pageSchemaSettings', 'pageAdvancedSettings' ];
foreach ( $seoPressRoles as $wpRole => $value ) {
$role = $this->roles[ $wpRole ];
if ( empty( $role ) || aioseo()->access->isAdmin( $role ) ) {
continue;
}
if ( aioseo()->options->accessControl->has( $role ) ) {
foreach ( $roleSettings as $setting ) {
aioseo()->options->accessControl->$role->$setting = false;
}
} elseif ( aioseo()->dynamicOptions->accessControl->has( $role ) ) {
foreach ( $roleSettings as $setting ) {
aioseo()->dynamicOptions->accessControl->$role->$setting = false;
}
}
}
}
/**
* Migrates Block Content analysis metabox setting.
*
* @since 4.1.4
*
* @return void
*/
private function migrateBlockContentAnalysisRoles() {
$seoPressRoles = ! empty( $this->options['seopress_advanced_security_metaboxe_ca_role'] ) ? $this->options['seopress_advanced_security_metaboxe_ca_role'] : '';
if ( empty( $seoPressRoles ) ) {
return;
}
$roleSettings = [ 'useDefault', 'pageAnalysis' ];
foreach ( $seoPressRoles as $wpRole => $value ) {
$role = $this->roles[ $wpRole ];
if ( empty( $role ) || aioseo()->access->isAdmin( $role ) ) {
continue;
}
if ( aioseo()->options->accessControl->has( $role ) ) {
foreach ( $roleSettings as $setting ) {
aioseo()->options->accessControl->$role->$setting = false;
}
} elseif ( aioseo()->dynamicOptions->accessControl->has( $role ) ) {
foreach ( $roleSettings as $setting ) {
aioseo()->dynamicOptions->accessControl->$role->$setting = false;
}
}
}
}
/**
* Migrates redirect attachment pages settings.
*
* @since 4.1.4
*
* @return void
*/
private function migrateAttachmentRedirects() {
if ( ! empty( $this->options['seopress_advanced_advanced_attachments'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->attachment->redirectAttachmentUrls = 'attachment_parent';
}
if ( ! empty( $this->options['seopress_advanced_advanced_attachments_file'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->attachment->redirectAttachmentUrls = 'attachment';
}
if ( empty( $this->options['seopress_advanced_advanced_attachments'] ) && empty( $this->options['seopress_advanced_advanced_attachments_file'] ) ) {
aioseo()->dynamicOptions->searchAppearance->postTypes->attachment->redirectAttachmentUrls = 'disabled';
}
}
} SeoPress.php 0000666 00000002761 15114444066 0007037 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use AIOSEO\Plugin\Common\ImportExport;
class SeoPress extends ImportExport\Importer {
/**
* A list of plugins to look for to import.
*
* @since 4.1.4
*
* @var array
*/
public $plugins = [
[
'name' => 'SEOPress',
'version' => '4.0',
'basename' => 'wp-seopress/seopress.php',
'slug' => 'seopress'
],
[
'name' => 'SEOPress PRO',
'version' => '4.0',
'basename' => 'wp-seopress-pro/seopress-pro.php',
'slug' => 'seopress-pro'
],
];
/**
* The post action name.
*
* @since 4.1.4
*
* @var string
*/
public $postActionName = 'aioseo_import_post_meta_seopress';
/**
* The post action name.
*
* @since 4.1.4
*
* @param ImportExport\ImportExport $importer The main importer class.
*/
public function __construct( $importer ) {
$this->helpers = new Helpers();
$this->postMeta = new PostMeta();
add_action( $this->postActionName, [ $this->postMeta, 'importPostMeta' ] );
$plugins = $this->plugins;
foreach ( $plugins as $key => $plugin ) {
$plugins[ $key ]['class'] = $this;
}
$importer->addPlugins( $plugins );
}
/**
* Imports the settings.
*
* @since 4.1.4
*
* @return void
*/
protected function importSettings() {
new GeneralSettings();
new Analytics();
new SocialMeta();
new Titles();
new Sitemap();
new RobotsTxt();
new Rss();
new Breadcrumbs();
}
} RobotsTxt.php 0000666 00000002357 15114444066 0007245 0 ustar 00 <?php
namespace AIOSEO\Plugin\Common\ImportExport\SeoPress;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
/**
* Migrates the robots.txt settings.
*
* @since 4.1.4
*/
class RobotsTxt {
/**
* List of options.
*
* @since 4.2.7
*
* @var array
*/
private $options = [];
/**
* Class constructor.
*
* @since 4.1.4
*/
public function __construct() {
$this->options = get_option( 'seopress_pro_option_name', [] );
if ( empty( $this->options ) ) {
return;
}
$this->migrateRobotsTxt();
$settings = [
'seopress_robots_enable' => [ 'type' => 'boolean', 'newOption' => [ 'tools', 'robots', 'enable' ] ],
];
aioseo()->importExport->seoPress->helpers->mapOldToNew( $settings, $this->options );
}
/**
* Migrates the robots.txt.
*
* @since 4.1.4
*
* @return void
*/
public function migrateRobotsTxt() {
$lines = ! empty( $this->options['seopress_robots_file'] ) ? (string) $this->options['seopress_robots_file'] : '';
if ( $lines ) {
$allRules = aioseo()->robotsTxt->extractRules( $lines );
aioseo()->options->tools->robots->rules = aioseo()->robotsTxt->prepareRobotsTxt( $allRules );
}
}
}