$db = new db(DB_PATH);
+# Initialisation de RainTPL
raintpl::$tpl_dir = './tpl/';
raintpl::$cache_dir = './cache/';
raintpl::$base_url = get_poche_url();
raintpl::configure('debug', false);
$tpl = new raintpl();
+# Démarrage session et initialisation du jeton de sécurité
session_start();
if (!isset($_SESSION['token_poche'])) {
$token = md5(uniqid(rand(), TRUE));
$_SESSION['token_poche'] = $token;
$_SESSION['token_time_poche'] = time();
+}
+
+# Traitement des paramètres et déclenchement des actions
+$action = (isset ($_REQUEST['action'])) ? htmlentities($_REQUEST['action']) : '';
+$_SESSION['view'] = (isset ($_GET['view'])) ? htmlentities($_GET['view']) : 'index';
+$_SESSION['sort'] = (isset ($_REQUEST['sort'])) ? htmlentities($_REQUEST['sort']) : 'id';
+$id = (isset ($_REQUEST['id'])) ? htmlspecialchars($_REQUEST['id']) : '';
+$url = (isset ($_GET['url'])) ? $_GET['url'] : '';
+$token = (isset ($_REQUEST['token'])) ? $_REQUEST['token'] : '';
+
+if ($action != '') {
+ action_to_do($action, $id, $url, $token);
}
\ No newline at end of file
// create http context and add timeout and user-agent
$context = stream_context_create(array('http'=>array('timeout' => $timeout, // Timeout : time until we stop waiting for the response.
- 'header'=> "User-Agent: ".$useragent, // spoot Mozilla Firefox
- 'follow_location' => true
- )));
+ 'header'=> "User-Agent: ".$useragent, // spoot Mozilla Firefox
+ 'follow_location' => true
+ )));
// only download page lesser than 4MB
$data = @file_get_contents($url, false, $context, -1, 4000000); // We download at most 4 MB from source.
}
else die('CSRF problem');
break;
+ case 'toggle_fav' :
+ if (verif_token($token)) {
+ $sql_action = "UPDATE entries SET is_fav=~is_fav WHERE id=?";
+ $params_action = array($id);
+ }
+ else die('CSRF problem');
+ break;
+ case 'toggle_archive' :
+ if (verif_token($token)) {
+ $sql_action = "UPDATE entries SET is_read=~is_read WHERE id=?";
+ $params_action = array($id);
+ }
+ else die('CSRF problem');
+ break;
default:
break;
}
/**
* Détermine quels liens afficher : home, fav ou archives
*/
-function display_view($view)
+function display_view()
{
global $db;
- switch ($view)
+ 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 ($_SESSION['view'])
{
case 'archive':
- $sql = "SELECT * FROM entries WHERE is_read=? ORDER BY id desc";
+ $sql = "SELECT * FROM entries WHERE is_read=? " . $order;
$params = array(-1);
break;
case 'fav' :
- $sql = "SELECT * FROM entries WHERE is_fav=? ORDER BY id desc";
+ $sql = "SELECT * FROM entries WHERE is_fav=? " . $order;
$params = array(-1);
break;
default:
- $sql = "SELECT * FROM entries WHERE is_read=? ORDER BY id desc";
+ $sql = "SELECT * FROM entries WHERE is_read=? " . $order;
$params = array(0);
break;
}
include dirname(__FILE__).'/inc/config.php';
-$action = (isset ($_REQUEST['action'])) ? htmlentities($_REQUEST['action']) : '';
-$view = (isset ($_GET['view'])) ? htmlentities($_GET['view']) : 'index';
-$id = (isset ($_REQUEST['id'])) ? htmlspecialchars($_REQUEST['id']) : '';
-$url = (isset ($_GET['url'])) ? $_GET['url'] : '';
-$token = (isset ($_POST['token'])) ? $_POST['token'] : '';
-
-if ($action != '') {
- action_to_do($action, $id, $url, $token);
-}
-
-$entries = display_view($view);
+$entries = display_view();
$tpl->assign('title', 'poche, a read it later open source system');
-$tpl->assign('view', $view);
+$tpl->assign('view', $_SESSION['view']);
$tpl->assign('poche_url', get_poche_url());
$tpl->assign('entries', $entries);
$tpl->assign('load_all_js', 1);
$tpl->assign('token', $_SESSION['token_poche']);
-$tpl->draw('home');
\ No newline at end of file
+
+$tpl->draw('head');
+$tpl->draw('home');
+$tpl->draw('entries');
+$tpl->draw('js');
+$tpl->draw('footer');
\ No newline at end of file
function toggle_favorite(element, id, token) {
$(element).toggleClass('fav-off');
$.ajax ({
- url: "process.php?action=toggle_fav",
+ url: "index.php?action=toggle_fav",
data:{id:id, token:token}
});
}
function toggle_archive(element, id, token, view_article) {
$(element).toggleClass('archive-off');
$.ajax ({
- url: "process.php?action=toggle_archive",
+ url: "index.php?action=toggle_archive",
data:{id:id, token:token}
});
var obj = $('#entry-'+id);
$('#content').masonry('reloadItems');
$('#content').masonry('reload');
}
+}
+
+function sort_links(sort, token) {
+ $('#content').load('process.php', { sort: sort, token: token } );
}
\ No newline at end of file
+++ /dev/null
-<?php
-/**
- * poche, a read it later open source system
- *
- * @category poche
- * @author Nicolas Lœuillet <nicolas@loeuillet.org>
- * @copyright 2013
- * @license http://www.wtfpl.net/ see COPYING file
- */
-
-include dirname(__FILE__).'/inc/config.php';
-$db = new db(DB_PATH);
-
-$action = (isset ($_GET['action'])) ? htmlentities($_GET['action']) : '';
-$id = (isset ($_GET['id'])) ? htmlentities($_GET['id']) : '';
-$token = (isset ($_GET['token'])) ? $_GET['token'] : '';
-
-if (verif_token($token)) {
- switch ($action)
- {
- case 'toggle_fav' :
- $sql_action = "UPDATE entries SET is_fav=~is_fav WHERE id=?";
- $params_action = array($id);
- break;
- case 'toggle_archive' :
- $sql_action = "UPDATE entries SET is_read=~is_read WHERE id=?";
- $params_action = array($id);
- break;
- default:
- break;
- }
-
- # action query
- if (isset($sql_action))
- {
- $query = $db->getHandle()->prepare($sql_action);
- $query->execute($params_action);
- }
-}
-else die('CSRF problem');
\ No newline at end of file
--- /dev/null
+ {loop="entries"}
+ <div id="entry-{$value.id}" class="entrie mb2">
+ <span class="content">
+ <h2 class="h6-like">
+ <a href="view.php?id={$value.id}">{$value.title}</a>
+ </h2>
+ <div class="tools">
+ <ul>
+ <li><a title="toggle mark as read" class="tool archive {if="$value.is_read == '0'"}archive-off{/if}" onclick="toggle_archive(this, {$value.id}, '{$token}')"><span></span></a></li>
+ <li><a title="toggle favorite" class="tool fav {if="$value.is_fav == '0'"}fav-off{/if}" onclick="toggle_favorite(this, {$value.id}, '{$token}')"><span></span></a></li>
+ <li><form method="post" onsubmit="return confirm('Are you sure?')" style="display: inline;"><input type="hidden" name="token" id="token" value="{$token}" /><input type="hidden" id="action" name="action" value="delete" /><input type="hidden" id="id" name="id" value="{$value.id}" /><input type="submit" class="delete" title="toggle delete" /></form></li>
+ </ul>
+ </div>
+ </span>
+ </div>
+ {/loop}
\ No newline at end of file
+ </div>
+ </div>
+
<footer class="mr2 mt3 smaller">
<p>powered by <a href="http://inthepoche.com">poche</a><br />follow us on <a href="https://twitter.com/getpoche" title="follow us on twitter">twitter</a></p>
- </footer>
\ No newline at end of file
+ </footer>
+
+ </body>
+</html>
\ No newline at end of file
-{include="head"}
<body>
<header>
<h1><img src="./img/logo.png" alt="logo poche" />poche</h1>
<li><a href="?view=archive" {if="$view == 'archive'"}class="current"{/if}>archive</a></li>
<li><a style="cursor: move" title="i am a bookmarklet, use me !" href="javascript:(function(){var%20url%20=%20location.href%20||%20url;window.open('{$poche_url}?action=add&url='%20+%20encodeURIComponent(url),'_self');})();">poche it !</a></li>
</ul>
- <div id="content">
- {loop="entries"}
- <div id="entry-{$value.id}" class="entrie mb2">
- <span class="content">
- <h2 class="h6-like">
- <a href="view.php?id={$value.id}">{$value.title}</a>
- </h2>
- <div class="tools">
- <ul>
- <li><a title="toggle mark as read" class="tool archive {if="$value.is_read == '0'"}archive-off{/if}" onclick="toggle_archive(this, {$value.id}, '{$token}')"><span></span></a></li>
- <li><a title="toggle favorite" class="tool fav {if="$value.is_fav == '0'"}fav-off{/if}" onclick="toggle_favorite(this, {$value.id}, '{$token}')"><span></span></a></li>
- <li><form method="post" onsubmit="return confirm('Are you sure?')" style="display: inline;"><input type="hidden" name="token" id="token" value="{$token}" /><input type="hidden" id="action" name="action" value="delete" /><input type="hidden" id="id" name="id" value="{$value.id}" /><input type="submit" class="delete" title="toggle delete" /></form></li>
- </ul>
- </div>
- </span>
- </div>
- {/loop}
- </div>
- </div>
- {include="footer"}
- {include="js"}
- </body>
-</html>
+<!-- <ul>
+ <li onclick="sort_links('ia', '{$token}');">tri par id asc</li>
+ <li onclick="sort_links('id', '{$token}');">tri par id desc</li>
+ <li onclick="sort_links('ta', '{$token}');">tri par title asc</li>
+ <li onclick="sort_links('td', '{$token}');">tri par title desc</li>
+ </ul> -->
+ <div id="content">
\ No newline at end of file