Ejemplo n.º 1
0
 /**
  * @brief does a single task
  * @return boolean
  *
  * This method executes one task. It saves the last state and continues
  * with the next step. This method should be used by webcron and ajax
  * services.
  */
 public static function doNextStep()
 {
     $laststep = OC_Appconfig::getValue('core', 'backgroundjobs_step', 'regular_tasks');
     if ($laststep == 'regular_tasks') {
         // get last app
         $lasttask = OC_Appconfig::getValue('core', 'backgroundjobs_task', '');
         // What's the next step?
         $regular_tasks = OC_BackgroundJob_RegularTask::all();
         ksort($regular_tasks);
         $done = false;
         // search for next background job
         foreach ($regular_tasks as $key => $value) {
             if (strcmp($key, $lasttask) > 0) {
                 OC_Appconfig::setValue('core', 'backgroundjobs_task', $key);
                 $done = true;
                 call_user_func($value);
                 break;
             }
         }
         if ($done == false) {
             // Next time load queued tasks
             OC_Appconfig::setValue('core', 'backgroundjobs_step', 'queued_tasks');
         }
     } else {
         $tasks = OC_BackgroundJob_QueuedTask::all();
         if (count($tasks)) {
             $task = $tasks[0];
             // delete job before we execute it. This prevents endless loops
             // of failing jobs.
             OC_BackgroundJob_QueuedTask::delete($task['id']);
             // execute job
             call_user_func(array($task['klass'], $task['method']), $task['parameters']);
         } else {
             // Next time load queued tasks
             OC_Appconfig::setValue('core', 'backgroundjobs_step', 'regular_tasks');
             OC_Appconfig::setValue('core', 'backgroundjobs_task', '');
         }
     }
     return true;
 }
Ejemplo n.º 2
0
 /**
  * @brief deletes a queued task
  * @param $id id of task
  * @return true/false
  *
  * Deletes a report
  */
 public static function deleteQueuedTask($id)
 {
     return \OC_BackgroundJob_QueuedTask::delete($id);
 }