Your IP : 18.191.210.103


Current Path : /home/bitrix/initial_sites/coffe.land_1/bitrix/modules/learning/admin/
Upload File :
Current File : /home/bitrix/initial_sites/coffe.land_1/bitrix/modules/learning/admin/learn_question_admin.php

<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");

if (!CModule::IncludeModule('learning'))
{
	require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php'); // second system's prolog

	if (IsModuleInstalled('learning') && defined('LEARNING_FAILED_TO_LOAD_REASON'))
		echo LEARNING_FAILED_TO_LOAD_REASON;
	else
		CAdminMessage::ShowMessage(GetMessage('LEARNING_MODULE_NOT_FOUND'));

	require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php');	// system's epilog
	exit();
}

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/learning/prolog.php");
IncludeModuleLangFile(__FILE__);

ClearVars();

$lessonPath = '';

if (isset($_POST['LESSON_PATH']))
	$lessonPath = $_POST['LESSON_PATH'];
elseif (isset($_GET['LESSON_PATH']))
	$lessonPath = $_GET['LESSON_PATH'];

$oPath = new CLearnPath();
$oPath->ImportUrlencoded($lessonPath);
$LESSON_ID = $oPath->GetBottom();
if ($LESSON_ID === false)
{
	CAdminMessage::ShowMessage(GetMessage('LEARNING_BAD_LESSON'));
	require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php');
	exit();
}
$uriLessonPath = $oPath->ExportUrlencoded();
unset ($lessonPath);

if (isset($from) && strlen($from) > 0)
	$str_from = "&from=".htmlspecialcharsbx($from);
else
	$str_from = "";

$oAccess = CLearnAccess::GetInstance($USER->GetID());
$bAccessLessonModify = $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_WRITE);

$lesson = CLearnLesson::GetList(Array(), Array('LESSON_ID' => $LESSON_ID));
$arLesson = $lesson->Fetch();

$oTree = CLearnLesson::GetTree($LESSON_ID, array('EDGE_SORT' => 'asc'), array(), false);

$arSubLessons = $oTree->GetTreeAsList();
$arSubLessonsIDs = array();
foreach ($arSubLessons as $arSubLesson)
	$arSubLessonsIDs[] = (int) $arSubLesson['LESSON_ID'];

$arSubLessonsIDs[] = (int) $LESSON_ID;

if ( ! $bAccessLessonModify )
{
	$APPLICATION->SetTitle(GetMessage('LEARNING_QUESTION'));
	require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");

	$aContext = array(
		array(
			"ICON"  => "btn_list",
			"TEXT"  => GetMessage("LEARNING_BACK_TO_ADMIN"),
			"LINK"  => "learn_unilesson_admin.php?lang=" . LANG
						. GetFilterParams("filter_")
						. '&LESSON_PATH=' . $uriLessonPath,
			"TITLE" => GetMessage("LEARNING_BACK_TO_ADMIN")
		),
	);
	$context = new CAdminContextMenu($aContext);
	$context->Show();

	CAdminMessage::ShowMessage(GetMessage("LEARNING_BAD_LESSON"));

	require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
	die();
}

$sTableID = "t_question_admin";
$oSort = new CAdminSorting($sTableID, "timestamp_x", "desc");// sort initializing
$lAdmin = new CAdminList($sTableID, $oSort);// list initializing


$arFilterFields = Array(
	"filter_title",
	"filter_self",
	"filter_active",
	"filter_required",
);

$lAdmin->InitFilter($arFilterFields);// filter initializing

$arFilter = Array(
	'LESSON_ID' => $arSubLessonsIDs,
	"SELF" => $filter_self,
	"ACTIVE" => $filter_active,
	"CORRECT_REQUIRED" => $filter_required,
	"?NAME" => $filter_title,
);

if ($lAdmin->EditAction()) // save from the list
{
	foreach($FIELDS as $ID => $arFields)
	{
		$ID = intval($ID);

		if(!$lAdmin->IsUpdated($ID))
			continue;

		// http://jabber.bx/view.php?id=39495
		if (isset($arFields['FILE_ID']))
			unset($arFields['FILE_ID']);

		$DB->StartTransaction();
		$ob = new CLQuestion;
		if(!$ob->Update($ID, $arFields))
		{
			if($e = $APPLICATION->GetException())
			{
				$e = $APPLICATION->GetException();
				$lAdmin->AddUpdateError(GetMessage("SAVE_ERROR").$ID.": ".$e->GetString(), $ID);
				$DB->Rollback();
			}
		}
		$DB->Commit();
	}
}

