Function Reference: geodir_get_location_seo_settings

Summary

Handles location SEO settings form data.

Global Values

$wpdb
(object) (required) WordPress Database object.

Default: None

Package

GeoDirectory_Location_Manager

Change Log

Since: 1.0.0

Source File

geodir_get_location_seo_settings() is located in geodir_location_manager/geodir_location_functions.php [Line: 668]

Source Code

function geodir_get_location_seo_settings()
{
	global $wpdb;

	if(isset($_REQUEST['wpnonce']) && current_user_can( 'manage_options' ) && isset($_REQUEST['location_slug'])) {

		if ( !wp_verify_nonce( $_REQUEST['wpnonce'], 'geodir_set_location_seo'.$_REQUEST['location_slug'] ) ) {
			echo 'FAIL';
			exit;
		}

		$field = isset($_REQUEST['field']) && ($_REQUEST['field']=='geodir_meta_keyword' || $_REQUEST['field']=='geodir_meta_description') ? $_REQUEST['field'] : '';
		$seo_value = isset($_REQUEST['field_val']) ? trim($_REQUEST['field_val']) : '';

		if ($field=='' || $seo_value=='') {
			echo 'FAIL';
			exit;
		}
		$seo_field = $_REQUEST['field']=='geodir_meta_keyword' ? 'seo_title' : 'seo_desc';

		$location_type = isset($_REQUEST['location_type']) ? $_REQUEST['location_type'] : '';
		$country_slug = isset($_REQUEST['country_slug']) ? $_REQUEST['country_slug'] : '';
		$region_slug = isset($_REQUEST['region_slug']) ? $_REQUEST['region_slug'] : '';
		$location_slug = isset($_REQUEST['location_slug']) ? $_REQUEST['location_slug'] : '';

		if ($seo_field=='seo_title') {
			$seo_value = substr($seo_value, 0, 140);
		} else {
			$seo_value = substr($seo_value, 0, 100000);
		}

		$seo_info = geodir_location_seo_by_slug($location_slug, $location_type, $country_slug, $region_slug);

		$date_now = date('Y-m-d H:i:s');

		switch($location_type) {
			case 'country': {
				if (!empty($seo_info)) {
					$sql = $wpdb->prepare("UPDATE ".LOCATION_SEO_TABLE." SET ".$seo_field."=%s, date_updated=%s WHERE seo_id=%d", array($seo_value, $date_now, $seo_info->seo_id));
				} else {
					$sql = $wpdb->prepare("INSERT INTO ".LOCATION_SEO_TABLE." SET location_type=%s, country_slug=%s, ".$seo_field."=%s, date_created=%s", array($location_type, $location_slug, $seo_value, $date_now));
				}
				if ($wpdb->query($sql)) {
					echo 'OK';
					exit;
				}
			}
			break;
			case 'region': {
				if (!empty($seo_info)) {
					$sql = $wpdb->prepare("UPDATE ".LOCATION_SEO_TABLE." SET country_slug=%s, ".$seo_field."=%s, date_updated=%s WHERE seo_id=%d", array($country_slug, $seo_value, $date_now, $seo_info->seo_id));
				} else {
					$sql = $wpdb->prepare("INSERT INTO ".LOCATION_SEO_TABLE." SET location_type=%s, country_slug=%s, region_slug=%s, ".$seo_field."=%s, date_created=%s", array($location_type, $country_slug, $location_slug, $seo_value, $date_now));
				}
				if ($wpdb->query($sql)) {
					echo 'OK';
					exit;
				}
			}
			break;
			case 'city': {
				if (!empty($seo_info)) {
					$sql = $wpdb->prepare("UPDATE ".LOCATION_SEO_TABLE." SET country_slug=%s, region_slug=%s, ".$seo_field."=%s, date_updated=%s WHERE seo_id=%d", array($country_slug, $region_slug, $seo_value, $date_now, $seo_info->seo_id));
				} else {
					$sql = $wpdb->prepare("INSERT INTO ".LOCATION_SEO_TABLE." SET location_type=%s, country_slug=%s, region_slug=%s, city_slug=%s, ".$seo_field."=%s, date_created=%s", array($location_type, $country_slug, $region_slug, $location_slug, $seo_value, $date_now));
				}
				if ($wpdb->query($sql)) {
					$info = geodir_city_info_by_slug($location_slug, $country_slug, $region_slug);
					if (!empty($info)) {
						$location_field = $seo_field=='seo_title' ? 'city_meta' : 'city_desc';
						$sql = $wpdb->prepare("UPDATE ".POST_LOCATION_TABLE." SET ".$location_field."=%s WHERE location_id=%d", array($seo_value, $info->location_id));
						$wpdb->query($sql);
					}
					echo 'OK';
					exit;
				}
			}
			break;
		}
	}

			$msg = urlencode( __('Location SEO updated successfully.',GEODIRLOCATION_TEXTDOMAIN) );

			$location = admin_url()."admin.php?page=geodirectory&tab=managelocation_fields&subtab=geodir_location_seo&location_success=".$msg;
			wp_redirect($location);
			exit;
}