<?php
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2008 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Ajax загрузчик формы списка меток.
 * 
 * Файл: /admin/tag/action/load_tags.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();
	$Tag = new Tag();

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

	// Выборка нужных записей.
	$param['data'][] = "SELECT *, `tags_table`.`tag_id` as code,
	SUM(IF(`tags_relation_table`.`site_id` = '".CURRENT_SITE."', 1, 0)) AS site_count,
	COUNT(`tags_relation_table`.`tag_id`) AS all_count
	FROM `tags_table` LEFT JOIN `tags_relation_table` 
	ON `tags_table`.`tag_id` = `tags_relation_table`.`tag_id`
	WHERE 1	{FILTER_STRING}		
	GROUP BY `tags_table`.`tag_id`	
	{ORDER_STRING} {LIMIT}";//
	//`tags_relation_table`.`site_id` = '".CURRENT_SITE."'

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

	// Формируем верхнее меню.
	$menu = array();

	// Метка
	$menu[$k = 0]['name'] = $GLOBALS['MSG_tag']['menu'];
	$menu[$k]['link'] = '';

	// Добавить
	$sub_menu = array();
	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_tag']['menu_add'];
	$sub_menu[$p]['link'] =  $admin_forms->GetHtmlCallTrigerSingleAction('edit_tag', 'check_0_0', 173, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('edit_tag', 'check_0_0', 173, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/add.gif';
	$p++;

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

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

	//Заголовок формы
	$param['title'] = $GLOBALS['MSG_tag']['title'];

	return $param;
}

/**
 * Определение реального имени столбца по псевдониму.
 *
 * @param string $field_name
 * @param integer $dataset_id
 * @return boolean
 */
function ResolveFieldName(&$field_name, $dataset_id)
{
	switch ($dataset_id)
	{
		case 0: // Список меток.
		{
			switch ($field_name)
			{
				case 'code':
					{
						$field_name = '`tags_table`.`tag_id`';
						break;
					}
				/*case 'site_count':
					{
						$field_name = 'site_count';
						break;
					}
				default:
					{
						$field_name = '';
						break;
					}*/
			}

			break;
		}
	}

	return true;
}

//Обработчики событий

/**
 * Редактирование метки
 *
 * @param unknown_type $param
 * @return unknown
 */
function edit_tag(&$param)
{
	ob_start();

	// Установлен режим "только для чтения"
	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		// Редактирование данных первого источника (меток)
		if (isset($param['data'][0]))
		{
			$Tag = & singleton('Tag');

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

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

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

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					$tag_id = intval($key);
					include(CMS_FOLDER . 'admin/tag/action/form_edit_add_tag.php');

					// Title для страницы
					$param['title'] = $tag_id == 0
					? $GLOBALS['MSG_tag']['form_edit_add_title_add']
					: $GLOBALS['MSG_tag']['form_edit_add_title_edit'];

					// Редактировать можно только 1 элемент
					break;
				}
				else
				{
					$user_access->MessageOnlyOwn();
				}
			}
		}
	}
	$param['result'] = ob_get_clean();

	return true;
}

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

	// Установлен режим "только для чтения"
	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		$count_deleted = 0;

		// Удаление данных первого источника (категорий тикетов)
		if (isset($param['data'][0]))
		{
			$Tag = & singleton('Tag');

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

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

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

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					// Удаление категории тикетов
					if (!$Tag->DeleteTag($key))
					{
						$flag_success_catalog = false;
					}
					else
					{
						++$count_deleted;

						$flag_success_catalog = true;
					}
				}
				else
				{
					$user_access->MessageOnlyOwn();

					$flag_success_catalog = false;
				}
			}

			// Сообщения на странице
			// Удаление завершено успешно
			if ($flag_success_catalog)
			{
				if ($count_deleted == 1)
				{
					show_message($GLOBALS['MSG_tag']['delete_tag_one_success']);
				}
				else
				{
					show_message($GLOBALS['MSG_tag']['delete_tag_many_success']);
				}
			}
			// Ошибка удаления
			else
			{
				show_error_message($GLOBALS['MSG_tag']['delete_tag_error']);
			}
		}
	}

	$param['error'] = ob_get_clean();
}
?>