3 class xorgPostPermsWidget
{
4 public static function behavior_adminPostFormSidebar($post) {
5 $choices = array('public' => array('text' => 'Visible par tous',
7 'auth' => array('text' => 'Visible par les X',
10 if (!is_null($post)) {
11 $metas = unserialize($post->field('post_meta'));
12 if (isset($metas['post_xorg_perms'])) {
13 $pos = $metas['post_xorg_perms'];
17 $pos = $core->auth
->getOption('post_xorg_perms');
18 if ($pos && !isset($choices[$pos])) {
22 $choices[$pos]['selected'] = true
;
23 echo '<p><label>Visibilité du billet :'
24 . ' <select name="post_xorg_perms">';
25 foreach ($choices as $val => $fields) {
26 echo '<option value="' . $val . '"' . ($fields['selected'] ?
' selected="selected"' : '') . '>'
27 . $fields['text'] . '</option>';
33 private static function setPermsMeta(&$cur) {
34 $meta = $cur->getField('post_meta');
35 if (is_string($meta)) {
36 $meta = unserialize($meta);
38 if (!is_array($meta)) {
41 $meta['post_xorg_perms'] = $_POST['post_xorg_perms'];
42 $cur->setField('post_meta', serialize($meta));
45 public static function behavior_adminBeforePostCreate(&$cur) {
46 self
::setPermsMeta($cur);
49 public static function behavior_adminBeforePostUpdate(&$cur, $post_id) {
50 self
::setPermsMeta($cur);
54 public static function behavior_adminPreferencesForm($core) {
55 $levels = array('public' => array('text' => 'Visible par tous',
57 'auth' => array('text' => 'Visible par les X',
59 'group' => array('text' => 'Visible par les membres du groupe (1)',
60 'selected' => false
));
61 $pos = $core->auth
->getOption('post_xorg_perms');
62 if (!$pos ||
!isset($levels[$pos])) {
65 $levels[$pos]['selected'] = true
;
66 echo '<p><label>Visibilité nouveaux billets par défaut :'
67 . ' <select name="post_xorg_perms">';
68 foreach ($levels as $key => $fields) {
69 echo '<option value="' . $key . '"' . ($fields['selected'] ?
' selected="selected"' : '') . '>'
70 . $fields['text'] . '</option>';
73 . '(1) Ne concerne que les blogs de groupes X. Equivaut à "Visible par les X" sur les autres blogs"'
77 public static function behavior_adminBeforeUserUpdate(&$cur, $user_id) {
78 $opts = $cur->getField('user_options');
79 $opts['post_xorg_perms'] = $_POST['post_xorg_perms'];
80 $cur->setField('user_options', $opts);
83 public static function behavior_coreBlogGetPosts(&$rs) {
84 $rs->extend('xorgPostPermsFilter');
87 /* public static function behavior_coreBlogGetComments(&$rs) {
88 $rs->extends('xorgCommentPermsFilter');
92 if (class_exists('rsExtPostPublic')) {
94 class xorgPostPermsFilter
extends rsExtPostPublic
{
95 private static function canRead(&$rs) {
96 $metas = unserialize($rs->field('post_meta'));
98 if (!isset($metas['post_xorg_perms'])) {
100 } elseif ($metas['post_xorg_perms'] == 'public') {
102 } elseif ($metas['post_xorg_perms'] == 'auth' && $core->auth
->userID()) {
104 } elseif ($metas['post_xorg_perms'] == 'group' && $core->auth
->getInfo('xorg_group_member')) {
110 private static function showMessage(&$rs) {
111 $metas = unserialize($rs->field('post_meta'));
113 $str = '<p class="error">'
114 . 'Vous n\'avez pas les droits suffisants pour lire ce billet<br />';
115 if (!$core->auth
->userID()) {
116 $str .= 'Vous devez vous <a href="' . $core->blog
->url
. 'auth/Xorg?path=' . $_SERVER['REQUEST_URI'] .'">authentifier</a>';
118 $str .= 'Tu dois être membre du groupe pour lire ce message';
120 return $str . '</p>';
123 public static function getContent(&$rs, $absolute_urls = false
) {
124 if (self
::canRead($rs)) {
125 return parent
::getContent(&$rs, $absolute_urls);
126 } else if (!self
::isExtended($rs)) {
127 return self
::showMessage($rs);
133 public static function getExcerpt(&$rs, $absolute_urls = false
) {
134 if (self
::canRead($rs)) {
135 return parent
::getContent(&$rs, $absolute_urls);
136 } else if (self
::isExtended($rs)) {
137 return self
::showMessage($rs);
143 public static function commentsActive(&$rs) {
144 return self
::canRead($rs) && parent
::commentsActive($rs);
147 public static function trackbacksActive(&$rs) {
148 return self
::canRead($rs) && parent
::trackbacksActive($rs);
151 public static function hasComments(&$rs) {
152 return self
::canRead($rs) && parent
::hasComments($rs);