FOSSology  4.4.0
Open Source License Compliance by Open Source Software
DataTablesUtility.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2014 Siemens AG
4  Author: J.Najjar
5 
6  SPDX-License-Identifier: GPL-2.0-only
7 */
8 
9 namespace Fossology\Lib\Util;
10 
11 use Monolog\Logger;
12 
14 {
18  private $logger;
19 
20  function __construct()
21  {
22  $this->logger = new Logger(self::class);
23  }
24 
30  public function getSortingParametersFromArray($inputArray, $columNamesInDatabase, $defaultSearch = array())
31  {
32  if (array_key_exists('iSortingCols', $inputArray)) {
33  if ($inputArray['iSortingCols'] > count($columNamesInDatabase)) {
34  $this->logger->warning(
35  "did have enough columNames for " . $inputArray['iSortingCols'] .
36  " sort columns.");
37  return null;
38  }
39  return $this->getSortingParametersFromArrayImpl($inputArray,
40  $columNamesInDatabase, $defaultSearch);
41  } else {
42  $this->logger->warning("did not find iSortingCols in inputArray");
43  return null;
44  }
45  }
46 
47 
54  private function getSortingParametersFromArrayImpl($inputArray, $columNamesInDatabase, $defaultSearch = array())
55  {
56  $orderArray = array();
57  $sortedCols = array();
58  for ($i = 0; $i < $inputArray['iSortingCols']; $i ++) {
59  $whichCol = 'iSortCol_' . $i;
60  $colNumber = $inputArray[$whichCol];
61  $sortedCols[] = intval($colNumber);
62 
63  $isSortable = $inputArray['bSortable_' . $i];
64  if ($isSortable !== "true") {
65  continue;
66  }
67  $name = $columNamesInDatabase[$colNumber];
68 
69  $whichDir = 'sSortDir_' . $i;
70  $order = $inputArray[$whichDir];
71  $orderArray[] = $name . " " . $order;
72  }
73 
74  foreach ($defaultSearch as $search) {
75  $colNumber = $search[0];
76  $order = $search[1];
77  if (in_array($colNumber, $sortedCols)) {
78  continue;
79  }
80  $isSortable = $inputArray['bSortable_' . $colNumber];
81  if ($isSortable !== "true") {
82  continue;
83  }
84 
85  $name = $columNamesInDatabase[$colNumber];
86  $orderArray[] = $name . " " . $order;
87  }
88  return $orderArray;
89  }
90 
91 
98  public function getSortingString($inputArray, $columNamesInDatabase, $defaultSearch = array())
99  {
100  $orderArray = $this->getSortingParametersFromArray($inputArray, $columNamesInDatabase, $defaultSearch);
101  return empty($orderArray) ? "" : "ORDER BY " . implode(", ", $orderArray);
102  }
103 }
getSortingString($inputArray, $columNamesInDatabase, $defaultSearch=array())
getSortingParametersFromArray($inputArray, $columNamesInDatabase, $defaultSearch=array())
getSortingParametersFromArrayImpl($inputArray, $columNamesInDatabase, $defaultSearch=array())