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; }
public function validate($value, $primary, array $row, Entity\Field $field) { $query = new Entity\Query($this->reference->getEntity()); $query->setFilter(array('=' . $this->reference->getName() => $value) + $this->filter); $query->setLimit(1); $result = $query->exec(); if ($result->fetch()) { return true; } return new Entity\FieldError($field, $this->getErrorMessage($value, $field), self::NOT_EXISTS); }
protected function processActionShowObjectInGrid() { if (!$this->checkRequiredGetParams(array('objectId'))) { $this->sendJsonErrorResponse(); } /** @var Folder|File $object */ $object = BaseObject::loadById((int) $this->request->getQuery('objectId'), array('STORAGE')); if (!$object) { $this->errorCollection->addOne(new Error('Could not find file or folder', self::ERROR_COULD_NOT_FIND_FILE)); $this->sendJsonErrorResponse(); } $storage = $object->getStorage(); $securityContext = $storage->getCurrentUserSecurityContext(); if (!$object->canRead($securityContext)) { $this->errorCollection->addOne(new Error('Could not find file or folder', self::ERROR_COULD_NOT_READ_FILE)); $this->sendJsonErrorResponse(); } $gridOptions = new Internals\Grid\FolderListOptions($storage); $pageSize = $gridOptions->getPageSize(); $parameters = array('select' => array('ID'), 'filter' => array('PARENT_ID' => $object->getParentId(), 'DELETED_TYPE' => ObjectTable::DELETED_TYPE_NONE), 'order' => $gridOptions->getOrderForOrm(), 'limit' => $pageSize); $countQuery = new Query(ObjectTable::getEntity()); $countQuery->addSelect(new ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($parameters['filter']); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); $totalCount = $totalCount['CNT']; $pageCount = ceil($totalCount / $pageSize); $driver = Driver::getInstance(); $finalPage = null; for ($pageNumber = 1; $pageNumber <= $pageCount; $pageNumber++) { $fullParameters = $driver->getRightsManager()->addRightsCheck($securityContext, $parameters, array('ID', 'CREATED_BY')); $fullParameters['offset'] = $pageSize * ($pageNumber - 1); $query = ObjectTable::getList($fullParameters); while ($row = $query->fetch()) { if ($row['ID'] == $object->getId()) { $finalPage = $pageNumber; break; } } if ($finalPage !== null) { break; } } $finalPage = $finalPage ?: 1; $command = $this->request->getQuery('cmd') ?: ''; if ($command) { $command = '!' . $command; } LocalRedirect($driver->getUrlManager()->getPathInListing($object) . "?&pageNumber={$finalPage}#hl-" . $object->getId() . $command); }
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; }
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; }
/** * 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'); } }
protected static function getHourlyCompanyActivitySince(Type\DateTime $hour = null) { $query = new Entity\Query('Bitrix\\Intranet\\UStat\\UserHourTable'); // set all activity columns $uStatFields = UserHourTable::getEntity()->getFields(); foreach ($uStatFields as $uStatField) { if ($uStatField instanceof Entity\ScalarField && !$uStatField->isPrimary()) { $query->addSelect(new Entity\ExpressionField($uStatField->getName() . '_SUM', 'SUM(%s)', $uStatField->getName())); } } // add & automatically group by hour $query->addSelect('HOUR'); // add filter by date if ($hour !== null) { $query->setFilter(array('>=HOUR' => \ConvertTimeStamp($hour->getTimestamp(), 'FULL'))); } // collect activity $activity = array(); $result = $query->exec(); while ($row = $result->fetch()) { foreach ($row as $k => $v) { if (substr($k, -4) === '_SUM') { $row[substr($k, 0, -4)] = $v; unset($row[$k]); } } $activity[] = $row; } return $activity; }
// 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; } // add values to data
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 = ' '; } $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; } }
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; } }
/** * 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(); }
/** * @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; }
public function getCounters(array $parameters = array()) { $query = new Query(Internals\ContextCounterDayTable::getEntity()); if ($filter = $parameters['filter']) { $query->setFilter($filter); } $i = 0; foreach ($this->attributes as $name => $value) { self::setAttributeFilter($query, '_conversion_attribute_' . ++$i . '_', $name, $value); } $query->registerRuntimeField(null, new ExpressionField('VALUE_SUM', 'SUM(%s)', array('VALUE'))); $splitNames = array(); if ($split = $parameters['split']) { if (!is_array($split)) { throw new ArgumentTypeException('parameters[split]', 'array'); } foreach ($split as $name => $value) { switch ($name) { case 'ATTRIBUTE_NAME': if (!is_string($value)) { throw new ArgumentTypeException('parameters[split][ATTRIBUTE_NAME]', 'string'); } self::setAttributeFilter($query, 'split_attribute', $value); $query->addGroup('split_attribute.VALUE'); $query->addSelect('split_attribute.VALUE', 'ATTRIBUTE_VALUE'); $splitNames[] = 'ATTRIBUTE_VALUE'; break; default: throw new ArgumentTypeException('parameters[split][' . $name . ']', 'not implemented'); } } } $query->addGroup('NAME'); $query->addSelect('NAME'); $query->addSelect('VALUE_SUM'); $result = $query->exec(); // return $result->fetchAll(); $counters = array(); while ($row = $result->fetch()) { $level =& $counters; foreach ($splitNames as $name) { if (!($level =& $level[$row[$name]])) { $level = array(); } } $level[$row['NAME']] = $row['VALUE_SUM']; } return $counters; }
/** * @param $elem * @param $select * @param $is_init_entity_aggregated * @param $fList * @param Entity\QueryChain[] $fChainList * @param $helper_class * @param Entity\Base $entity * * @return array */ public static function prepareSelectViewElement($elem, $select, $is_init_entity_aggregated, $fList, $fChainList, $helper_class, Entity\Base $entity) { $result = null; $alias = null; if (empty($elem['aggr']) && !strlen($elem['prcnt'])) { $result = $elem['name']; } else { $expression = ''; /** @var Entity\Field $field */ $field = $fList[$elem['name']]; $chain = $fChainList[$elem['name']]; $alias = $chain->getAlias(); $dataType = call_user_func(array($helper_class, 'getFieldDataType'), $field); if (!empty($elem['aggr'])) { $alias = $elem['aggr'] . '_' . $alias; if ($dataType == 'boolean') { // sum int for boolean global $DB; /** @var Entity\BooleanField $field */ $trueValue = $field->normalizeValue(true); $localDef = 'CASE WHEN %s = \'' . $DB->ForSql($trueValue) . '\' THEN 1 ELSE 0 END'; } else { $localDef = '%s'; } if ($elem['aggr'] == 'COUNT_DISTINCT') { $dataType = 'integer'; $expression = array('COUNT(DISTINCT ' . $localDef . ')', $elem['name']); } else { if ($dataType == 'boolean') { $dataType = 'integer'; } if ($elem['aggr'] == 'GROUP_CONCAT') { $expression = array($localDef, $elem['name']); } else { $expression = array($elem['aggr'] . '(' . $localDef . ')', $elem['name']); } } // pack 1:N aggregations into subquery if ($chain->hasBackReference() && $elem['aggr'] != 'GROUP_CONCAT') { $confirm = call_user_func_array(array($helper_class, 'confirmSelectBackReferenceRewrite'), array(&$elem, $chain)); if ($confirm) { $filter = array(); foreach ($entity->GetPrimaryArray() as $primary) { $filter['=' . $primary] = new CSQLWhereExpression('?#', ToLower($entity->getCode()) . '.' . $primary); } $query = new Entity\Query($entity); $query->addSelect(new Entity\ExpressionField('X', $expression[0], $elem['name'])); $query->setFilter($filter); $query->setTableAliasPostfix('_sub'); $expression = array('(' . $query->getQuery() . ')'); // double aggregation if init entity aggregated if ($is_init_entity_aggregated) { if ($elem['aggr'] == 'COUNT_DISTINCT') { $expression[0] = 'SUM(' . $expression[0] . ')'; } else { $expression[0] = $elem['aggr'] . '(' . $expression[0] . ')'; } } } // confirmed } } if (strlen($elem['prcnt'])) { $alias = $alias . '_PRCNT'; $dataType = 'integer'; if ($elem['prcnt'] == 'self_column') { if (empty($expression)) { $expression = array('%s', $elem['name']); } } else { if (empty($expression)) { $localDef = '%s'; $localMembers = array($elem['name']); } else { $localDef = $expression[0]; $localMembers = array_slice($expression, 1); } list($remoteAlias, $remoteSelect) = self::prepareSelectViewElement($select[$elem['prcnt']], $select, $is_init_entity_aggregated, $fList, $fChainList, $helper_class, $entity); if (is_array($remoteSelect) && !empty($remoteSelect['expression'])) { // remote field is expression $remoteDef = $remoteSelect['expression'][0]; $remoteMembers = array_slice($remoteSelect['expression'], 1); $alias = $alias . '_FROM_' . $remoteAlias; } else { // remote field is usual field $remoteDef = '%s'; $remoteMembers = array($remoteSelect); $remoteAlias = Entity\QueryChain::getAliasByDefinition($entity, $remoteSelect); $alias = $alias . '_FROM_' . $remoteAlias; } $exprDef = '(' . $localDef . ') / (' . $remoteDef . ') * 100'; $expression = array_merge(array($exprDef), $localMembers, $remoteMembers); // 'ROUND(STATUS / ID * 100)' // 'ROUND( (EX1(F1, F2)) / (EX2(F3, F1)) * 100)', // F1, F2, F3, F1 } } $result = array('data_type' => $dataType, 'expression' => $expression); } return array($alias, $result); }
} } if ($selectFields['PROPERTY_TYPE']) { $selectFields['USER_TYPE'] = true; } $selectFields = array_keys($selectFields); $getListParams = array('select' => $selectFields, 'filter' => $arFilter, 'order' => $propertyOrder); if ($usePageNavigation) { $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } $totalPages = 0; if ($usePageNavigation) { $countQuery = new Main\Entity\Query(Iblock\PropertyTable::getEntity()); $countQuery->addSelect(new Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($getListParams['filter']); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); unset($countQuery); $totalCount = (int) $totalCount['CNT']; if ($totalCount > 0) { $totalPages = ceil($totalCount / $navyParams['SIZEN']); if ($navyParams['PAGEN'] > $totalPages) { $navyParams['PAGEN'] = $totalPages; } $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = $navyParams['SIZEN'] * ($navyParams['PAGEN'] - 1); } else { $navyParams['PAGEN'] = 1; $getListParams['limit'] = $navyParams['SIZEN']; $getListParams['offset'] = 0; }
private function getListUsers(array $filter) { $limit = !isset($this->params['limit']) ? self::USERS_ON_PAGE : (int) $this->params['limit']; $page = empty($this->params['page']) ? 1 : (int) $this->params['page']; $offset = ($page - 1) * $limit; $query = \Bitrix\Webdav\FolderInviteTable::getList(array('select' => array('*', 'INVITE_USER'), 'filter' => $filter, 'limit' => $limit, 'offset' => $offset, 'order' => array('ID' => 'ASC'))); $users = array(); while ($row = $query->fetch()) { $row = $this->reformatInviteRow($row); $users[] = $row; } $countQuery = new Query(\Bitrix\Webdav\FolderInviteTable::getEntity()); $countQuery->addSelect(new ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter($filter); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); $totalCount = $totalCount['CNT']; return array('USERS' => $users, 'COUNT' => count($users), 'PAGE' => $page, 'ON_PAGE' => self::USERS_ON_PAGE, 'TOTAL_COUNT' => intval($totalCount), 'TOTAL_PAGE' => ceil($totalCount / $limit)); }
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"); }
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; }
} 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();
/** * <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> * <? * // Выберем все местоположения группы 2 * $db_res = CSaleLocationGroup::GetLocationList(array("LOCATION_GROUP_ID"=>2)); * while ($ar_res = $db_res->Fetch()) * { * echo $ar_res["LOCATION_ID"].", "; * } * ?> * </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; } }
public static function getAllCounter() { $countQuery = new Main\Entity\Query(Sale\Internals\DiscountTable::getEntity()); $countQuery->addSelect(new Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter(array('=VERSION' => Sale\Internals\DiscountTable::VERSION_NEW)); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); return (int) $totalCount['CNT']; }
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"); WizardServices::IncludeServiceLang("highloadblocks.php", "ru");
public static function getList($parameters = array()) { $query = new Query(static::getEntity()); if (!isset($parameters['select'])) { $query->setSelect(array('*')); } foreach ($parameters as $param => $value) { switch ($param) { case 'select': $query->setSelect($value); break; case 'filter': $query->setFilter($value); break; case 'group': $query->setGroup($value); break; case 'order': $query->setOrder($value); break; case 'limit': $query->setLimit($value); break; case 'offset': $query->setOffset($value); break; case 'count_total': $query->countTotal($value); break; case 'options': $query->setOptions($value); break; case 'runtime': foreach ($value as $name => $fieldInfo) { $query->registerRuntimeField($name, $fieldInfo); } break; case 'data_doubling': if ($value) { $query->enableDataDoubling(); } else { $query->disableDataDoubling(); } break; default: throw new Main\ArgumentException("Unknown parameter: " . $param, $param); } } return $query->exec(); }
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; }