| @@ -23,7 +23,6 @@ | ||
| 23 | 23 | namespace OCA\User_LDAP\Controller; | 
| 24 | 24 | |
| 25 | 25 | use OC\HintException; | 
| 26 | -use OC_Util; | |
| 27 | 26 | use OCP\AppFramework\Controller; | 
| 28 | 27 | use OCP\AppFramework\Http\RedirectResponse; | 
| 29 | 28 | use OCP\AppFramework\Http\TemplateResponse; | 
| @@ -37,144 +37,144 @@ | ||
| 37 | 37 | use OCP\IUserManager; | 
| 38 | 38 | |
| 39 | 39 |  class RenewPasswordController extends Controller { | 
| 40 | - /** @var IUserManager */ | |
| 41 | - private $userManager; | |
| 42 | - /** @var IConfig */ | |
| 43 | - private $config; | |
| 44 | - /** @var IL10N */ | |
| 45 | - protected $l10n; | |
| 46 | - /** @var ISession */ | |
| 47 | - private $session; | |
| 48 | - /** @var IURLGenerator */ | |
| 49 | - private $urlGenerator; | |
| 40 | + /** @var IUserManager */ | |
| 41 | + private $userManager; | |
| 42 | + /** @var IConfig */ | |
| 43 | + private $config; | |
| 44 | + /** @var IL10N */ | |
| 45 | + protected $l10n; | |
| 46 | + /** @var ISession */ | |
| 47 | + private $session; | |
| 48 | + /** @var IURLGenerator */ | |
| 49 | + private $urlGenerator; | |
| 50 | 50 | |
| 51 | - /** | |
| 52 | - * @param string $appName | |
| 53 | - * @param IRequest $request | |
| 54 | - * @param IUserManager $userManager | |
| 55 | - * @param IConfig $config | |
| 56 | - * @param IURLGenerator $urlGenerator | |
| 57 | - */ | |
| 58 | - function __construct($appName, IRequest $request, IUserManager $userManager, | |
| 59 | -		IConfig $config, IL10N $l10n, ISession $session, IURLGenerator $urlGenerator) { | |
| 60 | - parent::__construct($appName, $request); | |
| 61 | - $this->userManager = $userManager; | |
| 62 | - $this->config = $config; | |
| 63 | - $this->l10n = $l10n; | |
| 64 | - $this->session = $session; | |
| 65 | - $this->urlGenerator = $urlGenerator; | |
| 66 | - } | |
| 51 | + /** | |
| 52 | + * @param string $appName | |
| 53 | + * @param IRequest $request | |
| 54 | + * @param IUserManager $userManager | |
| 55 | + * @param IConfig $config | |
| 56 | + * @param IURLGenerator $urlGenerator | |
| 57 | + */ | |
| 58 | + function __construct($appName, IRequest $request, IUserManager $userManager, | |
| 59 | +        IConfig $config, IL10N $l10n, ISession $session, IURLGenerator $urlGenerator) { | |
| 60 | + parent::__construct($appName, $request); | |
| 61 | + $this->userManager = $userManager; | |
| 62 | + $this->config = $config; | |
| 63 | + $this->l10n = $l10n; | |
| 64 | + $this->session = $session; | |
| 65 | + $this->urlGenerator = $urlGenerator; | |
| 66 | + } | |
| 67 | 67 | |
| 68 | - /** | |
| 69 | - * @PublicPage | |
| 70 | - * @NoCSRFRequired | |
| 71 | - * | |
| 72 | - * @return RedirectResponse | |
| 73 | - */ | |
| 74 | -	public function cancel() { | |
| 75 | -		return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm')); | |
| 76 | - } | |
| 68 | + /** | |
| 69 | + * @PublicPage | |
| 70 | + * @NoCSRFRequired | |
| 71 | + * | |
| 72 | + * @return RedirectResponse | |
| 73 | + */ | |
| 74 | +    public function cancel() { | |
| 75 | +        return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm')); | |
| 76 | + } | |
| 77 | 77 | |
| 78 | - /** | |
| 79 | - * @PublicPage | |
| 80 | - * @NoCSRFRequired | |
| 81 | - * @UseSession | |
| 82 | - * | |
| 83 | - * @param string $user | |
| 84 | - * | |
| 85 | - * @return TemplateResponse|RedirectResponse | |
| 86 | - */ | |
| 87 | -	public function showRenewPasswordForm($user) { | |
| 88 | -		if($this->config->getUserValue($user, 'user_ldap', 'needsPasswordReset') !== 'true') { | |
| 89 | -			return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm')); | |
| 90 | - } | |
| 91 | - $parameters = []; | |
| 92 | -		$renewPasswordMessages = $this->session->get('renewPasswordMessages'); | |
| 93 | - $errors = []; | |
| 94 | - $messages = []; | |
| 95 | -		if (is_array($renewPasswordMessages)) { | |
| 96 | - list($errors, $messages) = $renewPasswordMessages; | |
| 97 | - } | |
| 98 | -		$this->session->remove('renewPasswordMessages'); | |
| 99 | -		foreach ($errors as $value) { | |
| 100 | - $parameters[$value] = true; | |
| 101 | - } | |
| 78 | + /** | |
| 79 | + * @PublicPage | |
| 80 | + * @NoCSRFRequired | |
| 81 | + * @UseSession | |
| 82 | + * | |
| 83 | + * @param string $user | |
| 84 | + * | |
| 85 | + * @return TemplateResponse|RedirectResponse | |
| 86 | + */ | |
| 87 | +    public function showRenewPasswordForm($user) { | |
| 88 | +        if($this->config->getUserValue($user, 'user_ldap', 'needsPasswordReset') !== 'true') { | |
| 89 | +            return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm')); | |
| 90 | + } | |
| 91 | + $parameters = []; | |
| 92 | +        $renewPasswordMessages = $this->session->get('renewPasswordMessages'); | |
| 93 | + $errors = []; | |
| 94 | + $messages = []; | |
| 95 | +        if (is_array($renewPasswordMessages)) { | |
| 96 | + list($errors, $messages) = $renewPasswordMessages; | |
| 97 | + } | |
| 98 | +        $this->session->remove('renewPasswordMessages'); | |
| 99 | +        foreach ($errors as $value) { | |
| 100 | + $parameters[$value] = true; | |
| 101 | + } | |
| 102 | 102 | |
| 103 | - $parameters['messages'] = $messages; | |
| 104 | - $parameters['user'] = $user; | |
| 103 | + $parameters['messages'] = $messages; | |
| 104 | + $parameters['user'] = $user; | |
| 105 | 105 | |
| 106 | - $parameters['canResetPassword'] = true; | |
| 107 | -		$parameters['resetPasswordLink'] = $this->config->getSystemValue('lost_password_link', ''); | |
| 108 | -		if (!$parameters['resetPasswordLink']) { | |
| 109 | - $userObj = $this->userManager->get($user); | |
| 110 | -			if ($userObj instanceof IUser) { | |
| 111 | - $parameters['canResetPassword'] = $userObj->canChangePassword(); | |
| 112 | - } | |
| 113 | - } | |
| 114 | -		$parameters['cancelLink'] = $this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm'); | |
| 106 | + $parameters['canResetPassword'] = true; | |
| 107 | +        $parameters['resetPasswordLink'] = $this->config->getSystemValue('lost_password_link', ''); | |
| 108 | +        if (!$parameters['resetPasswordLink']) { | |
| 109 | + $userObj = $this->userManager->get($user); | |
| 110 | +            if ($userObj instanceof IUser) { | |
| 111 | + $parameters['canResetPassword'] = $userObj->canChangePassword(); | |
| 112 | + } | |
| 113 | + } | |
| 114 | +        $parameters['cancelLink'] = $this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm'); | |
| 115 | 115 | |
| 116 | - return new TemplateResponse( | |
| 117 | - $this->appName, 'renewpassword', $parameters, 'guest' | |
| 118 | - ); | |
| 119 | - } | |
| 116 | + return new TemplateResponse( | |
| 117 | + $this->appName, 'renewpassword', $parameters, 'guest' | |
| 118 | + ); | |
| 119 | + } | |
| 120 | 120 | |
| 121 | - /** | |
| 122 | - * @PublicPage | |
| 123 | - * @UseSession | |
| 124 | - * | |
| 125 | - * @param string $user | |
| 126 | - * @param string $oldPassword | |
| 127 | - * @param string $newPassword | |
| 128 | - * | |
| 129 | - * @return RedirectResponse | |
| 130 | - */ | |
| 131 | -	public function tryRenewPassword($user, $oldPassword, $newPassword) { | |
| 132 | -		if($this->config->getUserValue($user, 'user_ldap', 'needsPasswordReset') !== 'true') { | |
| 133 | -			return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm')); | |
| 134 | - } | |
| 135 | - $args = !is_null($user) ? ['user' => $user] : []; | |
| 136 | - $loginResult = $this->userManager->checkPassword($user, $oldPassword); | |
| 137 | -		if ($loginResult === false) { | |
| 138 | -			$this->session->set('renewPasswordMessages', [ | |
| 139 | - ['invalidpassword'], [] | |
| 140 | - ]); | |
| 141 | -			return new RedirectResponse($this->urlGenerator->linkToRoute('user_ldap.renewPassword.showRenewPasswordForm', $args)); | |
| 142 | - } | |
| 121 | + /** | |
| 122 | + * @PublicPage | |
| 123 | + * @UseSession | |
| 124 | + * | |
| 125 | + * @param string $user | |
| 126 | + * @param string $oldPassword | |
| 127 | + * @param string $newPassword | |
| 128 | + * | |
| 129 | + * @return RedirectResponse | |
| 130 | + */ | |
| 131 | +    public function tryRenewPassword($user, $oldPassword, $newPassword) { | |
| 132 | +        if($this->config->getUserValue($user, 'user_ldap', 'needsPasswordReset') !== 'true') { | |
| 133 | +            return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm')); | |
| 134 | + } | |
| 135 | + $args = !is_null($user) ? ['user' => $user] : []; | |
| 136 | + $loginResult = $this->userManager->checkPassword($user, $oldPassword); | |
| 137 | +        if ($loginResult === false) { | |
| 138 | +            $this->session->set('renewPasswordMessages', [ | |
| 139 | + ['invalidpassword'], [] | |
| 140 | + ]); | |
| 141 | +            return new RedirectResponse($this->urlGenerator->linkToRoute('user_ldap.renewPassword.showRenewPasswordForm', $args)); | |
| 142 | + } | |
| 143 | 143 | |
| 144 | -		try { | |
| 145 | -			if (!is_null($newPassword) && \OC_User::setPassword($user, $newPassword)) { | |
| 146 | -				$this->session->set('loginMessages', [ | |
| 147 | -					[], [$this->l10n->t("Please login with the new password")] | |
| 148 | - ]); | |
| 149 | -				$this->session->remove('needPasswordRenewal'); | |
| 150 | -				return new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', $args)); | |
| 151 | -			} else { | |
| 152 | -				$this->session->set('renewPasswordMessages', [ | |
| 153 | - ['internalexception'], [] | |
| 154 | - ]); | |
| 155 | - } | |
| 156 | -		} catch (HintException $e) { | |
| 157 | -			$this->session->set('renewPasswordMessages', [ | |
| 158 | - [], [$e->getHint()] | |
| 159 | - ]); | |
| 160 | - } | |
| 144 | +        try { | |
| 145 | +            if (!is_null($newPassword) && \OC_User::setPassword($user, $newPassword)) { | |
| 146 | +                $this->session->set('loginMessages', [ | |
| 147 | +                    [], [$this->l10n->t("Please login with the new password")] | |
| 148 | + ]); | |
| 149 | +                $this->session->remove('needPasswordRenewal'); | |
| 150 | +                return new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', $args)); | |
| 151 | +            } else { | |
| 152 | +                $this->session->set('renewPasswordMessages', [ | |
| 153 | + ['internalexception'], [] | |
| 154 | + ]); | |
| 155 | + } | |
| 156 | +        } catch (HintException $e) { | |
| 157 | +            $this->session->set('renewPasswordMessages', [ | |
| 158 | + [], [$e->getHint()] | |
| 159 | + ]); | |
| 160 | + } | |
| 161 | 161 | |
| 162 | -		return new RedirectResponse($this->urlGenerator->linkToRoute('user_ldap.renewPassword.showRenewPasswordForm', $args)); | |
| 163 | - } | |
| 162 | +        return new RedirectResponse($this->urlGenerator->linkToRoute('user_ldap.renewPassword.showRenewPasswordForm', $args)); | |
| 163 | + } | |
| 164 | 164 | |
| 165 | - /** | |
| 166 | - * @PublicPage | |
| 167 | - * @NoCSRFRequired | |
| 168 | - * @UseSession | |
| 169 | - * | |
| 170 | - * @return RedirectResponse | |
| 171 | - */ | |
| 172 | -	public function showLoginFormInvalidPassword($user) { | |
| 173 | - $args = !is_null($user) ? ['user' => $user] : []; | |
| 174 | -		$this->session->set('loginMessages', [ | |
| 175 | - ['invalidpassword'], [] | |
| 176 | - ]); | |
| 177 | -		return new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', $args)); | |
| 178 | - } | |
| 165 | + /** | |
| 166 | + * @PublicPage | |
| 167 | + * @NoCSRFRequired | |
| 168 | + * @UseSession | |
| 169 | + * | |
| 170 | + * @return RedirectResponse | |
| 171 | + */ | |
| 172 | +    public function showLoginFormInvalidPassword($user) { | |
| 173 | + $args = !is_null($user) ? ['user' => $user] : []; | |
| 174 | +        $this->session->set('loginMessages', [ | |
| 175 | + ['invalidpassword'], [] | |
| 176 | + ]); | |
| 177 | +        return new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', $args)); | |
| 178 | + } | |
| 179 | 179 | |
| 180 | 180 | } | 
| @@ -26,7 +26,7 @@ discard block | ||
| 26 | 26 | $dir = '/'; | 
| 27 | 27 | |
| 28 | 28 |  if (isset($_GET['dir'])) { | 
| 29 | - $dir = (string)$_GET['dir']; | |
| 29 | + $dir = (string)$_GET['dir']; | |
| 30 | 30 | } | 
| 31 | 31 | |
| 32 | 32 | OCP\JSON::checkLoggedIn(); | 
| @@ -34,7 +34,7 @@ discard block | ||
| 34 | 34 | |
| 35 | 35 | // send back json | 
| 36 | 36 |  try { | 
| 37 | -	OCP\JSON::success(array('data' => \OCA\Files\Helper::buildFileStorageStatistics($dir))); | |
| 37 | +    OCP\JSON::success(array('data' => \OCA\Files\Helper::buildFileStorageStatistics($dir))); | |
| 38 | 38 |  } catch (\OCP\Files\NotFoundException $e) { | 
| 39 | - OCP\JSON::error(['data' => ['message' => 'Folder not found']]); | |
| 39 | + OCP\JSON::error(['data' => ['message' => 'Folder not found']]); | |
| 40 | 40 | } | 
| @@ -37,7 +37,7 @@ discard block | ||
| 37 | 37 | $files_list = json_decode($files); | 
| 38 | 38 | // in case we get only a single file | 
| 39 | 39 |  if (!is_array($files_list)) { | 
| 40 | - $files_list = array($files); | |
| 40 | + $files_list = array($files); | |
| 41 | 41 | } | 
| 42 | 42 | |
| 43 | 43 | /** | 
| @@ -46,9 +46,9 @@ discard block | ||
| 46 | 46 | * alphanumeric characters | 
| 47 | 47 | */ | 
| 48 | 48 | if(isset($_GET['downloadStartSecret']) | 
| 49 | - && !isset($_GET['downloadStartSecret'][32]) | |
| 50 | -	&& preg_match('!^[a-zA-Z0-9]+$!', $_GET['downloadStartSecret']) === 1) { | |
| 51 | -	setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/'); | |
| 49 | + && !isset($_GET['downloadStartSecret'][32]) | |
| 50 | +    && preg_match('!^[a-zA-Z0-9]+$!', $_GET['downloadStartSecret']) === 1) { | |
| 51 | +    setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/'); | |
| 52 | 52 | } | 
| 53 | 53 | |
| 54 | 54 | $server_params = array( 'head' => \OC::$server->getRequest()->getMethod() == 'HEAD' ); | 
| @@ -57,7 +57,7 @@ discard block | ||
| 57 | 57 | * Http range requests support | 
| 58 | 58 | */ | 
| 59 | 59 |  if (isset($_SERVER['HTTP_RANGE'])) { | 
| 60 | -	$server_params['range'] = \OC::$server->getRequest()->getHeader('Range'); | |
| 60 | +    $server_params['range'] = \OC::$server->getRequest()->getHeader('Range'); | |
| 61 | 61 | } | 
| 62 | 62 | |
| 63 | 63 | OC_Files::get($dir, $files_list, $server_params); | 
| @@ -33,276 +33,276 @@ | ||
| 33 | 33 | |
| 34 | 34 |  class Provider implements IProvider { | 
| 35 | 35 | |
| 36 | - /** @var IFactory */ | |
| 37 | - protected $languageFactory; | |
| 38 | - | |
| 39 | - /** @var IL10N */ | |
| 40 | - protected $l; | |
| 41 | - | |
| 42 | - /** @var IURLGenerator */ | |
| 43 | - protected $url; | |
| 44 | - | |
| 45 | - /** @var IManager */ | |
| 46 | - protected $activityManager; | |
| 47 | - | |
| 48 | - /** @var IUserManager */ | |
| 49 | - protected $userManager; | |
| 50 | - | |
| 51 | - /** @var IEventMerger */ | |
| 52 | - protected $eventMerger; | |
| 53 | - | |
| 54 | - /** @var string[] cached displayNames - key is the UID and value the displayname */ | |
| 55 | - protected $displayNames = []; | |
| 56 | - | |
| 57 | - /** | |
| 58 | - * @param IFactory $languageFactory | |
| 59 | - * @param IURLGenerator $url | |
| 60 | - * @param IManager $activityManager | |
| 61 | - * @param IUserManager $userManager | |
| 62 | - * @param IEventMerger $eventMerger | |
| 63 | - */ | |
| 64 | -	public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IEventMerger $eventMerger) { | |
| 65 | - $this->languageFactory = $languageFactory; | |
| 66 | - $this->url = $url; | |
| 67 | - $this->activityManager = $activityManager; | |
| 68 | - $this->userManager = $userManager; | |
| 69 | - $this->eventMerger = $eventMerger; | |
| 70 | - } | |
| 71 | - | |
| 72 | - /** | |
| 73 | - * @param string $language | |
| 74 | - * @param IEvent $event | |
| 75 | - * @param IEvent|null $previousEvent | |
| 76 | - * @return IEvent | |
| 77 | - * @throws \InvalidArgumentException | |
| 78 | - * @since 11.0.0 | |
| 79 | - */ | |
| 80 | -	public function parse($language, IEvent $event, IEvent $previousEvent = null) { | |
| 81 | -		if ($event->getApp() !== 'files') { | |
| 82 | - throw new \InvalidArgumentException(); | |
| 83 | - } | |
| 84 | - | |
| 85 | -		$this->l = $this->languageFactory->get('files', $language); | |
| 86 | - | |
| 87 | -		if ($this->activityManager->isFormattingFilteredObject()) { | |
| 88 | -			try { | |
| 89 | - return $this->parseShortVersion($event, $previousEvent); | |
| 90 | -			} catch (\InvalidArgumentException $e) { | |
| 91 | - // Ignore and simply use the long version... | |
| 92 | - } | |
| 93 | - } | |
| 94 | - | |
| 95 | - return $this->parseLongVersion($event, $previousEvent); | |
| 96 | - } | |
| 97 | - | |
| 98 | - /** | |
| 99 | - * @param IEvent $event | |
| 100 | - * @param IEvent|null $previousEvent | |
| 101 | - * @return IEvent | |
| 102 | - * @throws \InvalidArgumentException | |
| 103 | - * @since 11.0.0 | |
| 104 | - */ | |
| 105 | -	public function parseShortVersion(IEvent $event, IEvent $previousEvent = null) { | |
| 106 | - $parsedParameters = $this->getParameters($event); | |
| 107 | - | |
| 108 | -		if ($event->getSubject() === 'created_by') { | |
| 109 | -			$subject = $this->l->t('Created by {user}'); | |
| 110 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'add-color.svg'))); | |
| 111 | -		} else if ($event->getSubject() === 'changed_by') { | |
| 112 | -			$subject = $this->l->t('Changed by {user}'); | |
| 113 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 114 | -		} else if ($event->getSubject() === 'deleted_by') { | |
| 115 | -			$subject = $this->l->t('Deleted by {user}'); | |
| 116 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'delete-color.svg'))); | |
| 117 | -		} else if ($event->getSubject() === 'restored_by') { | |
| 118 | -			$subject = $this->l->t('Restored by {user}'); | |
| 119 | -		} else if ($event->getSubject() === 'renamed_by') { | |
| 120 | -			$subject = $this->l->t('Renamed by {user}'); | |
| 121 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 122 | -		} else if ($event->getSubject() === 'moved_by') { | |
| 123 | -			$subject = $this->l->t('Moved by {user}'); | |
| 124 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 125 | -		} else { | |
| 126 | - throw new \InvalidArgumentException(); | |
| 127 | - } | |
| 128 | - | |
| 129 | - $this->setSubjects($event, $subject, $parsedParameters); | |
| 130 | - | |
| 131 | -		return $this->eventMerger->mergeEvents('user', $event, $previousEvent); | |
| 132 | - } | |
| 133 | - | |
| 134 | - /** | |
| 135 | - * @param IEvent $event | |
| 136 | - * @param IEvent|null $previousEvent | |
| 137 | - * @return IEvent | |
| 138 | - * @throws \InvalidArgumentException | |
| 139 | - * @since 11.0.0 | |
| 140 | - */ | |
| 141 | -	public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) { | |
| 142 | - $parsedParameters = $this->getParameters($event); | |
| 143 | - | |
| 144 | -		if ($event->getSubject() === 'created_self') { | |
| 145 | -			$subject = $this->l->t('You created {file}'); | |
| 146 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'add-color.svg'))); | |
| 147 | -		} else if ($event->getSubject() === 'created_by') { | |
| 148 | -			$subject = $this->l->t('{user} created {file}'); | |
| 149 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'add-color.svg'))); | |
| 150 | -		} else if ($event->getSubject() === 'created_public') { | |
| 151 | -			$subject = $this->l->t('{file} was created in a public folder'); | |
| 152 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'add-color.svg'))); | |
| 153 | -		} else if ($event->getSubject() === 'changed_self') { | |
| 154 | -			$subject = $this->l->t('You changed {file}'); | |
| 155 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 156 | -		} else if ($event->getSubject() === 'changed_by') { | |
| 157 | -			$subject = $this->l->t('{user} changed {file}'); | |
| 158 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 159 | -		} else if ($event->getSubject() === 'deleted_self') { | |
| 160 | -			$subject = $this->l->t('You deleted {file}'); | |
| 161 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'delete-color.svg'))); | |
| 162 | -		} else if ($event->getSubject() === 'deleted_by') { | |
| 163 | -			$subject = $this->l->t('{user} deleted {file}'); | |
| 164 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'delete-color.svg'))); | |
| 165 | -		} else if ($event->getSubject() === 'restored_self') { | |
| 166 | -			$subject = $this->l->t('You restored {file}'); | |
| 167 | -		} else if ($event->getSubject() === 'restored_by') { | |
| 168 | -			$subject = $this->l->t('{user} restored {file}'); | |
| 169 | -		} else if ($event->getSubject() === 'renamed_self') { | |
| 170 | -			$subject = $this->l->t('You renamed {oldfile} to {newfile}'); | |
| 171 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 172 | -		} else if ($event->getSubject() === 'renamed_by') { | |
| 173 | -			$subject = $this->l->t('{user} renamed {oldfile} to {newfile}'); | |
| 174 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 175 | -		} else if ($event->getSubject() === 'moved_self') { | |
| 176 | -			$subject = $this->l->t('You moved {oldfile} to {newfile}'); | |
| 177 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 178 | -		} else if ($event->getSubject() === 'moved_by') { | |
| 179 | -			$subject = $this->l->t('{user} moved {oldfile} to {newfile}'); | |
| 180 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 181 | -		} else { | |
| 182 | - throw new \InvalidArgumentException(); | |
| 183 | - } | |
| 184 | - | |
| 185 | - $this->setSubjects($event, $subject, $parsedParameters); | |
| 186 | - | |
| 187 | -		$event = $this->eventMerger->mergeEvents('file', $event, $previousEvent); | |
| 188 | - | |
| 189 | -		if ($event->getChildEvent() === null) { | |
| 190 | - // Couldn't group by file, maybe we can group by user | |
| 191 | -			$event = $this->eventMerger->mergeEvents('user', $event, $previousEvent); | |
| 192 | - } | |
| 193 | - | |
| 194 | - return $event; | |
| 195 | - } | |
| 196 | - | |
| 197 | -	protected function setSubjects(IEvent $event, $subject, array $parameters) { | |
| 198 | - $placeholders = $replacements = []; | |
| 199 | -		foreach ($parameters as $placeholder => $parameter) { | |
| 200 | -			$placeholders[] = '{' . $placeholder . '}'; | |
| 201 | -			if ($parameter['type'] === 'file') { | |
| 202 | - $replacements[] = $parameter['path']; | |
| 203 | -			} else { | |
| 204 | - $replacements[] = $parameter['name']; | |
| 205 | - } | |
| 206 | - } | |
| 207 | - | |
| 208 | - $event->setParsedSubject(str_replace($placeholders, $replacements, $subject)) | |
| 209 | - ->setRichSubject($subject, $parameters); | |
| 210 | - } | |
| 211 | - | |
| 212 | - /** | |
| 213 | - * @param IEvent $event | |
| 214 | - * @return array | |
| 215 | - * @throws \InvalidArgumentException | |
| 216 | - */ | |
| 217 | -	protected function getParameters(IEvent $event) { | |
| 218 | - $parameters = $event->getSubjectParameters(); | |
| 219 | -		switch ($event->getSubject()) { | |
| 220 | - case 'created_self': | |
| 221 | - case 'created_public': | |
| 222 | - case 'changed_self': | |
| 223 | - case 'deleted_self': | |
| 224 | - case 'restored_self': | |
| 225 | - return [ | |
| 226 | - 'file' => $this->getFile($parameters[0], $event), | |
| 227 | - ]; | |
| 228 | - case 'created_by': | |
| 229 | - case 'changed_by': | |
| 230 | - case 'deleted_by': | |
| 231 | - case 'restored_by': | |
| 232 | - return [ | |
| 233 | - 'file' => $this->getFile($parameters[0], $event), | |
| 234 | - 'user' => $this->getUser($parameters[1]), | |
| 235 | - ]; | |
| 236 | - case 'renamed_self': | |
| 237 | - case 'moved_self': | |
| 238 | - return [ | |
| 239 | - 'newfile' => $this->getFile($parameters[0]), | |
| 240 | - 'oldfile' => $this->getFile($parameters[1]), | |
| 241 | - ]; | |
| 242 | - case 'renamed_by': | |
| 243 | - case 'moved_by': | |
| 244 | - return [ | |
| 245 | - 'newfile' => $this->getFile($parameters[0]), | |
| 246 | - 'user' => $this->getUser($parameters[1]), | |
| 247 | - 'oldfile' => $this->getFile($parameters[2]), | |
| 248 | - ]; | |
| 249 | - } | |
| 250 | - return []; | |
| 251 | - } | |
| 252 | - | |
| 253 | - /** | |
| 254 | - * @param array|string $parameter | |
| 255 | - * @param IEvent|null $event | |
| 256 | - * @return array | |
| 257 | - * @throws \InvalidArgumentException | |
| 258 | - */ | |
| 259 | -	protected function getFile($parameter, IEvent $event = null) { | |
| 260 | -		if (is_array($parameter)) { | |
| 261 | - $path = reset($parameter); | |
| 262 | - $id = (string) key($parameter); | |
| 263 | -		} else if ($event !== null) { | |
| 264 | - // Legacy from before ownCloud 8.2 | |
| 265 | - $path = $parameter; | |
| 266 | - $id = $event->getObjectId(); | |
| 267 | -		} else { | |
| 268 | -			throw new \InvalidArgumentException('Could not generate file parameter'); | |
| 269 | - } | |
| 270 | - | |
| 271 | - return [ | |
| 272 | - 'type' => 'file', | |
| 273 | - 'id' => $id, | |
| 274 | - 'name' => basename($path), | |
| 275 | - 'path' => trim($path, '/'), | |
| 276 | -			'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]), | |
| 277 | - ]; | |
| 278 | - } | |
| 279 | - | |
| 280 | - /** | |
| 281 | - * @param string $uid | |
| 282 | - * @return array | |
| 283 | - */ | |
| 284 | -	protected function getUser($uid) { | |
| 285 | -		if (!isset($this->displayNames[$uid])) { | |
| 286 | - $this->displayNames[$uid] = $this->getDisplayName($uid); | |
| 287 | - } | |
| 288 | - | |
| 289 | - return [ | |
| 290 | - 'type' => 'user', | |
| 291 | - 'id' => $uid, | |
| 292 | - 'name' => $this->displayNames[$uid], | |
| 293 | - ]; | |
| 294 | - } | |
| 295 | - | |
| 296 | - /** | |
| 297 | - * @param string $uid | |
| 298 | - * @return string | |
| 299 | - */ | |
| 300 | -	protected function getDisplayName($uid) { | |
| 301 | - $user = $this->userManager->get($uid); | |
| 302 | -		if ($user instanceof IUser) { | |
| 303 | - return $user->getDisplayName(); | |
| 304 | -		} else { | |
| 305 | - return $uid; | |
| 306 | - } | |
| 307 | - } | |
| 36 | + /** @var IFactory */ | |
| 37 | + protected $languageFactory; | |
| 38 | + | |
| 39 | + /** @var IL10N */ | |
| 40 | + protected $l; | |
| 41 | + | |
| 42 | + /** @var IURLGenerator */ | |
| 43 | + protected $url; | |
| 44 | + | |
| 45 | + /** @var IManager */ | |
| 46 | + protected $activityManager; | |
| 47 | + | |
| 48 | + /** @var IUserManager */ | |
| 49 | + protected $userManager; | |
| 50 | + | |
| 51 | + /** @var IEventMerger */ | |
| 52 | + protected $eventMerger; | |
| 53 | + | |
| 54 | + /** @var string[] cached displayNames - key is the UID and value the displayname */ | |
| 55 | + protected $displayNames = []; | |
| 56 | + | |
| 57 | + /** | |
| 58 | + * @param IFactory $languageFactory | |
| 59 | + * @param IURLGenerator $url | |
| 60 | + * @param IManager $activityManager | |
| 61 | + * @param IUserManager $userManager | |
| 62 | + * @param IEventMerger $eventMerger | |
| 63 | + */ | |
| 64 | +    public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IEventMerger $eventMerger) { | |
| 65 | + $this->languageFactory = $languageFactory; | |
| 66 | + $this->url = $url; | |
| 67 | + $this->activityManager = $activityManager; | |
| 68 | + $this->userManager = $userManager; | |
| 69 | + $this->eventMerger = $eventMerger; | |
| 70 | + } | |
| 71 | + | |
| 72 | + /** | |
| 73 | + * @param string $language | |
| 74 | + * @param IEvent $event | |
| 75 | + * @param IEvent|null $previousEvent | |
| 76 | + * @return IEvent | |
| 77 | + * @throws \InvalidArgumentException | |
| 78 | + * @since 11.0.0 | |
| 79 | + */ | |
| 80 | +    public function parse($language, IEvent $event, IEvent $previousEvent = null) { | |
| 81 | +        if ($event->getApp() !== 'files') { | |
| 82 | + throw new \InvalidArgumentException(); | |
| 83 | + } | |
| 84 | + | |
| 85 | +        $this->l = $this->languageFactory->get('files', $language); | |
| 86 | + | |
| 87 | +        if ($this->activityManager->isFormattingFilteredObject()) { | |
| 88 | +            try { | |
| 89 | + return $this->parseShortVersion($event, $previousEvent); | |
| 90 | +            } catch (\InvalidArgumentException $e) { | |
| 91 | + // Ignore and simply use the long version... | |
| 92 | + } | |
| 93 | + } | |
| 94 | + | |
| 95 | + return $this->parseLongVersion($event, $previousEvent); | |
| 96 | + } | |
| 97 | + | |
| 98 | + /** | |
| 99 | + * @param IEvent $event | |
| 100 | + * @param IEvent|null $previousEvent | |
| 101 | + * @return IEvent | |
| 102 | + * @throws \InvalidArgumentException | |
| 103 | + * @since 11.0.0 | |
| 104 | + */ | |
| 105 | +    public function parseShortVersion(IEvent $event, IEvent $previousEvent = null) { | |
| 106 | + $parsedParameters = $this->getParameters($event); | |
| 107 | + | |
| 108 | +        if ($event->getSubject() === 'created_by') { | |
| 109 | +            $subject = $this->l->t('Created by {user}'); | |
| 110 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'add-color.svg'))); | |
| 111 | +        } else if ($event->getSubject() === 'changed_by') { | |
| 112 | +            $subject = $this->l->t('Changed by {user}'); | |
| 113 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 114 | +        } else if ($event->getSubject() === 'deleted_by') { | |
| 115 | +            $subject = $this->l->t('Deleted by {user}'); | |
| 116 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'delete-color.svg'))); | |
| 117 | +        } else if ($event->getSubject() === 'restored_by') { | |
| 118 | +            $subject = $this->l->t('Restored by {user}'); | |
| 119 | +        } else if ($event->getSubject() === 'renamed_by') { | |
| 120 | +            $subject = $this->l->t('Renamed by {user}'); | |
| 121 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 122 | +        } else if ($event->getSubject() === 'moved_by') { | |
| 123 | +            $subject = $this->l->t('Moved by {user}'); | |
| 124 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 125 | +        } else { | |
| 126 | + throw new \InvalidArgumentException(); | |
| 127 | + } | |
| 128 | + | |
| 129 | + $this->setSubjects($event, $subject, $parsedParameters); | |
| 130 | + | |
| 131 | +        return $this->eventMerger->mergeEvents('user', $event, $previousEvent); | |
| 132 | + } | |
| 133 | + | |
| 134 | + /** | |
| 135 | + * @param IEvent $event | |
| 136 | + * @param IEvent|null $previousEvent | |
| 137 | + * @return IEvent | |
| 138 | + * @throws \InvalidArgumentException | |
| 139 | + * @since 11.0.0 | |
| 140 | + */ | |
| 141 | +    public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) { | |
| 142 | + $parsedParameters = $this->getParameters($event); | |
| 143 | + | |
| 144 | +        if ($event->getSubject() === 'created_self') { | |
| 145 | +            $subject = $this->l->t('You created {file}'); | |
| 146 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'add-color.svg'))); | |
| 147 | +        } else if ($event->getSubject() === 'created_by') { | |
| 148 | +            $subject = $this->l->t('{user} created {file}'); | |
| 149 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'add-color.svg'))); | |
| 150 | +        } else if ($event->getSubject() === 'created_public') { | |
| 151 | +            $subject = $this->l->t('{file} was created in a public folder'); | |
| 152 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'add-color.svg'))); | |
| 153 | +        } else if ($event->getSubject() === 'changed_self') { | |
| 154 | +            $subject = $this->l->t('You changed {file}'); | |
| 155 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 156 | +        } else if ($event->getSubject() === 'changed_by') { | |
| 157 | +            $subject = $this->l->t('{user} changed {file}'); | |
| 158 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 159 | +        } else if ($event->getSubject() === 'deleted_self') { | |
| 160 | +            $subject = $this->l->t('You deleted {file}'); | |
| 161 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'delete-color.svg'))); | |
| 162 | +        } else if ($event->getSubject() === 'deleted_by') { | |
| 163 | +            $subject = $this->l->t('{user} deleted {file}'); | |
| 164 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'delete-color.svg'))); | |
| 165 | +        } else if ($event->getSubject() === 'restored_self') { | |
| 166 | +            $subject = $this->l->t('You restored {file}'); | |
| 167 | +        } else if ($event->getSubject() === 'restored_by') { | |
| 168 | +            $subject = $this->l->t('{user} restored {file}'); | |
| 169 | +        } else if ($event->getSubject() === 'renamed_self') { | |
| 170 | +            $subject = $this->l->t('You renamed {oldfile} to {newfile}'); | |
| 171 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 172 | +        } else if ($event->getSubject() === 'renamed_by') { | |
| 173 | +            $subject = $this->l->t('{user} renamed {oldfile} to {newfile}'); | |
| 174 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 175 | +        } else if ($event->getSubject() === 'moved_self') { | |
| 176 | +            $subject = $this->l->t('You moved {oldfile} to {newfile}'); | |
| 177 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 178 | +        } else if ($event->getSubject() === 'moved_by') { | |
| 179 | +            $subject = $this->l->t('{user} moved {oldfile} to {newfile}'); | |
| 180 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files', 'change.svg'))); | |
| 181 | +        } else { | |
| 182 | + throw new \InvalidArgumentException(); | |
| 183 | + } | |
| 184 | + | |
| 185 | + $this->setSubjects($event, $subject, $parsedParameters); | |
| 186 | + | |
| 187 | +        $event = $this->eventMerger->mergeEvents('file', $event, $previousEvent); | |
| 188 | + | |
| 189 | +        if ($event->getChildEvent() === null) { | |
| 190 | + // Couldn't group by file, maybe we can group by user | |
| 191 | +            $event = $this->eventMerger->mergeEvents('user', $event, $previousEvent); | |
| 192 | + } | |
| 193 | + | |
| 194 | + return $event; | |
| 195 | + } | |
| 196 | + | |
| 197 | +    protected function setSubjects(IEvent $event, $subject, array $parameters) { | |
| 198 | + $placeholders = $replacements = []; | |
| 199 | +        foreach ($parameters as $placeholder => $parameter) { | |
| 200 | +            $placeholders[] = '{' . $placeholder . '}'; | |
| 201 | +            if ($parameter['type'] === 'file') { | |
| 202 | + $replacements[] = $parameter['path']; | |
| 203 | +            } else { | |
| 204 | + $replacements[] = $parameter['name']; | |
| 205 | + } | |
| 206 | + } | |
| 207 | + | |
| 208 | + $event->setParsedSubject(str_replace($placeholders, $replacements, $subject)) | |
| 209 | + ->setRichSubject($subject, $parameters); | |
| 210 | + } | |
| 211 | + | |
| 212 | + /** | |
| 213 | + * @param IEvent $event | |
| 214 | + * @return array | |
| 215 | + * @throws \InvalidArgumentException | |
| 216 | + */ | |
| 217 | +    protected function getParameters(IEvent $event) { | |
| 218 | + $parameters = $event->getSubjectParameters(); | |
| 219 | +        switch ($event->getSubject()) { | |
| 220 | + case 'created_self': | |
| 221 | + case 'created_public': | |
| 222 | + case 'changed_self': | |
| 223 | + case 'deleted_self': | |
| 224 | + case 'restored_self': | |
| 225 | + return [ | |
| 226 | + 'file' => $this->getFile($parameters[0], $event), | |
| 227 | + ]; | |
| 228 | + case 'created_by': | |
| 229 | + case 'changed_by': | |
| 230 | + case 'deleted_by': | |
| 231 | + case 'restored_by': | |
| 232 | + return [ | |
| 233 | + 'file' => $this->getFile($parameters[0], $event), | |
| 234 | + 'user' => $this->getUser($parameters[1]), | |
| 235 | + ]; | |
| 236 | + case 'renamed_self': | |
| 237 | + case 'moved_self': | |
| 238 | + return [ | |
| 239 | + 'newfile' => $this->getFile($parameters[0]), | |
| 240 | + 'oldfile' => $this->getFile($parameters[1]), | |
| 241 | + ]; | |
| 242 | + case 'renamed_by': | |
| 243 | + case 'moved_by': | |
| 244 | + return [ | |
| 245 | + 'newfile' => $this->getFile($parameters[0]), | |
| 246 | + 'user' => $this->getUser($parameters[1]), | |
| 247 | + 'oldfile' => $this->getFile($parameters[2]), | |
| 248 | + ]; | |
| 249 | + } | |
| 250 | + return []; | |
| 251 | + } | |
| 252 | + | |
| 253 | + /** | |
| 254 | + * @param array|string $parameter | |
| 255 | + * @param IEvent|null $event | |
| 256 | + * @return array | |
| 257 | + * @throws \InvalidArgumentException | |
| 258 | + */ | |
| 259 | +    protected function getFile($parameter, IEvent $event = null) { | |
| 260 | +        if (is_array($parameter)) { | |
| 261 | + $path = reset($parameter); | |
| 262 | + $id = (string) key($parameter); | |
| 263 | +        } else if ($event !== null) { | |
| 264 | + // Legacy from before ownCloud 8.2 | |
| 265 | + $path = $parameter; | |
| 266 | + $id = $event->getObjectId(); | |
| 267 | +        } else { | |
| 268 | +            throw new \InvalidArgumentException('Could not generate file parameter'); | |
| 269 | + } | |
| 270 | + | |
| 271 | + return [ | |
| 272 | + 'type' => 'file', | |
| 273 | + 'id' => $id, | |
| 274 | + 'name' => basename($path), | |
| 275 | + 'path' => trim($path, '/'), | |
| 276 | +            'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]), | |
| 277 | + ]; | |
| 278 | + } | |
| 279 | + | |
| 280 | + /** | |
| 281 | + * @param string $uid | |
| 282 | + * @return array | |
| 283 | + */ | |
| 284 | +    protected function getUser($uid) { | |
| 285 | +        if (!isset($this->displayNames[$uid])) { | |
| 286 | + $this->displayNames[$uid] = $this->getDisplayName($uid); | |
| 287 | + } | |
| 288 | + | |
| 289 | + return [ | |
| 290 | + 'type' => 'user', | |
| 291 | + 'id' => $uid, | |
| 292 | + 'name' => $this->displayNames[$uid], | |
| 293 | + ]; | |
| 294 | + } | |
| 295 | + | |
| 296 | + /** | |
| 297 | + * @param string $uid | |
| 298 | + * @return string | |
| 299 | + */ | |
| 300 | +    protected function getDisplayName($uid) { | |
| 301 | + $user = $this->userManager->get($uid); | |
| 302 | +        if ($user instanceof IUser) { | |
| 303 | + return $user->getDisplayName(); | |
| 304 | +        } else { | |
| 305 | + return $uid; | |
| 306 | + } | |
| 307 | + } | |
| 308 | 308 | } | 
| @@ -31,131 +31,131 @@ | ||
| 31 | 31 | |
| 32 | 32 |  class FavoriteProvider implements IProvider { | 
| 33 | 33 | |
| 34 | - const SUBJECT_ADDED = 'added_favorite'; | |
| 35 | - const SUBJECT_REMOVED = 'removed_favorite'; | |
| 36 | - | |
| 37 | - /** @var IFactory */ | |
| 38 | - protected $languageFactory; | |
| 39 | - | |
| 40 | - /** @var IL10N */ | |
| 41 | - protected $l; | |
| 42 | - | |
| 43 | - /** @var IURLGenerator */ | |
| 44 | - protected $url; | |
| 45 | - | |
| 46 | - /** @var IManager */ | |
| 47 | - protected $activityManager; | |
| 48 | - | |
| 49 | - /** @var IEventMerger */ | |
| 50 | - protected $eventMerger; | |
| 51 | - | |
| 52 | - /** | |
| 53 | - * @param IFactory $languageFactory | |
| 54 | - * @param IURLGenerator $url | |
| 55 | - * @param IManager $activityManager | |
| 56 | - * @param IEventMerger $eventMerger | |
| 57 | - */ | |
| 58 | -	public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IEventMerger $eventMerger) { | |
| 59 | - $this->languageFactory = $languageFactory; | |
| 60 | - $this->url = $url; | |
| 61 | - $this->activityManager = $activityManager; | |
| 62 | - $this->eventMerger = $eventMerger; | |
| 63 | - } | |
| 64 | - | |
| 65 | - /** | |
| 66 | - * @param string $language | |
| 67 | - * @param IEvent $event | |
| 68 | - * @param IEvent|null $previousEvent | |
| 69 | - * @return IEvent | |
| 70 | - * @throws \InvalidArgumentException | |
| 71 | - * @since 11.0.0 | |
| 72 | - */ | |
| 73 | -	public function parse($language, IEvent $event, IEvent $previousEvent = null) { | |
| 74 | -		if ($event->getApp() !== 'files' || $event->getType() !== 'favorite') { | |
| 75 | - throw new \InvalidArgumentException(); | |
| 76 | - } | |
| 77 | - | |
| 78 | -		$this->l = $this->languageFactory->get('files', $language); | |
| 79 | - | |
| 80 | -		if ($this->activityManager->isFormattingFilteredObject()) { | |
| 81 | -			try { | |
| 82 | - return $this->parseShortVersion($event); | |
| 83 | -			} catch (\InvalidArgumentException $e) { | |
| 84 | - // Ignore and simply use the long version... | |
| 85 | - } | |
| 86 | - } | |
| 87 | - | |
| 88 | - return $this->parseLongVersion($event, $previousEvent); | |
| 89 | - } | |
| 90 | - | |
| 91 | - /** | |
| 92 | - * @param IEvent $event | |
| 93 | - * @return IEvent | |
| 94 | - * @throws \InvalidArgumentException | |
| 95 | - * @since 11.0.0 | |
| 96 | - */ | |
| 97 | -	public function parseShortVersion(IEvent $event) { | |
| 98 | - | |
| 99 | -		if ($event->getSubject() === self::SUBJECT_ADDED) { | |
| 100 | -			$event->setParsedSubject($this->l->t('Added to favorites')) | |
| 101 | -				->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/starred.svg'))); | |
| 102 | -		} else if ($event->getSubject() === self::SUBJECT_REMOVED) { | |
| 103 | -			$event->setParsedSubject($this->l->t('Removed from favorites')) | |
| 104 | -				->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/star.svg'))); | |
| 105 | -		} else { | |
| 106 | - throw new \InvalidArgumentException(); | |
| 107 | - } | |
| 108 | - | |
| 109 | - return $event; | |
| 110 | - } | |
| 111 | - | |
| 112 | - /** | |
| 113 | - * @param IEvent $event | |
| 114 | - * @param IEvent|null $previousEvent | |
| 115 | - * @return IEvent | |
| 116 | - * @throws \InvalidArgumentException | |
| 117 | - * @since 11.0.0 | |
| 118 | - */ | |
| 119 | -	public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) { | |
| 120 | - | |
| 121 | -		if ($event->getSubject() === self::SUBJECT_ADDED) { | |
| 122 | -			$subject = $this->l->t('You added {file} to your favorites'); | |
| 123 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/starred.svg'))); | |
| 124 | -		} else if ($event->getSubject() === self::SUBJECT_REMOVED) { | |
| 125 | -			$subject = $this->l->t('You removed {file} from your favorites'); | |
| 126 | -			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/star.svg'))); | |
| 127 | -		} else { | |
| 128 | - throw new \InvalidArgumentException(); | |
| 129 | - } | |
| 130 | - | |
| 131 | - $this->setSubjects($event, $subject); | |
| 132 | -		$event = $this->eventMerger->mergeEvents('file', $event, $previousEvent); | |
| 133 | - return $event; | |
| 134 | - } | |
| 135 | - | |
| 136 | - /** | |
| 137 | - * @param IEvent $event | |
| 138 | - * @param string $subject | |
| 139 | - */ | |
| 140 | -	protected function setSubjects(IEvent $event, $subject) { | |
| 141 | - $subjectParams = $event->getSubjectParameters(); | |
| 142 | -		if (empty($subjectParams)) { | |
| 143 | - // Try to fall back to the old way, but this does not work for emails. | |
| 144 | - // But at least old activities still work. | |
| 145 | - $subjectParams = [ | |
| 146 | - 'id' => $event->getObjectId(), | |
| 147 | - 'path' => $event->getObjectName(), | |
| 148 | - ]; | |
| 149 | - } | |
| 150 | - $parameter = [ | |
| 151 | - 'type' => 'file', | |
| 152 | - 'id' => $subjectParams['id'], | |
| 153 | - 'name' => basename($subjectParams['path']), | |
| 154 | - 'path' => trim($subjectParams['path'], '/'), | |
| 155 | -			'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $subjectParams['id']]), | |
| 156 | - ]; | |
| 157 | - | |
| 158 | -		$event->setParsedSubject(str_replace('{file}', $parameter['path'], $subject)) | |
| 159 | - ->setRichSubject($subject, ['file' => $parameter]); | |
| 160 | - } | |
| 34 | + const SUBJECT_ADDED = 'added_favorite'; | |
| 35 | + const SUBJECT_REMOVED = 'removed_favorite'; | |
| 36 | + | |
| 37 | + /** @var IFactory */ | |
| 38 | + protected $languageFactory; | |
| 39 | + | |
| 40 | + /** @var IL10N */ | |
| 41 | + protected $l; | |
| 42 | + | |
| 43 | + /** @var IURLGenerator */ | |
| 44 | + protected $url; | |
| 45 | + | |
| 46 | + /** @var IManager */ | |
| 47 | + protected $activityManager; | |
| 48 | + | |
| 49 | + /** @var IEventMerger */ | |
| 50 | + protected $eventMerger; | |
| 51 | + | |
| 52 | + /** | |
| 53 | + * @param IFactory $languageFactory | |
| 54 | + * @param IURLGenerator $url | |
| 55 | + * @param IManager $activityManager | |
| 56 | + * @param IEventMerger $eventMerger | |
| 57 | + */ | |
| 58 | +    public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IEventMerger $eventMerger) { | |
| 59 | + $this->languageFactory = $languageFactory; | |
| 60 | + $this->url = $url; | |
| 61 | + $this->activityManager = $activityManager; | |
| 62 | + $this->eventMerger = $eventMerger; | |
| 63 | + } | |
| 64 | + | |
| 65 | + /** | |
| 66 | + * @param string $language | |
| 67 | + * @param IEvent $event | |
| 68 | + * @param IEvent|null $previousEvent | |
| 69 | + * @return IEvent | |
| 70 | + * @throws \InvalidArgumentException | |
| 71 | + * @since 11.0.0 | |
| 72 | + */ | |
| 73 | +    public function parse($language, IEvent $event, IEvent $previousEvent = null) { | |
| 74 | +        if ($event->getApp() !== 'files' || $event->getType() !== 'favorite') { | |
| 75 | + throw new \InvalidArgumentException(); | |
| 76 | + } | |
| 77 | + | |
| 78 | +        $this->l = $this->languageFactory->get('files', $language); | |
| 79 | + | |
| 80 | +        if ($this->activityManager->isFormattingFilteredObject()) { | |
| 81 | +            try { | |
| 82 | + return $this->parseShortVersion($event); | |
| 83 | +            } catch (\InvalidArgumentException $e) { | |
| 84 | + // Ignore and simply use the long version... | |
| 85 | + } | |
| 86 | + } | |
| 87 | + | |
| 88 | + return $this->parseLongVersion($event, $previousEvent); | |
| 89 | + } | |
| 90 | + | |
| 91 | + /** | |
| 92 | + * @param IEvent $event | |
| 93 | + * @return IEvent | |
| 94 | + * @throws \InvalidArgumentException | |
| 95 | + * @since 11.0.0 | |
| 96 | + */ | |
| 97 | +    public function parseShortVersion(IEvent $event) { | |
| 98 | + | |
| 99 | +        if ($event->getSubject() === self::SUBJECT_ADDED) { | |
| 100 | +            $event->setParsedSubject($this->l->t('Added to favorites')) | |
| 101 | +                ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/starred.svg'))); | |
| 102 | +        } else if ($event->getSubject() === self::SUBJECT_REMOVED) { | |
| 103 | +            $event->setParsedSubject($this->l->t('Removed from favorites')) | |
| 104 | +                ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/star.svg'))); | |
| 105 | +        } else { | |
| 106 | + throw new \InvalidArgumentException(); | |
| 107 | + } | |
| 108 | + | |
| 109 | + return $event; | |
| 110 | + } | |
| 111 | + | |
| 112 | + /** | |
| 113 | + * @param IEvent $event | |
| 114 | + * @param IEvent|null $previousEvent | |
| 115 | + * @return IEvent | |
| 116 | + * @throws \InvalidArgumentException | |
| 117 | + * @since 11.0.0 | |
| 118 | + */ | |
| 119 | +    public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) { | |
| 120 | + | |
| 121 | +        if ($event->getSubject() === self::SUBJECT_ADDED) { | |
| 122 | +            $subject = $this->l->t('You added {file} to your favorites'); | |
| 123 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/starred.svg'))); | |
| 124 | +        } else if ($event->getSubject() === self::SUBJECT_REMOVED) { | |
| 125 | +            $subject = $this->l->t('You removed {file} from your favorites'); | |
| 126 | +            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/star.svg'))); | |
| 127 | +        } else { | |
| 128 | + throw new \InvalidArgumentException(); | |
| 129 | + } | |
| 130 | + | |
| 131 | + $this->setSubjects($event, $subject); | |
| 132 | +        $event = $this->eventMerger->mergeEvents('file', $event, $previousEvent); | |
| 133 | + return $event; | |
| 134 | + } | |
| 135 | + | |
| 136 | + /** | |
| 137 | + * @param IEvent $event | |
| 138 | + * @param string $subject | |
| 139 | + */ | |
| 140 | +    protected function setSubjects(IEvent $event, $subject) { | |
| 141 | + $subjectParams = $event->getSubjectParameters(); | |
| 142 | +        if (empty($subjectParams)) { | |
| 143 | + // Try to fall back to the old way, but this does not work for emails. | |
| 144 | + // But at least old activities still work. | |
| 145 | + $subjectParams = [ | |
| 146 | + 'id' => $event->getObjectId(), | |
| 147 | + 'path' => $event->getObjectName(), | |
| 148 | + ]; | |
| 149 | + } | |
| 150 | + $parameter = [ | |
| 151 | + 'type' => 'file', | |
| 152 | + 'id' => $subjectParams['id'], | |
| 153 | + 'name' => basename($subjectParams['path']), | |
| 154 | + 'path' => trim($subjectParams['path'], '/'), | |
| 155 | +            'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $subjectParams['id']]), | |
| 156 | + ]; | |
| 157 | + | |
| 158 | +        $event->setParsedSubject(str_replace('{file}', $parameter['path'], $subject)) | |
| 159 | + ->setRichSubject($subject, ['file' => $parameter]); | |
| 160 | + } | |
| 161 | 161 | } | 
| @@ -32,129 +32,129 @@ | ||
| 32 | 32 | |
| 33 | 33 |  class Favorites implements IFilter { | 
| 34 | 34 | |
| 35 | - /** @var IL10N */ | |
| 36 | - protected $l; | |
| 37 | - | |
| 38 | - /** @var IURLGenerator */ | |
| 39 | - protected $url; | |
| 40 | - | |
| 41 | - /** @var IManager */ | |
| 42 | - protected $activityManager; | |
| 43 | - | |
| 44 | - /** @var Helper */ | |
| 45 | - protected $helper; | |
| 46 | - | |
| 47 | - /** @var IDBConnection */ | |
| 48 | - protected $db; | |
| 49 | - | |
| 50 | - /** | |
| 51 | - * @param IL10N $l | |
| 52 | - * @param IURLGenerator $url | |
| 53 | - * @param IManager $activityManager | |
| 54 | - * @param Helper $helper | |
| 55 | - * @param IDBConnection $db | |
| 56 | - */ | |
| 57 | -	public function __construct(IL10N $l, IURLGenerator $url, IManager $activityManager, Helper $helper, IDBConnection $db) { | |
| 58 | - $this->l = $l; | |
| 59 | - $this->url = $url; | |
| 60 | - $this->activityManager = $activityManager; | |
| 61 | - $this->helper = $helper; | |
| 62 | - $this->db = $db; | |
| 63 | - } | |
| 64 | - | |
| 65 | - /** | |
| 66 | - * @return string Lowercase a-z only identifier | |
| 67 | - * @since 11.0.0 | |
| 68 | - */ | |
| 69 | -	public function getIdentifier() { | |
| 70 | - return 'files_favorites'; | |
| 71 | - } | |
| 72 | - | |
| 73 | - /** | |
| 74 | - * @return string A translated string | |
| 75 | - * @since 11.0.0 | |
| 76 | - */ | |
| 77 | -	public function getName() { | |
| 78 | -		return $this->l->t('Favorites'); | |
| 79 | - } | |
| 80 | - | |
| 81 | - /** | |
| 82 | - * @return int | |
| 83 | - * @since 11.0.0 | |
| 84 | - */ | |
| 85 | -	public function getPriority() { | |
| 86 | - return 10; | |
| 87 | - } | |
| 88 | - | |
| 89 | - /** | |
| 90 | - * @return string Full URL to an icon, empty string when none is given | |
| 91 | - * @since 11.0.0 | |
| 92 | - */ | |
| 93 | -	public function getIcon() { | |
| 94 | -		return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/star-dark.svg')); | |
| 95 | - } | |
| 96 | - | |
| 97 | - /** | |
| 98 | - * @param string[] $types | |
| 99 | - * @return string[] An array of allowed apps from which activities should be displayed | |
| 100 | - * @since 11.0.0 | |
| 101 | - */ | |
| 102 | -	public function filterTypes(array $types) { | |
| 103 | - return array_intersect([ | |
| 104 | - 'file_created', | |
| 105 | - 'file_changed', | |
| 106 | - 'file_deleted', | |
| 107 | - 'file_restored', | |
| 108 | - ], $types); | |
| 109 | - } | |
| 110 | - | |
| 111 | - /** | |
| 112 | - * @return string[] An array of allowed apps from which activities should be displayed | |
| 113 | - * @since 11.0.0 | |
| 114 | - */ | |
| 115 | -	public function allowedApps() { | |
| 116 | - return ['files']; | |
| 117 | - } | |
| 118 | - | |
| 119 | - /** | |
| 120 | - * @param IQueryBuilder $query | |
| 121 | - */ | |
| 122 | -	public function filterFavorites(IQueryBuilder $query) { | |
| 123 | -		try { | |
| 124 | - $user = $this->activityManager->getCurrentUserId(); | |
| 125 | -		} catch (\UnexpectedValueException $e) { | |
| 126 | - return; | |
| 127 | - } | |
| 128 | - | |
| 129 | -		try { | |
| 130 | - $favorites = $this->helper->getFavoriteFilePaths($user); | |
| 131 | -		} catch (\RuntimeException $e) { | |
| 132 | - return; | |
| 133 | - } | |
| 134 | - | |
| 135 | - $limitations = []; | |
| 136 | -		if (!empty($favorites['items'])) { | |
| 137 | -			$limitations[] = $query->expr()->in('file', $query->createNamedParameter($favorites['items'], IQueryBuilder::PARAM_STR_ARRAY)); | |
| 138 | - } | |
| 139 | -		foreach ($favorites['folders'] as $favorite) { | |
| 140 | -			$limitations[] = $query->expr()->like('file', $query->createNamedParameter( | |
| 141 | - $this->db->escapeLikeParameter($favorite . '/') . '%' | |
| 142 | - )); | |
| 143 | - } | |
| 144 | - | |
| 145 | -		if (empty($limitations)) { | |
| 146 | - return; | |
| 147 | - } | |
| 148 | - | |
| 149 | -		$function = $query->createFunction(' | |
| 35 | + /** @var IL10N */ | |
| 36 | + protected $l; | |
| 37 | + | |
| 38 | + /** @var IURLGenerator */ | |
| 39 | + protected $url; | |
| 40 | + | |
| 41 | + /** @var IManager */ | |
| 42 | + protected $activityManager; | |
| 43 | + | |
| 44 | + /** @var Helper */ | |
| 45 | + protected $helper; | |
| 46 | + | |
| 47 | + /** @var IDBConnection */ | |
| 48 | + protected $db; | |
| 49 | + | |
| 50 | + /** | |
| 51 | + * @param IL10N $l | |
| 52 | + * @param IURLGenerator $url | |
| 53 | + * @param IManager $activityManager | |
| 54 | + * @param Helper $helper | |
| 55 | + * @param IDBConnection $db | |
| 56 | + */ | |
| 57 | +    public function __construct(IL10N $l, IURLGenerator $url, IManager $activityManager, Helper $helper, IDBConnection $db) { | |
| 58 | + $this->l = $l; | |
| 59 | + $this->url = $url; | |
| 60 | + $this->activityManager = $activityManager; | |
| 61 | + $this->helper = $helper; | |
| 62 | + $this->db = $db; | |
| 63 | + } | |
| 64 | + | |
| 65 | + /** | |
| 66 | + * @return string Lowercase a-z only identifier | |
| 67 | + * @since 11.0.0 | |
| 68 | + */ | |
| 69 | +    public function getIdentifier() { | |
| 70 | + return 'files_favorites'; | |
| 71 | + } | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * @return string A translated string | |
| 75 | + * @since 11.0.0 | |
| 76 | + */ | |
| 77 | +    public function getName() { | |
| 78 | +        return $this->l->t('Favorites'); | |
| 79 | + } | |
| 80 | + | |
| 81 | + /** | |
| 82 | + * @return int | |
| 83 | + * @since 11.0.0 | |
| 84 | + */ | |
| 85 | +    public function getPriority() { | |
| 86 | + return 10; | |
| 87 | + } | |
| 88 | + | |
| 89 | + /** | |
| 90 | + * @return string Full URL to an icon, empty string when none is given | |
| 91 | + * @since 11.0.0 | |
| 92 | + */ | |
| 93 | +    public function getIcon() { | |
| 94 | +        return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/star-dark.svg')); | |
| 95 | + } | |
| 96 | + | |
| 97 | + /** | |
| 98 | + * @param string[] $types | |
| 99 | + * @return string[] An array of allowed apps from which activities should be displayed | |
| 100 | + * @since 11.0.0 | |
| 101 | + */ | |
| 102 | +    public function filterTypes(array $types) { | |
| 103 | + return array_intersect([ | |
| 104 | + 'file_created', | |
| 105 | + 'file_changed', | |
| 106 | + 'file_deleted', | |
| 107 | + 'file_restored', | |
| 108 | + ], $types); | |
| 109 | + } | |
| 110 | + | |
| 111 | + /** | |
| 112 | + * @return string[] An array of allowed apps from which activities should be displayed | |
| 113 | + * @since 11.0.0 | |
| 114 | + */ | |
| 115 | +    public function allowedApps() { | |
| 116 | + return ['files']; | |
| 117 | + } | |
| 118 | + | |
| 119 | + /** | |
| 120 | + * @param IQueryBuilder $query | |
| 121 | + */ | |
| 122 | +    public function filterFavorites(IQueryBuilder $query) { | |
| 123 | +        try { | |
| 124 | + $user = $this->activityManager->getCurrentUserId(); | |
| 125 | +        } catch (\UnexpectedValueException $e) { | |
| 126 | + return; | |
| 127 | + } | |
| 128 | + | |
| 129 | +        try { | |
| 130 | + $favorites = $this->helper->getFavoriteFilePaths($user); | |
| 131 | +        } catch (\RuntimeException $e) { | |
| 132 | + return; | |
| 133 | + } | |
| 134 | + | |
| 135 | + $limitations = []; | |
| 136 | +        if (!empty($favorites['items'])) { | |
| 137 | +            $limitations[] = $query->expr()->in('file', $query->createNamedParameter($favorites['items'], IQueryBuilder::PARAM_STR_ARRAY)); | |
| 138 | + } | |
| 139 | +        foreach ($favorites['folders'] as $favorite) { | |
| 140 | +            $limitations[] = $query->expr()->like('file', $query->createNamedParameter( | |
| 141 | + $this->db->escapeLikeParameter($favorite . '/') . '%' | |
| 142 | + )); | |
| 143 | + } | |
| 144 | + | |
| 145 | +        if (empty($limitations)) { | |
| 146 | + return; | |
| 147 | + } | |
| 148 | + | |
| 149 | +        $function = $query->createFunction(' | |
| 150 | 150 | CASE | 
| 151 | 151 |  				WHEN ' . $query->getColumnName('app') . ' <> ' . $query->createNamedParameter('files') . ' THEN 1 | 
| 152 | 152 |  				WHEN ' . $query->getColumnName('app') . ' = ' . $query->createNamedParameter('files') . ' | 
| 153 | 153 |  					AND (' . implode(' OR ', $limitations) . ') | 
| 154 | 154 | THEN 1 | 
| 155 | 155 | END = 1' | 
| 156 | - ); | |
| 156 | + ); | |
| 157 | 157 | |
| 158 | - $query->andWhere($function); | |
| 159 | - } | |
| 158 | + $query->andWhere($function); | |
| 159 | + } | |
| 160 | 160 | } | 
| @@ -28,72 +28,72 @@ | ||
| 28 | 28 | |
| 29 | 29 |  class FileChanges implements IFilter { | 
| 30 | 30 | |
| 31 | - /** @var IL10N */ | |
| 32 | - protected $l; | |
| 31 | + /** @var IL10N */ | |
| 32 | + protected $l; | |
| 33 | 33 | |
| 34 | - /** @var IURLGenerator */ | |
| 35 | - protected $url; | |
| 34 | + /** @var IURLGenerator */ | |
| 35 | + protected $url; | |
| 36 | 36 | |
| 37 | - /** | |
| 38 | - * @param IL10N $l | |
| 39 | - * @param IURLGenerator $url | |
| 40 | - */ | |
| 41 | -	public function __construct(IL10N $l, IURLGenerator $url) { | |
| 42 | - $this->l = $l; | |
| 43 | - $this->url = $url; | |
| 44 | - } | |
| 37 | + /** | |
| 38 | + * @param IL10N $l | |
| 39 | + * @param IURLGenerator $url | |
| 40 | + */ | |
| 41 | +    public function __construct(IL10N $l, IURLGenerator $url) { | |
| 42 | + $this->l = $l; | |
| 43 | + $this->url = $url; | |
| 44 | + } | |
| 45 | 45 | |
| 46 | - /** | |
| 47 | - * @return string Lowercase a-z only identifier | |
| 48 | - * @since 11.0.0 | |
| 49 | - */ | |
| 50 | -	public function getIdentifier() { | |
| 51 | - return 'files'; | |
| 52 | - } | |
| 46 | + /** | |
| 47 | + * @return string Lowercase a-z only identifier | |
| 48 | + * @since 11.0.0 | |
| 49 | + */ | |
| 50 | +    public function getIdentifier() { | |
| 51 | + return 'files'; | |
| 52 | + } | |
| 53 | 53 | |
| 54 | - /** | |
| 55 | - * @return string A translated string | |
| 56 | - * @since 11.0.0 | |
| 57 | - */ | |
| 58 | -	public function getName() { | |
| 59 | -		return $this->l->t('File changes'); | |
| 60 | - } | |
| 54 | + /** | |
| 55 | + * @return string A translated string | |
| 56 | + * @since 11.0.0 | |
| 57 | + */ | |
| 58 | +    public function getName() { | |
| 59 | +        return $this->l->t('File changes'); | |
| 60 | + } | |
| 61 | 61 | |
| 62 | - /** | |
| 63 | - * @return int | |
| 64 | - * @since 11.0.0 | |
| 65 | - */ | |
| 66 | -	public function getPriority() { | |
| 67 | - return 30; | |
| 68 | - } | |
| 62 | + /** | |
| 63 | + * @return int | |
| 64 | + * @since 11.0.0 | |
| 65 | + */ | |
| 66 | +    public function getPriority() { | |
| 67 | + return 30; | |
| 68 | + } | |
| 69 | 69 | |
| 70 | - /** | |
| 71 | - * @return string Full URL to an icon, empty string when none is given | |
| 72 | - * @since 11.0.0 | |
| 73 | - */ | |
| 74 | -	public function getIcon() { | |
| 75 | -		return $this->url->getAbsoluteURL($this->url->imagePath('core', 'places/files-dark.svg')); | |
| 76 | - } | |
| 70 | + /** | |
| 71 | + * @return string Full URL to an icon, empty string when none is given | |
| 72 | + * @since 11.0.0 | |
| 73 | + */ | |
| 74 | +    public function getIcon() { | |
| 75 | +        return $this->url->getAbsoluteURL($this->url->imagePath('core', 'places/files-dark.svg')); | |
| 76 | + } | |
| 77 | 77 | |
| 78 | - /** | |
| 79 | - * @param string[] $types | |
| 80 | - * @return string[] An array of allowed apps from which activities should be displayed | |
| 81 | - * @since 11.0.0 | |
| 82 | - */ | |
| 83 | -	public function filterTypes(array $types) { | |
| 84 | - return array_intersect([ | |
| 85 | - 'file_created', | |
| 86 | - 'file_changed', | |
| 87 | - 'file_deleted', | |
| 88 | - 'file_restored', | |
| 89 | - ], $types); | |
| 90 | - } | |
| 78 | + /** | |
| 79 | + * @param string[] $types | |
| 80 | + * @return string[] An array of allowed apps from which activities should be displayed | |
| 81 | + * @since 11.0.0 | |
| 82 | + */ | |
| 83 | +    public function filterTypes(array $types) { | |
| 84 | + return array_intersect([ | |
| 85 | + 'file_created', | |
| 86 | + 'file_changed', | |
| 87 | + 'file_deleted', | |
| 88 | + 'file_restored', | |
| 89 | + ], $types); | |
| 90 | + } | |
| 91 | 91 | |
| 92 | - /** | |
| 93 | - * @return string[] An array of allowed apps from which activities should be displayed | |
| 94 | - * @since 11.0.0 | |
| 95 | - */ | |
| 96 | -	public function allowedApps() { | |
| 97 | - return ['files']; | |
| 98 | - } | |
| 92 | + /** | |
| 93 | + * @return string[] An array of allowed apps from which activities should be displayed | |
| 94 | + * @since 11.0.0 | |
| 95 | + */ | |
| 96 | +    public function allowedApps() { | |
| 97 | + return ['files']; | |
| 98 | + } | |
| 99 | 99 | } | 
| @@ -26,60 +26,60 @@ | ||
| 26 | 26 | use OCP\ITagManager; | 
| 27 | 27 | |
| 28 | 28 |  class Helper { | 
| 29 | - /** If a user has a lot of favorites the query might get too slow and long */ | |
| 30 | - const FAVORITE_LIMIT = 50; | |
| 29 | + /** If a user has a lot of favorites the query might get too slow and long */ | |
| 30 | + const FAVORITE_LIMIT = 50; | |
| 31 | 31 | |
| 32 | - /** @var ITagManager */ | |
| 33 | - protected $tagManager; | |
| 32 | + /** @var ITagManager */ | |
| 33 | + protected $tagManager; | |
| 34 | 34 | |
| 35 | - /** | |
| 36 | - * @param ITagManager $tagManager | |
| 37 | - */ | |
| 38 | -	public function __construct(ITagManager $tagManager) { | |
| 39 | - $this->tagManager = $tagManager; | |
| 40 | - } | |
| 35 | + /** | |
| 36 | + * @param ITagManager $tagManager | |
| 37 | + */ | |
| 38 | +    public function __construct(ITagManager $tagManager) { | |
| 39 | + $this->tagManager = $tagManager; | |
| 40 | + } | |
| 41 | 41 | |
| 42 | - /** | |
| 43 | - * Returns an array with the favorites | |
| 44 | - * | |
| 45 | - * @param string $user | |
| 46 | - * @return array | |
| 47 | - * @throws \RuntimeException when too many or no favorites where found | |
| 48 | - */ | |
| 49 | -	public function getFavoriteFilePaths($user) { | |
| 50 | -		$tags = $this->tagManager->load('files', [], false, $user); | |
| 51 | - $favorites = $tags->getFavorites(); | |
| 42 | + /** | |
| 43 | + * Returns an array with the favorites | |
| 44 | + * | |
| 45 | + * @param string $user | |
| 46 | + * @return array | |
| 47 | + * @throws \RuntimeException when too many or no favorites where found | |
| 48 | + */ | |
| 49 | +    public function getFavoriteFilePaths($user) { | |
| 50 | +        $tags = $this->tagManager->load('files', [], false, $user); | |
| 51 | + $favorites = $tags->getFavorites(); | |
| 52 | 52 | |
| 53 | -		if (empty($favorites)) { | |
| 54 | -			throw new \RuntimeException('No favorites', 1); | |
| 55 | -		} else if (isset($favorites[self::FAVORITE_LIMIT])) { | |
| 56 | -			throw new \RuntimeException('Too many favorites', 2); | |
| 57 | - } | |
| 53 | +        if (empty($favorites)) { | |
| 54 | +            throw new \RuntimeException('No favorites', 1); | |
| 55 | +        } else if (isset($favorites[self::FAVORITE_LIMIT])) { | |
| 56 | +            throw new \RuntimeException('Too many favorites', 2); | |
| 57 | + } | |
| 58 | 58 | |
| 59 | - // Can not DI because the user is not known on instantiation | |
| 60 | - $rootFolder = \OC::$server->getUserFolder($user); | |
| 61 | - $folders = $items = []; | |
| 62 | -		foreach ($favorites as $favorite) { | |
| 63 | - $nodes = $rootFolder->getById($favorite); | |
| 64 | -			if (!empty($nodes)) { | |
| 65 | - /** @var \OCP\Files\Node $node */ | |
| 66 | - $node = array_shift($nodes); | |
| 67 | - $path = substr($node->getPath(), strlen($user . '/files/')); | |
| 59 | + // Can not DI because the user is not known on instantiation | |
| 60 | + $rootFolder = \OC::$server->getUserFolder($user); | |
| 61 | + $folders = $items = []; | |
| 62 | +        foreach ($favorites as $favorite) { | |
| 63 | + $nodes = $rootFolder->getById($favorite); | |
| 64 | +            if (!empty($nodes)) { | |
| 65 | + /** @var \OCP\Files\Node $node */ | |
| 66 | + $node = array_shift($nodes); | |
| 67 | + $path = substr($node->getPath(), strlen($user . '/files/')); | |
| 68 | 68 | |
| 69 | - $items[] = $path; | |
| 70 | -				if ($node instanceof Folder) { | |
| 71 | - $folders[] = $path; | |
| 72 | - } | |
| 73 | - } | |
| 74 | - } | |
| 69 | + $items[] = $path; | |
| 70 | +                if ($node instanceof Folder) { | |
| 71 | + $folders[] = $path; | |
| 72 | + } | |
| 73 | + } | |
| 74 | + } | |
| 75 | 75 | |
| 76 | -		if (empty($items)) { | |
| 77 | -			throw new \RuntimeException('No favorites', 1); | |
| 78 | - } | |
| 76 | +        if (empty($items)) { | |
| 77 | +            throw new \RuntimeException('No favorites', 1); | |
| 78 | + } | |
| 79 | 79 | |
| 80 | - return [ | |
| 81 | - 'items' => $items, | |
| 82 | - 'folders' => $folders, | |
| 83 | - ]; | |
| 84 | - } | |
| 80 | + return [ | |
| 81 | + 'items' => $items, | |
| 82 | + 'folders' => $folders, | |
| 83 | + ]; | |
| 84 | + } | |
| 85 | 85 | } | 
| @@ -27,72 +27,72 @@ | ||
| 27 | 27 | |
| 28 | 28 |  class FileDeleted implements ISetting { | 
| 29 | 29 | |
| 30 | - /** @var IL10N */ | |
| 31 | - protected $l; | |
| 30 | + /** @var IL10N */ | |
| 31 | + protected $l; | |
| 32 | 32 | |
| 33 | - /** | |
| 34 | - * @param IL10N $l | |
| 35 | - */ | |
| 36 | -	public function __construct(IL10N $l) { | |
| 37 | - $this->l = $l; | |
| 38 | - } | |
| 33 | + /** | |
| 34 | + * @param IL10N $l | |
| 35 | + */ | |
| 36 | +    public function __construct(IL10N $l) { | |
| 37 | + $this->l = $l; | |
| 38 | + } | |
| 39 | 39 | |
| 40 | - /** | |
| 41 | - * @return string Lowercase a-z and underscore only identifier | |
| 42 | - * @since 11.0.0 | |
| 43 | - */ | |
| 44 | -	public function getIdentifier() { | |
| 45 | - return 'file_deleted'; | |
| 46 | - } | |
| 40 | + /** | |
| 41 | + * @return string Lowercase a-z and underscore only identifier | |
| 42 | + * @since 11.0.0 | |
| 43 | + */ | |
| 44 | +    public function getIdentifier() { | |
| 45 | + return 'file_deleted'; | |
| 46 | + } | |
| 47 | 47 | |
| 48 | - /** | |
| 49 | - * @return string A translated string | |
| 50 | - * @since 11.0.0 | |
| 51 | - */ | |
| 52 | -	public function getName() { | |
| 53 | -		return $this->l->t('A new file or folder has been <strong>deleted</strong>'); | |
| 54 | - } | |
| 48 | + /** | |
| 49 | + * @return string A translated string | |
| 50 | + * @since 11.0.0 | |
| 51 | + */ | |
| 52 | +    public function getName() { | |
| 53 | +        return $this->l->t('A new file or folder has been <strong>deleted</strong>'); | |
| 54 | + } | |
| 55 | 55 | |
| 56 | - /** | |
| 57 | - * @return int whether the filter should be rather on the top or bottom of | |
| 58 | - * the admin section. The filters are arranged in ascending order of the | |
| 59 | - * priority values. It is required to return a value between 0 and 100. | |
| 60 | - * @since 11.0.0 | |
| 61 | - */ | |
| 62 | -	public function getPriority() { | |
| 63 | - return 3; | |
| 64 | - } | |
| 56 | + /** | |
| 57 | + * @return int whether the filter should be rather on the top or bottom of | |
| 58 | + * the admin section. The filters are arranged in ascending order of the | |
| 59 | + * priority values. It is required to return a value between 0 and 100. | |
| 60 | + * @since 11.0.0 | |
| 61 | + */ | |
| 62 | +    public function getPriority() { | |
| 63 | + return 3; | |
| 64 | + } | |
| 65 | 65 | |
| 66 | - /** | |
| 67 | - * @return bool True when the option can be changed for the stream | |
| 68 | - * @since 11.0.0 | |
| 69 | - */ | |
| 70 | -	public function canChangeStream() { | |
| 71 | - return true; | |
| 72 | - } | |
| 66 | + /** | |
| 67 | + * @return bool True when the option can be changed for the stream | |
| 68 | + * @since 11.0.0 | |
| 69 | + */ | |
| 70 | +    public function canChangeStream() { | |
| 71 | + return true; | |
| 72 | + } | |
| 73 | 73 | |
| 74 | - /** | |
| 75 | - * @return bool True when the option can be changed for the stream | |
| 76 | - * @since 11.0.0 | |
| 77 | - */ | |
| 78 | -	public function isDefaultEnabledStream() { | |
| 79 | - return true; | |
| 80 | - } | |
| 74 | + /** | |
| 75 | + * @return bool True when the option can be changed for the stream | |
| 76 | + * @since 11.0.0 | |
| 77 | + */ | |
| 78 | +    public function isDefaultEnabledStream() { | |
| 79 | + return true; | |
| 80 | + } | |
| 81 | 81 | |
| 82 | - /** | |
| 83 | - * @return bool True when the option can be changed for the mail | |
| 84 | - * @since 11.0.0 | |
| 85 | - */ | |
| 86 | -	public function canChangeMail() { | |
| 87 | - return true; | |
| 88 | - } | |
| 82 | + /** | |
| 83 | + * @return bool True when the option can be changed for the mail | |
| 84 | + * @since 11.0.0 | |
| 85 | + */ | |
| 86 | +    public function canChangeMail() { | |
| 87 | + return true; | |
| 88 | + } | |
| 89 | 89 | |
| 90 | - /** | |
| 91 | - * @return bool True when the option can be changed for the stream | |
| 92 | - * @since 11.0.0 | |
| 93 | - */ | |
| 94 | -	public function isDefaultEnabledMail() { | |
| 95 | - return false; | |
| 96 | - } | |
| 90 | + /** | |
| 91 | + * @return bool True when the option can be changed for the stream | |
| 92 | + * @since 11.0.0 | |
| 93 | + */ | |
| 94 | +    public function isDefaultEnabledMail() { | |
| 95 | + return false; | |
| 96 | + } | |
| 97 | 97 | } | 
| 98 | 98 | |