コード例 #1
0
ファイル: ItemServiceTest.php プロジェクト: nidzix/Newscoop
 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())));
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
 /**
  * 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');
     }
 }
コード例 #4
0
ファイル: ApiHandler.php プロジェクト: textagroup/brafton-api
 /**
  * @return NewsItem[]
  */
 public function getNewsRaw()
 {
     return NewsItem::getNewsList($this->newsUrl, "raw");
 }
コード例 #5
0
ファイル: index.php プロジェクト: high/cgeek
			    <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>
コード例 #6
0
ファイル: feed_cache.php プロジェクト: mm999/zebrafeeds
 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;
 }
コード例 #7
0
ファイル: ItemService.php プロジェクト: nidzix/Newscoop
 /**
  * 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);
 }
コード例 #8
0
 /**
  * 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;
 }
コード例 #9
0
ファイル: NewsItemTest.php プロジェクト: nidzix/Newscoop
 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());
 }
コード例 #10
0
 /**
  * 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;
 }
コード例 #11
0
ファイル: AtomReader.php プロジェクト: martinlindhe/core_dev
 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;
         }
     }
 }
コード例 #12
0
ファイル: RssReader.php プロジェクト: martinlindhe/core_dev
 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;
 }
コード例 #13
0
<?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";
コード例 #14
0
 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));
     }
 }