Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие движки / фрейморки > Вопрос по IPB


Автор: Pakshin A. S. 11.12.2005, 23:37
В IPB мне нужно узнать, является ли пользователь, просматривающий форум модератором или супермодератором форума. Т. е. для модераторского слстава и админов я показываю сообщение, а для остальных сообщение не показывается... Что писать в if? smile smile

Автор: Mal Hack 12.12.2005, 00:06
Проверяй индекс группы. gid вроде.

Автор: Pakshin A. S. 12.12.2005, 00:14
А как обратиться?

$this->['gid']

Автор: Mal Hack 12.12.2005, 00:55
$this -> member или что-то типа того..

Автор: Wowa 12.12.2005, 01:26
почему в Клубе?

Автор: Girder 12.12.2005, 02:12
ibf_moderators
+
g_is_supmod
+
g_access_cp
+
$INFO['admin_group']

Автор: Pakshin A. S. 12.12.2005, 22:41
Цитата(Wowa @ 12.12.2005, 01:26)
почему в Клубе?

Вроде нету у нас специального форума по ИПБ, а модераторы могут это отнести к Девелопмингу, т. е. это якобы может касаться Винграда. Начнутся разговоры, которые не нужны... Мне просто нужна помощь, поэтмоу помесил в нейтральный раздел: вроде и не супер запечатаный и не общий... И люди знающие есть... smile

Girder
Хммм... А как все это написать в PHP? Я что-то не пойму... Приведи, плз, примерчик... smile smile

Автор: Wowa 12.12.2005, 22:45
ясно, я перенес.

Автор: 2man 12.12.2005, 23:06
По-моему это:
Код

//-------------------------------------
        // Are we a moderator?
        //-------------------------------------

                if ( ($ibforums->member['id']) and ($ibforums->member['g_is_supmod'] != 1) )
                {
                        $DB->query("SELECT * FROM ibf_moderators WHERE forum_id=".$this->forum['id']." AND (member_id=".$ibforums->member['id']." OR (is_group=1 AND group_id='".$ibforums->member['mgroup']."'))");
                        $this->moderator = $DB->fetch_row();
                }

А зачем тебе это, в админке можно ведь настроить маски доступа

Автор: Pakshin A. S. 12.12.2005, 23:33
Мне нужно впринцепе поставить несколько спец кнопок для модераторов, которые не должны быть видны другим пользователям...


А моно без SQL? Лишний запрос меня не вдохновляет...

Автор: 2man 12.12.2005, 23:50
Тогда я думаю задача упрощается. Сделай рендер кнопки в topics.php, а затем саму функцию. Вот посмотри как делается функция удаления поста и станет понятно:
Сначала рендериться кнопка:
Код

$row['delete_button'] = $this->delete_button($row['pid'], $poster);
А затем идет функция:
Код

function delete_button($post_id, $poster) // в зависимости от того, для чего нужна кнопка можно добавить другие параметры
        {
                global $ibforums, $std;

                if ($ibforums->member['id'] == "" or $ibforums->member['id'] == 0)
                {
                        return "";
                }

                $button = "<a href=\"javascript:delete_post('{$this->base_url}act=Mod&amp;CODE=04&amp;f={$this->forum['id']}&amp;t={$this->topic['tid']}&amp;p={$post_id}&amp;st={$ibforums->input[st]}&amp;auth_key=".$this->md5_check."')\"><{P_DELETE}></a>";

                if ($ibforums->member['g_is_supmod']) return $button;
                if ($this->moderator['delete_post']) return $button;
                if ($poster['id'] == $ibforums->member['id'] and ($ibforums->member['g_delete_own_posts'])) return $button;
                return "";
        }

Но незнаю. В этой функции moderator['delete_post'] ведет тебя в файл moderate.php и функцию delete_post, а там без SQL ну никак не обойтись.
Цитата(lonely @ 12.12.2005, 22:33)
А моно без SQL? Лишний запрос меня не вдохновляет

Что тебе так не нравится уж? при просмотре топика все равно уже идет запрос в базу на check_access

Автор: Wowa 13.12.2005, 00:01
Всё очень просто. Нужно смотреть на ИД-группы админа и модератора, если ИД нужный, то выводить доп. функции. И никакой запрос не нужен.

Автор: Pakshin A. S. 13.12.2005, 00:10
Ничерта не получается...

Код

   <td class='pformleft'>
       <center>
          <?  if ($ibforums->member['g_is_supmod'])
                {
                  echo '<a href=javascript:paste("[SIZE=2][COLOR=red][B]Ìîäåðàòîð: [/B][/COLOR][/SIZE]");>Ñîîáùåíèå ìîäåðàòîðà</a><br />';
                  echo '<a href=javascript:paste("[mod][/mod]");>Çàìå÷àíèå îò ìîäåðàòîðà</a><br />';
                  echo '<a href=javascript:paste("[ex][/ex]");>Ïðåäóïðåæäåíèå îò ìîäåðàòîðà</a><br />';
                }
          ?>
       </center>    
   </td>


