<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

/**
 * MaxSite CMS
 * (c) http://maxsite.org/
 */


# функция автоподключения плагина
function sape_autoload($args = array())
{
	mso_create_allow('sape_edit', 'Админ-доступ к редактированию sape');
	mso_hook_add( 'init', 'sape_init'); # хук на инициализацию
	mso_hook_add( 'admin_init', 'sape_admin_init'); # хук на админку
	mso_register_widget('sape_widget', 'Sape.ru'); # регистрируем виджет
}


# функция выполняется при деинсталяции плагина
function sape_uninstall($args = array())
{	
	mso_delete_option_mask('sape_widget_', 'plugins'); // удалим созданные опции
	return $args;
}

# функция выполняется при указаном хуке admin_init
function sape_admin_init($args = array()) 
{
	if ( mso_check_allow('plugin_sape') ) 
	{
		$this_plugin_url = 'plugin_sape'; // url и hook
		mso_admin_menu_add('plugins', $this_plugin_url, 'Sape.ru');
		mso_admin_url_hook ($this_plugin_url, 'sape_admin_page');
	}
	
	return $args;
}

# функция вызываемая при хуке, указанном в mso_admin_url_hook
function sape_admin_page($args = array()) 
{
	global $MSO;
	
	# выносим админские функции отдельно в файл
	if ( !mso_check_allow('plugin_sape') ) 
	{
		echo 'Доступ запрещен';
		return $args;
	}
	# выносим админские функции отдельно в файл
	mso_hook_add_dinamic( 'mso_admin_header', ' return $args . "Настройка Sape.ru"; ' );
	mso_hook_add_dinamic( 'admin_title', ' return "Настройка Sape.ru - " . $args; ' );
	require($MSO->config['plugins_dir'] . 'sape/admin.php');
}


# подключаем функции сапы
function sape_init($args = array()) 
{
	global $SAPE, $SAPE_CONTENT, $MSO;
	
	$options = mso_get_option('sape', 'plugins', array() ); // получаем опции
	
	if (isset($options['kod']) 
		and isset($options['go']) and $options['go'] 
		and isset($options['start']) and $options['start']) // можно подключать
	{
	
		// анализируем входящий url на предмет ?
		// если есть, то делаем редирект на то, что до ?
		// таким образом обнаружить продажную ссылку будет невозможно
		if (isset($_SERVER['argv']) and $_SERVER['argv']) // есть какие-то параметры - делаем редирект
		{
			$url = $_SERVER['REQUEST_URI']; // /?nono  /about/?momo
			
			$url = explode('?', $url);
			if (isset($url[0])) $url = $url[0];
			else $url = '';
			
			$url = '/' . trim(str_replace('/', ' ', $url));
			$url = str_replace(' ', '/', $url);
			$url = 'http://'. $_SERVER['HTTP_HOST'] . $url;
			
			header('HTTP/1.1 301 Moved Permanently');
			header('Location: ' . $url);
			exit;
		}
		
		if ( !defined('_SAPE_USER') ) define('_SAPE_USER', $options['kod']);
		
		require_once($_SERVER['DOCUMENT_ROOT'] . '/' . _SAPE_USER . '/sape.php');
		
		$sa['charset'] = 'UTF-8';
		
		if (isset($options['test']) and $options['test']) $sa['force_show_code'] = true;
		
		$SAPE = new SAPE_client($sa);
		
		if (isset($options['context']) and $options['context'])
		{
			if ( !isset($SAPE_CONTENT) ) $SAPE_CONTENT = new SAPE_context(array('charset' => 'UTF-8'));
			mso_hook_add( 'content_content', 'sape_content'); # хук на конечный текст для вывода
		}
		else
		{
			$SAPE_CONTENT = false;
		}
	}
	
	return $args;
}

# функция, которая берет настройки из опций виджетов
function sape_widget($num = 1) 
{
	$widget = 'sape_widget_' . $num; // имя для опций = виджет + номер
	$options = mso_get_option($widget, 'plugins', array() ); // получаем опции
	
	// заменим заголовок, чтобы был в  h2 class="box"
	if ( isset($options['header']) and $options['header'] ) $options['header'] = '<h2 class="box">' . $options['header'] . '</h2>';
		else $options['header'] = '';
	
	return sape_widget_custom($options, $num);
}


