use anonymous function
This commit is contained in:
parent
09131d5593
commit
9669c42338
1 changed files with 182 additions and 202 deletions
384
_public.php
384
_public.php
|
@ -14,226 +14,206 @@ if (!defined('DC_RC_PATH')) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
dcCore::app()->addBehavior(
|
dcCore::app()->addBehavior('publicEntryAfterContent', function (dcCore $core, context $_ctx) {
|
||||||
'publicEntryAfterContent',
|
dcCore::app()->blog->settings->addNamespace('fac');
|
||||||
['facPublic', 'publicEntryAfterContent']
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
# Not active or not a post
|
||||||
* @ingroup DC_PLUGIN_FAC
|
if (!dcCore::app()->blog->settings->fac->fac_active
|
||||||
* @brief Linked feed to entries - public methods.
|
|| !dcCore::app()->ctx->exists('posts')) {
|
||||||
* @since 2.6
|
return null;
|
||||||
*/
|
}
|
||||||
class facPublic
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Add feed after entry
|
|
||||||
*
|
|
||||||
* @param dcCore $core dcCore instance
|
|
||||||
* @param context $_ctx context instance
|
|
||||||
*/
|
|
||||||
public static function publicEntryAfterContent(dcCore $core, context $_ctx)
|
|
||||||
{
|
|
||||||
dcCore::app()->blog->settings->addNamespace('fac');
|
|
||||||
|
|
||||||
# Not active or not a post
|
# Not in page to show
|
||||||
if (!dcCore::app()->blog->settings->fac->fac_active
|
$types = @unserialize((string) dcCore::app()->blog->settings->fac->fac_public_tpltypes);
|
||||||
|| !dcCore::app()->ctx->exists('posts')) {
|
if (!is_array($types)
|
||||||
return null;
|
|| !in_array(dcCore::app()->url->type, $types)) {
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
# Not in page to show
|
# Get related feed
|
||||||
$types = @unserialize((string) dcCore::app()->blog->settings->fac->fac_public_tpltypes);
|
$fac_url = dcCore::app()->meta->getMetadata([
|
||||||
if (!is_array($types)
|
'meta_type' => 'fac',
|
||||||
|| !in_array(dcCore::app()->url->type, $types)) {
|
'post_id' => dcCore::app()->ctx->posts->post_id,
|
||||||
return null;
|
'limit' => 1,
|
||||||
}
|
]);
|
||||||
|
if ($fac_url->isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
# Get related feed
|
# Get related format
|
||||||
$fac_url = dcCore::app()->meta->getMetadata([
|
$fac_format = dcCore::app()->meta->getMetadata([
|
||||||
'meta_type' => 'fac',
|
'meta_type' => 'facformat',
|
||||||
'post_id' => dcCore::app()->ctx->posts->post_id,
|
'post_id' => dcCore::app()->ctx->posts->post_id,
|
||||||
'limit' => 1,
|
'limit' => 1,
|
||||||
]);
|
]);
|
||||||
if ($fac_url->isEmpty()) {
|
if ($fac_format->isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get related format
|
# Get format info
|
||||||
$fac_format = dcCore::app()->meta->getMetadata([
|
$default_format = [
|
||||||
'meta_type' => 'facformat',
|
'name' => 'default',
|
||||||
'post_id' => dcCore::app()->ctx->posts->post_id,
|
'dateformat' => '',
|
||||||
'limit' => 1,
|
'lineslimit' => '5',
|
||||||
]);
|
'linestitletext' => '%T',
|
||||||
if ($fac_format->isEmpty()) {
|
'linestitleover' => '%D',
|
||||||
return null;
|
'linestitlelength' => '150',
|
||||||
}
|
'showlinesdescription' => '0',
|
||||||
|
'linesdescriptionlength' => '350',
|
||||||
|
'linesdescriptionnohtml' => '1',
|
||||||
|
'showlinescontent' => '0',
|
||||||
|
'linescontentlength' => '350',
|
||||||
|
'linescontentnohtml' => '1',
|
||||||
|
];
|
||||||
|
|
||||||
# Get format info
|
$formats = @unserialize((string) dcCore::app()->blog->settings->fac->fac_formats);
|
||||||
$default_format = [
|
if (empty($formats)
|
||||||
'name' => 'default',
|
|| !is_array($formats)
|
||||||
'dateformat' => '',
|
|| !isset($formats[$fac_format->meta_id])) {
|
||||||
'lineslimit' => '5',
|
$format = $default_format;
|
||||||
'linestitletext' => '%T',
|
} else {
|
||||||
'linestitleover' => '%D',
|
$format = array_merge(
|
||||||
'linestitlelength' => '150',
|
$default_format,
|
||||||
'showlinesdescription' => '0',
|
$formats[$fac_format->meta_id]
|
||||||
'linesdescriptionlength' => '350',
|
);
|
||||||
'linesdescriptionnohtml' => '1',
|
}
|
||||||
'showlinescontent' => '0',
|
|
||||||
'linescontentlength' => '350',
|
|
||||||
'linescontentnohtml' => '1',
|
|
||||||
];
|
|
||||||
|
|
||||||
$formats = @unserialize((string) dcCore::app()->blog->settings->fac->fac_formats);
|
# Read feed url
|
||||||
if (empty($formats)
|
$cache = is_dir(DC_TPL_CACHE . '/fac') ? DC_TPL_CACHE . '/fac' : null;
|
||||||
|| !is_array($formats)
|
|
||||||
|| !isset($formats[$fac_format->meta_id])) {
|
|
||||||
$format = $default_format;
|
|
||||||
} else {
|
|
||||||
$format = array_merge(
|
|
||||||
$default_format,
|
|
||||||
$formats[$fac_format->meta_id]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
# Read feed url
|
try {
|
||||||
$cache = is_dir(DC_TPL_CACHE . '/fac') ? DC_TPL_CACHE . '/fac' : null;
|
$feed = feedReader::quickParse($fac_url->meta_id, $cache);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$feed = null;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
# No entries
|
||||||
$feed = feedReader::quickParse($fac_url->meta_id, $cache);
|
if (!$feed) {
|
||||||
} catch (Exception $e) {
|
return null;
|
||||||
$feed = null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
# No entries
|
# Feed title
|
||||||
if (!$feed) {
|
$feedtitle = '';
|
||||||
return null;
|
if ('' != dcCore::app()->blog->settings->fac->fac_defaultfeedtitle) {
|
||||||
}
|
$feedtitle = '<h3>' . html::escapeHTML(
|
||||||
|
empty($feed->title) ?
|
||||||
|
str_replace(
|
||||||
|
'%T',
|
||||||
|
__('a related feed'),
|
||||||
|
dcCore::app()->blog->settings->fac->fac_defaultfeedtitle
|
||||||
|
) :
|
||||||
|
str_replace(
|
||||||
|
'%T',
|
||||||
|
$feed->title,
|
||||||
|
dcCore::app()->blog->settings->fac->fac_defaultfeedtitle
|
||||||
|
)
|
||||||
|
) . '</h3>';
|
||||||
|
}
|
||||||
|
|
||||||
# Feed title
|
# Feed desc
|
||||||
$feedtitle = '';
|
$feeddesc = '';
|
||||||
if ('' != dcCore::app()->blog->settings->fac->fac_defaultfeedtitle) {
|
if (dcCore::app()->blog->settings->fac->fac_showfeeddesc
|
||||||
$feedtitle = '<h3>' . html::escapeHTML(
|
&& '' != $feed->description) {
|
||||||
empty($feed->title) ?
|
$feeddesc = '<p>' . context::global_filters(
|
||||||
str_replace(
|
$feed->description,
|
||||||
|
['encode_xml', 'remove_html']
|
||||||
|
) . '</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
# Date format
|
||||||
|
$dateformat = '' != $format['dateformat'] ?
|
||||||
|
$format['dateformat'] :
|
||||||
|
dcCore::app()->blog->settings->system->date_format . ',' . dcCore::app()->blog->settings->system->time_format;
|
||||||
|
|
||||||
|
# Enrties limit
|
||||||
|
$entrieslimit = abs((int) $format['lineslimit']);
|
||||||
|
$uselimit = $entrieslimit > 0 ? true : false;
|
||||||
|
|
||||||
|
echo
|
||||||
|
'<div class="post-fac">' .
|
||||||
|
$feedtitle . $feeddesc .
|
||||||
|
'<dl>';
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
foreach ($feed->items as $item) {
|
||||||
|
# Format date
|
||||||
|
$date = dt::dt2str($dateformat, $item->pubdate);
|
||||||
|
|
||||||
|
# Entries title
|
||||||
|
$title = context::global_filters(
|
||||||
|
str_replace(
|
||||||
|
[
|
||||||
|
'%D',
|
||||||
'%T',
|
'%T',
|
||||||
__('a related feed'),
|
'%A',
|
||||||
dcCore::app()->blog->settings->fac->fac_defaultfeedtitle
|
'%E',
|
||||||
) :
|
'%C',
|
||||||
str_replace(
|
],
|
||||||
|
[
|
||||||
|
$date,
|
||||||
|
$item->title,
|
||||||
|
$item->creator,
|
||||||
|
$item->description,
|
||||||
|
$item->content,
|
||||||
|
],
|
||||||
|
$format['linestitletext']
|
||||||
|
),
|
||||||
|
['remove_html', 'cut_string' => abs((int) $format['linestitlelength'])],
|
||||||
|
);
|
||||||
|
|
||||||
|
# Entries over title
|
||||||
|
$overtitle = context::global_filters(
|
||||||
|
str_replace(
|
||||||
|
[
|
||||||
|
'%D',
|
||||||
'%T',
|
'%T',
|
||||||
$feed->title,
|
'%A',
|
||||||
dcCore::app()->blog->settings->fac->fac_defaultfeedtitle
|
'%E',
|
||||||
)
|
'%C',
|
||||||
) . '</h3>';
|
],
|
||||||
|
[
|
||||||
|
$date,
|
||||||
|
$item->title,
|
||||||
|
$item->creator,
|
||||||
|
$item->description,
|
||||||
|
$item->content,
|
||||||
|
],
|
||||||
|
$format['linestitleover']
|
||||||
|
),
|
||||||
|
['remove_html', 'cut_string' => 350],
|
||||||
|
);
|
||||||
|
|
||||||
|
# Entries description
|
||||||
|
$description = '';
|
||||||
|
if ($format['showlinesdescription']
|
||||||
|
&& '' != $item->description) {
|
||||||
|
$description = '<dd>' .
|
||||||
|
context::global_filters(
|
||||||
|
$item->description,
|
||||||
|
['remove_html' => (int) $format['linesdescriptionnohtml'], 'cut_string' => abs((int) $format['linesdescriptionlength'])]
|
||||||
|
) . '</dd>';
|
||||||
}
|
}
|
||||||
|
|
||||||
# Feed desc
|
# Entries content
|
||||||
$feeddesc = '';
|
$content = '';
|
||||||
if (dcCore::app()->blog->settings->fac->fac_showfeeddesc
|
if ($format['showlinescontent']
|
||||||
&& '' != $feed->description) {
|
&& '' != $item->content) {
|
||||||
$feeddesc = '<p>' . context::global_filters(
|
$content = '<dd>' .
|
||||||
$feed->description,
|
context::global_filters(
|
||||||
['encode_xml', 'remove_html']
|
$item->content,
|
||||||
) . '</p>';
|
['remove_html' => (int) $format['linescontentnohtml'], 'cut_string' => abs((int) $format['linescontentlength'])]
|
||||||
|
) . '</dd>';
|
||||||
}
|
}
|
||||||
|
|
||||||
# Date format
|
|
||||||
$dateformat = '' != $format['dateformat'] ?
|
|
||||||
$format['dateformat'] :
|
|
||||||
dcCore::app()->blog->settings->system->date_format . ',' . dcCore::app()->blog->settings->system->time_format;
|
|
||||||
|
|
||||||
# Enrties limit
|
|
||||||
$entrieslimit = abs((int) $format['lineslimit']);
|
|
||||||
$uselimit = $entrieslimit > 0 ? true : false;
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
'<div class="post-fac">' .
|
'<dt><a href="' . $item->link . '" ' .
|
||||||
$feedtitle . $feeddesc .
|
'title="' . $overtitle . '">' . $title . '</a></dt>' .
|
||||||
'<dl>';
|
$description . $content;
|
||||||
|
|
||||||
$i = 0;
|
$i++;
|
||||||
foreach ($feed->items as $item) {
|
if ($uselimit && $i == $entrieslimit) {
|
||||||
# Format date
|
break;
|
||||||
$date = dt::dt2str($dateformat, $item->pubdate);
|
|
||||||
|
|
||||||
# Entries title
|
|
||||||
$title = context::global_filters(
|
|
||||||
str_replace(
|
|
||||||
[
|
|
||||||
'%D',
|
|
||||||
'%T',
|
|
||||||
'%A',
|
|
||||||
'%E',
|
|
||||||
'%C',
|
|
||||||
],
|
|
||||||
[
|
|
||||||
$date,
|
|
||||||
$item->title,
|
|
||||||
$item->creator,
|
|
||||||
$item->description,
|
|
||||||
$item->content,
|
|
||||||
],
|
|
||||||
$format['linestitletext']
|
|
||||||
),
|
|
||||||
['remove_html', 'cut_string' => abs((int) $format['linestitlelength'])],
|
|
||||||
);
|
|
||||||
|
|
||||||
# Entries over title
|
|
||||||
$overtitle = context::global_filters(
|
|
||||||
str_replace(
|
|
||||||
[
|
|
||||||
'%D',
|
|
||||||
'%T',
|
|
||||||
'%A',
|
|
||||||
'%E',
|
|
||||||
'%C',
|
|
||||||
],
|
|
||||||
[
|
|
||||||
$date,
|
|
||||||
$item->title,
|
|
||||||
$item->creator,
|
|
||||||
$item->description,
|
|
||||||
$item->content,
|
|
||||||
],
|
|
||||||
$format['linestitleover']
|
|
||||||
),
|
|
||||||
['remove_html', 'cut_string' => 350],
|
|
||||||
);
|
|
||||||
|
|
||||||
# Entries description
|
|
||||||
$description = '';
|
|
||||||
if ($format['showlinesdescription']
|
|
||||||
&& '' != $item->description) {
|
|
||||||
$description = '<dd>' .
|
|
||||||
context::global_filters(
|
|
||||||
$item->description,
|
|
||||||
['remove_html' => (int) $format['linesdescriptionnohtml'], 'cut_string' => abs((int) $format['linesdescriptionlength'])]
|
|
||||||
) . '</dd>';
|
|
||||||
}
|
|
||||||
|
|
||||||
# Entries content
|
|
||||||
$content = '';
|
|
||||||
if ($format['showlinescontent']
|
|
||||||
&& '' != $item->content) {
|
|
||||||
$content = '<dd>' .
|
|
||||||
context::global_filters(
|
|
||||||
$item->content,
|
|
||||||
['remove_html' => (int) $format['linescontentnohtml'], 'cut_string' => abs((int) $format['linescontentlength'])]
|
|
||||||
) . '</dd>';
|
|
||||||
}
|
|
||||||
|
|
||||||
echo
|
|
||||||
'<dt><a href="' . $item->link . '" ' .
|
|
||||||
'title="' . $overtitle . '">' . $title . '</a></dt>' .
|
|
||||||
$description . $content;
|
|
||||||
|
|
||||||
$i++;
|
|
||||||
if ($uselimit && $i == $entrieslimit) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
echo '</dl></div>';
|
|
||||||
}
|
}
|
||||||
}
|
echo '</dl></div>';
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in a new issue