Шо не так?

Вообще мне достаточно проекрить гурппу текущего пользователя. Выводить в том случае, если у меня Админ или Модератор...
Добавлено @ 00:11
Кстати, у меня оно вообще ничего не хочет выводить... Я по-моему немного ПХП подзабыл... smile

Автор: 2man 13.12.2005, 00:35
Думаю тут надо на JS делать по-другому. Откуда у тебя берется функция paste() ?
Тут лучше тогда добавлять в skin_topic кнопку
Код

<a href="javascript:Paste1();"><{TEXT_1}></a>
<a href="javascript:Paste1();"><{TEXT_2}></a>
<a href="javascript:Paste1();"><{TEXT_3}></a>

потом в файл, откуда достаются все яваскрипты, добавляешь функции paste1(), paste2(), paste3() и в макросы соответственно заносишь кнопки text_1, text_2, text_3, либо пользуешься <img scr=""> как тебе удобнее.
Перед кнопками делаешь условие

Цитата(Wowa @ 12.12.2005, 23:01)
Нужно смотреть на ИД-группы админа и модератора, если ИД нужный, то выводить доп. функции


Автор: Pakshin A. S. 13.12.2005, 15:02
smile Народ! С ссылками все Ок, вот с if - пробелмы... Ну напишите мне просто кусо кода, который следует вставить

Код

<td class='pformleft'>
<center>
<!--Вот сюда вставить-->
</center> 
</td>


Автор: 2man 13.12.2005, 15:27
Мне кажется это должно выглядеть так:
Код

if $author['member_group']='1' or '2'
then
{
<td class='pformleft'>
<center>
echo '<a href=javascript:paste("[SIZE=2][COLOR=red][B]Ìîäåðàòîð: [/B][/COLOR][/SIZE]");>Ñîîáùåíèå ìîäåðàòîðà</a><br />';
echo '<a href=javascript:paste("[mod][/mod]");>Çàìå÷àíèå îò ìîäåðàòîðà</a><br />';
echo '<a href=javascript:paste("[ex][/ex]");>Ïðåäóïðåæäåíèå îò ìîäåðàòîðà</a><br />';
</center> 
</td>
}
else {
}

Хотя может я и ошибаюсь
Добавлено @ 15:35
Но тут честно говоря я незнаю, вместо $author['member_group'] скорей всего должно быть $member['mgroup'] или $poster['mgroup'], потому как $author['member_group'] - это название группы, а тебе нужен только id

Автор: Pakshin A. S. 13.12.2005, 22:02
Ну вышепредложенный код почему-то выдает ошибки parser... Разберемся может ... А моет и нет... smile

Поставил ради смеха:
Код

<td class='pformleft'>
       <center>
          <? if ( 2 == 2)
{
echo '<a href=javascript:paste("[SIZE=2][COLOR=red][B]Iiaa?aoi?: [/B][/COLOR][/SIZE]");>Niiauaiea iiaa?aoi?a</a><br />';
echo '<a href=javascript:paste("[mod][/mod]");>Caia?aiea io iiaa?aoi?a</a><br />';
echo '<a href=javascript:paste("[ex][/ex]");>I?aaoi?a?aaiea io iiaa?aoi?a</a><br />';
}
?>
       </center>    
   </td>


ДЫк ничего не вывелось... Это так и должно быть?
Добавлено @ 22:12
Что-то совсем ничего не выходит... smile

Автор: 2man 13.12.2005, 22:45
Цитата(lonely @ 13.12.2005, 21:02)
ДЫк ничего не вывелось... Это так и должно быть?

Это потому, что если есть условие if и then, то должно быть и else пусть и пустое. Условие не выполняется, поэтому и не выводит ничего. В какой строке ошибку выдает. Приведи код

Автор: Pakshin A. S. 13.12.2005, 22:59
parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

на строке с if-ом... Юзаю предложенный код...


http://pakshin.com.ru/forum/index.php?showtopic=60&view=getnewpost


Код

<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td class='maintitle' colspan="2">&nbsp;&nbsp;{$ibforums->lang['qr_title']}</td>
</tr>
<!--IBF.NAME_FIELD-->
 <tr>
   <td class='pformstrip' colspan="2">{$ibforums->lang['ib_code_buttons']}</td>
 </tr>
 <tr>
   <td class='pformleft'>
       if $member['mgroup']='4'
