vladimir_k Опубликовано 17 Июня 2009 Жалоба Поделиться Опубликовано 17 Июня 2009 (изменено) Нужно разрешить некоторым пользователям создавать опросы в темах, созданных другими авторами. Эти пользователи не являются модераторами. Как вариант через отдельную группу и маску. Добавление опроса через создание поста в теме - нужно чтобы у пользователей в форме ответа была строчка:Опции опроса Нажмите сюда для управления опросом в этой теме IPB 2.3.1 Готов оплатить модификацию. Изменено 17 Июня 2009 пользователем vladimir_k Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Июня 2009 Жалоба Поделиться Опубликовано 17 Июня 2009 (изменено) Сейчас гляну в коды; на "однушке" такое можно сделать довольно просто; надо посмотреть, что изменилось в старших версиях. UPD: Собственно, готово, опробовано на 2.3.6. Аська в профиле, можно здесь в ПМ. Изменено 17 Июня 2009 пользователем FatCat Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Июня 2009 Жалоба Поделиться Опубликовано 17 Июня 2009 С разрешения vladimir_k, сам мод: Мод через дополнительную маску доступа / вторичную группу. 1. Создаете новую группу, назвать можно "Модераторы опросов" или как угодно. Если нужно, под нее создать предварительно маску доступа; или использовать любую из имеющихся. Важно, что функция создания опросов в чужих темах будет только при выборе этой маски вторичной. Если выбрать ее первичной - функция не появится. 2. Смотрите айдишник этой группы, например он будет "7". Используете свою цифру вместо "7" в двух следующих заменах кодах: 3. sources\classes\post\class_post.phpНайти: $this->can_add_poll = intval($this->ipsclass->member['g_post_polls']); $this->max_poll_choices_per_question = intval($this->ipsclass->vars['max_poll_choices']); $this->max_poll_questions = intval($this->ipsclass->vars['max_poll_questions']); $this->can_edit_poll = ( $this->ipsclass->member['g_is_supmod'] ) ? $this->ipsclass->member['g_is_supmod'] : ( isset($this->ipsclass->member['_moderator'][ $this->forum['id'] ]['edit_post']) ? intval( $this->ipsclass->member['_moderator'][ $this->forum['id'] ]['edit_post'] ) : 0 );и добавить ниже: if( stristr($this->ipsclass->member['mgroup_others'],",7,") )$this->can_add_poll = 1; 4. sources\classes\post\class_post_reply.phpНайти: if ( $this->can_add_poll ) { $this->can_add_poll = 0; if ( ! $this->topic['poll_state'] ) { if ( $this->ipsclass->member['id'] and ! $this->obj['moderate'] ) { if ( $this->ipsclass->member['g_is_supmod'] == 1 ) { $this->can_add_poll = 1; } else if ( $this->topic['starter_id'] == $this->ipsclass->member['id'] ) { if ( ($this->ipsclass->vars['startpoll_cutoff'] > 0) AND ( $this->topic['start_date'] + ($this->ipsclass->vars['startpoll_cutoff'] * 3600) > time() ) ) { $this->can_add_poll = 1; } } } } }и добавить ниже: if( stristr($this->ipsclass->member['mgroup_others'],",7,") )$this->can_add_poll = 1; Как заметили, добавляемая строка в двух файлах одинаковая.Если нужно, чтобы могло работать и по первичной группе, строка будет чуть иной:if( stristr($this->ipsclass->member['mgroup_others'],",7,") or $this->ipsclass->member['mgroup'] == "7" )$this->can_add_poll = 1;Если нужно только по первичной группе, оставьте в условии только проверку mgroup без проверки mgroup_others. И не забывать отличий, что в строке mgroup_others может быть несколько цифр, поэтому запятые с двух сторон; в поле mgroup может быть только одна цифра, поэтому никаких запятых. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.