intval($request['draw']), "recordsTotal" => intval($recordsTotal), "recordsFiltered" => intval($recordsFiltered), "data" => self::data_output($columns2, $data) ); } /** * Connect to the database * * @param array $sql_details SQL server connection details array, with the * properties: * * host - host name * * db - database name * * user - user name * * pass - user password * @return resource Database connection handle */ static function sql_connect($sql_details) { try { $db = @new PDO( "mysql:host={$sql_details['host']};dbname={$sql_details['db']}", $sql_details['user'], $sql_details['pass'], array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) ); } catch (PDOException $e) { self::fatal( "An error occurred while connecting to the database. " . "The error reported by the server was: " . $e->getMessage() ); } return $db; } /** * Execute an SQL query on the database * * @param resource $db Database handler * @param array $bindings Array of PDO binding values from bind() to be * used for safely escaping strings. Note that this can be given as the * SQL query string if no bindings are required. * @param string $sql SQL query to execute. * @return array Result from the query (all rows) */ static function sql_exec($db, $bindings, $sql = null) { // Argument shifting if ($sql === null) { $sql = $bindings; } $stmt = $db->prepare($sql); //echo $sql; // Bind parameters if (is_array($bindings)) { for ($i = 0, $ien = count($bindings); $i < $ien; $i++) { $binding = $bindings[$i]; $stmt->bindValue($binding['key'], $binding['val'], $binding['type']); } } // Execute try { $stmt->execute(); } catch (PDOException $e) { self::fatal("An SQL error occurred: " . $e->getMessage()); } $result = $stmt->fetchAll(); return $result; } static function Ssql_exec($db, $bindings, $sql = null) { // Argument shifting if ($sql === null) { $sql = $bindings; } $stmt = $db->prepare($sql); // Bind parameters if (is_array($bindings)) { for ($i = 0, $ien = count($bindings); $i < $ien; $i++) { $binding = $bindings[$i]; $stmt->bindValue($binding['key'], $binding['val'], $binding['type']); } } // Execute try { $stmt->execute(); } catch (PDOException $e) { self::fatal("An SQL error occurred: " . $e->getMessage()); } $loop = '0'; while ($arr = $stmt->fetch(PDO::FETCH_ASSOC)) { $result[$loop]['id'] = $arr['id']; $result[$loop]['title'] = html_entity_decode($arr['title']); $result[$loop]['member'] = $arr['member']; $result[$loop]['tagsys'] = $arr['tagsys']; $date_time = strtotime($arr['date']); $result[$loop]['date'] = date(DATE_ISO8601, $date_time); $myupdate = $arr['now_time']; $result[$loop]['now_time'] = date(DATE_ISO8601, $myupdate); $loop = $loop + 1; } // Return all return $result; } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Internal methods */ /** * Throw a fatal error. * * This writes out an error message in a JSON string which DataTables will * see and show to the user in the browser. * * @param string $msg Message to send to the client */ static function fatal($msg) { echo json_encode(array( "error" => $msg )); exit(0); } /** * Create a PDO binding key which can be used for escaping variables safely * when executing a query with sql_exec() * * @param array &$a Array of bindings * @param * $val Value to bind * @param int $type PDO field type * @return string Bound key to be used in the SQL where this parameter * would be used. */ static function bind(&$a, $val, $type) { $key = ':binding_' . count($a); $a[] = array( 'key' => $key, 'val' => $val, 'type' => $type ); return $key; } /** * Pull a particular property from each assoc. array in a numeric array, * returning and array of the property values from each item. * * @param array $a Array to get data from * @param string $prop Property to read * @return array Array of property values */ static function pluck($a, $prop) { $out = array(); for ($i = 0, $len = count($a); $i < $len; $i++) { $out[] = $a[$i][$prop]; } return $out; } } ?>