private $currentLanguage = '';
private $notInstalledMessage = array();
+ private $language_names = array(
+ 'cs_CZ.utf8' => 'čeština',
+ 'de_DE.utf8' => 'German',
+ 'en_EN.utf8' => 'English',
+ 'es_ES.utf8' => 'Español',
+ 'fa_IR.utf8' => 'فارسی',
+ 'fr_FR.utf8' => 'Français',
+ 'it_IT.utf8' => 'Italiano',
+ 'pl_PL.utf8' => 'Polski',
+ 'ru_RU.utf8' => 'Pусский',
+ 'sl_SI.utf8' => 'Slovenščina',
+ 'uk_UA.utf8' => 'Українська',
+ 'pt_BR.utf8' => 'Brasileiro',
+ );
public function __construct()
{
if ($this->configFileIsAvailable()) {
while (($language = readdir($handle)) !== false) {
# Languages are stored in a directory, so all directory names are languages
# @todo move language installation data to database
- if (! is_dir(LOCALE . '/' . $language) || in_array($language, array('..', '.'))) {
+ if (! is_dir(LOCALE . '/' . $language) || in_array($language, array('..', '.', 'tools'))) {
continue;
}
$current = true;
}
- $languages[] = array('name' => $language, 'current' => $current);
+ $languages[] = array('name' => (isset($this->language_names[$language]) ? $this->language_names[$language] : $language), 'value' => $language, 'current' => $current);
}
return $languages;
// Saving and clearing context
$REAL = array();
foreach( $GLOBALS as $key => $value ) {
- if( $key != "GLOBALS" && $key != "_SESSION" ) {
+ if( $key != 'GLOBALS' && $key != '_SESSION' && $key != 'HTTP_SESSION_VARS' ) {
$GLOBALS[$key] = array();
$REAL[$key] = $value;
}
$title = ($content['rss']['channel']['item']['title'] != '') ? $content['rss']['channel']['item']['title'] : _('Untitled');
$body = $content['rss']['channel']['item']['description'];
+ // clean content from prevent xss attack
+ $config = HTMLPurifier_Config::createDefault();
+ $purifier = new HTMLPurifier($config);
+ $title = $purifier->purify($title);
+ $body = $purifier->purify($body);
+
//search for possible duplicate if not in import mode
if (!$import) {
$duplicate = $this->store->retrieveOneByURL($url->getUrl(), $this->user->getId());
$tpl_vars = array(
'entry_id' => $id,
'tags' => $tags,
- );
- break;
- case 'tag':
- $entries = $this->store->retrieveEntriesByTag($id, $this->user->getId());
- $tag = $this->store->retrieveTag($id, $this->user->getId());
- $tpl_vars = array(
- 'tag' => $tag,
- 'entries' => $entries,
+ 'entry' => $entry,
);
break;
case 'tags':
Tools::logm('error in view call : entry is null');
}
break;
- default: # home, favorites and archive views
- $entries = $this->store->getEntriesByView($view, $this->user->getId());
+ default: # home, favorites, archive and tag views
$tpl_vars = array(
'entries' => '',
'page_links' => '',
'nb_results' => '',
+ 'listmode' => (isset($_COOKIE['listmode']) ? true : false),
);
- if (count($entries) > 0) {
- $this->pagination->set_total(count($entries));
+ //if id is given - we retrive entries by tag: id is tag id
+ if ($id) {
+ $tpl_vars['tag'] = $this->store->retrieveTag($id, $this->user->getId());
+ $tpl_vars['id'] = intval($id);
+ }
+
+ $count = $this->store->getEntriesByViewCount($view, $this->user->getId(), $id);
+
+ if ($count > 0) {
+ $this->pagination->set_total($count);
$page_links = str_replace(array('previous', 'next'), array(_('previous'), _('next')),
- $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;
+ $this->pagination->page_links('?view=' . $view . '&sort=' . $_SESSION['sort'] . (($id)?'&id='.$id:'') . '&' ));
+ $tpl_vars['entries'] = $this->store->getEntriesByView($view, $this->user->getId(), $this->pagination->get_limit(), $id);
$tpl_vars['page_links'] = $page_links;
- $tpl_vars['nb_results'] = count($entries);
+ $tpl_vars['nb_results'] = $count;
}
Tools::logm('display ' . $view . ' view');
break;
$currentConfig['theme'] = $_POST['theme'];
$_SESSION['poche_user']->setConfig($currentConfig);
+
+ $this->emptyCache();
Tools::redirect('?view=config');
}
$actualLanguage = false;
foreach ($languages as $language) {
- if ($language['name'] == $_POST['language']) {
+ if ($language['value'] == $_POST['language']) {
$actualLanguage = true;
break;
}
$currentConfig['language'] = $_POST['language'];
$_SESSION['poche_user']->setConfig($currentConfig);
+
+ $this->emptyCache();
Tools::redirect('?view=config');
}
$currentConfig = $_SESSION['poche_user']->config;
$currentConfig['token'] = $token;
$_SESSION['poche_user']->setConfig($currentConfig);
+ Tools::redirect();
}
public function generateFeeds($token, $user_id, $tag_id, $type = 'home')
$feed = new FeedWriter(RSS2);
$feed->setTitle('wallabag — ' . $type . ' feed');
$feed->setLink(Tools::getPocheUrl());
- $feed->setChannelElement('updated', date(DATE_RSS , time()));
- $feed->setChannelElement('author', 'wallabag');
+ $feed->setChannelElement('pubDate', date(DATE_RSS , time()));
+ $feed->setChannelElement('generator', 'wallabag');
+ $feed->setDescription('wallabag ' . $type . ' elements');
if ($type == 'tag') {
$entries = $this->store->retrieveEntriesByTag($tag_id, $user_id);