Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Русский IkonBoard »   Форум поддержки русской версии IkonBoard »   Профиль пользователя
RSS

Профиль пользователя

вопросы

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Модератор: GramПечать
 
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
1. Как добавить в админскую форму возможность пересчета количества сообщений, оставленных конкретным пользователем?
2. Можно ли сделать возможность, чтоб юзер сам менял имя - точнее имя при регистрации оставалось тем же, а ник выводился другой (псевдоник)... Я видел такой хак на руборде для IB3.11, только с моими знаниями перла только его и корректировать...
2а. ... или хотя б возможность менять ник юзера Админом в центре администрирования...

4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
1. Сложный вопрос... Но все же попробую. Вот код, который надо добавить в setmembers.cgi (кроме того, надо прилепить ссылку вида setmembers.cgi?action=countmsg&member=$membername)
<br>sub countmsg {<br>&getmember($membername);<br>$membername =~ s/ /_/g;<br> if ($userregistered ne "yes") { print "<tr><tr>Такого пользователя не существует</tr></td>"; }<br>else {<br>    $msgcount = 0;<br>    opendir (DIR, "$ikondir");<br>    @dirdata = readdir(DIR);<br>    closedir (DIR);<br>    @forumdata = grep(/^forum\d+/,@dirdata);<br>    foreach $forum (@forumdata)   {<br>      opendir (FORUMDIR, "$ikondir"."$forum/");<br>      @dirdata = readdir(FORUMDIR);<br>      @topicdata = grep(/.thd$/,@dirdata);<br>      closedir (FORUMDIR);<br>      foreach $topic (@topicdata) {<br>        open (FILE,"<$ikondir"."$forum/$topic");<br>        @messages=<FILE>;<br>        close (FILE);<br>        foreach $msg (@messages) {<br>          ($poster,$trash) = split (/\|/,$msg);<br>          if ($poster eq $member) {<br>            $msgcount++;<br>          }<br>        }<br>      }<br>     open(FILE,">$ikondir"."members/$member.cgi");<br>flock(FILE,2);<br>    print FILE ("$member|$password|$membertitle|$membercode|$msgcount|$emailaddress|$showemail|$ipaddress|$homepage|$aolname|$icqnumber|$location|$interests|$joineddate|$lastpostdate|$signature|$timedifference|$privateforums|$useravatar|$misc1|$misc2|$misc3");<br>close(FILE);<br>print "<tr><td>Пользователь $member отправил $msgcount сообщений</tr></td>";<br>   }<br>}<br>
Но это - только приблизительный код, я его набросал, но не тестировал, кроме того, могут потребоваться какие-то мелкие доработки.
2. Хаки от Ib 3.x не подойдут к этому форуму в принципе: Ib 3 работает на базах данных. А сделать такое можно, но сложно (очень много изменений в коде). Если нужно переименовать одного-двух пользователей, то легче переименовать их файлы, а потом воспользоваться какой-нибудь утилитой для замены старого имени на новое во всех файлах форума (либо запустить ее на сервере через SSH, либо скачать форум в локаль, и сделать это там).



---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
XXXX Pro
прости меня, ламера... но не мог бы ты подсказать куда конкретно нужно вставлять этот код в файле setmembers.cgi  
и куда нужно прилеплять ссылку вида setmembers.cgi?action=countmsg&member=$membername?
Заранее спасибо ограмное!

4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Вставлять можно либо между двумя процедурами (sub), либо в конец файла (так проще и надежнее).
Ссылку надо вставить в процедуру showmember, после вот  этого текста: <br>    <tr><br>    <td bgcolor=#FFFFFF valign=middle><font face=verdana color=#333333 size=1><b>Последний раз посетил форум:</b></font></td><br>    <td bgcolor=#FFFFFF valign=middle><font face=verdana color=#333333 size=1>$lastvisit</font></td></tr><br>
Сама ссялка имеет такой вид: <br>    <tr><br>    <td bgcolor=#FFFFFF valign=middle colspan=2 align=center><font face=verdana color=#333333 size=1><b><a href="$thisprog?action=countmsg&member=$member">Пересчитать сообщения пользователя.</a></b></font><br></td></tr><br>
И еще в начале надо <br>           my %Mode = ( <br>            'updatecount'        =>    \&docount,<br>            'viewletter'         =>    \&viewletter,<br>            'edit'               =>    \&edit,        <br>            'deletemember'       =>    \&deletemember,<br>            'unban'              =>    \&unban,<br>            'clean'              =>    \&clean,<br>            'doclean'            =>    \&doclean,<br>            'select'             =>    \&select,<br>            'doselect'           =>    \&doselect<br>            ); <br> заменить на <br>           my %Mode = ( <br>            'updatecount'        =>    \&docount,<br>            'viewletter'         =>    \&viewletter,<br>            'edit'               =>    \&edit,        <br>            'deletemember'       =>    \&deletemember,<br>            'unban'              =>    \&unban,<br>            'clean'              =>    \&clean,<br>            'doclean'            =>    \&doclean,<br>            'select'             =>    \&select,<br>            'doselect'           =>    \&doselect,<br>            'countmsg'        => \&countmsg<br>            ); <br>
P.S. Обрати внимание: я немного изменил код в первом сообщении.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
XXXX Pro
cделал все, как ты сказал, однако при нажатии ссылки Настройки участников в Админцентре ничего не работает -
конкретно пишет сие...

[q]
Software error:
Execution of /usr/local/www/docs/by/solo/planeta/www/cgi-bin/ikonboard/setmembers.cgi aborted due to compilation errors.
For help, please send mail to the webmaster, giving this error message and the time and date of the error.
[/q]

в чем может быть дело-то?? В коде или может мои ручки не под то заточены?
;)

