Jump to content

Модель элемента контента

Наследственная цепочка

Ваша модель контента расширяет несколько классов. В свою очередь, это:

  • \IPS\Content\Item - Предоставляет возможности Элементов Контента. Данный класс содержит весь код для различных дополнительных функций элементов контента, которые вы активируете, добавив свойства и интерфейсы в вашу модель.
  • \IPS\Content - Предоставляет небольшое количество функций, которые являются общими для моделей Элемента Контента и моделей Комментария Контента (проясним позже) таких, как получение автора и работа с $databaseColumnMap.
  • \IPS\Patterns\ActiveRecord - Обеспечивает функциональность загрузки элементов из базы данных, работы с их свойствами, сохранения и удаления. Дополнительную информацию об этом классе см. в документе Active Records.

Основной скелет

<?php
namespace IPS\yourapp;

class _YourClass extends \IPS\Content\Item
{
	/**
	* @brief Multiton Store 
	*/
	protected static $multitons;

	/**
	* @brief Default Values 
	*/
	protected static $defaultValues = NULL;

	/**
	* @brief Application 
	*/
	public static $application = 'yourapp';

	/**
	* @brief Module 
	*/
	public static $module = 'yourmodule';

	/**
	* @brief Database Table 
	*/
	public static $databaseTable = 'table';

	/**
	* @brief Database Prefix 
	*/
	public static $databasePrefix = 'prefix_';

	/**
	* @brief Database Column Map 
	*/
	public static $databaseColumnMap = array( 
		'author' => 'author'
	);

	/**
	* @brief Title
	*/
	public static $title = thing’;

	/**
	* Get URL
	*
	* @param string|NULL
	* @return \IPS\Http\Url 
	*/
	public function url( $action=NULL )
	{
		$url = \IPS\Http\Url::internal( ... );
		if ( $action )
		{
	   		$url = $url->setQueryString( 'do', $action );
		}
		return $url;
	}
}

Указание свойств класса

Модели Элемента Контента требуют указания нескольких статических свойств для настройки их поведения. Многие из них относятся к классу Active Records.

public static $application = 'string';

Обязательное. Ключ приложения, к которому принадлежит элемент контента.

public static $module = 'string';

Обязательное. Ключ модуля, к которому принадлежит элемент контента.

public static $multitons = array();
public static $defaultValues = NULL;

Обязательное. Наследуется от \IPS\Patterns\ActiveRecord.
Эти два свойства обязательны по требованию \IPS\Patterns\ActiveRecord. Их нет необходимости переназначать; они просто должны быть определены.

public static $databaseTable = 'string';

Обязательное. Наследуется от \IPS\Patterns\ActiveRecord.
Имя таблицы базы данных, в которой хранятся эти элементы контента.

public static $databasePrefix = 'string';

Необязательное. Наследуется от \IPS\Patterns\ActiveRecord. 
Указывает префикс поля, используемый этой таблицей.

public static $databaseColumnMap = array();

Обязательное. Возможности, предоставленные классами выше, которые расширяет ваша модель, будут проверять этот массив, чтобы узнать, какие столбцы хранятся в вашей базе данных. Требуются следующие элементы, и во всех случаях значение с $databasePrefix опущено:

  • author - Должно содержать имя столбца, содержащего ID пользователя, разместившего контент.
  • title - Должно содержать имя столбца, содержащего заголовок контента.
  • date - Должно содержать имя столбца, который содержит UNIX-время, когда был создан элемент контента.
  • ip_address - Должно содержать имя столбца (без $databasePrefix), который содержит IP-адрес пользователя, разместившего контент.

public string $title = 'string';

Ключ для языковой строки, описывающий то, чем является ваш элемент контента (Например, 'Тема', 'Файла', 'Изображение', и т.д.)

Доступные методы моделей Элементов Контента

В дополнение к тем методам, которые предоставляются \IPS\Patterns\ActiveRecord (которые работают точно так же, как и для нод), доступен ряд дополнительных методов.

\IPS\Patterns\ActiveRecordIterator static getItemsWithPermission( ... )

Получает элементы контента, к которым у текущего пользователя есть доступ. Смотрите phpDoc в файле /system/Content/Item.php для просмотра всех поддерживаемых аргументов.

\IPS\Member author()

Возвращает объект \IPS\Member пользователя, разместившего элемент контента. Например:

$item = YourClass::load( 1 );
$user = $item->author();
echo $user->name;

boolean canView( [ \IPS\Member $member=NULL ] )

Возвращает логическое значение, указывающее, может ли предоставленный пользователь просматривать элемент контента. По умолчанию всегда будет возвращать значение TRUE, но зависит от включены ли разрешения и если включено Hiding.

  • $member (\IPS\Member, optional) - Если предоставлено, используются разрешения текущего пользователя при выполнении проверки. По умолчанию будет использоваться текущий пользователь.

boolean canEdit( [ \IPS\Member $member=NULL ] )

Возвращает логическое значение, указывающее, может ли предоставленный пользователь редактировать элемент контента.

  • $member (\IPS\Member, optional) - Если предоставлено, используются разрешения текущего пользователя при выполнении проверки. По умолчанию будет использоваться текущий пользователь.

boolean canDelete( [ \IPS\Member $member=NULL ] )

Возвращает логическое значение, указывающее, может ли предоставленный пользователь удалить элемент контента.

  • $member (\IPS\Member, optional) - Если предоставлено, используются разрешения текущего пользователя при выполнении проверки. По умолчанию будет использоваться текущий пользователь.

boolean static modPermission( string $type [, \IPS\Member $member=NULL [, \IPS\Node\Model $container=NULL ] ] )

Возвращает логическое значение, указывающее, имеет ли предоставленный пользователь разрешение выполнить действие, указанное параметром $type в указанном контейнере $container (если предоставлен).

$type (string, required)
Тип проверяемого разрешения. Допустимые значения:

  • edit
  • delete
  • move
  • feature (если включена такая возможность)
  • unfeature (если включена такая возможность)
  • pin (если включена такая возможность)
  • unpin (если включена такая возможность)
  • lock (если включена такая возможность)
  • unlock (если включена такая возможность)
  • hide (если включена такая возможность)
  • unhide (если включена такая возможность)
  • view_hidden (если включена такая возможность)

$member (\IPS\Member, optional)
Если предоставлено, используются разрешения текущего пользователя при выполнении проверки. По умолчанию будет использоваться текущий пользователь.

$container (\IPS\Node\Model, optional)
Если предоставлено, проверяет разрешение именно в этом контейнере ноды.

void modAction( string $type [, \IPS\Member $member=NULL [, string $reason=NULL ] ] )

Выполняет указанное действие модерации. Выбрасывает исключение OutOfRangeException, если пользователь не имеет разрешения на выполнение этого действия.

  • $type (строка, обязательно) - Тип выполняемого действия модерации. Допустимые значения можете найти в списке предыдущего метода.
  • $member (\IPS\Member, необязательно) - Если предоставлено, используются разрешения текущего пользователя при выполнении проверки. По умолчанию будет использоваться текущий пользователь.
  • $reason (строка, необязательно) - Используется только для действий скрыть/показать; определяет причину, по которой предпринимается действие.



Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy