From 8ef47e9292bbc42e450344350c0d47b238ee2374 Mon Sep 17 00:00:00 2001 From: Zongjun Lan Date: Tue, 12 Apr 2022 10:58:35 +0800 Subject: [PATCH] * fix bug *18722 --- module/product/model.php | 43 +++++++++++++++++++++++++++++++++++++++- module/program/model.php | 7 +++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/module/product/model.php b/module/product/model.php index a45425cd51..daa261a65b 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -1801,7 +1801,11 @@ class productModel extends model ->andWhere('status')->eq('normal') ->fetchGroup('product', 'id'); - return array('programList' => $programList, 'productList' => $productList, 'planList' => $planList, 'projectList' => $projectList, 'executionList' => $executionList, 'projectProduct' => $projectProduct, 'projectLatestExecutions' => $projectLatestExecutions, 'hourList' => $hourList, 'releaseList' => $releaseList); + /* Convert predefined HTML entities to characters. */ + $statsData = array('programList' => $programList, 'productList' => $productList, 'planList' => $planList, 'projectList' => $projectList, 'executionList' => $executionList, 'projectProduct' => $projectProduct, 'projectLatestExecutions' => $projectLatestExecutions, 'hourList' => $hourList, 'releaseList' => $releaseList); + $statsData = $this->covertHtmlSpecialChars($statsData); + + return $statsData; } /** @@ -2256,4 +2260,41 @@ class productModel extends model $this->lang->product->branch = sprintf($this->lang->product->branch, $this->lang->product->branchName[$product->type]); } } + + /** + * Convert predefined HTML entities to characters + * + * @param array $statsData + * @return array + */ + public function covertHtmlSpecialChars($statsData) + { + if(empty($statsData)) return array(); + + foreach($statsData as $key => $data) + { + if($key == 'productList' || $key == 'projectList') + { + !empty($data) && array_map(function($item) + { + return $item->name = htmlspecialchars_decode($item->name, ENT_QUOTES); + }, + $data); + } + + if($key == 'planList') + { + foreach($data as $productID => $plan) + { + !empty($plan) && array_map(function($planItem) + { + return $planItem->title = htmlspecialchars_decode($planItem->title, ENT_QUOTES); + }, + $plan); + } + } + } + + return $statsData; + } } diff --git a/module/program/model.php b/module/program/model.php index f7f4f5bb8b..6c8f7ef137 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -247,6 +247,7 @@ class programModel extends model return $planVal->title = htmlspecialchars_decode($planVal->title, ENT_QUOTES); }, $product->plans); + $product->name = htmlspecialchars_decode($product->name, ENT_QUOTES); $product->releases = zget($releases, $product->id, array()); $projects = zget($projectGroup, $product->id, array()); @@ -265,6 +266,9 @@ class programModel extends model $project->execution = $execution; $project->hours['progress'] = zget($projectHours, $project->id, array()); + + /* Convert predefined HTML entities to characters. */ + $project->name = htmlspecialchars_decode($project->name, ENT_QUOTES); $product->projects[$status][] = $project; } } @@ -1368,6 +1372,9 @@ class programModel extends model $project->leftTasks = isset($leftTasks[$project->id]) ? $leftTasks[$project->id]->tasks : '—'; $project->teamMembers = isset($teamMembers[$project->id]) ? array_keys($teamMembers[$project->id]) : array(); + /* Convert predefined HTML entities to characters. */ + $project->name = htmlspecialchars_decode($project->name, ENT_QUOTES); + $stats[$key] = $project; } return $stats;