then
{
<td class='pformleft'>
<center>
echo '<a href=javascript:paste("[SIZE=2][COLOR=red][B]Iiaa?aoi?: [/B][/COLOR][/SIZE]");>Niiauaiea iiaa?aoi?a</a><br />';
echo '<a href=javascript:paste("[mod][/mod]");>Caia?aiea io iiaa?aoi?a</a><br />';
echo '<a href=javascript:paste("[ex][/ex]");>I?aaoi?a?aaiea io iiaa?aoi?a</a><br />';
</center> 
</td>
}
else {
}
</td>
       <td class='row1'>
<script language="javascript" type="text/javascript" src="html/UBBC/ubbc.js"></script>
<script language="javascript" type="text/javascript"><!--
 var flash_w = '200'; var flash_h = '400';
var ubbc_dir = 'html/UBBC';
var emoticon_dir = 'html/emoticons';
var use_graphics = 1; // 1 = Graphical, 0 = Form based (buttons)
makeInterface(1,1,use_graphics);
//--></script>
  </td>

Автор: 2man 13.12.2005, 23:05
Вот так попробуй:
Код

<if="author['id'] == 1">
<td class='pformleft'>
<center>
echo '<a href=javascript:paste("[SIZE=2][COLOR=red][B]Ìîäåðàòîð: [/B][/COLOR][/SIZE]");>Ñîîáùåíèå ìîäåðàòîðà</a><br />';
echo '<a href=javascript:paste("[mod][/mod]");>Çàìå÷àíèå îò ìîäåðàòîðà</a><br />';
echo '<a href=javascript:paste("[ex][/ex]");>Ïðåäóïðåæäåíèå îò ìîäåðàòîðà</a><br />';
</center> 
</td>
</if>




Добавлено @ 23:09
Либо
Код

if ($member['id'] == '1' )
   {
  <td class='pformleft'>
<center>
echo '<a href=javascript:paste("[SIZE=2][COLOR=red][B]Ìîäåðàòîð: [/B][/COLOR][/SIZE]");>Ñîîáùåíèå ìîäåðàòîðà</a><br />';
echo '<a href=javascript:paste("[mod][/mod]");>Çàìå÷àíèå îò ìîäåðàòîðà</a><br />';
echo '<a href=javascript:paste("[ex][/ex]");>Ïðåäóïðåæäåíèå îò ìîäåðàòîðà</a><br />';
</center> 
</td>
   }
   else   {
     }

Автор: Pakshin A. S. 13.12.2005, 23:12
Ошибок не выдает, но ссылки выдает всегда, не зависимо от того, кто сидит...

А случаем не member['mgroup'] нужно использовать?
Добавлено @ 23:14
Цитата(2man @ 13.12.2005, 23:05)
Либо

Parse error... на if...

Автор: S.A.P. 13.12.2005, 23:33
Цитата(lonely @ 13.12.2005, 00:10)
Ничерта не получается...

Код

   <td class='pformleft'>
       <center>
          <?  if ($ibforums->member['g_is_supmod'])
                {
                  echo '<a href=javascript:paste("[SIZE=2][COLOR=red][B]Ìîäåðàòîð: [/B][/COLOR][/SIZE]");>Ñîîáùåíèå ìîäåðàòîðà</a><br />';
                  echo '<a href=javascript:paste("[mod][/mod]");>Çàìå÷àíèå îò ìîäåðàòîðà</a><br />';
                  echo '<a href=javascript:paste("[ex][/ex]");>Ïðåäóïðåæäåíèå îò ìîäåðàòîðà</a><br />';
                }
          ?>
       </center>    
   </td>


Шо не так?

Вообще мне достаточно проекрить гурппу текущего пользователя. Выводить в том случае, если у меня Админ или Модератор...
Добавлено @ 00:11
Кстати, у меня оно вообще ничего не хочет выводить... Я по-моему немного ПХП подзабыл... smile

если это читый HTML, то
Код

   <td class='pformleft'>
       <center>
          <?  if ($ibforums->member['g_is_supmod']) { ?>
                  тут пишешь что надо без echo
              <? } ?>

       </center>
   </td>


Если это skin, то давай больше кода. И файл назови.

Автор: 2man 14.12.2005, 00:22
Нет, я пробовал не помогает. Я даже хотел пойти глобальным путем добавления функции
Код

function mod($poster)
        {
                global $ibforums;

                if ($ibforums->member['id'] == "" or $ibforums->member['id'] == 0)
                {
                        return "";
                }
                $button = "<a href=javascript:paste("[ex][/ex]")>{P_MOD}</a>";

                if ($ibforums->member['g_is_supmod']) return $button;
                if ($poster['id'] == $ibforums->member['id']) return $button;
                return "";

        }

Но у меня ничего не вышло smile Т.е. ошибки не выдало, но и кнопки тоже

