Changeset 1391

Show
Ignore:
Timestamp:
12/01/08 17:28:18 (5 weeks ago)
Author:
MattRead
Message:

plugin:crontabmanager provide an "add cron" form

Location:
plugins/crontabmanager/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • plugins/crontabmanager/trunk/crontab.php

    r1389 r1391  
    11<?php $theme->display('header');?> 
    22 
     3<div class="create"> 
     4     
     5    <?php echo $form; ?> 
     6 
     7</div> 
    38 
    49<div id="crontab" class="container settings"> 
     10    <div style="float:right">Current Time: <?php HabariDateTime::date_create('now')->out(); ?></div> 
    511    <h2>Current Crontab Entries</h2> 
    612     
     
    2329            <ul class="dropbutton"> 
    2430                <li><a href="<?php URL::out('admin', array('page'=>'cronjob', 'cron_id'=>$cron->cron_id)); ?>">Edit</a></li> 
     31                <li><a href="<?php URL::out('admin', array('page'=>'crontab', 'action'=>'run', 'cron_id'=>$cron->cron_id)); ?>">Run Now</a></li> 
    2532                <li><a href="<?php URL::out('admin', array('page'=>'crontab', 'action'=>'delete', 'cron_id'=>$cron->cron_id)); ?>">Delete</a></li> 
    2633            </ul> 
     
    3542        <ul class="description pct50"> 
    3643            <li>Runs Every <?php echo $cron->increment; ?> seconds.</li> 
    37             <li>Last Run: <?php $cron->last_run->out(); ?></li> 
     44            <li>Last Run: <?php echo $cron->last_run ? $cron->last_run->get() : 'Not Run'; ?></li> 
    3845            <li>Next Run: <?php $cron->next_run->out(); ?></li> 
    3946            <li>Starts On: <?php  $cron->start_time->out(); ?></li> 
     
    4249    </div> 
    4350 
    44 <?php endforeach; ?> 
     51    <?php endforeach; ?> 
    4552</div> 
    4653 
  • plugins/crontabmanager/trunk/crontabmanager.plugin.php

    r1389 r1391  
    2424        $this->add_template('crontab', dirname($this->get_file()) . '/crontab.php'); 
    2525        $this->add_template('cronjob', dirname($this->get_file()) . '/cronjob.php'); 
     26    } 
     27     
     28    public function action_admin_theme_post_crontab( AdminHandler $handler, Theme $theme ) 
     29    { 
     30        // saving is handled by FormUI 
     31        $this->action_admin_theme_get_crontab($handler, $theme); 
     32        $theme->display('crontab'); 
     33         
     34        // stoopid. 
     35        exit; 
    2636    } 
    2737     
     
    4757                    } 
    4858                    break; 
     59                case 'run': 
     60                    $cron = CronTab::get_cronjob((int) $handler->handler_vars['cron_id']); 
     61                    $cron->next_run = HabariDateTime::date_create('now'); 
     62                    $cron->update(); 
     63                    Options::set('next_cron', $cron->next_run->int ); 
     64                    Session::notice(_t( 
     65                            'Executing Cron Job "%s"', 
     66                            array($cron->name), 
     67                            'crontabmanager' 
     68                        )); 
     69                    break; 
    4970            } 
    5071        } 
     72         
     73        $form = new FormUI('crontab-new'); 
     74        $form->set_option( 'form_action', URL::get('admin', 'page=crontab' ) ); 
     75        $form->class[] = 'form comment'; 
     76        $tabs = $form->append('tabs', 'publish_controls'); 
     77        $new = $tabs->append('fieldset', 'settings', _t('Add Cronjob', 'crontabmanage')); 
     78         
     79        $name = $new->append('text', 'cron_name', 'null:null', _t('Name', 'crontabmanager'), 'tabcontrol_text'); 
     80         
     81        $callback = $new->append('text', 'callback', 'null:null', _t('Callback', 'crontabmanager'), 'tabcontrol_text'); 
     82         
     83        $increment = $new->append('text', 'increment', 'null:null', _t('Iterval', 'crontabmanager'), 'tabcontrol_text'); 
     84         
     85        $start_time = $new->append('text', 'start_time', 'null:null', _t('Start Time', 'crontabmanager'), 'tabcontrol_text'); 
     86         
     87        $end_time = $new->append('text', 'end_time', 'null:null', _t('End Time', 'crontabmanager'), 'tabcontrol_text'); 
     88         
     89        $description = $new->append('text', 'description', 'null:null', _t('Description', 'crontabmanager'), 'tabcontrol_text'); 
     90         
     91        $cron_class = $new->append('select', 'cron_class', 'null:null', _t('Cron Class', 'crontabmanager'), 'tabcontrol_select'); 
     92        $cron_class->value = CronJob::CRON_CUSTOM; 
     93        $cron_class->options = array( 
     94            CronJob::CRON_SYSTEM => _t('System', 'crontabmanager'), 
     95            CronJob::CRON_THEME => _t('Theme', 'crontabmanager'), 
     96            CronJob::CRON_PLUGIN => _t('Plugin', 'crontabmanager'), 
     97            CronJob::CRON_CUSTOM => _t('Custom', 'crontabmanager'), 
     98        ); 
     99         
     100        $new->append( 'submit', 'save', _t('Save', 'crontabmanager') ); 
     101        $form->on_success( array($this, 'formui_submit') ); 
     102        $theme->form = $form->get(); 
     103         
     104         
    51105        $crons = DB::get_results( 
    52106            'SELECT * FROM {crontab}', 
     
    148202    public function formui_submit( FormUI $form ) 
    149203    { 
    150         $cron = CronTab::get_cronjob((int) $form->cron_id->value); 
     204        if( isset($form->cron_id) ) { 
     205            $cron = CronTab::get_cronjob((int) $form->cron_id->value); 
     206        } 
     207        else { 
     208            $required = array('cron_name', 'callback', 'description'); 
     209            foreach( $required as $req ) { 
     210                if( !$form->{$req}->value ) { 
     211                    Session::error(_t('%s is a required feild.', array(ucwords($req)), 'crontabmanager')); 
     212                    return; 
     213                } 
     214            } 
     215            $cron = new CronJob; 
     216            //$cron->insert(); 
     217        } 
     218         
    151219        $cron->name =  $form->cron_name->value; 
    152220        $cron->callback = 
     
    154222            ? unserialize($form->callback->value)  
    155223            : $form->callback->value; 
    156         $cron->increment = $form->increment->value; 
    157         $cron->next_run =  HabariDateTime::date_create($form->next_run->value); 
    158         $cron->start_time =  HabariDateTime::date_create($form->start_time->value); 
    159         $cron->end_time =  $form->end_time->value ? HabariDateTime::date_create($form->end_time->value) : null; 
    160         $cron->description =  $form->description->value; 
    161         $cron->cron_class =  $form->cron_class->value; 
     224        $cron->increment = $form->increment->value ? $form->increment->value : 86400; 
     225        $cron->next_run = HabariDateTime::date_create((isset($form->next_run) && $form->next_run->value) ? $form->next_run->value : HabariDateTime::date_create()); 
     226        $cron->start_time = HabariDateTime::date_create($form->start_time->value ? $form->start_time->value : HabariDateTime::date_create()); 
     227        $cron->end_time = $form->end_time->value ? HabariDateTime::date_create($form->end_time->value) : null; 
     228        $cron->description = $form->description->value; 
     229        $cron->cron_class = $form->cron_class->value; 
     230         
     231        if ( intval( Options::get('next_cron') ) > $cron->next_run->int ){ 
     232            Options::set( 'next_cron', $cron->next_run->int ); 
     233        } 
    162234         
    163235        if( $cron->update() ) { 
     
    165237        } 
    166238        else { 
    167             Session::error( _t('Coul not save Cron Job.', 'crontabmanager') ); 
     239            Session::error( _t('Could not save Cron Job.', 'crontabmanager') ); 
    168240        } 
    169241    }