Completed
Pull Request — master (#3590)
by Individual IT
11:38
created
cron.php 1 patch
Indentation   +127 added lines, -127 removed lines patch added patch discarded remove patch
@@ -32,138 +32,138 @@
 block discarded – undo
32 32
 
33 33
 // Show warning if a PHP version below 5.6.0 is used
34 34
 if (version_compare(PHP_VERSION, '5.6.0') === -1) {
35
-	echo 'This version of Nextcloud requires at least PHP 5.6.0<br/>';
36
-	echo 'You are currently running ' . PHP_VERSION . '. Please update your PHP version.';
37
-	return;
35
+    echo 'This version of Nextcloud requires at least PHP 5.6.0<br/>';
36
+    echo 'You are currently running ' . PHP_VERSION . '. Please update your PHP version.';
37
+    return;
38 38
 }
39 39
 
40 40
 try {
41 41
 
42
-	require_once __DIR__ . '/lib/base.php';
43
-
44
-	if (\OCP\Util::needUpgrade()) {
45
-		\OCP\Util::writeLog('cron', 'Update required, skipping cron', \OCP\Util::DEBUG);
46
-		exit;
47
-	}
48
-	if (\OC::$server->getSystemConfig()->getValue('maintenance', false)) {
49
-		\OCP\Util::writeLog('cron', 'We are in maintenance mode, skipping cron', \OCP\Util::DEBUG);
50
-		exit;
51
-	}
52
-
53
-	if (\OC::$server->getSystemConfig()->getValue('singleuser', false)) {
54
-		\OCP\Util::writeLog('cron', 'We are in admin only mode, skipping cron', \OCP\Util::DEBUG);
55
-		exit;
56
-	}
57
-
58
-	// load all apps to get all api routes properly setup
59
-	OC_App::loadApps();
60
-
61
-	\OC::$server->getSession()->close();
62
-
63
-	// initialize a dummy memory session
64
-	$session = new \OC\Session\Memory('');
65
-	$cryptoWrapper = \OC::$server->getSessionCryptoWrapper();
66
-	$session = $cryptoWrapper->wrapSession($session);
67
-	\OC::$server->setSession($session);
68
-
69
-	$logger = \OC::$server->getLogger();
70
-	$config = \OC::$server->getConfig();
71
-
72
-	// Don't do anything if ownCloud has not been installed
73
-	if (!$config->getSystemValue('installed', false)) {
74
-		exit(0);
75
-	}
76
-
77
-	\OC::$server->getTempManager()->cleanOld();
78
-
79
-	// Exit if background jobs are disabled!
80
-	$appMode = \OCP\BackgroundJob::getExecutionType();
81
-	if ($appMode == 'none') {
82
-		if (OC::$CLI) {
83
-			echo 'Background Jobs are disabled!' . PHP_EOL;
84
-		} else {
85
-			OC_JSON::error(array('data' => array('message' => 'Background jobs disabled!')));
86
-		}
87
-		exit(1);
88
-	}
89
-
90
-	if (OC::$CLI) {
91
-		// set to run indefinitely if needed
92
-		set_time_limit(0);
93
-
94
-		// the cron job must be executed with the right user
95
-		if (!function_exists('posix_getuid')) {
96
-			echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL;
97
-			exit(0);
98
-		}
99
-		$user = posix_getpwuid(posix_getuid());
100
-		$configUser = posix_getpwuid(fileowner(OC::$configDir . 'config.php'));
101
-		if ($user['name'] !== $configUser['name']) {
102
-			echo "Console has to be executed with the same user as the web server is operated" . PHP_EOL;
103
-			echo "Current user: " . $user['name'] . PHP_EOL;
104
-			echo "Web server user: " . $configUser['name'] . PHP_EOL;
105
-			exit(0);
106
-		}
107
-
108
-		// We call ownCloud from the CLI (aka cron)
109
-		if ($appMode != 'cron') {
110
-			\OCP\BackgroundJob::setExecutionType('cron');
111
-		}
112
-
113
-		// Work
114
-		$jobList = \OC::$server->getJobList();
115
-
116
-		// We only ask for jobs for 14 minutes, because after 15 minutes the next
117
-		// system cron task should spawn.
118
-		$endTime = time() + 14 * 60;
119
-
120
-		$executedJobs = [];
121
-		while ($job = $jobList->getNext()) {
122
-			if (isset($executedJobs[$job->getId()])) {
123
-				$jobList->unlockJob($job);
124
-				break;
125
-			}
126
-
127
-			$logger->debug('Run ' . get_class($job) . ' job with ID ' . $job->getId(), ['app' => 'cron']);
128
-			$job->execute($jobList, $logger);
129
-			// clean up after unclean jobs
130
-			\OC_Util::tearDownFS();
131
-			$logger->debug('Finished ' . get_class($job) . ' job with ID ' . $job->getId(), ['app' => 'cron']);
132
-
133
-			$jobList->setLastJob($job);
134
-			$executedJobs[$job->getId()] = true;
135
-			unset($job);
136
-
137
-			if (time() > $endTime) {
138
-				break;
139
-			}
140
-		}
141
-
142
-	} else {
143
-		// We call cron.php from some website
144
-		if ($appMode == 'cron') {
145
-			// Cron is cron :-P
146
-			OC_JSON::error(array('data' => array('message' => 'Backgroundjobs are using system cron!')));
147
-		} else {
148
-			// Work and success :-)
149
-			$jobList = \OC::$server->getJobList();
150
-			$job = $jobList->getNext();
151
-			if ($job != null) {
152
-				$job->execute($jobList, $logger);
153
-				$jobList->setLastJob($job);
154
-			}
155
-			OC_JSON::success();
156
-		}
157
-	}
158
-
159
-	// Log the successful cron execution
160
-	if (\OC::$server->getConfig()->getSystemValue('cron_log', true)) {
161
-		\OC::$server->getConfig()->setAppValue('core', 'lastcron', time());
162
-	}
163
-	exit();
42
+    require_once __DIR__ . '/lib/base.php';
43
+
44
+    if (\OCP\Util::needUpgrade()) {
45
+        \OCP\Util::writeLog('cron', 'Update required, skipping cron', \OCP\Util::DEBUG);
46
+        exit;
47
+    }
48
+    if (\OC::$server->getSystemConfig()->getValue('maintenance', false)) {
49
+        \OCP\Util::writeLog('cron', 'We are in maintenance mode, skipping cron', \OCP\Util::DEBUG);
50
+        exit;
51
+    }
52
+
53
+    if (\OC::$server->getSystemConfig()->getValue('singleuser', false)) {
54
+        \OCP\Util::writeLog('cron', 'We are in admin only mode, skipping cron', \OCP\Util::DEBUG);
55
+        exit;
56
+    }
57
+
58
+    // load all apps to get all api routes properly setup
59
+    OC_App::loadApps();
60
+
61
+    \OC::$server->getSession()->close();
62
+
63
+    // initialize a dummy memory session
64
+    $session = new \OC\Session\Memory('');
65
+    $cryptoWrapper = \OC::$server->getSessionCryptoWrapper();
66
+    $session = $cryptoWrapper->wrapSession($session);
67
+    \OC::$server->setSession($session);
68
+
69
+    $logger = \OC::$server->getLogger();
70
+    $config = \OC::$server->getConfig();
71
+
72
+    // Don't do anything if ownCloud has not been installed
73
+    if (!$config->getSystemValue('installed', false)) {
74
+        exit(0);
75
+    }
76
+
77
+    \OC::$server->getTempManager()->cleanOld();
78
+
79
+    // Exit if background jobs are disabled!
80
+    $appMode = \OCP\BackgroundJob::getExecutionType();
81
+    if ($appMode == 'none') {
82
+        if (OC::$CLI) {
83
+            echo 'Background Jobs are disabled!' . PHP_EOL;
84
+        } else {
85
+            OC_JSON::error(array('data' => array('message' => 'Background jobs disabled!')));
86
+        }
87
+        exit(1);
88
+    }
89
+
90
+    if (OC::$CLI) {
91
+        // set to run indefinitely if needed
92
+        set_time_limit(0);
93
+
94
+        // the cron job must be executed with the right user
95
+        if (!function_exists('posix_getuid')) {
96
+            echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL;
97
+            exit(0);
98
+        }
99
+        $user = posix_getpwuid(posix_getuid());
100
+        $configUser = posix_getpwuid(fileowner(OC::$configDir . 'config.php'));
101
+        if ($user['name'] !== $configUser['name']) {
102
+            echo "Console has to be executed with the same user as the web server is operated" . PHP_EOL;
103
+            echo "Current user: " . $user['name'] . PHP_EOL;
104
+            echo "Web server user: " . $configUser['name'] . PHP_EOL;
105
+            exit(0);
106
+        }
107
+
108
+        // We call ownCloud from the CLI (aka cron)
109
+        if ($appMode != 'cron') {
110
+            \OCP\BackgroundJob::setExecutionType('cron');
111
+        }
112
+
113
+        // Work
114
+        $jobList = \OC::$server->getJobList();
115
+
116
+        // We only ask for jobs for 14 minutes, because after 15 minutes the next
117
+        // system cron task should spawn.
118
+        $endTime = time() + 14 * 60;
119
+
120
+        $executedJobs = [];
121
+        while ($job = $jobList->getNext()) {
122
+            if (isset($executedJobs[$job->getId()])) {
123
+                $jobList->unlockJob($job);
124
+                break;
125
+            }
126
+
127
+            $logger->debug('Run ' . get_class($job) . ' job with ID ' . $job->getId(), ['app' => 'cron']);
128
+            $job->execute($jobList, $logger);
129
+            // clean up after unclean jobs
130
+            \OC_Util::tearDownFS();
131
+            $logger->debug('Finished ' . get_class($job) . ' job with ID ' . $job->getId(), ['app' => 'cron']);
132
+
133
+            $jobList->setLastJob($job);
134
+            $executedJobs[$job->getId()] = true;
135
+            unset($job);
136
+
137
+            if (time() > $endTime) {
138
+                break;
139
+            }
140
+        }
141
+
142
+    } else {
143
+        // We call cron.php from some website
144
+        if ($appMode == 'cron') {
145
+            // Cron is cron :-P
146
+            OC_JSON::error(array('data' => array('message' => 'Backgroundjobs are using system cron!')));
147
+        } else {
148
+            // Work and success :-)
149
+            $jobList = \OC::$server->getJobList();
150
+            $job = $jobList->getNext();
151
+            if ($job != null) {
152
+                $job->execute($jobList, $logger);
153
+                $jobList->setLastJob($job);
154
+            }
155
+            OC_JSON::success();
156
+        }
157
+    }
158
+
159
+    // Log the successful cron execution
160
+    if (\OC::$server->getConfig()->getSystemValue('cron_log', true)) {
161
+        \OC::$server->getConfig()->setAppValue('core', 'lastcron', time());
162
+    }
163
+    exit();
164 164
 
165 165
 } catch (Exception $ex) {
166
-	\OCP\Util::writeLog('cron', $ex->getMessage(), \OCP\Util::FATAL);
166
+    \OCP\Util::writeLog('cron', $ex->getMessage(), \OCP\Util::FATAL);
167 167
 } catch (Error $ex) {
168
-	\OCP\Util::writeLog('cron', $ex->getMessage(), \OCP\Util::FATAL);
168
+    \OCP\Util::writeLog('cron', $ex->getMessage(), \OCP\Util::FATAL);
169 169
 }
Please login to merge, or discard this patch.
apps/files/ajax/getstoragestats.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -26,7 +26,7 @@  discard block
 block discarded – undo
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
 block discarded – undo
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
 }