// group and single actions processing
if($arID = $lAdmin->GroupAction())
{
	if($_REQUEST['action_target']=='selected')
	{
		$rsData = CLQuestion::GetList(Array($by=>$order), $arFilter);
		while($arRes = $rsData->Fetch())
			$arID[] = $arRes['ID'];
	}

	foreach($arID as $ID)
	{
		if(strlen($ID)<=0)
			continue;
		$ID = intval($ID);

		switch($_REQUEST['action'])
		{
		case "delete":
			@set_time_limit(0);
			$DB->StartTransaction();
			$cl = new CLQuestion;
			if(!$cl->Delete($ID))
			{
				$DB->Rollback();
				$lAdmin->AddGroupError(GetMessage("LEARNING_DELETE_ERROR"), $ID);
			}
			$DB->Commit();
			break;
		case "self":
		case "deself":
			// We shouldn't do this for text lessons
			$rs = CLQuestion::GetByID($ID);
			$arQuestionData = $rs->Fetch();
			if ($arQuestionData)
			{
				if ($arQuestionData['QUESTION_TYPE'] !== 'T')
				{
					$cl = new CLQuestion;
					$arFields = Array("SELF"=>($_REQUEST['action']=="self"?"Y":"N"));
					if(!$cl->Update($ID, $arFields))
						if($e = $APPLICATION->GetException())
							$lAdmin->AddGroupError(GetMessage("SAVE_ERROR").$ID.": ".$e->GetString(), $ID);
				}
				else
					$lAdmin->AddGroupError(GetMessage('LEARNING_QUESTION_OF_TEXT_TYPE_IGNORED'), $ID);
			}
			break;

		case "activate":
		case "deactivate":
			$cl = new CLQuestion;
			$arFields = Array("ACTIVE"=>($_REQUEST['action']=="activate"?"Y":"N"));
			if(!$cl->Update($ID, $arFields))
				if($e = $APPLICATION->GetException())
					$lAdmin->AddGroupError(GetMessage("SAVE_ERROR").$ID.": ".$e->GetString(), $ID);
			break;

		case "required":
		case "derequired":
			$cl = new CLQuestion;
			$arFields = Array("CORRECT_REQUIRED"=>($_REQUEST['action']=="required"?"Y":"N"));
			if(!$cl->Update($ID, $arFields))
				if($e = $APPLICATION->GetException())
					$lAdmin->AddGroupError(GetMessage("SAVE_ERROR").$ID.": ".$e->GetString(), $ID);
			break;
		}
	}
}

// fetch data
if (isset($_REQUEST["mode"]) && $_REQUEST["mode"] == "excel")
	$arNavParams = array();
else
	$arNavParams = array('nPageSize' => CAdminResult::GetNavSize($sTableID));

$rsData = CLQuestion::GetList(array($by=>$order), $arFilter, true, $arNavParams);
$rsData = new CAdminResult($rsData, $sTableID);

// navigation string setup
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("LEARNING_QUESTION")));

// list header
$lAdmin->AddHeaders(array(
	array("id"=>"ID", "content"=>"ID", "sort"=>"id", "default"=>true),
	array("id"=>"ACTIVE", "content"=>GetMessage('LEARNING_COURSE_ADM_ACT'),"sort"=>"active", "default"=>true),
	array("id"=>"TIMESTAMP_X","content"=>GetMessage('LEARNING_COURSE_ADM_DATECH'), "sort"=>"timestamp_x", "default"=>true),
	array("id"=>"NAME", "content"=>GetMessage('LEARNING_NAME'),	"sort"=>"name", "default"=>true),
	array("id"=>"SORT", "content"=>GetMessage('LEARNING_COURSE_ADM_SORT'),"sort"=>"sort", "default"=>true),
	array("id"=>"SELF", "content"=>GetMessage('LEARNING_QUESTION_ADM_SELF'),"sort"=>"self", "default"=>true),
	array("id"=>"CORRECT_REQUIRED", "content"=>GetMessage('LEARNING_QUESTION_ADM_REQUIRED'),"sort"=>"correct_required", "default"=>true),
	array("id"=>"QUESTION_TYPE", "content"=>GetMessage('LEARNING_QUESTION_ADM_TYPE'),"sort"=>"type", "default"=>true),
	array("id"=>"POINT", "content"=>GetMessage('LEARNING_QUESTION_ADM_POINT'),"sort"=>"point", "default"=>true),
	array("id"=>"ANSWERS_STATS", "content"=>GetMessage('LEARNING_QUESTION_ADM_STATS'), "default"=>true),
));

$arQuestions = array();
$arQuestionsIds = array();
while($arRes = $rsData->Fetch())
{
	$arQuestionsIds[] = (int) $arRes['ID'];
	$arQuestions[] = $arRes;
}

$arMultiStats = CLAnswer::getMultiStats($arQuestionsIds);

