예제 #1
0
function getList($blockId, $fields, $order, $filers)
{
    $entity_requests_data_class = connectToBlock($blockId);
    $main_query_requests = new Entity\Query($entity_requests_data_class);
    $main_query_requests->setSelect($fields);
    //$main_query_requests->setSelect(array('ID','UF_TITLE'));
    if (!empty($order)) {
        $main_query_requests->setOrder($order);
    }
    if (!empty($filers)) {
        $main_query_requests->setFilter($filers);
        /*$main_query_requests->setFilter(
              array(
                  'UF_NAME'=>'Александр',
              )
          );*/
    }
    $result_requests = $main_query_requests->exec();
    $result_requests = new CDBResult($result_requests);
    $requests = array();
    while ($row_requests = $result_requests->Fetch()) {
        $requests[] = $row_requests;
        //массив выбранных элементов
    }
    return $requests;
}
예제 #2
0
 /**
  * Executes the query
  *
  * @param string $filterField
  * @param mixed $filterFieldValue
  * @param string $method
  *
  * @return \Bitrix\Main\DB\MysqlResult
  */
 private function execute($filterField, $filterFieldValue, $method)
 {
     $queryBuilder = new Entity\Query(Model\VarsGroupTable::getEntity());
     $queryBuilder->setSelect(array('ID', 'NAME', 'CODE'))->setOrder(array('ID' => 'ASC'))->setFilter(array($filterField => $filterFieldValue));
     if ($method == 'findOneBy') {
         $queryBuilder->setLimit(1);
     }
     return $queryBuilder->exec();
 }
예제 #3
0
 function elemGetEx($elemId = false)
 {
     $hlHandler = $this->hlHandler;
     $getList = new Entity\Query($hlHandler);
     $getList->setSelect(array('*'));
     $getList->setOrder(array("ID" => "ASC"));
     if (!empty($elemId)) {
         $getList->setFilter(array("ID" => $elemId));
     }
     $result = $getList->exec();
     $result = new CDBResult($result);
     $arRes = array();
     while ($row = $result->Fetch()) {
         $arRes[] = $row;
     }
     return $arRes;
 }
예제 #4
0
 public static function checkFields(Result $result, $primary, array $data)
 {
     parent::checkFields($result, $primary, $data);
     if (!$result->isSuccess()) {
         return;
     }
     $query = new Entity\Query(static::getEntity());
     $res = $query->setSelect(array('ID', 'STATUS'))->setFilter(array('=TO_ENTITY' => $data['TO_ENTITY'], '=REAL_OBJECT_ID' => $data['REAL_OBJECT_ID']))->setLimit(2)->exec();
     while ($existing = $res->fetch()) {
         if (!isset($primary) || $primary != $existing['ID']) {
             if ($existing['STATUS'] == self::STATUS_IS_DECLINED) {
                 static::delete($existing['ID']);
             } else {
                 $result->addError(new Entity\EntityError(Loc::getMessage("DISK_SHARING_ENTITY_ERROR_NON_UNIQUE")));
             }
         }
     }
 }
예제 #5
0
 public function validate($value, $primary, array $row, Entity\Field $field)
 {
     $entity = $field->getEntity();
     $primaryNames = $entity->getPrimaryArray();
     $query = new Entity\Query($entity);
     $query->setSelect($primaryNames);
     $query->setFilter(array('=' . $field->getName() => $value));
     $query->setLimit(2);
     $result = $query->exec();
     while ($existing = $result->fetch()) {
         // check primary
         foreach ($existing as $k => $v) {
             if (!isset($primary[$k]) || $primary[$k] != $existing[$k]) {
                 return $this->getErrorMessage($value, $field);
             }
         }
     }
     return true;
 }
예제 #6
0
 /**
  * Method searches for a custom filter that, needs updating (notifications of new elements).
  * Custom filters are added to the stack of tasks.
  *
  * @param int $limitFilter
  * @return string
  */
 public static function findUserFilterNotify($limitFilter = 1, $limitFilterUser = 100)
 {
     $iblockElement = new \CIBlockElement();
     $connection = \Bitrix\Main\Application::getConnection();
     $sqlHelper = $connection->getSqlHelper();
     $limitFilter = (int) $limitFilter;
     $limitFilterUser = (int) $limitFilterUser;
     if ($limitFilterUser <= 0 || $limitFilterUser <= 0) {
         return;
     }
     $queryBuilder = new Entity\Query(Model\SubscribeTable::getEntity());
     $filterResult = $queryBuilder->setSelect(array('*'))->setFilter(array('ACTIVE' => 'Y'))->setLimit($limitFilter)->exec();
     while ($filterRow = $filterResult->fetch()) {
         $filter['IBLOCK_ID'] = $filterRow['IBLOCK_ID'];
         if ($filterRow['SECTION_ID'] > 0) {
             $filter['SECTION_ID'] = $filterRow['SECTION_ID'];
         }
         $filter = array_merge($filter, unserialize($filterRow['FILTER']));
         $elementResult = $iblockElement->GetList(false, $filter, array('IBLOCK_ID'))->fetch();
         if ($elementResult['CNT'] <= 0) {
             continue;
         }
         // Choose filters which notification less,
         // than the number of elements with filter
         $sql = "\n                SELECT DISTINCT t1.ID\n                FROM b_citfact_filter_subscribe_user as t1\n                LEFT OUTER JOIN b_citfact_filter_subscribe_notify as t2 ON (\n                    t1.ID = t2.FILTER_USER_ID AND\n                    t1.FILTER_ID = '" . $sqlHelper->forSql($filterRow['ID']) . "'\n                )\n                WHERE (SELECT count(ID) FROM b_citfact_filter_subscribe_notify as t3 WHERE t3.FILTER_USER_ID = t1.ID) < '" . $sqlHelper->forSql($elementResult['CNT']) . "'\n                GROUP BY t1.ID\n                LIMIT 0," . $limitFilterUser . "\n            ";
         // Adding custom filters to stack table
         $notifyList = (array) $connection->query($sql)->fetchAll();
         foreach ($notifyList as $key => $notify) {
             Model\SubscribeStackTable::add(array('FILTER_USER_ID' => $notify['ID'], 'ACTION' => 'UPDATE'));
         }
         // If list for stack table is not empty, then deactivate filter
         if (sizeof($notifyList) > 0) {
             Model\SubscribeTable::update($filterRow['ID'], array('ACTIVE' => 'N'));
         }
     }
     return "Citfact\\FilterSubscribe\\Agent::findUserFilterNotify({$limitFilter})";
 }
