= '.$permission; } //Build WHERE clause $whereclause = ''; if ($clause != ''){ $whereclause = 'WHERE '.substr($clause, 4); } // GET SORT INDICATOR $sort_indicator = $criterias['sort'] ?? ''; switch ($sort_indicator){ case 1: $sort = ' r.name ASC '; break; case 2: $sort = ' r.name DESC '; break; case 3: $sort = ' r.created ASC '; break; case 4: $sort = ' r.created DESC '; break; default: $sort = ' r.rowID '; break; } if (isset($criterias['totals']) && $criterias['totals'] ==''){ //Request for total rows $sql = 'SELECT count(*) as count FROM user_roles r '.$whereclause; } elseif (isset($criterias['all']) && $criterias['all'] ==''){ //Return all records (no paging) $sql = 'SELECT r.*, (SELECT COUNT(*) FROM role_access_permissions WHERE role_id = r.rowID) as permission_count FROM user_roles r '.$whereclause.' ORDER BY '.$sort; } else { //SQL with permission count $sql = 'SELECT r.*, (SELECT COUNT(*) FROM role_access_permissions WHERE role_id = r.rowID) as permission_count FROM user_roles r '.$whereclause.' ORDER BY '.$sort.' LIMIT :page,:num_rows'; } $stmt = $pdo->prepare($sql); //------------------------------------------ //Bind to query //------------------------------------------ if (!empty($criterias)){ foreach ($criterias as $key => $value){ $key_condition = ':'.$key; if (str_contains($sql, $key_condition)){ if ($key == 'search'){ $search_value = '%'.$value.'%'; $stmt->bindValue($key, $search_value, PDO::PARAM_STR); } elseif ($key == 'p'){ //Do nothing (bug) } else { $stmt->bindValue($key, $value, PDO::PARAM_STR); } } } } //------------------------------------------ // Debuglog //------------------------------------------ if (debug){ $message = $date.';'.$sql.';'.$username; debuglog($message); } //------------------------------------------ //Add paging details //------------------------------------------ $page_rows = $page_rows_equipment ?? 20; if(isset($criterias['totals']) && $criterias['totals']==''){ $stmt->execute(); $messages = $stmt->fetch(); $messages = $messages[0]; } elseif(isset($criterias['all']) && $criterias['all']==''){ //Return all records (no paging) $stmt->execute(); $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); } else { $current_page = isset($criterias['p']) && is_numeric($criterias['p']) ? (int)$criterias['p'] : 1; $stmt->bindValue('page', ($current_page - 1) * $page_rows, PDO::PARAM_INT); $stmt->bindValue('num_rows', $page_rows, PDO::PARAM_INT); //Execute Query $stmt->execute(); //Get results $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); } //------------------------------------------ //JSON_EnCODE //------------------------------------------ $messages = json_encode($messages, JSON_UNESCAPED_UNICODE); //------------------------------------------ //Send results //------------------------------------------ echo $messages; ?>