/** * * @param array $params */ public function __construct($params, $objectModelClass = '') { parent::__construct($params, $objectModelClass); }
/** * * @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)))); }
/** * * @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)))); }