%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/polls/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/polls/Events.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2015 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\polls; use humhub\modules\polls\models\Poll; use humhub\modules\polls\models\PollAnswer; use humhub\modules\polls\models\PollAnswerUser; use humhub\modules\polls\widgets\CloseButton; use humhub\modules\polls\widgets\ResetButton; use humhub\modules\space\models\Space; use humhub\modules\user\models\User; use Yii; use yii\base\Event; /** * Description of Events * * @author luke */ class Events { public static function onWallEntryControlsInit($event) { $object = $event->sender->object; if(!$object instanceof Poll) { return; } if($object->content->canEdit()) { $event->sender->addWidget(CloseButton::class, [ 'poll' => $object ]); } if($object->isResetAllowed()) { $event->sender->addWidget(ResetButton::class, [ 'poll' => $object ]); } } /** * On User delete, delete all poll answers by this user * * @param Event $event * @return bool */ public static function onUserDelete($event) { foreach (PollAnswerUser::findAll(array('created_by' => $event->sender->id)) as $answer) { $answer->delete(); } return true; } /** * Callback to validate module database records. * * @param Event $event * @throws \Throwable * @throws \yii\db\StaleObjectException */ public static function onIntegrityCheck($event) { $integrityController = $event->sender; $integrityController->showTestHeadline("Polls Module - Answers (" . PollAnswer::find()->count() . " entries)"); foreach (PollAnswer::find()->joinWith('poll')->all() as $answer) { if ($answer->poll === null) { if ($integrityController->showFix("Deleting poll answer id " . $answer->id . " without existing poll!")) { $answer->delete(); } } } $integrityController->showTestHeadline("Polls Module - Answers User (" . PollAnswerUser::find()->count() . " entries)"); foreach (PollAnswerUser::find()->joinWith(['poll', 'user'])->all() as $answerUser) { if ($answerUser->poll === null) { if ($integrityController->showFix("Deleting poll answer id " . $answerUser->id . " without existing poll!")) { $answerUser->delete(); } } if ($answerUser->user === null) { if ($integrityController->showFix("Deleting poll answer id " . $answerUser->id . " without existing user!")) { $answerUser->delete(); } } } } /** * Create installer sample data * * @param \yii\base\Event $event * @throws \yii\base\Exception */ public static function onSampleDataInstall($event) { /* @var Space $space */ $space = Space::find()->orderBy(['id' => SORT_ASC])->one(); // activate module at space $space->moduleManager->enable('polls'); // Switch Identity $user = User::find()->orderBy(['id' => SORT_ASC])->one(); Yii::$app->user->switchIdentity($user); $poll = new Poll(); $poll->scenario = Poll::SCENARIO_CREATE; $poll->question = Yii::t('PollsModule.events', 'Location of the next meeting'); $poll->description = Yii::t('PollsModule.events', "Right now, we are in the planning stages for our next meetup and we would like to know from you, where you would like to go?"); $poll->newAnswers = [ Yii::t('PollsModule.events', "To Daniel"), Yii::t('PollsModule.events', "Club A Steakhouse"), Yii::t('PollsModule.events', "Pisillo Italian Panini") ]; $poll->content->container = $space; $poll->allow_multiple = Yii::$app->request->post('allowMultiple', 0); if (!$poll->save()) { return; } // load users $user2 = User::find()->where(['username' => 'david1986'])->one(); $user3 = User::find()->where(['username' => 'sara1989'])->one(); // Switch Identity Yii::$app->user->switchIdentity($user2); // vote $poll->vote([2]); $comment = new \humhub\modules\comment\models\Comment(); $comment->message = Yii::t('PollsModule.events', "Why don't we go to Bemelmans Bar?"); $comment->object_model = $poll->className(); $comment->object_id = $poll->getPrimaryKey(); $comment->save(); // Switch Identity Yii::$app->user->switchIdentity($user3); // vote $poll->vote([3]); $comment = new \humhub\modules\comment\models\Comment(); $comment->message = Yii::t('PollsModule.events', "Again? ;Weary;"); $comment->object_model = $poll->className(); $comment->object_id = $poll->getPrimaryKey(); $comment->save(); // Switch Identity Yii::$app->user->switchIdentity($user); } public static function onRestApiAddRules() { /* @var \humhub\modules\rest\Module $restModule */ $restModule = Yii::$app->getModule('rest'); $restModule->addRules([ // List polls ['pattern' => 'polls', 'route' => 'polls/rest/polls/find', 'verb' => ['GET', 'HEAD']], ['pattern' => 'polls/container/<containerId:\d+>', 'route' => 'polls/rest/polls/find-by-container', 'verb' => ['GET', 'HEAD']], ['pattern' => 'polls/container/<containerId:\d+>', 'route' => 'polls/rest/polls/delete-by-container', 'verb' => 'DELETE'], // Poll CRUD ['pattern' => 'polls/container/<containerId:\d+>', 'route' => 'polls/rest/polls/create', 'verb' => 'POST'], ['pattern' => 'polls/poll/<id:\d+>', 'route' => 'polls/rest/polls/view', 'verb' => ['GET', 'HEAD']], ['pattern' => 'polls/poll/<id:\d+>', 'route' => 'polls/rest/polls/update', 'verb' => 'PUT'], ['pattern' => 'polls/poll/<id:\d+>', 'route' => 'polls/rest/polls/delete', 'verb' => 'DELETE'], // Close/Open Poll ['pattern' => 'polls/poll/<id:\d+>/close', 'route' => 'polls/rest/polls/close', 'verb' => 'PATCH'], ['pattern' => 'polls/poll/<id:\d+>/open', 'route' => 'polls/rest/polls/open', 'verb' => 'PATCH'], // Vote ['pattern' => 'polls/vote/<id:\d+>', 'route' => 'polls/rest/polls/vote', 'verb' => 'PUT'], ['pattern' => 'polls/vote/<id:\d+>', 'route' => 'polls/rest/polls/reset-vote', 'verb' => 'DELETE'], ['pattern' => 'polls/vote/<id:\d+>', 'route' => 'polls/rest/polls/votes', 'verb' => 'GET'], ], 'polls'); } }