// building list
foreach ($arQuestions as $arRes)
{
	extract($arRes, EXTR_PREFIX_ALL , 'f');

	$row =& $lAdmin->AddRow($f_ID, $arRes);
	$arStat = $arMultiStats[$f_ID];

	$row->AddCheckField("SELF");
	$row->AddCheckField("ACTIVE");
	$row->AddCheckField("CORRECT_REQUIRED");
	$row->AddInputField("NAME",Array("size"=>"35"));
	$row->AddInputField("SORT", Array("size"=>"3"));
	$row->AddInputField("POINT", Array("size"=>"3"));

	$row->AddViewField("QUESTION_TYPE",
		'<div title="' . GetMessage("LEARNING_QUESTION_TYPE_" . $f_QUESTION_TYPE)
		. '" class="learning-question-' . strtolower($f_QUESTION_TYPE) . '"></div>');

	$index = '-';

	if ($arStat["ALL_CNT"] > 0.1)
	{
		$index = 100 * ($arStat["CORRECT_CNT"] / $arStat["ALL_CNT"]);
		$index = round ($index, 1);
		$index = sprintf("%03.1f", $index) . '%';
	}

	$row->AddViewField("ANSWERS_STATS",
		$index
		. ' (<a href="learn_test_result_admin.php?lang=' . LANG
		. '&set_filter=Y&filter_correct=Y&filter_answered=Y">' . $arStat["CORRECT_CNT"]
		. '</a> / <a href="learn_test_result_admin.php?lang=' . LANG . '">'
		. $arStat["ALL_CNT"] . '</a>)');

	$arActions = Array();

	$editUrl = "learn_question_edit.php?lang=".LANG.'&LESSON_PATH='.$uriLessonPath
				."&ID=".$f_ID.GetFilterParams("filter_", false).$str_from;

	$row->AddViewField("NAME", '<a href="'.htmlspecialcharsbx($editUrl).'">'.htmlspecialcharsbx($f_NAME).'</a>');

	$arActions[] = array(
		"ICON"    => "edit",
		"DEFAULT" => "Y",
		"TEXT"    => GetMessage("MAIN_ADMIN_MENU_EDIT"),
		"ACTION"  => $lAdmin->ActionRedirect($editUrl)
	);

	/*
	$arActions[] = array(
		"ICON"=>"copy",
		"TEXT"=>GetMessage("MAIN_ADMIN_ADD_COPY"),
		"ACTION"=>$lAdmin->ActionRedirect("learn_course_edit.php?COPY_ID=".$f_ID));
	*/

	$arActions[] = array("SEPARATOR"=>true);

	$arActions[] = array(
		"ICON"   => "delete",
		"TEXT"   => GetMessage("MAIN_ADMIN_MENU_DELETE"),
		"ACTION" => "if(confirm('" . GetMessageJS('LEARNING_CONFIRM_DEL_MESSAGE') . "')) "
			. $lAdmin->ActionDoGroup($f_ID, "delete", 'LESSON_PATH=' . $uriLessonPath));

	$row->AddActions($arActions);
}

// list footer
$lAdmin->AddFooter(
	array(
		array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$rsData->SelectedRowsCount()),
		array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"),
	)
);

// group actions buttons
$lAdmin->AddGroupActionTable(Array(
	"self"=>GetMessage("LEARNING_ACTION_SELF"),
	"deself"=>GetMessage("LEARNING_ACTION_DESELF"),
	"activate"=>GetMessage("MAIN_ADMIN_LIST_ACTIVATE"),
	"deactivate"=>GetMessage("MAIN_ADMIN_LIST_DEACTIVATE"),
	"required"=>GetMessage("MAIN_ADMIN_LIST_REQUIRED"),
	"derequired"=>GetMessage("MAIN_ADMIN_LIST_NOT_REQUIRED"),
	"delete"=>GetMessage("MAIN_ADMIN_LIST_DELETE"),
	)
);

