/** * Kommentar-Formular initialisieren * @return string */ protected function assignCommentFormData() { if (!$this->config->system_comments_enabled || !$this->article->getComments()) { return ''; } $id = $this->session->exists() ? $this->session->getUserId() : null; $author = new \fpcm\model\users\author($id); if (!$this->buttonClicked('sendComment') && is_null($this->getRequestVar('newcomment')) && $this->session->exists()) { $this->newComment->setName($author->getDisplayname()); $this->newComment->setEmail($author->getEmail()); $this->newComment->setWebsite(\fpcm\classes\http::getHttpHost()); } $replacementTags = array('{{formHeadline}}' => $this->lang->translate('COMMENTS_PUBLIC_FORMHEADLINE'), '{{submitUrl}}' => $this->article->getArticleLink(), '{{nameDescription}}' => $this->lang->translate('COMMMENT_AUTHOR'), '{{nameField}}' => '<input type="text" class="fpcm-pub-textinput" name="newcomment[name]" value="' . $this->newComment->getName() . '">', '{{emailDescription}}' => $this->lang->translate('GLOBAL_EMAIL'), '{{emailField}}' => '<input type="text" class="fpcm-pub-textinput" name="newcomment[email]" value="' . $this->newComment->getEmail() . '">', '{{websiteDescription}}' => $this->lang->translate('COMMMENT_WEBSITE'), '{{websiteField}}' => '<input type="text" class="fpcm-pub-textinput" name="newcomment[website]" value="' . $this->newComment->getWebsite() . '">', '{{textfield}}' => '<textarea class="fpcm-pub-textarea" id="newcommenttext" name="newcomment[text]">' . $this->newComment->getText() . '</textarea>', '{{smileysDescription}}' => $this->lang->translate('HL_OPTIONS_SMILEYS'), '{{smileys}}' => $this->getSmileyList(), '{{tags}}' => htmlentities(\fpcm\model\comments\comment::COMMENT_TEXT_HTMLTAGS_FORM), '{{spampluginQuestion}}' => $this->captcha->createPluginText(), '{{spampluginField}}' => $this->captcha->createPluginInput(), '{{privateCheckbox}}' => '<input type="checkbox" class="fpcm-pub-checkboxinput" name="newcomment[private]" value="1">', '{{submitButton}}' => '<button type="submit" name="btnSendComment">' . $this->lang->translate('GLOBAL_SUBMIT') . '</button>', '{{resetButton}}' => '<button type="reset">' . $this->lang->translate('GLOBAL_RESET') . '</button>'); $this->commentFormTemplate->setReplacementTags($replacementTags); $parsed = $this->commentFormTemplate->parse(); if (!$this->isUtf8) { $parsed = utf8_decode($parsed); } return $parsed; }
/** * * @param \fpcm\model\articles\article $article * @return string */ protected function assignData(\fpcm\model\articles\article $article) { /** * @var \fpcm\model\pubtemplates\article */ $tpl = $this->template; $replacements = array('{{headline}}' => $article->getTitle(), '{{author}}' => isset($this->users[$article->getCreateuser()]) ? $this->users[$article->getCreateuser()] : $this->lang->translate('GLOBAL_NOTFOUND'), '{{date}}' => date($this->config->system_dtmask, $article->getCreatetime()), '{{permaLink}}:{{/permaLink}}' => $article->getArticleLink(), '{{commentLink}}:{{/commentLink}}' => $article->getArticleLink() . '#comments'); $tpl->setReplacementTags($replacements); return $tpl->parse(); }
/** * * @param \fpcm\model\articles\article $article * @return string */ protected function assignData(\fpcm\model\articles\article $article) { /** * @var \fpcm\model\pubtemplates\article */ $tpl = $this->template; $categoryTexts = array(); $categoryIcons = array(); foreach ($article->getCategories() as $categoryId) { /** * @var \fpcm\model\categories\category */ $category = isset($this->categories[$categoryId]) ? $this->categories[$categoryId] : false; if (!$category) { continue; } $categoryTexts[] = '<span class="fpcm-pub-category-text">' . $category->getName() . '</span>'; if (!$category->getIconPath()) { continue; } $categoryIcons[] = $category->getCategoryImage(); } $shareButtonParser = new \fpcm\model\pubtemplates\sharebuttons($article->getArticleLink(), $article->getTitle()); $commentCount = $this->config->system_comments_enabled && $article->getComments() ? isset($this->commentCounts[$article->getId()]) ? (int) $this->commentCounts[$article->getId()] : 0 : ''; $tpl->setCommentsEnabled($this->config->system_comments_enabled && $article->getComments()); if (isset($this->usersEmails[$article->getCreateuser()])) { $emailAddress = '<a href="mailto:' . $this->usersEmails[$article->getCreateuser()] . '">' . $this->users[$article->getCreateuser()] . '</a>'; } else { $emailAddress = ''; } $replacements = array('{{headline}}' => $article->getTitle(), '{{text}}' => $article->getContent(), '{{author}}' => isset($this->users[$article->getCreateuser()]) ? $this->users[$article->getCreateuser()] : $this->lang->translate('GLOBAL_NOTFOUND'), '{{authorEmail}}' => $emailAddress, '{{date}}' => date($this->config->system_dtmask, $article->getCreatetime()), '{{changeDate}}' => date($this->config->system_dtmask, $article->getChangetime()), '{{changeUser}}' => isset($this->users[$article->getChangeuser()]) ? $this->users[$article->getChangeuser()] : $this->lang->translate('GLOBAL_NOTFOUND'), '{{statusPinned}}' => $article->getPinned() ? $this->lang->translate('PUBLIC_ARTICLE_PINNED') : '', '{{shareButtons}}' => $shareButtonParser->parse(), '{{categoryIcons}}' => implode(PHP_EOL, $categoryIcons), '{{categoryTexts}}' => implode(PHP_EOL, $categoryTexts), '{{commentCount}}' => $commentCount, '{{permaLink}}:{{/permaLink}}' => $article->getArticleLink(), '{{commentLink}}:{{/commentLink}}' => $article->getArticleLink() . '#comments', '<readmore>:</readmore>' => $article->getMd5path(), '{{articleImage}}' => $article->getArticleImage(), '{{sources}}' => $article->getSources()); $tpl->setReplacementTags($replacements); $parsed = $tpl->parse(); if ($this->session->exists()) { $html = array(); $html[] = '<div class="fpcm-pub-articletoolbar-article fpcm-pub-articletoolbar-article' . $article->getId() . '">'; $html[] = '<a href="' . $article->getEditLink() . '">' . $this->lang->translate('HL_ARTICLE_EDIT') . '</a>'; $html[] = '</div>'; $parsed = implode(PHP_EOL, $html) . $parsed; } return $parsed; }
/** * @see \fpcm\controller\abstracts\controller::request() * @return boolean */ public function request() { if (is_null($this->getRequestVar('articleid'))) { $this->redirect('articles/list'); } $this->article = new \fpcm\model\articles\article($this->getRequestVar('articleid')); if (!$this->article->exists()) { $this->view->setNotFound('LOAD_FAILED_ARTICLE', 'articles/list'); return true; } if (!$this->article->getEditPermission()) { $this->view = new \fpcm\model\view\error(); $this->view->addErrorMessage('PERMISSIONS_REQUIRED'); $this->view->render(); return false; } if ($this->getRequestVar('revrestore')) { $this->view->addNoticeMessage('SAVE_SUCCESS_ARTICLEREVRESTORE'); } $this->checkPageToken = $this->checkPageToken(); if ($this->buttonClicked('doAction') && !$this->checkPageToken) { $this->view->addErrorMessage('CSRF_INVALID'); } $revisionIdsArray = !is_null($this->getRequestVar('revisionIds')) ? array_map('intval', $this->getRequestVar('revisionIds')) : false; if ($this->buttonClicked('revisionDelete') && $revisionIdsArray && !$this->showRevision && $this->checkPageToken) { if ($this->article->deleteRevisions($revisionIdsArray)) { $this->view->addNoticeMessage('DELETE_SUCCESS_REVISIONS'); } else { $this->view->addErrorMessage('DELETE_FAILED_REVISIONS'); } } $this->revisionId = !is_null($this->getRequestVar('rev')) ? (int) $this->getRequestVar('rev') : (is_array($revisionIdsArray) ? array_shift($revisionIdsArray) : false); if ($this->buttonClicked('articleRevisionRestore') && ($this->getRequestVar('rev') || $this->getRequestVar('revisionIds')) && $this->checkPageToken) { if ($this->revisionId && $this->article->restoreRevision($this->revisionId)) { $this->redirect('articles/edit&articleid=' . $this->article->getId() . '&revrestore=1'); } else { $this->view->addErrorMessage('SAVE_FAILED_ARTICLEREVRESTORE'); } } if ($this->revisionId) { include_once \fpcm\classes\loader::libGetFilePath('PHP-FineDiff', 'finediff.php'); $this->currentArticle = clone $this->article; if (!$this->revisionId) { $this->revisionId = (int) $this->getRequestVar('rev'); } $this->showRevision = $this->article->getRevision($this->revisionId) ? true : false; $from = $this->currentArticle->getContent(); $to = $this->article->getContent(); $opcode = \FineDiff::getDiffOpcodes($from, $to, \FineDiff::$sentenceGranularity); $this->view->assign('textFrom', \FineDiff::renderDiffToHTMLFromOpcodes($from, $opcode)); $this->view->assign('textTo', \FineDiff::renderDiffToHTMLFromOpcodes($to, $opcode)); } if ($this->buttonClicked('articleDelete') && !$this->showRevision && $this->checkPageToken) { if ($this->article->delete()) { $this->redirect('articles/listall'); } else { $this->view->addErrorMessage('DELETE_FAILED_ARTICLE'); } } $res = false; $allTimer = time(); if ($this->buttonClicked('articleSave') && !$this->showRevision && $this->checkPageToken) { $this->article->prepareRevision(); $data = $this->getRequestVar('article', array(4, 7)); $this->article->setTitle($data['title']); $this->article->setContent($data['content']); $cats = $this->categoryList->getCategoriesCurrentUser(); $categories = isset($data['categories']) ? array_map('intval', $data['categories']) : array(array_shift($cats)->getId()); $this->article->setCategories($categories); if (isset($data['postponed']) && !isset($data['archived'])) { $timer = strtotime($data['postponedate'] . ' ' . (int) $data['postponehour'] . ':' . (int) $data['postponeminute'] . ':00'); $postpone = 1; if ($timer === false) { $timer = $allTimer; $postpone = 0; } $this->article->setPostponed($postpone); $this->article->setCreatetime($timer); } else { if ($this->article->getPostponed() || $this->article->getDraft() && !isset($data['draft'])) { $this->article->setCreatetime($allTimer); } $this->article->setPostponed(0); } $this->article->setPinned(isset($data['pinned']) ? 1 : 0); $this->article->setDraft(isset($data['draft']) ? 1 : 0); $this->article->setComments(isset($data['comments']) ? 1 : 0); $this->article->setApproval($this->permissions->check(array('article' => 'approve')) ? 1 : 0); $this->article->setImagepath(isset($data['imagepath']) ? $data['imagepath'] : ''); $this->article->setSources(isset($data['sources']) ? $data['sources'] : ''); if (isset($data['archived'])) { $this->article->setArchived(1); $this->article->setPinned(0); $this->article->setDraft(0); } else { $this->article->setArchived(0); } if (!$this->article->getTitle() || !$this->article->getContent()) { $this->view->addErrorMessage('SAVE_FAILED_ARTICLE_EMPTY'); return true; } if (isset($data['author']) && trim($data['author'])) { $this->article->setCreateuser($data['author']); } if (isset($data['tweettxt']) && $data['tweettxt']) { $this->article->setTweetOverride($data['tweettxt']); } $this->article->setChangetime($allTimer); $this->article->setChangeuser($this->session->getUserId()); $this->article->setMd5path($this->article->getArticleNicePath()); $this->article->prepareDataSave(); $saved = true; $res = $this->article->update(); if ($res) { $this->article->createRevision(); } } $this->handleCommentActions(); if ($res || $this->getRequestVar('added') == 1) { $this->view->addNoticeMessage('SAVE_SUCCESS_ARTICLE'); } elseif ($this->getRequestVar('added') == 2) { $this->view->addNoticeMessage('SAVE_SUCCESS_ARTICLE_APPROVAL'); } elseif (isset($saved) && !$res) { $this->view->addErrorMessage('SAVE_FAILED_ARTICLE'); } if (!$this->revisionId) { $this->article->prepareDataLoad(); } return true; }