/** * @private * * returns the id of the post or 'false' if it couldn't be saved */ function _savePostData($article) { $status = $this->_postStatus; $articles = new Articles(); $article->setFields($this->_getArticleCustomFields()); // notifiy about this event $this->notifyEvent(EVENT_PRE_POST_ADD, array("article" => &$article)); // in case the post is already in the db if ($this->_postId != "") { $article->setId($this->_postId); $artId = $this->_postId; $postSavedOk = $articles->updateArticle($article); if ($postSavedOk) { $artId = $this->_postId; } else { $artId = false; } } else { $artId = $articles->addArticle($article); } return $artId; }
function perform() { $status = POST_STATUS_DRAFT; $articles = new Articles(); $postText = Textfilter::xhtmlize($this->_postText) . POST_EXTENDED_TEXT_MODIFIER . Textfilter::xhtmlize($this->_postExtendedText); $article = new Article($this->_postTopic, $postText, $this->_postCategories, $this->_userInfo->getId(), $this->_blogInfo->getId(), $status, 0, array(), $this->_postSlug); // set also the date before it's too late $article->setDateObject($this->_postTimestamp); $article->setCommentsEnabled($this->_commentsEnabled); // prepare the custom fields $fields = array(); if (is_array($this->_customFields)) { foreach ($this->_customFields as $fieldId => $fieldValue) { // 3 of those parameters are not really need when creating a new object... it's enough that // we know the field definition id. $customField = new CustomFieldValue($fieldId, $fieldValue, "", -1, "", $artId, $this->_blogInfo->getId(), -1); array_push($fields, $customField); } $article->setFields($fields); } // in case the post is already in the db if ($this->_postId != "") { $article->setId($this->_postId); $postSavedOk = $articles->updateArticle($article); if ($postSavedOk) { $artId = $this->_postId; } else { $artId = false; } } else { $artId = $articles->addArticle($article); } // once we have built the object, we can add it to the database $this->_view = new AdminXmlView($this->_blogInfo, "response"); $this->_view->setValue("method", "saveXmlDraft"); if ($artId) { $this->_view->setValue("result", $artId); } else { $this->_view->setValue("result", "0"); } return true; }
/** * Carries out the specified action */ function perform() { // fetch the data $this->_fetchCommonData(); $this->_postId = $this->_request->getValue("postId"); // fetch the old post $articles = new Articles(); $post = $articles->getBlogArticle($this->_postId, $this->_blogInfo->getId()); // there must be something wrong if we can't fetch the post that we are trying to update... if (!$post) { $this->_view = new AdminPostsListView($this->_blogInfo); $this->_view->setErrorMessage($this->_locale->tr("error_fetching_post")); $this->setCommonData(); return false; } // if we got it, update some fields $post->setTopic(stripslashes($this->_postTopic)); $postText = $this->_postText . POST_EXTENDED_TEXT_MODIFIER . $this->_postExtendedText; $post->setText(stripslashes($postText)); $post->setCategoryIds($this->_postCategories); $post->setStatus($this->_postStatus); $post->setDateObject($this->_postTimestamp); $post->setCommentsEnabled($this->_commentsEnabled); $post->setPostSlug($this->_postSlug); // prepare the custom fields $fields = array(); if (is_array($this->_customFields)) { foreach ($this->_customFields as $fieldId => $fieldValue) { // 3 of those parameters are not really need when creating a new object... it's enough that // we know the field definition id. $customField = new CustomFieldValue($fieldId, $fieldValue, "", -1, "", $post->getId(), $this->_blogInfo->getId(), -1); array_push($fields, $customField); } $post->setFields($fields); } // fire the pre event $this->notifyEvent(EVENT_PRE_POST_UPDATE, array("article" => &$post)); // and finally save the post to the database if (!$articles->updateArticle($post)) { $this->_view = new AdminPostsListView($this->_blogInfo); $this->_view->setErrorMessage($this->_locale->tr("error_updating_post")); $this->setCommonData(); return false; } // clean up the cache CacheControl::resetBlogCache($this->_blogInfo->getId()); // create the definitive view $this->_view = new AdminPostsListView($this->_blogInfo); // show a message saying that the post was updated $message = $this->_locale->pr("post_updated_ok", $post->getTopic()); // check if there was a previous notification $notifications = new ArticleNotifications(); $artNotification = $notifications->getUserArticleNotification($this->_postId, $this->_blogInfo->getId(), $this->_userInfo->getId()); // check if we have to add or remove a notification if ($this->_sendNotification) { if (!$artNotification) { // if there wasn't one and now we want it, we have to add it $notifications->addNotification($this->_postId, $this->_blogInfo->getId(), $this->_userInfo->getId()); $message .= " " . $this->_locale->tr("notification_added"); } } else { // if we don't want notifications, then we have to check if there is one since we // should remove it if ($artNotification) { $notifications->deleteNotification($this->_postId, $this->_blogInfo->getId(), $this->_userInfo->getId()); $message .= " " . $this->_locale->tr("notification_removed"); } } // if the "send xmlrpc pings" checkbox was enabled, do something about it... if ($post->getStatus() == POST_STATUS_PUBLISHED) { // get the links from the text of the post $postLinks = StringUtils::getLinks(stripslashes($post->getText())); // get the real trackback links from trackbackUrls $trackbackLinks = array(); foreach (explode("\r\n", $this->_trackbackUrls) as $host) { trim($host); if ($host != "" && $host != "\r\n" && $host != "\r" && $host != "\n") { array_push($trackbackLinks, $host); } } if ($this->_sendPings) { $message .= "<br/><br/>" . $this->sendXmlRpcPings(); } // and now check what to do with the trackbacks if ($this->_sendTrackbacks) { // if no links, there is nothing to do if (count($postLinks) == 0 && count($trackbackLinks) == 0) { $this->_view = new AdminPostsListView($this->_blogInfo); $this->_view->setErrorMessage($this->_locale->tr("error_no_trackback_links_sent")); } else { $this->_view = new AdminTemplatedView($this->_blogInfo, "sendtrackbacks"); // get the links from the text of the post $this->_view->setValue("post", $post); $this->_view->setValue("postLinks", $postLinks); $this->_view->setValue("trackbackLinks", $trackbackLinks); } } } // show the message $this->_view->setSuccessMessage($message); // and fire the post event $this->notifyEvent(EVENT_POST_POST_UPDATE, array("article" => &$post)); $this->setCommonData(); return true; }
/** * funkce updatne clanek * @param int $article_id * @param object $data * @return bool */ public function updateArticle($article_id, $data) { try { return Articles::updateArticle($article_id, $data); } catch (Exception $e) { throw new RPCFault($e->getMessage(), $e->getCode(), $e->getCode()); } }