예제 #1
0
 /**
  * <p>Возвращает список учётных записей студентов по фильтру <b>arFilter</b>, отсортированный в порядке <b>arOrder</b>.</p>
  *
  *
  * @param array $arrayarOrder = Array("ID"=>"DESC") Массив для сортировки результата. Массив вида <i>array("поле
  * сортировки"=&gt;"направление сортировки" [, ...])</i>.<br>Поле для
  * сортировки может принимать значения: <ul> <li> <b>USER_ID</b> - <a
  * href="http://dev.1c-bitrix.ru/api_help/main/reference/cuser/index.php">Код пользователя</a>; </li> <li>
  * <b>PUBLIC_PROFILE</b> - профиль доступен публично (Y/N); </li> </ul>Направление
  * сортировки может принимать значения: <ul> <li> <b>asc</b> - по возрастанию;
  * </li> <li> <b>desc</b> - по убыванию; </li> </ul>Необязательный. По умолчанию
  * сортируется по убыванию кода пользователя.
  *
  * @param array $arrayarFilter = Array() Массив вида <i>array("фильтруемое поле"=&gt;"значение фильтра" [, ...])</i>.
  * Фильтруемое поле может принимать значения: <ul> <li> <b>USER_ID</b> - <a
  * href="http://dev.1c-bitrix.ru/api_help/main/reference/cuser/index.php">Код пользователя</a>; </li> <li>
  * <b>PUBLIC_PROFILE</b> - профиль доступен публично (Y/N); </li> <li> <b>TRANSCRIPT</b> -
  * числовой случайный идентификатор; </li> <li> <b>RESUME</b> - резюме студента
  * (можно искать по шаблону [%_]); </li> </ul>Перед названием фильтруемого
  * поля можно указать тип фильтрации: <ul> <li>"!" - не равно </li> <li>"&lt;" -
  * меньше </li> <li>"&lt;=" - меньше либо равно </li> <li>"&gt;" - больше </li> <li>"&gt;=" -
  * больше либо равно </li> </ul> <br>"<i>значения фильтра</i>" - одиночное
  * значение или массив.<br><br>Необязательный. По умолчанию записи не
  * фильтруются.
  *
  * @return CDBResult <p>Возвращается объект <a
  * href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a>.</p> </h
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * if (CModule::IncludeModule("learning"))
  * {
  *     $USER_ID = 1; $TRANSCRIPT = 46785643;
  *     $res = CStudent::GetList(Array(), Array("USER_ID" =&gt; $USER_ID, "TRANSCRIPT" =&gt; $TRANSCRIPT));
  * 
  *     while ($arProfile = $res-&gt;GetNext())
  *     {
  *         echo $arProfile["RESUME"];
  *     }
  * }
  * ?&gt;
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a> </li> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/learning/classes/cstudent/index.php">CStudent</a>::<a
  * href="http://dev.1c-bitrix.ru/api_help/learning/classes/cstudent/getbyid.php">GetByID</a> </li> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/learning/fields.php#student">Поля студента</a> </li> </ul> <a
  * name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/learning/classes/cstudent/getlist.php
  * @author Bitrix
  */
 public static function GetList($arOrder = array(), $arFilter = array())
 {
     global $DB, $USER;
     $arSqlSearch = CStudent::GetFilter($arFilter);
     $strSqlSearch = "";
     for ($i = 0; $i < count($arSqlSearch); $i++) {
         if (strlen($arSqlSearch[$i]) > 0) {
             $strSqlSearch .= " AND " . $arSqlSearch[$i] . " ";
         }
     }
     $strSql = "SELECT S.* " . "FROM b_learn_student S " . "WHERE 1=1 " . $strSqlSearch;
     if (!is_array($arOrder)) {
         $arOrder = array();
     }
     foreach ($arOrder as $by => $order) {
         $by = strtolower($by);
         $order = strtolower($order);
         if ($order != "asc") {
             $order = "desc";
         }
         if ($by == "user_id") {
             $arSqlOrder[] = " S.USER_ID " . $order . " ";
         } elseif ($by == "public_profile") {
             $arSqlOrder[] = " S.PUBLIC_PROFILE " . $order . " ";
         } else {
             $arSqlOrder[] = " S.USER_ID " . $order . " ";
             $by = "user_id";
         }
     }
     $strSqlOrder = "";
     DelDuplicateSort($arSqlOrder);
     for ($i = 0; $i < count($arSqlOrder); $i++) {
         if ($i == 0) {
             $strSqlOrder = " ORDER BY ";
         } else {
             $strSqlOrder .= ",";
         }
         $strSqlOrder .= $arSqlOrder[$i];
     }
     $strSql .= $strSqlOrder;
     //echo $strSql;
     return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
 }