Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

DawPi

Manager
  • Postów

    77 485
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    476

Treść opublikowana przez DawPi

  1. Jeśli chcesz w prosty sposób włączyć pokazywanie nru GG userów wraz z oznaczenie statusu GG postępuj wg poniższej instrukcji. Pierwszą czynnością jest zalogowanie się do ACP: Następnie przejście do zakładki MANAGEMENT i opcji: Custom Profile Fields Następnie należy nacisnąć przycisk: Add New Field I wypełnić formularz zgodnie ze schematem: Field Title: Nr GG Description: Wpisz swój nr GG Field Type: Text Input Maximum Input: 10 Field can be edited by the member?: Yes Topic View Format?: {title}: {content} <a href="gg:{content}"><img src="http://status.gadu-gadu.pl/users/status.asp?id={content}&styl=1"></img></a><br /> Efekt końcowy przedstawia się tak: Pamiętać należy, że status GG będzie pokazywany tylko tym userom którzy nie zaznaczyli opcji w GG: pokazuj status tylko znajomym. Pozostałym będzie się pokazywać czerwone słoneczko. Enjoy!
  2. Spotykam się z pytaniami odnośnie instalowania skinów, ludzie pytają jak się to robi, czy się wrzuca grafikę na FTP, a potem coś z nimi robi, albo inaczej. Dlatego postanowiłem napisać ten tutorial by takie pytania już nie padały, na przykładzie standardowego skinu IP.Board. Informacje wstępne: prawidłowy skin posiada minimum dwa pliki: ipb_skin-pro.xml.gz - plik zawierający bity szablonu, CSSa itd. ipb_images-pro.xml.gz - plik zawierający grafikę są to pliki .xml spakowane do .gz Pierwszą czynnością jest zalogowanie się do ACP: Następnie przechodzimy do zakładki LOOK & FEEL i opcji: Skin Import/Export Kolejny krok to wybranie pliku ipb_skin-pro.xml.gz w sekcji: Upload XML Template set ( nr 1 na screenie ) i naciśnięcie przycisku: IMPORT SKIN XML wyjaśnienie: nr 1 - w tym miejscu wybiera się lokalizację pliku który chcemy zuploadować nr 2 - można skorzystać z alternatywnego uploadowania ( np. jeśli Admin serwera wprowadził ograniczenia ). Należy wysłać plik na serwer do głównego katalogu forum i wpisać jego nazwę ( wraz z rozszerzeniem ) w pole nr 2. nr 3 - w tej sekcji można wprowadzić nazwę dla nowego skina lub pozostawić puste by użyć nazwy z pliku ( nie mylić z nazwą pliku ) nr 4 - jeśli wcześniej zuploadowano obrazki skina można wybrać do której paczki ma zostać przypisany nowo uploadowany skin Kolejny krok to upload pliku zawierającego grafikę skina w sekcji: Upload XMLarchive Image set i naciśnięcie przycisku: IMPORT SKIN IMAGES wyjaśnienie: nr 1 - w tym miejscu wybiera się lokalizację pliku który chcemy zuploadować nr 2 - można skorzystać z alternatywnego uploadowania ( np. jeśli Admin serwera wprowadził ograniczenia ). Należy wysłać plik na serwer do głównego katalogu forum i wpisać jego nazwę ( wraz z rozszerzeniem ) nr 3 - w tej sekcji można wprowadzić nazwę dla folderu z grafiką lub pozostawić puste by użyć nazwy z pliku ( nie mylić z nazwą pliku ) nr 4 - jeśli wcześniej zuploadowano plik skina można wybrać do której paczki ma zostać przypisany nowo uploadowana grafika Niektóre skiny mają własne pliki makr, uploadujemy je w sekcji: Upload XML Macro set i naciśnięcie przycisku: IMPORT SKIN MACROS wyjaśnienie: nr 1 - w tym miejscu wybiera się lokalizację pliku który chcemy zuploadować nr 2 - można skorzystać z alternatywnego uploadowania ( np. jeśli Admin serwera wprowadził ograniczenia ). Należy wysłać plik na serwer do głównego katalogu forum i wpisać jego nazwę ( wraz z rozszerzeniem ) nr 3 - w tej sekcji wybieramy skin dla którego zostanie nadpisana zawartość makr Autorem tutoriala jest DawPi. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.IPB.ipslink.pl & www.InvisionBoard.pl
  3. Jeśli chcesz ustawić by poszczególne grupy mogły uploadować avatary różnych max. rozmiarów ( np. grupa member maksymalnie 80x80, a np. grupa VIP 100x100 ) to ten mod jest dla Ciebie. By go zainstalować postępuj wg poniższej instrukcji. Przejdź do: ACP > ADMIN > SQL Management > SQL Toolbox >> Run a Query i wykonaj następujące zapytanie: ALTER TABLE `ibf_groups` ADD `g_avatar_max_vars` VARCHAR( 200 ) NULL DEFAULT '20:64:64'; Otwórz plik: sources/action_admin/groups.php Znajdź: $this->ipsclass->input['p_max'] = str_replace( ":", "", $this->ipsclass->input['p_max'] ); $this->ipsclass->input['p_width'] = str_replace( ":", "", $this->ipsclass->input['p_width'] ); $this->ipsclass->input['p_height'] = str_replace( ":", "", $this->ipsclass->input['p_height'] ); Dodaj poniżej: $this->ipsclass->input['a_max'] = str_replace( ":", "", $this->ipsclass->input['a_max'] ); $this->ipsclass->input['a_width'] = str_replace( ":", "", $this->ipsclass->input['a_width'] ); $this->ipsclass->input['a_height'] = str_replace( ":", "", $this->ipsclass->input['a_height'] ); Znajdź: 'g_photo_max_vars' => $this->ipsclass->input['p_max'].':'.$this->ipsclass->input['p_width'].':'.$this->ipsclass->input['p_height'], Dodaj poniżej: 'g_avatar_max_vars' => $this->ipsclass->input['a_max'].':'.$this->ipsclass->input['a_width'].':'.$this->ipsclass->input['a_height'], Znajdź: list($p_max, $p_width, $p_height) = explode( ":", $group['g_photo_max_vars'] ); Dodaj poniżej: list($a_max, $a_width, $a_height) = explode( ":", $group['g_avatar_max_vars'] ); Znajdź: $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "AVATARS: Allow avatar uploads?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_avatar_upload", $group['g_avatar_upload'] ) ) ); Dodaj poniżej: $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>ROZMIAR AVATARU: max. rozmiar avataru (w KB)</b>" , $this->ipsclass->adskin->form_input("a_max", $a_max )."<br />" ."Max szerokość (px): <input type='text' size='3' class='textinput' name='a_width' value='{$a_width}'> " ) ); Zapisz i wyślij. Otwórz plik: sources/action_public/usercp.php Znajdź: list( $this->ipsclass->vars['av_width'] , $this->ipsclass->vars['av_height'] ) = explode ("x", $this->ipsclass->vars['avatar_dims']); list( $w, $h ) = explode ( "x", $this->ipsclass->vars['avatar_def'] ); Zamień na: list( $this->ipsclass->vars['avup_size_max'] , $this->ipsclass->vars['av_width'] , $this->ipsclass->vars['av_height'] ) = explode (":", strtolower($this->ipsclass->member['g_avatar_max_vars']) ); list( $maxsizeunused, $w , $h ) = explode( ":", strtolower($this->ipsclass->member['g_avatar_max_vars']) ); Zapisz i wyślij. Otwórz plik: sources/libs/func_usercp.php Znajdź: list($p_width, $p_height) = explode( "x", $this->ipsclass->vars['avatar_dims'] ); Zamień na: list( $this->ipsclass->vars['avup_size_max'], $p_width, $p_height ) = explode( ":", strtolower($this->ipsclass->member['g_avatar_max_vars']) ); Zapisz i wyślij. Enjoy!
  4. Po migracji z wersji MySQL wyższej do niższej ( no. z 4.1 do 4.0, lub 4.1 do 3.23 ) występuje problem z wartością "Auto Increment" w bazie danych, pojawiają się błędy "Duplicate key 0", wszystko się rozsypuje jednym słowem. By to naprawić w prosty sposób musisz wykonać następujące zapytanie np. w PhpMyAdminie: ALTER TABLE `ibf_admin_logs` CHANGE `id` `id` BIGINT( 20 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_admin_login_logs` CHANGE `admin_id` `admin_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_announcements` CHANGE `announce_id` `announce_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_attachments` CHANGE `attach_id` `attach_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_attachments_type` CHANGE `atype_id` `atype_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_badwords` CHANGE `wid` `wid` INT( 3 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_banfilters` CHANGE `ban_id` `ban_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_bulk_mail` CHANGE `mail_id` `mail_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_cal_calendars` CHANGE `cal_id` `cal_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_cal_events` CHANGE `event_id` `event_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_components` CHANGE `com_id` `com_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_conf_settings` CHANGE `conf_id` `conf_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_conf_settings_titles` CHANGE `conf_title_id` `conf_title_id` SMALLINT( 3 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_contacts` CHANGE `id` `id` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_custom_bbcode` CHANGE `bbcode_id` `bbcode_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_dnames_change` CHANGE `dname_id` `dname_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_email_logs` CHANGE `email_id` `email_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_emoticons` CHANGE `id` `id` SMALLINT( 3 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_faq` CHANGE `id` `id` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_forum_perms` CHANGE `perm_id` `perm_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_forum_tracker` CHANGE `frid` `frid` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_groups` CHANGE `g_id` `g_id` INT( 3 ) UNSIGNED NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_languages` CHANGE `lid` `lid` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_login_methods` CHANGE `login_id` `login_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_mail_error_logs` CHANGE `mlog_id` `mlog_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_mail_queue` CHANGE `mail_id` `mail_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_members_converge` CHANGE `converge_id` `converge_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_members_partial` CHANGE `partial_id` `partial_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_message_text` CHANGE `msg_id` `msg_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_message_topics` CHANGE `mt_id` `mt_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_moderators` CHANGE `mid` `mid` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_moderator_logs` CHANGE `id` `id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_profile_ratings` CHANGE `rating_id` `rating_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_profile_friends` CHANGE `friends_id` `friends_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_profile_comments` CHANGE `comment_id` `comment_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_pfields_data` CHANGE `pf_id` `pf_id` SMALLINT( 5 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_polls` CHANGE `pid` `pid` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_posts` CHANGE `pid` `pid` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_rss_export` CHANGE `rss_export_id` `rss_export_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_rss_import` CHANGE `rss_import_id` `rss_import_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_skin_macro` CHANGE `macro_id` `macro_id` SMALLINT( 3 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_skin_sets` CHANGE `set_skin_set_id` `set_skin_set_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_skin_templates` CHANGE `suid` `suid` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_spider_logs` CHANGE `sid` `sid` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_subscription_extra` CHANGE `subextra_id` `subextra_id` SMALLINT( 5 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_subscription_logs` CHANGE `sublog_id` `sublog_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_subscription_methods` CHANGE `submethod_id` `submethod_id` SMALLINT( 5 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_subscription_trans` CHANGE `subtrans_id` `subtrans_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_subscriptions` CHANGE `sub_id` `sub_id` SMALLINT( 5 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_task_logs` CHANGE `log_id` `log_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_task_manager` CHANGE `task_id` `task_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_template_diff_session` CHANGE `diff_session_id` `diff_session_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_titles` CHANGE `id` `id` SMALLINT( 5 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_topic_mmod` CHANGE `mm_id` `mm_id` SMALLINT( 5 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_topic_ratings` CHANGE `rating_id` `rating_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_topics` CHANGE `tid` `tid` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_tracker` CHANGE `trid` `trid` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_upgrade_history` CHANGE `upgrade_id` `upgrade_id` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_voters` CHANGE `vid` `vid` INT( 10 ) NOT NULL AUTO_INCREMENT; ALTER TABLE `ibf_warn_logs` CHANGE `wlog_id` `wlog_id` INT( 10 ) NOT NULL AUTO_INCREMENT; Testowane na wersji 2.2.2 Enjoy!
  5. By szybko i sprawnie przenieść userów z jednej grupy do drugiej postępuj wg poniższej instrukcji. Przejdź do: ACP > ADMIN > SQL Management > SQL Toolbox >> Run a Query i wykonaj następujące zapytanie: UPDATE ibf_members SET mgroup = x WHERE mgroup = y gdzie: x - ID grupy do której przenosisz userów y - ID grupy z której przenosisz userów Nie wiesz jak znaleźć wartości x i y ? Zajrzyj do tego artykułu. Enjoy!
  6. Jeśli z jakiś przyczyn potrzebujesz zdobyć informacje jakie ID ma dana grupa, postępuj wg poniższej instrukcji. Przejdź do: ACP > ADMIN > SQL Management > SQL Toolbox >> Run a Query i wykonaj następujące zapytanie: SELECT g_id, g_title FROM ibf_groups Pamiętaj by zastąpić ibf_ prefixem Twojej bazy danych. Nie znasz prefixu bazy danych? Otwórz plik: conf_global.php Znajdź: $INFO['sql_tbl_prefix'] = 'PREFIX'; w miejscu PREFIX jest to ,czego szukasz Efekt: Enjoy!
  7. Jeśli chcesz utrzymać kondycję bazy danych w dobrej formie powinieneś dbać o nią. Jednym ze sposobów jest manualne wykonanie czyszczenia niepotrzebnych logów. By to wykonać przejdź do: ACP > ADMIN > SQL Management > SQL Toolbox >> Run a Query i wykonaj następujące zapytanie: truncate ibf_admin_logs; truncate ibf_admin_login_logs; truncate ibf_email_logs; truncate ibf_mail_error_logs; truncate ibf_moderator_logs; truncate ibf_spider_logs; truncate ibf_task_logs; truncate ibf_warn_logs; Pamiętaj by zastąpić ibf_ prefixem Twojej bazy danych. Nie znasz prefixu bazy danych? Otwórz plik: conf_global.php Znajdź: $INFO['sql_tbl_prefix'] = 'PREFIX'; w miejscu PREFIX jest to ,czego szukasz enjoy!
  8. Jeśli z jakiś powodów chcesz usunąć listę wyboru języka, ponieważ np. masz jeden na forum postępuj wg poniższej instrukcji. Przejdź do: ACP > Look & Feel > ( wybór skina ) > Edit Template HTML > All Global HTML >> Global Board Footer Znajdź i usuń: <% LANGCHOOSER %> Efekt: Enjoy!
  9. Jeśli z jakiś powodów chcesz użyć następujących symboli: ® ™ © bez włączania HTML w danym forum wystarczy, że użyjesz tych zamienników: (r) -> ® (tm) -> ™ (c) -> © Enjoy!
  10. Jeśli chcesz dodać tag do Twojego forum, dzięki któremu user będzie mógł w prosty sposób wstawić film z YouTube lub Video Google bez kombinacji z ID filmów etc. tylko przez proste wstawienie linku: function clean_video_tag( $matches=array() ) { $code = $matches[1]; if ( $code == "") { return; } if (strstr($code, 'google') != "") { $startingpos = strpos($code, 'docid=') + 6; $lenght = strpos($code, '&') - 155; return '[video]http://video.google.com/videoplay?docid='.substr($code, $startingpos, $lenght).'&[/video]'; } else if (strstr($code, 'youtube') != "") { $startingpos = strpos($code, '/v/') + 3; $lenght = strpos($code, '&') - 85; return '[video]http://www.youtube.com/watch?v='.substr($code, $startingpos, $lenght).'&[/video]'; } } function regex_video_tag( $matches=array() ) { $link = $matches[1]; if ( $link == "" ) { return; } if (strstr($link, 'google') != "") { $startingpos = strpos($link, 'docid=') + 6; $endpos = strpos($link,'&'); if ($endpos > $startingpos) { $lenght = $endpos - $startingpos; $code = '<!--id1--><div><embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid='.substr($link, $startingpos, $lenght).'&" > </embed></div><!--id2-->'; return $code; } else if ($endpos < $startingpos) { $lenght = strlen($link) - $startingpos; $code = '<!--id1--><div><embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid='.substr($link, $startingpos, $lenght).'&" > </embed></div><!--id2-->'; return $code; } } else if (strstr($link, 'youtube') != "") { $startingpos = strpos($link, 'v=') + 2; $endpos = strpos($link, '&'); if ($endpos > $startingpos) { $lenght = $endpos - $startingpos; $code = '<!--id1--><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/'.substr($link, $startingpos, $lenght).'&"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/'.substr($link, $startingpos, $lenght).'&" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object><!--id2-->'; return $code; } else if ($endpos < $startingpos) { $lenght = strlen($link); $code = '<!--id1--><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/'.substr($link, $startingpos, $lenght).'&"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/'.substr($link, $startingpos, $lenght).'&" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object><!--id2-->'; return $code; } } else { return 'Zły link do video'; } }
  11. Jeśli z jakiś powodów chcesz usunąć linię "Forum prowadzone przez..." w widoku głównym forum postępuj wg poniższej instrukcji. Przejdź do: ACP > Look & Feel > ( wybór skina ) > Edit Template HTML > Board Index >> Forum Row Znajdź i usuń: <i>{$data['moderator']}</i> Zapisz bit. Enjoy!
  12. Podobnie jak to miało miejsce przy zmianach we wrapperze ( zobacz tutorial ) tak i tutaj każda zmiana bitów skina będzie odnotowana w logach administracyjnych. Wpis w logach będzie wyglądał tak: "Zaktualizowano bit(y) w skinie o nazwie: [nazwa skina] i zapisano zmianę do bazy danych". Postępuj wg poniższej instrukcji. Otwórz plik: sources/action_admin/skin_template_bits.php Znajdź: array_pop($this->ipsclass->cache_func->messages); Dodaj poniżej: $this->ipsclass->DB->simple_construct( array( 'select' => 'set_name', 'from' => 'skin_sets', 'where' => "set_skin_set_id='".$this->ipsclass->input['id']."'", ) ); $this->ipsclass->DB->simple_exec(); $r = $this->ipsclass->DB->fetch_row(); $set_name = $r['set_name']; $this->ipsclass->admin->save_log ("Zaktualizowano bit(y) w skinie o nazwie: '{$set_name}' i zapisano zmianę do bazy danych"); Enjoy!
  13. Dzięki tej modyfikacji każda zmiana wrappera skina będzie odnotowana w logach administracyjnych. Dla przykładu jeśli włamie się hacker na forum i zmieni wrappera ( np. dodaj ramkę do skina ) będzie to odnotowane w logach i dzięki temu szybciej będzie można dojść do tego, co zostało zmienione. Postępuj wg poniższej instrukcji. Otwórz plik: sources/action_admin/skin_wrappers.php Znajdź: //----------------------------------------- // Done //----------------------------------------- if ( ! $this->ipsclass->input['savereload'] ) { $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code ,'Skin Manager Home' ); Dodaj poniżej: $this->ipsclass->admin->save_log("Updated Board Header and Footer Wrapper"); Znajdź: //----------------------------------------- // Reload edit window //----------------------------------------- Dodaj poniżej: $this->ipsclass->admin->save_log("Updated Board Header and Footer Wrapper"); Enjoy!
  14. Artykuł ten pokaże jak w prosty sposób zsychronizować dwa fora oparte na IP.Board. Info wstępne: istnieją dwa fora: forum A i forum B. By zsynchronizować forum A z B postępuj wg poniższej instrukcji. pliki forum A: Otwórz plik conf_global.php Znajdź: $INFO['sql_host'] = 'localhost'; $INFO['sql_database'] = 'ForumsA'; $INFO['sql_user'] = 'ForumsA'; $INFO['sql_pass'] = 'ForumsA'; $INFO['sql_tbl_prefix'] = 'ibf_'; Dodaj niżej: $INFO['sql_host2'] = 'localhost'; $INFO['sql_database2'] = 'ForumsB'; $INFO['sql_user2'] = 'ForumsB'; $INFO['sql_pass2'] = 'ForumsB'; $INFO['sql_tbl_prefix2'] = 'ibf_'; Zapisz i wyślij. Otwórz plik: modules/ipb_member_sync.php znajdź: function on_create_account($member, $converge) { global $ipsclass; Dodaj poniżej: $ipsclass->DB2 = new db_driver; $ipsclass->DB2->obj['sql_database'] = $ipsclass->vars['sql_database2']; $ipsclass->DB2->obj['sql_user'] = $ipsclass->vars['sql_user2']; $ipsclass->DB2->obj['sql_pass'] = $ipsclass->vars['sql_pass2']; $ipsclass->DB2->obj['sql_host'] = $ipsclass->vars['sql_host2']; $ipsclass->DB2->obj['sql_tbl_prefix'] = $ipsclass->vars['sql_tbl_prefix2']; $ipsclass->DB2->obj['use_shutdown'] = USE_SHUTDOWN; $ipsclass->DB2->connect(); $ipsclass->DB2->do_insert( 'members_converge', $converge ); //----------------------------------------- // Insert: MEMBERS //----------------------------------------- $check = $this->ipsclass->DB2->build_and_exec_query(array('select'=>'id','from'=>'members','where'=>"id=".$this->ipsclass->member['id'])); if($check['id']) { $this->ipsclass->DB2->close_db(); $this->ipsclass->DB->connect(); $this->ipsclass->lang['asdf'] = ""; $this->ipsclass->Error(array('MSG'=>'User ID w użyciu!')); } $check = $this->ipsclass->DB2->build_and_exec_query(array('select'=>'name','from'=>'members','where'=>"name=".$this->ipsclass->member['name'])); if($check['name']) { $this->ipsclass->DB2->close_db(); $this->ipsclass->DB->connect(); $this->ipsclass->lang['asdf'] = ""; $this->ipsclass->Error(array('MSG'=>'Login usera w użyciu!')); } $check = $this->ipsclass->DB2->build_and_exec_query(array('select'=>'members_display_name','from'=>'members','where'=>"members_display_name=".$this->ipsclass->member['members_display_name'])); if($check['members_display_name']) { $this->ipsclass->DB2->close_db(); $this->ipsclass->DB->connect(); $this->ipsclass->lang['asdf'] = ""; $this->ipsclass->Error(array('MSG'=>'Nazwa wyświetlana usera w użyciu!')); } $check = $this->ipsclass->DB2->build_and_exec_query(array('select'=>'email','from'=>'members','where'=>"id=".$this->ipsclass->member['email'])); if($check['email']) { $this->ipsclass->DB2->close_db(); $this->ipsclass->DB->connect(); $this->ipsclass->lang['asdf'] = ""; $this->ipsclass->Error(array('MSG'=>'Email Usera w użyciu!')); } $ipsclass->DB2->force_data_type = array( 'name' => 'string' ); $ipsclass->DB2->do_insert( 'members', $member ); $ipsclass->DB2->close_db(); Zapisz i wyślij. Otwórz plik: sources/action_public/register.php Znajdź: $member['password'] = trim($this->ipsclass->input['PassWord']); $this->modules->on_create_account($member); Zamień na: $this->modules->on_create_account($member, $converge); $member['password'] = trim($this->ipsclass->input['PassWord']); Zapisz i wyślij. Te zmiany mają na celu zapisywanie informacji o userach z forum A do bazy forum B. Otwórz plik: modules/ipb_member_sync.php Znajdź: function on_group_change( $id, $new_group ) { global $ipsclass; if ($new_group != 3) { return; } //---- START Dodaj poniżej: $ipsclass->DB2 = new db_driver; $ipsclass->DB2->obj['sql_database'] = $ipsclass->vars['sql_database2']; $ipsclass->DB2->obj['sql_user'] = $ipsclass->vars['sql_user2']; $ipsclass->DB2->obj['sql_pass'] = $ipsclass->vars['sql_pass2']; $ipsclass->DB2->obj['sql_host'] = $ipsclass->vars['sql_host2']; $ipsclass->DB2->obj['sql_tbl_prefix'] = $ipsclass->vars['sql_tbl_prefix2']; $ipsclass->DB2->obj['use_shutdown'] = USE_SHUTDOWN; $ipsclass->DB2->connect(); $ipsclass->DB2->do_update( 'members', array( 'mgroup' => intval($new_group) ), 'id='.intval($id) ); $uptime = time()+300; $ipsclass->DB2->do_update('task_manager', array('task_next_run' => $uptime), 'task_id=3'); $ipsclass->DB2->close_db(); Zapisz i wyślij. Te zmiany powodują, że przy zmianie grupy usera w forum A zmienia się w forum B. Jeśli chcesz zsynchronizować forum B z A wykonaj te same czynności na jego plikach. Enjoy!
  15. Najnowszy release systemu downloadu w wersji 1.2.0 Beta 2 Więcej info: Link do newsa: http://forums.invisionpower.com/index.php?showtopic=267638
  16. Witam, kilka dni temu IPS udostępnił to, na co czekałem od dawna. Skondensowany serwis z artykułami, modami etc. Wszystko do Twojego forum. Logowanie na dane z licencji ( mail i hasło ). Super sprawa. Więcej info: Link do newsa: http://forums.invisionpower.com/index.php?showtopic=267588 Link do serwisu: http://resources.invisionpower.com/
  17. Jeśli z jakiś powodów chcesz włączyć parsowanie ( zamienianie kodu emotek na ich odpowiedniki graficzne ) w ogólnych polach, np. w lokalizacji, sygnaturze, zainteresowaniach ( ogólnie w polach userów ), postępuj wg poniższej instrukcji. Otwórz plik: sources/action_public/usercp.php Znajdź: [ w funkcji: function init_parser() ] require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); $this->parser = new parse_bbcode(); $this->parser->ipsclass =& $this->ipsclass; $this->parser->allow_update_caches = 1; Dodaj poniżej: $this->parser->parse_smilies = 1; Enjoy!
  18. Jeśli z jakiś powodów chcesz włączyć parsowanie ( zamienianie kodu emotek na ich odpowiedniki graficzne ) emotikon w ogłoszeniach postępuj wg poniższej instrukcji. Otwórz plik: sources/action_public/usercp.php Znajdź: [ w funkcji: function mod_announce_save() ] $end_date = $this->ipsclass->date_gmmktime( 23, 59, 59, $end_array[0], $end_array[1], $end_array[2] ); } $this->init_parser(); Dodaj niżej: $this->parser->parse_smilies = 1; Enjoy!
  19. Jeśli chcesz uprawnić pracę i zarządzanie userami w ACP i chcesz by po kliknięciu na nazwę grupy w ACP przekierowało Cię do listy userów z danej grupy na forum postępuj wg poniższej instrukcji. ( opcja w 2.3 dostępna w standardzie ) Otwórz plik: skin_acp/IPB2_Standard/acp_skin_html/cp_skin_groups.php Znajdź: <a href='{$this->ipsclass->vars['board_url']}/index.{$this->ipsclass->vars['php_ext']}?act=Members&max_results=30&showall=1&filter={$r['g_id']}&sort_order=asc&sort_key=members_display_name&st=0' target='_blank' title='List Users'>{$r['_title']}</a> Zamień na: <a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&act=mem&code=searchresults&searchtype=normal&mgroup={$r['g_id']}' title='List Users'>{$r['_title']}</a> Enjoy!
  20. Jeśli z jakiś powodów chcesz umożliwić adminom oglądanie IP userów na liście on-line postępuj wg poniższej instrukcji. Otwórz plik: sources/action_public/online.php Znajdź: if ( (in_array( $this->ipsclass->vars['admin_group'], $our_mgroups )) and ($this->ipsclass->vars['disable_online_ip'] != 1) Zamień na: if ( ($this->ipsclass->member['g_access_cp'] == 1) and ($this->ipsclass->vars['disable_online_ip'] != 1) ) Enjoy!
  21. Jeśli z jakiś przyczyn chcesz ukryć opcje tematu dla gości postępuj wg poniższej instrukcji. Ukrycie tego: Przejdź do: ACP > Look & Feel > ( wybór skina ) > Edit Template HTML > Topic View >> topic_page_top Znajdź: <td width='1%' align='right' nowrap='nowrap'> <div class='popmenubutton' id='topicmenu-options'><a href='#topicoptions'>{$this->ipsclass->lang['topic_options']}</a> <img src='{$this->ipsclass->vars['img_url']}/menu_action_down.gif' alt='V' title='{$this->ipsclass->lang['global_open_menu']}' border='0' /></div> </td> Zamień na: <if="$this->ipsclass->member['id']"> <td width='1%' align='right' nowrap='nowrap'> <div class='popmenubutton' id='topicmenu-options'><a href='#topicoptions'>{$this->ipsclass->lang['topic_options']}</a> <img src='{$this->ipsclass->vars['img_url']}/menu_action_down.gif' alt='V' title='{$this->ipsclass->lang['global_open_menu']}' border='0' /></div> </td> </if> Enjoy!
  22. Bardzo przydatna funkcja. Jeśli chcesz by w widoku skinów w ACP pokazywało nr skina to postępuj wg poniższej instrukcji. Otwórz plik: skin_acp/IPB2_Standard/acp_skin_html/cp_skin_lookandfeel.php Znajdź: <strong style='{$css_extra}'>{$r['set_name']}</strong> Zamień na: <strong style='{$css_extra}'>{$r['set_name']} (Skin ID: {$r['set_skin_set_id']})</strong> Efekt końcowy: Enjoy!
  23. Masz kilku adminów i obawiasz się np. zbanowania przez któregoś? Jeśli chcesz chronić konta Root Admina postępuj wg poniższej instrukcji. Otwórz plik: sources/action_admin/member.php Znajdź: if ( ! $member = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->admin->error("We could not match that ID in the members database"); } //----------------------------------------- // Non root admin attempting to edit root admin? //----------------------------------------- if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { if ( $member['mgroup'] == $this->ipsclass->vars['admin_group'] ) { $this->ipsclass->admin->error("You are not permitted to edit root administrators"); } } Dodaj niżej: if ($member['mgroup'] == $this->ipsclass->vars['admin_group']) { $this->ipsclass->admin->error("Nie możesz banować lub zawieszać root admina"); } Znajdź: //----------------------------------------- // Trying to ban or suspend root admin? //----------------------------------------- $names = array(); while ( $r = $this->ipsclass->DB->fetch_row() ) { //----------------------------------------- // Non root admin attempting to edit root admin? //----------------------------------------- if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { if ( $r['mgroup'] == $this->ipsclass->vars['admin_group'] ) { continue; } } $names[] = $r['name']; } Zamień na: //----------------------------------------- // Trying to ban or suspend root admin? //----------------------------------------- $names = array(); while ( $r = $this->ipsclass->DB->fetch_row() ) { //----------------------------------------- // Non root admin attempting to edit root admin? //----------------------------------------- if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { if ( $r['mgroup'] == $this->ipsclass->vars['admin_group'] ) { continue; } } $names[] = $r['name']; if ($r['mgroup'] == $this->ipsclass->vars['admin_group']) { $this->ipsclass->admin->error("Nie możesz banować lub zawieszać root admina"); } } Enjoy!
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.