define("ADMIN_MODULE_NAME", "sender");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
if(!\Bitrix\Main\Loader::includeModule("sender"))
ShowError(\Bitrix\Main\Localization\Loc::getMessage("MAIN_MODULE_NOT_INSTALLED"));
IncludeModuleLangFile(__FILE__);
$POST_RIGHT = $APPLICATION->GetGroupRight("sender");
if($POST_RIGHT=="D")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$aTabs = array(
array("DIV" => "edit1", "TAB" => GetMessage("sender_group_adm_tab_grp"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("sender_group_adm_tab_grp_title")),
array("DIV" => "edit2", "TAB" => GetMessage("sender_group_adm_tab_param"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("sender_group_adm_tab_param_title")),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);
$ID = intval($ID); // Id of the edited record
$message = null;
$bVarsFromForm = false;
if($REQUEST_METHOD == "POST" && ($save!="" || $apply!="") && $POST_RIGHT=="W" && check_bitrix_sessid())
{
$arError = array();
$NAME = trim($NAME);
$arFields = Array(
"ACTIVE" => ($ACTIVE <> "Y"? "N":"Y"),
"NAME" => $NAME,
"SORT" => $SORT,
"DESCRIPTION" => $DESCRIPTION,
);
$res = false;
if(is_array($CONNECTOR_SETTING) && count($CONNECTOR_SETTING)>0)
{
if($ID > 0)
{
$groupUpdateDb = \Bitrix\Sender\GroupTable::update($ID, $arFields);
if($groupUpdateDb->isSuccess())
{
$res = ($ID > 0);
}
else
{
$arError = $groupUpdateDb->getErrorMessages();
}
}
else
{
$groupAddDb = \Bitrix\Sender\GroupTable::add($arFields);
if($groupAddDb->isSuccess())
{
$ID = $groupAddDb->getId();
$res = ($ID > 0);
}
else
{
$arError = $groupAddDb->getErrorMessages();
}
}
}
else
{
$arError[] = GetMessage('sender_group_conn_not_selected');
}
if($res)
{
if(is_array($CONNECTOR_SETTING))
{
$groupConnectorsDataCount = 0;
\Bitrix\Sender\GroupConnectorTable::delete(array('GROUP_ID' => $ID));
$arEndpointList = \Bitrix\Sender\ConnectorManager::getEndpointFromFields($CONNECTOR_SETTING);
foreach ($arEndpointList as $endpoint)
{
$connector = \Bitrix\Sender\ConnectorManager::getConnector($endpoint);
if ($connector)
{
$connector->setFieldValues($endpoint['FIELDS']);
$connectorDataCount = $connector->getDataCount();
$arGroupConnectorAdd = array(
'GROUP_ID' => $ID,
'NAME' => $connector->getName(),
'ENDPOINT' => $endpoint,
'ADDRESS_COUNT' => $connectorDataCount
);
$groupConnectorAddDb = \Bitrix\Sender\GroupConnectorTable::add($arGroupConnectorAdd);
if($groupConnectorAddDb->isSuccess())
{
$groupConnectorsDataCount += $connectorDataCount;
}
}
}
\Bitrix\Sender\GroupTable::update($ID, array('ADDRESS_COUNT' => $groupConnectorsDataCount));
}
if($apply!="")
LocalRedirect("/bitrix/admin/sender_group_edit.php?ID=".$ID."&lang=".LANG."&".$tabControl->ActiveTabParam());
else
LocalRedirect("/bitrix/admin/sender_group_admin.php?lang=".LANG);
}
else
{
if(!empty($arError))
$message = new CAdminMessage(implode("
", $arError));
$bVarsFromForm = true;
}
}
//Edit/Add part
ClearVars();
$str_SORT = 100;
$str_ACTIVE = "Y";
$str_VISIBLE = "Y";
if($ID>0)
{
$rubric = new CDBResult(\Bitrix\Sender\GroupTable::getById($ID));
if(!$rubric->ExtractFields("str_"))
$ID=0;
}
$endpointList = array();
if($ID>0)
{
$groupConnectorDb = \Bitrix\Sender\GroupConnectorTable::getList(array('filter'=>array('GROUP_ID'=>$ID)));
while($groupConnector = $groupConnectorDb->fetch())
{
if(!empty($groupConnector['ENDPOINT']))
$endpointList[] = $groupConnector['ENDPOINT'];
}
}
if($bVarsFromForm)
$DB->InitTableVarsForEdit("b_sender_group", "", "str_");
if(isset($CONNECTOR_SETTING))
$arConnectorSettings = $CONNECTOR_SETTING;
else
$arConnectorSettings = array();
if(count($endpointList)>0)
{
$arConnectorSettings = \Bitrix\Sender\ConnectorManager::getFieldsFromEndpoint($endpointList);
}
$arAvailableConnectors = array();
$arExistedConnectors = array();
$arConnector = \Bitrix\Sender\ConnectorManager::getConnectorList();
/** @var \Bitrix\Sender\Connector $connector */
foreach($arConnector as $connector)
{
if(array_key_exists($connector->getModuleId(), $arConnectorSettings))
$arFieldsValues = $arConnectorSettings[$connector->getModuleId()][$connector->getCode()];
else
$arFieldsValues = array();
$connector->setFieldPrefix('CONNECTOR_SETTING');
$connectorIdCount = 0;
$arAvailableConnectors[$connector->getId()] = array(
'ID' => $connector->getId(),
'NAME' => $connector->getName(),
'FORM' => $connector->getForm().''
);
if( array_key_exists($connector->getModuleId(), $arConnectorSettings) )
{
if( array_key_exists($connector->getCode(), $arConnectorSettings[$connector->getModuleId()]) )
{
$connectorIdCount = 0;
$arFieldsValuesConnector = $arConnectorSettings[$connector->getModuleId()][$connector->getCode()];
foreach($arFieldsValuesConnector as $fieldValues)
{
$connector->setFieldFormName('post_form');
$connector->setFieldValues($fieldValues);
$arExistedConnectors[] = array(
'ID' => $connector->getId(),
'NAME' => $connector->getName(),
'FORM' => str_replace('%CONNECTOR_NUM%', $connectorIdCount, $connector->getForm().''),
'COUNT' => $connector->getDataCount()
);
$connectorIdCount++;
}
}
}
}
\CJSCore::Init(array("sender_admin"));
$APPLICATION->SetTitle(($ID>0? GetMessage("sender_group_title_edit").$ID : GetMessage("sender_group_title_add")));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$aMenu = array(
array(
"TEXT"=>GetMessage("sender_group_list"),
"TITLE"=>GetMessage("sender_group_list_title"),
"LINK"=>"sender_group_admin.php?lang=".LANG,
"ICON"=>"btn_list",
)
);
if($ID>0)
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"TEXT"=>GetMessage("sender_group_add"),
"TITLE"=>GetMessage("sender_group_add_title"),
"LINK"=>"sender_group_edit.php?lang=".LANG,
"ICON"=>"btn_new",
);
$aMenu[] = array(
"TEXT"=>GetMessage("sender_group_del"),
"TITLE"=>GetMessage("sender_group_del_title"),
"LINK"=>"javascript:if(confirm('".GetMessage("sender_group_del_confirm")."'))window.location='sender_group_admin.php?ID=".$ID."&action=delete&lang=".LANG."&".bitrix_sessid_get()."';",
"ICON"=>"btn_delete",
);
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
?>
if($_REQUEST["mess"] == "ok" && $ID>0)
CAdminMessage::ShowMessage(array("MESSAGE"=>GetMessage("rub_saved"), "TYPE"=>"OK"));
if($message)
echo $message->Show();
elseif($rubric->LAST_ERROR!="")
CAdminMessage::ShowMessage($rubric->LAST_ERROR);
?>