Please login to merge, or discard this patch.
apps/files/ajax/list.php 1 patch
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -32,73 +32,73 @@
 block discarded – undo
32 32
 $dir = \OC\Files\Filesystem::normalizePath($dir);
33 33
 
34 34
 try {
35
-	$dirInfo = \OC\Files\Filesystem::getFileInfo($dir);
36
-	if (!$dirInfo || !$dirInfo->getType() === 'dir') {
37
-		header("HTTP/1.0 404 Not Found");
38
-		exit();
39
-	}
35
+    $dirInfo = \OC\Files\Filesystem::getFileInfo($dir);
36
+    if (!$dirInfo || !$dirInfo->getType() === 'dir') {
37
+        header("HTTP/1.0 404 Not Found");
38
+        exit();
39
+    }
40 40
 
41
-	$data = array();
42
-	$baseUrl = OCP\Util::linkTo('files', 'index.php') . '?dir=';
41
+    $data = array();
42
+    $baseUrl = OCP\Util::linkTo('files', 'index.php') . '?dir=';
43 43
 
44
-	$permissions = $dirInfo->getPermissions();
44
+    $permissions = $dirInfo->getPermissions();
45 45
 
46
-	$sortAttribute = isset($_GET['sort']) ? (string)$_GET['sort'] : 'name';
47
-	$sortDirection = isset($_GET['sortdirection']) ? ($_GET['sortdirection'] === 'desc') : false;
48
-	$mimetypeFilters = isset($_GET['mimetypes']) ? json_decode($_GET['mimetypes']) : '';
46
+    $sortAttribute = isset($_GET['sort']) ? (string)$_GET['sort'] : 'name';
47
+    $sortDirection = isset($_GET['sortdirection']) ? ($_GET['sortdirection'] === 'desc') : false;
48
+    $mimetypeFilters = isset($_GET['mimetypes']) ? json_decode($_GET['mimetypes']) : '';
49 49
 
50
-	$files = [];
51
-	// Clean up duplicates from array
52
-	if (is_array($mimetypeFilters) && count($mimetypeFilters)) {
53
-		$mimetypeFilters = array_unique($mimetypeFilters);
50
+    $files = [];
51
+    // Clean up duplicates from array
52
+    if (is_array($mimetypeFilters) && count($mimetypeFilters)) {
53
+        $mimetypeFilters = array_unique($mimetypeFilters);
54 54
 
55
-		if (!in_array('httpd/unix-directory', $mimetypeFilters)) {
56
-			// append folder filter to be able to browse folders
57
-			$mimetypeFilters[] = 'httpd/unix-directory';
58
-		}
55
+        if (!in_array('httpd/unix-directory', $mimetypeFilters)) {
56
+            // append folder filter to be able to browse folders
57
+            $mimetypeFilters[] = 'httpd/unix-directory';
58
+        }
59 59
 
60
-		// create filelist with mimetype filter - as getFiles only supports on
61
-		// mimetype filter at once we will filter this folder for each
62
-		// mimetypeFilter
63
-		foreach ($mimetypeFilters as $mimetypeFilter) {
64
-			$files = array_merge($files, \OCA\Files\Helper::getFiles($dir, $sortAttribute, $sortDirection, $mimetypeFilter));
65
-		}
60
+        // create filelist with mimetype filter - as getFiles only supports on
61
+        // mimetype filter at once we will filter this folder for each
62
+        // mimetypeFilter
63
+        foreach ($mimetypeFilters as $mimetypeFilter) {
64
+            $files = array_merge($files, \OCA\Files\Helper::getFiles($dir, $sortAttribute, $sortDirection, $mimetypeFilter));
65
+        }
66 66
 
67
-		// sort the files accordingly
68
-		$files = \OCA\Files\Helper::sortFiles($files, $sortAttribute, $sortDirection);
69
-	} else {
70
-		// create file list without mimetype filter
71
-		$files = \OCA\Files\Helper::getFiles($dir, $sortAttribute, $sortDirection);
72
-	}
67
+        // sort the files accordingly
68
+        $files = \OCA\Files\Helper::sortFiles($files, $sortAttribute, $sortDirection);
69
+    } else {
70
+        // create file list without mimetype filter
71
+        $files = \OCA\Files\Helper::getFiles($dir, $sortAttribute, $sortDirection);
72
+    }
73 73
 
74
-	$files = \OCA\Files\Helper::populateTags($files);
75
-	$data['directory'] = $dir;
76
-	$data['files'] = \OCA\Files\Helper::formatFileInfos($files);
77
-	$data['permissions'] = $permissions;
74
+    $files = \OCA\Files\Helper::populateTags($files);
75
+    $data['directory'] = $dir;
76
+    $data['files'] = \OCA\Files\Helper::formatFileInfos($files);
77
+    $data['permissions'] = $permissions;
78 78
 
79
-	OCP\JSON::success(array('data' => $data));
79
+    OCP\JSON::success(array('data' => $data));
80 80
 } catch (\OCP\Files\StorageNotAvailableException $e) {
81
-	\OCP\Util::logException('files', $e);
82
-	OCP\JSON::error([
83
-		'data' => [
84
-			'exception' => '\OCP\Files\StorageNotAvailableException',
85
-			'message' => $l->t('Storage is temporarily not available')
86
-		]
87
-	]);
81
+    \OCP\Util::logException('files', $e);
82
+    OCP\JSON::error([
83
+        'data' => [
84
+            'exception' => '\OCP\Files\StorageNotAvailableException',
85
+            'message' => $l->t('Storage is temporarily not available')
86
+        ]
87
+    ]);
88 88
 } catch (\OCP\Files\StorageInvalidException $e) {
89
-	\OCP\Util::logException('files', $e);
90
-	OCP\JSON::error(array(
91
-		'data' => array(
92
-			'exception' => '\OCP\Files\StorageInvalidException',
93
-			'message' => $l->t('Storage invalid')
94
-		)
95
-	));
89
+    \OCP\Util::logException('files', $e);
90
+    OCP\JSON::error(array(
91
+        'data' => array(
92
+            'exception' => '\OCP\Files\StorageInvalidException',
93
+            'message' => $l->t('Storage invalid')
94
+        )
95
+    ));
96 96
 } catch (\Exception $e) {
97
-	\OCP\Util::logException('files', $e);
98
-	OCP\JSON::error(array(
99
-		'data' => array(
100
-			'exception' => '\Exception',
101
-			'message' => $l->t('Unknown error')
102
-		)
103
-	));
97
+    \OCP\Util::logException('files', $e);
98
+    OCP\JSON::error(array(
99
+        'data' => array(
100
+            'exception' => '\Exception',
101
+            'message' => $l->t('Unknown error')
102
+        )
103
+    ));
104 104
 }
