本文整理汇总了PHP中Articles::list_for_anchor_by方法的典型用法代码示例。如果您正苦于以下问题:PHP Articles::list_for_anchor_by方法的具体用法?PHP Articles::list_for_anchor_by怎么用?PHP Articles::list_for_anchor_by使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Articles
的用法示例。
在下文中一共展示了Articles::list_for_anchor_by方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: cascade
/**
* cascade to children
*
* @param string referencing of the changed anchor
* @param string rights to be cascaded (e.g., 'Y', 'R' or 'N')
*/
public static function cascade($reference, $active)
{
global $context;
// only sections may have sub-sections
if (strpos($reference, 'section:') === 0) {
// cascade to sub-sections
if ($items = Sections::list_for_anchor($reference, 'raw')) {
// cascade to each section individually
foreach ($items as $id => $item) {
// limit actual rights
$item['active'] = Anchors::ceil_rights($active, $item['active_set']);
$query = "UPDATE " . SQL::table_name('sections') . " SET active='" . SQL::escape($item['active']) . "' WHERE id = " . SQL::escape($id);
SQL::query($query);
// cascade to children
Anchors::cascade('section:' . $item['id'], $item['active']);
}
}
}
// only categories may have sub-categories
if (strpos($reference, 'category:') === 0) {
// cascade to sub-categories
if ($items = Categories::list_for_anchor($reference, 'raw')) {
// cascade to each section individually
foreach ($items as $id => $item) {
// limit actual rights
$item['active'] = Anchors::ceil_rights($active, $item['active_set']);
$query = "UPDATE " . SQL::table_name('categories') . " SET active='" . SQL::escape($item['active']) . "' WHERE id = " . SQL::escape($id);
SQL::query($query);
// cascade to children
Anchors::cascade('category:' . $item['id'], $item['active']);
}
}
}
// only sections may have articles
if (strpos($reference, 'section:') === 0) {
// cascade to articles --up to 3000
if ($items =& Articles::list_for_anchor_by('edition', $reference, 0, 3000, 'raw')) {
// cascade to each section individually
foreach ($items as $id => $item) {
// limit actual rights
$item['active'] = Anchors::ceil_rights($active, $item['active_set']);
$query = "UPDATE " . SQL::table_name('articles') . " SET active='" . SQL::escape($item['active']) . "' WHERE id = " . SQL::escape($id);
SQL::query($query);
// cascade to children
Anchors::cascade('article:' . $item['id'], $item['active']);
}
}
}
// cascade to files --up to 3000
if ($items = Files::list_by_date_for_anchor($reference, 0, 3000, 'raw')) {
// cascade to each section individually
foreach ($items as $id => $item) {
// limit actual rights
$item['active'] = Anchors::ceil_rights($active, $item['active_set']);
$query = "UPDATE " . SQL::table_name('files') . " SET active='" . SQL::escape($item['active']) . "' WHERE id = " . SQL::escape($id);
SQL::query($query);
}
}
}
示例2: get_childs
/**
* list childs of this anchor, with or without type filters
*
* @param string set of desired childs (articles, sections...) separted by comma, or "all" keyword
* @param int offset to start listing
* @param int the maximum of items returned per type
* @param mixed string or object the layout to use
* @return an array of array with raw items sorted by type
*/
function get_childs($filter = 'all', $offset = 0, $max = 50, $layout = 'raw')
{
// we return a array
$childs = array();
// sub sections
if ($filter == 'all' || preg_match('/\\bsections?\\b/i', $filter)) {
$childs['section'] = Sections::list_by_title_for_anchor($this->get_reference(), $offset, $max, $layout);
}
// sub articles
if ($filter == 'all' || preg_match('/\\barticles?\\b/i', $filter)) {
$childs['article'] = Articles::list_for_anchor_by('title', $this->get_reference(), $offset, $max, $layout);
}
// files
if ($filter == 'all' || preg_match('/\\bfiles?\\b/i', $filter)) {
$childs['file'] = Files::list_by_title_for_anchor($this->get_reference(), $offset, $max, $layout);
}
return $childs;
}
示例3: foreach
}
}
// save in cache, whatever change, for 5 minutes
Cache::put($cache_id, $text, 'stable', 300);
}
// news
$context['components']['news'] = $text;
// list extra boxes
$text = '';
if ($anchor = Sections::lookup('extra_boxes')) {
// the maximum number of boxes is a global parameter
if (!isset($context['site_extra_maximum']) || !$context['site_extra_maximum']) {
$context['site_extra_maximum'] = 7;
}
// articles to be displayed as extra boxes
if ($items =& Articles::list_for_anchor_by('publication', $anchor, 0, $context['site_extra_maximum'], 'boxes')) {
foreach ($items as $title => $attributes) {
$text .= Skin::build_box($title, $attributes['content'], 'boxes', $attributes['id']) . "\n";
}
}
}
// boxes
$context['components']['boxes'] = $text;
// referrals, if any
if (Surfer::is_associate() || isset($context['with_referrals']) && $context['with_referrals'] == 'Y') {
$context['components']['referrals'] =& Skin::build_referrals('index.php');
}
//
// compute navigation information -- $context['navigation']
//
// a meta link to a feeding page
示例4: load_skin
* @license http://www.gnu.org/copyleft/lesser.txt GNU Lesser General Public License
*/
// common definitions and initial processing
include_once '../shared/global.php';
// load the skin
load_skin('articles');
// the path to this page
$context['path_bar'] = array('articles/' => i18n::s('All pages'));
// the title of the page
$context['page_title'] = i18n::s('Review queue');
// the menu bar for this page
$context['page_menu'] = array('articles/' => i18n::s('All pages'));
// list queries
if (Surfer::is_associate()) {
$anchor = Sections::lookup('queries');
if ($anchor && ($rows =& Articles::list_for_anchor_by('publication', $anchor, 0, 5))) {
if (is_array($rows)) {
$rows = Skin::build_list($rows, 'decorated');
}
$context['text'] .= Skin::build_box(i18n::s('Submitted queries'), $rows, 'header1', 'queries');
}
}
// list draft articles
if ($rows =& Articles::list_by('draft')) {
// set a title to the section only if we have other sections
if (Surfer::is_associate()) {
$context['text'] .= Skin::build_block(i18n::s('Submitted articles'), 'title', 'submitted');
}
if (is_array($rows)) {
$context['text'] .= Skin::build_list($rows, 'decorated');
} else {
示例5:
$layout->set_focus('section:' . $item['id']);
}
// the maximum number of articles per page
if (is_object($layout)) {
$items_per_page = $layout->items_per_page();
} else {
$items_per_page = ARTICLES_PER_PAGE;
}
// list articles by date (default) or by title (option 'articles_by_title')
$offset = ($zoom_index - 1) * $items_per_page;
if (preg_match('/\\barticles_by_([a-z_]+)\\b/i', $item['options'], $matches)) {
$order = $matches[1];
} else {
$order = 'edition';
}
$items =& Articles::list_for_anchor_by($order, 'section:' . $item['id'], $offset, $items_per_page, $layout);
// actually render the html for the box
$content = '';
if (is_array($items)) {
$content = Skin::build_list($items, 'compact');
} else {
$content = $items;
}
// make a complete box
if ($content) {
$text .= Skin::build_box(i18n::s('Hidden pages'), $content, 'header1', 'articles');
}
}
// title label
$title_label = '';
if (is_object($overlay)) {
示例6: layout
//.........这里部分代码省略.........
} elseif (Surfer::is_empowered()) {
$details[] = sprintf(i18n::ns('%d page', '%d pages', $count), $count);
}
$related_count += $count;
// get the overlay for content of this section, if any
$content_overlay = NULL;
if (isset($item['content_overlay'])) {
$content_overlay = Overlay::bind($item['content_overlay']);
}
// no room to list articles
if (count($content) >= $maximum_items) {
} elseif (is_object($content_overlay) && is_callable(array($content_overlay, 'render_list_for_anchor'))) {
if ($related = $content_overlay->render_list_for_anchor('section:' . $item['id'], $maximum_items - count($content))) {
foreach ($related as $sub_url => $label) {
$sub_prefix = $sub_suffix = $sub_hover = '';
if (is_array($label)) {
$sub_prefix = $label[0];
$sub_suffix = $label[2];
if (@$label[5]) {
$sub_hover = $label[5];
}
$label = $label[1];
}
$content[] = $sub_prefix . $label . $sub_suffix;
}
}
// regular rendering of related articles
} else {
if (preg_match('/\\barticles_by_([a-z_]+)\\b/i', $item['options'], $matches)) {
$order = $matches[1];
} else {
$order = 'edition';
}
if ($related =& Articles::list_for_anchor_by($order, 'section:' . $item['id'], 0, $maximum_items - count($content), 'compact')) {
foreach ($related as $sub_url => $label) {
$sub_prefix = $sub_suffix = $sub_hover = '';
if (is_array($label)) {
$sub_prefix = $label[0];
$sub_suffix = $label[2];
if (@$label[5]) {
$sub_hover = $label[5];
}
$label = $label[1];
}
$content[] = $sub_prefix . $label . $sub_suffix;
}
}
}
}
// info on related files
if ($count = Files::count_for_anchor('section:' . $item['id'], TRUE)) {
$details[] = sprintf(i18n::ns('%d file', '%d files', $count), $count);
$related_count += $count;
// add related files if necessary
if (count($content) < $maximum_items && ($related = Files::list_by_date_for_anchor('section:' . $item['id'], 0, $maximum_items - count($content), 'compact'))) {
foreach ($related as $sub_url => $label) {
$sub_prefix = $sub_suffix = $sub_hover = '';
if (is_array($label)) {
$sub_prefix = $label[0];
$sub_suffix = $label[2];
if (@$label[5]) {
$sub_hover = $label[5];
}
$label = $label[1];
}
$content[] = $sub_prefix . $label . $sub_suffix;
示例7:
/**
* list articles attached to one anchor
*
* The ordering method is provided by layout.
*
* Only articles matching following criteria are returned:
* - article is visible (active='Y')
* - article is restricted (active='R'), but the surfer is an authenticated member,
* or YACS is allowed to show restricted teasers
* - article is protected (active='N'), but surfer is an associate, and we are not feeding someone
* - surfer is anonymous, and article has been officially published
* - logged surfers are restricted to their own articles, plus published articles
* - an expiry date has not been defined, or is not yet passed
*
* @param mixed, either a string the target anchor, or an array of anchors
* @param int the offset from the start of the list; usually, 0 or 1
* @param int the number of items to display
* @param string the list variant, if any
* @param boolean FALSE to include sticky pages, TRUE otherwise
* @return NULL on error, else an ordered array with $url => ($prefix, $label, $suffix, $icon)
*/
public static function &list_for_anchor($anchor, $offset = 0, $count = 10, $layout = 'no_anchor', $without_sticky = FALSE)
{
global $context;
// define items order
if (is_callable(array($layout, 'items_order'))) {
$order = $layout->items_order();
}
if (!isset($order) || !$order) {
$order = 'edition';
}
// ask for ordered items
$output =& Articles::list_for_anchor_by($order, $anchor, $offset, $count, $layout, $without_sticky);
return $output;
}
示例8: render_updated
/**
* render a compact list of recent modifications
*
* The provided anchor can reference:
* - a section 'section:123'
* - a category 'category:456'
* - a user 'user:789'
* - 'self'
* - nothing
*
* @param string the anchor (e.g. 'section:123')
* @param string layout to use
* @return string the rendered text
**/
public static function render_updated($layout = 'simple', $anchor = '')
{
global $context;
// we return some text;
$text = '';
// number of items to display
$count = COMPACT_LIST_SIZE;
if (($position = strpos($anchor, ',')) !== FALSE) {
$count = (int) trim(substr($anchor, $position + 1));
if (!$count) {
$count = COMPACT_LIST_SIZE;
}
$anchor = trim(substr($anchor, 0, $position));
}
// scope is limited to current surfer
if ($anchor == 'self' && Surfer::get_id()) {
$anchor = 'user:' . Surfer::get_id();
// refresh on every page load
Cache::poison();
}
// scope is limited to one section
if (strpos($anchor, 'section:') === 0) {
// look at this branch of the content tree
$anchors = Sections::get_branch_at_anchor($anchor);
// query the database and layout that stuff
$text = Articles::list_for_anchor_by('edition', $anchors, 0, $count, $layout);
// scope is limited to one category
} elseif (strpos($anchor, 'category:') === 0) {
// first level of depth
$anchors = array();
// get sections linked to this category
if ($topics = Members::list_sections_by_title_for_anchor($anchor, 0, 50, 'raw')) {
foreach ($topics as $id => $not_used) {
$anchors = array_merge($anchors, array('section:' . $id));
}
}
// second level of depth
if (count($topics) && count($anchors) < 2000) {
$topics = Sections::get_children_of_anchor($anchors);
$anchors = array_merge($anchors, $topics);
}
// third level of depth
if (count($topics) && count($anchors) < 2000) {
$topics = Sections::get_children_of_anchor($anchors);
$anchors = array_merge($anchors, $topics);
}
// fourth level of depth
if (count($topics) && count($anchors) < 2000) {
$topics = Sections::get_children_of_anchor($anchors);
$anchors = array_merge($anchors, $topics);
}
// fifth level of depth
if (count($topics) && count($anchors) < 2000) {
$topics = Sections::get_children_of_anchor($anchors);
$anchors = array_merge($anchors, $topics);
}
// the category itself is an anchor
$anchors[] = $anchor;
// ensure anchors are referenced only once
$anchors = array_unique($anchors);
// query the database and layout that stuff
$text = Members::list_articles_by_date_for_anchor($anchors, 0, $count, $layout);
// scope is limited to pages of one surfer
} elseif (strpos($anchor, 'user:') === 0) {
$text = Articles::list_for_user_by('edition', substr($anchor, 5), 0, $count, $layout);
} else {
$text = Articles::list_by('edition', 0, $count, $layout);
}
// we have an array to format
if (is_array($text)) {
$text = Skin::build_list($text, $layout);
}
// job done
return $text;
}
示例9: layout
//.........这里部分代码省略.........
} elseif (Surfer::is_empowered()) {
$details[] = sprintf(i18n::ns('%d page', '%d pages', $count), $count);
}
$related_count += $count;
// get the overlay for content of this section, if any
$content_overlay = NULL;
if (isset($item['content_overlay'])) {
$content_overlay = Overlay::bind($item['content_overlay']);
}
// no room to list articles
if (count($content) >= $maximum_items) {
} elseif (is_object($content_overlay) && is_callable(array($content_overlay, 'render_list_for_anchor'))) {
if ($related = $content_overlay->render_list_for_anchor('section:' . $item['id'], $maximum_items - count($content))) {
foreach ($related as $sub_url => $label) {
$sub_prefix = $sub_suffix = $sub_hover = '';
if (is_array($label)) {
$sub_prefix = $label[0];
$sub_suffix = $label[2];
if (@$label[5]) {
$sub_hover = $label[5];
}
$label = $label[1];
}
$content[] = $sub_prefix . Skin::build_link($sub_url, $label, 'basic', $sub_hover) . $sub_suffix;
}
}
// regular rendering of related articles
} else {
if (preg_match('/\\barticles_by_([a-z_]+)\\b/i', $item['options'], $matches)) {
$order = $matches[1];
} else {
$order = 'edition';
}
if ($related =& Articles::list_for_anchor_by($order, 'section:' . $item['id'], 0, $maximum_items - count($content), 'compact')) {
foreach ($related as $sub_url => $label) {
$sub_prefix = $sub_suffix = $sub_hover = '';
if (is_array($label)) {
$sub_prefix = $label[0];
$sub_suffix = $label[2];
if (@$label[5]) {
$sub_hover = $label[5];
}
$label = $label[1];
}
$content[] = $sub_prefix . Skin::build_link($sub_url, $label, 'article', $sub_hover) . $sub_suffix;
}
}
}
}
// info on related files
if ($count = Files::count_for_anchor('section:' . $item['id'], TRUE)) {
$details[] = sprintf(i18n::ns('%d file', '%d files', $count), $count);
$related_count += $count;
// add related files if necessary
if (count($content) < $maximum_items && ($related = Files::list_by_date_for_anchor('section:' . $item['id'], 0, $maximum_items - count($content), 'compact'))) {
foreach ($related as $sub_url => $label) {
$sub_prefix = $sub_suffix = $sub_hover = '';
if (is_array($label)) {
$sub_prefix = $label[0];
$sub_suffix = $label[2];
if (@$label[5]) {
$sub_hover = $label[5];
}
$label = $label[1];
}
$content[] = $sub_prefix . Skin::build_link($sub_url, $label, 'file', $sub_hover) . $sub_suffix;
示例10: layout
/**
* list sections
*
* @param resource the SQL result
* @return string the rendered text
*
* @see layouts/layout.php
**/
function layout($result)
{
global $context;
// empty list
if (!SQL::count($result)) {
$output = array();
return $output;
}
// the maximum number of items per section
if (!defined('MAXIMUM_ITEMS_PER_SECTION')) {
define('MAXIMUM_ITEMS_PER_SECTION', 100);
}
// we return plain text
$text = '';
// process all items in the list
include_once $context['path_to_root'] . 'comments/comments.php';
include_once $context['path_to_root'] . 'links/links.php';
$family = '';
while ($item = SQL::fetch($result)) {
// change the family
if ($item['family'] != $family) {
$family = $item['family'];
// show the family
$text .= '<h2><span>' . $family . ' </span></h2>' . "\n";
}
// get the related overlay, if any
$overlay = Overlay::load($item, 'section:' . $item['id']);
// get the main anchor
$anchor = Anchors::get($item['anchor']);
// one box per section
$box = array('title' => '', 'text' => '');
// box content
$elements = array();
// use the title to label the link
if (is_object($overlay)) {
$box['title'] .= Codes::beautify_title($overlay->get_text('title', $item));
} else {
$box['title'] .= Codes::beautify_title($item['title']);
}
$details = array();
// info on related articles
if (preg_match('/\\barticles_by_([a-z_]+)\\b/i', $item['options'], $matches)) {
$order = $matches[1];
} else {
$order = 'edition';
}
$items =& Articles::list_for_anchor_by($order, 'section:' . $item['id'], 0, MAXIMUM_ITEMS_PER_SECTION + 1, 'compact');
if (@count($items)) {
// mention the number of items in folded title
$details[] = sprintf(i18n::ns('%d page', '%d pages', count($items)), count($items));
// add one link per item
foreach ($items as $url => $label) {
$prefix = $suffix = '';
if (is_array($label)) {
$prefix = $label[0];
$suffix = $label[2];
$label = $label[1];
}
$elements[] = $prefix . Skin::build_link($url, $label, 'article') . $suffix;
}
}
// info on related files
if (Sections::has_option('files_by', $anchor, $item) == 'title') {
$items = Files::list_by_title_for_anchor('section:' . $item['id'], 0, MAXIMUM_ITEMS_PER_SECTION + 1, 'compact');
} else {
$items = Files::list_by_date_for_anchor('section:' . $item['id'], 0, MAXIMUM_ITEMS_PER_SECTION + 1, 'compact');
}
if ($items) {
// mention the number of sections in folded title
$details[] = sprintf(i18n::ns('%d file', '%d files', count($items)), count($items));
// add one link per item
foreach ($items as $url => $label) {
if (is_array($label)) {
$prefix = $label[0];
$suffix = $label[2];
$label = $label[1];
}
$elements[] = $prefix . Skin::build_link($url, $label, 'file') . $suffix;
}
}
// info on related comments
if ($items = Comments::list_by_date_for_anchor('section:' . $item['id'], 0, MAXIMUM_ITEMS_PER_SECTION + 1, 'compact', TRUE)) {
// mention the number of sections in folded title
$details[] = sprintf(i18n::ns('%d comment', '%d comments', count($items)), count($items));
// add one link per item
foreach ($items as $url => $label) {
$prefix = $suffix = '';
if (is_array($label)) {
$prefix = $label[0];
$suffix = $label[2];
$label = $label[1];
}
//.........这里部分代码省略.........
示例11: layout
/**
* list pages
*
* @param resource the SQL result
* @return string the rendered text
*
* @see layouts/layout.php
**/
function layout($result)
{
global $context;
// allow for multiple calls
static $accordion_id;
if (!isset($accordion_id)) {
$accordion_id = 1;
} else {
$accordion_id++;
}
// empty list
if (!SQL::count($result)) {
$output = array();
return $output;
}
// the maximum number of items per article
if (!defined('MAXIMUM_ITEMS_PER_ACCORDION')) {
define('MAXIMUM_ITEMS_PER_ACCORDION', 100);
}
// we return plain text
$text = '';
// type of listed object
$items_type = $this->listed_type;
// process all items in the list
include_once $context['path_to_root'] . 'comments/comments.php';
include_once $context['path_to_root'] . 'links/links.php';
$family = '';
while ($item = SQL::fetch($result)) {
// get the object interface, this may load parent and overlay
$entity = new $items_type($item);
// change the family (layout of sections)
if (isset($item['family']) && $item['family'] != $family) {
$family = $item['family'];
// show the family
$text .= '<h2><span>' . $family . ' </span></h2>' . "\n";
}
// one box per page
$box = array('title' => '', 'text' => '');
// signal entity to be published
if (isset($item['publish_date']) && ($item['publish_date'] <= NULL_DATE || $item['publish_date'] > gmstrftime('%Y-%m-%d %H:%M:%S'))) {
$box['title'] .= DRAFT_FLAG;
}
// signal entity to be activated
if (isset($item['activation_date']) && $item['activation_date'] > gmstrftime('%Y-%m-%d %H:%M:%S')) {
$box['title'] .= DRAFT_FLAG;
}
// signal restricted and private entity
if ($item['active'] == 'N') {
$box['title'] .= PRIVATE_FLAG;
} elseif ($item['active'] == 'R') {
$box['title'] .= RESTRICTED_FLAG;
}
// use the title to label the link
if (is_object($entity->overlay)) {
$box['title'] .= Codes::beautify_title($entity->overlay->get_text('title', $item));
} else {
$box['title'] .= Codes::beautify_title($item['title']);
}
// box content
$elements = array();
// complement the title with interesting details
$details = array();
// info on related article, only for sections
if ($items_type == 'section') {
if (preg_match('/\\barticles_by_([a-z_]+)\\b/i', $item['options'], $matches)) {
$order = $matches[1];
} else {
$order = 'edition';
}
$items =& Articles::list_for_anchor_by($order, $entity->get_reference(), 0, MAXIMUM_ITEMS_PER_ACCORDION + 1, 'compact');
if (@count($items)) {
// mention the number of items in folded title
$details[] = sprintf(i18n::ns('%d page', '%d pages', count($items)), count($items));
// add one link per item
foreach ($items as $url => $label) {
$prefix = $suffix = '';
if (is_array($label)) {
$prefix = $label[0];
$suffix = $label[2];
$label = $label[1];
}
$elements[] = $prefix . Skin::build_link($url, $label, 'article') . $suffix;
}
}
}
// info on related files
if ($entity->has_option('files_by') == 'title') {
$items = Files::list_by_title_for_anchor($entity->get_reference(), 0, MAXIMUM_ITEMS_PER_ACCORDION + 1, 'compact');
} else {
$items = Files::list_by_date_for_anchor($entity->get_reference(), 0, MAXIMUM_ITEMS_PER_ACCORDION + 1, 'compact');
}
if ($items) {
//.........这里部分代码省略.........
示例12: layout
/**
* list sections
*
* Accept following variants:
* - 'full' - include anchor information -- also the default value
*
* @param resource the SQL result
* @return array of resulting items, or NULL
*
* @see layouts/layout.php
**/
function layout($result)
{
global $context;
// we return an array of ($url => $attributes)
$items = array();
// empty list
if (!SQL::count($result)) {
return $items;
}
// sanity check
if (!isset($this->layout_variant)) {
$this->layout_variant = 'decorated';
}
// process all items in the list
include_once $context['path_to_root'] . 'comments/comments.php';
include_once $context['path_to_root'] . 'links/links.php';
while ($item = SQL::fetch($result)) {
// get the related overlay, if any
$overlay = Overlay::load($item, 'section:' . $item['id']);
// get the main anchor
$anchor = Anchors::get($item['anchor']);
// the url to view this item
$url = Sections::get_permalink($item);
// use the title to label the link
if (is_object($overlay)) {
$title = Codes::beautify_title($overlay->get_text('title', $item));
} else {
$title = Codes::beautify_title($item['title']);
}
// initialize variables
$prefix = $suffix = $icon = '';
// flag sections that are draft, dead, or created or updated very recently
if ($item['activation_date'] >= $context['now']) {
$prefix .= DRAFT_FLAG;
} elseif ($item['expiry_date'] > NULL_DATE && $item['expiry_date'] <= $context['now']) {
$prefix .= EXPIRED_FLAG;
}
if ($item['create_date'] >= $context['fresh']) {
$suffix .= NEW_FLAG;
} elseif ($item['edit_date'] >= $context['fresh']) {
$suffix .= UPDATED_FLAG;
}
// signal restricted and private sections
if ($item['active'] == 'N') {
$prefix .= PRIVATE_FLAG;
} elseif ($item['active'] == 'R') {
$prefix .= RESTRICTED_FLAG;
}
// the introductory text
if ($item['introduction']) {
$suffix .= ' - ' . Codes::beautify_introduction($item['introduction']);
}
// details and content
$details = array();
$content = array();
// count related sub-elements
$related_count = 0;
// info on related articles
if ($count = Articles::count_for_anchor('section:' . $item['id'])) {
$details[] = sprintf(i18n::ns('%d page', '%d pages', $count), $count);
$related_count += $count;
// add related articles if necessary
if (preg_match('/\\barticles_by_([a-z_]+)\\b/i', $item['options'], $matches)) {
$order = $matches[1];
} else {
$order = 'edition';
}
if (count($details) < YAHOO_LIST_SIZE && ($related =& Articles::list_for_anchor_by($order, 'section:' . $item['id'], 0, YAHOO_LIST_SIZE - count($details), 'compact'))) {
foreach ($related as $link => $label) {
$sub_prefix = $sub_suffix = $sub_hover = '';
if (is_array($label)) {
$sub_prefix = $label[0];
$sub_suffix = $label[2];
if (@$label[5]) {
$sub_hover = $label[5];
}
$label = $label[1];
}
$content[$link] = array($sub_prefix, $label, $sub_suffix, 'basic', '', $sub_hover);
}
}
}
// info on related files
if ($count = Files::count_for_anchor('section:' . $item['id'])) {
$details[] = sprintf(i18n::ns('%d file', '%d files', $count), $count);
$related_count += $count;
// add related files if necessary
if (count($details) < YAHOO_LIST_SIZE && ($related = Files::list_by_date_for_anchor('section:' . $item['id'], 0, YAHOO_LIST_SIZE - count($details), 'compact'))) {
foreach ($related as $link => $label) {
//.........这里部分代码省略.........
示例13: elseif
$box['text'] = '';
if (is_array($items)) {
$box['text'] .= Skin::build_list($items, 'decorated');
} elseif (is_string($items)) {
$box['text'] .= $items;
}
if ($box['text']) {
$context['text'] .= Skin::build_box('', $box['text']);
}
// newest articles posted in this branch of the content tree
if ($anchors = Sections::get_branch_at_anchor('section:' . $item['id'])) {
// build a complete box
$box['bar'] = array();
$box['text'] = '';
// list articles by publication date
$items =& Articles::list_for_anchor_by('edition', $anchors, 0, 50, 'full');
// actually render the html for the section
if (is_array($items)) {
$box['text'] .= Skin::build_list($items, 'decorated');
} elseif (is_string($items)) {
$box['text'] .= $items;
}
if ($box['text']) {
$context['text'] .= Skin::build_box(i18n::s('What is new?'), $box['text']);
}
}
//
// attached files
//
// list files by date (default) or by title (option :files_by_title:)
if (preg_match('/\\bfiles_by_title\\b/i', $item['options'])) {
示例14: array
// loads feeding parameters
Safe::load('parameters/feeds.include.php');
// set channel information
$values = array();
$values['channel'] = array();
$values['channel']['title'] = $item['title'];
$values['channel']['link'] = Sections::get_permalink($item);
$values['channel']['description'] = $item['introduction'];
// the image for this channel
if (isset($context['powered_by_image']) && $context['powered_by_image']) {
$values['channel']['image'] = $context['url_to_home'] . $context['url_to_root'] . $context['powered_by_image'];
}
// all anchors to consider
$anchors = Sections::get_branch_at_anchor('section:' . $item['id']);
// the list of newest pages
$values['items'] =& Articles::list_for_anchor_by('edition', $anchors, 0, 20, 'feed');
// make a text
include_once '../services/codec.php';
include_once '../services/rss_codec.php';
$result = rss_Codec::encode($values);
$text = @$result[1];
// save in cache for the next request
Cache::put($cache_id, $text, 'articles');
}
//
// transfer to the user agent
//
// handle the output correctly
render_raw('text/xml; charset=' . $context['charset']);
// suggest a name on download
if (!headers_sent()) {
示例15: layout
//.........这里部分代码省略.........
}
// the maximum number of articles per page
if (is_object($layout)) {
$items_per_page = $layout->items_per_page();
} else {
$items_per_page = ARTICLES_PER_PAGE;
}
// sort and list articles
$offset = 0;
if (preg_match('/\\barticles_by_([a-z_]+)\\b/i', $item['options'], $matches)) {
$order = $matches[1];
} elseif (is_callable(array($layout, 'items_order'))) {
$order = $layout->items_order();
} else {
$order = 'edition';
}
// create a box
$box = array('top_bar' => array(), 'text' => '', 'bottom_bar' => array());
// the command to post a new page
//if(Articles::allow_creation($item, $anchor)) {
if ($anchor->allows('creation', 'article')) {
Skin::define_img('ARTICLES_ADD_IMG', 'articles/add.gif');
$url = 'articles/edit.php?anchor=' . urlencode('section:' . $item['id']);
if (is_object($content_overlay) && ($label = $content_overlay->get_label('new_command', 'articles'))) {
} else {
$label = ARTICLES_ADD_IMG . i18n::s('Add a page');
}
$box['top_bar'] += array($url => $label);
}
// list pages under preparation
$this_section = new section();
$this_section->load_by_content($item, $anchor);
if ($this_section->is_assigned()) {
if ($order == 'publication' && ($items =& Articles::list_for_anchor_by('draft', 'section:' . $item['id'], 0, 20, 'compact'))) {
if (is_array($items)) {
$items = Skin::build_list($items, 'compact');
}
$box['top_bar'] += array('_draft' => Skin::build_sliding_box(i18n::s('Draft pages'), $items));
}
}
// top menu
if ($box['top_bar']) {
$box['text'] .= Skin::build_list($box['top_bar'], 'menu_bar');
}
// get pages
$items =& Articles::list_for_anchor_by($order, 'section:' . $item['id'], $offset, $items_per_page, $layout);
// items in the middle
if (is_array($items) && isset($item['articles_layout']) && $item['articles_layout'] == 'compact') {
$box['text'] .= Skin::build_list($items, 'compact');
} elseif (is_array($items)) {
$box['text'] .= Skin::build_list($items, 'decorated');
} elseif (is_string($items)) {
$box['text'] .= $items;
}
// no navigation bar with alistapart
if (!isset($item['articles_layout']) || $item['articles_layout'] != 'alistapart') {
// count the number of articles in this section
if ($count = Articles::count_for_anchor('section:' . $item['id'])) {
if ($count > 20) {
$box['bottom_bar'] += array('_count' => sprintf(i18n::ns('%d page', '%d pages', $count), $count));
}
// navigation commands for articles
$home = Sections::get_permalink($item);
$prefix = Sections::get_url($item['id'], 'navigate', 'articles');
$box['bottom_bar'] += Skin::navigate($home, $prefix, $count, $items_per_page, 1);
}