/**
* Make some routines for pay systems
*/
class CSalePaySystemsHelper
{
private static function getTarifClassName($actionFile)
{
if($actionFile == '' )
return '';
static $arClassNames = array();
if(!isset($arClassNames[$actionFile]))
{
$PSTarifClassName = ''; //must be defined in file tarif.php and contain class
$tarifFileName = $_SERVER["DOCUMENT_ROOT"].$actionFile."/tarif.php";
if(file_exists($tarifFileName))
include_once($tarifFileName);
$arClassNames[$actionFile] = $PSTarifClassName; // todo: may be object/instance instead name ?
}
return $arClassNames[$actionFile];
}
public static function prepareTarifForSaving($actionFile, $arTarif)
{
$arResult = array();
$PSTarifClassName = self::getTarifClassName($actionFile);
if($PSTarifClassName <> '' && is_callable($PSTarifClassName.'::prepareToField'))
$arResult = call_user_func($PSTarifClassName.'::prepareToField', $arTarif);
return $arResult;
}
public static function getPaySystemTarif($actionFile, $psId, $persId = 0)
{
$arTarif = array();
$PSTarifClassName = self::getTarifClassName($actionFile);
if($PSTarifClassName <> '' && is_callable($PSTarifClassName.'::getStructure'))
$arTarif = call_user_func($PSTarifClassName.'::getStructure', $psId, $persId);
return $arTarif;
}
public static function getPSPrice($arPaySystem, $orderPrice, $deliveryPrice, $buyerLocationId)
{
$result = 0;
$map = CSalePaySystemAction::getOldToNewHandlersMap();
$oldHandler = array_search($arPaySystem["PSA_ACTION_FILE"], $map);
if ($oldHandler !== false)
$arPaySystem["PSA_ACTION_FILE"] = $oldHandler;
$PSTarifClassName = self::getTarifClassName($arPaySystem["PSA_ACTION_FILE"]);
if($PSTarifClassName <> '' && is_callable($PSTarifClassName.'::getPrice'))
$result = call_user_func_array(
$PSTarifClassName.'::getPrice',
array(
&$arPaySystem,
$orderPrice,
$deliveryPrice,
$buyerLocationId
)
);
return $result;
}
public static function checkPSCompability($actionFile, &$arOrder, $orderPrice, $deliveryPrice, $buyerLocationId)
{
$PSTarifClassName = self::getTarifClassName($actionFile);
if($PSTarifClassName <> '' && is_callable($PSTarifClassName.'::checkCompability'))
{
$result = call_user_func_array(
$PSTarifClassName.'::checkCompability',
array(
&$arOrder,
$orderPrice,
$deliveryPrice,
$buyerLocationId
)
);
}
else
{
$result = true;
}
return $result;
}
public static function getPSActionTitle($fileName)
{
$psTitle = "";
if (file_exists($fileName) && is_file($fileName))
include($fileName);
return $psTitle;
}
public static function getPSActionTitle_old($fileName)
{
if (!file_exists($fileName))
return false;
$handle = fopen($fileName, "r");
$contents = fread($handle, filesize($fileName));
fclose($handle);
$rep_title = "";
$arMatches = array();
if (preg_match("#