Esempio n. 1
0
 public static function GetList($arOrder = array("SORT" => "ASC", "NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
 {
     if (array_key_exists("PSA_PERSON_TYPE_ID", $arFilter)) {
         $arFilter['PERSON_TYPE_ID'] = $arFilter['PSA_PERSON_TYPE_ID'];
         unset($arFilter["PSA_PERSON_TYPE_ID"]);
     }
     $salePaySystemFields = array('ID', 'NAME', 'ACTIVE', 'SORT', 'DESCRIPTION');
     $ignoredFields = array('LID', 'CURRENCY', 'PERSON_TYPE_ID');
     if (!$arSelectFields) {
         $select = array('ID', 'NAME', 'ACTIVE', 'SORT', 'DESCRIPTION');
     } else {
         $select = array();
         foreach ($arSelectFields as $key => $field) {
             if (in_array($field, $ignoredFields)) {
                 continue;
             }
             $select[$key] = self::getAlias($field);
         }
     }
     $filter = array();
     foreach ($arFilter as $key => $value) {
         if (in_array($key, $ignoredFields)) {
             continue;
         }
         $filter[self::getAlias($key)] = $value;
     }
     if (isset($arFilter['PERSON_TYPE_ID'])) {
         $select = array_merge($select, array('PSA_ID' => 'ID', 'PSA_NAME', 'ACTION_FILE', 'RESULT_FILE', 'NEW_WINDOW', 'PERSON_TYPE_ID', 'PARAMS', 'TARIF', 'HAVE_PAYMENT', 'HAVE_ACTION', 'HAVE_RESULT', 'HAVE_PREPAY', 'HAVE_RESULT_RECEIVE', 'ENCODING', 'LOGOTIP'));
     }
     if (in_array('PARAMS', $select) && !array_key_exists('PSA_ID', $select)) {
         $select['PSA_ID'] = 'ID';
     }
     if (in_array('PARAMS', $select) && !in_array('PERSON_TYPE_ID', $select)) {
         $select[] = 'PERSON_TYPE_ID';
     }
     $order = array();
     foreach ($arOrder as $key => $value) {
         $order[self::getAlias($key)] = $value;
     }
     $groupBy = array();
     if ($arGroupBy !== false) {
         $arGroupBy = !is_array($arGroupBy) ? array($arGroupBy) : $arGroupBy;
         foreach ($arGroupBy as $key => $value) {
             $groupBy[$key] = self::getAlias($value);
         }
     }
     $dbRes = PaySystemActionTable::getList(array('select' => $select, 'filter' => $filter, 'order' => $order, 'group' => $groupBy));
     $limit = null;
     if (is_array($arNavStartParams) && isset($arNavStartParams['nTopCount'])) {
         if ($arNavStartParams['nTopCount'] > 0) {
             $limit = $arNavStartParams['nTopCount'];
         }
     }
     $result = array();
     while ($data = $dbRes->fetch()) {
         if ($limit !== null && !$limit) {
             break;
         }
         $dbRestriction = \Bitrix\Sale\Internals\ServiceRestrictionTable::getList(array('filter' => array('SERVICE_ID' => $data['ID'], 'SERVICE_TYPE' => \Bitrix\Sale\Services\PaySystem\Restrictions\Manager::SERVICE_TYPE_PAYMENT)));
         while ($restriction = $dbRestriction->fetch()) {
             if (!CSalePaySystemAction::checkRestriction($restriction, $arFilter)) {
                 continue 2;
             }
         }
         if (isset($data['ACTION_FILE'])) {
             $oldHandler = array_search($data['ACTION_FILE'], CSalePaySystemAction::getOldToNewHandlersMap());
             if ($oldHandler !== false) {
                 $data['ACTION_FILE'] = $oldHandler;
             }
         }
         if (array_key_exists('PARAMS', $data)) {
             $params = CSalePaySystemAction::getParamsByConsumer('PAYSYSTEM_' . $data['PSA_ID'], $data['PERSON_TYPE_ID']);
             $params['BX_PAY_SYSTEM_ID'] = array('TYPE' => '', 'VALUE' => $data['PSA_ID']);
             $data['PARAMS'] = serialize($params);
         }
         foreach ($data as $key => $value) {
             if (!in_array($key, $salePaySystemFields)) {
                 $newKey = self::getAliasBack($key);
                 if ($newKey != $key) {
                     $data[$newKey] = $value;
                     unset($data[$key]);
                 }
             }
         }
         $result[] = $data;
         $limit--;
     }
     $dbRes = new \CDBResult();
     $dbRes->InitFromArray($result);
     return $dbRes;
 }
Esempio n. 2
0
                break;
        }
    }
}
$params = array('select' => array('ID', 'NAME', 'SORT', 'DESCRIPTION', 'ACTIVE', 'ACTION_FILE', 'LOGOTIP'), 'filter' => $filter);
if (ToUpper($by) != 'LID' && ToUpper($by) != 'CURRENCY') {
    $params['order'] = array(ToUpper($by) => ToUpper($order));
}
$dbRes = \Bitrix\Sale\Internals\PaySystemActionTable::getList($params);
$result = array();
while ($paySystem = $dbRes->fetch()) {
    if (!empty($filter_person_type) && !in_array("NOT_REF", $filter_person_type)) {
        $filter_person_type['PERSON_TYPE_ID'] = $filter_person_type;
        $dbRestriction = \Bitrix\Sale\Internals\ServiceRestrictionTable::getList(array('filter' => array('SERVICE_ID' => $paySystem['ID'], 'SERVICE_TYPE' => \Bitrix\Sale\Services\PaySystem\Restrictions\Manager::SERVICE_TYPE_PAYMENT, '=CLASS_NAME' => '\\Bitrix\\Sale\\Services\\PaySystem\\Restrictions\\PersonType')));
        while ($restriction = $dbRestriction->fetch()) {
            if (!CSalePaySystemAction::checkRestriction($restriction, $filter_person_type)) {
                continue 2;
            }
        }
    }
    $result[] = $paySystem;
}
$dbRes = new CDBResult();
$dbRes->InitFromArray($result);
$dbRes = new CAdminResult($dbRes, $sTableID);
$dbRes->NavStart();
$lAdmin->NavText($dbRes->GetNavPrint(GetMessage("SALE_PRLIST")));
$lAdmin->AddHeaders(array(array("id" => "SORT", "content" => GetMessage("SALE_SORT"), "sort" => "SORT", "default" => true), array("id" => "NAME", "content" => GetMessage("SALE_NAME"), "sort" => "NAME", "default" => true), array("id" => "DESCRIPTION", "content" => GetMessage("SALE_H_DESCRIPTION"), "default" => true), array("id" => "LOGOTIP", "content" => GetMessage("SALE_LOGOTIP"), "default" => true), array("id" => "ACTIVE", "content" => GetMessage("SALE_ACTIVE"), "sort" => "ACTIVE", "default" => true), array("id" => "PERSON_TYPES", "content" => GetMessage("SALE_H_PERSON_TYPES"), "default" => false), array("id" => "LID", "content" => GetMessage('SALE_LID'), "default" => false), array("id" => "ACTION_FILES", "content" => GetMessage("SALE_H_ACTION_FILES"), "default" => false), array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => true)));
$arVisibleColumns = $lAdmin->GetVisibleHeaderColumns();
while ($arCCard = $dbRes->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arCCard, "sale_pay_system_edit.php?ID=" . $f_ID . "&lang=" . LANG, GetMessage("SALE_EDIT_DESCR"));