Автор: S.A.P. 14.12.2005, 00:24
Похоже что skin.
Тут можно извратиться по аццки smile . Допустим у тебя код
Код

function add_edit_box($checked="") {
global $ibforums;
return <<<EOF
<tr>
  <td class='pformleft'><b>{$ibforums->lang['edit_ops']}</b></td>
  <td class='pformright'><input type='checkbox' name='add_edit' value='1' $checked class='forminput' />&nbsp;{$ibforums->lang['append_edit']}</td>
</tr>
EOF;
}


Тебе нужно втолкнуть после {$ibforums->lang['edit_ops']} определенный текст в зависимости от условия.

Код

function add_edit_box($checked="") {
global $ibforums;
$infect = ""; 
if ($ibforums->member['g_is_supmod']) $infect = "ты - суперпупермодератор";
return <<<EOF
<tr>
  <td class='pformleft'><b>{$ibforums->lang['edit_ops']} {$infect}</b></td>
  <td class='pformright'><input type='checkbox' name='add_edit' value='1' $checked class='forminput' />&nbsp;{$ibforums->lang['append_edit']}</td>
</tr>
EOF;



Не проверял, но вроде должно работать.

Автор: 2man 14.12.2005, 00:26
Perchilla, условие не срабатывает.
Цитата(Perchilla @ 13.12.2005, 22:33)
тут пишешь что надо без echo

Для обычных участников это не должно быть видно, а оно не так

Автор: S.A.P. 14.12.2005, 00:29
Цитата(2man @ 14.12.2005, 00:26)
Perchilla, условие не срабатывает.

Как я уже сказал вы пытаетесь эксперементировать со скином и засовываете в строку PHP теги, так нельзя. Если посмотришь HTML код сгенеренной страницы, то увидишь свой PHP код, который не интерпретировался. Одно из решений проблемы см. выше.

Автор: Pakshin A. S. 14.12.2005, 15:24
Perchilla, Работает! Супермодератора распознает... А как вообще распознать модератора или проверить группу пользователя (т. е. если индекс группы пользователя либо одно число, либо другое, то вывести сообщение)

Автор: S.A.P. 14.12.2005, 15:31
сверять $ibforums->member['mgroup']
с
$ibforums->vars['admin_group']
$ibforums->vars['guest_group']

и т.д.

Автор: Wowa 14.12.2005, 15:33
В файл скина(skin_topic.php) вставляешь: <!--BUTTON MODERATORS--> там где, тебе нужно для модера вывести кнопки.

А в исходнике(Topics.php) вставлешь перед:
Код

                // ADD SMILIES

                $this->quick_add_smilie();


вот это:

Код

if ( ($ibforums->member['g_is_supmod'] == 1) or ($ibforums->member['is_mod']) ) {

                   $this->quick_add_button_moderators();

                };



Далее перед функцией function quick_add_smilie() вставляешь нашу функцию:
Код

function quick_add_button_moderators() {

                global $ibforums;
$button_moderators = <<<HTML

<b>Модератор:</b>

<br/>

<a href="#" onclick="ubbc_wrapTags('','[SIZE=2][COLOR=red][B]Модератор: Пожалуйста, один топик - один вопрос.[/B][/COLOR][/SIZE]'); return false;">вопрос</a>,

<a href="#" onclick="ubbc_wrapTags('','[SIZE=2][COLOR=red][B]Модератор: Давайте вернёмся к теме обсуждения.[/B][/COLOR][/SIZE]'); return false;">тема</a>,

<a href="#" onclick="ubbc_wrapTags('','[SIZE=2][COLOR=red][B]Модератор: Название темы должно отражать ее суть![/B][/COLOR][/SIZE]'); return false;">суть</a>,

<a href="#" onclick="ubbc_wrapTags('','[SIZE=2][COLOR=red][B]Модератор: [/B][/COLOR][/SIZE]'); return false; ">модератор</a>,

<a href="#" onclick="ubbc_wrapTags('','\\n [B]Правила форума:[/B] {$ibforums->base_url}s=&amp;act=SR&amp;f=27'); return false;">правила</a> ,

<a href="#" onclick="ubbc_wrapTags('[MM]','[/MM]'); return false;">MM</a>,

<br/>

<a href="#" onclick="ubbc_wrapTags('[MOD]','[/MOD]'); return false;">Замечание</a>,

<a href="#" onclick="ubbc_wrapTags('[EX]','[/EX]'); return false;">Предупреждение</a>,

<br/>

<br/>

HTML;

                $this->output = preg_replace( "/<!--BUTTON MODERATORS-->/", $button_moderators, $this->output );

}



и ВСЁ!

Автор: Pakshin A. S. 14.12.2005, 15:46
Спасибо! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)