addBehavior( 'publicEntryAfterContent', array('facPublic', 'publicEntryAfterContent') ); /** * @ingroup DC_PLUGIN_FAC * @brief Linked feed to entries - public methods. * @since 2.6 */ class facPublic { /** * Add feed after entry * * @param dcCore $core dcCore instance * @param context $_ctx context instance */ public static function publicEntryAfterContent(dcCore $core, context $_ctx) { $core->blog->settings->addNamespace('fac'); # Not active or not a post if (!$core->blog->settings->fac->fac_active || !$_ctx->exists('posts') ) { return null; } # Not in page to show $types = @unserialize($core->blog->settings->fac->fac_public_tpltypes); if (!is_array($types) || !in_array($core->url->type,$types) ) { return null; } # Get related feed $fac_url = $core->meta->getMetadata(array( 'meta_type' => 'fac', 'post_id' => $_ctx->posts->post_id, 'limit' => 1 )); if ($fac_url->isEmpty()) { return null; } # Get related format $fac_format = $core->meta->getMetadata(array( 'meta_type' => 'facformat', 'post_id' => $_ctx->posts->post_id, 'limit' => 1 )); if ($fac_format->isEmpty()) { return null; } # Get format info $default_format = array( 'name' => 'default', 'dateformat' => '', 'lineslimit' => '5', 'linestitletext' => '%T', 'linestitleover' => '%D', 'linestitlelength' => '150', 'showlinesdescription' => '0', 'linesdescriptionlength' => '350', 'linesdescriptionnohtml' => '1', 'showlinescontent' => '0', 'linescontentlength' => '350', 'linescontentnohtml' => '1' ); $formats = @unserialize($core->blog->settings->fac->fac_formats); if (empty($formats) || !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 $cache = is_dir(DC_TPL_CACHE.'/fac') ? DC_TPL_CACHE.'/fac' : null; try { $feed = feedReader::quickParse($fac_url->meta_id,$cache); } catch (Exception $e) { $feed = null; } # No entries if (!$feed) { return null; } # Feed title $feedtitle = ''; if ('' != $core->blog->settings->fac->fac_defaultfeedtitle) { $feedtitle = '

'.html::escapeHTML(empty($feed->title) ? str_replace( '%T', __('a related feed'), $core->blog->settings->fac->fac_defaultfeedtitle ) : str_replace( '%T', $feed->title, $core->blog->settings->fac->fac_defaultfeedtitle ) ).'

'; } # Feed desc $feeddesc = ''; if ($core->blog->settings->fac->fac_showfeeddesc && '' != $feed->description ) { $feeddesc = '

'.context::global_filter($feed->description,1,1,0,0,0).'

'; } # Date format $dateformat = '' != $format['dateformat'] ? $format['dateformat'] : $core->blog->settings->system->date_format.','.$core->blog->settings->system->time_format; # Enrties limit $entrieslimit = abs((integer) $format['lineslimit']); $uselimit = $entrieslimit > 0 ? true : false; echo '
'. $feedtitle.$feeddesc. '
'; $i = 0; foreach ($feed->items as $item) { # Format date $date = dt::dt2str($dateformat, $item->pubdate); # Entries title $title = context::global_filter( str_replace( array( '%D', '%T', '%A', '%E', '%C' ), array( $date, $item->title, $item->creator, $item->description, $item->content ), $format['linestitletext'] ), 0, 1, abs((integer) $format['linestitlelength']), 0, 0 ); # Entries over title $overtitle = context::global_filter( str_replace( array( '%D', '%T', '%A', '%E', '%C' ), array( $date, $item->title, $item->creator, $item->description, $item->content ), $format['linestitleover'] ), 0, 1, 350, 0, 0 ); # Entries description $description = ''; if ($format['showlinesdescription'] && '' != $item->description ) { $description = '
'. context::global_filter( $item->description, 0, (integer) $format['linesdescriptionnohtml'], abs((integer) $format['linesdescriptionlength']), 0,0 ).'
'; } # Entries content $content = ''; if ($format['showlinescontent'] && '' != $item->content ) { $content = '
'. context::global_filter( $item->content, 0, (integer) $format['linescontentnohtml'], abs((integer) $format['linescontentlength']), 0, 0 ).'
'; } echo '
'.$title.'
'. $description.$content; $i++; if ($uselimit && $i == $entrieslimit) { break; } } echo '
'; } }