summaryrefslogtreecommitdiffstats
path: root/config/locales/sq.yml
Commit message (Expand)AuthorAgeFilesLines
* generate i18n keys (#21705)Toshi MARUYAMA2017-01-251-0/+1
* Adds :field_updated_by and :field_last_updated_by strings to locales (#17720).Jean-Philippe Lang2017-01-191-0/+2
* Adds :warning_fields_cleared_on_bulk_edit string to locales (#22600).Jean-Philippe Lang2017-01-181-0/+2
* regenerate translation for label_user_mail_option_only_(assigned|owner) in al...Toshi MARUYAMA2017-01-181-2/+2
* Adds :label_attribute_of_object string to locales (#21249).Jean-Philippe Lang2017-01-141-0/+1
* Adds :setting_timelog_required_fields string to locales (#24577).Jean-Philippe Lang2017-01-121-0/+1
* Add :error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted i18n ...Jean-Philippe Lang2016-12-311-0/+2
* Prevent parent issue from being closed if a child issue is open (#10989).Jean-Philippe Lang2016-12-211-0/+1
* Add :error_move_of_child_not_possible i18n string (#23888).Jean-Philippe Lang2016-12-181-0/+2
* Adds :not_a_regexp i18n string (#5864).Jean-Philippe Lang2016-12-131-0/+1
* Adds :setting_mail_handler_enable_regex_delimiters i18n string (#5864).Jean-Philippe Lang2016-12-131-0/+1
* Adds :setting_commit_logs_formatting i18n string (#22758).Jean-Philippe Lang2016-12-121-0/+1
* Adds label_table_of_contents i18n string (#23179).Jean-Philippe Lang2016-11-191-0/+1
* Adds setting_timespan_format i18n string (#23996).Jean-Philippe Lang2016-11-181-0/+1
* Adds i18n strings (#23653).Jean-Philippe Lang2016-08-301-0/+4
* Adds :error_no_projects_with_tracker_allowed_for_new_issue i18n string (#23410).Jean-Philippe Lang2016-08-201-0/+2
* Adjust i18n strings.Jean-Philippe Lang2016-06-181-3/+2
* Updates locales (#15880).Jean-Philippe Lang2016-06-111-0/+2
* Adds a setting for choosing the new object menu item style (#15880).Jean-Philippe Lang2016-06-111-1/+1
* generate i18 keys (#7839)Toshi MARUYAMA2016-06-061-0/+3
* Adds setting_new_project_issue_tab_enabled i18n string (#6204).Jean-Philippe Lang2016-05-091-0/+1
* Adds missing i18n strings.Jean-Philippe Lang2016-05-081-0/+2
* Adds :button_filter to locales (#4806).Jean-Philippe Lang2016-05-061-0/+1
* Change "Related issues" label for generic grouped query filters (#22147).Jean-Philippe Lang2016-04-241-0/+1
* Adds :label_wiki_page_new i18n strings (#5536).Jean-Philippe Lang2016-04-221-0/+1
* Fix: Semi colon is spelled semicolon (#22135).Jean-Philippe Lang2016-03-151-1/+1
* Reverts r15246 with broken encoding (#22135).Jean-Philippe Lang2016-03-151-1/+1
* Fix: Semi colon is spelled semicolon (#22135).Jean-Philippe Lang2016-03-151-1/+1
* generate i18n keys (#21421)Toshi MARUYAMA2016-02-251-0/+11
* Harmonize setting labels (#21421).Jean-Philippe Lang2016-02-051-0/+2
* Typo: s/creditentials/credentials/ (#21861).Jean-Philippe Lang2016-01-301-1/+1
* Fixed that LDAP does not check the user and password when are defined in the ...Jean-Philippe Lang2016-01-221-0/+1
* Adds label_default_values_for_new_users to locales (#21447).Jean-Philippe Lang2015-12-131-0/+1
* pdf: add general_pdf_monospaced_fontname to locales (#19017)Toshi MARUYAMA2015-12-041-0/+1
* Removed unused strings: label_(start|end)_to_(start|end) (#21175).Jean-Philippe Lang2015-11-091-4/+0
* Adds strings to locales (#16621).Jean-Philippe Lang2015-11-071-0/+2
* Adds strings to locales (#20008).Jean-Philippe Lang2015-11-011-0/+3
* Adds field_default_version string to locales (#1828).Jean-Philippe Lang2015-11-011-0/+1
* Adds translation string for hours with symbol (#21069).Jean-Philippe Lang2015-10-291-0/+1
* Adds label_field_format_enumeration string to locales (#21060).Jean-Philippe Lang2015-10-251-0/+1
* Removes label_x_open_issues_abbr_on_total string (#20413).Jean-Philippe Lang2015-10-241-4/+0
* Adds label_assigned_issues string to locales (#3398).Jean-Philippe Lang2015-10-211-0/+1
* Typo "coma" (#20551).Jean-Philippe Lang2015-10-201-1/+1
* Adds :label_total_plural to locales (#1561).Jean-Philippe Lang2015-10-041-0/+1
* Adds label_api string to locales.Jean-Philippe Lang2015-10-011-0/+1
* Adds translation strings (#20688).Jean-Philippe Lang2015-09-121-0/+1
* Adds translation strings (#950).Jean-Philippe Lang2015-08-141-0/+21
* Adds "Total spent hours" column available on the issue list (#11253).Jean-Philippe Lang2015-07-051-0/+1
* Adds translation strings (#19851).Jean-Philippe Lang2015-06-191-0/+1
* Replaces hard-coded strings in views (#19707).Jean-Philippe Lang2015-06-061-0/+3
ption value='backport/47971/stable30'>backport/47971/stable30 Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
summaryrefslogtreecommitdiffstats
path: root/cron.php
blob: aa14e17709e838e03baa434ae0c80b9e8d7dba34 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<?php
/**
 * @copyright Copyright (c) 2016, ownCloud, Inc.
 *
 * @author Artem Sidorenko <artem@posteo.de>
 * @author Christopher Schäpers <kondou@ts.unde.re>
 * @author Christoph Wurst <christoph@winzerhof-wurst.at>
 * @author Daniel Kesselberg <mail@danielkesselberg.de>
 * @author hoellen <dev@hoellen.eu>
 * @author J0WI <J0WI@users.noreply.github.com>
 * @author Jakob Sack <mail@jakobsack.de>
 * @author Joas Schilling <coding@schilljs.com>
 * @author Jörn Friedrich Dreyer <jfd@butonic.de>
 * @author Ko- <k.stoffelen@cs.ru.nl>
 * @author Michael Kuhn <michael@ikkoku.de>
 * @author Morris Jobke <hey@morrisjobke.de>
 * @author Oliver Kohl D.Sc. <oliver@kohl.bz>
 * @author Robin Appelman <robin@icewind.nl>
 * @author Roeland Jago Douma <roeland@famdouma.nl>
 * @author Steffen Lindner <mail@steffen-lindner.de>
 * @author Thomas Müller <thomas.mueller@tmit.eu>
 * @author Vincent Petry <vincent@nextcloud.com>
 * @author Stephen Michel <git@smichel.me>
 *
 * @license AGPL-3.0
 *
 * This code is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program 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, version 3,
 * along with this program. If not, see <http://www.gnu.org/licenses/>
 *
 */
require_once __DIR__ . '/lib/versioncheck.php';

try {
	require_once __DIR__ . '/lib/base.php';

	if (\OCP\Util::needUpgrade()) {
		\OC::$server->getLogger()->debug('Update required, skipping cron', ['app' => 'cron']);
		exit;
	}
	if ((bool) \OC::$server->getSystemConfig()->getValue('maintenance', false)) {
		\OC::$server->getLogger()->debug('We are in maintenance mode, skipping cron', ['app' => 'cron']);
		exit;
	}

	// load all apps to get all api routes properly setup
	OC_App::loadApps();

	\OC::$server->getSession()->close();

	// initialize a dummy memory session
	$session = new \OC\Session\Memory('');
	$cryptoWrapper = \OC::$server->getSessionCryptoWrapper();
	$session = $cryptoWrapper->wrapSession($session);
	\OC::$server->setSession($session);

	$logger = \OC::$server->getLogger();
	$config = \OC::$server->getConfig();

	// Don't do anything if Nextcloud has not been installed
	if (!$config->getSystemValue('installed', false)) {
		exit(0);
	}

	\OC::$server->getTempManager()->cleanOld();

	// Exit if background jobs are disabled!
	$appMode = $config->getAppValue('core', 'backgroundjobs_mode', 'ajax');
	if ($appMode === 'none') {
		if (OC::$CLI) {
			echo 'Background Jobs are disabled!' . PHP_EOL;
		} else {
			OC_JSON::error(['data' => ['message' => 'Background jobs disabled!']]);
		}
		exit(1);
	}

	if (OC::$CLI) {
		// set to run indefinitely if needed
		if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
			@set_time_limit(0);
		}

		// the cron job must be executed with the right user
		if (!function_exists('posix_getuid')) {
			echo "The posix extensions are required - see https://www.php.net/manual/en/book.posix.php" . PHP_EOL;
			exit(1);
		}

		$user = posix_getuid();
		$configUser = fileowner(OC::$configDir . 'config.php');
		if ($user !== $configUser) {
			echo "Console has to be executed with the user that owns the file config/config.php" . PHP_EOL;
			echo "Current user id: " . $user . PHP_EOL;
			echo "Owner id of config.php: " . $configUser . PHP_EOL;
			exit(1);
		}


		// We call Nextcloud from the CLI (aka cron)
		if ($appMode !== 'cron') {
			$config->setAppValue('core', 'backgroundjobs_mode', 'cron');
		}

		// Work
		$jobList = \OC::$server->getJobList();

		// We only ask for jobs for 14 minutes, because after 5 minutes the next
		// system cron task should spawn and we want to have at most three
		// cron jobs running in parallel.
		$endTime = time() + 14 * 60;

		$executedJobs = [];
		while ($job = $jobList->getNext()) {
			if (isset($executedJobs[$job->getId()])) {
				$jobList->unlockJob($job);
				break;
			}

			$job->execute($jobList, $logger);
			// clean up after unclean jobs
			\OC_Util::tearDownFS();

			$jobList->setLastJob($job);
			$executedJobs[$job->getId()] = true;
			unset($job);

			if (time() > $endTime) {
				break;
			}
		}
	} else {
		// We call cron.php from some website
		if ($appMode === 'cron') {
			// Cron is cron :-P
			OC_JSON::error(['data' => ['message' => 'Backgroundjobs are using system cron!']]);
		} else {
			// Work and success :-)
			$jobList = \OC::$server->getJobList();
			$job = $jobList->getNext();
			if ($job != null) {
				$job->execute($jobList, $logger);
				$jobList->setLastJob($job);
			}
			OC_JSON::success();
		}
	}

	// Log the successful cron execution
	$config->setAppValue('core', 'lastcron', time());
	exit();
} catch (Exception $ex) {
	\OC::$server->getLogger()->logException($ex, ['app' => 'cron']);
	echo $ex . PHP_EOL;
	exit(1);
} catch (Error $ex) {
	\OC::$server->getLogger()->logException($ex, ['app' => 'cron']);
	echo $ex . PHP_EOL;
	exit(1);
}