芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/www/cloud.pulsehost.co.uk/modules/ActivityHistory/Module.php
oManager = new Manager($this); $this->subscribeEvent('AddToActivityHistory', array($this, 'onAddToActivityHistory')); $this->subscribeEvent('Files::Delete::after', array($this, 'onAfterFilesDelete')); $this->subscribeEvent('Files::DeletePublicLink::after', array($this, 'onAfterFilesDeletePublicLink')); $this->subscribeEvent('CreatePublicLink::after', array($this, 'onAfterFilesCreatePublicLink')); $this->subscribeEvent('OpenPgpFilesWebclient::ValidatePublicLinkPassword::after', array($this, 'onAfterValidatePublicLinkPassword')); $this->subscribeEvent('Core::DeleteUser::after', array($this, 'onAfterDeleteUser')); $this->aDeniedMethodsByWebApi = []; } /** * @return Module */ public static function getInstance() { return parent::getInstance(); } /** * @return Module */ public static function Decorator() { return parent::Decorator(); } /** * @return Settings */ public function getModuleSettings() { return $this->oModuleSettings; } public function onAddToActivityHistory($aParams, &$mResult) { $iUserId = 0; if (is_numeric($aParams['UserId'])) { $iUserId = $aParams['UserId']; } else { $oUser = \Aurora\Modules\Core\Module::getInstance()->GetUserByPublicId($aParams['UserId']); if ($oUser) { $iUserId = $oUser->Id; } } $sGuestPublicId = isset($aParams['GuestPublicId']) ? $aParams['GuestPublicId'] : null; $this->Create($iUserId, $aParams['ResourceType'], $aParams['ResourceId'], $aParams['Action'], $sGuestPublicId); } public function onAfterFilesDelete(&$aArgs, &$mResult) { $iUserId = $aArgs['UserId']; $sStorage = $aArgs['Type']; $aItems = $aArgs['Items']; foreach ($aItems as $aItem) { $sResourceId = $sStorage . '/' . \ltrim(\ltrim($aItem['Path'], '/') . '/' . \ltrim($aItem['Name'], '/'), '/'); $this->Delete($iUserId, 'file', $sResourceId); } } public function onAfterFilesCreatePublicLink(&$aArgs, &$mResult) { $iUserId = $aArgs['UserId']; $sStorage = $aArgs['Type']; $sResourceId = $sStorage . '/' . \ltrim(\ltrim($aArgs['Path'], '/') . '/' . \ltrim($aArgs['Name'], '/'), '/'); $this->Create($iUserId, 'file', $sResourceId, 'create-public-link'); } public function onAfterValidatePublicLinkPassword(&$aArgs, &$mResult) { if (!$mResult) { $this->CreateFromHash($aArgs['Hash'], 'wrong-password'); } } public function onAfterFilesDeletePublicLink(&$aArgs, &$mResult) { $iUserId = $aArgs['UserId']; $sStorage = $aArgs['Type']; $sResourceId = $sStorage . '/' . \ltrim(\ltrim($aArgs['Path'], '/') . '/' . \ltrim($aArgs['Name'], '/'), '/'); $this->Delete($iUserId, 'file', $sResourceId); } public function onAfterDeleteUser($aArgs, &$mResult) { if ($mResult) { ActivityHistory::where('UserId', $aArgs['UserId'])->delete(); } } /***** private functions *****/ /***** public functions might be called with web API *****/ /** */ public function Create($UserId, $ResourceType, $ResourceId, $Action, $GuestPublicId = null) { \Aurora\System\Api::checkUserRoleIsAtLeast(\Aurora\System\Enums\UserRole::Anonymous); $IpAddress = ""; if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $IpAddress = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $IpAddress = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $IpAddress = $_SERVER['REMOTE_ADDR']; } if (!isset($GuestPublicId)) { $oUser = \Aurora\System\Api::getAuthenticatedUser(); if ($oUser) { $GuestPublicId = $oUser->PublicId; } else { $GuestPublicId = ''; } } return $this->oManager->Create($UserId, $ResourceType, $ResourceId, $IpAddress, $Action, time(), $GuestPublicId); } public function CreateFromHash($Hash, $EventName) { $oMin = \Aurora\Modules\Min\Module::getInstance(); $mMin = $oMin->GetMinByHash($Hash); if (isset($mMin['UserId']) && isset($mMin['Type']) && isset($mMin['Path']) && isset($mMin['Name'])) { $mUserId = $mMin['UserId']; if (is_string($mUserId)) { $oUser = \Aurora\Modules\Core\Module::getInstance()->GetUserByPublicId($mUserId); if ($oUser instanceof \Aurora\Modules\Core\Models\User) { $mUserId = $oUser->Id; } } if (is_int($mUserId)) { $sStorage = $mMin['Type']; $sResourceId = $sStorage . '/' . \ltrim(\ltrim($mMin['Path'], '/') . '/' . \ltrim($mMin['Name'], '/'), '/'); $this->Create($mUserId, 'file', $sResourceId, $EventName); } } } /** */ public function GetList($UserId, $ResourceType, $ResourceId, $Offset = 0, $Limit = 0) { \Aurora\System\Api::checkUserRoleIsAtLeast(\Aurora\System\Enums\UserRole::NormalUser); Api::CheckAccess($UserId); return [ 'Items' => $this->oManager->GetList($UserId, $ResourceType, $ResourceId, $Offset, $Limit)->all(), 'Count' => $this->oManager->GetListCount($UserId, $ResourceType, $ResourceId) ]; } /** */ public function Delete($UserId, $ResourceType, $ResourceId) { \Aurora\System\Api::checkUserRoleIsAtLeast(\Aurora\System\Enums\UserRole::NormalUser); Api::CheckAccess($UserId); return $this->oManager->Delete($UserId, $ResourceType, $ResourceId); } /***** public functions might be called with web API *****/ }