예제 #7
0
 public static function GetRegionsIdsByNames($arRegNames, $countryId = false)
 {
     if (self::isLocationProMigrated()) {
         try {
             $types = self::getTypes();
             $query = new Entity\Query(self::SELF_ENTITY_NAME);
             $fieldMap = array('RID' => 'REGION_ID', 'RNAME' => 'NAME.NAME', 'RSHORT_NAME' => 'NAME.SHORT_NAME');
             $selectFields = $fieldMap;
             $filterFields = array(array('LOGIC' => 'OR', 'RNAME' => $arRegNames, 'RSHORT_NAME' => $arRegNames), '=TYPE_ID' => $types['REGION'], '!=REGION_ID' => '0');
             if ($countryId = intval($countryId)) {
                 $filterFields['=COUNTRY_ID'] = $countryId;
             }
             // order
             $orderFields = array('RNAME' => 'asc', 'RSHORT_NAME' => 'asc');
             // group
             $groupFields = array('RID');
             $nameJoinCondition = array('=this.ID' => 'ref.LOCATION_ID');
             if (strlen($strLang)) {
                 $nameJoinCondition['=ref.LANGUAGE_ID'] = array('?', $strLang);
             }
             $query->registerRuntimeField('NAME', array('data_type' => self::NAME_ENTITY_NAME, 'reference' => $nameJoinCondition, 'join_type' => 'left'));
             $query->setSelect($selectFields);
             $query->setFilter($filterFields);
             $query->setOrder($orderFields);
             $query->setGroup($groupFields);
             $result = array();
             $res = $query->exec();
             while ($item = $res->fetch()) {
                 $result[strlen($item['RNAME']) ? $item['RNAME'] : $item['RSHORT_NAME']] = $item['RID'];
             }
             return $result;
         } catch (Exception $e) {
             return array();
         }
     } else {
         global $DB;
         $arResult = array();
         $arWhere = array();
         $arQueryFields = array('RL.NAME', 'RL.SHORT_NAME');
         if (is_array($arRegNames)) {
             foreach ($arRegNames as $regName) {
                 $regName = $DB->ForSql($regName);
                 foreach ($arQueryFields as $field) {
                     $arWhere[] = $field . " LIKE '" . $regName . "'";
                 }
             }
             if (count($arWhere) > 0) {
                 $strWhere = implode(' OR ', $arWhere);
                 $query = "\tSELECT RL.REGION_ID, RL.NAME, RL.SHORT_NAME\n\t\t\t\t\t\t\t\tFROM b_sale_location_region_lang RL ";
                 if ($countryId) {
                     $strWhere = 'L.COUNTRY_ID=\'' . intval($countryId) . '\' AND (' . $strWhere . ')';
                     $query .= "LEFT JOIN b_sale_location L ON L.REGION_ID=RL.REGION_ID ";
                 }
                 $query .= "WHERE " . $strWhere;
                 $query .= " GROUP BY RL.REGION_ID";
                 $query .= " ORDER BY RL.NAME, RL.SHORT_NAME";
                 $dbList = $DB->Query($query);
                 $arRegionsLang = array();
                 while ($arRegion = $dbList->Fetch()) {
                     if (strlen($arRegion["NAME"]) > 0) {
                         $idx = $arRegion["NAME"];
                     } else {
                         $idx = $arRegion["SHORT_NAME"];
                     }
                     $arResult[$idx] = $arRegion["REGION_ID"];
                 }
             }
         }
         return $arResult;
     }
 }
예제 #8
0
 /**
  * <p>Метод возвращает набор местоположений, связанных с группами местоположений, удовлетворяющих фильтру arFilter. Метод динамичный.</p>
  *
  *
  * @param array $arrayarFilter = Array() Фильтр представляет собой ассоциативный массив, в котором
  * ключами являются названия параметров записи, а значениями -
  * условия на значения<br><br> Допустимые ключи: <ul> <li> <b>LOCATION_ID</b> - код
  * местоположения;</li> <li> <b>LOCATION_GROUP_ID</b> - код группы
  * местоположений.</li> </ul>
  *
  * @return CDBResult <p>Возвращается объект класса CDBResult, содержащий ассоциативные
  * массивы с ключами:</p> <table class="tnormal" width="100%"> <tr> <th width="15%">Ключ</th>
  * <th>Описание</th> </tr> <tr> <td>LOCATION_ID</td> <td>Код местоположения.</td> </tr> <tr>
  * <td>LOCATION_GROUP_ID</td> <td>Код группы местоположений.</td> </tr> </table> <a
  * name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // Выберем все местоположения группы 2
  * $db_res = CSaleLocationGroup::GetLocationList(array("LOCATION_GROUP_ID"=&gt;2));
  * while ($ar_res = $db_res-&gt;Fetch())
  * {
  *    echo $ar_res["LOCATION_ID"].", ";
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocationgroup/csalelocationgroup__getlocationlist.56a02620.php
  * @author Bitrix
  */
 public static function GetLocationList($arFilter = array())
 {
     if (CSaleLocation::isLocationProMigrated()) {
         try {
             $query = new Entity\Query(self::CONN_ENTITY_NAME);
             $fieldMap = array('D_SPIKE' => 'D_SPIKE', 'LLOCATION_ID' => 'C.ID', 'LOCATION_GROUP_ID' => 'LOCATION_GROUP_ID');
             $fieldProxy = array('LLOCATION_ID' => 'LOCATION_ID');
             $query->registerRuntimeField('D_SPIKE', array('data_type' => 'integer', 'expression' => array('distinct %s', 'LOCATION_GROUP_ID')));
             $query->registerRuntimeField('L', array('data_type' => self::LOCATION_ENTITY_NAME, 'reference' => array('=this.LOCATION_ID' => 'ref.ID'), 'join_type' => 'inner'));
             $query->registerRuntimeField('C', array('data_type' => self::LOCATION_ENTITY_NAME, 'reference' => array('LOGIC' => 'OR', array('>=ref.LEFT_MARGIN' => 'this.L.LEFT_MARGIN', '<=ref.RIGHT_MARGIN' => 'this.L.RIGHT_MARGIN'), array('=ref.ID' => 'this.L.ID')), 'join_type' => 'inner'));
             // select
             $selectFields = CSaleLocation::processSelectForGetList(array('*'), $fieldMap);
             // filter
             list($filterFields, $filterClean) = CSaleLocation::processFilterForGetList($arFilter, $fieldMap, $fieldProxy);
             $query->setSelect($selectFields);
             $query->setFilter($filterFields);
             $res = $query->exec();
             $res->addReplacedAliases(array('LLOCATION_ID' => 'LOCATION_ID'));
             return $res;
         } catch (Exception $e) {
             return new DB\ArrayResult(array());
         }
     } else {
         global $DB;
         $arSqlSearch = array();
         if (!is_array($arFilter)) {
             $filter_keys = array();
         } else {
             $filter_keys = array_keys($arFilter);
         }
         $countFieldKey = count($filter_keys);
         for ($i = 0; $i < $countFieldKey; $i++) {
             $val = $DB->ForSql($arFilter[$filter_keys[$i]]);
             if (strlen($val) <= 0) {
                 continue;
             }
             $key = $filter_keys[$i];
             if ($key[0] == "!") {
                 $key = substr($key, 1);
                 $bInvert = true;
             } else {
                 $bInvert = false;
             }
             switch (ToUpper($key)) {
                 case "LOCATION_ID":
                     $arSqlSearch[] = "LOCATION_ID " . ($bInvert ? "<>" : "=") . " " . IntVal($val) . " ";
                     break;
                 case "LOCATION_GROUP_ID":
                     $arSqlSearch[] = "LOCATION_GROUP_ID " . ($bInvert ? "<>" : "=") . " " . IntVal($val) . " ";
                     break;
             }
         }
         $strSqlSearch = "";
         $countSqlSearch = count($arSqlSearch);
         for ($i = 0; $i < $countSqlSearch; $i++) {
             $strSqlSearch .= " AND ";
             $strSqlSearch .= " (" . $arSqlSearch[$i] . ") ";
         }
         $strSql = "SELECT LOCATION_ID, LOCATION_GROUP_ID " . "FROM b_sale_location2location_group " . "WHERE 1 = 1 " . "\t" . $strSqlSearch . " ";
         $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         return $res;
     }
 }
