<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2008 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Ajax загрузчик для формы списка сайтов.
 * 
 * Файл: /admin/site/action/load_site.php
 * 
 * @author Hostmake LLC
 * @version 5.2
 */
function LoadAjaxData(&$admin_forms)
{
	$on_page = $admin_forms->GetOnPageCount();	$page = to_int($_REQUEST['limit']);
	$begin = ($page == 0) ? 0 : ($page - 1) * $on_page;

	$param = array();

	$param['limit'][0] = array('begin' => $begin, 'count' => $on_page);

	// Выборка нужных записей.
	$param['data'][] = "SELECT *
	FROM site_table 
	WHERE (1)
	{FILTER_STRING} 
	{ORDER_STRING} 
	{LIMIT}";

	// Число нужных записей.
	$count = "SELECT count(site_id) as count
	FROM site_table 
	WHERE (1)
	{FILTER_STRING}";

	// Формируем верхнее меню.
	$menu = array();
	$menu[$k = 0]['name'] = $GLOBALS['MSG_site']['site_show_site_title'];
	$menu[$k]['link'] = '';
	$menu[$k]['icon'] = '';

	$sub_menu = array();
	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_site']['site_link_add'];
	$sub_menu[$p]['link'] = $admin_forms->GetHtmlCallTrigerSingleAction('edit_site', 'check_0_0', 42, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('edit_site', 'check_0_0', 42, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/site_add.gif';

	// Добавляем подэлементы.
	$menu[$k]['sub_items'] = $sub_menu;

	$menu[++$k]['name'] = $GLOBALS['MSG_site']['menu2_caption'];
	$menu[$k]['link'] = '';
	$menu[$k]['icon'] = '';

	$sub_menu = array();
	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_site']['menu2_sub_caption'];
	$sub_menu[$p]['link'] = $admin_forms->GetHtmlCallTrigerSingleAction('show_regdata', 'check_0_0', 42, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('show_regdata', 'check_0_0', 42, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/application_form.gif';

	// Добавляем подэлементы.
	$menu[$k]['sub_items'] = $sub_menu;

	$param['field_params'][0]['site_is_active']['admin_forms_field_type'] = 7; // картинка-ссылка
	$param['field_params'][0]['site_is_active']['admin_forms_field_link'] = $admin_forms->GetHtmlCallTrigerSingleAction('active_site', 'check_0_{site_id}', 42, 0, 0);
	$param['field_params'][0]['site_is_active']['admin_forms_field_onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('active_site', 'check_0_{site_id}', 42, 0, 0);

	$param['total_count'][] = $count;
	$param['current_page'] = $page;
	$param['on_page'] = $on_page;
	$param['menus'] = array($menu);

	$param['title'] = $GLOBALS['MSG_site']['site_show_site_title_list'];
	return $param;
}


/**
 * Обработчик события "Удалить сайт"
 *
 * @param array $param
 */
function delete_site(&$param)
{
	ob_start();

	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		$site = & singleton ('site');

		$count = 0;

		if (isset($param['data'][0]))
		{
			// Получаем количество сайтов поддерживаемых системой
			$site_resource = $site->SelectSites();

			// Число сайтов поддерживаемых системой
			$count_sites = mysql_num_rows($site_resource);

			$user_access = new user_access();

			foreach ($param['data'][0] as $key => $value)
			{
				$key = intval($key);
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				// Определяем информацию об объекте (сайте)
				$object_res = $site->select_site($key);

				if (mysql_num_rows($object_res) == 1)
				{
					if ($object_res)
					{
						$object_row = mysql_fetch_assoc($object_res);
					}

					if ($object_row)
					{
						$object_user_id = $object_row['users_id'];
					}
					else
					{
						$object_user_id = 0;
					}
				}
				else
				{
					$object_user_id = 0;
				}

				if ($count_sites == 1)
				{
					$last_site = true;
					break;
				}

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					// Получаем список суперюзеров центра администрирования, не связанных с удаляемым сайтом
					$query = "SELECT users_table.users_id
								FROM users_table, users_type_table 
								WHERE users_table.users_type_id = users_type_table.users_type_id AND 
								users_table.users_superuser = 1 AND users_type_table.site_id != $key";

					$DataBase = & singleton('DataBase');

					$superusers_resource = $DataBase->select($query);

					$count_superusers = mysql_num_rows($superusers_resource);

					// В других, поддерживаемых системой, сайтах присутствуют суперюзеры и не было ошибки удаления сайта
					if ($count_superusers > 0 && $site->del_site($key))
					{
						$count_sites--;
						$count++;

						$flag_success = true;
					}
					else
					{
						$flag_success = false;
					}
				}
				else
				{

					$user_access->MessageOnlyOwn();

					$flag_success = false;
				}
			}

			if (isset($flag_success) && $flag_success)
			{
				if ($count == 1)
				{
					show_message($GLOBALS['MSG_site']['site_delete_site_message']);
				}
				else
				{
					show_message($GLOBALS['MSG_site']['site_delete_sites_message']);
				}
			}

			if (isset($last_site) && $last_site)
			{
				show_error_message($GLOBALS['MSG_site']['site_delete_last_sites_message']);
			}

			if (isset($count_superusers) && $count_superusers == 0)
			{
				show_error_message($GLOBALS['MSG_site']['site_delete_superusers_sites_message']);
			}
		}
		else
		{
			show_message($GLOBALS['MSG_site']['error_delete_site']);
		}
	}
	$param['error'] = ob_get_clean();
}

/**
 * Обработчик события "Копировать сайт"
 *
 * @param array $param
 */
function copy_site(&$param)
{
	ob_start();

	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		$site = & singleton ('site');

		$count = 0;

		if (isset($param['data'][0]))
		{
			foreach ($param['data'][0] as $key => $value)
			{
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				$user_access = new user_access();

				$site = & singleton ('site');

				// Определяем информацию об объекте
				$object_res = $site->select_site($key);

				if (mysql_num_rows($object_res) == 1)
				{
					if ($object_res)
					{
						$object_row = mysql_fetch_assoc($object_res);
					}

					if ($object_row)
					{
						$object_user_id = $object_row['users_id'];
					}
					else
					{
						$object_user_id = 0;
					}
				}
				else
				{
					$object_user_id = 0;
				}


				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					$site->CopySite($key);

					$flag_success = true;

					$count++;
				}
				else
				{
					$user_access->MessageOnlyOwn();

					$flag_success = false;
				}
			}

			if ($flag_success)
			{
				if ($count == 1)
				{
					show_message($GLOBALS['MSG_site']['copy_site_success']);
				}
				else
				{
					show_message($GLOBALS['MSG_site']['copy_sites_success']);
				}
			}
		}
		else
		{
			show_message($GLOBALS['MSG_site']['copy_site_error']);
		}
	}
	$param['error'] = ob_get_clean();
}


/**
 * Обработчик события "Редактировать сайт"
 *
 * @param array $param
 * @return boolean
 */
function edit_site(&$param)
{
	ob_start();
	if (isset($param['data'][0]))
	{
		foreach ($param['data'][0] as $key => $value)
		{
			// Определяем режим доступа пользователя и принадлежит ли объект пользователю
			$user_access = new user_access();

			$site = & singleton ('site');

			// Определяем информацию об объекте
			$object_res = $site->select_site($key);

			if (mysql_num_rows($object_res) == 1)
			{
				if ($object_res)
				{
					$object_row = mysql_fetch_assoc($object_res);
				}

				if ($object_row)
				{
					$object_user_id = $object_row['users_id'];
				}
				else
				{
					$object_user_id = 0;
				}
			}
			else
			{
				$object_user_id = 0;
			}


			if ($user_access->IssetUserAccessForObject($object_user_id))
			{
				$site_id = intval($key);
				include(CMS_FOLDER.'/admin/site/action/add_edit_site_form.php');
				$param['title'] = $site_id == 0
				? $GLOBALS['MSG_site']['site_add_site_form_title']
				: $GLOBALS['MSG_site']['site_edit_site_form_title'];
				break;
			}
			else
			{
				$user_access->MessageOnlyOwn();
				$param['error'] = ob_get_clean();
				return ;
			}
		}
	}

	$param['result'] = ob_get_clean();
	return true;
}

/**
 * Обработчик события "Показать настройки"
 *
 * @param array $param
 * @return boolean
 */
function show_regdata(&$param)
{
	ob_start();

	if (isset($param['data'][0]))
	{
		foreach ($param['data'][0] as $key => $value)
		{

			$site_id = intval($key);
			include(CMS_FOLDER.'/admin/site/action/form_edit_add_registration_data.php');
			$param['title'] = $GLOBALS['MSG_site']['edit_registration_data'];
			break;

		}
	}

	$param['result'] = ob_get_clean();

	return true;
}

/**
 * Обработчик события "Применить изменения"
 *
 * @param array $param
 */
function apply_change(&$param)
{
	ob_start();

	$site = & singleton ('site');

	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		if (isset($param['data'][0]) && is_array($param['data'][0]))
		{
			foreach ($param['data'][0] as $key => $row)
			{
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				$user_access = new user_access();

				$site = & singleton ('site');

				// Определяем информацию об объекте
				$object_res = $site->select_site($key);

				if (mysql_num_rows($object_res) == 1)
				{
					if ($object_res)
					{
						$object_row = mysql_fetch_assoc($object_res);
					}

					if ($object_row)
					{
						$object_user_id = $object_row['users_id'];
					}
					else
					{
						$object_user_id = 0;
					}
				}
				else
				{
					$object_user_id = 0;
				}


				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					// Выбираем данные о сайте
					$site_param = $site->GetSite($key);

					$site_param['site_order'] = to_int($row['site_order']);

					$site->insert_site($site_param);
				}
				else
				{
					$user_access->MessageOnlyOwn();
				}
			}
		}
	}
	$param['error'] = ob_get_clean();
}

/**
 * Обработчик события включения/выключения активности
 *
 * @param array $param
 */
function active_site(&$param)
{
	ob_start();
	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		if (isset($param['data'][0]))
		{
			$DataBase = &singleton('DataBase');
			foreach ($param['data'][0] as $key => $value)
			{
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				$user_access = new user_access();

				$site = & singleton ('site');

				// Определяем информацию об объекте
				$object_res = $site->select_site($key);

				if (mysql_num_rows($object_res) == 1)
				{
					if ($object_res)
					{
						$object_row = mysql_fetch_assoc($object_res);
					}

					if ($object_row)
					{
						$object_user_id = $object_row['users_id'];
					}
					else
					{
						$object_user_id = 0;
					}
				}
				else
				{
					$object_user_id = 0;
				}


				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					$query = "UPDATE `site_table` SET `site_is_active` = 1 - `site_is_active` WHERE `site_id` = '".intval($key)."'";
					$DataBase->query($query);
				}
				else
				{
					$user_access->MessageOnlyOwn();
				}
			}
		}
	}
	$error = ob_get_clean();

	$param['error'] = $error;
}
?>