FOSSology  4.4.0
Open Source License Compliance by Open Source Software
SysConfigDao.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © Soham Banerjee <sohambanerjee4abc@hotmail.com>
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
8 namespace Fossology\Lib\Dao;
9 
11 use Monolog\Logger;
12 
13 
15 {
16  const TYPE_MAP = array(
17  '1' => "int",
18  '2' => "text",
19  '3' => "textarea",
20  '4' => "password",
21  '5' => "dropdown",
22  '6' => "boolean"
23  );
25  private $dbManager;
27  private $logger;
28 
29  function __construct(DbManager $dbManager, Logger $logger)
30  {
31  $this->dbManager = $dbManager;
32  $this->logger = $logger;
33  }
34 
38  function getConfigData()
39  {
40  $sql = "select * from sysconfig order by group_name, group_order";
41  return $this->dbManager->getRows($sql);
42  }
43 
47  function getBannerData()
48  {
49  return $this->dbManager->getSingleRow("SELECT conf_value FROM sysconfig
50  WHERE variablename = 'BannerMsg'")["conf_value"];
51  }
52 
58  public function getCustomiseData($data)
59  {
60  $finalVal = [];
61  foreach ($data as $row) {
62  $type = self::TYPE_MAP[$row['vartype']];
63  $finalVal[] = array(
64  "key" => $row['variablename'],
65  "value" => $row['conf_value'],
66  "type" => $type,
67  "label" => $row['ui_label'],
68  "group_name" => $row['group_name'],
69  "group_order" => intval($row['group_order']),
70  "option_value" => $row["option_value"]
71  );
72  }
73  return $finalVal;
74  }
75 
83  public function UpdateConfigData($data)
84  {
85  $key = strval($data['key']);
86  $value = strval($data['value']);
87 
88  $sysconfigData = $this->getConfigData();
89  $oldarray = [];
90  foreach ($sysconfigData as $item) {
91  $oldarray[$item['variablename']] = $item['conf_value'];
92  }
93 
94  if ($value != $oldarray[$key]) {
95  /* get validation_function row from sysconfig table */
96  $sys_array = $this->dbManager->getSingleRow("SELECT validation_function,
97  ui_label FROM sysconfig WHERE variablename = $1", [$key],__METHOD__.'.getVarNameData');
98  $validation_function = $sys_array['validation_function'];
99  $ui_label = $sys_array['ui_label'];
100  $is_empty = empty($validation_function);
101  /*
102  * 1. the validation_function is empty
103  * 2. the validation_function is not empty, and after checking, the value
104  * is valid update sysconfig table
105  */
106  if ($is_empty || (! $is_empty && (1 == $validation_function($value)))) {
107  $this->dbManager->getSingleRow(
108  "UPDATE sysconfig SET conf_value=$1 WHERE variablename=$2",
109  [$value, $key], __METHOD__ . '.setVarNameData');
110  return [true, $key];
111  } else if (! $is_empty && (0 == $validation_function($value))) {
112  /*
113  * the validation_function is not empty, but after checking, the value
114  * is invalid
115  */
116  $warning_msg = "Error: Unable to update $key.";
117  if (! strcmp($validation_function, 'check_boolean')) {
118  $warning_msg = _(
119  "Error: You set $ui_label to $value. Valid values are 'true' and 'false'.");
120  } else if (strpos($validation_function, "url")) {
121  $warning_msg = _(
122  "Error: $ui_label $value, is not a reachable URL.");
123  }
124  return [false, $warning_msg];
125  }
126  }
127  return [true, $key];
128  }
129 }
getBannerData()
Fetch banner message.
getConfigData()
Fetch configuration rows.
UpdateConfigData($data)
Update Configuration Data.
fo_dbManager * dbManager
fo_dbManager object
Definition: process.c:16