# форма настройки виджета 
# имя функции = виджет_form
function sape_widget_form($num = 1) 
{
	$widget = 'sape_widget_' . $num; // имя для формы и опций = виджет + номер
	
	// получаем опции 
	$options = mso_get_option($widget, 'plugins', array());
	
	if ( !isset($options['header']) ) $options['header'] = '';
	if ( !isset($options['count']) ) $options['count'] = '';
	if ( !isset($options['htmldo']) ) $options['htmldo'] = '';
	if ( !isset($options['htmlposle']) ) $options['htmlposle'] = '';
	
	// вывод самой формы
	$CI = & get_instance();
	$CI->load->helper('form');
		
	$form = '<p><div class="t150">Заголовок:</div> '. form_input( array( 'name'=>$widget . 'header', 'value'=>$options['header'] ) ) ;
	$form .= '<p><div class="t150">Количество ссылок:</div> '. form_input( array( 'name'=>$widget . 'count', 'value'=>$options['count'] ) ) ;
	$form .= '<p><div class="t150">&nbsp;</div> Если этот виджет последний или единственный, то оставьте это поле пустым или 0';
	$form .= '<p><div class="t150">HTML до:</div> '. form_input( array( 'name'=>$widget . 'htmldo', 'value'=>$options['htmldo'] ) ) ;
	$form .= '<p><div class="t150">HTML после:</div> '. form_input( array( 'name'=>$widget . 'htmlposle', 'value'=>$options['htmlposle'] ) ) ;
	
	return $form;
}


# сюда приходят POST из формы настройки виджета
# имя функции = виджет_update
function sape_widget_update($num = 1) 
{
	$widget = 'sape_widget_' . $num; // имя для опций = виджет + номер
	
	// получаем опции
	$options = $newoptions = mso_get_option($widget, 'plugins', array());
	
	# обрабатываем POST
	$newoptions['header'] = mso_widget_get_post($widget . 'header');
	$newoptions['count'] = (int) mso_widget_get_post($widget . 'count');
	$newoptions['htmldo'] = mso_widget_get_post($widget . 'htmldo');
	$newoptions['htmlposle'] = mso_widget_get_post($widget . 'htmlposle');
	
	if ( $options != $newoptions ) 
		mso_add_option($widget, $newoptions, 'plugins');
}

# функция вывода виджета
function sape_widget_custom($options = array(), $num = 1)
{
	if ( !isset($options['header']) ) $options['header'] = '';
	if ( !isset($options['count']) ) $options['count'] = 0;
	if ( !isset($options['htmldo']) ) $options['htmldo'] = '';
	if ( !isset($options['htmlposle']) ) $options['htmlposle'] = '';
	
	$out = sape_out($options['count'] , false); // получаем ссылки
	
	if ($out == '<!--check code-->') // вернулся проверочный код
	{
		$out = '<!--check code-->Код <a href="http://www.sape.ru/r.aa92aef9c6.php" target="_blank">sape.ru</a> установлен верно!';
		return $out;
	}
	else if ($out and $options['header']) $out = $options['header'] . $options['htmldo'] . $out . $options['htmlposle'];
	
	return $out;
}

# функция вывода блока ссылок
function sape_out($count = 0, $echo = true)
{
	global $SAPE;
	
	$out = '';
	
	if (isset($SAPE) and $SAPE)
	{
		if ($count)
		{
			$out = $SAPE->return_links($count);
		}
		else
		{
			$out = $SAPE->return_links();
		}
	}
	
	if ($echo) echo $out;
		else return $out;	
}

# функция вывода контента
function sape_content($text = '')
{
	global $SAPE_CONTENT;
	
	if ($SAPE_CONTENT)
	{
		# $text = 'TEXT-DO ' . $SAPE_CONTENT->replace_in_text_segment($text) . ' TEXT-POSLE'; // контроль
		$text = $SAPE_CONTENT->replace_in_text_segment($text);
	}
	
	return $text;
}

?>