Please login to merge, or discard this patch.
apps/files/ajax/download.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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);
Please login to merge, or discard this patch.
apps/files/lib/Activity/Provider.php 1 patch
Indentation   +272 added lines, -272 removed lines patch added patch discarded remove patch
@@ -33,276 +33,276 @@
 block discarded – undo
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
 }
Please login to merge, or discard this patch.
apps/files/lib/Activity/FavoriteProvider.php 1 patch
Indentation   +127 added lines, -127 removed lines patch added patch discarded remove patch
@@ -31,131 +31,131 @@
 block discarded – undo
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
 }
Please login to merge, or discard this patch.
apps/files/lib/Activity/Filter/Favorites.php 1 patch
Indentation   +118 added lines, -118 removed lines patch added patch discarded remove patch
@@ -32,129 +32,129 @@
 block discarded – undo
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
 }
Please login to merge, or discard this patch.
apps/files/lib/Activity/Filter/FileChanges.php 1 patch
Indentation   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -28,72 +28,72 @@
 block discarded – undo
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
 }
Please login to merge, or discard this patch.
apps/files/lib/Activity/Helper.php 1 patch
Indentation   +48 added lines, -48 removed lines patch added patch discarded remove patch
@@ -26,60 +26,60 @@
 block discarded – undo
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
 }
Please login to merge, or discard this patch.