├── 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
--------------------------------------------------------------------------------