Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом Телицкий.doc
Скачиваний:
206
Добавлен:
09.02.2016
Размер:
4.72 Mб
Скачать

Управление зарезервированными полями

Наша таблица содержит все зарезервированные поля, которыми мы можем управлять с помощью методов класса JTable. Рассмотрим управление этими полями подробнее.

Publishing

Для публикации и снятия с публикации мы можем использовать метод publish(). Если таблица содержит поле checked_ out, то мы можем быть уверены что запись таблицы не редактируется другим пользователем. Приведем пример публикации:

$publishIds = array($id);

$user =& JFactory::getUser();

if (!$table->publish($publishIds, 1, $user->get('id')))

{

// обрабатываем ошибки

}

Первый параметр - это массив из id записей, которые нужно опубликовать или снять с публикации. Второй параметр необязательный, и указывает публикуем мы запись (значение 1), или снимаем с публикации (значение 0). По-умолчанию имеет значение 1. Последний параметр используется только в случае, если существует поле checked_out, и указывает id пользователя редактирующего запись. Метод возвращает значение true если все прошло успешно.

Hits

Произвести инкремент над записью можно с помощью метода hit(). Для примера мы установим id записи и выполним инкремент.

$table->set('id', $id);

$table->hit();

Также мы можем указать в параметре метода hit() нужный нам id. Но мы должны помнить что при этом обновиться буфер.

$table->hit($id);

Checking Out

Перед тем как мы начнем блокировать наши записи, мы должны убедиться что запись уже не заблокирована. Это нужно, чтобы не получилось, что несколько пользователей одновременно редактируют одну запись. Для этого мы можем использовать метод isCheckOut(). В этом примере мы выполняем проверку:

$table->load($id);

$user =& JFactory::getUser();

if ($table->isCheckedOut($user->get('id')))

{

// выполняем действия если запись заблокирована

}

Далее мы блокируем запись под пользователя:

$table->load($id);

$user =& JFactory::getUser();

if (!$table->checkout($user->get('id')))

{

// обрабатываем ошибки

}

Для того чтобы обрабатывать запись используем следующий метод:

$table->load($id);

$user =& JFactory::getUser();

if (!$table->checkin($user->get('id')))

{

// обрабатываем ошибки

}

Запомните, что эти методы можно использовать только для залогенных пользователей.

Ordering

Когда мы хотим расположить элементы в определенном порядке, JTable предоставляет нам для этого набор методов. Первый из рассмотренных нами методов будет reorder(). Этот метод исправляет ошибки в порядке расположения записей в таблице.

$table->reorder();

В более сложных таблицах записи обычно разбиты по группам, и для этого в метод reorder() нужно дописать дополнительный параметр. Представим, что в нашей таблице есть поле group. В этом примере мы упорядочим записи в группе 1.

$db =& $table::getDBO();

$where = $db->nameQuote('group').' = 1';

$table->reorder($where)

Заметьте, что мы получаем объект базы данных не из JFactory, а из таблицы! Ранее мы уже использовали метод getNextOrder(). Метод выдает нам следующую позицию в порядке упорядочивания. Как и в случае с reorder(), мы имеем возможность определения груп. Например, получим следующий номер порядка для группы 1.

$db =& $table::getDBO();

$where = $db->nameQuote('group').' = 1';

$nextPosition = $table->getNextOrder($where);

И последний метод - это move(). Он нужен для перемещения записи на одну позицию вверх или вниз. Переместим на примере запись вверх.

 

$table->load($id); $table->move(-1); Опять у нас есть возможность для указания групп. Покажем это на примере:

$db =& $table::getDBO();

$where = $db->nameQuote('group').' = 1';

$table->load($id);

$table->move(1, $where)