- Модуль: learning
- Путь к файлу: ~/bitrix/modules/learning/classes/general/question.php
- Класс: CLQuestion
- Вызов: CLQuestion::Delete
static function Delete($ID)
{
global $DB, $USER_FIELD_MANAGER;
$ID = intval($ID);
if ($ID < 1) return false;
$strSql = "SELECT FILE_ID FROM b_learn_question WHERE ID = ".$ID;
$r = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
if (!$arQuestion = $r->Fetch())
return false;
$answers = CLAnswer::GetList(Array(), Array("QUESTION_ID" => $ID));
while($arAnswer = $answers->Fetch())
{
if(!CLAnswer::Delete($arAnswer["ID"]))
return false;
}
$arAttempts = Array();
$strSql = "SELECT ATTEMPT_ID FROM b_learn_test_result WHERE QUESTION_ID = ".$ID;
$res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
while($ar = $res->Fetch())
$arAttempts[] = $ar["ATTEMPT_ID"]; //Attempts to recount
//Results
$strSql = "DELETE FROM b_learn_test_result WHERE QUESTION_ID = ".$ID;
if (!$DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__))
return false;
foreach($arAttempts as $ATTEMPT_ID)
{
CTestAttempt::RecountQuestions($ATTEMPT_ID);
CTestAttempt::OnAttemptChange($ATTEMPT_ID);
}
$strSql = "DELETE FROM b_learn_question WHERE ID = ".$ID;
if (!$DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__))
return false;
$USER_FIELD_MANAGER->delete('LEARNING_QUESTIONS', $ID);
CFile::Delete($arQuestion["FILE_ID"]);
CEventLog::add(array(
'AUDIT_TYPE_ID' => 'LEARNING_REMOVE_ITEM',
'MODULE_ID' => 'learning',
'ITEM_ID' => 'Q #' . $ID,
'DESCRIPTION' => 'question removed'
));
foreach(GetModuleEvents('learning', 'OnAfterQuestionDelete', true) as $arEvent)
ExecuteModuleEventEx($arEvent, array($ID, $arQuestion));
return true;
}