die('You don\'t have write access on cache directory.');
}
else if (file_exists('./install/update.php') && !DEBUG_POCHE) {
- $msg = 'A poche update is needed. Please execute this update <a href="install/update.php">by clicking here</a>. If you have already do the update, please delete /install folder.';
+ $msg = '<h1>setup</h1><p><strong>It\'s your first time here?</strong> Please copy /install/poche.sqlite in db folder. Then, delete install folder.<br /><strong>If you have already installed poche</strong>, an update is needed <a href="install/update.php">by clicking here</a>.</p>';
$allIsGood = FALSE;
}
else if (file_exists('./install') && !DEBUG_POCHE) {
- $msg = 'If you want to update your poche, you just have to delete /install folder. <br />To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.';
+ $msg = '<h1>setup</h1><p><strong>If you want to update your poche</strong>, you just have to delete /install folder. <br /><strong>To install your poche with sqlite</strong>, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.</p>';
$allIsGood = FALSE;
}
else if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) {
Tools::logm('you don\'t have write access on sqlite file');
- $msg = 'You don\'t have write access on sqlite file.';
+ $msg = '<h1>error</h1><p>You don\'t have write access on sqlite file.</p>';
$allIsGood = FALSE;
}
switch ($action)
{
case 'add':
- if($parametres_url = $url->fetchContent()) {
- if ($this->store->add($url->getUrl(), $parametres_url['title'], $parametres_url['content'], $this->user->getId())) {
- Tools::logm('add link ' . $url->getUrl());
- $sequence = '';
- if (STORAGE == 'postgres') {
- $sequence = 'entries_id_seq';
- }
- $last_id = $this->store->getLastId($sequence);
- if (DOWNLOAD_PICTURES) {
- $content = filtre_picture($parametres_url['content'], $url->getUrl(), $last_id);
- Tools::logm('updating content article');
- $this->store->updateContent($last_id, $content, $this->user->getId());
- }
- if (!$import) {
- $this->messages->add('s', _('the link has been added successfully'));
- }
+ $content = $url->extract();
+
+ if ($this->store->add($url->getUrl(), $content['title'], $content['body'], $this->user->getId())) {
+ Tools::logm('add link ' . $url->getUrl());
+ $sequence = '';
+ if (STORAGE == 'postgres') {
+ $sequence = 'entries_id_seq';
}
- else {
- if (!$import) {
- $this->messages->add('e', _('error during insertion : the link wasn\'t added'));
- Tools::logm('error during insertion : the link wasn\'t added ' . $url->getUrl());
- }
+ $last_id = $this->store->getLastId($sequence);
+ if (DOWNLOAD_PICTURES) {
+ $content = filtre_picture($content['body'], $url->getUrl(), $last_id);
+ Tools::logm('updating content article');
+ $this->store->updateContent($last_id, $content, $this->user->getId());
+ }
+ if (!$import) {
+ $this->messages->add('s', _('the link has been added successfully'));
}
}
else {
if (!$import) {
- $this->messages->add('e', _('error during fetching content : the link wasn\'t added'));
- Tools::logm('error during content fetch ' . $url->getUrl());
+ $this->messages->add('e', _('error during insertion : the link wasn\'t added'));
+ Tools::logm('error during insertion : the link wasn\'t added ' . $url->getUrl());
}
}
+
if (!$import) {
Tools::redirect();
}
}
break;
default:
- Tools::logm('action ' . $action . 'doesn\'t exist');
break;
}
}
$tidy = tidy_parse_string($content, array('indent'=>true, 'show-body-only' => true), 'UTF8');
$tidy->cleanRepair();
$content = $tidy->value;
- }
- $tpl_vars = array(
+
+ // flattr checking
+ $flattr = new FlattrItem();
+ $flattr->checkitem($entry['url']);
+
+ $tpl_vars = array(
'entry' => $entry,
'content' => $content,
- );
+ 'flattr' => $flattr
+ );
+ }
}
else {
Tools::logm('error in view call : entry is null');
}
break;
- default: # home view
+ default : // home, favorites and archive views
$entries = $this->store->getEntriesByView($view, $this->user->getId());
- $this->pagination->set_total(count($entries));
- $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&');
- $datas = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit());
$tpl_vars = array(
- 'entries' => $datas,
- 'page_links' => $page_links,
+ 'entries' => '',
+ 'page_links' => '',
);
+ if (count($entries) > 0) {
+ $this->pagination->set_total(count($entries));
+ $page_links = $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . '&');
+ $datas = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit());
+ $tpl_vars['entries'] = $datas;
+ $tpl_vars['page_links'] = $page_links;
+ }
Tools::logm('display ' . $view . ' view');
break;
}
/**
* import from Instapaper. poche needs a ./instapaper-export.html file
* @todo add the return value
+ * @param string $targetFile the file used for importing
* @return boolean
*/
- private function importFromInstapaper()
+ private function importFromInstapaper($targetFile)
{
# TODO gestion des articles favs
$html = new simple_html_dom();
- $html->load_file('./instapaper-export.html');
+ $html->load_file($targetFile);
Tools::logm('starting import from instapaper');
$read = 0;
/**
* import from Pocket. poche needs a ./ril_export.html file
* @todo add the return value
+ * @param string $targetFile the file used for importing
* @return boolean
*/
- private function importFromPocket()
+ private function importFromPocket($targetFile)
{
# TODO gestion des articles favs
$html = new simple_html_dom();
- $html->load_file('./ril_export.html');
+ $html->load_file($targetFile);
Tools::logm('starting import from pocket');
$read = 0;
/**
* import from Readability. poche needs a ./readability file
* @todo add the return value
+ * @param string $targetFile the file used for importing
* @return boolean
*/
- private function importFromReadability()
+ private function importFromReadability($targetFile)
{
# TODO gestion des articles lus / favs
- $str_data = file_get_contents("./readability");
+ $str_data = file_get_contents($targetFile);
$data = json_decode($str_data,true);
Tools::logm('starting import from Readability');
$count = 0;
*/
public function import($from)
{
- if ($from == 'pocket') {
- return $this->importFromPocket();
+ $providers = array(
+ 'pocket' => 'importFromPocket',
+ 'readability' => 'importFromReadability',
+ 'instapaper' => 'importFromInstapaper'
+ );
+
+ if (! isset($providers[$from])) {
+ $this->messages->add('e', _('Unknown import provider.'));
+ Tools::redirect();
}
- else if ($from == 'readability') {
- return $this->importFromReadability();
+
+ $targetDefinition = 'IMPORT_' . strtoupper($from) . '_FILE';
+ $targetFile = constant($targetDefinition);
+
+ if (! defined($targetDefinition)) {
+ $this->messages->add('e', _('Incomplete inc/poche/define.inc.php file, please define "' . $targetDefinition . '".'));
+ Tools::redirect();
}
- else if ($from == 'instapaper') {
- return $this->importFromInstapaper();
+
+ if (! file_exists($targetFile)) {
+ $this->messages->add('e', _('Could not find required "' . $targetFile . '" import file.'));
+ Tools::redirect();
}
+
+ $this->$providers[$from]($targetFile);
}
/**
}
return $version;
}
-}
\ No newline at end of file
+}
+
+/* class for Flattr querying. Should be put in a separate file
+* Or maybe just create an array instead of a complete class... My mistake. :-°
+*/
+class FlattrItem{
+ public $status;
+ public $urltoflattr;
+ public $flattrItemURL;
+ public $numflattrs;
+
+ public function checkitem($urltoflattr){
+ $this->cacheflattrfile($urltoflattr);
+ $flattrResponse = file_get_contents("cache/flattr/".base64_encode($urltoflattr).".cache");
+ if($flattrResponse != FALSE){
+ $result = json_decode($flattrResponse);
+ if (isset($result->message)){
+ if ($result->message == "flattrable"){
+ $this->status = "flattrable";
+ }
+ }
+ elseif ($result->link) {
+ $this->status = "flattred";
+ $this->flattrItemURL = $result->link;
+ $this->numflattrs = $result->flattrs;
+ }
+ else{
+ $this->status = "not flattrable";
+ }
+ }
+ else
+ {
+ $this->status = "FLATTR_ERR_CONNECTION";
+ }
+ }
+
+ private function cacheflattrfile($urltoflattr){
+ if (!is_dir('cache/flattr')){
+ mkdir('./cache/flattr', 0777);
+ }
+ // if a cache flattr file for this url already exists and it's been less than one day than it have been updated, see in /cache
+ if ((!file_exists("cache/flattr/".base64_encode($urltoflattr).".cache")) || (time() - filemtime("cache/flattr/".base64_encode($urltoflattr).".cache") > 86400))
+ {
+ $askForFlattr = Tools::getFile("https://api.flattr.com/rest/v2/things/lookup/?url=".$urltoflattr);
+ $flattrCacheFile = fopen("cache/flattr/".base64_encode($urltoflattr).".cache", 'w+');
+ fwrite($flattrCacheFile, $askForFlattr);
+ fclose($flattrCacheFile);
+ }
+ }
+}