• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • Examples
  • File List

system/classes/crontab.php

00001 <?php
00007   namespace Habari;
00008 
00012   class CronTab {
00013 
00020     static function get_cronjob( $name )
00021     {
00022       if ( is_int( $name ) ) {
00023         $cron = DB::get_row( 'SELECT * FROM {crontab} WHERE cron_id = ?', array( $name ), '\Habari\CronJob' );
00024       }
00025       else {
00026         $cron = DB::get_row( 'SELECT * FROM {crontab} WHERE name = ?', array( $name ), '\Habari\CronJob' );
00027       }
00028       return $cron;
00029     }
00030 
00037     static function delete_cronjob( $name )
00038     {
00039       $cron = self::get_cronjob( $name );
00040       if ( $cron ) {
00041         return $cron->delete();
00042       }
00043       return false;
00044     }
00045 
00053     static function add_cron( $paramarray )
00054     {
00055       // Delete any existing job with this same name
00056       if($job = CronTab::get_cronjob($paramarray['name'])) {
00057         $job->delete();
00058       }
00059 
00060       $cron = new CronJob( $paramarray );
00061       $result = $cron->insert();
00062 
00063       //If the new cron should run earlier than the others, rest next_cron to its strat time.
00064       $next_cron = DB::get_value( 'SELECT next_run FROM {crontab} ORDER BY next_run ASC LIMIT 1', array() );
00065       if ( intval( Options::get( 'next_cron' ) ) > intval( $next_cron ) ) {
00066         Options::set( 'next_cron', $next_cron );
00067       }
00068       return $result ? $cron : false;
00069     }
00070 
00080     static function add_single_cron( $name, $callback, $run_time, $description = '' )
00081     {
00082       $paramarray = array(
00083         'name' => $name,
00084         'callback' => $callback,
00085         'start_time' => $run_time,
00086         'end_time' => $run_time, // only run once
00087         'description' => $description
00088       );
00089       return self::add_cron( $paramarray );
00090     }
00091 
00100     static function add_hourly_cron( $name, $callback, $description = '' )
00101     {
00102       $paramarray = array(
00103         'name' => $name,
00104         'callback' => $callback,
00105         'increment' => 3600, // one hour
00106         'description' => $description
00107       );
00108       return self::add_cron( $paramarray );
00109     }
00110 
00119     static function add_daily_cron( $name, $callback, $description = '' )
00120     {
00121       $paramarray = array(
00122         'name' => $name,
00123         'callback' => $callback,
00124         'increment' => 86400, // one day
00125         'description' => $description
00126       );
00127       return self::add_cron( $paramarray );
00128     }
00129 
00138     static function add_weekly_cron( $name, $callback, $description = '' )
00139     {
00140       $paramarray = array(
00141         'name' => $name,
00142         'callback' => $callback,
00143         'increment' => 604800, // one week (7 days)
00144         'description' => $description
00145       );
00146       return self::add_cron( $paramarray );
00147     }
00148 
00157     static function add_monthly_cron( $name, $callback, $description = '' )
00158     {
00159       $paramarray = array(
00160         'name' => $name,
00161         'callback' => $callback,
00162         'increment' => 2592000, // one month (30 days)
00163         'description' => $description
00164       );
00165       return self::add_cron( $paramarray );
00166     }
00167 
00168   }
00169 
00170 ?>

Generated on Sun Aug 4 2013 12:51:43 for Habari by  doxygen 1.7.1