ThrowException(GetMessage("LEARNING_BAD_USER_ID"), "EMPTY_USER_ID"); return false; } elseif (is_set($arFields, "USER_ID")) { $dbResult = CUser::GetByID($arFields["USER_ID"]); if (!$dbResult->Fetch()) { $APPLICATION->ThrowException(GetMessage("LEARNING_BAD_USER_ID_EX"), "ERROR_NO_USER_ID"); return false; } $dbResult = CStudent::GetList(Array(), Array("USER_ID" => $arFields["USER_ID"])); if ($dbResult->Fetch()) { $APPLICATION->ThrowException(GetMessage("LEARNING_BAD_USER_ID_EXISTS"), "ERROR_USER_ID_EXISTS"); return false; } } if ($ID === false && !is_set($arFields, "TRANSCRIPT")) { $arFields["TRANSCRIPT"] = CStudent::GenerateTranscipt(); } elseif(is_set($arFields, "TRANSCRIPT") && !preg_match("~^[0-9]{6,}$~",$arFields["TRANSCRIPT"])) { $arFields["TRANSCRIPT"] = CStudent::GenerateTranscipt(); } if (is_set($arFields, "PUBLIC_PROFILE") && $arFields["PUBLIC_PROFILE"] != "N") $arFields["ACTIVE"] = "Y"; return true; } // 2012-04-16 Checked/modified for compatibility with new data model public static function GenerateTranscipt($TranscriptLength = 8) { $TranscriptLength = intval($TranscriptLength); $digits = "312467589"; $max = mb_strlen($digits) - 1; $str = ""; for ($i = 0; $i < $TranscriptLength; $i++) $str .= $digits[mt_rand(0,$max)]; return $str; } // 2012-04-16 Checked/modified for compatibility with new data model public static function Add($arFields) { global $DB; if(CStudent::CheckFields($arFields)) { CLearnHelper::FireEvent('OnBeforeStudentAdd', $arFields); $arInsert = $DB->PrepareInsert("b_learn_student", $arFields, "learning"); if ($arInsert[0] == '' || $arInsert[0] == '') return false; $strSql = "INSERT INTO b_learn_student(".$arInsert[0].") ". "VALUES(".$arInsert[1].")"; if(!$DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__)) return false; CLearnHelper::FireEvent('OnAfterStudentAdd', $arFields); return $arFields["USER_ID"]; } return false; } // 2012-04-16 Checked/modified for compatibility with new data model public static function Update($ID, $arFields) { global $DB; $ID = intval($ID); if ($ID < 1) return false; unset($arFields["USER_ID"]); if (CStudent::CheckFields($arFields, $ID)) { $arBinds=Array( "RESUME"=>$arFields["RESUME"] ); CLearnHelper::FireEvent('OnBeforeStudentUpdate', $arFields); $strUpdate = $DB->PrepareUpdate("b_learn_student", $arFields, "learning"); if($strUpdate <> '') { $strSql = "UPDATE b_learn_student SET ".$strUpdate." WHERE USER_ID=".$ID; $DB->QueryBind($strSql, $arBinds, false, "File: ".__FILE__."
Line: ".__LINE__); } CLearnHelper::FireEvent('OnAfterStudentUpdate', $arFields); return true; } return false; } // 2012-04-16 Checked/modified for compatibility with new data model public static function Delete($ID) { global $DB; $ID = intval($ID); if ($ID < 1) return false; CLearnHelper::FireEvent('OnBeforeStudentDelete', $ID); //Certification $records = CCertification::GetList(Array(), Array("STUDENT_ID" => $ID)); while($arRecord = $records->Fetch()) { \CCertification::Delete($arRecord["ID"]); } //GradeBook $gradeBooks = \CGradeBook::GetList([], ["STUDENT_ID" => $ID]); while ($gradeBook = $gradeBooks->Fetch()) { \CGradeBook::Delete($gradeBook["ID"]); } $strSql = "DELETE FROM b_learn_student WHERE USER_ID = ".$ID; if (!$DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__)) return false; CLearnHelper::FireEvent('OnAfterStudentDelete', $ID); return true; } // 2012-04-16 Checked/modified for compatibility with new data model public static function GetByID($ID) { return CStudent::GetList(Array(),Array("USER_ID"=> $ID)); } // 2012-04-16 Checked/modified for compatibility with new data model public static function GetFilter($arFilter) { if (!is_array($arFilter)) $arFilter = Array(); $arSqlSearch = Array(); foreach ($arFilter as $key => $val) { $res = CLearnHelper::MkOperationFilter($key); $key = $res["FIELD"]; $cOperationType = $res["OPERATION"]; $key = mb_strtoupper($key); switch ($key) { case "USER_ID": case "TRANSCRIPT": $arSqlSearch[] = CLearnHelper::FilterCreate("S.".$key, $val, "number", $bFullJoin, $cOperationType); break; case "PUBLIC_PROFILE": $arSqlSearch[] = CLearnHelper::FilterCreate("S.".$key, $val, "string_equal", $bFullJoin, $cOperationType); break; case "RESUME": $arSqlSearch[] = CLearnHelper::FilterCreate("S.".$key, $val, "string", $bFullJoin, $cOperationType); break; } } return $arSqlSearch; } // 2012-04-16 Checked/modified for compatibility with new data model public static function GetList($arOrder=Array(), $arFilter=Array()) { global $DB, $USER; $arSqlSearch = CStudent::GetFilter($arFilter); $strSqlSearch = ""; for ($i = 0, $length = count($arSqlSearch); $i < $length; $i++) { if ($arSqlSearch[$i] <> '') { $strSqlSearch .= " AND ".$arSqlSearch[$i]." "; } } $strSql = "SELECT S.* ". //$DB->Concat("'('",'U.LOGIN',"') '",'U.NAME',"' '", 'U.LAST_NAME')." as USER_NAME ". "FROM b_learn_student S ". "WHERE 1=1 ". $strSqlSearch; if (!is_array($arOrder)) $arOrder = Array(); $arSqlOrder = []; foreach($arOrder as $by=>$order) { $by = mb_strtolower($by); $order = mb_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); if (!empty($arSqlOrder) && is_array($arSqlOrder)) { for ($i = 0, $length = count($arSqlOrder); $i < $length; $i++) { if ($i == 0) { $strSqlOrder = " ORDER BY "; } else { $strSqlOrder .= ","; } $strSqlOrder .= $arSqlOrder[$i]; } } $strSql .= $strSqlOrder; //echo $strSql; return $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); } }