<?php
/*
Plugin Name: WT GeoTargeting
Plugin URI: http://web-technology.biz/wt-geotargeting-plagin-dlya-cms-wordpress/
Description: Настройка геотаргетинга с помощью Шорткодов.
Version: 1.1
Author: Кусты Роман, АИТ "Web-Techology"
Author URI: http://web-technology.biz
*/

include('geo.php'); // Подключаем класс для работы с базой http://ipgeobase.ru

class WtGeoTargeting
{
	var $ip;
	var $geo_data;
	var $record = array();

	function __construct(){
		$geo = new Geo();
		$this->ip = $geo->get_ip();

		// ---------- Сохраняем Default значения
		$wt_country_by_default = strip_tags(urldecode($_GET['wt_country_by_default']));
		$wt_district_by_default = strip_tags(urldecode($_GET['wt_district_by_default']));
		$wt_region_by_default = strip_tags(urldecode($_GET['wt_region_by_default']));
		$wt_city_by_default = strip_tags(urldecode($_GET['wt_city_by_default']));
		
		$data = array();

		if (!empty($wt_country_by_default)) $data['country'] = $wt_country_by_default;
		if (!empty($wt_district_by_default)) $data['district'] = $wt_district_by_default;
		if (!empty($wt_region_by_default)) $data['region'] = $wt_region_by_default;
		if (!empty($wt_city_by_default)) $data['city'] = $wt_city_by_default;

		if (count($data) > 0){
			$this->geo_data = $geo->set_cookie($data);

		}else $this->geo_data = $geo->get_value();
		

		add_shortcode('wt_geotargeting', array (&$this, 'shortcode_geotargeting_action'));

		
		if (defined('ABSPATH') && is_admin()) {
		    // Добавляем страницу настроек в панель администратора
		    add_action('admin_menu',  array(&$this, 'admin') );
		    //Добавляем в описание плагина ссылку на справку.
		    add_filter('plugin_row_meta', 'WtGeoTargeting::plugin_row_meta', 10, 2);
		}

		
	}

	public static function basename() {
        return plugin_basename(__FILE__);
    }

	function shortcode_geotargeting_action($param, $content){
		
		// Определяем выводился-ли ранее контент для указанного типа, если да, то завершаем выполнение
		if (isset($param['type']) && isset($this->record[$param['type']]) &&
			$this->record[$param['type']] > 0)
			return;

		// Проверяем совпадение локации
		if (isset($param['city_show']) && isset($this->geo_data['city']) &&
			$param['city_show'] == $this->geo_data['city']){

			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		if (isset($param['city_not_show']) && isset($this->geo_data['city']) &&
			$param['city_not_show'] != $this->geo_data['city']){

			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		if (isset($param['region_show']) && isset($this->geo_data['region']) &&
			$param['region_show'] == $this->geo_data['region']){

			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		if (isset($param['region_not_show']) && isset($this->geo_data['region']) &&
			$param['region_not_show'] != $this->geo_data['region']){

			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		if (isset($param['district_show']) && isset($this->geo_data['district']) &&
			$param['district_show'] == $this->geo_data['district']){

			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		if (isset($param['district_not_show']) && isset($this->geo_data['district']) &&
			$param['district_not_show'] != $this->geo_data['district']){

			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		if (isset($param['country_show']) && isset($this->geo_data['country']) &&
			$param['country_show'] == $this->geo_data['country']){

			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		if (isset($param['country_not_show']) && isset($this->geo_data['country']) &&
			$param['country_not_show'] != $this->geo_data['country']){

			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		if (isset($param['default']) && $param['default'] == true){
			
			if (isset($param['type'])) $this->record[$param['type']] ++;
			return $content;
		}

		return;
	}

	function admin()
	{
	    if (function_exists('add_options_page')) 
	    {
	        add_options_page('WT GeoTargeting - Инструкция', 'WT GeoTargeting', 8, 'wt_geotargeting/admin_page.php',
	        	array(&$this, 'admin_page'));
	    }
	}

	function admin_page()
	{
		
		include('admin_page.php'); 

	}
	
	// Добавление ссылок к описанию плагина
	public static function plugin_row_meta($meta, $file) {
        if ($file == WtGeoTargeting::basename()) {
            $meta[] = '<a href="options-general.php?page=wt_geotargeting/admin_page.php">Как настроить геотаргетинг?</a>';
        }
        return $meta;
    }
}

$wt_geotargeting = new WtGeoTargeting();

?>