aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/error_report.php
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/error_report.php
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/error_report.php')
-rw-r--r--srcs/phpmyadmin/error_report.php140
1 files changed, 140 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/error_report.php b/srcs/phpmyadmin/error_report.php
new file mode 100644
index 0000000..9882569
--- /dev/null
+++ b/srcs/phpmyadmin/error_report.php
@@ -0,0 +1,140 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Handle error report submission
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+use PhpMyAdmin\ErrorReport;
+use PhpMyAdmin\Message;
+use PhpMyAdmin\Response;
+use PhpMyAdmin\UserPreferences;
+use PhpMyAdmin\Utils\HttpRequest;
+
+if (! defined('ROOT_PATH')) {
+ define('ROOT_PATH', __DIR__ . DIRECTORY_SEPARATOR);
+}
+
+require_once ROOT_PATH . 'libraries/common.inc.php';
+
+if (! isset($_POST['exception_type'])
+ || ! in_array($_POST['exception_type'], ['js', 'php'])
+) {
+ die('Oops, something went wrong!!');
+}
+
+$response = Response::getInstance();
+
+/** @var ErrorReport $errorReport */
+$errorReport = $containerBuilder->get('error_report');
+
+if (isset($_POST['send_error_report'])
+ && ($_POST['send_error_report'] == true
+ || $_POST['send_error_report'] == '1')
+) {
+ if ($_POST['exception_type'] == 'php') {
+ /**
+ * Prevent infinite error submission.
+ * Happens in case error submissions fails.
+ * If reporting is done in some time interval,
+ * just clear them & clear json data too.
+ */
+ if (isset($_SESSION['prev_error_subm_time'])
+ && isset($_SESSION['error_subm_count'])
+ && $_SESSION['error_subm_count'] >= 3
+ && ($_SESSION['prev_error_subm_time'] - time()) <= 3000
+ ) {
+ $_SESSION['error_subm_count'] = 0;
+ $_SESSION['prev_errors'] = '';
+ $response->addJSON('stopErrorReportLoop', '1');
+ } else {
+ $_SESSION['prev_error_subm_time'] = time();
+ $_SESSION['error_subm_count'] = (
+ isset($_SESSION['error_subm_count'])
+ ? ($_SESSION['error_subm_count'] + 1)
+ : 0
+ );
+ }
+ }
+ $reportData = $errorReport->getData($_POST['exception_type']);
+ // report if and only if there were 'actual' errors.
+ if (count($reportData) > 0) {
+ $server_response = $errorReport->send($reportData);
+ if (! is_string($server_response)) {
+ $success = false;
+ } else {
+ $decoded_response = json_decode($server_response, true);
+ $success = ! empty($decoded_response) ?
+ $decoded_response["success"] : false;
+ }
+
+ /* Message to show to the user */
+ if ($success) {
+ if ((isset($_POST['automatic'])
+ && $_POST['automatic'] === "true")
+ || $GLOBALS['cfg']['SendErrorReports'] == 'always'
+ ) {
+ $msg = __(
+ 'An error has been detected and an error report has been '
+ . 'automatically submitted based on your settings.'
+ );
+ } else {
+ $msg = __('Thank you for submitting this report.');
+ }
+ } else {
+ $msg = __(
+ 'An error has been detected and an error report has been '
+ . 'generated but failed to be sent.'
+ )
+ . ' '
+ . __(
+ 'If you experience any '
+ . 'problems please submit a bug report manually.'
+ );
+ }
+ $msg .= ' ' . __('You may want to refresh the page.');
+
+ /* Create message object */
+ if ($success) {
+ $msg = Message::notice($msg);
+ } else {
+ $msg = Message::error($msg);
+ }
+
+ /* Add message to response */
+ if ($response->isAjax()) {
+ if ($_POST['exception_type'] == 'js') {
+ $response->addJSON('message', $msg);
+ } else {
+ $response->addJSON('errSubmitMsg', $msg);
+ }
+ } elseif ($_POST['exception_type'] == 'php') {
+ $jsCode = 'Functions.ajaxShowMessage("<div class=\"error\">'
+ . $msg
+ . '</div>", false);';
+ $response->getFooter()->getScripts()->addCode($jsCode);
+ }
+
+ if ($_POST['exception_type'] == 'php') {
+ // clear previous errors & save new ones.
+ $GLOBALS['error_handler']->savePreviousErrors();
+ }
+
+ /* Persist always send settings */
+ if (isset($_POST['always_send'])
+ && $_POST['always_send'] === "true"
+ ) {
+ $userPreferences = new UserPreferences();
+ $userPreferences->persistOption("SendErrorReports", "always", "ask");
+ }
+ }
+} elseif (! empty($_POST['get_settings'])) {
+ $response->addJSON('report_setting', $GLOBALS['cfg']['SendErrorReports']);
+} elseif ($_POST['exception_type'] == 'js') {
+ $response->addHTML($errorReport->getForm());
+} else {
+ // clear previous errors & save new ones.
+ $GLOBALS['error_handler']->savePreviousErrors();
+}