diff --git a/import.php b/import.php deleted file mode 100644 index 45fe83347..000000000 --- a/import.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/** - * poche, a read it later open source system - * - * @category poche - * @author Nicolas Lœuillet <support@inthepoche.com> - * @copyright 2013 - * @license http://www.wtfpl.net/ see COPYING file - */ - -set_time_limit(0); - -include dirname(__FILE__).'/inc/config.php'; -include dirname(__FILE__).'/inc/simple_html_dom.php'; - -if (!isset($_GET['start'])) { - echo _('Please execute the import script locally, it can take a very long time.') . '<br /><br />' . _('Please choose between Pocket & Readabilty :') . '<br /><a href="import.php?start=pocket">' . _('Bye bye Pocket, let\'s go !') . '</a><br /><a href="import.php?start=readability">' . _('Bye bye Readability, let\'s go !') . '</a>'; -} -else { - if ($_GET['start'] == 'pocket') { - $html = new simple_html_dom(); - $html->load_file('ril_export.html'); - - $read = 0; - $errors = array(); - foreach($html->find('ul') as $ul) - { - foreach($ul->find('li') as $li) - { - $a = $li->find('a'); - $url = $a[0]->href; - - action_to_do('add', $url); - if ($read == '1') { - $last_id = $db->getHandle()->lastInsertId(); - $sql_update = "UPDATE entries SET is_read=~is_read WHERE id=?"; - $params_update = array($last_id); - $query_update = $db->getHandle()->prepare($sql_update); - $query_update->execute($params_update); - } - } - # Pocket génère un fichier HTML avec deux <ul> - # Le premier concerne les éléments non lus - # Le second concerne les éléments archivés - $read = 1; - } - - echo _('Import from Pocket completed.') . '<a href="index.php">' . _('Welcome to poche !') .'</a>'; - logm('import from pocket completed'); - } - else if ($_GET['start'] == 'readability') { - $str_data = file_get_contents("readability"); - $data = json_decode($str_data,true); - - foreach ($data as $key => $value) { - $url = ''; - foreach ($value as $key2 => $value2) { - if ($key2 == 'article__url') { - $url = $value2; - } - } - if ($url != '') - action_to_do('add', $url); - } - - echo _('Import from Readability completed.') . '<a href="index.php">' . _('Welcome to poche !') . '</a>'; - logm('import from Readability completed'); - } - else { - echo _('Error with the import.') . '<a href="index.php">' . _('Back to poche'). '</a>'; - logm('error with the import'); - } -} \ No newline at end of file diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 973ae3e2e..9e407d41d 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -73,7 +73,7 @@ class Poche /** * Call action (mark as fav, archive, delete, etc.) */ - public function action($action, Url $url, $id) + public function action($action, Url $url, $id = 0) { switch ($action) { @@ -118,6 +118,8 @@ class Poche $this->store->archiveById($id); Tools::logm('archive link #' . $id); break; + case 'import': + break; default: break; } @@ -173,4 +175,108 @@ class Poche return $tpl_vars; } + + public function updatePassword() + { + if (isset($_POST['password']) && isset($_POST['password_repeat'])) { + if ($_POST['password'] == $_POST['password_repeat'] && $_POST['password'] != "") { + if (!MODE_DEMO) { + Tools::logm('password updated'); + $this->store->updatePassword(Tools::encodeString($_POST['password'] . $_SESSION['login'])); + Session::logout(); + Tools::redirect(); + } + else { + Tools::logm('in demo mode, you can\'t do this'); + } + } + } + } + + public function login($referer) + { + if (!empty($_POST['login']) && !empty($_POST['password'])) { + if (Session::login($_SESSION['login'], $_SESSION['pass'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']))) { + Tools::logm('login successful'); + + if (!empty($_POST['longlastingsession'])) { + $_SESSION['longlastingsession'] = 31536000; + $_SESSION['expires_on'] = time() + $_SESSION['longlastingsession']; + session_set_cookie_params($_SESSION['longlastingsession']); + } else { + session_set_cookie_params(0); + } + session_regenerate_id(true); + Tools::redirect($referer); + } + Tools::logm('login failed'); + Tools::redirect(); + } else { + Tools::logm('login failed'); + Tools::redirect(); + } + } + + public function logout() + { + Tools::logm('logout'); + Session::logout(); + Tools::redirect(); + } + + public function import($from) + { + if ($from == 'pocket') { + $html = new simple_html_dom(); + $html->load_file('./ril_export.html'); + + $read = 0; + $errors = array(); + foreach($html->find('ul') as $ul) + { + foreach($ul->find('li') as $li) + { + $a = $li->find('a'); + $url = new Url($a[0]->href); + $this->action('add', $url); + if ($read == '1') { + $last_id = $this->store->lastInsertId(); + $sql_update = "UPDATE entries SET is_read=~is_read WHERE id=?"; + $params_update = array($last_id); + $query_update = $this->store->prepare($sql_update); + $query_update->execute($params_update); + } + } + # Pocket génère un fichier HTML avec deux <ul> + # Le premier concerne les éléments non lus + # Le second concerne les éléments archivés + $read = 1; + } + logm('import from pocket completed'); + Tools::redirect(); + } + else if ($from == 'readability') { + # TODO finaliser tout ça ici + $str_data = file_get_contents("readability"); + $data = json_decode($str_data,true); + + foreach ($data as $key => $value) { + $url = ''; + foreach ($value as $key2 => $value2) { + if ($key2 == 'article__url') { + $url = new Url($value2); + } + } + if ($url != '') + action_to_do('add', $url); + } + logm('import from Readability completed'); + Tools::redirect(); + } + } + + public function export() + { + + } } \ No newline at end of file diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index 81297e0ce..98a9ee6bd 100644 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -32,6 +32,7 @@ require_once './inc/3rdparty/Session.class.php'; require_once './inc/store/store.class.php'; require_once './inc/store/' . $storage_type . '.class.php'; require_once './vendor/autoload.php'; +require_once './inc/3rdparty/simple_html_dom.php'; if (DOWNLOAD_PICTURES) { require_once './inc/poche/pochePicture.php'; diff --git a/index.php b/index.php index 40779698c..1554c0a65 100644 --- a/index.php +++ b/index.php @@ -10,8 +10,6 @@ include dirname(__FILE__).'/inc/poche/config.inc.php'; -$notices = array(); - # XSRF protection with token // if (!empty($_POST)) { // if (!Session::isToken($_POST['token'])) { @@ -25,50 +23,18 @@ $referer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER']; if (isset($_GET['login'])) { # hello you - if (!empty($_POST['login']) && !empty($_POST['password'])) { - if (Session::login($_SESSION['login'], $_SESSION['pass'], $_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']))) { - Tools::logm('login successful'); - $notices['value'] = _('login successful'); - - if (!empty($_POST['longlastingsession'])) { - $_SESSION['longlastingsession'] = 31536000; - $_SESSION['expires_on'] = time() + $_SESSION['longlastingsession']; - session_set_cookie_params($_SESSION['longlastingsession']); - } else { - session_set_cookie_params(0); - } - session_regenerate_id(true); - Tools::redirect($referer); - } - Tools::logm('login failed'); - $notices['value'] = _('Login failed !'); - Tools::redirect(); - } else { - Tools::logm('login failed'); - Tools::redirect(); - } + $poche->login($referer); } elseif (isset($_GET['logout'])) { # see you soon ! - Tools::logm('logout'); - Session::logout(); - Tools::redirect(); + $poche->logout(); } -elseif (isset($_GET['config'])) { +elseif (isset($_GET['config'])) { # Update password - if (isset($_POST['password']) && isset($_POST['password_repeat'])) { - if ($_POST['password'] == $_POST['password_repeat'] && $_POST['password'] != "") { - if (!MODE_DEMO) { - Tools::logm('password updated'); - $poche->store->updatePassword(Tools::encodeString($_POST['password'] . $_SESSION['login'])); - Session::logout(); - Tools::redirect(); - } - else { - Tools::logm('in demo mode, you can\'t do this'); - } - } - } + $poche->updatePassword(); +} +elseif (isset($_GET['import'])) { + $poche->import($_GET['from']); } # Aaaaaaand action ! @@ -87,7 +53,6 @@ $tpl_vars = array( 'demo' => MODE_DEMO, 'title' => _('poche, a read it later open source system'), 'token' => Session::getToken(), - 'notices' => $notices, ); if (Session::isLogged()) { diff --git a/tpl/config.twig b/tpl/config.twig index 4e7bb9d4c..9a51e5668 100644 --- a/tpl/config.twig +++ b/tpl/config.twig @@ -13,7 +13,7 @@ {% block content %} <div id="content"> <h2>{% trans "Bookmarklet" %}</h2> - <p>{% trans "Thanks to the bookmarklet, you will be able to easily add a link to your poche." %} {% trans "Have a look to this documentation:" %} <a href="http://inthepoche.com/?pages/Documentation" target="_blank">http://inthepoche.com/?pages/Documentation</a>.</p> + <p>{% trans "Thanks to the bookmarklet, you will be able to easily add a link to your poche." %} {% trans "Have a look to this documentation:" %} <a href="http://inthepoche.com/?pages/Documentation">inthepoche.com</a>.</p> <p>{% trans "Drag & drop this link to your bookmarks bar and have fun with poche." %}</p> <p><a ondragend="this.click();" style="cursor: move; border: 1px dashed grey; background: white;" title="i am a bookmarklet, use me !" href="javascript:if(top['bookmarklet-url@inthepoche.com']){top['bookmarklet-url@inthepoche.com'];}else{(function(){var%20url%20=%20location.href%20||%20url;window.open('{{ poche_url }}?action=add&url='%20+%20btoa(url),'_self');})();void(0);}">{% trans "poche it!" %}</a></p> @@ -35,6 +35,15 @@ <input type="hidden" name="returnurl" value="{{ referer }}"> <input type="hidden" name="token" value="{{ token }}"> </form> + + <h2>{% trans "Import" %}</h2> + <p>{% trans "Please execute the import script locally, it can take a very long time." %}</p> + <p>{% trans "More infos in the official doc:" %} <a href="http://inthepoche.com/?pages/Documentation">inthepoche.com</a></p> + <p><ul> + <li><a href="/?import&from=pocket">{% trans "import from Pocket" %}</a> (you must have a "ril_export.html" file on your server)</li> + <li><a href="/?import&from=readability">{% trans "import from Readability" %}</a> (you must have a "readability" file on your server)</li> + </ul></p> + <h2>{% trans "Export your poche datas" %}</h2> <p><a href="?view=export" target="_blank">{% trans "Click here" %}</a> {% trans "to export your poche datas." %}</p> </div> diff --git a/tpl/export.html b/tpl/export.twig similarity index 100% rename from tpl/export.html rename to tpl/export.twig diff --git a/tpl/home.twig b/tpl/home.twig index 5752b2cf2..49ef90504 100644 --- a/tpl/home.twig +++ b/tpl/home.twig @@ -15,15 +15,6 @@ <li><img src="./tpl/img/up.png" onclick="sort_links('{{ view }}', 'ta');" title="{% trans "by title asc" %}" /> {% trans "by title" %} <img src="./tpl/img/down.png" onclick="sort_links('{{ view }}', 'td');" title="{% trans "by title desc" %}" /></li> </ul> {% endblock %} -{% block notices %} - <div class="messages"> - <ul> - {% for notice in notices %} - <li>{{ notice.value|e }}</li> - {% endfor %} - </ul> - </div> -{% endblock %} {% block content %} <div id="content"> {% for entry in entries %} diff --git a/tpl/layout.twig b/tpl/layout.twig index 9dc83efe3..cbe965fda 100644 --- a/tpl/layout.twig +++ b/tpl/layout.twig @@ -17,7 +17,6 @@ <div id="main"> {% block menu %}{% endblock %} {% block precontent %}{% endblock %} - {% block messages %}{% endblock %} {% block content %}{% endblock %} {% block js %}{% endblock %} </div> diff --git a/tpl/login.twig b/tpl/login.twig index fcb9b4d63..70c2190c8 100644 --- a/tpl/login.twig +++ b/tpl/login.twig @@ -1,15 +1,6 @@ {% extends "layout.twig" %} {% block title %}{% trans "login to your poche" %}{% endblock %} -{% block notices %} - <div class="messages"> - <ul> - {% for notice in notices %} - <li>{{ notice.value|e }}</li> - {% endfor %} - </ul> - </div> -{% endblock %} {% block content %} <form method="post" action="?login" name="loginform"> <fieldset class="w500p center">