public function testSaveCanceledItem() { $meta = new ItemMeta(); $meta->setPubStatus(ItemMeta::STATUS_CANCELED); $item = new NewsItem('tag:id'); $item->setItemMeta($meta); $this->service->save($item); $this->assertEquals(0, count($this->service->findBy(array()))); }
/** * getDetail - Phương thức dùng để lấy dữ liệu */ public function getDetail($news_id = null) { Yii::import('application.modules.news.models.NewsItem'); $data = array(); if ($news_id) { $data = NewsItem::model()->findByPk($news_id); } return $data; }
/** * Create default news setup */ function requireDefaultRecords() { parent::requireDefaultRecords(); if (!DataObject::get_one('NewsHolder')) { $newsHolder = new NewsHolder(); $newsHolder->Title = 'News'; $newsHolder->Namespace = 'global'; $newsHolder->URLSegment = 'news'; $newsHolder->Status = 'Published'; $newsHolder->write(); $newsHolder->publish('Stage', 'Live'); $newsItem = new NewsItem(); $newsItem->Title = _t('NewsHolder.SUCTITLE', 'SilverStripe news module successfully installed'); $newsItem->Date = date('Y-m-d'); $newsItem->URLSegment = 'sample-news-item'; $newsItem->Content = _t('NewsHolder.SUCCONTENT', 'Congratulations, the SilverStripe news module has been successfully installed. This news item can be safely deleted.'); $newsItem->Status = 'Published'; $newsItem->ParentID = $newsHolder->ID; $newsItem->write(); $newsItem->publish('Stage', 'Live'); DB::alteration_message('News item created', 'created'); } }
/** * @return NewsItem[] */ public function getNewsRaw() { return NewsItem::getNewsList($this->newsUrl, "raw"); }
<description>' . $item->getContent() . '</description> </item>'; } $rss .= ' </channel> </rss>'; return $rss; } } $newsData = array('title' => 'GIT repository for the source', 'content' => 'The source code for my site is now on GitHub, so if you are interested on how my site is build the URL is: <a href="http://github.com/high/cgeek">http://github.com/high/cgeek</a>.', 'created' => mktime(0, 0, 0, 3, 14, 2009)); $newsItem = new NewsItem(); $newsItem->loadData($newsData); $newsItems[] = $newsItem; $newsData = array('title' => 'New site is up', 'content' => 'Well, here is the new site. My goal is to make it as simple as possible and just display the things that are essential to me', 'created' => mktime(0, 0, 0, 3, 12, 2010)); $newsItem = new NewsItem(); $newsItem->loadData($newsData); $newsItems[] = $newsItem; $rss = new RSSFeed(); $rss->setNewsItems($newsItems); $rssText = $rss->compile(); file_put_contents("rss.xml", $rssText); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>High's page</title> <link rel="stylesheet" type="text/css" href="site.css"></link>
public function getItem($itemId) { $itemarr = DBProxy::getInstance()->getSingleItem($itemId); $sub = SubscriptionStorage::getInstance()->getSubscription($itemarr['source_id']); $item = NewsItem::createFromFlatArray($sub->source, $itemarr, time() - ZF_SESSION_DURATION); DBProxy::getInstance()->markItemsAsImpressed(array($itemId)); return $item; }
/** * Publish picture item * * @param Newscoop\News\NewsItem $item * @return Image */ private function publishPicture(NewsItem $item) { $rendition = $item->getContentSet()->getRemoteContent('rend:baseImage') ?: $item->getContentSet()->getRemoteContent('rend:viewImage'); $realpath = tempnam('/tmp', 'picture'); file_put_contents($realpath, file_get_contents($item->getFeed()->getRemoteContentSrc($rendition))); $imagesize = getimagesize($realpath); $info = array('name' => uniqid(), 'type' => $imagesize['mime'], 'tmp_name' => $realpath, 'size' => filesize($realpath), 'error' => 0); $attributes = array('Photographer' => $item->getContentMeta()->getByline(), 'Description' => $item->getContentMeta()->getHeadline(), 'Source' => \Newscoop\Entity\Picture::SOURCE_INGEST, 'Caption' => $item->getContentMeta()->getDescription(), 'Status' => \Newscoop\Entity\Picture::STATUS_APPROVED, 'Date' => $item->getItemMeta()->getFirstCreated()->format(self::DATE_FORMAT), 'Place' => $item->getContentMeta()->getSubject('cptType:5')->getName()); return \Image::OnImageUpload($info, $attributes, null, null, true); }
/** * Save news item from given xml file * * @param string $filename * @return Newscoop\News\Item */ private function saveNewsItem($filename) { $xml = simplexml_load_file(APPLICATION_PATH . "/../tests/fixtures/{$filename}"); $item = NewsItem::createFromXml($xml->itemSet->newsItem); $this->service->save($item); return $item; }
public function testGetContentSetRemoteContent() { $xml = simplexml_load_file(APPLICATION_PATH . '/../tests/fixtures/' . self::PICTURE_XML); $item = NewsItem::createFromXml($xml->itemSet->newsItem); $contentSet = $item->getContentSet(); $remoteContent = $contentSet->getRemoteContent(); $this->assertEquals(3, count($remoteContent)); $this->assertInstanceOf('Newscoop\\News\\RemoteContent', $remoteContent[0]); $this->assertEquals('tag:example.com,0000:binary_LM1E7C611BX01-BASEIMAGE', $remoteContent[0]->getResidref()); $this->assertEquals('http://content.example.com/auth-server/content/tag:example.com,0000:newsml_LM1E7C611BX01:1536672970/tag:example.com,0000:binary_LM1E7C611BX01-BASEIMAGE', $remoteContent[0]->getHref()); $this->assertEquals(827687, $remoteContent[0]->getSize()); $this->assertEquals('rend:baseImage', $remoteContent[0]->getRendition()); $this->assertEquals('image/jpeg', $remoteContent[0]->getContentType()); $this->assertEquals('fmt:jpegBaseline', $remoteContent[0]->getFormat()); $this->assertEquals('G3:IIM:FH:BaseImageGenerator', $remoteContent[0]->getGenerator()); $this->assertEquals(2313, $remoteContent[0]->getWidth()); $this->assertEquals(3500, $remoteContent[0]->getHeight()); $this->assertEquals(17478, $contentSet->getRemoteContent('rend:thumbnail')->getSize()); }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = NewsItem::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
private function parseEntry() { $item = new NewsItem(); while ($this->reader->read()) { if ($this->reader->nodeType == \XMLReader::END_ELEMENT && $this->reader->name == 'entry') { if ($item->title == $item->desc) { $item->desc = ''; } $this->items[] = $item; return; } if ($this->reader->nodeType != \XMLReader::ELEMENT) { continue; } switch (strtolower($this->reader->name)) { case 'title': $this->reader->read(); $item->title = html_entity_decode($this->reader->value, ENT_QUOTES, 'UTF-8'); break; case 'summary': $this->reader->read(); $item->desc = html_entity_decode($this->reader->value, ENT_QUOTES, 'UTF-8'); break; case 'content': $this->reader->read(); $item->body = html_entity_decode($this->reader->value, ENT_QUOTES, 'UTF-8'); break; case 'updated': $this->reader->read(); $item->setTimestamp($this->reader->value); break; case 'name': ///XXX :hack to avoid 2-level parsing of <author><name>Sveriges Radio</name></author> $this->reader->read(); $item->author = html_entity_decode($this->reader->value, ENT_QUOTES, 'UTF-8'); break; case 'id': $this->reader->read(); $item->guid = $this->reader->value; break; case 'link': switch ($this->reader->getAttribute('rel')) { case 'alternate': $item->setUrl($this->reader->getAttribute('href')); break; case 'enclosure': switch ($this->reader->getAttribute('type')) { case 'video/x-flv': case 'video/quicktime': $item->video_url = $this->reader->getAttribute('href'); $item->video_mime = $this->reader->getAttribute('type'); if ($this->reader->getAttribute('length')) { $this->duration = $this->reader->getAttribute('length'); } break; case 'image/jpeg': $item->image_url = $this->reader->getAttribute('href'); $item->image_mime = $this->reader->getAttribute('type'); break; default: throw new \Exception('unknown enclosure mime: ' . $this->reader->getAttribute('type')); } break; case 'image': switch ($this->reader->getAttribute('type')) { case 'image/png': $img = new ImageResource(); $img->setUrl($this->reader->getAttribute('href')); $img->setMimetype($this->reader->getAttribute('type')); $item->addMedia($img); break; default: throw new \Exception('unknown image mime: ' . $this->reader->getAttribute('type')); } break; case 'replies': //FIXME: handle break; case 'edit': //XXX ??? //XXX ??? case 'self': //XXX ??? //XXX ??? case '': // no "rel" attribute exists break; default: d($item); throw new \Exception('unknown link type: ' . $this->reader->getAttribute('rel')); } break; default: // echo 'unknown entry entry: '.$this->reader->name.ln(); break; } } }
private function parseItem() { $item = new NewsItem(); while ($this->reader->read()) { if ($this->reader->nodeType == XMLReader::END_ELEMENT && $this->reader->name == 'item') { if ($item->getTitle() == $item->desc) { $item->desc = ''; } $this->items[] = $item; return; } if ($this->reader->nodeType != XMLReader::ELEMENT) { continue; } $key = strtolower($this->reader->name); switch ($key) { case 'title': $item->setTitle(trim($this->reader->readValue())); break; case 'description': $item->desc = trim($this->reader->readValue()); break; case 'content:encoded': // XXX non standard tag $item->body = trim($this->reader->readValue()); break; case 'author': case 'dc:creator': // XXX non standard tag $item->author = $this->reader->readValue(); break; case 'link': $url = $this->reader->readValue(); $item->setUrl(trim(self::FixUrl($url))); break; case 'pubdate': case 'dc:date': // XXX non standard tag, <dc:date>2012-02-01 05:50:00</dc:date> $item->setTimestamp($this->reader->readValue()); break; case 'guid': $item->guid = $this->reader->readValue(); break; case 'category': $item->category = $this->reader->readValue(); break; default: if (in_array($key, $this->ext_tags)) { $this->pluginParseTag($key, $item); } else { // echo 'unknown item entry ' .$this->reader->name.ln(); } break; } } $this->items[] = $item; }
<?php $page->createTitle(); print $page->getHeader(); if (isset($_GET['msg'])) { $alert = new Alert(); $alert->printAlerts(); } include_once "lib/modules/article.php"; $article = new NewsItem($mySQL); $article->setID($_GET['a']); $article->setPreview(false); $article->setPublish(true); print "<div class=\"row pane\">\n"; print " <div class=\"col-xs-12\">\n"; if ($article->createArticle(1)) { if ($article->getPublishState()) { print " <div class=\"row\">\n"; print " <div class=\"col-md-3\">\n"; print " <small>Article by: " . $article->getAuthor() . "</small>\n"; print " </div>\n"; print " <div class=\"col-md-3\">\n"; print " " . $article->getPublish() . "\n"; print " </div>\n"; print " <div class=\"col-md-3 hidden-xs\">\n"; if ($article->getEdited() !== false) { print " <small>Edited by: " . $article->getEdited() . "</small>\n"; } print " </div>\n"; print " <div class=\"col-md-3 hidden-xs\">\n"; print " " . $article->getEdit() . "\n";
function editView($id, $language) { global $Controller, $DB; $obj = new NewsItem($id, $language); if (!$obj) { return false; } if (!$obj->mayI(EDIT)) { errorPage(401); } $this->setContent('header', __('Editing') . ' <i>"' . $obj . '"</i>'); if ($_REQUEST['view'] == 'content') { $form = new Form('editN'); $translate = array(); if (!@$obj->content['Preamble'] && !$_POST['apre']) { $translate[] = 'Preamble'; } if (!@$obj->content['Text'] && !$_POST['atxt']) { $translate[] = 'Text'; } $trFrom = $trSect = $trText = array(); if (!empty($translate)) { $newest = $DB->asArray("SELECT t1.section, t1.* FROM content AS t1\n LEFT JOIN content t2 ON t1.section = t2.section\n AND t1.language = t2.language\n AND t1.revision < t2.revision\n WHERE t2.section IS NULL\n AND t1.id='" . Database::escape($id) . "'\n AND (t1.section='" . implode("' OR t1.section='", Database::escape($translate, true)) . "')\n ORDER BY t1.revision DESC", true); foreach ($newest as $s => $translation) { $trFrom[] = $translation['language']; $trText[] = $translation['content']; $trSect[] = $s; } } if (!$obj->Name && !$_POST['atitle']) { if ($info = $DB->metadata->getRow(array('id' => $obj->ID, 'field' => 'Name'), 'value, metameta')) { $trFrom[] = $info['metameta']; $trText[] = $info['value']; $trSect[] = 'Name'; } } $translation = array(); if (!empty($trText)) { $translation = @array_combine($trSect, google::translate($trText, $trFrom, $language)); } $this->setContent('main', '<div class="nav"><a href="' . url(null, array('id', 'edit')) . '">' . icon('small/arrow_left') . __('Back') . '</a></div>' . $form->collection(new Hidden('asave', 1), new Hidden('edit', $id), new Set(new Hidden('lang', $language), new FormText(__('Language'), google::languages($language)), empty($translation) ? null : '<span class="warning">' . __('Warning - Some of the text has been automatically translated') . '</span>', new Input(__('Title'), 'atitle', $_POST['atitle'] ? $_POST['atitle'] : ($obj->Name ? $obj->Name : @$translation['Name'])), new Li(new Datepicker(__('Publish'), 'apubd', $_POST['apubd'] ? $_POST['apubd'] : ($obj->Publish ? date('Y-m-d', $obj->Publish) : '')), new Timepickr(false, 'apubt', $_POST['apubt'] ? $_POST['pubt'] : ($obj->Publish ? date('H:i', $obj->Publish) : ''))), new htmlfield(__('Text'), 'atxt', $_POST['atxt'] ? $_POST['atxt'] : (@$obj->content['Text'] ? @$obj->content['Text'] : @$translation['Text'])), new htmlfield(__('Preamble'), 'apre', $_POST['apre'] ? $_POST['apre'] : (@$obj->content['Preamble'] ? @$obj->content['Preamble'] : @$translation['Preamble']))))); } else { PageEditor::saveChanges($obj); $this->setContent('main', PageEditor::editor($id)); } }