Exemplo n.º 1
0
 /**
  *
  */
 public static function checkConnectors()
 {
     $connectorList = \Bitrix\Sender\ConnectorManager::getConnectorList();
     /** @var \Bitrix\Sender\Connector $connector */
     foreach ($connectorList as $connector) {
         if ($connector->requireConfigure()) {
             continue;
         }
         static::addFromConnector($connector);
     }
 }
Exemplo n.º 2
0
 /**
  * @param $postingId
  * @param bool $checkDuplicate
  * @return bool
  * @throws \Bitrix\Main\ArgumentException
  */
 public static function initGroupRecipients($postingId, $checkDuplicate = false)
 {
     $arPosting = \Bitrix\Sender\PostingTable::getRowById(array('ID' => $postingId));
     if (!$arPosting) {
         return false;
     }
     $checkRecipientDuplicate = $checkDuplicate;
     if (!$checkDuplicate) {
         if ($arPosting['STATUS'] == \Bitrix\Sender\PostingTable::STATUS_NEW) {
             $primary = array('POSTING_ID' => $postingId);
             \Bitrix\Sender\PostingRecipientTable::delete($primary);
             $checkRecipientDuplicate = false;
         }
     }
     // fetch all unsubscribed emails of current mailing for excluding from recipients
     $arEmailNotSend = array();
     $recipientUnsubDb = \Bitrix\Sender\PostingUnsubTable::getList(array('select' => array('EMAIL' => 'POSTING_RECIPIENT.EMAIL'), 'filter' => array('POSTING.MAILING_ID' => $arPosting['MAILING_ID'])));
     while ($recipientUnsub = $recipientUnsubDb->fetch()) {
         $arEmailNotSend[] = $recipientUnsub['EMAIL'];
     }
     $groupConnectorsDataCount = array();
     $connection = \Bitrix\Main\Application::getConnection();
     $conHelper = $connection->getSqlHelper();
     $statusRecipientNone = \Bitrix\Sender\PostingRecipientTable::SEND_RESULT_NONE;
     // fetch all connectors for getting emails
     $groupDb = \Bitrix\Sender\MailingGroupTable::getList(array('select' => array('INCLUDE', 'CONNECTOR_ENDPOINT' => 'GROUP.GROUP_CONNECTOR.ENDPOINT', 'GROUP_ID'), 'filter' => array('MAILING_ID' => $arPosting['MAILING_ID']), 'order' => array('INCLUDE' => 'DESC', 'GROUP_ID' => 'ASC')));
     while ($group = $groupDb->fetch()) {
         $connector = \Bitrix\Sender\ConnectorManager::getConnector($group['CONNECTOR_ENDPOINT']);
         if (!$connector) {
             continue;
         }
         $connectorDataCount = 0;
         $connector->setFieldValues($group['CONNECTOR_ENDPOINT']['FIELDS']);
         $connectorDataDb = $connector->getData();
         while (true) {
             $emailList = array();
             $connectorDataList = array();
             $maxPart = 200;
             while ($arConnectorData = $connectorDataDb->Fetch()) {
                 // collect connectors counter of addresses
                 $connectorDataCount++;
                 // exclude unsubscribed addresses
                 $arConnectorData['EMAIL'] = trim(strtolower($arConnectorData['EMAIL']));
                 if (strlen($arConnectorData['EMAIL']) <= 0 || in_array($arConnectorData['EMAIL'], $arEmailNotSend)) {
                     continue;
                 }
                 $emailList[] = $arConnectorData['EMAIL'];
                 $connectorDataList[$arConnectorData['EMAIL']] = $arConnectorData;
                 $maxPart--;
                 if ($maxPart == 0) {
                     break;
                 }
             }
             if (empty($emailList)) {
                 break;
             }
             foreach ($emailList as &$email) {
                 $email = $conHelper->forSql($email);
             }
             $emailListString = "'" . implode("', '", $emailList) . "'";
             if ($group['INCLUDE']) {
                 // add address if not exists
                 if ($checkRecipientDuplicate) {
                     $recipientEmailDb = $connection->query("select EMAIL from b_sender_posting_recipient where EMAIL in (" . $emailListString . ") and POSTING_ID=" . intval($postingId));
                     while ($recipientEmail = $recipientEmailDb->fetch()) {
                         unset($connectorDataList[$recipientEmail['EMAIL']]);
                     }
                 }
                 if (!empty($connectorDataList)) {
                     foreach ($connectorDataList as $email => $arConnectorData) {
                         $arRecipient = array('NAME' => "'" . $conHelper->forSql($arConnectorData['NAME']) . "'", 'EMAIL' => "'" . $conHelper->forSql($arConnectorData['EMAIL']) . "'", 'STATUS' => "'" . $statusRecipientNone . "'", 'POSTING_ID' => intval($postingId));
                         if (array_key_exists('USER_ID', $arConnectorData) && intval($arConnectorData['USER_ID']) > 0) {
                             $arRecipient['USER_ID'] = intval($arConnectorData['USER_ID']);
                         }
                         $insertColumnNamesString = implode(", ", array_keys($arRecipient));
                         $insertColumnValuesString = implode(", ", array_values($arRecipient));
                         $connection->query("insert into b_sender_posting_recipient(" . $insertColumnNamesString . ") values(" . $insertColumnValuesString . ")");
                     }
                 }
             } else {
                 // delete address from posting
                 $connection->query("delete from b_sender_posting_recipient where EMAIL in (" . $emailListString . ") and POSTING_ID=" . intval($postingId));
             }
         }
         //\Bitrix\Sender\GroupConnectorTable::update(array('ID' => $group['GROUP_CONNECTOR_ID']), array('ADDRESS_COUNT' => $connectorDataCount));
         // collect groups counter of addresses
         if (array_key_exists($group['GROUP_ID'], $groupConnectorsDataCount)) {
             $groupConnectorsDataCount[$group['GROUP_ID']] += $connectorDataCount;
         } else {
             $groupConnectorsDataCount[$group['GROUP_ID']] = $connectorDataCount;
         }
     }
     // update group counter of addresses
     foreach ($groupConnectorsDataCount as $groupId => $groupDataCount) {
         \Bitrix\Sender\GroupTable::update($groupId, array('ADDRESS_COUNT' => $groupDataCount));
     }
     return true;
 }
