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
00056 if($job = CronTab::get_cronjob($paramarray['name'])) {
00057 $job->delete();
00058 }
00059
00060 $cron = new CronJob( $paramarray );
00061 $result = $cron->insert();
00062
00063
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,
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,
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,
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,
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,
00163 'description' => $description
00164 );
00165 return self::add_cron( $paramarray );
00166 }
00167
00168 }
00169
00170 ?>