From d387689d86ca355ae76932d5002ef29017eb94ca Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sat, 31 May 2008 00:38:10 +0200 Subject: [PATCH] Xorg perm level activated. Signed-off-by: Florent Bruneau --- _public.php | 2 ++ widget.post.perms.php | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/_public.php b/_public.php index 392f557..882432b 100644 --- a/_public.php +++ b/_public.php @@ -1,7 +1,9 @@ url->register('xorgAuth', 'Xorg', '^auth/(.*)$', array('xorgAuthentifier', 'doAuth')); +$core->addBehavior('coreBlogGetPosts', array('xorgPostPermsWidget', 'behavior_coreBlogGetPosts')); ?> diff --git a/widget.post.perms.php b/widget.post.perms.php index cde573a..89d5d94 100644 --- a/widget.post.perms.php +++ b/widget.post.perms.php @@ -79,5 +79,65 @@ class xorgPostPermsWidget { $opts['post_xorg_perms'] = $_POST['post_xorg_perms']; $cur->setField('user_options', $opts); } + + 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->userID()) { + return true; + } elseif ($metas['post_xorg_perms'] == 'group' && $core->auth->getInfo('xorg_group_member')) { + return true; + } + return false; + } + + public static function getContent(&$rs, $absolute_urls = false) { + if (self::canRead($rs)) { + return parent::getContent(&$rs, $absolute_urls); + } else if (!self::isExtended($rs)) { + return '

Vous n\'avez pas les droits suffisant pour lire ce billet

'; + } else { + return null; + } + } + + public static function getExcerpt(&$rs, $absolute_urls = false) { + if (self::canRead($rs)) { + return parent::getContent(&$rs, $absolute_urls); + } else if (self::isExtended($rs)) { + return 'Vous n\'avez pas les droits suffisant pour lire ce billet'; + } 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); + } +} } ?> -- 2.1.4