Blame view

sources/lib/public/backgroundjob.php 5.31 KB
03e52840d   Kload   Init
1
2
  <?php
  /**
31b7f2792   Kload   Upgrade to ownclo...
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   * ownCloud
   *
   * @author Jakob Sack
   * @copyright 2012 Jakob Sack owncloud@jakobsack.de
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
   * License as published by the Free Software Foundation; either
   * version 3 of the License, or any later version.
   *
   * This library is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
   *
   * You should have received a copy of the GNU Affero General Public
   * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
   *
   */
03e52840d   Kload   Init
22
23
  
  /**
31b7f2792   Kload   Upgrade to ownclo...
24
   * Public interface of ownCloud for background jobs.
03e52840d   Kload   Init
25
26
27
28
29
   */
  
  // use OCP namespace for all classes that are considered public.
  // This means that they should be used by apps instead of the internal ownCloud classes
  namespace OCP;
31b7f2792   Kload   Upgrade to ownclo...
30
  use \OC\BackgroundJob\JobList;
03e52840d   Kload   Init
31
  /**
31b7f2792   Kload   Upgrade to ownclo...
32
   * This class provides functions to register backgroundjobs in ownCloud
03e52840d   Kload   Init
33
   *
31b7f2792   Kload   Upgrade to ownclo...
34
35
36
37
   * To create a new backgroundjob create a new class that inharits from either \OC\BackgroundJob\Job,
   * \OC\BackgroundJob\QueuedJob or \OC\BackgroundJob\TimedJob and register it using
   * \OCP\BackgroundJob->registerJob($job, $argument), $argument will be passed to the run() function
   * of the job when the job is executed.
03e52840d   Kload   Init
38
   *
31b7f2792   Kload   Upgrade to ownclo...
39
40
41
   * A regular Job will be executed every time cron.php is run, a QueuedJob will only run once and a TimedJob
   * will only run at a specific interval which is to be specified in the constructor of the job by calling
   * $this->setInterval($interval) with $interval in seconds.
03e52840d   Kload   Init
42
43
44
   */
  class BackgroundJob {
  	/**
31b7f2792   Kload   Upgrade to ownclo...
45
  	 * get the execution type of background jobs
a293d369c   Kload   Update sources to...
46
  	 *
03e52840d   Kload   Init
47
48
49
50
51
52
53
54
55
56
  	 * @return string
  	 *
  	 * This method returns the type how background jobs are executed. If the user
  	 * did not select something, the type is ajax.
  	 */
  	public static function getExecutionType() {
  		return \OC_BackgroundJob::getExecutionType();
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
57
  	 * sets the background jobs execution type
a293d369c   Kload   Update sources to...
58
  	 *
31b7f2792   Kload   Upgrade to ownclo...
59
  	 * @param string $type execution type
03e52840d   Kload   Init
60
61
62
63
64
  	 * @return boolean
  	 *
  	 * This method sets the execution type of the background jobs. Possible types
  	 * are "none", "ajax", "webcron", "cron"
  	 */
31b7f2792   Kload   Upgrade to ownclo...
65
66
67
68
69
70
71
72
73
74
75
  	public static function setExecutionType($type) {
  		return \OC_BackgroundJob::setExecutionType($type);
  	}
  
  	/**
  	 * @param \OC\BackgroundJob\Job|string $job
  	 * @param mixed $argument
  	 */
  	public static function registerJob($job, $argument = null) {
  		$jobList = new JobList();
  		$jobList->add($job, $argument);
03e52840d   Kload   Init
76
77
78
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
79
80
81
82
  	 * @deprecated
  	 * creates a regular task
  	 * @param string $klass class name
  	 * @param string $method method name
03e52840d   Kload   Init
83
84
  	 * @return true
  	 */
31b7f2792   Kload   Upgrade to ownclo...
85
  	public static function addRegularTask($klass, $method) {
a293d369c   Kload   Update sources to...
86
87
88
89
  		if (!\OC::needUpgrade()) {
  			self::registerJob('OC\BackgroundJob\Legacy\RegularJob', array($klass, $method));
  			return true;
  		}
03e52840d   Kload   Init
90
91
92
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
93
94
  	 * @deprecated
  	 * gets all regular tasks
03e52840d   Kload   Init
95
96
97
98
99
  	 * @return associative array
  	 *
  	 * key is string "$klass-$method", value is array( $klass, $method )
  	 */
  	static public function allRegularTasks() {
31b7f2792   Kload   Upgrade to ownclo...
100
101
102
103
104
105
106
107
108
109
  		$jobList = new JobList();
  		$allJobs = $jobList->getAll();
  		$regularJobs = array();
  		foreach ($allJobs as $job) {
  			if ($job instanceof RegularLegacyJob) {
  				$key = implode('-', $job->getArgument());
  				$regularJobs[$key] = $job->getArgument();
  			}
  		}
  		return $regularJobs;
03e52840d   Kload   Init
110
111
112
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
113
114
115
  	 * @deprecated
  	 * Gets one queued task
  	 * @param int $id ID of the task
03e52840d   Kload   Init
116
117
  	 * @return associative array
  	 */
31b7f2792   Kload   Upgrade to ownclo...
118
119
120
  	public static function findQueuedTask($id) {
  		$jobList = new JobList();
  		return $jobList->getById($id);
03e52840d   Kload   Init
121
122
123
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
124
125
  	 * @deprecated
  	 * Gets all queued tasks
03e52840d   Kload   Init
126
127
128
  	 * @return array with associative arrays
  	 */
  	public static function allQueuedTasks() {
31b7f2792   Kload   Upgrade to ownclo...
129
130
131
132
133
134
135
136
137
138
139
  		$jobList = new JobList();
  		$allJobs = $jobList->getAll();
  		$queuedJobs = array();
  		foreach ($allJobs as $job) {
  			if ($job instanceof QueuedLegacyJob) {
  				$queuedJob = $job->getArgument();
  				$queuedJob['id'] = $job->getId();
  				$queuedJobs[] = $queuedJob;
  			}
  		}
  		return $queuedJobs;
03e52840d   Kload   Init
140
141
142
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
143
144
145
  	 * @deprecated
  	 * Gets all queued tasks of a specific app
  	 * @param string $app app name
03e52840d   Kload   Init
146
147
  	 * @return array with associative arrays
  	 */
31b7f2792   Kload   Upgrade to ownclo...
148
149
150
151
152
153
154
155
156
157
158
159
160
161
  	public static function queuedTaskWhereAppIs($app) {
  		$jobList = new JobList();
  		$allJobs = $jobList->getAll();
  		$queuedJobs = array();
  		foreach ($allJobs as $job) {
  			if ($job instanceof QueuedLegacyJob) {
  				$queuedJob = $job->getArgument();
  				$queuedJob['id'] = $job->getId();
  				if ($queuedJob['app'] === $app) {
  					$queuedJobs[] = $queuedJob;
  				}
  			}
  		}
  		return $queuedJobs;
03e52840d   Kload   Init
162
163
164
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
165
166
167
168
169
170
171
  	 * @deprecated
  	 * queues a task
  	 * @param string $app app name
  	 * @param string $class class name
  	 * @param string $method method name
  	 * @param string $parameters all useful data as text
  	 * @return int id of task
03e52840d   Kload   Init
172
  	 */
31b7f2792   Kload   Upgrade to ownclo...
173
  	public static function addQueuedTask($app, $class, $method, $parameters) {
a293d369c   Kload   Update sources to...
174
175
176
177
  		if (!\OC::needUpgrade()) {
  			self::registerJob('OC\BackgroundJob\Legacy\QueuedJob', array('app' => $app, 'klass' => $class, 'method' => $method, 'parameters' => $parameters));
  			return true;
  		}
03e52840d   Kload   Init
178
179
180
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
181
182
183
184
  	 * @deprecated
  	 * deletes a queued task
  	 * @param int $id id of task
  	 * @return bool
03e52840d   Kload   Init
185
186
187
  	 *
  	 * Deletes a report
  	 */
31b7f2792   Kload   Upgrade to ownclo...
188
189
190
191
192
193
  	public static function deleteQueuedTask($id) {
  		$jobList = new JobList();
  		$job = $jobList->getById($id);
  		if ($job) {
  			$jobList->remove($job);
  		}
03e52840d   Kload   Init
194
195
  	}
  }