├── LICENSE ├── README.md ├── uploads ├── admin │ ├── cron.php │ └── cron_tasks.php └── system │ └── library │ └── cron.php └── versions ├── ocstore_cron_1_0_1_for_opencart_2_x.ocmod.zip └── ocstore_cron_1_0_for_opencart_2_x.ocmod.zip /LICENSE: -------------------------------------------------------------------------------- 1 | License: DonateWare 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sergeypechenyuk/opencart-cron/72cd9bf31da63e88ebe04f1ec87e7b194cdac5c2/README.md -------------------------------------------------------------------------------- /uploads/admin/cron.php: -------------------------------------------------------------------------------- 1 | isRun()) 16 | exit; 17 | 18 | // Startup 19 | require_once(DIR_SYSTEM . 'startup.php'); 20 | 21 | // Registry 22 | $registry = new Registry(); 23 | 24 | // Config 25 | $config = new Config(); 26 | $registry->set('config', $config); 27 | 28 | // Database 29 | $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE, DB_PORT); 30 | $registry->set('db', $db); 31 | 32 | // Settings 33 | $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); 34 | 35 | foreach ($query->rows as $setting) { 36 | if (!$setting['serialized']) { 37 | $config->set($setting['key'], $setting['value']); 38 | } else { 39 | $config->set($setting['key'], json_decode($setting['value'], true)); 40 | } 41 | } 42 | 43 | // Loader 44 | $loader = new Loader($registry); 45 | $registry->set('load', $loader); 46 | 47 | // Url 48 | $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); 49 | $registry->set('url', $url); 50 | 51 | // Log 52 | $log = new Log($config->get('config_error_filename')); 53 | $registry->set('log', $log); 54 | 55 | function error_handler($code, $message, $file, $line) { 56 | global $log, $config; 57 | 58 | // error suppressed with @ 59 | if (error_reporting() === 0) { 60 | return false; 61 | } 62 | 63 | switch ($code) { 64 | case E_NOTICE: 65 | case E_USER_NOTICE: 66 | $error = 'Notice'; 67 | break; 68 | case E_WARNING: 69 | case E_USER_WARNING: 70 | $error = 'Warning'; 71 | break; 72 | case E_ERROR: 73 | case E_USER_ERROR: 74 | $error = 'Fatal Error'; 75 | break; 76 | default: 77 | $error = 'Unknown'; 78 | break; 79 | } 80 | 81 | if ($config->get('config_error_display')) { 82 | echo '' . $error . ': ' . $message . ' in ' . $file . ' on line ' . $line . ''; 83 | } 84 | 85 | if ($config->get('config_error_log')) { 86 | $log->write('PHP ' . $error . ': ' . $message . ' in ' . $file . ' on line ' . $line); 87 | } 88 | 89 | return true; 90 | } 91 | 92 | // Error Handler 93 | set_error_handler('error_handler'); 94 | 95 | // Request 96 | $request = new Request(); 97 | $registry->set('request', $request); 98 | 99 | // Response 100 | $response = new Response(); 101 | $response->addHeader('Content-Type: text/html; charset=utf-8'); 102 | $registry->set('response', $response); 103 | 104 | // Cache 105 | $cache = new Cache('file'); 106 | $registry->set('cache', $cache); 107 | 108 | // Session 109 | $session = new Session(); 110 | $registry->set('session', $session); 111 | 112 | // Language 113 | $languages = array(); 114 | 115 | $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); 116 | 117 | foreach ($query->rows as $result) { 118 | $languages[$result['code']] = $result; 119 | } 120 | 121 | $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); 122 | 123 | // Language 124 | $language = new Language($languages[$config->get('config_admin_language')]['directory']); 125 | $language->load($languages[$config->get('config_admin_language')]['directory']); 126 | $registry->set('language', $language); 127 | 128 | // Document 129 | $registry->set('document', new Document()); 130 | 131 | // Currency 132 | $registry->set('currency', new Currency($registry)); 133 | 134 | // Weight 135 | $registry->set('weight', new Weight($registry)); 136 | 137 | // Length 138 | $registry->set('length', new Length($registry)); 139 | 140 | // User 141 | $registry->set('user', new User($registry)); 142 | 143 | // OpenBay Pro 144 | $registry->set('openbay', new Openbay($registry)); 145 | 146 | // Event 147 | $event = new Event($registry); 148 | $registry->set('event', $event); 149 | 150 | $query = $db->query("SELECT * FROM " . DB_PREFIX . "event"); 151 | 152 | foreach ($query->rows as $result) { 153 | $event->register($result['trigger'], $result['action']); 154 | } 155 | 156 | // Front Controller 157 | $controller = new Front($registry); 158 | 159 | $cron->run($registry); 160 | 161 | 162 | // end file -------------------------------------------------------------------------------- /uploads/admin/cron_tasks.php: -------------------------------------------------------------------------------- 1 | call("module/yourmodulename/method", array ("minute" => "*", "hour" => "*", "day" => "*", "dayofweek" => "*", "dayofmonth" => "*"), array("param" => true)); 4 | 5 | //end file -------------------------------------------------------------------------------- /uploads/system/library/cron.php: -------------------------------------------------------------------------------- 1 | runCronDate = array ( 14 | "minute" => date("i"), 15 | "hour" => date("H"), 16 | "day" => date("d"), 17 | "dayofweek" => date("N"), 18 | "dayofmonth" => date("j") 19 | ); 20 | } 21 | 22 | public function __get($name) { 23 | return $this->registry->get($name); 24 | } 25 | 26 | public function isRun() { 27 | return count($this->tasks)? true: false; 28 | } 29 | 30 | public function run($registry) { 31 | $this->registry = $registry; 32 | foreach ($this->tasks as $task) 33 | $this->load->controller($task['controller'], $task['parameters']); 34 | } 35 | 36 | /** 37 | * Call the controller at a specific time 38 | * 39 | * @param string $controller Name of conroller and method, for example: setting/store/index 40 | * @param array $time Array of elements: minute, hour, day, dayofweek, dayofmonth. A value can be: * (any number); the number, range of numbers; eg 1-10. All values are separated by commas, for example "1,4,10-15,20". If you need to perform every script, for example, 5 minutes, then enter the value "* /5" 41 | **/ 42 | public function call($controller, $time, $parameters = array()) { 43 | if ($this->isTime($time)) { 44 | $this->tasks[] = array("controller" => $controller, "parameters" => $parameters); 45 | } 46 | } 47 | 48 | private function isTime($time) { 49 | if (!is_array($time)) 50 | return false; 51 | 52 | $minute = false; 53 | $hour = false; 54 | $day = false; 55 | $dayofweek = false; 56 | $dayofmonth = false; 57 | 58 | foreach (array("minute", "hour", "day", "dayofweek", "dayofmonth") as $param) { 59 | if(!isset($time[$param])) 60 | return false; 61 | else { 62 | if (trim($time[$param]) == "") 63 | return false; 64 | else if (!preg_match('/[\d\-*,\/]/', $time[$param])) 65 | return false; 66 | else { 67 | $temp = explode(",",$time[$param]); 68 | foreach ($temp as $t) { 69 | if (trim($t) == "") 70 | continue; 71 | elseif ($t == "*") { 72 | $$param = true; 73 | break; 74 | } 75 | elseif (is_numeric($t)) { 76 | if ($this->runCronDate[$param] == $t) { 77 | $$param = true; 78 | break; 79 | } 80 | } 81 | else { 82 | if (preg_match('/[\-]/', $time[$param])) { 83 | list($from, $to) = explode("-", $t, 2); 84 | if (!is_numeric($from) || !is_numeric($to) || $from > $to) 85 | return false; 86 | if ($this->runCronDate[$param] >= $from && $this->runCronDate[$param] <= $to) { 87 | $$param = true; 88 | break; 89 | } 90 | } 91 | elseif (preg_match('/[\/]/', $time[$param])) { 92 | list($any, $step) = explode("/", $t, 2); 93 | echo $this->runCronDate[$param]." - $any, $step"; 94 | if ($any != "*" || !is_numeric($step)) 95 | return false; 96 | if ($this->runCronDate[$param] % $step == 0) { 97 | $$param = true; 98 | break; 99 | } 100 | } 101 | else 102 | return false; 103 | } 104 | } 105 | } 106 | } 107 | } 108 | 109 | if ($minute && $hour && $day && $dayofweek && $dayofmonth) 110 | return true; 111 | return false; 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /versions/ocstore_cron_1_0_1_for_opencart_2_x.ocmod.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sergeypechenyuk/opencart-cron/72cd9bf31da63e88ebe04f1ec87e7b194cdac5c2/versions/ocstore_cron_1_0_1_for_opencart_2_x.ocmod.zip -------------------------------------------------------------------------------- /versions/ocstore_cron_1_0_for_opencart_2_x.ocmod.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sergeypechenyuk/opencart-cron/72cd9bf31da63e88ebe04f1ec87e7b194cdac5c2/versions/ocstore_cron_1_0_for_opencart_2_x.ocmod.zip --------------------------------------------------------------------------------