Реализуя опросы в вашем приложении, пользователи смогут создать опрос при создании нового элемента контента. Процесс выполняется автоматически; новая вкладка будет отображаться в форме создания элемента, которая позволит управлять опросом.
Как реализовать опросы
Во-первых, ваша модель элемента контента должна реализовать интерфейс опроса, например:
implements \IPS\Content\Polls
Затем добавьте ключ в ваше свойство $databaseColumnMap со значением, являющимся названием столбца базы данных, хранящего ID опроса для данного элемента (обратите внимание, вы можете иметь только один опрос для одного элемента контента).
Наконец, отобразите опрос в шаблоне просмотра элемента контента. Например:
{$item->getPoll()|raw}
Выполнение дополнительных действий после голосования
При желании, ваша модель может быть оповещена, когда пользователь голосует в опросе. Для добавления поддержки этого, вы должны реализовать SPL Observer:
implements \SplObserver
В вашей модели добавьте метод обновления, который будет вызван, когда опрос получает голоса:
void update( \IPS\Poll $poll )
- $poll (\IPS\Poll) - Опрос, на который проголосовали.
Наконец, при отображении вашего элемента контента присоедините элемент к опросу. Например:
if ( $poll = $item->getPoll() )
{
$poll->attach( $item );
}
Дополнительные доступные методы модели
boolean static canCreatePoll( [ \IPS\Member $member [, \IPS\Node\Model $container ] ] )
Указывает, может ли пользователь создать опрос.
- $member (\IPS\Member, необязательный) - Пользователь, разрешения которого должны быть проверены. По умолчанию будет использоваться текущий авторизованный пользователь.
- $container (\IPS\Node\Model, необязательный) - Проверяет, могут ли быть созданы опросы в этом контейнере.
\IPS\Poll getPoll()
Возвращает опрос для этого элемента (или NULL, если опроса у элемента нет).