Перейти к содержанию

Модель комментариев

Цепочка наследования

Ваша модель комментариев расширяет несколько классов. А именно:

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

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

namespace IPS\yourApp;

class _Comment extends \IPS\Content\Comment
{
	/**
	* @brief [ActiveRecord] Multiton Store 
	*/
	protected static $multitons;

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

	/**
	* @brief [Content\Comment] Item Class 
	*/
	public static $itemClass = 'IPS\yourApp\YourClass';

	/**
	* @brief [ActiveRecord] Database Table 
	*/
	public static $databaseTable = 'yourapp_comments';

	/**
	* @brief [ActiveRecord] Database Prefix 
	*/
	public static $databasePrefix = 'comment_';

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

	/**
	* @brief Database Column Map 
	*/
	public static $databaseColumnMap = array(
		'item' => 'fid',
		'author' => 'mid',
		'author_name' => 'author',
		'content' => 'text',
		'date' => 'date',
		'ip_address' => 'ip_address'
	);
}

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

Модели комментариев требуют нескольких статических свойств для настройки их поведения, большинство из которых идентичны модели элемента контента. Многие из них относятся к классу 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();

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

  • item Обязательный. Должен содержать название столбца, который хранит ID элемента контента, к которому принадлежит этот комментарий.
  • author Обязательный. Должен содержать название столбца, который хранит номер ID пользователя, опубликовавшего контент.
  • content Обязательный. Должен содержать название столбца, который хранит фактический текст комментария.
  • date Обязательный. Должен содержать название столбца, который хранит unix-время даты публикации комментария.
  • ip_address Обязательный. Должен содержать название столбца, который хранит IP-адрес автора комментария.
  • author_name Необязательный. Может содержать название столбца, который хранит имя пользователя, опубликовавшего комментарий.
  • first Необязательный. Может содержать название столбца, который хранит логическое значение, указывающее, является ли этот комментарий первым у элемента.

public static $commentTemplate = 'string';

Необязательный. Задает шаблон, который будет использоваться для отображения комментария (смотрите метод html() ниже). Например:

array( array( 'global', 'core', 'front' ), 'commentContainer' );

public static $formTemplate = 'string';

Необязательный. Задает шаблон, который будет использоваться для отображения формы комментария. Например:

array( array( 'forms', 'core', 'front' ), 'commentTemplate' );

public static $formLangPrefix = 'string';

Необязательный. Указывает префикс для добавления к языковым строкам, используемым моделью, что позволяет создавать собственные языковые строки для вашей цели.

Доступные методы в модели комментариев

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

\IPS\Http\Url url( string $action )

Возвращает URL-адрес комментария, автоматически вычисляет правильный номер страницы, в том числе и якорь в нужном месте страницы. Этот метод уже определен для вас.

$action (string, необязательный) если параметр будет передан, добавится параметр 'do=value' в URL-адрес.

\IPS\Content\Item item()

Возвращает элемент контента, которому принадлежит этот комментарий.

IPS\Member author()

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

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

string truncated( [ boolean $oneLine ] )

Возвращает содержимое в формате, подходящем для использования с виджетом data-ipsTruncate.

$oneLine (boolean, необязательный, по умолчанию FALSE) - По умолчанию абзацы превращаются в разрыв строки. Если этот параметр имеет значение TRUE, параграфы заменяются пробелами вместо разрывов строк, что делает усеченный контент подходящим для однострочного отображения.

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

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

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

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

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

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

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

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

  • $type (string, обязательный) - Тип проверяемого разрешения. Допустимые значения:
  • edit.
  • delete.
  • move.
  • hide (если включено скрытие/одобрение).
  • unhide (если включено скрытие/одобрение).
  • view_hidden (если включено скрытие/одобрение)
  • $member (\IPS\Member, необязательный) - Если предоставлено, использует разрешения этого пользователя при выполнении проверки. По умолчанию используется текущий авторизованный пользователь.
  • $container (\IPS\Node\Model, необязательный) - Если предоставлено, проверяет разрешение именно в этом контейнере.

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

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

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

boolean isFirst()

Возвращает true или false, что указывает, является ли это первым комментарием элемента контента.

boolean isIgnored( [ \IPS\Member $member ] )

Указывает, игнорирует ли пользователь автора комментария.

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

string dateLine()

Возвращает строку, которая может использоваться в шаблонах, чтобы показывать, когда был добавлен комментарий, например. "Добавлено 2 часа назад".

string html()

Возвращает HTML-код для отображения комментария, обёрнутый в шаблон комментария.




×
×
  • Создать...

Важная информация

Используя наш сайт вы соглашаетесь с нашей Политикой конфиденциальности