DacentGS Опубликовано 2 Ноября 2007 Жалоба Поделиться Опубликовано 2 Ноября 2007 DacentGSВообщем в этом моде есть потдержка графического отображения статистики слов, вот я и подумал почему бы не сделать такую же систему рангов как и для постов. Думаю это не очень сложно. Зделал бы сам, но я только недавно начал этим увлекаться. Для меня не проблемма модифицировать мод, но зделать свой куда сложнее. Думаю это будет полезно не только мне и поэтому предлагаю заняться этим. За основу можно взять стандартную систему рангов и слегка переделать её, но только что бы это так же отображалось в админке и можно было с лёгкостью поменять звание.Ну что возмётесь?MasterЧестно говоря я мало что понял из ваших описаний Если разъяснить не получается, то лучше показать на скриншотахDacentGSДавай на ты, мне так проще. Рисунок-пример.Вот пример: (см. рис.) над синими квадратиками вывоиться текущий ранг (по сообщениям), надо зделать тоже самое но для статистики слов! Т.е. там где написано "Статистика слов" надо зделать что бы при весе сообщений определённого количества статус менялся как и для сообщений, только надо что бы они разумееться были разными!Вот ещё: Админ-центр/Управление/Звания. надо зделать что бы был типа такой же пункт только например ниже, что бы так же можно было заполнять при каком количестве слов у пользователя будет определённый ранг! Так думаю понятнее будет. Надеюсь ты сможешь зделать этот мод, очень нужен просто так бы не просил. Ну а я в свою очередь пока подготовлю тутор по установке модифицированного и русифицированного модуля наград. Русифицировал обсолютно всё, включая админку, убрал дату награждения потому как прото тупо место она занимает, ну и всё в том же духе! Если заинтересовало могу выложить скрин.MasterИ так статистика для каждого поста?DacentGSНет! Ты вообще видел этот мод? Например когда у тебя вес сообщений равен 40 и в админке выставленно 40 (Болтун) то у тебя соответственно будет писаться там где написано "Статистика слов" Болтун!http://img168.imageshack.us/img168/9331/68793490fw9.th.pngMasterТак понимаю сделать тоже самое, но со словами..Вместо сообщений. Это краткое описание того что нужно, на ibresource мне не помогли, Master просто тупо забил. Следуя из своего опыта, IbResource и его жители всегда стремились помогать людям по мере возможности, поэтому решил спросить тут. По началу просто не хотел напрягать сдешних пользователей, поскольку и так много доставал их. Вообщем я надеюсь что тут мне помогут в модернизировании этой модификации, сам мод можно скачать по этой ссылочке, примеры смотрите в цитатах, думаю мысль уже уловили. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 3 Ноября 2007 Автор Жалоба Поделиться Опубликовано 3 Ноября 2007 удалено автором... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 3 Ноября 2007 Жалоба Поделиться Опубликовано 3 Ноября 2007 За полсуток получить готовый мод??? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 3 Ноября 2007 Автор Жалоба Поделиться Опубликовано 3 Ноября 2007 За полсуток получить готовый мод???Если бы.. Ты даже не знаешь сколько я уже жду, история всей моей жизни. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 7 Ноября 2007 Автор Жалоба Поделиться Опубликовано 7 Ноября 2007 За полсуток получить готовый мод???Звучит так как будто за него кто то взялся. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 7 Ноября 2007 Жалоба Поделиться Опубликовано 7 Ноября 2007 Никто и не говорил, что взялся. За моды просто так берутся когда интересны. Я сейчас делаю 4 штуки, которые мне интересны, буду надеятся скоро закончу первый из них. А зная, что сначала прийдётся у тебя выпытывать, что же на самом деле нужно сделать, я за эти слова пока что не возьмусь ни под каким предлогом Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 7 Ноября 2007 Автор Жалоба Поделиться Опубликовано 7 Ноября 2007 Хотя бы помог бы копировать систему званий, а уж привязать их к моду я сам попробую. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 21 Ноября 2007 Автор Жалоба Поделиться Опубликовано 21 Ноября 2007 Вот нашёл мод под 1.х, можно ли его переписать под 2.2? Этот мод как раз то что нужно, это и хотелось с самого начала, но не как не мог найти для второго поколения ipb.http://www.ibresource.ru/db/100/ Если его возможно переписать, то очень прошу, возмитесь кто-нибудь, готов даже щедро заплптить после чего можете смело добавлять мод в архив (я не жадный, пусть будет для всех). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 22 Ноября 2007 Автор Жалоба Поделиться Опубликовано 22 Ноября 2007 Я тут немного занялся переносом и мне нужна небольшая подсказака))Переведите мне пожалуйста этот запрос что бы он был правельным с точки зрения php.$this->ipsclass->DB->simple_exec_query("INSERT INTO ibf_wordcounter_titles (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"); Вот пример:$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'wordcounter_titles', 'where' => "id=".intval($this->ipsclass->input['id']) ) ); Ну вот собственно почти готовая система на подобие рангов, осталось немного подправить и прикрутить к моду. Надеюсь хоть тут мне кто поможет. =) //wordcounter2 //----------------------------------------- // // MEMBER RANKS22222222... // //----------------------------------------- function word_titles_recache() { $this->ipsclass->cache['words_ranks'] = array(); $this->ipsclass->DB->simple_construct( array( 'select' => 'id, title, pips, words_per_post', 'from' => 'wordcounter_titles', 'order' => "posts DESC", ) ); $this->ipsclass->DB->simple_exec(); while ($i = $this->ipsclass->DB->fetch_row()) { $this->ipsclass->cache['words_ranks'][ $i['id'] ] = array( 'TITLE' => $i['title'], 'PIPS' => $i['pips'], 'POSTS' => $i['posts'], ); } $this->ipsclass->update_cache( array( 'name' => 'words_ranks', 'array' => 1, 'deletefirst' => 1 ) ); } function word_count_titles() { $this->ipsclass->admin->page_title = "Управление званиями"; $this->ipsclass->admin->page_detail = "Эта секция позволяет вам изменять, удалять и добавлять новые звания.<br />Если вы хотите, чтобы форум показывал звездочки под именем пользователя, введите их количество.<br />Если вы хотите, чтобы форум показывал специальное изображение под именем пользователя, достаточно ввести ссылку с названием изображения.<br />Примечание: эти изображения должны находиться в директории «style_images/{img_dir}/folder_team_icons»."; $this->ipsclass->admin->nav[] = array( '', 'Звания пользователей' ); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( "Название" , "30%" ); $this->ipsclass->adskin->td_header[] = array( "Требуется сообщений" , "10%" ); $this->ipsclass->adskin->td_header[] = array( "Звездочки" , "20%" ); $this->ipsclass->adskin->td_header[] = array( "Изменение" , "20%" ); $this->ipsclass->adskin->td_header[] = array( "Удаление" , "20%" ); //----------------------------------------- // Parse macro //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_default=1" ) ); $this->ipsclass->DB->simple_exec(); $mid = $this->ipsclass->DB->fetch_row(); $this->ipsclass->DB->simple_construct( array( 'select' => 'macro_replace', 'from' => 'skin_macro', 'where' => "macro_set=1 AND macro_value='A_STAR'" ) ); $this->ipsclass->DB->simple_exec(); $row = $this->ipsclass->DB->fetch_row(); $row['A_STAR'] = str_replace( "<#IMG_DIR#>", $mid['set_image_dir'], $row['macro_replace'] ); $row['A_STAR'] = preg_replace( "#style_images#", $this->ipsclass->vars['board_url'].'/style_images', $row['A_STAR'] ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Звания пользователей" ); //----------------------------------------- // Lets get on with it... //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'wordcounter_titles', 'order' => "words_per_post" ) ); $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row() ) { $img = ""; if ( preg_match( "/^\d+$/", $r['pips'] ) ) { for ($i = 1; $i <= $r['pips']; $i++) { $img .= $row['A_STAR']; } } else { $img = "<img src='{$this->ipsclass->vars['board_url']}/style_images/{$mid['set_image_dir']}/folder_team_icons/{$r['pips']}' border='0'>"; } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>".$r['title']."</b>" , $r['words_per_post'], $img, "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=word_count_rank_edit&id={$r['id']}'>Изменить</a>", "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=word_count_rank_delete&id={$r['id']}'>Удалить</a>", ) ); } $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'word_count_do_add_rank' ), 2 => array( 'act' , 'mem' ), 4 => array( 'section', $this->ipsclass->section_code ), ) ); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Добавление звания" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Rank Title</b>" , $this->ipsclass->adskin->form_input( "title" ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Words per post needed</b>" , $this->ipsclass->adskin->form_input( "posts" ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Number of pips</b><br>(Or pip image)" , $this->ipsclass->adskin->form_input( "pips" ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Add this Wordcounter rank"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->output(); } //----------------------------------------- function word_count_add_rank() { //----------------------------------------- // check for input //----------------------------------------- foreach( array( 'words_per_post', 'title', 'pips' ) as $field ) { if ($this->ipsclass->input[ $field ] == "") { $this->ipsclass->admin->error("You must complete the form fully"); } } //----------------------------------------- // Add it to the DB //----------------------------------------- $db_string = $this->ipsclass->DB->compile_db_insert_string( array ( 'words_per_post' => trim($this->ipsclass->input['words_per_post']), 'title' => trim($this->ipsclass->input['title']), 'pips' => trim($this->ipsclass->input['pips']), ) ); $this->ipsclass->DB->query("INSERT INTO ibf_wordcounter_titles (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"); $this->word_titles_recache(); $this->ipsclass->admin->done_screen("Звание добавлено", "Управление званиями", "{$this->ipsclass->form_code}&code=title", 'redirect' ); } //----------------------------------------- function word_count_delete_rank() { //----------------------------------------- // check for input //----------------------------------------- if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("We could not match that ID"); } $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'wordcounter_titles', 'where' => "id=".intval($this->ipsclass->input['id']) ) ); $this->word_titles_recache(); $this->ipsclass->admin->save_log("Removed Wordcounter Rank Setting"); $this->ipsclass->admin->done_screen("Звание удалено", "Управление званиями", "{$this->ipsclass->form_code}&code=word_count_title", 'redirect' ); } /*-------------------------------------------------------------------------*/ // Edit rank images / pips /*-------------------------------------------------------------------------*/ function word_count_edit_rank() { //----------------------------------------- // check for input //----------------------------------------- if ( $this->ipsclass->input['id'] == "" ) { $this->ipsclass->admin->error("We could not match that ID"); } //----------------------------------------- // Maximum number of pips... //----------------------------------------- if ( intval( $this->ipsclass->input['pips'] ) == $this->ipsclass->input['pips'] ) { if ( $this->ipsclass->input['pips'] > 100 ) { $this->ipsclass->admin->error( "Максимальное количество звездочек — 100." ); } } //----------------------------------------- // Check pips and images //----------------------------------------- foreach( array( 'words_per_post', 'title', 'pips' ) as $field ) { if ( $this->ipsclass->input[ $field ] == "" ) { $this->ipsclass->admin->error("You must complete the form fully"); } } //----------------------------------------- // Add it to the DB //----------------------------------------- $db_string = $this->ipsclass->DB->do_update( 'titles', array ( 'words_per_post' => trim($this->ipsclass->input['words_per_post']), 'title' => trim($this->ipsclass->input['title']), 'pips' => trim($this->ipsclass->input['pips']), ) , "id=" . intval( $this->ipsclass->input['id'] ) ); $this->ipsclass->DB->simple_construct( array( 'update' => 'wordcounter_titles', 'set' => '$db_string', 'where' => 'id='.$this->ipsclass->input['id'].'') ); $this->ipsclass->admin->save_log("Edited Wordcounter Rank Setting"); $this->ipsclass->admin->done_screen("Wordcounter Rank Edited", "Wordcounter Member Ranking Control", "{$this->ipsclass->form_code}&code=word_count_title", 'redirect' ); } /*-------------------------------------------------------------------------*/ // Edit rank titles /*-------------------------------------------------------------------------*/ function word_count_rank_setup($mode='edit') { $this->ipsclass->admin->page_title = "Wordcounter Member Rank Set Up"; $this->ipsclass->admin->page_detail = "Если вы хотите, чтобы форум показывал звездочки под именем пользователя, введите их количество.<br />Если вы хотите, чтобы форум показывал специальное изображение под именем пользователя, достаточно ввести ссылку с названием изображения.<br />Примечание: эти изображения должны находиться в директории 'style_images/{img_dir}/folder_team_icons'."; $this->ipsclass->admin->nav[] = array( '', 'Добавление/изменение звания' ); if ( $mode == 'edit' ) { $form_code = 'word_count_do_rank_edit'; if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("No rank ID was set, please try again"); } $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'wordcounter_titles', 'where' => "id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $rank = $this->ipsclass->DB->fetch_row(); $button = "Complete Edit"; } else { $form_code = 'word_count_do_add_rank'; $rank = array( 'words_per_post' => "", 'title' => "", 'pips' => ""); $button = "Add this rank"; } //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , $form_code ), 2 => array( 'act' , 'mem' ), 3 => array( 'id' , $rank['id'] ), 4 => array( 'section', $this->ipsclass->section_code ), ) ); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Wordcounter Member Ranks" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Wordcounter Rank Title</b>" , $this->ipsclass->adskin->form_input( "title", $rank['title'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Minimum words per post needed</b>" , $this->ipsclass->adskin->form_input( "words_per_post", $rank['words_per_post'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Number of pips</b><br>(Or pip image)" , $this->ipsclass->adskin->form_input( "pips", $rank['pips'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form($button); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->output(); } //+--------------------------------------------------------------------------------- //wordcounter2--- Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 22 Ноября 2007 Автор Жалоба Поделиться Опубликовано 22 Ноября 2007 Вот доработал, полностью рабочая версия. Помогите вывести и прикрутить их (ранги) в данный мод (название темы). $TABLE[] = "CREATE TABLE ibf_words_titles ( id smallint(5) NOT NULL auto_increment, words_posts int(10) default NULL, title varchar(128) default NULL, pips varchar(128) default NULL, PRIMARY KEY (id), KEY words_posts (words_posts) );"; $INSERT[] = "INSERT INTO ibf_words_titles (id, words_posts, title, pips) VALUES (1, 0, 'Молчит', '1');"; $INSERT[] = "INSERT INTO ibf_words_titles (id, words_posts, title, pips) VALUES (2, 10, 'Локаничен', '2');"; $INSERT[] = "INSERT INTO ibf_words_titles (id, words_posts, title, pips) VALUES (4, 30, 'Advanced Poster', '3');"; //----------------------------------------- // words ranks / titles //----------------------------------------- case 'words_title': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':title-view' ); $this->words_titles_start(); break; case 'words_rank_edit': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':title-edit' ); $this->words_titles_rank_setup('edit'); break; case 'words_rank_add': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':title-add' ); $this->words_titles_rank_setup('add'); break; case 'words_do_add_rank': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':title-add' ); $this->words_titles_add_rank(); break; case 'words_do_rank_edit': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':title-edit' ); $this->words_titles_edit_rank(); break; case 'words_rank_delete': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':title-remove' ); $this->words_titles_delete_rank(); break; //----------------------------------------- //----------------------------------------- // // WORDS MEMBER RANKS... // //----------------------------------------- function words_titles_recache() { $this->ipsclass->cache['ranks'] = array(); $this->ipsclass->DB->simple_construct( array( 'select' => 'id, title, pips, words_posts', 'from' => 'words_titles', 'order' => "words_posts DESC", ) ); $this->ipsclass->DB->simple_exec(); while ($i = $this->ipsclass->DB->fetch_row()) { $this->ipsclass->cache['ranks'][ $i['id'] ] = array( 'TITLE' => $i['title'], 'PIPS' => $i['pips'], 'WORDS_POSTS' => $i['words_posts'], ); } $this->ipsclass->update_cache( array( 'name' => 'ranks', 'array' => 1, 'deletefirst' => 1 ) ); } function words_titles_start() { $this->ipsclass->admin->page_title = "Управление званиями"; $this->ipsclass->admin->page_detail = "Эта секция позволяет вам изменять, удалять и добавлять новые звания.<br />Если вы хотите, чтобы форум показывал звездочки под именем пользователя, введите их количество.<br />Если вы хотите, чтобы форум показывал специальное изображение под именем пользователя, достаточно ввести ссылку с названием изображения.<br />Примечание: эти изображения должны находиться в директории «style_images/{img_dir}/folder_team_icons»."; $this->ipsclass->admin->nav[] = array( '', 'Звания пользователей' ); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( "Название" , "30%" ); $this->ipsclass->adskin->td_header[] = array( "Требуется сообщений" , "10%" ); $this->ipsclass->adskin->td_header[] = array( "Звездочки" , "20%" ); $this->ipsclass->adskin->td_header[] = array( "Изменение" , "20%" ); $this->ipsclass->adskin->td_header[] = array( "Удаление" , "20%" ); //----------------------------------------- // Parse macro //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_default=1" ) ); $this->ipsclass->DB->simple_exec(); $mid = $this->ipsclass->DB->fetch_row(); $this->ipsclass->DB->simple_construct( array( 'select' => 'macro_replace', 'from' => 'skin_macro', 'where' => "macro_set=1 AND macro_value='A_STAR'" ) ); $this->ipsclass->DB->simple_exec(); $row = $this->ipsclass->DB->fetch_row(); $row['A_STAR'] = str_replace( "<#IMG_DIR#>", $mid['set_image_dir'], $row['macro_replace'] ); $row['A_STAR'] = preg_replace( "#style_images#", $this->ipsclass->vars['board_url'].'/style_images', $row['A_STAR'] ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Звания пользователей" ); //----------------------------------------- // Lets get on with it... //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'words_titles', 'order' => "words_posts" ) ); $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row() ) { $img = ""; if ( preg_match( "/^\d+$/", $r['pips'] ) ) { for ($i = 1; $i <= $r['pips']; $i++) { $img .= $row['A_STAR']; } } else { $img = "<img src='{$this->ipsclass->vars['board_url']}/style_images/{$mid['set_image_dir']}/folder_team_icons/{$r['pips']}' border='0'>"; } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>".$r['title']."</b>" , $r['words_posts'], $img, "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=words_rank_edit&id={$r['id']}'>Изменить</a>", "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=words_rank_delete&id={$r['id']}'>Удалить</a>", ) ); } $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'words_do_add_rank' ), 2 => array( 'act' , 'mem' ), 4 => array( 'section', $this->ipsclass->section_code ), ) ); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Добавление звания" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Звание</b>" , $this->ipsclass->adskin->form_input( "title" ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Минимальное количество сообщений для получения звания</b>" , $this->ipsclass->adskin->form_input( "words_posts" ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Количество звездочек</b><div class='graytext'>Или название - изображение должно быть загружено в директорию 'style_images/{img_dir}/folder_team_icons'</div>" , $this->ipsclass->adskin->form_input( "pips" ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Добавить"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->output(); } //----------------------------------------- function words_titles_add_rank() { //----------------------------------------- // check for input //----------------------------------------- foreach( array( 'words_posts', 'title', 'pips' ) as $field ) { if ($this->ipsclass->input[ $field ] == "") { $this->ipsclass->admin->error("Вы должностью полностью заполнить форму"); } } //----------------------------------------- // Add it to the DB //----------------------------------------- $this->ipsclass->DB->do_insert( 'words_titles', array( 'words_posts' => trim($this->ipsclass->input['words_posts']), 'title' => trim($this->ipsclass->input['title']), 'pips' => trim($this->ipsclass->input['pips']), ) ); $this->words_titles_recache(); $this->ipsclass->admin->done_screen("Звание добавлено", "Управление званиями", "{$this->ipsclass->form_code}&code=words_title", 'redirect' ); } //----------------------------------------- function words_titles_delete_rank() { //----------------------------------------- // check for input //----------------------------------------- if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Невозможно найти звание с таким ID"); } $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'words_titles', 'where' => "id=".intval($this->ipsclass->input['id']) ) ); $this->words_titles_recache(); $this->ipsclass->admin->save_log("Удалено звание"); $this->ipsclass->admin->done_screen("Звание удалено", "Управление званиями", "{$this->ipsclass->form_code}&code=words_title", 'redirect' ); } /*-------------------------------------------------------------------------*/ // Edit rank images / pips /*-------------------------------------------------------------------------*/ function words_titles_edit_rank() { //----------------------------------------- // check for input //----------------------------------------- if ( $this->ipsclass->input['id'] == "" ) { $this->ipsclass->admin->error("Невозможно найти звание с таким ID"); } //----------------------------------------- // Maximum number of pips... //----------------------------------------- if ( intval( $this->ipsclass->input['pips'] ) == $this->ipsclass->input['pips'] ) { if ( $this->ipsclass->input['pips'] > 100 ) { $this->ipsclass->admin->error( "Максимальное количество звездочек — 100." ); } } //----------------------------------------- // Check pips and images //----------------------------------------- foreach( array( 'words_posts', 'title', 'pips' ) as $field ) { if ( $this->ipsclass->input[ $field ] == "" ) { $this->ipsclass->admin->error("Вы должностью полностью заполнить форму"); } } //----------------------------------------- // Add it to the DB //----------------------------------------- $this->ipsclass->DB->do_update( 'words_titles', array ( 'words_posts' => trim($this->ipsclass->input['words_posts']), 'title' => trim($this->ipsclass->input['title']), 'pips' => trim($this->ipsclass->input['pips']), ) , "id=" . intval( $this->ipsclass->input['id'] ) ); $this->words_titles_recache(); $this->ipsclass->admin->save_log("Изменено звание"); $this->ipsclass->admin->done_screen("Звание изменено", "Управление званиями", "{$this->ipsclass->form_code}&code=words_title", 'redirect' ); } /*-------------------------------------------------------------------------*/ // Edit rank titles /*-------------------------------------------------------------------------*/ function words_titles_rank_setup($mode='edit') { $this->ipsclass->admin->page_title = "Добавление/изменение звания"; $this->ipsclass->admin->page_detail = "Если вы хотите, чтобы форум показывал звездочки под именем пользователя, введите их количество.<br />Если вы хотите, чтобы форум показывал специальное изображение под именем пользователя, достаточно ввести ссылку с названием изображения.<br />Примечание: эти изображения должны находиться в директории 'style_images/{img_dir}/folder_team_icons'."; $this->ipsclass->admin->nav[] = array( '', 'Добавление/изменение звания' ); if ( $mode == 'edit' ) { $form_code = 'words_do_rank_edit'; if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Невозможно найти звание с таким ID"); } $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'words_titles', 'where' => "id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $rank = $this->ipsclass->DB->fetch_row(); $button = "Изменить"; } else { $form_code = 'words_do_add_rank'; $rank = array( 'words_posts' => "", 'title' => "", 'pips' => ""); $button = "Добавить"; } //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , $form_code ), 2 => array( 'act' , 'mem' ), 3 => array( 'id' , $rank['id'] ), 4 => array( 'section', $this->ipsclass->section_code ), ) ); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Звания пользователей" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Звание</b>" , $this->ipsclass->adskin->form_input( "title", $rank['title'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Минимальное количество сообщений для получения звания</b>" , $this->ipsclass->adskin->form_input( "words_posts", $rank['words_posts'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Количество звездочек (максимум: 100)</b><br />(Или изображение звания)" , $this->ipsclass->adskin->form_input( "pips", $rank['pips'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form($button); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->output(); } Вот к этому коду я так понемаю надо прикручивать звания. Поскольку теперь звёздочки и звания содержатся вместе, надо убрать вывод звёздочек из запроса и добавить код который будет брать параметры из вышеприведённова. switch($this->ipsclass->vars['wcm_showtopic']){ case 'total': $words_val = $member['total_words']; $member['member_wordstat'] = $this->ipsclass->lang['words_total'].$words_val; break; case 'perday': $words_val = $member['total_words'] / ceil((time() - $member['joined']) / (500*24)); $member['member_wordstat'] = sprintf($this->ipsclass->lang['words_perday']."%.0f", $words_val); break; case 'perpost': $this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(*) as total_posts', 'from' => 'posts', 'where' => "author_id={$member['id']}" ) ); $this->ipsclass->DB->simple_exec(); $total_posts = $this->ipsclass->DB->fetch_row(); $words_val = $total_posts['total_posts'] ? $member['total_words']/$total_posts['total_posts']/2.5 : 0; $member['member_wordstat'] = sprintf($this->ipsclass->lang['words_perpost']."%.0f", $words_val); ; } if ( $this->ipsclass->vars['wcm_showgraph'] && $this->ipsclass->vars['wcm_graph_levels'] ) { $pips = 0; $levels = explode(',', $this->ipsclass->vars['wcm_graph_levels']); for ($i = count($levels)-1; $i >= 0; $i--) { if ($words_val >= $levels[$i]) { $pips = $i+1; break; } } if ($pips) { for ($i = 1; $i <= $pips; ++$i) { $member['member_words_rank'] .= "<img src='{$this->ipsclass->vars['img_url']}/pip2.gif' border='0' >"; } $member['member_words_rank'] .= ""; } } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 22 Ноября 2007 Автор Жалоба Поделиться Опубликовано 22 Ноября 2007 Млин, я уже и так и сяк, а не кто даже и не думает помогать... Вспомните себя когда только начинали.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.