0byt3m1n1-V2
Path:
/
home
/
magalijoj
/
www
/
blog
/
inc
/
core
/
[
Home
]
File: class.dc.rs.extensions.php
<?php # ***** BEGIN LICENSE BLOCK ***** # This file is part of DotClear. # Copyright (c) 2005 Olivier Meunier and contributors. All rights # reserved. # # DotClear is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # DotClear is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with DotClear; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ***** END LICENSE BLOCK ***** /** @ingroup DC_CORE @brief Dotclear post record helpers. This class adds new methods to database post results. You can call them on every record comming from dcBlog::getPosts and similar methods. @warning You should not give the first argument (usualy $rs) of every described function. */ class rsExtPost { /** Returns whether post is editable. @param rs Invisible parameter @return <b>boolean</b> */ public static function isEditable(&$rs) { # If user is admin or contentadmin, true if ($rs->core->auth->check('contentadmin',$rs->core->blog->id)) { return true; } # No user id in result ? false if (!$rs->exists('user_id')) { return false; } # If user is usage and owner of the entrie if ($rs->core->auth->check('usage',$rs->core->blog->id) && $rs->user_id == $rs->core->auth->userID()) { return true; } return false; } /** Returns whether post is deletable @param rs Invisible parameter @return <b>boolean</b> */ public static function isDeletable(&$rs) { # If user is admin, or contentadmin, true if ($rs->core->auth->check('contentadmin',$rs->core->blog->id)) { return true; } # No user id in result ? false if (!$rs->exists('user_id')) { return false; } # If user has delete rights and is owner of the entrie if ($rs->core->auth->check('delete',$rs->core->blog->id) && $rs->user_id == $rs->core->auth->userID()) { return true; } return false; } /** Returns whether post is the first one of its day. @param rs Invisible parameter @return <b>boolean</b> */ public static function firstPostOfDay(&$rs) { if ($rs->isStart()) { return true; } $cdate = date('Ymd',strtotime($rs->post_dt)); $rs->movePrev(); $ndate = date('Ymd',strtotime($rs->post_dt)); $rs->moveNext(); return $ndate != $cdate; } /** Returns whether post is the last one of its day. @param rs Invisible parameter @return <b>boolean</b> */ public static function lastPostOfDay(&$rs) { if ($rs->isEnd()) { return true; } $cdate = date('Ymd',strtotime($rs->post_dt)); $rs->moveNext(); $ndate = date('Ymd',strtotime($rs->post_dt)); $rs->movePrev(); return $ndate != $cdate; } /** Returns whether comments are enabled on post. @param rs Invisible parameter @return <b>boolean</b> */ public static function commentsActive(&$rs) { return $rs->core->blog->settings->allow_comments && $rs->post_open_comment && ($rs->core->blog->settings->comments_ttl == 0 || time()-($rs->core->blog->settings->comments_ttl*86400) < $rs->getTS()); } /** Returns whether trackbacks are enabled on post. @param rs Invisible parameter @return <b>boolean</b> */ public static function trackbacksActive(&$rs) { return $rs->core->blog->settings->allow_trackbacks && $rs->post_open_tb && ($rs->core->blog->settings->trackbacks_ttl == 0 || time()-($rs->core->blog->settings->trackbacks_ttl*86400) < $rs->getTS()); } /** Returns whether post has at least one comment. @param rs Invisible parameter @return <b>boolean</b> */ public static function hasComments(&$rs) { return $rs->nb_comment > 0; } /** Returns whether post has at least one trackbacks. @return <b>boolean</b> */ public static function hasTrackbacks(&$rs) { return $rs->nb_trackback > 0; } /** Returns full post URL. @param rs Invisible parameter @return <b>string</b> */ public static function getURL(&$rs) { return $rs->core->blog->url.$rs->core->url->getBase('post').'/'. html::sanitizeURL($rs->post_url); } /** Returns full post category URL. @param rs Invisible parameter @return <b>string</b> */ public static function getCategoryURL(&$rs) { return $rs->core->blog->url.$rs->core->url->getBase('category').'/'. html::sanitizeURL($rs->cat_url); } /** Returns whether post has an excerpt. @param rs Invisible parameter @return <b>boolean</b> */ public static function isExtended(&$rs) { return $rs->post_excerpt_xhtml != ''; } /** Returns post timestamp. @param rs Invisible parameter @return <b>integer</b> */ public static function getTS(&$rs) { return strtotime($rs->post_dt); } /** Returns post date formating according ISO 8601 standard. @param rs Invisible parameter @return <b>string</b> */ public static function getISO8601Date(&$rs) { return dt::iso8601($rs->getTS(),$rs->post_tz); } /** Returns post date formating according RFC 822. @param rs Invisible parameter @return <b>string</b> */ public static function getRFC822Date(&$rs) { return dt::rfc822($rs->getTS(),$rs->post_tz); } /** Returns post date with <var>$format</var> as formatting pattern. If format is empty, uses <var>date_format</var> blog setting. @param rs Invisible parameter @param format <b>string</b> Date format pattern @return <b>string</b> */ public static function getDate(&$rs,$format) { if ($format) { return dt::dt2str($format,$rs->post_dt); } else { return dt::dt2str($rs->core->blog->settings->date_format,$rs->post_dt); } } /** Returns post time with <var>$format</var> as formatting pattern. If format is empty, uses <var>time_format</var> blog setting. @param rs Invisible parameter @param format <b>string</b> Time format pattern @return <b>string</b> */ public static function getTime(&$rs,$format) { if ($format) { return dt::dt2str($format,$rs->post_dt); } else { return dt::dt2str($rs->core->blog->settings->time_format,$rs->post_dt); } } /** Returns author common name using user_id, user_name, user_firstname and user_displayname fields. @param rs Invisible parameter @return <b>string</b> */ public static function getAuthorCN(&$rs) { return dcUtils::getUserCN($rs->user_id, $rs->user_name, $rs->user_firstname, $rs->user_displayname); } /** Returns author common name with a link if he specified one in its preferences. @param rs Invisible parameter @return <b>string</b> */ public static function getAuthorLink(&$rs) { $res = '%1$s'; $url = $rs->user_url; if ($url) { $res = '<a href="%2$s">%1$s</a>'; } return sprintf($res,$rs->getAuthorCN(),$url); } /** Returns author e-mail address. If <var>$encoded</var> is true, "@" sign is replaced by "%40" and "." by "%2e". @param rs Invisible parameter @param encoded <b>boolean</b> Encode address. @return <b>string</b> */ public static function getAuthorEmail(&$rs,$encoded=true) { if ($encoded) { return strtr($rs->user_email,array('@'=>'%40','.'=>'%2e')); } return $rs->user_email; } /** Returns post feed unique ID. @param rs Invisible parameter @return <b>string</b> */ public static function getFeedID(&$rs) { return 'urn:md5:'.md5($rs->core->blog->uid.$rs->post_id); $url = parse_url($rs->core->blog->url); $date_part = date('Y-m-d',strtotime($rs->post_creadt)); return 'tag:'.$url['host'].','.$date_part.':'.$rs->post_id; } /** Returns trackback RDF information block in HTML comment. @param rs Invisible parameter @return <b>string</b> */ public static function getTrackbackData(&$rs) { return "<!--\n". '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n". ' xmlns:dc="http://purl.org/dc/elements/1.1/"'."\n". ' xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">'."\n". "<rdf:Description\n". ' rdf:about="'.$rs->getURL().'"'."\n". ' dc:identifier="'.$rs->getURL().'"'."\n". ' dc:title="'.htmlspecialchars($rs->post_title,ENT_COMPAT,'UTF-8').'"'."\n". ' trackback:ping="'.$rs->getTrackbackLink().'" />'."\n". "</rdf:RDF>\n". "-->\n"; } /** Returns post trackback full URL. @param rs Invisible parameter @return <b>string</b> */ public static function getTrackbackLink(&$rs) { return $rs->core->blog->url.$rs->core->url->getBase('trackback').'/'.$rs->post_id; } /** Returns post content. If <var>$absolute_urls</var> is true, appends full blog URL to each relative post URLs. @param rs Invisible parameter @param absolute_urls <b>boolean</b> With absolute URLs @return <b>string</b> */ public static function getContent(&$rs,$absolute_urls=false) { if ($absolute_urls) { return html::absoluteURLs($rs->post_content_xhtml,$rs->getURL()); } else { return $rs->post_content_xhtml; } } /** Returns post excerpt. If <var>$absolute_urls</var> is true, appends full blog URL to each relative post URLs. @param rs Invisible parameter @param absolute_urls <b>boolean</b> With absolute URLs @return <b>string</b> */ public static function getExcerpt(&$rs,$absolute_urls=false) { if ($absolute_urls) { return html::absoluteURLs($rs->post_excerpt_xhtml,$rs->getURL()); } else { return $rs->post_excerpt_xhtml; } } /** Returns post media count using a subquery. @param rs Invisible parameter @return <b>integer</b> */ public static function countMedia(&$rs) { if (isset($rs->_nb_media[$rs->index()])) { return $rs->_nb_media[$rs->index()]; } else { $strReq = 'SELECT count(media_id) '. 'FROM '.$rs->core->prefix.'post_media '. 'WHERE post_id = '.(integer) $rs->post_id.' '; $res = (integer) $rs->core->con->select($strReq)->f(0); $rs->_nb_media[$rs->index()] = $res; return $res; } } } /** @ingroup DC_CORE @brief Dotclear comment record helpers. This class adds new methods to database comment results. You can call them on every record comming from dcBlog::getComments and similar methods. @warning You should not give the first argument (usualy $rs) of every described function. */ class rsExtComment { /** Returns comment date with <var>$format</var> as formatting pattern. If format is empty, uses <var>date_format</var> blog setting. @param rs Invisible parameter @param format <b>string</b> Date format pattern @return <b>string</b> */ public static function getDate(&$rs,$format) { if ($format) { return dt::dt2str($format,$rs->comment_dt); } else { return dt::dt2str($rs->core->blog->settings->date_format,$rs->comment_dt); } } /** Returns comment time with <var>$format</var> as formatting pattern. If format is empty, uses <var>time_format</var> blog setting. @param rs Invisible parameter @param format <b>string</b> Date format pattern @return <b>string</b> */ public static function getTime(&$rs,$format) { if ($format) { return dt::dt2str($format,$rs->comment_dt); } else { return dt::dt2str($rs->core->blog->settings->time_format,$rs->comment_dt); } } /** Returns comment timestamp. @param rs Invisible parameter @return <b>integer</b> */ public static function getTS(&$rs) { return strtotime($rs->comment_dt); } /** Returns comment date formating according ISO 8601 standard. @param rs Invisible parameter @return <b>string</b> */ public static function getISO8601Date(&$rs) { return dt::iso8601($rs->getTS(),$rs->comment_tz); } /** Returns comment date formating according RFC 822. @param rs Invisible parameter @return <b>string</b> */ public static function getRFC822Date(&$rs) { return dt::rfc822($rs->getTS(),$rs->comment_tz); } /** Returns comment content. If <var>$absolute_urls</var> is true, appends full blog URL to each relative post URLs. @param rs Invisible parameter @param absolute_urls <b>boolean</b> With absolute URLs @return <b>string</b> */ public static function getContent(&$rs,$absolute_urls=false) { $res = $rs->comment_content; if ($rs->core->blog->settings->comments_nofollow) { $res = preg_replace_callback('#<a(.*?href=".*?".*?)>#ms',array('self','noFollowURL'),$res); } if ($absolute_urls) { $res = html::absoluteURLs($res,$rs->getPostURL()); } return $res; } private static function noFollowURL($m) { if (preg_match('/rel="nofollow"/',$m[1])) { return $m[0]; } return '<a'.$m[1].' rel="nofollow">'; } /** Returns comment author link to his website if he specified one. @param rs Invisible parameter @return <b>string</b> */ public static function getAuthorURL(&$rs) { if (trim($rs->comment_site)) { return trim($rs->comment_site); } } /** Returns comment post full URL. @param rs Invisible parameter @return <b>string</b> */ public static function getPostURL(&$rs) { return $rs->core->blog->url.$rs->core->url->getBase('post').'/'. html::sanitizeURL($rs->post_url); } /** Returns comment author name in a link to his website if he specified one. @param rs Invisible parameter @return <b>string</b> */ public static function getAuthorLink(&$rs) { $res = '%1$s'; $url = $rs->getAuthorURL(); if ($url) { $res = '<a href="%2$s"%3$s>%1$s</a>'; } $nofollow = ''; if ($rs->core->blog->settings->comments_nofollow) { $nofollow = ' rel="nofollow"'; } return sprintf($res,html::escapeHTML($rs->comment_author),$url,$nofollow); } /** Returns comment author e-mail address. If <var>$encoded</var> is true, "@" sign is replaced by "%40" and "." by "%2e". @param rs Invisible parameter @param encoded <b>boolean</b> Encode address. @return <b>string</b> */ public static function getEmail(&$rs,$encoded=true) { if ($encoded) { return strtr($rs->comment_email,array('@'=>'%40','.'=>'%2e')); } return $rs->comment_email; } /** Returns trackback site title if comment is a trackback. @param rs Invisible parameter @return <b>string</b> */ public static function getTrackbackTitle(&$rs) { if ($rs->comment_trackback == 1 && preg_match('|<p><strong>(.*?)</strong></p>|msU',$rs->comment_content, $match)) { return $match[1]; } } /** Returns trackback content if comment is a trackback. @param rs Invisible parameter @return <b>string</b> */ public static function getTrackbackContent(&$rs) { if ($rs->comment_trackback == 1) { return preg_replace('|<p><strong>.*?</strong></p>|msU','', $rs->comment_content); } } /** Returns comment feed unique ID. @param rs Invisible parameter @return <b>string</b> */ public static function getFeedID(&$rs) { return 'urn:md5:'.md5($rs->core->blog->uid.$rs->comment_id); $url = parse_url($rs->core->blog->url); $date_part = date('Y-m-d',strtotime($rs->comment_dt)); return 'tag:'.$url['host'].','.$date_part.':'.$rs->comment_id; } /** Returns whether comment is from the post author. @param rs Invisible parameter @return <b>boolean</b> */ public static function isMe(&$rs) { return $rs->comment_email && $rs->comment_site && $rs->comment_email == $rs->user_email && $rs->comment_site == $rs->user_url; } } /** @ingroup DC_CORE @brief Dotclear dates record helpers. This class adds new methods to database dates results. You can call them on every record comming from dcBlog::getDates. @warning You should not give the first argument (usualy $rs) of every described function. */ class rsExtDates { /** @param rs Invisible parameter @return <b>integer</b> Date timestamp */ public static function ts(&$rs) { return strtotime($rs->dt); } /** @param rs Invisible parameter @return <b>string</b> Date year */ public static function year(&$rs) { return date('Y',strtotime($rs->dt)); } /** @param rs Invisible parameter @return <b>string</b> Date month */ public static function month(&$rs) { return date('m',strtotime($rs->dt)); } /** @param rs Invisible parameter @return <b>integer</b> Date day */ public static function day(&$rs) { return date('d',strtotime($rs->dt)); } /** Returns date month archive full URL. @param rs Invisible parameter @param core <b>dcCore</b> dcCore instance @return <b>integer</b> */ public static function url(&$rs,&$core) { $url = date('Y/m',strtotime($rs->dt)); return $core->blog->url.$core->url->getBase('archive').'/'.$url; } /** Returns whether date is the first of year. @param rs Invisible parameter @return <b>boolean</b> */ public static function yearHeader(&$rs) { if ($rs->isStart()) { return true; } $y = $rs->year(); $rs->movePrev(); $py = $rs->year(); $rs->moveNext(); return $y != $py; } /** Returns whether date is the last of year. @param rs Invisible parameter @return <b>boolean</b> */ public static function yearFooter(&$rs) { if ($rs->isEnd()) { return true; } $y = $rs->year(); if ($rs->moveNext()) { $ny = $rs->year(); $rs->movePrev(); return $y != $ny; } return false; } } /** @ingroup DC_CORE @brief Dotclear dates record helpers. This class adds new methods to database dates results. You can call them on every record comming from dcAuth::checkUser and dcCore::getUsers. @warning You should not give the first argument (usualy $rs) of every described function. */ class rsExtUser { /** Returns a user option. @param rs Invisible parameter @param name <b>string</b> Option name @return <b>string</b> */ public static function option(&$rs,$name) { $options = self::options($rs); if (isset($options[$name])) { return $options[$name]; } return null; } /** Returns all user options. @param rs Invisible parameter @return <b>array</b> */ public static function options(&$rs) { $options = @unserialize($rs->user_options); if (is_array($options)) { return $options; } return array(); } } ?>
©
2018.