Файл: concrete5.7.5.6/concrete/blocks/rss_displayer/controller.php
Строк: 105
<?php
namespace ConcreteBlockRssDisplayer;
use ConcreteCoreBlockBlockController;
use Loader;
use Core;
class Controller extends BlockController
{
public $itemsToDisplay = "5";
public $showSummary = "1";
public $launchInNewWindow = "1";
public $title = "";
protected $btTable = 'btRssDisplay';
protected $btInterfaceWidth = 400;
protected $btInterfaceHeight = 550;
protected $btCacheBlockRecord = true;
protected $btCacheBlockOutput = true;
protected $btCacheBlockOutputOnPost = true;
protected $btWrapperClass = 'ccm-ui';
protected $btCacheBlockOutputForRegisteredUsers = true;
protected $btCacheBlockOutputLifetime = 3600;
/**
* Used for localization. If we want to localize the name/description we have to include this
*/
public function getBlockTypeDescription()
{
return t("Fetch, parse and display the contents of an RSS or Atom feed.");
}
public function getBlockTypeName()
{
return t("RSS Displayer");
}
public function getJavaScriptStrings()
{
return array(
'feed-address' => t('Please enter a valid feed address.'),
'feed-num-items' => t('Please enter the number of items to display.')
);
}
public function getDefaultDateTimeFormats()
{
$formats = array(
':longDate:',
':shortDate:',
':longTime:',
':shortTime:',
':longDate:longTime:',
':longDate:shortTime:',
':shortDate:longTime:',
':shortDate:shortTime:'
);
$now = new DateTime();
$result = array();
foreach ($formats as $format) {
$result[$format] = $this->formatDateTime($now, $format);
}
return $result;
}
/**
* Format a DateTime instance accordingly to $format
* @param DateTime|null $date
* @param string|bool $format Set to true (default) to use the default format
*/
public function formatDateTime($date, $format = true)
{
$result = '';
if (is_a($date, '\DateTime')) {
if ($format === true) {
$format = $this->dateFormat;
if (!$format) {
$formats = $this->getDefaultDateTimeFormats();
reset($formats);
$format = key($formats);
}
}
$dh = Core::make('helper/date');
/* @var $dh ConcreteCoreLocalizationServiceDate */
switch ($format) {
case ':shortDate:shortTime:':
$result = $dh->formatDateTime($date, false, false);
break;
case ':shortDate:longTime:':
$result = $dh->formatDateTime($date, false, true);
break;
case ':longDate:shortTime:':
$result = $dh->formatDateTime($date, true, false);
break;
case ':longDate:longTime:':
$result = $dh->formatDateTime($date, true, true);
break;
case ':shortDate:':
$result = $dh->formatDate($date, false);
break;
case ':longDate:':
$result = $dh->formatDate($date, true);
break;
case ':shortTime:':
$result = $dh->formatTime($date, false);
break;
case ':longTime:':
$result = $dh->formatTime($date, true);
break;
default:
$result = $dh->formatCustom($format, $date);
}
}
return $result;
}
public function view()
{
$fp = Loader::helper("feed");
$posts = array();
try {
$channel = $fp->load($this->url);
$i = 0;
foreach ($channel as $post) {
$posts[] = $post;
if (($i + 1) == intval($this->itemsToDisplay)) {
break;
}
$i++;
}
} catch (Exception $e) {
$this->set('errorMsg', $e->getMessage());
}
$this->set('posts', $posts);
$this->set('title', $this->title);
}
public function save($data)
{
$args['url'] = isset($data['url']) ? $data['url'] : '';
$args['dateFormat'] = $data['dateFormat'];
$args['itemsToDisplay'] = (intval($data['itemsToDisplay']) > 0) ? intval($data['itemsToDisplay']) : 5;
$args['showSummary'] = ($data['showSummary'] == 1) ? 1 : 0;
$args['launchInNewWindow'] = ($data['launchInNewWindow'] == 1) ? 1 : 0;
$args['title'] = isset($data['title']) ? $data['title'] : '';
switch ($data['standardDateFormat']) {
case ':custom:':
$args['dateFormat'] = $data['customDateFormat'];
break;
default:
$args['dateFormat'] = $data['standardDateFormat'];
break;
}
parent::save($args);
}
public function getSearchableContent()
{
$fp = Loader::helper("feed");
$posts = array();
try {
$channel = $fp->load($this->url);
$i = 0;
foreach ($channel as $post) {
$posts[] = $post;
if (($i + 1) == intval($this->itemsToDisplay)) {
break;
}
$i++;
}
} catch (Exception $e) {
}
$searchContent = '';
foreach ($posts as $item) {
$searchContent .= $item->getTitle() . ' ' . strip_tags($item->getDescription()) . ' ';
}
return $searchContent;
}
}