public function testPublishText() { $xml = simplexml_load_file(APPLICATION_PATH . '/../tests/fixtures/' . self::TEXT_XML); $item = NewsItem::createFromXml($xml->itemSet->newsItem); $articles = \Article::GetByName($item->getContentMeta()->getHeadline(), null, null, null, null, true); foreach ($articles as $article) { $article->delete(); } $this->assertFalse($item->isPublished()); $this->service->publish($item); $this->assertTrue($item->isPublished()); $this->assertInstanceOf('DateTime', $item->getPublished()); $articles = \Article::GetByName($item->getContentMeta()->getHeadline(), null, null, null, null, true); $this->assertEquals(1, count($articles)); $article = $articles[0]; $this->assertEquals($item->getContentMeta()->getHeadline(), $article->getTitle()); $this->assertEquals('newsml', $article->getType()); $this->assertEquals($item->getItemMeta()->getFirstCreated()->format('Y-m-d H:i:s'), $article->getCreationDate()); $articleData = $article->getArticleData(); $this->assertEquals($item->getId(), $articleData->getFieldValue('guid', true)); $this->assertEquals($item->getVersion(), $articleData->getFieldValue('version')); $this->assertEquals($item->getContentMeta()->getUrgency(), $articleData->getFieldValue('urgency')); $this->assertEquals($item->getRightsInfo()->first()->getCopyrightNotice(), $articleData->getFieldValue('copyright')); $this->assertEquals($item->getItemMeta()->getProvider(), $articleData->getFieldValue('provider')); $this->assertEquals($item->getContentMeta()->getDescription(), $articleData->getFieldValue('description')); $this->assertEquals($item->getContentMeta()->getDateline(), $articleData->getFieldValue('dateline')); $this->assertEquals($item->getContentMeta()->getByline(), $articleData->getFieldValue('byline')); $this->assertEquals($item->getContentMeta()->getCreditline(), $articleData->getFieldValue('creditline')); $this->assertEquals((string) $item->getContentSet()->getInlineContent(), $articleData->getFieldValue('inlinecontent')); }
/** * Campsite set_article function plugin * * Type: function * Name: set_article * Purpose: * * @param array * $p_params[name] The Name of the article to be set * $p_params[number] The Number of the article to be set * @param object * $p_smarty The Smarty object */ function smarty_function_set_article($p_params, &$p_smarty) { // gets the context variable $campsite = $p_smarty->getTemplateVars('gimme'); if (isset($p_params['number'])) { $attrName = 'number'; $attrValue = $p_params['number']; $articleNumber = intval($p_params['number']); } elseif (isset($p_params['name'])) { $articles = Article::GetByName($p_params['name'], $campsite->publication->identifier, $campsite->issue->number, $campsite->section->number, $campsite->language->number); if (isset($articles[0])) { $attrName = 'name'; $attrValue = $p_params['name']; $articleNumber = intval($articles[0]->getArticleNumber()); } else { $campsite->article->trigger_invalid_value_error($attrName, $attrValue, $p_smarty); return false; } } else { $property = array_shift(array_keys($p_params)); CampTemplate::singleton()->trigger_error("invalid parameter '{$property}' in set_article"); return false; } $articleObj = new MetaArticle($campsite->language->number, $articleNumber); if ($articleObj->defined) { $campsite->article = $articleObj; } else { $campsite->article->trigger_invalid_value_error($attrName, $attrValue, $p_smarty); } }
if ($f_mode == "single") { $url = camp_html_article_url($tmpArticle, $tmpArticle->getLanguageId(), "edit.php"); } else { $url = $destArticleIndexUrl; } ArticleIndex::RunIndexer(3, 10, true); camp_html_goto_page($url); } elseif ($f_action == "submit") { // Submit all the articles requested. $tmpArticles = array(); foreach ($doAction as $articleNumber => $languageArray) { foreach ($languageArray as $languageId => $action) { $tmpArticle = new Article($languageId, $articleNumber); $tmpArticle->setTitle($articleNames[$articleNumber][$languageId]); // Check if the name already exists in the destination section. $conflictingArticles = Article::GetByName($tmpArticle->getTitle(), $f_destination_publication_id, $f_destination_issue_number, $f_destination_section_number, null, true); if (count($conflictingArticles) > 0) { $conflictingArticle = array_pop($conflictingArticles); $conflictingArticleLink = camp_html_article_url($conflictingArticle, $conflictingArticle->getLanguageId(), "edit.php"); camp_html_add_msg($translator->trans("The article could not be submitted.", array(), 'articles') . " " . $translator->trans("You cannot have two articles in the same section with the same name. The article name you specified is already in use by the article '\$1'.", array('$1' => "<a href='{$conflictingArticleLink}'>" . $conflictingArticle->getName() . "</a>"), 'articles')); $args = $_REQUEST; unset($args["action_button"]); unset($args["f_article_code"]); $argsStr = camp_implode_keys_and_values($args, "=", "&"); foreach ($_REQUEST["f_article_code"] as $code) { $argsStr .= "&f_article_code[]={$code}"; } $backLink = "/{$ADMIN}/articles/duplicate.php?{$argsStr}"; camp_html_goto_page($backLink); } else { $tmpArticle->move($f_destination_publication_id, $f_destination_issue_number, $f_destination_section_number);
if ($f_section_number > 0) { $sectionObj = new Section($f_publication_id, $f_issue_number, $f_article_language_id, $f_section_number); if (!$sectionObj->exists()) { camp_html_display_error($translator->trans('Section does not exist.'), $backlink); exit; } } } } // Loads article data from XML file into database $xmlArticle = array(); $articleFields = array(); $errorMessages = array(); $articleCount = 0; foreach ($xml->article as $article) { $existingArticles = Article::GetByName((string) $article->name, $f_publication_id, $f_issue_number, $f_section_number, $f_article_language_id, true); // There is already an article with same name and language if (count($existingArticles) > 0) { $existingArticle = array_pop($existingArticles); // Is overwrite articles false? then skip and process next article if ($f_overwrite_articles == 'N') { $errorMessages[][] = $translator->trans('Article <i>$1</i> already exists, and was not overwritten.<br />', array('$1' => $article->name), 'articles'); continue; } } if (isset($existingArticle) && $existingArticle->exists()) { $articleObj = $existingArticle; } else { $articleObj = new Article($f_article_language_id); $articleName = (string) $article->name; $articleObj->create($f_article_type, $articleName, $f_publication_id, $f_issue_number, $f_section_number);
if (!$issueObj->exists()) { camp_html_display_error(getGS('Issue does not exist.')); exit; } if ($section_number > 0) { $sectionObj = new Section($publication_id, $issue_number, $f_article_language, $section_number); if (!$sectionObj->exists()) { camp_html_display_error(getGS('Section does not exist.')); exit; } } } } // Create article $articleObj = new Article($f_article_language); $conflictingArticles = Article::GetByName($f_article_name, $publication_id, $issue_number, $section_number, null, true); if (count($conflictingArticles) > 0) { $conflictingArticle = array_pop($conflictingArticles); $conflictingArticleLink = camp_html_article_url($conflictingArticle, $conflictingArticle->getLanguageId(), 'edit.php'); camp_html_add_msg(getGS("You cannot have two articles in the same section with the same name. The article name you specified is already in use by the article '\$1'.", "<a href='{$conflictingArticleLink}'>" . $conflictingArticle->getName() . "</a>")); camp_html_goto_page($backLink); } else { $articleObj->create($f_article_type, $f_article_name, $publication_id, $issue_number, $section_number); } if ($articleObj->exists()) { $author = $this->_helper->service('user')->getCurrentUser()->getAuthorId(); if (empty($author)) { $articleObj->setCreatorId($g_user->getUserId()); $authorObj = new Author($g_user->getRealName()); if (!$authorObj->exists()) { $authorData = Author::ReadName($g_user->getRealName());