1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-07-22 17:18:37 +00:00

création d'une classe store() pour gérer tout type de stockage : sqlite, file, mysql, etc.

This commit is contained in:
nicosomb 2013-04-19 15:46:04 +02:00
parent ff4d8c8c1e
commit 14890de35a
5 changed files with 262 additions and 130 deletions

View file

@ -228,20 +228,20 @@ function remove_directory($directory)
function display_view($view, $id = 0, $full_head = 'yes')
{
global $tpl;
global $tpl, $store;
switch ($view)
{
case 'view':
$entry = get_article($id);
$entry = $store->retrieveOneById($id);
if ($entry != NULL) {
$tpl->assign('id', $entry[0]['id']);
$tpl->assign('url', $entry[0]['url']);
$tpl->assign('title', $entry[0]['title']);
$tpl->assign('content', $entry[0]['content']);
$tpl->assign('is_fav', $entry[0]['is_fav']);
$tpl->assign('is_read', $entry[0]['is_read']);
$tpl->assign('id', $entry['id']);
$tpl->assign('url', $entry['url']);
$tpl->assign('title', $entry['title']);
$tpl->assign('content', $entry['content']);
$tpl->assign('is_fav', $entry['is_fav']);
$tpl->assign('is_read', $entry['is_read']);
$tpl->assign('load_all_js', 0);
$tpl->draw('view');
}
@ -252,7 +252,7 @@ function display_view($view, $id = 0, $full_head = 'yes')
logm('view link #' . $id);
break;
default: # home view
$entries = get_entries($view);
$entries = $store->getEntriesByView($view);
$tpl->assign('entries', $entries);
@ -277,7 +277,7 @@ function display_view($view, $id = 0, $full_head = 'yes')
*/
function action_to_do($action, $url, $id = 0)
{
global $db;
global $store;
switch ($action)
{
@ -286,139 +286,31 @@ function action_to_do($action, $url, $id = 0)
continue;
if($parametres_url = prepare_url($url)) {
$sql_action = 'INSERT INTO entries ( url, title, content ) VALUES (?, ?, ?)';
$params_action = array($url, $parametres_url['title'], $parametres_url['content']);
$store->add($url, $parametres_url['title'], $parametres_url['content']);
$last_id = $store->getLastId();
if (DOWNLOAD_PICTURES) {
$content = filtre_picture($parametres_url['content'], $url, $last_id);
}
}
logm('add link ' . $url);
break;
case 'delete':
remove_directory(ABS_PATH . $id);
$sql_action = "DELETE FROM entries WHERE id=?";
$params_action = array($id);
$store->deleteById($id);
logm('delete link #' . $id);
break;
case 'toggle_fav' :
$sql_action = "UPDATE entries SET is_fav=~is_fav WHERE id=?";
$params_action = array($id);
$store->favoriteById($id);
logm('mark as favorite link #' . $id);
break;
case 'toggle_archive' :
$sql_action = "UPDATE entries SET is_read=~is_read WHERE id=?";
$params_action = array($id);
$store->archiveById($id);
logm('archive link #' . $id);
break;
default:
break;
}
try
{
# action query
if (isset($sql_action))
{
$query = $db->getHandle()->prepare($sql_action);
$query->execute($params_action);
# if we add a link, we have to download pictures
if ($action == 'add') {
$last_id = $db->getHandle()->lastInsertId();
if (DOWNLOAD_PICTURES) {
$content = filtre_picture($parametres_url['content'], $url, $last_id);
$sql_update = "UPDATE entries SET content=? WHERE id=?";
$params_update = array($content, $last_id);
$query_update = $db->getHandle()->prepare($sql_update);
$query_update->execute($params_update);
}
}
}
}
catch (Exception $e)
{
logm('action query error : '.$e->getMessage());
}
}
/**
* Détermine quels liens afficher : home, fav ou archives
*/
function get_entries($view)
{
global $db;
switch ($_SESSION['sort'])
{
case 'ia':
$order = 'ORDER BY id';
break;
case 'id':
$order = 'ORDER BY id DESC';
break;
case 'ta':
$order = 'ORDER BY lower(title)';
break;
case 'td':
$order = 'ORDER BY lower(title) DESC';
break;
default:
$order = 'ORDER BY id';
break;
}
switch ($view)
{
case 'archive':
$sql = "SELECT * FROM entries WHERE is_read=? " . $order;
$params = array(-1);
break;
case 'fav' :
$sql = "SELECT * FROM entries WHERE is_fav=? " . $order;
$params = array(-1);
break;
default:
$sql = "SELECT * FROM entries WHERE is_read=? " . $order;
$params = array(0);
break;
}
# view query
try
{
$query = $db->getHandle()->prepare($sql);
$query->execute($params);
$entries = $query->fetchAll();
}
catch (Exception $e)
{
logm('view query error : '.$e->getMessage());
}
return $entries;
}
/**
* Récupère un article en fonction d'un ID
*/
function get_article($id)
{
global $db;
$entry = NULL;
$sql = "SELECT * FROM entries WHERE id=?";
$params = array(intval($id));
# view article query
try
{
$query = $db->getHandle()->prepare($sql);
$query->execute($params);
$entry = $query->fetchAll();
}
catch (Exception $e)
{
logm('get article query error : '.$e->getMessage());
}
return $entry;
}
function logm($message)