Esempio n. 1
0
 /**
  * 
  * @param array $params
  */
 public function __construct($params, $objectModelClass = '')
 {
     parent::__construct($params, $objectModelClass);
 }
Esempio n. 2
0
 /**
  * 
  * @param array $params
  * @return array
  */
 public static function getDatasForDatatable($params)
 {
     // Init vars
     $additionalTables = '';
     $conditions = '';
     $limitations = '';
     $sort = '';
     // Initializing connection
     $di = Di::getDefault();
     $dbconn = $di->get('db_centreon');
     // Getting selected field(s)
     $field_list = '';
     foreach (static::$datatableColumn as $field) {
         if (!is_array($field) && substr($field, 0, 11) !== '[SPECFIELD]') {
             $field_list .= $field . ',';
         }
     }
     foreach (static::$additionalColumn as $field) {
         $field_list .= $field . ',';
     }
     $field_list = trim($field_list, ',');
     // Getting table column
     $c = array_values(static::$researchIndex);
     if (!empty(static::$specificConditions)) {
         $conditions = "WHERE " . static::$specificConditions;
     }
     if (!empty(static::$aclConditions)) {
         if (empty($conditions)) {
             $conditions = "WHERE " . static::$aclConditions;
         } else {
             $conditions = "AND " . static::$aclConditions;
         }
     }
     if (!empty(static::$linkedTables)) {
         $additionalTables = ', ' . static::$linkedTables;
     }
     // Conditions (Recherche)
     foreach ($params as $paramName => $paramValue) {
         if (strpos($paramName, 'sSearch_') !== false) {
             if (!empty($paramValue) || $paramValue === "0") {
                 $colNumber = substr($paramName, strlen('sSearch_'));
                 if (substr($c[$colNumber], 0, 11) !== '[SPECFIELD]') {
                     $searchString = $c[$colNumber] . " like '%" . $dbconn->quote($paramValue) . "%' ";
                 } else {
                     $customSearchString = substr($c[$colNumber], 11);
                     $searchString = str_replace('::search_value::', '%' . $dbconn->quote($paramValue) . '%', $customSearchString);
                 }
                 if (empty($conditions)) {
                     $conditions = "WHERE " . $searchString;
                 } else {
                     $conditions .= "AND " . $searchString;
                 }
             }
         }
     }
     // Sort
     if (substr($sort, 0, 11) !== '[SPECFIELD]') {
         $sort = 'ORDER BY ' . $c[$params['iSortCol_0']] . ' ' . $params['sSortDir_0'];
     }
     // Processing the limit
     if ($params['iDisplayLength'] > 0) {
         $limitations = 'LIMIT ' . $params['iDisplayStart'] . ',' . $params['iDisplayLength'];
     }
     // Building the final request
     $finalRequest = "SELECT " . "SQL_CALC_FOUND_ROWS {$field_list} " . "FROM " . static::$tableName . "{$additionalTables} {$conditions} " . "{$sort} {$limitations}";
     $stmt = $dbconn->query($finalRequest);
     // Returning the result
     $resultSet = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $countTab = count($resultSet);
     $objectTab = array();
     for ($i = 0; $i < $countTab; $i++) {
         $objectTab[] = array(static::$objectName, static::$moduleName);
     }
     static::formatDatas($resultSet);
     return self::arrayValuesRecursive(\array_values(Datatable::removeUnwantedFields(static::$moduleName, static::$objectName, \array_map("\\Centreon\\Internal\\Datatable::castResult", $resultSet, $objectTab))));
 }
