From cd89614a754c21ffd3269c836bc9fb899cdbd00d Mon Sep 17 00:00:00 2001 From: Carsten Rose <carsten.rose@math.uzh.ch> Date: Fri, 13 May 2016 14:14:49 +0200 Subject: [PATCH] Report.php: changed various comparison from '==' to '==='. Use of Support::doAttribute() instead of manual concatenating. Use of empty() instead of ==''. --- extension/qfq/qfq/report/Report.php | 34 +++++++++++++++++++---------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/extension/qfq/qfq/report/Report.php b/extension/qfq/qfq/report/Report.php index b65aa7fe1..86261f6de 100644 --- a/extension/qfq/qfq/report/Report.php +++ b/extension/qfq/qfq/report/Report.php @@ -175,7 +175,7 @@ class Report { $key = strtolower(trim($arr[0])); // comment ? - if (substr($key, 0, 1) == "#") return; + if (substr($key, 0, 1) === "#") return; // select ... $value = trim($arr[1]); @@ -212,7 +212,7 @@ class Report { // per sql command //pro sql cmd wir der Indexarray abgefüllt. Dieser wird später verwendet um auf den $frArray zuzugreifen //if(preg_match("/^sql/i", $frCmd) == 1){ - if ($frCmd == "sql" || $frCmd == "form") { + if ($frCmd === "sql" || $frCmd === "form") { // Remember max level $this->levelCount = max(substr_count($level, '.') + 1, $this->levelCount); // $indexArray[10][50][5] @@ -288,7 +288,9 @@ class Report { for ($i = 0; $i < $this->levelCount; $i++) { $sortArg = $sortArg . $i . " ASC, "; } + $sortArg = substr($sortArg, 0, strlen($sortArg) - 2); + return $sortArg; } @@ -526,17 +528,18 @@ class Report { $flagControl = false; $flagOutput = true; - if (substr($columnName, 0, 1) == "_") { + if ($columnName[0] === "_") { $flagControl = true; $columnName = substr($columnName, 1); } + //TODO: reserved names,not starting with '_' will be still accepted - stop this! switch ($columnName) { case "link": $link = new Link($this->fr_error, $this->sip); $content .= $link->renderLink($columnValue); -# unset $link; break; + case "exec": $content .= $this->myExec($columnValue); break; @@ -550,7 +553,6 @@ class Report { case "Pagen": case "Pages": $linkValue = $this->doFixColPosPage($columnName, $columnValue); - $link = new Link($this->fr_error, $this->sip); $content .= $link->renderLink($linkValue); break; @@ -563,10 +565,7 @@ class Report { case "pagei": case "pagen": case "pages": -#debug($columnValue); $linkValue = $this->doPage($columnName, $columnValue); -// debug($linkValue); - $link = new Link($this->fr_error, $this->sip); $content .= $link->renderLink($linkValue); break; @@ -597,14 +596,24 @@ class Report { break; $tmp = explode("|", $columnValue, 3); - if ($tmp[0] == "") break; - $content .= '<img src="' . $tmp[0] . '" alt="' . $tmp[1] . '">' . $tmp[2]; + + // Fake values for tmp[1], tmp[2] to suppress access errors. + $tmp[] = ''; + $tmp[] = ''; + + if (empty($tmp[0])) + break; + $attribute = Support::doAttribute('src', $tmp[0]); + $attribute .= Support::doAttribute('alt', $tmp[1]); + + $content .= '<img ' . $attribute . '>' . $tmp[2]; break; case "mailto": // "<email address>|[Real Name]" renders to (encrypted via JS): <a href="mailto://<email address>"><email address></a> OR <a href="mailto://<email address>">[Real Name]</a> $tmp = explode("|", $columnValue, 2); - if ($tmp[0] == "") break; + if (empty($tmp[0])) + break; $t1 = explode("@", $tmp[0], 2); $content .= "<script language=javascript><!--" . chr(10); @@ -623,6 +632,9 @@ class Report { case "sendmail": // 'Absender|Empfaenger, mehrere mit Komma getrennt|Betreff|Mailinhalt' $tmp = explode("|", $columnValue, 4); + if (count($tmp) < 4) { + throw new SyntaxReportException ("Too few parameter for sendmail: $columnValue", "", null, __FILE__, __LINE__, $this->fr_error); + } $mail['receiver'] = $tmp[0]; $mail['sender'] = $tmp[1]; -- GitLab