+
+ public static function behavior_coreBlogGetPosts($rs) {
+ $rs->extend('xorgPostPermsFilter');
+ }
+
+/* public static function behavior_coreBlogGetComments($rs) {
+ $rs->extends('xorgCommentPermsFilter');
+ }*/
+}
+
+if (class_exists('rsExtPostPublic')) {
+
+class xorgPostPermsFilter extends rsExtPostPublic {
+ private static function canRead($rs) {
+ $metas = unserialize($rs->field('post_meta'));
+ global $core;
+ if (!isset($metas['post_xorg_perms'])) {
+ return true;
+ } elseif ($metas['post_xorg_perms'] == 'public') {
+ return true;
+ } elseif ($metas['post_xorg_perms'] == 'auth' && $core->auth->checkPassword()) {
+ return true;
+ } elseif ($metas['post_xorg_perms'] == 'group' && $core->auth->getInfo('xorg_group_member')) {
+ return true;
+ }
+ return false;
+ }
+
+ private static function showMessage($rs) {
+ $metas = unserialize($rs->field('post_meta'));
+ global $core;
+ $str = '<p class="error">'
+ . 'Vous n\'avez pas les droits suffisants pour lire ce billet :<br />';
+ if (!$core->auth->checkPassword()) {
+ $str .= 'Vous devez vous <a href="' . $core->blog->url . 'auth/Xorg?path=' . $_SERVER['PATH_INFO'] .'">authentifier</a>';
+ } else {
+ $str .= 'Tu dois être membre du groupe pour lire ce message';
+ }
+ return $str . '</p>';
+ }
+
+ public static function getContent($rs, $absolute_urls = false) {
+ if (self::canRead($rs)) {
+ return parent::getContent($rs, $absolute_urls);
+ } else if (!self::isExtended($rs)) {
+ return self::showMessage($rs);
+ } else {
+ return null;
+ }
+ }
+
+ public static function getExcerpt($rs, $absolute_urls = false) {
+ if (self::canRead($rs)) {
+ return parent::getExcerpt($rs, $absolute_urls);
+ } else if (self::isExtended($rs)) {
+ return self::showMessage($rs);
+ } else {
+ return null;
+ }
+ }
+
+ public static function commentsActive($rs) {
+ return self::canRead($rs) && parent::commentsActive($rs);
+ }
+
+ public static function trackbacksActive($rs) {
+ return self::canRead($rs) && parent::trackbacksActive($rs);
+ }
+
+ public static function hasComments($rs) {
+ return self::canRead($rs) && parent::hasComments($rs);
+ }
+}