Esempio n. 3
0
 /**
  * 
  * @param array $params
  * @return array
  */
 public static function getDatasForDatatable($params)
 {
     // Init vars
     $additionalTables = '';
     $conditions = '';
     $limitations = '';
     $sort = '';
     // Initializing connection
     $di = Di::getDefault();
     $dbconn = $di->get('db_centreon');
     // Getting selected field(s)
     $field_list = '';
     foreach (static::$datatableColumn as $field) {
         if (!is_array($field) && substr($field, 0, 11) !== '[SPECFIELD]') {
             $field_list .= $field . ',';
         }
     }
     foreach (static::$additionalColumn as $field) {
         $field_list .= $field . ',';
     }
     $field_list = trim($field_list, ',');
     // Getting table column
     $c = array_values(static::$researchIndex);
     if (!empty(static::$specificConditions)) {
         $conditions = "WHERE " . static::$specificConditions;
     }
     if (!empty(static::$aclConditions)) {
         if (empty($conditions)) {
             $conditions = "WHERE " . static::$aclConditions;
         } else {
             $conditions = "AND " . static::$aclConditions;
         }
     }
     if (!empty(static::$linkedTables)) {
         $additionalTables = ', ' . static::$linkedTables;
     }
     // Conditions (Recherche)
     foreach ($params as $paramName => $paramValue) {
         if (strpos($paramName, 'sSearch_') !== false) {
             if (!empty($paramValue) || $paramValue === "0") {
                 $colNumber = substr($paramName, strlen('sSearch_'));
                 if (substr($c[$colNumber], 0, 11) !== '[SPECFIELD]') {
                     $searchString = $c[$colNumber] . " like '%" . $dbconn->quote($paramValue) . "%' ";
                 } else {
                     $customSearchString = substr($c[$colNumber], 11);
                     $searchString = str_replace('::search_value::', '%' . $dbconn->quote($paramValue) . '%', $customSearchString);
                 }
                 if (empty($conditions)) {
                     $conditions = "WHERE " . $searchString;
                 } else {
                     $conditions .= "AND " . $searchString;
                 }
             }
         }
     }
     // Sort
     if (substr($sort, 0, 11) !== '[SPECFIELD]') {
         $sort = 'ORDER BY ' . $c[$params['iSortCol_0']] . ' ' . $params['sSortDir_0'];
     }
     // Processing the limit
     if ($params['iDisplayLength'] > 0) {
         $limitations = 'LIMIT ' . $params['iDisplayStart'] . ',' . $params['iDisplayLength'];
     }
     // Building the final request
     $finalRequest = "SELECT " . "SQL_CALC_FOUND_ROWS {$field_list} " . "FROM " . static::$tableName . "{$additionalTables} {$conditions} " . "{$sort} {$limitations}";
     $stmt = $dbconn->query($finalRequest);
     // Returning the result
     $resultSet = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     // Get current moduleName
     $widgetNameList = array();
     foreach ($resultSet as $cWidget) {
         $widgetNameList[] = $cWidget['shortname'];
     }
     $path = rtrim(Di::getDefault()->get('config')->get('global', 'centreon_path'), '/');
     // Add file system repo
     $possibleWidgetDir = array($path . "/widgets/*Widget/", $path . "/modules/*Module/widgets/*Widget/");
     foreach ($possibleWidgetDir as $d) {
         $rawWidgetList = glob($d);
         foreach ($rawWidgetList as $widget) {
             if ($widget == "." || $widget == "..") {
                 continue;
             }
             if (file_exists(realpath($widget . '/install/config.json'))) {
                 $info = json_decode(file_get_contents($widget . '/install/config.json'), true);
                 if (!in_array($info['shortname'], $widgetNameList)) {
                     $resultSet[] = array('widget_model_id' => 0, 'name' => $info['name'], 'shortname' => $info['shortname'], 'description' => $info['description'], 'version' => $info['version'], 'author' => $info['author'], 'isactivated' => 0, 'isinstalled' => 0);
                 }
             }
         }
     }
     $countTab = count($resultSet);
     $objectTab = array();
     for ($i = 0; $i < $countTab; $i++) {
         $objectTab[] = array(static::$objectName, static::$moduleName);
     }
     static::formatDatas($resultSet);
     return self::arrayValuesRecursive(\array_values(Datatable::removeUnwantedFields(static::$moduleName, static::$objectName, \array_map("\\Centreon\\Internal\\Datatable::castResult", $resultSet, $objectTab))));
 }