array ( * 'X' => 'name', * ) * 'X' should be an increment of 1 * 'name' should be the EXACT name of your function * * Your function should not be passed any parameters * Always return a Boolean. If it does not the Job will not terminate itself * after completion, and the webserver will be forced to time-out that Job instance. * DO NOT USE sugar_cleanup(); in your function flow or includes. this will * break Schedulers. That function is called at the foot of cron.php */ /** * This array provides the Schedulers admin interface with values for its "Job" * dropdown menu. */ $job_strings = array ( 0 => 'getNbpCurrencies', ); function getNbpCurrencies() { try { $db = $GLOBALS['db']; $currencies = $db->query("SELECT id, iso4217 FROM currencies WHERE deleted=0"); while ($c = $db->fetchByAssoc($currencies)) { $nbpData = makeCUrlRequest("https://api.nbp.pl/api/exchangerates/rates/a/" . $c['iso4217'] . "?format=json"); if ($nbpData != null && is_array($nbpData->rates) && count($nbpData->rates) > 0) { $db->query("UPDATE currencies SET conversion_rate=" . $nbpData->rates[0]->mid . ", date_modified = NOW() WHERE id = '" . $c['id'] . "'"); $db->query("INSERT INTO currency_nbp_archive VALUES('" . $nbpData->rates[0]->effectiveDate . "', '" . $c['id'] . "', '" . $c['iso4217'] . "', " . $nbpData->rates[0]->mid . ", '" . $nbpData->rates[0]->no . "')"); } else { return false; } } $db->query("DELETE FROM currency_nbp_archive WHERE date < (NOW() - INTERVAL 100 DAY)"); return true; } catch (Exception $e) { return false; } } // helpers function brecho($msg) { echo PHP_EOL; var_dump($msg); echo PHP_EOL.PHP_EOL; } function makeCUrlRequest($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET' ); curl_setopt($curl, CURLOPT_VERBOSE, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_URL, $url); return json_decode(curl_exec($curl)); }