public function getController(\Request $request) { $cmd = $request->shiftCommand(); if ($cmd == 'admin' && \Current_User::isDeity()) { $admin = new \pulse\PulseAdminController($this); return $admin; } else { if (!\Settings::get('pulse', 'allow_web_access')) { exit('Web access to pulse is not allowed.'); } try { PulseController::runSchedules($request); } catch (Exception\PulseException $e) { PulseFactory::logError($e->getMessage() . "\n" . $e->getFile() . ':' . $e->getLine()); exit('Error: ' . $e->getMessage()); } catch (\Exception $e) { PulseFactory::logError($e->getMessage() . "\n" . $e->getFile() . ':' . $e->getLine()); exit('An error occurred outside the scope of Pulse.'); } exit; } }
public static function runSchedules(\Request $request) { if ($request->isVar('hash')) { $schedule_hash = $request->getVar('hash'); if (preg_match('/\\W/', $schedule_hash)) { throw new Exception\PulseException('Improper schedule hash'); } $schedule = PulseFactory::pullReadyScheduleByHash($schedule_hash); if (empty($schedule)) { throw new Exception\PulseException('Schedule hash not found: ' . $schedule_hash); } else { $schedules[] = $schedule; } } elseif ($request->isVar('schedule_module')) { if ($request->isVar('name')) { $schedule_name = $request->getVar('name'); } else { $schedule_name = null; } $schedule_module = $request->getVar('schedule_module'); $schedules = PulseFactory::pullReadySchedulesByModule($schedule_module, $schedule_name); } elseif ($request->isVar('name')) { $schedule_name = $request->getVar('name'); $schedules = PulseFactory::pullReadySchedulesByName($schedule_name); } else { $schedules = PulseFactory::pullReadySchedules(); } if (empty($schedules)) { exit("No schedules run.\n"); } $completed = PulseFactory::walkSchedules($schedules); if (!empty($completed)) { foreach ($completed as $sch_id) { echo "Schedule #{$sch_id} completed.\n"; } } exit; }
public static function walkSchedules(array $schedules) { $schedules_completed = null; $error_occurred = false; foreach ($schedules as $job) { $schedule = new PulseSchedule(); $schedule->setVars($job); try { PulseFactory::executeSchedule($schedule); $schedules_completed[] = $schedule->getId(); } catch (\Exception $e) { self::logError($e->getMessage()); PulseFactory::errorConditionSet($schedule); $error_occurred = true; } } if ($error_occurred) { throw new Exception\PulseException('One or more errors occurred during schedule execution.'); } else { return $schedules_completed; } }