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 public static function getContent(&$rs, $absolute_urls = false
) {
111 if (self
::canRead($rs)) {
112 return parent
::getContent(&$rs, $absolute_urls);
113 } else if (!self
::isExtended($rs)) {
114 return '<p class="error">Vous n\'avez pas les droits suffisant pour lire ce billet</p>';
120 public static function getExcerpt(&$rs, $absolute_urls = false
) {
121 if (self
::canRead($rs)) {
122 return parent
::getContent(&$rs, $absolute_urls);
123 } else if (self
::isExtended($rs)) {
124 return 'Vous n\'avez pas les droits suffisant pour lire ce billet';
130 public static function commentsActive(&$rs) {
131 return self
::canRead($rs) && parent
::commentsActive($rs);
134 public static function trackbacksActive(&$rs) {
135 return self
::canRead($rs) && parent
::trackbacksActive($rs);
138 public static function hasComments(&$rs) {
139 return self
::canRead($rs) && parent
::hasComments($rs);