Exemplo n.º 3
0
?>
	</td>
</tr>
<?php 
$oFilter->Buttons(array("table_id" => $sTableID, "url" => $APPLICATION->GetCurPage(), "form" => "find_form"));
$oFilter->End();
?>
</form>


<?php 
//******************************
// Import addresses from connectors
//******************************
if ($_REQUEST['action'] == "pull") {
    $connectorClassList = \Bitrix\Sender\ConnectorManager::getConnectorClassList();
    if (!empty($connectorClassList)) {
        $arConnectors = array();
        /** @var \Bitrix\Sender\Connector $connector */
        foreach ($connectorClassList as $connectorClass) {
            if ($connectorClass['MODULE_ID'] != 'sender' && !$connectorClass['REQUIRE_CONFIGURE']) {
                $arConnectors[] = array('CODE' => $connectorClass['CODE'], 'MODULE_ID' => $connectorClass['MODULE_ID']);
            }
        }
        $arMessages = array('CONTACT_ADM_PULL_FROM' => GetMessage('CONTACT_ADM_PULL_FROM'));
        ?>
		<div id="progress_message"></div>
		<script>
			BX.message(<?php 
        echo CUtil::PhpToJSObject($arMessages);
        ?>
Exemplo n.º 4
0
    }
}
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() . '<input type="hidden" name="' . $connector->getFieldName('bx_aux_hidden_field') . '" value="0">');
    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) {
Exemplo n.º 5
0
<?php

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"));
}
$arResult = array('COUNT' => '0');
if (isset($CONNECTOR_SETTING) && is_array($CONNECTOR_SETTING)) {
    $arEndpointList = \Bitrix\Sender\ConnectorManager::getEndpointFromFields($CONNECTOR_SETTING);
    foreach ($arEndpointList as $endpoint) {
        $connector = \Bitrix\Sender\ConnectorManager::getConnector($endpoint);
        if ($connector) {
            $connector->setFieldValues($endpoint['FIELDS']);
            $arResult['COUNT'] = $connector->getDataCount();
            break;
        }
    }
}
echo CUtil::PhpToJSObject($arResult);
exit;
Exemplo n.º 6
0
 public static function getPersonalizeList($id)
 {
     $result = array();
     // fetch all connectors for getting emails
     $groupConnectorDb = \Bitrix\Sender\MailingGroupTable::getList(array('select' => array('CONNECTOR_ENDPOINT' => 'GROUP.GROUP_CONNECTOR.ENDPOINT', 'GROUP_ID'), 'filter' => array('MAILING_ID' => $id, 'INCLUDE' => true), 'order' => array('GROUP_ID' => 'ASC')));
     while ($groupConnector = $groupConnectorDb->fetch()) {
         $connector = null;
         if (is_array($groupConnector['CONNECTOR_ENDPOINT'])) {
             $connector = \Bitrix\Sender\ConnectorManager::getConnector($groupConnector['CONNECTOR_ENDPOINT']);
         }
         if (!$connector) {
             continue;
         }
         $result = array_merge($result, $connector->getPersonalizeList());
     }
     return $result;
 }