class Database {
var $handle;
- private $order = array(
- 'ia' => 'ORDER BY entries.id',
- 'id' => 'ORDER BY entries.id DESC',
- 'ta' => 'ORDER BY lower(entries.title)',
- 'td' => 'ORDER BY lower(entries.title) DESC',
- 'default' => 'ORDER BY entries.id'
+ private $order = array (
+ 'ia' => 'ORDER BY entries.id',
+ 'id' => 'ORDER BY entries.id DESC',
+ 'ta' => 'ORDER BY lower(entries.title)',
+ 'td' => 'ORDER BY lower(entries.title) DESC',
+ 'default' => 'ORDER BY entries.id'
);
function __construct()
{
switch (STORAGE) {
case 'sqlite':
+ // Check if /db is writeable
+ if ( !is_writable(STORAGE_SQLITE) || !is_writable(dirname(STORAGE_SQLITE))) {
+ die('An error occured: "db" directory must be writeable for your web server user!');
+ }
$db_path = 'sqlite:' . STORAGE_SQLITE;
$this->handle = new PDO($db_path);
break;
case 'mysql':
- $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB;
- $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD);
+ if (MYSQL_USE_UTF8MB4) {
+ $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB . ';charset=utf8mb4';
+ $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD, array(
+ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
+ ));
+ } else {
+ $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB;
+ $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD);
+ }
break;
case 'postgres':
$db_path = 'pgsql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB;
$query = $this->executeQuery($sql, array());
}
- public function install($login, $password)
+ public function install($login, $password, $email = '')
{
$sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)';
- $params = array($login, $password, $login, ' ');
+ $params = array($login, $password, $login, $email);
$query = $this->executeQuery($sql, $params);
$sequence = '';
public function login($username, $password, $isauthenticated = FALSE)
{
if ($isauthenticated) {
- $sql = "SELECT * FROM users WHERE username=?";
- $query = $this->executeQuery($sql, array($username));
+ $sql = "SELECT * FROM users WHERE username=?";
+ $query = $this->executeQuery($sql, array($username));
} else {
- $sql = "SELECT * FROM users WHERE username=? AND password=?";
- $query = $this->executeQuery($sql, array($username, $password));
+ $sql = "SELECT * FROM users WHERE username=? AND password=?";
+ $query = $this->executeQuery($sql, array($username, $password));
}
$login = $query->fetchAll();
$sql_limit = "LIMIT ".$limit." OFFSET 0";
}
- $sql = "SELECT * FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE 'Untitled - Import%' AND user_id=? ORDER BY id " . $sql_limit;
+ $sql = "SELECT * FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE '%Import%' AND user_id=? ORDER BY id " . $sql_limit;
$query = $this->executeQuery($sql, array($user_id));
$entries = $query->fetchAll();
public function retrieveUnfetchedEntriesCount($user_id)
{
- $sql = "SELECT count(*) FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE 'Untitled - Import%' AND user_id=?";
+ $sql = "SELECT count(*) FROM entries WHERE (content = '' OR content IS NULL) AND title LIKE '%Import%' AND user_id=?";
$query = $this->executeQuery($sql, array($user_id));
list($count) = $query->fetch();
return $count;
}
+ public function getRandomId($row, $user_id) {
+ $sql = "SELECT id FROM entries WHERE user_id=? LIMIT 1 OFFSET ? ";
+ $params = array($user_id, $row);
+ $query = $this->executeQuery($sql, $params);
+
+ return $query->fetchAll();
+ }
+
public function updateContent($id, $content, $user_id)
{