%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/cfiles/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/cfiles/Events.php |
<?php namespace humhub\modules\cfiles; use humhub\modules\cfiles\models\File; use humhub\modules\cfiles\models\Folder; use humhub\modules\content\components\ContentContainerActiveRecord; use humhub\modules\content\models\ContentContainer; use humhub\modules\content\models\ContentContainerModuleState; use humhub\modules\file\actions\DownloadAction; use humhub\modules\file\models\File as BaseFile; use humhub\modules\space\models\Space; use humhub\modules\user\models\User; use Yii; use yii\base\Event; /** * cfiles Events * * @author luke */ class Events { public static function onSpaceMenuInit($event) { if ($event->sender->space !== null && $event->sender->space->moduleManager->isEnabled('cfiles')) { $event->sender->addItem([ 'label' => Yii::t('CfilesModule.base', 'Files'), 'group' => 'modules', 'url' => $event->sender->space->createUrl('/cfiles/browse'), 'icon' => '<i class="fa fa-files-o"></i>', 'isActive' => (Yii::$app->controller->module && Yii::$app->controller->module->id == 'cfiles') ]); } } /** * Callback to validate module database records. * * @param Event $event */ public static function onIntegrityCheck($event) { $integrityController = $event->sender; $integrityController->showTestHeadline("CFile Module (" . File::find()->count() . " entries)"); foreach (File::find()->all() as $file) { /* @var $file \humhub\modules\cfiles\models\File */ // If parent_folder_id is 0 or null its an old root child which is not merged yet. if (!empty($file->parent_folder_id) && empty($file->parentFolder)) { if ($integrityController->showFix("Deleting cfile id " . $file->id . " without existing parent!")) { $file->delete(); } } } $integrityController->showTestHeadline("CFile Module (" . File::find()->count() . " entries)"); foreach (Folder::find()->all() as $folder) { /* @var $file \humhub\modules\cfiles\models\File */ // If parent_folder_id is 0 or null its either an old root child which is not merged yet or an root directory. if (!empty($folder->parent_folder_id) && empty($folder->parentFolder)) { if ($integrityController->showFix("Deleting cfile folder id " . $folder->id . " without existing parent!")) { $folder->delete(); } } } } public static function onProfileMenuInit($event) { if ($event->sender->user !== null && $event->sender->user->moduleManager->isEnabled('cfiles')) { $event->sender->addItem([ 'label' => Yii::t('CfilesModule.base', 'Files'), 'url' => $event->sender->user->createUrl('/cfiles/browse'), 'icon' => '<i class="fa fa-files-o"></i>', 'isActive' => (Yii::$app->controller->module && Yii::$app->controller->module->id == 'cfiles') ]); } } /** * Callback on after file controller action * * @param Event $event */ public static function onAfterFileAction(Event $event) { if (isset($event->action) && $event->action instanceof DownloadAction && ($downloadedFile = File::getFileByGuid(Yii::$app->request->get('guid'))) ) { $downloadedFile->updateAttributes(['download_count' => $downloadedFile->download_count + 1]); } } /** * Callback when user or space is inserted * * @param Event $event */ public static function onContentContainerActiveRecordInsert($event) { /** * @var ContentContainerActiveRecord|Space|User $container */ $container = $event->sender; if ($container instanceof ContentContainerActiveRecord && $container->moduleManager->isEnabled('cfiles')) { Folder::initRoot($container); Folder::initPostedFilesFolder($container); } } /** * Callback when module is enabled first time * * @param Event $event */ public static function onContentContainerModuleStateInsert($event) { /** * @var ContentContainerModuleState $moduleState */ $moduleState = $event->sender; if (!($moduleState instanceof ContentContainerModuleState && $moduleState->module_id == 'cfiles' && $moduleState->module_state)) { return; } if (($contentContainer = ContentContainer::findOne(['id' => $moduleState->contentcontainer_id])) && ($container = $contentContainer->getPolymorphicRelation())) { Folder::initRoot($container); Folder::initPostedFilesFolder($container); } } public static function onRestApiAddRules() { /* @var \humhub\modules\rest\Module $restModule */ $restModule = Yii::$app->getModule('rest'); $restModule->addRules([ //File ['pattern' => 'cfiles/files/container/<containerId:\d+>', 'route' => 'cfiles/rest/file/find-by-container', 'verb' => 'GET'], ['pattern' => 'cfiles/files/container/<containerId:\d+>', 'route' => 'cfiles/rest/file/upload', 'verb' => 'POST'], ['pattern' => 'cfiles/file/<id:\d+>', 'route' => 'cfiles/rest/file/view', 'verb' => ['GET', 'HEAD']], ['pattern' => 'cfiles/file/<id:\d+>', 'route' => 'cfiles/rest/file/delete', 'verb' => 'DELETE'], //Folder ['pattern' => 'cfiles/folders/container/<containerId:\d+>', 'route' => 'cfiles/rest/folder/find-by-container', 'verb' => 'GET'], ['pattern' => 'cfiles/folders/container/<containerId:\d+>', 'route' => 'cfiles/rest/folder/create', 'verb' => 'POST'], ['pattern' => 'cfiles/folder/<id:\d+>', 'route' => 'cfiles/rest/folder/view', 'verb' => ['GET', 'HEAD']], ['pattern' => 'cfiles/folder/<id:\d+>', 'route' => 'cfiles/rest/folder/update', 'verb' => 'PUT'], ['pattern' => 'cfiles/folder/<id:\d+>', 'route' => 'cfiles/rest/folder/delete', 'verb' => 'DELETE'], //Items management ['pattern' => 'cfiles/items/container/<containerId:\d+>/make-public', 'route' => 'cfiles/rest/manage/make-public', 'verb' => 'PATCH'], ['pattern' => 'cfiles/items/container/<containerId:\d+>/make-private', 'route' => 'cfiles/rest/manage/make-private', 'verb' => 'PATCH'], ['pattern' => 'cfiles/items/container/<containerId:\d+>/move', 'route' => 'cfiles/rest/manage/move', 'verb' => 'POST'], ['pattern' => 'cfiles/items/container/<containerId:\d+>/delete', 'route' => 'cfiles/rest/manage/delete', 'verb' => 'DELETE'], ], 'cfiles'); } public static function onAfterNewStoredFile($event) { $baseFile = $event->sender; if (!($baseFile instanceof BaseFile)) { return; } $file = File::findOne($baseFile->object_id); if (!$file) { return; } $file->content->updateAttributes([ 'updated_at' => $baseFile->updated_at, 'updated_by' => $baseFile->updated_by, ]); } }