GetGroupRight("sale");
if ($saleModulePermissions < "W")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile(__FILE__);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/include.php");
if (isset($_REQUEST["https_check"]) && $_REQUEST["https_check"] == "Y" && check_bitrix_sessid())
{
$ob = new CHTTP();
$ob->http_timeout = 10;
$res = @$ob->Get("https://".$_SERVER["SERVER_NAME"]."/bitrix/tools/sale_ps_result.php");
if (!$res || $ob->status != 200)
{
$res = "error";
$text = GetMessage("SPS_HTTPS_CHECK_ERROR");
}
else
{
$res = "ok";
$text = GetMessage("SPS_HTTPS_CHECK_SUCCESS");
}
header("Content-Type: application/x-javascript; charset=".LANG_CHARSET);
echo CUtil::PhpToJSObject(array("status" => $res, "text" => $text));
die();
}
$lheStyle = '
';
$APPLICATION->AddHeadString($lheStyle, true, true);
$ID = IntVal($ID);
ClearVars();
ClearVars("f_");
$path2SystemPSFiles = "/bitrix/modules/sale/payment/";
$path2UserPSFiles = COption::GetOptionString("sale", "path2user_ps_files", BX_PERSONAL_ROOT."/php_interface/include/sale_payment/");
CheckDirPath($_SERVER["DOCUMENT_ROOT"].$path2UserPSFiles);
if (CModule::IncludeModule("fileman"))
$bFilemanModuleInst = true;
$aTabs = array(
array(
"DIV" => "edit1",
"TAB" => GetMessage("SPSN_TAB_PAYSYS"),
"ICON" => "sale",
"TITLE" => GetMessage("SPSN_TAB_PAYSYS_DESCR"),
),
array(
"DIV" => "edit2",
"TAB" => GetMessage("PPE_PERSON_TYPES"),
"ICON" => "sale",
"TITLE" => GetMessage("PPE_PERSON_TYPES"),
),
array(
"DIV" => "edit3",
"TAB" => GetMessage("SPS_DELIVERY_HANDLERS"),
"ICON" => "sale",
"TITLE" => GetMessage("SPS_DELIVERY_HANDLERS_DESC"),
),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);
$errorMessage = "";
$bInitVars = false;
if ($_SERVER["REQUEST_METHOD"] == "POST"
&& (strlen($save) > 0 || strlen($apply) > 0)
&& $saleModulePermissions == "W"
&& check_bitrix_sessid())
{
$NAME = Trim($NAME);
if (strlen($NAME) <= 0)
$errorMessage .= GetMessage("ERROR_NO_NAME")."
";
$ACTIVE = (($ACTIVE == "Y") ? "Y" : "N");
$SORT = ((IntVal($SORT) > 0) ? IntVal($SORT) : 100);
if (strlen($errorMessage) <= 0)
{
$arFields = array(
"NAME" => $NAME,
"ACTIVE" => $ACTIVE,
"SORT" => $SORT,
"DESCRIPTION" => $DESCRIPTION
);
if(strlen($LID) > 0)
$arFields["LID"] = $LID;
if(strlen($CURRENCY) > 0)
$arFields["CURRENCY"] = $CURRENCY;
if ($ID > 0)
{
if (!CSalePaySystem::Update($ID, $arFields))
{
if ($ex = $APPLICATION->GetException())
$errorMessage .= $ex->GetString().".
";
else
$errorMessage .= GetMessage("ERROR_EDIT_PAY_SYS").".
";
}
}
else
{
$ID = CSalePaySystem::Add($arFields);
if ($ID <= 0)
{
if ($ex = $APPLICATION->GetException())
$errorMessage .= $ex->GetString().".
";
else
$errorMessage .= GetMessage("ERROR_ADD_PAY_SYS").".
";
}
}
}
if (strlen($errorMessage) <= 0)
{
if($ID > 0)
\Bitrix\Sale\Internals\DeliveryPaySystemTable::setLinks(
$ID,
\Bitrix\Sale\Internals\DeliveryPaySystemTable::ENTITY_TYPE_PAYSYSTEM,
isset($_POST["DELIVERY_HANDLERS"]) && is_array($_POST["DELIVERY_HANDLERS"]) ? $_POST["DELIVERY_HANDLERS"] : array()
);
$arPersonTypes = array();
$dbPersonType = CSalePersonType::GetList(
array("SORT" => "ASC", "NAME" => "ASC"),
Array()
);
while ($arPersonType = $dbPersonType->GetNext())
{
$errorMessage1 = "";
$arPersonTypes[] = IntVal($arPersonType["ID"]);
$actionID = 0;
$dbPSAction = CSalePaySystemAction::GetList(
array(),
array("PAY_SYSTEM_ID" => $ID, "PERSON_TYPE_ID" => $arPersonType["ID"])
);
if ($arPSAction = $dbPSAction->Fetch())
{
$actionID = IntVal($arPSAction["ID"]);
}
if (${"PS_EXISTS_".$arPersonType["ID"]} != "Y")
{
if ($actionID > 0)
{
if (!CSalePaySystemAction::Delete($actionID))
{
if ($ex = $APPLICATION->GetException())
$errorMessage1 .= $ex->GetString().".
";
else
$errorMessage1 .= str_replace("#PLAT#", $arPersonType["NAME"], GetMessage("SPS_ERROR_DELETE")).".
";
}
}
}
else
{
${"NAME_".$arPersonType["ID"]} = Trim(${"NAME_".$arPersonType["ID"]});
if (strlen(${"NAME_".$arPersonType["ID"]}) <= 0)
$errorMessage1 .= str_replace("#PLAT#", $arPersonType["NAME"], GetMessage("SPS_EMPTY_NAME")).".
";
${"ACTION_FILE_".$arPersonType["ID"]} = Trim(${"ACTION_FILE_".$arPersonType["ID"]});
if (strlen(${"ACTION_FILE_".$arPersonType["ID"]}) <= 0)
$errorMessage1 .= str_replace("#PLAT#", $arPersonType["NAME"], GetMessage("SPS_EMPTY_SCRIPT")).".
";
if (strlen(${"ACTION_FILE_".$arPersonType["ID"]}) > 0)
{
${"ACTION_FILE_".$arPersonType["ID"]} = str_replace("\\", "/", ${"ACTION_FILE_".$arPersonType["ID"]});
while (substr(${"ACTION_FILE_".$arPersonType["ID"]}, strlen(${"ACTION_FILE_".$arPersonType["ID"]}) - 1, 1) == "/")
${"ACTION_FILE_".$arPersonType["ID"]} = substr(${"ACTION_FILE_".$arPersonType["ID"]}, 0, strlen(${"ACTION_FILE_".$arPersonType["ID"]}) - 1);
$pathToAction = $_SERVER["DOCUMENT_ROOT"].${"ACTION_FILE_".$arPersonType["ID"]};
if (!file_exists($pathToAction))
$errorMessage1 .= str_replace("#PLAT#", $arPersonType["NAME"], GetMessage("SPS_NO_SCRIPT")).".
";
}
if (strlen($errorMessage1) <= 0)
{
$arParams = array();
if (strlen(${"PS_ACTION_FIELDS_LIST_".$arPersonType["ID"]}) > 0)
{
$arActFields = explode(",", ${"PS_ACTION_FIELDS_LIST_".$arPersonType["ID"]});
$arPsActFields = LocalGetPSActionParams($pathToAction.'/.description.php');
$arPSActionParams = CSalePaySystemAction::UnSerializeParams($arPSAction["PARAMS"]);
foreach ($arActFields as $val)
{
$val = Trim($val);
$fieldName = $val."_".$arPersonType["ID"];
if (empty($arPsActFields[$val]))
continue;
$typeTmp = ${"TYPE_".$fieldName};
$valueTmp = ${"VALUE1_".$fieldName};
if (strlen($typeTmp) <= 0)
$valueTmp = ${"VALUE2_".$fieldName};
if ($arPsActFields[$val]['TYPE'] == 'FILE' && $typeTmp != 'FILE')
continue;
if ($typeTmp == 'FILE')
{
$valueTmp = array();
if (array_key_exists("VALUE1_".$fieldName, $_FILES))
{
if ($_FILES["VALUE1_".$fieldName]["error"] == 0)
{
$imageFileError = CFile::CheckImageFile($_FILES["VALUE1_".$fieldName]);
if (is_null($imageFileError))
$valueTmp = $_FILES["VALUE1_".$fieldName];
else
$errorMessage1 .= $imageFileError . ".
";
}
}
if (trim($_POST[$fieldName."_del"]) == 'Y')
{
if (intval($arPSActionParams[$val]['VALUE']) == 0)
continue;
$valueTmp['old_file'] = $arPSActionParams[$val]['VALUE'];
$valueTmp['del'] = trim($_POST[$fieldName."_del"]);
}
if (empty($valueTmp))
{
$typeTmp = $arPSActionParams[$val]['TYPE'];
$valueTmp = $arPSActionParams[$val]['VALUE'];
}
}
$arParams[$val] = array(
"TYPE" => $typeTmp,
"VALUE" => $valueTmp
);
if ($arParams[$val]['TYPE'] == 'FILE' && is_array($arParams[$val]['VALUE']))
{
$arParams[$val]['VALUE']['MODULE_ID'] = 'sale';
CFile::SaveForDB($arParams[$val], 'VALUE', 'sale/paysystem/field');
}
}
}
if(isset($_POST["TARIF_".$arPersonType["ID"]]))
$arTarif = $_POST["TARIF_".$arPersonType["ID"]];
else
$arTarif = array();
//add logotip
$arPicture = array();
if(array_key_exists("LOGOTIP_".$arPersonType["ID"], $_FILES) && $_FILES["LOGOTIP_".$arPersonType["ID"]]["error"] == 0)
$arPicture = $_FILES["LOGOTIP_".$arPersonType["ID"]];
elseif ($actionID <= 0)
{
$logo = "";
if (file_exists($_SERVER["DOCUMENT_ROOT"].${"ACTION_FILE_".$arPersonType["ID"]}."/logo.png"))
$logo = $_SERVER["DOCUMENT_ROOT"].${"ACTION_FILE_".$arPersonType["ID"]}."/logo.png";
elseif (file_exists($_SERVER["DOCUMENT_ROOT"].${"ACTION_FILE_".$arPersonType["ID"]}."/logo.jpg"))
$logo = $_SERVER["DOCUMENT_ROOT"].${"ACTION_FILE_".$arPersonType["ID"]}."/logo.jpg";
elseif (file_exists($_SERVER["DOCUMENT_ROOT"].${"ACTION_FILE_".$arPersonType["ID"]}."/logo.gif"))
$logo = $_SERVER["DOCUMENT_ROOT"].${"ACTION_FILE_".$arPersonType["ID"]}."/logo.gif";
$arPicture = CFile::MakeFileArray($logo);
}
$arPicture["old_file"] = $arPSAction["LOGOTIP"];
$arPicture["del"] = trim($_POST["LOGOTIP_".$arPersonType["ID"]."_del"]);
$arFields = array(
"PAY_SYSTEM_ID" => $ID,
"PERSON_TYPE_ID" => $arPersonType["ID"],
"NAME" => ${"NAME_".$arPersonType["ID"]},
"ACTION_FILE" => ${"ACTION_FILE_".$arPersonType["ID"]},
"NEW_WINDOW" => ( (${"NEW_WINDOW_".$arPersonType["ID"]}=="Y") ? "Y" : "N" ),
"PARAMS" => CSalePaySystemAction::SerializeParams($arParams),
"HAVE_PREPAY" => "N",
"HAVE_RESULT" => "N",
"HAVE_ACTION" => "N",
"HAVE_PAYMENT" => "N",
"HAVE_RESULT_RECEIVE" => "N",
"ENCODING" => trim(${"ENCODING_".$arPersonType["ID"]}),
"LOGOTIP" => $arPicture
);
if(!empty($arTarif) && is_array($arTarif))
$arFields["TARIF"] = CSalePaySystemsHelper::prepareTarifForSaving($arFields["ACTION_FILE"], $arTarif);
$pathToAction = $_SERVER["DOCUMENT_ROOT"].${"ACTION_FILE_".$arPersonType["ID"]};
$pathToAction = str_replace("\\", "/", $pathToAction);
while (substr($pathToAction, strlen($pathToAction) - 1, 1) == "/")
$pathToAction = substr($pathToAction, 0, strlen($pathToAction) - 1);
if (file_exists($pathToAction))
{
if (is_dir($pathToAction))
{
if (file_exists($pathToAction."/pre_payment.php"))
$arFields["HAVE_PREPAY"] = "Y";
if (file_exists($pathToAction."/result.php"))
$arFields["HAVE_RESULT"] = "Y";
if (file_exists($pathToAction."/action.php"))
$arFields["HAVE_ACTION"] = "Y";
if (file_exists($pathToAction."/payment.php"))
$arFields["HAVE_PAYMENT"] = "Y";
if (file_exists($pathToAction."/result_rec.php"))
$arFields["HAVE_RESULT_RECEIVE"] = "Y";
}
else
{
$arFields["HAVE_PAYMENT"] = "Y";
}
}
if (strlen($errorMessage1) <= 0)
{
if ($actionID > 0)
{
if (!CSalePaySystemAction::Update($actionID, $arFields))
{
if ($ex = $APPLICATION->GetException())
$errorMessage1 .= $ex->GetString().".
";
else
$errorMessage1 .= str_replace("#PLAT#", $arPersonType["NAME"], GetMessage("SPS_ERROR_UPDATE")).".
";
}
}
else
{
if (!CSalePaySystemAction::Add($arFields))
{
if ($ex = $APPLICATION->GetException())
$errorMessage1 .= $ex->GetString().".
";
else
$errorMessage1 .= str_replace("#PLAT#", $arPersonType["NAME"], GetMessage("SPS_ERROR_ADD")).".
";
}
}
}
}
}
$errorMessage .= $errorMessage1;
}
$dbPSAction = CSalePaySystemAction::GetList(
array(),
array("PAY_SYSTEM_ID" => $ID, "!PERSON_TYPE_ID" => $arPersonTypes)
);
while ($arPSAction = $dbPSAction->Fetch())
{
if (!CSalePaySystemAction::Delete($arPSAction["ID"]))
{
if ($ex = $APPLICATION->GetException())
$errorMessage1 .= $ex->GetString().".
";
else
$errorMessage1 .= str_replace("#PLAT#", $arPersonType["NAME"], GetMessage("SPS_ERROR_DELETE")).".
";
}
}
}
if (strlen($errorMessage) > 0)
$bInitVars = True;
if (strlen($errorMessage) <= 0)
{
if (strlen($apply) > 0)
LocalRedirect("sale_pay_system_edit.php?ID=".$ID."&lang=".LANG."&".$tabControl->ActiveTabParam());
else
LocalRedirect("sale_pay_system.php?lang=".LANG);
}
}
if ($ID > 0)
{
$dbPaySystem = CSalePaySystem::GetList(array("SORT" => "ASC"), array("ID" => $ID));
$dbPaySystem->ExtractFields("str_");
}
if ($bInitVars)
{
$DB->InitTableVarsForEdit("b_sale_pay_system", "", "str_");
}
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
$APPLICATION->SetTitle(($ID > 0) ? GetMessage("SALE_EDIT_RECORD", array("#ID#" => $ID)) : GetMessage("SALE_NEW_RECORD"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
/*********************************************************************/
/******************** BODY *****************************************/
/*********************************************************************/
?>
GetMessage("SPSN_2FLIST"),
"LINK" => "/bitrix/admin/sale_pay_system.php?lang=".LANG.GetFilterParams("filter_"),
"ICON" => "btn_list"
)
);
if ($ID > 0 && $saleModulePermissions >= "W")
{
$aMenu[] = array("SEPARATOR" => "Y");
$aMenu[] = array(
"TEXT" => GetMessage("SPSN_NEW_PAYSYS"),
"LINK" => "/bitrix/admin/sale_pay_system_edit.php?lang=".LANG.GetFilterParams("filter_"),
"ICON" => "btn_new"
);
$aMenu[] = array(
"TEXT" => GetMessage("SPSN_DELETE_PAYSYS"),
"LINK" => "javascript:if(confirm('".GetMessage("SPSN_DELETE_PAYSYS_CONFIRM")."')) window.location='/bitrix/admin/sale_pay_system.php?action=delete&ID[]=".$ID."&lang=".LANG."&".bitrix_sessid_get()."#tb';",
"WARNING" => "Y",
"ICON" => "btn_delete"
);
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
?>
0)
echo CAdminMessage::ShowMessage(Array("DETAILS"=>$errorMessage, "TYPE"=>"ERROR", "MESSAGE"=>GetMessage("SPSN_ERROR"), "HTML"=>true));?>