4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
В коде. Где-то есть примитивнейшая ошибка, из-за которой это происходит.
Загляни в логи (каталог с названием типа logs, , и посмотри, что там появляется, и выложи сюда, я скажу, что исправить.
Кстати, еще одна ошибка есть в строке с grep - форум не вывел косую черту (\) перед d+

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
XXXX Pro
ну ты задал мне задачку...и :(
если б я знал где этот каталог...
мож, када у тя будет свободная минутка протестируешь на локалке.... да выложишь - думаю, не только я оценю...
жаль пиво ты не пьешь ;)

4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Короче, вот конечная версия процедуры countmsg <br>sub countmsg { <br>&getmember($inmember); <br>$inmember =~ s/ /_/g; <br>if ($userregistered ne "yes") { print "<tr><tr>Такого пользователя не существует</tr></td>"; } <br>else { <br>   $msgcount = 0; <br>   opendir (DIR, "$ikondir"); <br>   @dirdata = readdir(DIR); <br>   closedir (DIR); <br>   @forumdata = grep(/^forum\d+/,@dirdata); <br>   foreach $forum (@forumdata)   { <br>     opendir (FORUMDIR, "$ikondir"."$forum/"); <br>     @dirdata = readdir(FORUMDIR); <br>     @topicdata = grep(/\.thd$/,@dirdata); <br>     closedir (FORUMDIR); <br>     foreach $topic (@topicdata) { <br>       open (FILE,"<$ikondir"."$forum/$topic"); <br>       @messages=<FILE>; <br>       close (FILE); <br>       foreach $msg (@messages) { <br>         ($poster,$trash) = split (/\|/,$msg); <br>         if ($poster eq $inmember) { <br>           $msgcount++; <br>         } <br>       } <br>     } <br>   }  <br>   open(FILE,">$ikondir"."members/$inmember.cgi"); <br>   flock(FILE,2); <br>   print FILE ("$inmember|$password|$membertitle|$membercode|$msgcount|$emailaddress|$showemail|$ipaddress|$homepage|$aolname|$icqnumber|$location|$interests|$joineddate|$lastpostdate|$signature|$timedifference|$privateforums|$useravatar|$misc1|$misc2|$misc3"); <br>   close(FILE); <br>   $message = formatword($msgcount,"сообщение","сообщения","сообщений");<br>   print "<tr><td  bgcolor=#FFFFFF valign=middle align=left colspan=2>Пользователь $member отправил $msgcount $message</tr></td>"; <br>  } <br>} <br>
У меня на локали вроде бы все работало нормально.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
XXXX Pro
мое огромное спасибо и респект!
ВСЕ ПАШЕТ!

JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
XXXX Pro
мдя... все пашет, только есть один глюк - если у пользователя в имени пробел имеется, то сразу при пересчете его сообщений становится НОЛЬ... :-/
в чем проблема, не подскажешь?

4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Исправь <br> if ($poster eq $inmember) { <br> на <br> if ($poster eq $inmember || $poster eq $membername) {
А в начало (после $inmember =~ s/ /_/g; ) добавь <br>$membername = $inmember;<br>$membername =~ s/_/ /g;<br>

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
XXXX Pro
спасибо, работает :)

Gram
Модератор раздела

Gram
Откуда: здешний
Всего сообщений: 566
Рейтинг пользователя: 14

Репутация пользователя: 1




Дата регистрации на форуме:
23 июля 2003
А можно сделать процедуру сразу для всех пользователей?
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Теоретически можно. Сразу после countmsg добавь вот этот кусок кода [code]
opendir(DIR,$ikondir."members");
@members=readdir(DIR);
closedir(DIR);
@members=grep(/cgi$/,@members);
foreach $inmember {
[code]
и в конец добавь еще одну фигурную скобку ({).

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
[B]XXXX Pro [/B]
еще вопрос... можно ли сделать в админцентре возможность редактирования аватаров юзеров?

4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Теоретически - можно. Надо найти в profile.cgi соответствющий кусок кода и с минимальными изменениями перетащить в setmembers.cgi. Но нужно ли это? По-моему, работы много, а смысла мало: зачем админу менять аватары обычным пользователям?

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
[B]XXXX Pro [/B]
1. ок... сделаем
2. нужно - у некоторых такие аваторы стоят - волосы дыбом стоят: либо мат какой-нить либо еще чего.....- так ставишь вопр. знак и все... а мне приходится входить под ником юзера и менять ручками его профиль... так же и с интерсами... (у одного было написано, сорри за мат "*бля, суки и прочая х**ня"...
видишь - нужно иногда...

4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Я такие вопросы решаю проще: аватары стираю и запрещаю пользователю их закачку, и предупреждаю, что следующий раз будет бан на неделю, а затем - и пожизненный.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
JESUS
Новичок

JESUS
Откуда: Минск
Всего сообщений: 249
Рейтинг пользователя: 0





Дата регистрации на форуме:
10 сен. 2003
[B]XXXX Pro [/B]
:) а все-таки :)

<<Назад  Вперед>>Модератор: GramПечать
Объединенный Открытый Проект »   Русский IkonBoard »   Форум поддержки русской версии IkonBoard »   Профиль пользователя
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.0729. Количество выполненных запросов: 18, время выполнения запросов 0.0499