public function actionSave() { $student = new CStudent(); $student->setAttributes(CRequest::getArray(CStudent::getClassName())); if ($student->validate()) { $student->save(); if ($this->continueEdit()) { $this->redirect("?action=edit&id=" . $student->getId()); } else { $this->redirect("?action=index"); } return true; } $this->addJSInclude("_core/jquery-ui-1.8.20.custom.min.js"); $this->addCSSInclude("_core/jUI/jquery-ui-1.8.2.custom.css"); $groups = array(); foreach (CActiveRecordProvider::getAllFromTable(TABLE_STUDENT_GROUPS, "name asc")->getItems() as $item) { $group = new CStudentGroup($item); $groups[$group->getId()] = $group->getName(); } $forms = array(1 => "Бюджет", 2 => "Контракт"); $this->setData("forms", $forms); $this->setData("groups", $groups); $this->setData("student", $student); $this->renderView("_students/edit.tpl"); }
/** * Сама обработка студентов * * @param array $source */ private function processStudent(array $source) { /** * Попробуем искать студента. Искать будем по ФИО */ $fio = $source[1] . " " . $source[2] . " " . $source[3]; $student = CStaffManager::getStudent($fio); /** * Если студент был, то хорошо, если не был, то создаем * и добавляем в список добавленных */ if (is_null($student)) { $student = new CStudent(); $student->fio = $fio; $added = new CArrayList(); if ($this->getResults()->hasElement("Добавлен")) { $added = $this->getResults()->getItem("Добавлен"); } $added->add($student->getName(), $student->getName()); $this->getResults()->add("Добавлен", $added); } $updated = new CArrayList(); if ($this->getResults()->hasElement("Обновлен")) { $updated = $this->getResults()->getItem("Обновлен"); } $fields = new CArrayList(); if ($updated->hasElement($student->getName())) { $fields = $updated->getItem($student->getName()); } /** * Теперь у нас есть студент. В любом случае есть)) * Проверяем, может что-то не совпадает */ $needSave = false; /** * Год окончания школы */ if ($source[4] !== "") { if (mb_strtolower($student->year_school_end) !== mb_strtolower($source[4])) { $needSave = true; $student->year_school_end = $source[4]; $fields->add("Год окончания предыдущего образовательно учреждения", $source[4]); } } /** * Предыдущее образовательное учреждение */ if ($source[5] !== "") { if (is_null($student->primaryEducation)) { $needSave = true; $term = $this->getTerm("primary_education", $source[5]); $student->primary_education_type_id = $term->getId(); $fields->add("Предыдущее образовательно учреждение", $source[5]); } elseif (mb_strtolower($student->primaryEducation->getValue()) !== mb_strtolower($source[5])) { $needSave = true; $term = $this->getTerm("primary_education", $source[5]); $student->primary_education_type_id = $term->getId(); $fields->add("Предыдущее образовательно учреждение", $source[5]); } } /** * Год поступления в вуз */ if ($source[6] !== "") { if (mb_strtolower($student->year_university_start) !== $source[6]) { $needSave = true; $student->year_university_start = $source[6]; $fields->add("Год поступления в ВУЗ", $source[6]); } } /** * Форма обучения, на которую поступал */ if ($source[7] !== "") { if (is_null($student->secondaryEducationStartType)) { $needSave = true; $term = $this->getTerm("education_form", $source[7]); $student->education_form_start = $term->getId(); $fields->add("Форма обучения, на которую поступали", $source[7]); } elseif (mb_strtolower($student->secondaryEducationStartType->getValue()) !== mb_strtolower($source[7])) { $needSave = true; $term = $this->getTerm("education_form", $source[7]); $student->education_form_start = $term->getId(); $fields->add("Форма обучения, на которую поступали", $source[7]); } } /** * Форма обучения, которую заканчивает */ if ($source[8] !== "") { if (is_null($student->secondaryEducationEndType)) { $needSave = true; $term = $this->getTerm("education_form", $source[8]); $student->education_form_end = $term->getId(); $fields->add("Форма обучения, которую заканчивает", $source[8]); } elseif (mb_strtolower($student->secondaryEducationEndType->getValue()) !== mb_strtolower($source[8])) { $needSave = true; $term = $this->getTerm("education_form", $source[8]); $student->education_form_end = $term->getId(); $fields->add("Форма обучения, которую заканчивает", $source[8]); } } /** * Пол */ if ($source[9] !== "") { if (is_null($student->gender)) { $needSave = true; $term = $this->getTerm("gender", $source[9]); $student->gender_id = $term->getId(); $fields->add("Пол", $source[9]); } elseif (mb_strtolower($student->gender->getValue()) !== mb_strtolower($source[9])) { $needSave = true; $term = $this->getTerm("gender", $source[9]); $student->gender_id = $term->getId(); $fields->add("Пол", $source[9]); } } /** * Номер телефона */ if ($source[10] !== "") { if (mb_strtoupper($student->telephone) !== mb_strtoupper($source[10])) { $needSave = true; $student->telephone = $source[10]; $fields->add("Телефон", $source[10]); } } /** * Место текущей работы */ if ($source[11] !== "") { if (mb_strtoupper($student->work_current) !== mb_strtoupper($source[11])) { $needSave = true; $student->work_current = $source[11]; $fields->add("Место текущей работы", $source[11]); } } /** * Примечания */ if ($source[12] !== "") { if (mb_strtoupper($student->comment) !== mb_strtoupper($source[12])) { $needSave = true; $student->comment = $source[12]; $fields->add("Примечание", $source[12]); } } /** * Номер группы */ if ($source[13] !== "") { $source[13] = str_replace(" ", "-", $source[13]); $group = CStaffManager::getStudentGroup($source[13]); if (is_null($student->getGroup())) { if (!is_null($group)) { $student->group_id = $group->getId(); $needSave = true; $fields->add("Группа", $source[13]); } } elseif (mb_strtoupper($student->getGroup()->getName()) !== mb_strtoupper($source[13])) { if (!is_null($group)) { $student->group_id = $group->getId(); $needSave = true; $fields->add("Группа", $source[13]); } } } /** * Место предполагаемой работы */ if ($source[14] !== "") { if (mb_strtoupper($student->work_proposed) !== mb_strtoupper($source[14])) { $needSave = true; $student->work_proposed = $source[14]; $fields->add("Место предполагаемой работы", $source[14]); } } if ($needSave) { $student->save(); } $updated->add($student->getName(), $fields); $this->getResults()->add("Обновлен", $updated); }
die; } if (!CModule::IncludeModule("learning")) { ShowError(GetMessage("LEARNING_MODULE_NOT_FOUND")); return; } $arParams["TRANSCRIPT_ID"] = isset($arParams["TRANSCRIPT_ID"]) ? $arParams["TRANSCRIPT_ID"] : $_REQUEST["TRANSCRIPT_ID"]; if (!preg_match("~^([0-9]+)\\-([0-9]+)\$~", $arParams["TRANSCRIPT_ID"], $match)) { ShowError(GetMessage("LEARNING_TRANSCRIPT_NOT_FOUND")); return; } $TRANSCRIPT = $match[1]; $USER_ID = $match[2]; $arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat() : $arParams["NAME_TEMPLATE"]; //Student exists? $res = CStudent::GetList(array(), array("USER_ID" => $USER_ID, "TRANSCRIPT" => $TRANSCRIPT)); if (!($arStudent = $res->GetNext())) { ShowError(GetMessage("LEARNING_TRANSCRIPT_NOT_FOUND")); return; } //Can view transcript? if ($arStudent["PUBLIC_PROFILE"] == "N" && !($USER->GetID() == $arStudent["USER_ID"] || $USER->IsAdmin())) { ShowError(GetMessage("LEARNING_TRANSCRIPT_PERMISSION_DENIED")); return; } //User exists? $res = CUser::GetByID($arStudent["USER_ID"]); if (!($arUser = $res->GetNext())) { ShowError(GetMessage("LEARNING_TRANSCRIPT_ERROR")); return; }
/** * <p>Возвращает список учётных записей студентов по фильтру <b>arFilter</b>, отсортированный в порядке <b>arOrder</b>.</p> * * * @param array $arrayarOrder = Array("ID"=>"DESC") Массив для сортировки результата. Массив вида <i>array("поле * сортировки"=>"направление сортировки" [, ...])</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("фильтруемое поле"=>"значение фильтра" [, ...])</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>"<" - * меньше </li> <li>"<=" - меньше либо равно </li> <li>">" - больше </li> <li>">=" - * больше либо равно </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> * <? * if (CModule::IncludeModule("learning")) * { * $USER_ID = 1; $TRANSCRIPT = 46785643; * $res = CStudent::GetList(Array(), Array("USER_ID" => $USER_ID, "TRANSCRIPT" => $TRANSCRIPT)); * * while ($arProfile = $res->GetNext()) * { * echo $arProfile["RESUME"]; * } * } * ?> * </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__); }
} if (!isset($arResult["arBlogUser"]["ALLOW_POST"]) || $arResult["arBlogUser"]["ALLOW_POST"] != "Y" && $arResult["arBlogUser"]["ALLOW_POST"] != "N") { $arResult["arBlogUser"]["ALLOW_POST"] = "Y"; } } if (CModule::IncludeModule("forum")) { $arResult["INCLUDE_FORUM"] = "Y"; $rsForumUser = CForumUser::GetList(array(), array("USER_ID" => $arResult["ID"])); $arResult["arForumUser"] = $rsForumUser->GetNext(false); if (!isset($arResult["arForumUser"]["ALLOW_POST"]) || $arResult["arForumUser"]["ALLOW_POST"] != "Y" && $arResult["arForumUser"]["ALLOW_POST"] != "N") { $arResult["arForumUser"]["ALLOW_POST"] = "Y"; } } if (CModule::IncludeModule("learning")) { $arResult["INCLUDE_LEARNING"] = "Y"; $dbStudent = CStudent::GetList(array(), array("USER_ID" => $arResult["ID"])); $arResult["arStudent"] = $dbStudent->GetNext(); if (!isset($arResult["arStudent"]["PUBLIC_PROFILE"]) || $arResult["arStudent"]["PUBLIC_PROFILE"] != "Y" && $arResult["arStudent"]["PUBLIC_PROFILE"] != "N") { $arResult["arStudent"]["PUBLIC_PROFILE"] = "N"; } } if ($strError != '') { static $skip = array("PERSONAL_PHOTO" => 1, "WORK_LOGO" => 1, "forum_AVATAR" => 1, "blog_AVATAR" => 1); foreach ($_POST as $k => $val) { if (!isset($skip[$k])) { if (!is_array($val)) { $val = htmlspecialcharsex($val); } if (strpos($k, "forum_") === 0) { $arResult["arForumUser"][substr($k, 6)] = $val; } elseif (strpos($k, "blog_") === 0) {
public static function OnUserDelete($user_id) { return CStudent::Delete($user_id); }
} else { if ($e = $APPLICATION->GetException()) { $strError = $e->GetString(); } } } } //Images $arUser["PERSONAL_PHOTO_ARRAY"] = CFile::GetFileArray($arUser["PERSONAL_PHOTO"]); $arUser["WORK_LOGO_ARRAY"] = CFile::GetFileArray($arUser["WORK_LOGO"]); //Countries $arUser["PERSONAL_COUNTRY_ARRAY"] = GetCountryArray(); //arResult $arResult = array("USER" => $arUser, "STUDENT" => array(), "TRANSCRIPT_DETAIL_URL" => "", "CURRENT_PAGE" => $APPLICATION->GetCurPage(), "ERROR_MESSAGE" => $strError); //Student $rsStudent = CStudent::GetList(array(), array("USER_ID" => $USER_ID)); if ($arStudent = $rsStudent->Fetch()) { $arResult["STUDENT"] = $arStudent; $arResult["TRANSCRIPT_DETAIL_URL"] = CComponentEngine::MakePathFromTemplate($arParams["TRANSCRIPT_DETAIL_TEMPLATE"], array("TRANSCRIPT_ID" => $arStudent["TRANSCRIPT"] . "-" . $arStudent["USER_ID"])); } //If post and error occured if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($arResult["ERROR_MESSAGE"]) > 0) { $arUserFields = $DB->GetTableFieldsList("b_user"); foreach ($arUserFields as $field) { if (array_key_exists($field, $_REQUEST)) { $arResult["USER"][$field] = htmlspecialchars($_REQUEST[$field]); } } $arUserFields = $DB->GetTableFieldsList("b_learn_student"); foreach ($arUserFields as $field) { if (array_key_exists($field, $_REQUEST)) {
<?php IncludeModuleLangFile(__FILE__); $strError = ""; ClearVars("str_student_"); if (CModule::IncludeModule("learning")) { $ID = intval($ID); $db_res = CStudent::GetList(array(), array("USER_ID" => $ID)); if (!$db_res->ExtractFields("str_student_", true)) { if (!isset($str_student_PUBLIC_PROFILE) || $str_student_PUBLIC_PROFILE != "Y" && $str_student_PUBLIC_PROFILE != "N") { $str_student_PUBLIC_PROFILE = "N"; } } if (strlen($strError) > 0) { $DB->InitTableVarsForEdit("b_learn_student", "student_", "str_student_"); } ?> <input type="hidden" name="profile_module_id[]" value="learning"> <tr valign="top"> <td align="right" width="40%"><?php echo GetMessage("learning_PUBLIC_PROFILE"); ?> :</td> <td width="60%"><input type="checkbox" name="student_PUBLIC_PROFILE" value="Y" <?php if ($str_student_PUBLIC_PROFILE == "Y") { echo "checked"; } ?> ></td> </tr>
<?php $learningWarningTmp = ""; if (CModule::IncludeModule("learning")) { $arStudentFields = array("RESUME" => $student_RESUME, "PUBLIC_PROFILE" => $student_PUBLIC_PROFILE == "Y" ? "Y" : "N"); $ar_res = CStudent::GetList(array(), array("USER_ID" => $ID)); if ($arStudent = $ar_res->Fetch()) { $learning_res = CStudent::Update($ID, $arStudentFields); } else { $arStudentFields["USER_ID"] = $ID; $STUDENT_USER_ID = CStudent::Add($arStudentFields); $learning_res = intval($STUDENT_USER_ID) > 0; } }
public function setStudent(CStudent $student) { $this->_student = $student; $this->getRecord()->setItemValue("student_id", $student->getId()); }