*/ class Mage_Backup_Model_Config_Backend_Cron extends Mage_Core_Model_Config_Data { const CRON_STRING_PATH = 'crontab/jobs/system_backup/schedule/cron_expr'; const CRON_MODEL_PATH = 'crontab/jobs/system_backup/run/model'; const XML_PATH_BACKUP_ENABLED = 'groups/backup/fields/enabled/value'; const XML_PATH_BACKUP_TIME = 'groups/backup/fields/time/value'; const XML_PATH_BACKUP_FREQUENCY = 'groups/backup/fields/frequency/value'; /** * Cron settings after save * * @return Mage_Adminhtml_Model_System_Config_Backend_Log_Cron */ protected function _afterSave() { $enabled = $this->getData(self::XML_PATH_BACKUP_ENABLED); $time = $this->getData(self::XML_PATH_BACKUP_TIME); $frequency = $this->getData(self::XML_PATH_BACKUP_FREQUENCY); $frequencyWeekly = Mage_Adminhtml_Model_System_Config_Source_Cron_Frequency::CRON_WEEKLY; $frequencyMonthly = Mage_Adminhtml_Model_System_Config_Source_Cron_Frequency::CRON_MONTHLY; if ($enabled) { $cronExprArray = array( intval($time[1]), # Minute intval($time[0]), # Hour ($frequency == $frequencyMonthly) ? '1' : '*', # Day of the Month '*', # Month of the Year ($frequency == $frequencyWeekly) ? '1' : '*', # Day of the Week ); $cronExprString = join(' ', $cronExprArray); } else { $cronExprString = ''; } try { Mage::getModel('core/config_data') ->load(self::CRON_STRING_PATH, 'path') ->setValue($cronExprString) ->setPath(self::CRON_STRING_PATH) ->save(); Mage::getModel('core/config_data') ->load(self::CRON_MODEL_PATH, 'path') ->setValue((string) Mage::getConfig()->getNode(self::CRON_MODEL_PATH)) ->setPath(self::CRON_MODEL_PATH) ->save(); } catch (Exception $e) { Mage::throwException(Mage::helper('backup')->__('Unable to save the cron expression.')); } } }