Tools::redirect();
break;
case 'add_tag' :
- $tags = explode(',', $_POST['value']);
- $entry_id = $_POST['entry_id'];
- $entry = $this->store->retrieveOneById($entry_id, $this->user->getId());
- if (!$entry) {
- $this->messages->add('e', _('Article not found!'));
- Tools::logm('error : article not found');
- Tools::redirect();
- }
- //get all already set tags to preven duplicates
- $already_set_tags = array();
- $entry_tags = $this->store->retrieveTagsByEntry($entry_id);
- foreach ($entry_tags as $tag) {
- $already_set_tags[] = $tag['value'];
+ if (isset($_GET['search'])) {
+ //when we want to apply a tag to a search
+ $tags = array($_GET['search']);
+ $allentry_ids = $this->store->search($tags[0], $this->user->getId());
+ $entry_ids = array();
+ foreach ($allentry_ids as $eachentry) {
+ $entry_ids[] = $eachentry[0];
+ }
+ } else { //add a tag to a single article
+ $tags = explode(',', $_POST['value']);
+ $entry_ids = array($_POST['entry_id']);
}
- foreach($tags as $key => $tag_value) {
- $value = trim($tag_value);
- if ($value && !in_array($value, $already_set_tags)) {
- $tag = $this->store->retrieveTagByValue($value);
-
- if (is_null($tag)) {
- # we create the tag
- $tag = $this->store->createTag($value);
- $sequence = '';
- if (STORAGE == 'postgres') {
- $sequence = 'tags_id_seq';
+ foreach($entry_ids as $entry_id) {
+ $entry = $this->store->retrieveOneById($entry_id, $this->user->getId());
+ if (!$entry) {
+ $this->messages->add('e', _('Article not found!'));
+ Tools::logm('error : article not found');
+ Tools::redirect();
+ }
+ //get all already set tags to preven duplicates
+ $already_set_tags = array();
+ $entry_tags = $this->store->retrieveTagsByEntry($entry_id);
+ foreach ($entry_tags as $tag) {
+ $already_set_tags[] = $tag['value'];
+ }
+ foreach($tags as $key => $tag_value) {
+ $value = trim($tag_value);
+ if ($value && !in_array($value, $already_set_tags)) {
+ $tag = $this->store->retrieveTagByValue($value);
+ if (is_null($tag)) {
+ # we create the tag
+ $tag = $this->store->createTag($value);
+ $sequence = '';
+ if (STORAGE == 'postgres') {
+ $sequence = 'tags_id_seq';
+ }
+ $tag_id = $this->store->getLastId($sequence);
+ }
+ else {
+ $tag_id = $tag['id'];
}
- $tag_id = $this->store->getLastId($sequence);
- }
- else {
- $tag_id = $tag['id'];
- }
-
- # we assign the tag to the article
- $this->store->setTagToEntry($tag_id, $entry_id);
+
+ # we assign the tag to the article
+ $this->store->setTagToEntry($tag_id, $entry_id);
+ }
}
}
+ $this->messages->add('s', _('The tag has been applied successfully'));
+ Tools::logm('The tag has been applied successfully');
Tools::redirect();
break;
case 'remove_tag' :
Tools::redirect();
}
$this->store->removeTagForEntry($id, $tag_id);
+ Tools::logm('tag entry deleted');
+ if ($this->store->cleanUnusedTag($tag_id)) {
+ Tools::logm('tag deleted');
+ }
+ $this->messages->add('s', _('The tag has been successfully deleted'));
Tools::redirect();
break;
default:
$entry = $this->store->retrieveOneById($entryID, $this->user->getId());
$entries = array($entry);
$bookTitle = $entry['title'];
+ $bookFileName = substr($bookTitle, 0, 200);
break;
case 'all':
$entries = $this->store->retrieveAll($this->user->getId());
- $bookTitle = _('All my articles');
+ $bookTitle = sprintf(_('All my articles on '), date(_('d.m.y'))); #translatable because each country has it's own date format system
+ $bookFileName = _('Allarticles') . date(_('dmY'));
break;
case 'tag':
$tag = filter_var($_GET['tag'],FILTER_SANITIZE_STRING);
$tags_id = $this->store->retrieveAllTags($this->user->getId(),$tag);
$tag_id = $tags_id[0]["id"]; // we take the first result, which is supposed to match perfectly. There must be a workaround.
$entries = $this->store->retrieveEntriesByTag($tag_id,$this->user->getId());
- $bookTitle = sprintf(_('Articles related to %s'),$tag);
+ $bookTitle = sprintf(_('Articles tagged %s'),$tag);
+ $bookFileName = substr(sprintf(_('Tag %s'),$tag), 0, 200);
break;
case 'category':
$category = filter_var($_GET['category'],FILTER_SANITIZE_STRING);
$entries = $this->store->getEntriesByView($category,$this->user->getId());
- $bookTitle = sprintf(_('All my articles in category %s'), $category);
+ $bookTitle = sprintf(_('All articles in category %s'), $category);
+ $bookFileName = substr(sprintf(_('Category %s'),$category), 0, 200);
break;
case 'search':
$search = filter_var($_GET['search'],FILTER_SANITIZE_STRING);
$entries = $this->store->search($search,$this->user->getId());
- $bookTitle = sprintf(_('All my articles for search %s'), $search);
+ $bookTitle = sprintf(_('All articles for search %s'), $search);
+ $bookFileName = substr(sprintf(_('Search %s'), $search), 0, 200);
break;
case 'default':
die(_('Uh, there is a problem while generating epub.'));
//$book->addChapter("ePubLog", "ePubLog.html", $content_start . $epuplog . "\n</pre>" . $bookEnd);
}
$book->finalize();
- $zipData = $book->sendBook(_('wallabag\'s articles'));
+ $zipData = $book->sendBook($bookFileName);
}
}