Kaynağa Gözat

added auto backup cron
changed cron logger to new log function

CauseFX 3 yıl önce
ebeveyn
işleme
69a198c5c0
3 değiştirilmiş dosya ile 60 ekleme ve 33 silme
  1. 2 0
      api/classes/organizr.class.php
  2. 2 0
      api/config/default.php
  3. 56 33
      cron.php

+ 2 - 0
api/classes/organizr.class.php

@@ -2427,6 +2427,8 @@ class Organizr
 				$this->settingsOption('blank'),
 				$this->settingsOption('enable', 'autoUpdateCronEnabled', ['label' => 'Auto-Update Organizr']),
 				$this->settingsOption('cron', 'autoUpdateCronSchedule'),
+				$this->settingsOption('enable', 'autoBackupCronEnabled', ['label' => 'Auto-Backup Organizr']),
+				$this->settingsOption('cron', 'autoBackupCronSchedule'),
 			],
 			'Login' => [
 				$this->settingsOption('password', 'registrationPassword', ['label' => 'Registration Password', 'help' => 'Sets the password for the Registration form on the login screen']),

+ 2 - 0
api/config/default.php

@@ -659,6 +659,8 @@ return [
 	'checkForThemeUpdate' => true,
 	'autoUpdateCronEnabled' => false,
 	'autoUpdateCronSchedule' => '@weekly',
+	'autoBackupCronEnabled' => false,
+	'autoBackupCronSchedule' => '@weekly',
 	'useRandomMediaImage' => false,
 	'sendLogsToSlack' => false,
 	'slackLogLevel' => 'WARNING',

+ 56 - 33
cron.php

@@ -1,7 +1,6 @@
 <?php
 require_once 'api/functions.php';
 $Organizr = new Organizr();
-$Organizr->setLoggerChannel('Cron');
 if ($Organizr->isLocalOrServer() && $Organizr->hasDB()) {
 	// Set user as Organizr API
 	$_GET['apikey'] = $Organizr->config['organizrAPI'];
@@ -9,86 +8,110 @@ if ($Organizr->isLocalOrServer() && $Organizr->hasDB()) {
 	$scheduler = new GO\Scheduler();
 	// Clear any pre-existing jobs if any
 	$scheduler->clearJobs();
-	$Organizr->logger->debug('Cron process starting');
+	$Organizr->log('Cron')->debug('Cron process starting');
 	// Auto-update Cron
 	if ($Organizr->config['autoUpdateCronEnabled'] && $Organizr->config['autoUpdateCronSchedule']) {
 		try {
 			$schedule = new Cron\CronExpression($Organizr->config['autoUpdateCronSchedule']);
-			$Organizr->logger->debug('Cron schedule has passed validation', ['schedule' => $Organizr->config['autoUpdateCronSchedule']]);
+			$Organizr->log('Cron')->debug('Cron schedule has passed validation', ['schedule' => $Organizr->config['autoUpdateCronSchedule']]);
 			$scheduler->call(
 				function () use ($Organizr) {
-					$Organizr->logger->debug('Running cron job', ['function' => 'Auto-update']);
+					$Organizr->log('Cron')->debug('Running cron job', ['function' => 'Auto-update']);
 					return $Organizr->updateOrganizr();
 				})
 				->then(function ($output) use ($Organizr) {
-					$Organizr->logger->debug('Completed cron job', [
+					$Organizr->log('Cron')->debug('Completed cron job', [
 						'output' => $output,
 					]);
 				})
 				->at($Organizr->config['autoUpdateCronSchedule']);
 		} catch (InvalidArgumentException $e) {
-			$Organizr->logger->warning('Cron schedule has failed validation', ['schedule' => $Organizr->config['autoUpdateCronSchedule']]);
-			$Organizr->logger->error($e);
+			$Organizr->log('Cron')->warning('Cron schedule has failed validation', ['schedule' => $Organizr->config['autoUpdateCronSchedule']]);
+			$Organizr->log('Cron')->error($e);
 		} catch (Exception $e) {
-			$Organizr->logger->error($e);
+			$Organizr->log('Cron')->error($e);
 		}
 	}
 	// End Auto-update Cron
+	// Auto-backup Cron
+	if ($Organizr->config['autoBackupCronEnabled'] && $Organizr->config['autoBackupCronSchedule']) {
+		try {
+			$schedule = new Cron\CronExpression($Organizr->config['autoBackupCronSchedule']);
+			$Organizr->log('Cron')->debug('Cron schedule has passed validation', ['schedule' => $Organizr->config['autoBackupCronSchedule']]);
+			$scheduler->call(
+				function () use ($Organizr) {
+					$Organizr->log('Cron')->debug('Running cron job', ['function' => 'Auto-backup']);
+					return $Organizr->backupOrganizr();
+				})
+				->then(function ($output) use ($Organizr) {
+					$Organizr->log('Cron')->debug('Completed cron job', [
+						'output' => $output,
+					]);
+				})
+				->at($Organizr->config['autoBackupCronSchedule']);
+		} catch (InvalidArgumentException $e) {
+			$Organizr->log('Cron')->warning('Cron schedule has failed validation', ['schedule' => $Organizr->config['autoBackupCronSchedule']]);
+			$Organizr->log('Cron')->error($e);
+		} catch (Exception $e) {
+			$Organizr->log('Cron')->error($e);
+		}
+	}
+	// End Auto-backup Cron
 	// Add plugin cron
-	$Organizr->logger->debug('Checking if any plugins have cron jobs');
+	$Organizr->log('Cron')->debug('Checking if any plugins have cron jobs');
 	foreach ($GLOBALS['cron'] as $cronJob) {
 		if (isset($cronJob['enabled']) && isset($cronJob['class']) && isset($cronJob['function']) && isset($cronJob['schedule'])) {
-			$Organizr->logger->debug('Starting cron job for function: ' . $cronJob['function'], ['cronJob' => $cronJob]);
+			$Organizr->log('Cron')->debug('Starting cron job for function: ' . $cronJob['function'], ['cronJob' => $cronJob]);
 			if ($Organizr->config[$cronJob['enabled']]) {
-				$Organizr->logger->debug('Checking if cron job class exists', ['cronJob' => $cronJob]);
+				$Organizr->log('Cron')->debug('Checking if cron job class exists', ['cronJob' => $cronJob]);
 				if (class_exists($cronJob['class'])) {
-					$Organizr->logger->debug('Class exists', ['cronJob' => $cronJob]);
-					$Organizr->logger->debug('Validating cron job schedule', ['schedule' => $cronJob['schedule']]);
+					$Organizr->log('Cron')->debug('Class exists', ['cronJob' => $cronJob]);
+					$Organizr->log('Cron')->debug('Validating cron job schedule', ['schedule' => $cronJob['schedule']]);
 					try {
 						$schedule = new Cron\CronExpression($Organizr->config[$cronJob['schedule']]);
-						$Organizr->logger->debug('Cron schedule has passed validation', ['schedule' => $Organizr->config[$cronJob['schedule']]]);
+						$Organizr->log('Cron')->debug('Cron schedule has passed validation', ['schedule' => $Organizr->config[$cronJob['schedule']]]);
 						$plugin = new $cronJob['class']();
 						$function = $cronJob['function'];
-						$Organizr->logger->debug('Checking if cron job method exists', ['cronJob' => $cronJob]);
+						$Organizr->log('Cron')->debug('Checking if cron job method exists', ['cronJob' => $cronJob]);
 						if (method_exists($plugin, $function)) {
-							$Organizr->logger->debug('Method exists', ['cronJob' => $cronJob]);
+							$Organizr->log('Cron')->debug('Method exists', ['cronJob' => $cronJob]);
 							$scheduler->call(
 								function ($plugin, $function) use ($Organizr) {
-									$Organizr->logger->debug('Running cron job', ['function' => $function]);
+									$Organizr->log('Cron')->debug('Running cron job', ['function' => $function]);
 									return $plugin->$function();
 								}, [$plugin, $function])
 								->then(function ($output) use ($Organizr) {
-									$Organizr->logger->debug('Completed cron job', [
+									$Organizr->log('Cron')->debug('Completed cron job', [
 										'output' => $output,
 									]);
 								})
 								->at($Organizr->config[$cronJob['schedule']]);
 						} else {
-							$Organizr->logger->warning('Method error', ['cronJob' => $cronJob['class']]);
+							$Organizr->log('Cron')->warning('Method error', ['cronJob' => $cronJob['class']]);
 						}
 					} catch (InvalidArgumentException $e) {
-						$Organizr->logger->warning('Cron schedule has failed validation', ['schedule' => $Organizr->config[$cronJob['schedule']]]);
-						$Organizr->logger->error($e);
+						$Organizr->log('Cron')->warning('Cron schedule has failed validation', ['schedule' => $Organizr->config[$cronJob['schedule']]]);
+						$Organizr->log('Cron')->error($e);
 						break;
 					} catch (Exception $e) {
-						$Organizr->logger->error($e);
+						$Organizr->log('Cron')->error($e);
 						break;
 					}
 				} else {
-					$Organizr->logger->warning('Class error', ['cronJob' => $cronJob['class']]);
+					$Organizr->log('Cron')->warning('Class error', ['cronJob' => $cronJob['class']]);
 				}
 			} else {
-				$Organizr->logger->debug('Cron job is not enabled', ['cronJob' => $cronJob]);
+				$Organizr->log('Cron')->debug('Cron job is not enabled', ['cronJob' => $cronJob]);
 			}
 		} else {
-			$Organizr->logger->warning('Cron job was setup incorrectly', ['cronJob' => $cronJob]);
+			$Organizr->log('Cron')->warning('Cron job was setup incorrectly', ['cronJob' => $cronJob]);
 		}
 	}
-	$Organizr->logger->debug('Finished processing plugin cron jobs');
+	$Organizr->log('Cron')->debug('Finished processing plugin cron jobs');
 	/*
 	 * Include plugin advanced cron
 	 */
-	$Organizr->logger->debug('Checking if any Plugins have advanced cron jobs');
+	$Organizr->log('Cron')->debug('Checking if any Plugins have advanced cron jobs');
 	try {
 		$directoryIterator = new RecursiveDirectoryIterator($Organizr->root . DIRECTORY_SEPARATOR . 'api' . DIRECTORY_SEPARATOR . 'plugins', FilesystemIterator::SKIP_DOTS);
 		$iteratorIterator = new RecursiveIteratorIterator($directoryIterator);
@@ -98,7 +121,7 @@ if ($Organizr->isLocalOrServer() && $Organizr->hasDB()) {
 			}
 		}
 	} catch (UnexpectedValueException $e) {
-		$Organizr->logger->error($e);
+		$Organizr->log('Cron')->error($e);
 	}
 	/*
 	 * Include custom plugin advanced cron
@@ -115,23 +138,23 @@ if ($Organizr->isLocalOrServer() && $Organizr->hasDB()) {
 			}
 		}
 	} catch (UnexpectedValueException $e) {
-		$Organizr->logger->error($e);
+		$Organizr->log('Cron')->error($e);
 	}
-	$Organizr->logger->debug('Finished processing advanced plugin cron jobs');
+	$Organizr->log('Cron')->debug('Finished processing advanced plugin cron jobs');
 	// Run cron jobs
 	$scheduler->run();
 	// Debug stuff
 	//$Organizr->prettyPrint($scheduler->getVerboseOutput());
 	//$Organizr->prettyPrint($scheduler->getFailedJobs());
-	$Organizr->logger->debug('Cron process completion', ['verbose' => $scheduler->getVerboseOutput()]);
+	$Organizr->log('Cron')->debug('Cron process completion', ['verbose' => $scheduler->getVerboseOutput()]);
 	if (!empty($scheduler->getFailedJobs())) {
-		$Organizr->logger->warning('Cron jobs have failed', ['jobs' => $scheduler->getFailedJobs(), 'verbose' => $scheduler->getVerboseOutput()]);
+		$Organizr->log('Cron')->warning('Cron jobs have failed', ['jobs' => $scheduler->getFailedJobs(), 'verbose' => $scheduler->getVerboseOutput()]);
 	}
 	// End Run and set file with time
 	$Organizr->createCronFile();
 } else {
 	if ($Organizr->hasDB()) {
-		$Organizr->logger->warning('Unauthorized user tried to access cron file');
+		$Organizr->log('Cron')->warning('Unauthorized user tried to access cron file');
 		die($Organizr->showHTML('Unauthorized', 'Go-on.... Git!!!'));
 	}
 	die('Unauthorized');