- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/general/webdavonlineedit.php
- Класс: CWebDavLogOnlineEditBase
- Вызов: CWebDavLogOnlineEditBase::getList
static function getList(array $order = array(), array $filter = array(), array $select = array())
{
$t = static::TABLE_NAME;
$a = static::TABLE_ALIAS;
static::filterFields($order);
static::filterFields($filter);
$sqlSelect = '';
$sqlFrom = $t . ' ' . $a;
foreach (array_keys(static::$tableColumns) as $column)
{
$sqlSelect .= (empty($sqlSelect)? '':', ') . $a . '.' . $column;
}
unset($column);
if($select)
{
foreach ($select as $field)
{
$field = mb_strtoupper($field);
switch($field)
{
case 'USER':
$sqlSelect .= ", UC.NAME USER_NAME, UC.LAST_NAME USER_LAST_NAME, UC.SECOND_NAME USER_SECOND_NAME, UC.EMAIL USER_EMAIL, UC.ID USER_ID, UC.LOGIN USER_LOGIN, UC.PERSONAL_GENDER USER_GENDER";
$sqlFrom .= "tLEFT JOIN b_user UC ON UC.ID={$a}.USER_IDn";
break;
}
}
unset($field);
}
$where = $filter;
$sqlWhere = array();
foreach ($where as $field => $value)
{
switch($field)
{
case 'ID':
case 'IBLOCK_ID':
case 'SECTION_ID':
case 'ELEMENT_ID':
case 'USER_ID':
case 'OWNER_ID':
if($value === null)
{
continue;
}
$value = (int)$value;
$sqlWhere[] = $field . '=' . $value;
break;
case 'SERVICE_FILE_ID':
case 'SERVICE':
$value = static::getDb()->forSql($value);
$sqlWhere[] = $field . '=' . ''' . $value . ''';
break;
case 'CREATED_TIMESTAMP':
$value = (int)$value;
$sqlWhere[] = $field . '>=' . $value;
break;
}
}
unset($value);
if($sqlWhere)
{
$sqlWhere = ' WHERE ' . implode(' AND ', $sqlWhere);
}
else
{
$sqlWhere = '';
}
$sqlOrder = '';
if($order)
{
$sqlOrder = array();
foreach ($order as $by => $ord)
{
$by = mb_strtoupper($by);
$sqlOrder[] = $by . ' ' . (mb_strtoupper($ord) == 'DESC' ? 'DESC' : 'ASC');
}
unset($by);
$sqlOrder = ' ORDER BY ' . implode(', ', $sqlOrder);
}
return static::getDb()->query("SELECT {$sqlSelect} FROM {$sqlFrom} {$sqlWhere} {$sqlOrder}");
}