CanDoOperation('view_other_settings'))
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$isAdmin = $USER->CanDoOperation('edit_php');
IncludeModuleLangFile(__FILE__);
$sTableID = "tbl_sql";
$message = null;
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
$lAdmin = new CAdminList($sTableID);
if($_SERVER["REQUEST_METHOD"] == "POST" && !empty($query) && $isAdmin && check_bitrix_sessid())
{
$dbr = null;
$first = microtime(true);
$arErrors = array();
$arQuery = $DB->ParseSQLBatch(str_replace("\r", "", $query));
$db = Application::getConnection();
$db->stopTracker();
foreach($arQuery as $i => $sql)
{
try
{
$dbr = Application::getConnection()->query($sql);
}
catch (SqlQueryException $e)
{
$arErrors[$i] = $e->getMessage();
}
}
if(empty($arErrors))
{
if (isset($_POST['execute_and_download']) && $_POST['execute_and_download'] === 'Y')
{
header('Content-Type: text/csv');
header('Content-Description: SQL result');
header('Content-Disposition: attachment; filename=result.csv');
set_time_limit(300);
$fileHandler = new SplFileObject('php://output', 'w');
$firstRow = $dbr->fetchRaw();
if (empty($firstRow))
{
$fileHandler->fwrite('empty');
}
else
{
$fileHandler->fputcsv(array_keys($firstRow));
$fileHandler->fputcsv($firstRow);
foreach ($dbr as $row)
{
$fileHandler->fputcsv($row);
}
}
die();
}
else
{
$exec_time = round(microtime(true)-$first, 5);
$rsData = new CAdminResult($dbr, $sTableID);
$message = new CAdminMessage(array(
"MESSAGE" => GetMessage("SQL_SUCCESS_EXECUTE"),
"DETAILS" => GetMessage("SQL_EXEC_TIME")."".$exec_time." ".GetMessage("SQL_SEC"),
"TYPE" => "OK",
"HTML" => true,
));
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->bPostNavigation = true;
$rsData->NavStart();
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("SQL_PAGES")));
$intNumFields = $rsData->FieldsCount();
$i = 0;
$header = Array();
$arFieldName = Array();
while ($i<$intNumFields)
{
$fieldName = htmlspecialcharsbx($rsData->FieldName($i));
$header[] =
array("id"=>$fieldName, "content"=>$fieldName, "sort"=>$fieldName, "default"=>true, "align"=>"left", "valign" => "top");
$arFieldName[] = $fieldName;
$i++;
}
$lAdmin->AddHeaders($header);
$j = 0;
while ($db_res = $rsData->Fetch())
{
$row = $lAdmin->AddRow("ID", $db_res);
foreach ($arFieldName as $field_name)
{
if ($db_res[$field_name] !== null)
{
$value = TxtToHtml($db_res[$field_name]);
}
else
{
$value = 'NULL';
}
$row->AddViewField($field_name, $value);
}
}
}
}
else
{
foreach($arErrors as $i => $strError)
{
$lAdmin->AddFilterError(GetMessage("SQL_QUERY_ERROR_1")."
".$strError);
}
}
}
if($message != null)
{
$lAdmin->BeginPrologContent();
echo $message->Show();
$lAdmin->EndPrologContent();
}
$lAdmin->BeginEpilogContent();
?>
$lAdmin->EndEpilogContent();
$lAdmin->CheckListMode();
$APPLICATION->SetTitle(GetMessage("SQL_PAGE_TITLE"));
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");
?>
$aTabs = array(
array("DIV"=>"tab1", "TAB"=>GetMessage("SQL_TAB"), "TITLE"=>GetMessage("SQL_TAB_TITLE")),
);
$editTab = new CAdminTabControl("editTab", $aTabs);
?>