예제 #9
0
 /**
  * Set values for fields type iblock_section.
  */
 protected function setSectionValue()
 {
     $iblockList = $this->getListByType('iblock_section');
     $queryBuilder = new Entity\Query(Iblock\SectionTable::getEntity());
     $queryBuilder->setSelect(array('ID', 'NAME', 'IBLOCK_ID', 'IBLOCK_SECTION_ID', 'XML_ID'))->setFilter(array('IBLOCK_ID' => $iblockList))->setOrder(array());
     $sectionResult = $queryBuilder->exec();
     while ($section = $sectionResult->fetch()) {
         foreach ($this->highLoadBlockFields as &$field) {
             if ($field['USER_TYPE_ID'] != 'iblock_section') {
                 continue;
             }
             if ($field['SETTINGS']['IBLOCK_ID'] == $section['IBLOCK_ID']) {
                 $field['VALUE_LIST'][] = $section;
             }
         }
     }
 }
예제 #10
0
    $arResult['FILTER'] = $filterLexer->getFilter();
    $arResult['FILTER_PROPERTY'] = $filterLexer->getProperty();
    $arResult['FILTER_PRICE_TYPE'] = $filterLexer->getPriceType();
    $arResult['FILTER_VALUE'] = $filterLexer->getValue();
}
if (array_key_exists('SECTION_ID', $arResult)) {
    $queryBuilder = new Entity\Query(IBlock\SectionTable::getEntity());
    $queryBuilder->setSelect(array('*'))->setFilter(array('ID' => $arResult['SECTION_ID']));
    $sectionResult = $queryBuilder->exec();
    while ($section = $sectionResult->fetch()) {
        $arResult['SECTIONS'][$section['ID']] = $section;
    }
}
if (array_key_exists('IBLOCKS_ID', $arResult)) {
    $queryBuilder = new Entity\Query(IBlock\IblockTable::getEntity());
    $queryBuilder->setSelect(array('*'))->setFilter(array('ID' => $arResult['IBLOCKS_ID']));
    $iblockResult = $queryBuilder->exec();
    while ($iblock = $iblockResult->fetch()) {
        $arResult['IBLOCKS'][$iblock['ID']] = $iblock;
    }
}
if ($request->isPost() && $arResult['COMPONENT_ID'] == $request->getPost('COMPONENT_ID')) {
    $subscribeManager = new \Citfact\FilterSubscribe\SubscribeManager();
    $response = array();
    if ('DELETE' == $request->getPost('ACTION')) {
        $filterUserId = (int) $request->getPost('ID');
        try {
            $removeResult = $subscribeManager->removeFilterUser($filterUserId);
            $response['success'] = $removeResult->isSuccess();
            $response['errors'] = $removeResult->getErrorMessages();
        } catch (\Exception $e) {
예제 #11
0
if (!Loader::includeModule('citfact.uservars')) {
    $applicationOld->authForm(Loc::getMessage('ACCESS_DENIED'));
}
$request = $application->getContext()->getRequest();
$includePath = array('prolog' => '/bitrix/modules/main/include/prolog_admin_after.php', 'prolog_js' => '/bitrix/modules/main/include/prolog_admin_js.php', 'epilog' => '/bitrix/modules/main/include/epilog_admin.php', 'epilog_js' => '/bitrix/modules/main/include/epilog_admin_js.php');
$contextMenu[] = array('TEXT' => Loc::getMessage('USER_VARS_ADD_GROUP'), 'TITLE' => Loc::getMessage('USER_VARS_ADD_GROUP'), 'LINK' => 'user_vars_group_edit.php?lang=' . LANGUAGE_ID, 'ICON' => 'btn_new');
$headers = array(array('id' => 'ID', 'content' => 'ID', 'sort' => 'ID', 'default' => true), array('id' => 'NAME', 'content' => Loc::getMessage('USER_VARS_TABLE_NAME'), 'sort' => 'NAME', 'default' => true), array('id' => 'CODE', 'content' => Loc::getMessage('USER_VARS_TABLE_CODE'), 'sort' => 'CODE', 'default' => true));
$tableId = 'tbl_user_vars';
$adminSort = new CAdminSorting($tableId, 'NAME', 'asc');
$adminList = new CAdminList($tableId, $adminSort);
$adminList->addHeaders($headers);
if ($request->getQuery('mode') != 'list') {
    $context = new CAdminContextMenu($contextMenu);
}
$queryBuilder = new Entity\Query(Model\VarsGroupTable::getEntity());
$queryBuilder->setSelect(array('ID', 'NAME', 'CODE'));
$sortBy = $request->getQuery('by') ? strtoupper($request->getQuery('by')) : 'ID';
$sortOrder = $request->getQuery('order') ?: 'asc';
$queryBuilder->setOrder(array($sortBy => $sortOrder));
$resultData = new CAdminResult($queryBuilder->exec(), $tableId);
$resultData->navStart();
$adminList->navText($resultData->getNavPrint(Loc::getMessage('PAGES')));
while ($item = $resultData->fetch()) {
    $row = $adminList->addRow($item['ID'], $item);
    $actions = array();
    $actions[] = array('ICON' => 'list', 'TEXT' => Loc::getMessage('USER_VARS_ACTION_LIST'), 'ACTION' => $adminList->actionRedirect('user_vars_list.php?lang=' . LANGUAGE_ID . '&GROUP_ID=' . $item['ID']));
    $actions[] = array('ICON' => 'edit', 'TEXT' => Loc::GetMessage('USER_VARS_ACTION_EDIT_GROUP'), 'ACTION' => $adminList->actionRedirect('user_vars_group_edit.php?ID=' . $item['ID']));
    $actions[] = array('ICON' => 'delete', 'TEXT' => Loc::getMessage('USER_VARS_ACTION_DELETE_GROUP'), 'ACTION' => "if(confirm('" . Loc::getMessage('USER_VARS_DELETE_GROUP_CONFIRM') . "')) " . $adminList->actionRedirect('user_vars_group_edit.php?action=delete&ID=' . $item['ID'] . '&' . bitrix_sessid_get()));
    $row->addActions($actions);
}
$prologType = $request->getQuery('mode') == 'list' ? 'prolog_js' : 'prolog';
예제 #12
0
 /**
  * This method is for internal use only. It may be changed without any notification further, or even mystically disappear.
  * 
  * @access private
  */
 public static function getSubtreeRangeSqlForNode($primary, $node = array())
 {
     $primary = Assert::expectIntegerPositive($primary, '$primary');
     if (empty($node)) {
         $node = self::getNodeInfo($primary);
         if (!intval($node['ID'])) {
             throw new Main\SystemException('Node being checked not found');
         }
     }
     if (isset($node['LEFT_MARGIN']) && isset($node['RIGHT_MARGIN'])) {
         $query = new Main\Entity\Query(static::getEntity());
         $query->setSelect(array('ID'));
         $query->setFilter(array('>LEFT_MARGIN' => $node['LEFT_MARGIN'], '<RIGHT_MARGIN' => $node['RIGHT_MARGIN']));
         return $query->getQuery();
     } else {
         throw new Main\SystemException('Node not found or incorrect node info passed');
     }
 }
예제 #13
0
    LocalRedirect(sprintf('user_vars.php?lang=%s', LANGUAGE_ID));
}
$includePath = array('prolog' => '/bitrix/modules/main/include/prolog_admin_after.php', 'prolog_js' => '/bitrix/modules/main/include/prolog_admin_js.php', 'epilog' => '/bitrix/modules/main/include/epilog_admin.php', 'epilog_js' => '/bitrix/modules/main/include/epilog_admin_js.php');
$contextMenu[] = array('TEXT' => Loc::getMessage('USER_VARS_ADD'), 'TITLE' => Loc::getMessage('USER_VARS_ADD'), 'LINK' => 'user_vars_edit.php?GROUP_ID=' . $dataGroup['ID'] . '&lang=' . LANGUAGE_ID, 'ICON' => 'btn_new');
$contextMenu[] = array('TEXT' => Loc::getMessage('USER_VARS_EDIT_GROUP'), 'TITLE' => Loc::getMessage('USER_VARS_EDIT_GROUP'), 'LINK' => 'user_vars_group_edit.php?ID=' . $dataGroup['ID'] . '&lang=' . LANGUAGE_ID, 'ICON' => 'btn_edit');
$varsMap = Model\VarsTable::getMap();
$headers = array(array('id' => 'ID', 'content' => 'ID', 'sort' => 'ID', 'default' => true), array('id' => 'NAME', 'content' => $varsMap['NAME']['title'], 'sort' => 'NAME', 'default' => true), array('id' => 'CODE', 'content' => $varsMap['CODE']['title'], 'sort' => 'CODE', 'default' => true), array('id' => 'VALUE', 'content' => $varsMap['VALUE']['title'], 'sort' => 'VALUE', 'default' => true), array('id' => 'DESCRIPTION', 'content' => $varsMap['DESCRIPTION']['title'], 'sort' => 'DESCRIPTION', 'default' => true));
$tableId = 'tbl_user_vars_list';
$adminSort = new CAdminSorting($tableId, 'NAME', 'asc');
$adminList = new CAdminList($tableId, $adminSort);
$adminList->addHeaders($headers);
if ($request->getQuery('mode') != 'list') {
    $context = new CAdminContextMenu($contextMenu);
}
$queryBuilder = new Entity\Query(Model\VarsTable::getEntity());
$queryBuilder->setSelect(array('ID', 'NAME', 'CODE', 'DESCRIPTION', 'VALUE'))->setFilter(array('GROUP_ID' => $dataGroup['ID']));
$sortBy = $request->getQuery('by') ? strtoupper($request->getQuery('by')) : 'ID';
$sortOrder = $request->getQuery('order') ?: 'asc';
$queryBuilder->setOrder(array($sortBy => $sortOrder));
$resultData = new CAdminResult($queryBuilder->exec(), $tableId);
$resultData->navStart();
$adminList->navText($resultData->getNavPrint(Loc::getMessage('PAGES')));
while ($item = $resultData->fetch()) {
    $row = $adminList->addRow($item['ID'], $item);
    $actions = array();
    $actions[] = array('ICON' => 'edit', 'TEXT' => Loc::GetMessage('USER_VARS_ACTION_EDIT_VAR'), 'ACTION' => $adminList->actionRedirect('user_vars_edit.php?ID=' . $item['ID'] . '&GROUP_ID=' . $dataGroup['ID']));
    $actions[] = array('ICON' => 'delete', 'TEXT' => Loc::getMessage('USER_VARS_ACTION_DELETE_VAR'), 'ACTION' => "if(confirm('" . Loc::getMessage('USER_VARS_DELETE_VAR_CONFIRM') . "')) " . $adminList->actionRedirect('user_vars_edit.php?action=delete&ID=' . $item['ID'] . '&GROUP_ID=' . $dataGroup['ID'] . '&' . bitrix_sessid_get()));
    $row->addActions($actions);
}
$prologType = $request->getQuery('mode') == 'list' ? 'prolog_js' : 'prolog';
require sprintf('%s%s', getenv('DOCUMENT_ROOT'), $includePath[$prologType]);
예제 #14
0
 public static function delete($primary)
 {
     // get old data
     $oldData = static::getByPrimary($primary)->fetch();
     // get file fields
     $file_fields = array();
     $fields = $GLOBALS['USER_FIELD_MANAGER']->getUserFields('HLBLOCK_' . $oldData['ID']);
     foreach ($fields as $name => $field) {
         if ($field['USER_TYPE']['BASE_TYPE'] === 'file') {
             $file_fields[] = $name;
         }
     }
     // delete files
     if (!empty($file_fields)) {
         $oldEntity = static::compileEntity($oldData);
         $query = new Entity\Query($oldEntity);
         // select file ids
         $query->setSelect($file_fields);
         // if they are not empty
         $filter = array('LOGIC' => 'OR');
         foreach ($file_fields as $file_field) {
             $filter['!' . $file_field] = false;
         }
         $query->setFilter($filter);
         // go
         $result = $query->exec();
         while ($row = $result->fetch()) {
             foreach ($file_fields as $file_field) {
                 if (!empty($row[$file_field])) {
                     \CFile::delete($row[$file_field]);
                 }
             }
         }
     }
     foreach ($fields as $name => $field) {
         $GLOBALS['DB']->query("DELETE FROM b_user_field_lang WHERE USER_FIELD_ID = " . $field['ID'], false, "FILE: " . __FILE__ . "<br>LINE: " . __LINE__);
         $GLOBALS['DB']->query("DELETE FROM b_user_field WHERE ID = " . $field['ID'], false, "FILE: " . __FILE__ . "<br>LINE: " . __LINE__);
     }
     // clear uf cache
     global $CACHE_MANAGER;
     if (CACHED_b_user_field !== false) {
         $CACHE_MANAGER->CleanDir("b_user_field");
     }
     // remove row
     $result = parent::delete($primary);
     // remove table in db
     $dbtype = strtolower($GLOBALS['DB']->type);
     $connection = Application::getConnection();
     $sqlHelper = $connection->getSqlHelper();
     if ($dbtype == 'oracle') {
         $GLOBALS['DB']->query('DROP TABLE ' . $sqlHelper->quote($oldData['TABLE_NAME']) . ' CASCADE CONSTRAINTS');
         $GLOBALS['DB']->query('DROP SEQUENCE sq_' . $oldData['TABLE_NAME']);
     } else {
         $GLOBALS['DB']->query('DROP TABLE ' . $sqlHelper->quote($oldData['TABLE_NAME']));
     }
     if (!empty($fields)) {
         $GLOBALS['DB']->query("DROP SEQUENCE SQ_B_UTM_" . 'HLBLOCK_' . $oldData['ID'], true);
         $GLOBALS['DB']->query("DROP TABLE b_uts_" . strtolower('HLBLOCK_' . $oldData['ID']), false, "FILE: " . __FILE__ . "<br>LINE: " . __LINE__);
         $GLOBALS['DB']->query("DROP TABLE b_utm_" . strtolower('HLBLOCK_' . $oldData['ID']), false, "FILE: " . __FILE__ . "<br>LINE: " . __LINE__);
     }
     return $result;
 }
예제 #15
0
<?php

if (!CModule::IncludeModule("highloadblock")) {
    return;
}
use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;
$Set_ID = $_SESSION["WF_IBL_SETTINGS_ID"];
unset($_SESSION["WF_IBL_SETTINGS_ID"]);
//Creating default values
$hldata = HL\HighloadBlockTable::getById($Set_ID)->fetch();
$hlentity = HL\HighloadBlockTable::compileEntity($hldata);
$hlHandler = $hlentity->getDataClass();
$getList = new Entity\Query($hlHandler);
$getList->setSelect(array('*'));
$getList->setOrder(array("ID" => "ASC"));
$getList->setFilter(array("ID" => 1));
$result = $getList->exec();
$result = new CDBResult($result);
if ($row = $result->Fetch()) {
} else {
    $arData = array("UF_THEME" => "default", "UF_SHADOWS" => "default", "UF_BUTTONS" => "coral", "UF_BG" => "default");
    $hlHandler::add($arData);
}
$Brand_ID = $_SESSION["WF_IBL_BRANDS_ID"];
unset($_SESSION["WF_IBL_BRANDS_ID"]);
$hldata = HL\HighloadBlockTable::getById($Brand_ID)->fetch();
$hlentity = HL\HighloadBlockTable::compileEntity($hldata);
$hlHandler = $hlentity->getDataClass();
$sort = 100;
$arBrandsUt = array("1 Marka" => "ref_files/7e44ec9828b17ace0d8f75a349b8de43.png", "Apollo" => "ref_files/61441e895fdde98034964c624e295f90.png", "AquaVita" => "ref_files/9d8f6c21dbd87f76b88a8b35e3cd0572.png", "BAS" => "ref_files/7eaea2afe6729ef29a25aeb82aba2513.png", "Cersanit" => "ref_files/9fe61dfbd7454a7ee27e41e0066fd3ba.png", "EAGO" => "ref_files/7d6f158e6fba7b90963c489c218fb8ef.png", "Kolpa-san" => "ref_files/a1906e21f88ebf48c6550117fb77b69f.png", "Loranto" => "ref_files/794eda4bc38c0decfb66455b436919e2.png", "RELISAN" => "ref_files/a3a02d848afdf90036f1def792d5adaf.png", "Roca" => "ref_files/bddd67008a780c90950540be078685a0.png", "Triton" => "ref_files/f75713924bd7964c999de3fbea43c2de.png", "Vayer" => "ref_files/5841ebf40c33bc9858245adfe7336427.png", "IDDIS" => "ref_files/85f24f3d3a9da494f411baa869b9df69.png", "Grohe" => "ref_files/6a2820fa128435a333ca473d06a78895.png", "Hansgrohe" => "ref_files/82499c22bd8a60b4ced944606973a91a.png");
예제 #16
0
 public function getParam($param = '')
 {
     if (is_null($this->params)) {
         $this->params = array();
         $query = new Query($this->hblockEntity);
         $query->setSelect(array('*'));
         $query->setFilter(array('=ID' => $this->id));
         $result = $query->exec();
         $result = new \CDBResult($result);
         $this->params = $result->Fetch();
     }
     if ($param && array_key_exists($param, $this->params)) {
         return $this->params[$param];
     } elseif (!$param) {
         return $this->params;
     }
     throw new \Exception("Param {$param} not found");
 }
예제 #17
0
 /**
  * @param $objectId
  * @param $userId
  * @return array
  * @throws \Bitrix\Main\ArgumentOutOfRangeException
  */
 private function getUserRightsByObject($objectId, $userId)
 {
     /** @var Query $query */
     $query = new Query(RightTable::getEntity());
     $rights = $query->setSelect(array('ACCESS_CODE', 'TASK_ID', 'NEGATIVE', 'NAME' => 'TASK_OPERATION.OPERATION.NAME', 'DEPTH_LEVEL' => 'PATH_PARENT.DEPTH_LEVEL'))->setFilter(array('PATH_PARENT.OBJECT_ID' => $objectId, 'USER_ACCESS.USER_ID' => $userId))->exec()->fetchAll();
     /** @var Query $query */
     $query = new Query(RightTable::getEntity());
     $rights = array_merge($rights, $query->setSelect(array('ACCESS_CODE', 'TASK_ID', 'NEGATIVE', 'NAME' => 'TASK_OPERATION.OPERATION.NAME', 'DEPTH_LEVEL' => 'PATH_PARENT.DEPTH_LEVEL'))->setFilter(array('LOGIC' => 'OR', array('PATH_PARENT.OBJECT_ID' => $objectId, '=ACCESS_CODE' => 'CR', 'OBJECT.CREATED_BY' => $userId), array('PATH_PARENT.OBJECT_ID' => $objectId, '=ACCESS_CODE' => 'AU')))->exec()->fetchAll());
     Collection::sortByColumn($rights, array('DEPTH_LEVEL' => SORT_DESC));
     return $rights;
 }
예제 #18
0
파일: getList.php 프로젝트: dayAlone/MyQube
function getLikesList($element, $user = false, $photos = false)
{
    global $USER;
    $cacheTime = 3600;
    $cacheId = 'likes_' . $element;
    $cachePath = '/likes';
    $obCache = new CPHPCache();
    if ($obCache->InitCache($cacheTime, $cacheId, $cachePath)) {
        $vars = $obCache->GetVars();
        return $vars['data'];
    } else {
        global $CACHE_MANAGER;
        $CACHE_MANAGER->StartTagCache($cachePath);
        $CACHE_MANAGER->RegisterTag($cacheId);
        $requiredModules = array('highloadblock');
        foreach ($requiredModules as $requiredModule) {
            if (!CModule::IncludeModule($requiredModule)) {
                ShowError(GetMessage("F_NO_MODULE"));
                return 0;
            }
        }
        if ($photos) {
            foreach ($photos as $key => &$value) {
                $value = 'photo_' . $value;
            }
        }
        // hlblock info
        $hlblock_id = IB_LIKE;
        if (empty($hlblock_id)) {
            ShowError(GetMessage('HLBLOCK_LIST_NO_ID'));
            return 0;
        }
        $hlblock = HL\HighloadBlockTable::getById($hlblock_id)->fetch();
        if (empty($hlblock)) {
            ShowError('404');
            return 0;
        }
        $entity = HL\HighloadBlockTable::compileEntity($hlblock);
        // uf info
        $fields = $GLOBALS['USER_FIELD_MANAGER']->GetUserFields('HLBLOCK_' . $hlblock['ID'], 0, LANGUAGE_ID);
        // pagination
        $limit = array('nPageSize' => $arParams['ROWS_PER_PAGE'], 'iNumPage' => is_set($_GET['PAGEN_1']) ? $_GET['PAGEN_1'] : 1, 'bShowAll' => true);
        // sort
        $sort_id = 'ID';
        $sort_type = 'DESC';
        // execute query
        $main_query = new Entity\Query($entity);
        $main_query->setSelect(array('*'));
        if ($user) {
            $main_query->setFilter(array('UF_ELEMENT_ID' => $element, 'UF_USER_ID' => $user));
        } else {
            if ($photos) {
                $main_query->setFilter(array('UF_ELEMENT_ID' => $photos));
            } else {
                $main_query->setFilter(array('UF_ELEMENT_ID' => $element));
            }
        }
        $main_query->setOrder(array($sort_id => $sort_type));
        //$main_query->setSelect($select)
        //	->setFilter($filter)
        //	->setGroup($group)
        //	->setOrder($order)
        //	->setOptions($options);
        //$main_query->setLimit($limit['nPageSize']);
        //$main_query->setOffset(($limit['iNumPage']-1) * $limit['nPageSize']);
        $result = $main_query->exec();
        $result = new CDBResult($result);
        // build results
        $rows = array();
        $tableColumns = array();
        $liked = false;
        $userLike = false;
        while ($row = $result->Fetch()) {
            foreach ($row as $k => $v) {
                if ($k === 'UF_USER_ID' && $USER->IsAuthorized() && $v == $USER->GetID()) {
                    $liked = true;
                    $userLike = $row;
                }
                if ($k == 'ID') {
                    $tableColumns['ID'] = true;
                    continue;
                }
                $arUserField = $fields[$k];
                if ($arUserField["SHOW_IN_LIST"] != "Y") {
                    continue;
                }
                $html = call_user_func_array(array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistviewhtml"), array($arUserField, array("NAME" => "FIELDS[" . $row['ID'] . "][" . $arUserField["FIELD_NAME"] . "]", "VALUE" => htmlspecialcharsbx($v))));
                if ($html == '') {
                    $html = '&nbsp;';
                }
                $tableColumns[$k] = true;
                $row[$k] = $html;
            }
            $rows[] = $row;
        }
        $data = array('rows' => $rows, 'fields' => $fields, 'colums' => $tableColumns, 'liked' => $liked, 'userLike' => $userLike);
        $CACHE_MANAGER->EndTagCache();
        if ($obCache->StartDataCache()) {
            $obCache->EndDataCache(array("data" => $data));
        }
        return $data;
    }
}
예제 #19
0
 /**
  * This method is for internal use only. It may be changed without any notification further, or even mystically disappear.
  * 
  * @access private
  */
 public static function getSubtreeRangeSqlForNode($primary, $node = array())
 {
     $primary = Assert::expectIntegerPositive($primary, '$primary');
     if (empty($node)) {
         $node = self::getNodeInfo($primary);
         if (!intval($node['ID'])) {
             throw new Tree\NodeNotFoundException(false, array('INFO' => array('ID' => $primary)));
         }
     }
     static::checkNodeThrowException($node);
     $query = new Main\Entity\Query(static::getEntity());
     $query->setSelect(array('ID'));
     $query->setFilter(array('>LEFT_MARGIN' => $node['LEFT_MARGIN'], '<RIGHT_MARGIN' => $node['RIGHT_MARGIN']));
     return $query->getQuery();
 }
예제 #20
0
<?php

/*
 * This file is part of the Studio Fact package.
 *
 * (c) Kulichkin Denis (onEXHovia) <*****@*****.**>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Entity;
use Bitrix\Main\Loader;
use Citfact\UserVars\Model;
Loc::loadMessages(__FILE__);
Loader::includeModule('citfact.uservars');
$queryBuilder = new Entity\Query(Model\VarsGroupTable::getEntity());
$queryBuilder->setSelect(array('ID', 'NAME', 'CODE'))->setOrder(array('ID' => 'ASC'));
$varsGroupResult = $queryBuilder->exec();
$varsGroupList = array();
while ($group = $varsGroupResult->fetch()) {
    $varsGroupList[] = array('text' => $group['NAME'], 'url' => 'user_vars_list.php?GROUP_ID=' . $group['ID'] . '&lang=' . LANG, 'module_id' => 'user_vars', 'more_url' => array('user_vars_edit.php?GROUP_ID=' . $group['ID'] . '&lang=' . LANG));
}
$menuList[] = array('parent_menu' => Loader::includeModule('citfact.core') ? 'global_menu_citfact' : 'global_menu_services', 'section' => 'user_vars', 'sort' => 200, 'text' => Loc::getMessage('USER_VARS_TITLE'), 'url' => 'user_vars.php?lang=' . LANGUAGE_ID, 'icon' => 'user_vars_menu_icon', 'page_icon' => 'user_vars_page_icon', 'more_url' => array('user_vars_group_edit.php'), 'items_id' => 'uservars_menu', 'items' => $varsGroupList);
return $menuList;
예제 #21
0
 CReport::rewriteUserShortName($grcSelect, $runtime, $arParams['USER_NAME_FORMAT'], $entity, true);
 // add primary of grc entity field
 $grcChain = Entity\QueryChain::getChainByDefinition($entity, $elem['name']);
 $grc_field = $grcChain->getLastElement()->getValue();
 if (is_array($grc_field)) {
     $grc_field = end($grc_field);
 }
 $grc_primary = end($grc_field->getEntity()->getPrimaryArray());
 $grc_marker = substr($elem['name'], 0, strrpos($elem['name'], '.')) . '.' . $grc_primary;
 $grc_marker_alias = Entity\QueryChain::getAliasByDefinition($entity, $grc_marker);
 $grcSelect[$grc_marker_alias] = $grc_marker;
 // select
 $resultName = $viewColumns[$num]['resultName'];
 $grcData[$resultName] = array();
 $grc_query = new Entity\Query($entity);
 $grc_query->setSelect($grcSelect);
 $grc_query->setFilter($grcFilter);
 foreach ($runtime as $k => $v) {
     $grc_query->registerRuntimeField($k, $v);
 }
 $result = $grc_query->exec();
 while ($row = $result->fetch()) {
     if (empty($row[$grc_marker_alias])) {
         continue;
     }
     $grcData[$resultName][] = $row;
 }
 // add empty values to data
 foreach ($data as $k => $v) {
     $data[$k][$alias] = null;
 }
예제 #22
0
파일: index.php 프로젝트: Satariall/izurit
     $arResult["SEL"][] = $arR;
 }
 // VIEWED
 $arResult["VIEWED"] = array();
 if (!Loader::includeModule("catalog")) {
     return;
 }
 $arFilter[">=DATE_VISIT"] = $arFilter[">=DATE_INSERT"];
 unset($arFilter[">=DATE_INSERT"]);
 if (isset($arFilter['LID'])) {
     $arFilter['SITE_ID'] = $arFilter['LID'];
     unset($arFilter['LID']);
 }
 unset($arFilter['PAYED']);
 $viewedQuery = new Query(ViewedProducts::getEntity());
 $viewedQuery->setSelect(array("PRODUCT_ID", "NAME" => "ELEMENT.NAME", "PRICE" => "PRODUCT.PRICE", "CURRENCY" => "PRODUCT.CURRENCY", "RATE" => "PRODUCT.CURRENT_CURRENCY_RATE", "CURRENCY_RATE" => "PRODUCT.CURRENT_CURRENCY_RATE_CNT"))->setfilter($arFilter);
 $viewedIterator = $viewedQuery->exec();
 $viewedProducts = array();
 while ($row = $viewedIterator->fetch()) {
     $row['VIEW_COUNT'] = 1;
     if ((int) $row['CURRENCY_RATE'] > 0) {
         $row['SORT_PRICE'] = $row['PRICE'] * $row['RATE'] / (int) $row['CURRENCY_RATE'];
     } else {
         $row['SORT_PRICE'] = $row['PRICE'] * $row['RATE'];
     }
     if (!isset($viewedProducts[$row['PRODUCT_ID']])) {
         $viewedProducts[$row['PRODUCT_ID']] = $row;
     } else {
         $viewedProducts[$row['PRODUCT_ID']]['VIEW_COUNT']++;
         if ($viewedProducts[$row['PRODUCT_ID']]['SORT_PRICE'] > $row['SORT_PRICE']) {
             $viewedProducts[$row['PRODUCT_ID']]['SORT_PRICE'] = $row['SORT_PRICE'];
예제 #23
0
 /**
  * Set values for property with type G(link to section).
  */
 protected function setSectionValue()
 {
     $iblockList = $this->getListByType('G');
     $queryBuilder = new Entity\Query(Iblock\SectionTable::getEntity());
     $queryBuilder->setSelect(array('ID', 'NAME', 'IBLOCK_ID', 'IBLOCK_SECTION_ID', 'XML_ID'))->setFilter(array('IBLOCK_ID' => $iblockList))->setOrder(array());
     $sectionResult = $queryBuilder->exec();
     while ($section = $sectionResult->fetch()) {
         foreach ($this->iblockProperty as &$field) {
             if ($field['PROPERTY_TYPE'] != 'G') {
                 continue;
             }
             if ($field['LINK_IBLOCK_ID'] == $section['IBLOCK_ID']) {
                 $field['VALUE_LIST'][] = $section;
             }
         }
     }
 }
예제 #24
0
 /**
  * @param mixed $primary
  *
  * @return Main\DB\Result|Entity\DeleteResult
  */
 public static function delete($primary)
 {
     global $USER_FIELD_MANAGER;
     // get old data
     $hlblock = static::getByPrimary($primary)->fetch();
     // get file fields
     $file_fields = array();
     $fields = $USER_FIELD_MANAGER->getUserFields('HLBLOCK_' . $hlblock['ID']);
     foreach ($fields as $name => $field) {
         if ($field['USER_TYPE']['BASE_TYPE'] === 'file') {
             $file_fields[] = $name;
         }
     }
     // delete files
     if (!empty($file_fields)) {
         $oldEntity = static::compileEntity($hlblock);
         $query = new Entity\Query($oldEntity);
         // select file ids
         $query->setSelect($file_fields);
         // if they are not empty
         $filter = array('LOGIC' => 'OR');
         foreach ($file_fields as $file_field) {
             $filter['!' . $file_field] = false;
         }
         $query->setFilter($filter);
         // go
         $result = $query->exec();
         while ($row = $result->fetch()) {
             foreach ($file_fields as $file_field) {
                 if (!empty($row[$file_field])) {
                     if (is_array($row[$file_field])) {
                         foreach ($row[$file_field] as $value) {
                             \CFile::delete($value);
                         }
                     } else {
                         \CFile::delete($row[$file_field]);
                     }
                 }
             }
         }
     }
     $connection = Application::getConnection();
     foreach ($fields as $field) {
         // delete from uf registry
         if ($field['USER_TYPE']['BASE_TYPE'] === 'enum') {
             $enumField = new \CUserFieldEnum();
             $enumField->DeleteFieldEnum($field['ID']);
         }
         $connection->query("DELETE FROM b_user_field_lang WHERE USER_FIELD_ID = " . $field['ID']);
         $connection->query("DELETE FROM b_user_field WHERE ID = " . $field['ID']);
         // if multiple - drop utm table
         if ($field['MULTIPLE'] == 'Y') {
             $utmTableName = static::getMultipleValueTableName($hlblock, $field);
             $connection->dropTable($utmTableName);
         }
     }
     // clear uf cache
     global $CACHE_MANAGER;
     if (CACHED_b_user_field !== false) {
         $CACHE_MANAGER->cleanDir("b_user_field");
     }
     // remove row
     $result = parent::delete($primary);
     // drop hl table
     $connection->dropTable($hlblock['TABLE_NAME']);
     return $result;
 }
예제 #25
0
 public static function getUsersTop($userId, $departmentId, Type\DateTime $dateFrom, Type\DateTime $dateTo, $interval, $section = null, $nonInvolvedOnly = false, $from = 0, $limit = 100)
 {
     if (!in_array($interval, array('hour', 'day', 'month'), true)) {
         throw new Main\ArgumentException('Interval should be the "hour", or "day", or "month".');
     }
     $data = array();
     // rating for TOTAL activity or for an instrument
     $sumField = $section === null ? 'TOTAL' : $section;
     if ($interval === 'hour') {
         $query = new Entity\Query(UserHourTable::getEntity());
         $query->setSelect(array('USER_ID', new Entity\ExpressionField('SUM_' . $sumField, 'SUM(%s)', $sumField)));
         $query->setFilter(array('><HOUR' => array(ConvertTimeStamp($dateFrom->getTimestamp(), 'FULL'), ConvertTimeStamp($dateTo->getTimestamp(), 'FULL'))));
     } else {
         $query = new Entity\Query(UserDayTable::getEntity());
         $query->setSelect(array('USER_ID', new Entity\ExpressionField('SUM_' . $sumField, 'SUM(%s)', $sumField)));
         $query->setFilter(array('><DAY' => array(ConvertTimeStamp($dateFrom->getTimestamp()), ConvertTimeStamp($dateTo->getTimestamp()))));
     }
     if ($sumField == 'TOTAL') {
         // count number of used services
         $names = UserHourTable::getSectionNames();
         $fieldExpressions = array_fill(0, count($names), 'CASE WHEN SUM(%s) > 0 THEN 1 ELSE 0 END');
         $serviceCountExpression = join(' + ', $fieldExpressions);
         $query->addSelect(new Entity\ExpressionField('SERVICES_COUNT', $serviceCountExpression, $names));
         if ($nonInvolvedOnly) {
             // who didn't use 4 or more instruments
             $query->addFilter('<SERVICES_COUNT', static::INVOLVEMENT_SERVICE_COUNT);
         }
     } else {
         if ($nonInvolvedOnly) {
             // who didn't use instrument
             $query->addFilter('=SUM_' . $sumField, 0);
         } else {
             // who used it
             $query->addFilter('>SUM_' . $sumField, 0);
         }
     }
     $query->addOrder('SUM_' . $sumField, 'DESC');
     if (!$nonInvolvedOnly) {
         // we don't need this for non-involved users
         $query->registerRuntimeField('MYSELF', array('data_type' => 'integer', 'expression' => array('CASE WHEN %s = ' . (int) $userId . ' THEN 1 ELSE 0 END', 'USER_ID')));
         $query->addOrder('MYSELF', 'DESC');
     }
     $query->setOffset($from);
     $query->setLimit($limit);
     $result = $query->exec();
     while ($row = $result->fetch()) {
         $_data = array('USER_ID' => $row['USER_ID'], 'ACTIVITY' => $row['SUM_' . $sumField]);
         if ($sumField == 'TOTAL') {
             $_data['SERVICES_COUNT'] = $row['SERVICES_COUNT'];
             $_data['IS_INVOLVED'] = $row['SERVICES_COUNT'] >= static::INVOLVEMENT_SERVICE_COUNT;
         } else {
             $_data['SERVICES_COUNT'] = null;
             $_data['IS_INVOLVED'] = $row['SUM_' . $sumField] > 0;
         }
         $data[] = $_data;
     }
     return $data;
 }
 /**
  * Remove filter user and relationships
  *
  * @param int $id
  * @return \Bitrix\Main\Entity\DeleteResult
  * @throws \InvalidArgumentException
  */
 public function removeFilterUser($id)
 {
     $filterUser = Model\SubscribeUserTable::getById($id)->fetch();
     if ($this->isEmptyResult($filterUser)) {
         throw new \InvalidArgumentException('Invalid filter user id');
     }
     $queryBuilder = new Entity\Query(Model\SubscribeStackTable::getEntity());
     $subscribeStack = $queryBuilder->setSelect(array('ID'))->setFilter(array('FILTER_USER_ID' => $filterUser['ID']))->exec();
     while ($row = $subscribeStack->fetch()) {
         Model\SubscribeStackTable::delete(array('ID' => $row['ID']));
     }
     $result = Model\SubscribeUserTable::delete(array('ID' => $filterUser['ID']));
     $queryBuilder = new Entity\Query(Model\SubscribeUserTable::getEntity());
     $filterUserResult = $queryBuilder->registerRuntimeField('cnt', array('data_type' => 'integer', 'expression' => array('count(%s)', 'ID')))->setSelect(array('ID', 'cnt'))->setFilter(array('FILTER_ID' => $filterUser['FILTER_ID']))->exec()->fetch();
     if ($filterUserResult['cnt'] <= 0) {
         Model\SubscribeTable::delete(array('ID' => $filterUser['FILTER_ID']));
     }
     return $result;
 }
예제 #27
0
}
use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;
global $USER_FIELD_MANAGER;
// hlblock info
$hlblock_id = $arParams['BLOCK_ID'];
if (empty($hlblock_id)) {
    ShowError(GetMessage('HLBLOCK_VIEW_NO_ID'));
    return 0;
}
$hlblock = HL\HighloadBlockTable::getById($hlblock_id)->fetch();
if (empty($hlblock)) {
    ShowError('404');
    return 0;
}
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
// row data
$main_query = new Entity\Query($entity);
$main_query->setSelect(array('*'));
$main_query->setFilter(array('=ID' => $arParams['ROW_ID']));
$result = $main_query->exec();
$result = new CDBResult($result);
$row = $result->Fetch();
$fields = $USER_FIELD_MANAGER->getUserFieldsWithReadyData('HLBLOCK_' . $hlblock['ID'], $row, LANGUAGE_ID);
if (empty($row)) {
    ShowError(sprintf(GetMessage('HLBLOCK_VIEW_NO_ROW'), $arParams['ROW_ID']));
    return 0;
}
$arResult['fields'] = $fields;
$arResult['row'] = $row;
$this->IncludeComponentTemplate();
예제 #28
0
 public static function normalizeLocationList($denormalizedList = array())
 {
     if (empty($denormalizedList)) {
         return array();
     }
     $useCodes = static::getUseCodes();
     $denormalizedList = array_flip($denormalizedList);
     $query = new Entity\Query('Bitrix\\Sale\\Location\\Location');
     $query->setSelect(array('PARENT_ID', 'ID', 'CODE', 'LNAME' => 'NAME.NAME'));
     $query->setFilter(array('NAME.LANGUAGE_ID' => LANGUAGE_ID));
     // tmp
     $query->setOrder(array('LEFT_MARGIN' => 'desc'));
     // important
     $res = $query->exec();
     // make table of children count for each node
     $relations = array();
     $selected = array();
     while ($item = $res->fetch()) {
         if (!isset($relations[$item['ID']]['name'])) {
             // tmp
             $relations[$item['ID']]['name'] = $item['LNAME'];
         }
         if (!isset($relations[$item['ID']]['total'])) {
             $relations[$item['ID']]['total'] = 0;
         }
         if (!isset($relations[$item['ID']]['selected'])) {
             $relations[$item['ID']]['selected'] = 0;
         }
         ///
         if ($item['PARENT_ID'] != 0) {
             if (!isset($relations[$item['PARENT_ID']]['total'])) {
                 $relations[$item['PARENT_ID']]['total'] = 0;
             }
             if (!isset($relations[$item['PARENT_ID']]['selected'])) {
                 $relations[$item['PARENT_ID']]['selected'] = 0;
             }
         }
         $relations[$item['PARENT_ID']]['total'] += 1 + $relations[$item['ID']]['total'];
         if (isset($denormalizedList[$item['ID']])) {
             $relations[$item['PARENT_ID']]['selected'] += 1 + $relations[$item['ID']]['selected'];
             $selected[$item['ID']] = $item;
         }
     }
     // now make up list of nodes which we`ll remove
     $removeItems = array();
     $removeChildrenOf = array();
     foreach ($relations as $id => $rel) {
         if ($rel['total'] > 0) {
             if ($rel['total'] == $rel['selected']) {
                 if (isset($selected[$id])) {
                     // item should be selected itself to remove its children
                     $removeChildrenOf[$id] = true;
                 }
             } elseif ($rel['selected'] > 0) {
                 // selected M of N of children, where M > 0, so remove item itself
                 $removeItems[$id] = true;
             }
         }
     }
     $normalized = array();
     foreach ($selected as $id => $item) {
         if (!($item['PARENT_ID'] && $removeChildrenOf[$item['PARENT_ID']]) && !$removeItems[$item['ID']]) {
             $normalized[] = $item[$useCodes ? 'CODE' : 'ID'];
         }
     }
     return $normalized;
 }
예제 #29
0
 public static function getCount()
 {
     $query = new Query(static::getEntity());
     $query->setSelect(array('CNT' => array('expression' => array('COUNT(*)'), 'data_type' => 'integer')));
     $result = $query->exec()->fetch();
     return $result['CNT'];
 }
 /**
  * Gets the value of enum
  *
  * @param array $id
  * @return array
  */
 protected function getValueEnum($id)
 {
     if (sizeof($id) <= 0) {
         return array();
     }
     $result = array();
     $queryBuilder = new Entity\Query(Iblock\PropertyEnumerationTable::getEntity());
     $queryBuilder->setSelect(array('*'))->setFilter(array('ID' => $id));
     $enumListResult = $queryBuilder->exec();
     while ($enum = $enumListResult->fetch()) {
         $result[$enum['ID']] = $enum;
     }
     return $result;
 }