$arContextPopup = Array(
	Array(
		"TEXT" => GetMessage('LEARNING_SINGLE_CHOICE'),
		//"ICON" => "learning-question-s",
		"LINK" => "learn_question_edit.php?lang="
			. LANG
			. '&LESSON_PATH=' . $uriLessonPath
			. "&QUESTION_TYPE=S" . GetFilterParams("filter_", false)
			. $str_from
		//"window.location='learn_question_edit.php?lang=".LANG."&COURSE_ID=".$COURSE_ID."QUESTION_TYPE=S".GetFilterParams("filter_", false)."'",

	),
	Array(
		"TEXT" => GetMessage('LEARNING_MULTIPLE_CHOICE'),
		//"ICON" => "learning-question-m",
		"LINK" =>
		"learn_question_edit.php?lang="
			. LANG
			. '&LESSON_PATH=' . $uriLessonPath
			. "&QUESTION_TYPE=M"
			. GetFilterParams("filter_", false)
			. $str_from

		//"window.location='learn_question_edit.php?lang=".LANG."&COURSE_ID=".$COURSE_ID."QUESTION_TYPE=M".GetFilterParams("filter_", false)."'",
	),
	Array(
		"TEXT" => GetMessage('LEARNING_SORTING'),
		//"ICON" => "learning-question-s",
		"LINK" => "learn_question_edit.php?lang=" . LANG
			. '&LESSON_PATH=' . $uriLessonPath
			. "&QUESTION_TYPE=R"
			. GetFilterParams("filter_", false)
			. $str_from
		//"window.location='learn_question_edit.php?lang=".LANG."&COURSE_ID=".$COURSE_ID."QUESTION_TYPE=S".GetFilterParams("filter_", false)."'",

	),
	Array(
		"TEXT" => GetMessage('LEARNING_TEXT_ANSWER'),
		//"ICON" => "learning-question-m",
		"LINK" =>
		"learn_question_edit.php?lang=" . LANG
			. '&LESSON_PATH=' . $uriLessonPath
			. "&QUESTION_TYPE=T"
			. GetFilterParams("filter_", false)
			. $str_from

		//"window.location='learn_question_edit.php?lang=".LANG."&COURSE_ID=".$COURSE_ID."QUESTION_TYPE=M".GetFilterParams("filter_", false)."'",
	),
	);


$aContext = array(
	array(
		"ICON" => "btn_new",
		"TEXT"=>GetMessage("LEARNING_ADD"),
		"TITLE"=>GetMessage("LEARNING_ADD_ALT"),
		"MENU" => $arContextPopup
	),
);


$lAdmin->AddAdminContextMenu($aContext);



// list mode check (if AJAX then terminate the script)
$lAdmin->CheckListMode();

$APPLICATION->SetTitle($arLesson['NAME'] . ': ' . GetMessage('LEARNING_QUESTION'));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");

$filter = new CAdminFilter(
	$sTableID . "_filter",
	array(
		GetMessage("LEARNING_NAME"),
		GetMessage("LEARNING_F_SELF"),
		GetMessage("LEARNING_F_ACTIVE2"),
		GetMessage("LEARNING_F_CORRECT_REQUIRED"),
	)
);

?>
<form method="GET" action="<?echo $APPLICATION->GetCurPage()?>" name="find_form" onsubmit="return this.set_filter.onclick();">
	<input type="hidden" name="LESSON_PATH" value="<?php echo htmlspecialcharsbx(urldecode($uriLessonPath)); ?>">
<?$filter->Begin();?>

	<tr>
		<td><b><?echo GetMessage("LEARNING_NAME")?>:</b></td>
		<td>
			<input type="text" name="filter_title" size="50" value="<?echo htmlspecialcharsex($filter_title)?>" size="30">&nbsp;<?=ShowFilterLogicHelp()?>
		</td>
	</tr>


	<tr>
		<td><?echo GetMessage("LEARNING_F_SELF")?>:</td>
		<td>
			<select name="filter_self">
				<option value=""><?=htmlspecialcharsex(GetMessage('LEARNING_ALL2'))?></option>
				<option value="Y"<?if($filter_self=="Y")echo " selected"?>><?=htmlspecialcharsex(GetMessage("LEARNING_YES"))?></option>
				<option value="N"<?if($filter_self=="N")echo " selected"?>><?=htmlspecialcharsex(GetMessage("LEARNING_NO"))?></option>
			</select>
		</td>
	</tr>

	<tr>
		<td><?echo GetMessage("LEARNING_F_ACTIVE")?>:</td>
		<td>
			<select name="filter_active">
				<option value=""><?=htmlspecialcharsex(GetMessage('LEARNING_ALL'))?></option>
				<option value="Y"<?if($filter_active=="Y")echo " selected"?>><?=htmlspecialcharsex(GetMessage("LEARNING_YES"))?></option>
				<option value="N"<?if($filter_active=="N")echo " selected"?>><?=htmlspecialcharsex(GetMessage("LEARNING_NO"))?></option>
			</select>
		</td>
	</tr>

	<tr>
		<td><?echo GetMessage("LEARNING_F_CORRECT_REQUIRED")?>:</td>
		<td>
			<select name="filter_required">
				<option value=""><?=htmlspecialcharsex(GetMessage('LEARNING_ALL'))?></option>
				<option value="Y"<?if($filter_required=="Y")echo " selected"?>><?=htmlspecialcharsex(GetMessage("LEARNING_YES"))?></option>
				<option value="N"<?if($filter_required=="N")echo " selected"?>><?=htmlspecialcharsex(GetMessage("LEARNING_NO"))?></option>
			</select>
		</td>
	</tr>

<?
$filter->Buttons(array(
	"table_id" => $sTableID,
	"url"      => "learn_question_admin.php?lang=" . LANG . "&LESSON_PATH=" . $uriLessonPath,
	"form"     => "find_form"));
$filter->End();
?>
</form>

<?$lAdmin->DisplayList();?>

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>