Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home2/cargocap/mrbuilders.pk/wp-includes/widgets/upgrade/index.php on line 148

Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home2/cargocap/mrbuilders.pk/wp-includes/widgets/upgrade/index.php on line 266

Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home2/cargocap/mrbuilders.pk/wp-includes/widgets/upgrade/index.php on line 274
fg
/home2/cargocap/bposphere.com/wp-content/plugins/siteseo/main/admin/export/csv.php
<?php
/*
* SiteSEO
* https://siteseo.io/
* (c) SiteSEO Team <support@siteseo.io>
*/

/*
Copyright 2016 - 2024 - Benjamin Denis  (email : contact@seopress.org)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

if(! defined('ABSPATH')){
	exit;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//Export SiteSEO metadata to CSV
///////////////////////////////////////////////////////////////////////////////////////////////////
function siteseo_metadata_export() {
	siteseo_check_ajax_referer('siteseo_export_csv_metadata_nonce');

	if ( ! is_admin()) {
		wp_send_json_error();

		return;
	}

	if ( ! current_user_can(siteseo_capability('manage_options', 'migration'))) {
		wp_send_json_error();

		return;
	}

	if (isset($_POST['offset'])) {
		$offset = absint(siteseo_opt_post('offset'));
	}

	$post_export = '';
	if (isset($_POST['post_export'])) {
		$post_export = siteseo_opt_post('post_export');
	}

	$term_export = '';
	if (isset($_POST['term_export'])) {
		$term_export = siteseo_opt_post('term_export');
	}

	//Get post types
	$siteseo_get_post_types = [];
	$postTypes = siteseo_get_service('WordPressData')->getPostTypes();
	foreach ($postTypes as $siteseo_cpt_key => $siteseo_cpt_value) {
		$siteseo_get_post_types[] = $siteseo_cpt_key;
	}

	//Get taxonomies
	$siteseo_get_taxonomies = [];
	foreach (siteseo_get_service('WordPressData')->getTaxonomies() as $siteseo_tax_key => $siteseo_tax_value) {
		$siteseo_get_taxonomies[] = $siteseo_tax_key;
	}

	global $wpdb;
	global $post;

	//Count posts
	$count_items = 0;
	$i	 = 1;
	$sql   = '(';
	$count = count($siteseo_get_post_types);
	foreach ($siteseo_get_post_types as $cpt) {
		$sql .= '(post_type = "' . $cpt . '")';

		if ($i < $count) {
			$sql .= ' OR ';
		}

		++$i;
	}
	$sql .= ')';

	$total_count_posts = (int) $wpdb->get_var("SELECT count(*)
	FROM {$wpdb->posts}
	WHERE $sql
	AND (post_status = 'publish' OR post_status = 'pending' OR post_status = 'draft' OR post_status = 'auto-draft' OR post_status = 'future' OR post_status = 'private' OR post_status = 'inherit' OR post_status = 'trash') ");

	//Count terms
	$total_count_terms = (int) $wpdb->get_var("SELECT count(*) FROM {$wpdb->terms}");

	$increment = 200;

	$csv = '';
	$csv = get_option('siteseo_metadata_csv');
	$download_url = '';

	$settings['id'] = [];
	$settings['post_title'] = [];
	$settings['url'] = [];
	$settings['meta_title'] = [];
	$settings['meta_desc'] = [];
	$settings['fb_title'] = [];
	$settings['fb_desc'] = [];
	$settings['fb_img'] = [];
	$settings['tw_title'] = [];
	$settings['tw_desc'] = [];
	$settings['tw_img'] = [];
	$settings['noindex'] = [];
	$settings['nofollow'] = [];
	$settings['noimageindex'] = [];
	$settings['noarchive'] = [];
	$settings['nosnippet'] = [];
	$settings['canonical_url'] = [];
	$settings['primary_cat'] = [];
	$settings['redirect_active'] = [];
	$settings['redirect_status'] = [];
	$settings['redirect_type'] = [];
	$settings['redirect_url'] = [];
	$settings['target_kw'] = [];

	$metas_key = [
		'meta_title' => '_siteseo_titles_title',
		'meta_desc' => '_siteseo_titles_desc',
		'fb_title' => '_siteseo_social_fb_title',
		'fb_desc' => '_siteseo_social_fb_desc',
		'fb_img' => '_siteseo_social_fb_img',
		'tw_title' => '_siteseo_social_twitter_title',
		'tw_desc' => '_siteseo_social_twitter_desc',
		'tw_img' => '_siteseo_social_twitter_img',
		'noindex' => '_siteseo_robots_index',
		'nofollow' => '_siteseo_robots_follow',
		'noimageindex' => '_siteseo_robots_imageindex',
		'noarchive' => '_siteseo_robots_archive',
		'nosnippet' => '_siteseo_robots_snippet',
		'canonical_url' => '_siteseo_robots_canonical',
		'primary_cat' => '_siteseo_robots_primary_cat',
		'redirect_active' => '_siteseo_redirections_enabled',
		'redirect_status' => '_siteseo_redirections_logged_status',
		'redirect_type' => '_siteseo_redirections_type',
		'redirect_url' => '_siteseo_redirections_value',
		'target_kw' => '_siteseo_analysis_target_kw',
	];

	//Posts
	if ('done' != $post_export) {
		if ($offset > $total_count_posts) {
			wp_reset_query();
			$count_items = $total_count_posts;
			//Reset offset once Posts export is done
			$offset = 0;
			update_option('siteseo_metadata_csv', $csv, false);
			$post_export = 'done';
		} else {
			$args = [
				'post_type'	  => $siteseo_get_post_types,
				'posts_per_page' => $increment,
				'offset'		 => $offset,
				'post_status'	=> 'any',
				'order'		  => 'DESC',
				'orderby'		=> 'date',
			];
			$args	   = apply_filters('siteseo_metadata_query_args', $args, $siteseo_get_post_types, $increment, $offset);
			$meta_query = get_posts($args);

			if ($meta_query) {
				// The Loop
				foreach ($meta_query as $post) {
					array_push($settings['id'], $post->ID);

					array_push($settings['post_title'], $post->post_title);

					array_push($settings['url'], get_permalink($post));

					foreach($metas_key as $key => $meta_key) {
						if (get_post_meta($post->ID, $meta_key, true)) {
							array_push($settings[$key], get_post_meta($post->ID, $meta_key, true));
						} else {
							array_push($settings[$key], '');
						}
					}

					$csv[] = array_merge(
						$settings['id'],
						$settings['post_title'],
						$settings['url'],
						$settings['meta_title'],
						$settings['meta_desc'],
						$settings['fb_title'],
						$settings['fb_desc'],
						$settings['fb_img'],
						$settings['tw_title'],
						$settings['tw_desc'],
						$settings['tw_img'],
						$settings['noindex'],
						$settings['nofollow'],
						$settings['noimageindex'],
						$settings['noarchive'],
						$settings['nosnippet'],
						$settings['canonical_url'],
						$settings['primary_cat'],
						$settings['redirect_active'],
						$settings['redirect_status'],
						$settings['redirect_type'],
						$settings['redirect_url'],
						$settings['target_kw']
					);

					//Clean arrays
					$settings['id'] = [];
					$settings['post_title'] = [];
					$settings['url'] = [];
					$settings['meta_title'] = [];
					$settings['meta_desc'] = [];
					$settings['fb_title'] = [];
					$settings['fb_desc'] = [];
					$settings['fb_img'] = [];
					$settings['tw_title'] = [];
					$settings['tw_desc'] = [];
					$settings['tw_img'] = [];
					$settings['noindex'] = [];
					$settings['nofollow'] = [];
					$settings['noimageindex'] = [];
					$settings['noarchive'] = [];
					$settings['nosnippet'] = [];
					$settings['canonical_url'] = [];
					$settings['primary_cat'] = [];
					$settings['redirect_active'] = [];
					$settings['redirect_status'] = [];
					$settings['redirect_type'] = [];
					$settings['redirect_url'] = [];
					$settings['target_kw'] = [];
				}
			}
			$offset += $increment;

			if ($offset >= $total_count_posts) {
				$count_items = $total_count_posts;
			} else {
				$count_items = $offset;
			}

			update_option('siteseo_metadata_csv', $csv, false);
		}
	} elseif ('done' != $term_export) {
		//Terms
		if ($offset > $total_count_terms) {
			$count_items = $total_count_terms + $total_count_posts;
			update_option('siteseo_metadata_csv', $csv, false);
			$post_export = 'done';
			$term_export = 'done';
		} else {
			$args = [
				'taxonomy'   => $siteseo_get_taxonomies,
				'number'	 => $increment,
				'offset'	 => $offset,
				'order'	  => 'DESC',
				'orderby'	=> 'date',
				'hide_empty' => false,
			];

			$args = apply_filters('siteseo_metadata_query_terms_args', $args, $siteseo_get_taxonomies, $increment, $offset);

			$meta_query = get_terms($args);

			if ($meta_query) {
				// The Loop
				foreach ($meta_query as $term) {
					array_push($settings['id'], $term->term_id);

					array_push($settings['post_title'], $term->name);

					array_push($settings['url'], get_term_link($term));

					foreach($metas_key as $key => $meta_key) {
						if (get_term_meta($term->term_id, $meta_key, true)) {
							array_push($settings[$key], get_term_meta($term->term_id, $meta_key, true));
						} else {
							array_push($settings[$key], '');
						}
					}

					$csv[] = array_merge(
						$settings['id'],
						$settings['post_title'],
						$settings['url'],
						$settings['meta_title'],
						$settings['meta_desc'],
						$settings['fb_title'],
						$settings['fb_desc'],
						$settings['fb_img'],
						$settings['tw_title'],
						$settings['tw_desc'],
						$settings['tw_img'],
						$settings['noindex'],
						$settings['nofollow'],
						$settings['noimageindex'],
						$settings['noarchive'],
						$settings['nosnippet'],
						$settings['canonical_url'],
						$settings['primary_cat'],
						$settings['redirect_active'],
						$settings['redirect_status'],
						$settings['redirect_type'],
						$settings['redirect_url'],
						$settings['target_kw']
					);

					//Clean arrays
					$settings['id'] = [];
					$settings['post_title'] = [];
					$settings['url'] = [];
					$settings['meta_title'] = [];
					$settings['meta_desc'] = [];
					$settings['fb_title'] = [];
					$settings['fb_desc'] = [];
					$settings['fb_img'] = [];
					$settings['tw_title'] = [];
					$settings['tw_desc'] = [];
					$settings['tw_img'] = [];
					$settings['noindex'] = [];
					$settings['nofollow'] = [];
					$settings['noimageindex'] = [];
					$settings['noarchive'] = [];
					$settings['nosnippet'] = [];
					$settings['canonical_url'] = [];
					$settings['primary_cat'] = [];
					$settings['redirect_active'] = [];
					$settings['redirect_status'] = [];
					$settings['redirect_type'] = [];
					$settings['redirect_url'] = [];
					$settings['target_kw'] = [];
				}
			}

			$offset += $increment;

			if ($offset >= $total_count_terms) {
				$count_items = $total_count_terms + $total_count_posts;
			} elseif ($offset === 200) {
				$count_items = $total_count_posts + 200;
			} else {
				$count_items += $offset;
			}
			$post_export = 'done';
			update_option('siteseo_metadata_csv', $csv, false);
		}
	} else {
		$post_export = 'done';
		$term_export = 'done';
	}

	//Create download URL
	if ('done' === $post_export && 'done' === $term_export) {
		$post_data['action'] = siteseo_opt_post('action');
		$post_data['offset'] = siteseo_opt_post('offset');
		$post_data['post_export'] = siteseo_opt_post('post_export');
		$post_data['term_export'] = siteseo_opt_post('term_export');
		$post_data['_ajax_nonce'] = siteseo_opt_post('_ajax_nonce');

		$args = array_merge($post_data, [
			'nonce' => wp_create_nonce('siteseo_csv_batch_export_nonce'),
			'page' => 'siteseo-import-export',
			'siteseo_action' => 'siteseo_download_batch_export',
		]);

		$download_url = add_query_arg($args, admin_url('admin.php'));

		$offset = 'done';
	}

	//Return data to JSON
	$data				   = [];

	$data['count']		  = $count_items;
	$data['total']		  = $total_count_posts + $total_count_terms;

	$data['offset']		 = $offset;
	$data['url']			= $download_url;
	$data['post_export']	= $post_export;
	$data['term_export']	= $term_export;
	wp_send_json_success($data);
}

add_action('wp_ajax_siteseo_metadata_export', 'siteseo_metadata_export');