Есть модуль курса валют, который парсит xml-файл Центробанка за 2 даты (сегодня и вчера) и выводит сам курс и разницу в курсах.
Проблема в том, что Центробанк обновляет курс (и xml соответственно) только в рабочие дни, поэтому в выходные и после выходного дня разница равняется нулю.
Возможно ли сделать так, чтобы вместо вчерашнего дня парсился xml последнего рабочего дня?
<?php
if(!defined('DATALIFEENGINE')) {die("Hacking attempt!");}
$cache_file=$_SERVER['DOCUMENT_ROOT']."/engine/cache/usd.tmp";
if (file_exists( $cache_file ) && date('H',filemtime($cache_file))== date("H", mktime(date("H"), 0, 0, 0, 0, 0))){
$f=fopen($cache_file,"rb");
$inf=fread($f,filesize($cache_file));
} else {
$tday = date("d/m/Y");
$yday = date("d/m/Y",strtotime("-1 day")); // Вчера
$td = date('d.m.Y');
$yd = date("d.m.Y",strtotime("-1 day")); //Вчера
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=".$yday."&date_req2=".$tday."&VAL_NM_RQ=R01235"); //USD
$xml = $file->xpath("//Record[@Date='".$td."']"); $usd = str_replace(',', '.', strval($xml[0]->Value));
$xml = $file->xpath("//Record[@Date='".$yd."']"); $usd2 = str_replace(',', '.', strval($xml[0]->Value));
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=".$yday."&date_req2=".$tday."&VAL_NM_RQ=R01239"); //Euro
$xml = $file->xpath("//Record[@Date='".$td."']"); $euro = str_replace(',', '.', strval($xml[0]->Value));
$xml = $file->xpath("//Record[@Date='".$yd."']"); $euro2 = str_replace(',', '.', strval($xml[0]->Value));
$raz = $usd-$usd2; if ($raz>0) {$color="green"; $plus="+";} elseif ($raz<0) {$color="red";} else {$color="#999"; $plus="";}
$raz2 = $euro-$euro2; if ($raz2>0) {$color2="green"; $plus2="+";} elseif ($raz2<0) {$color2="red";} else {$color2="#999"; $plus2="";}
$usd = number_format($usd, 3);
$raz = number_format($raz, 3);
$euro = number_format($euro, 3);
$raz2 = number_format($raz2, 3);
$inf = "
<style>td{padding:0 5px}</style><table>\n
<tr><td style='color:green'>$</td><td>".$usd."</td><td style='color:".$color."' align='right'>".$plus.$raz."</td></tr>\n
<tr><td style='color:orange'>€</td><td>".$euro."</td><td style='color:".$color2."' align='right'>".$plus2.$raz2."</td></tr>\n
</table>";
@file_put_contents($cache_file,$inf);
}