Skocz do zawartości

Largo

Użytkownik
  • Postów

    1 157
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Treść opublikowana przez Largo

  1. Witaj, Odkryłem powód... Jest szalenie niepoprawnym, aby IP.Board tak traktowało dawnych modderów IP.Board z serii 2.3.X! Powodem były winne... spacje! Tak - spacje! Zmienne deklarowane w ten sposób: $content = array() Nie równa się kodowi: $content=array() ! PORAŻKA! Zaraz odszukam kod za to odpowiedzialny i dodam to dla bfarbera, aby to dodał w następnej wersji, bo to aż prosi się o pomstę do nieba! Pozdrawiam, Largo
  2. Witam, Odpowiedź to: $this->registry->output->addContent(); Należy dodać tam parametr z danymi i on sam doda je do tablicy danych. Fajna opcja :-) Pozdrawiam, Largo
  3. Witaj, I jak, wpadł Ci jakiś pomysł do głowy? Nie ma opcji Bump, więc tak mogę jedynie przypomnieć :-) Może więcej kodu Ci wysłać, nie wiem?
  4. Witam, Do swojej aplikacji chcę dodać system ogłoszeń. Kod HTML mam gotowy, funkcję do weryfikacji również. W czym więc leży problem? Otóż w tym, że kod HTML nie zostaje przypisany do obiektu... /** * Return announcement * * @access public * @return string */ public function viewAnnouncement() { /* Is announcement set? */ if( $this->settings['lw30_fg_announcement'] ) { $output = ''; /* Is secondary group ID? */ $my_groups = array( $this->memberData['member_group_id'] ); if( isset( $this->memberData['mgroup_others'] ) AND $this->memberData['mgroup_others'] ) { $my_groups[] = explode( ',', IPSText::cleanPermString( $this->memberData['mgroup_others'] ) ); } /* Remove duplicates! */ $groups = array_unique( $my_groups ); /* Did we have permissions to view? */ if( $this->memberData['g_fg_can_announcement'] ) { if( in_array( $this->memberData['member_group_id'], $my_groups ) ) { $message = IPSText::getTextClass('bbcode')->preDisplayParse( IPSText::getTextClass('bbcode')->preDbParse( $this->settings['lw30_fg_announcement'] ) ); return $output = $this->registry->output->getTemplate('fg')->globalMessage( $message ); } } /* Group cannot view announcement? */ return FALSE; } /* No announcement? */ return FALSE; } I w plikach modułów wysyłam go tak: /* Load announcement! */ $this->output .= $this->library->viewAnnouncement(); Dlaczego nie dodaję kodu? Jak dam go poniżej instrukcji switch miesza się ze zwykłym kodem. Funkcja var_dump() wysyła gotowy kod przed nagłówkiem, o co więc chodzi? Pozdrawiam, Largo
  5. <tr class='{$row['css']}'> <td>{$row['date']}</td> <td>{$row['type']}</td> <td>{$row['amount']}</td> <td>{$row['new_amount']}</td> <td>{$row['who']}</td> <td>{$row['old_amount']}</td> <td>{$row['comment']}</td> </tr> Zmienna $row jest zadeklarowana jako tablica. Najlepszy jest fakt, że warunek sprawdzający czy zmienna jest tablicą i są w niej rekordy zwraca true... :-)
  6. Po warunku dałem, żeby zrzucił tablicę i działa. Przy foreach nic nie idzie... Nie listuję wyników, a to ma za zadanie pętla w szablonach. Wyświetla Array i nic więcej, a zrzut tablicy PO warunkach jest ewidentny. W czym tkwi problem? Dziękuje za informacje. Przydadzą mi się!
  7. Witam, Otóź mam dziwny problem z tą pętlą. Oto kod: <if test="is_array( $logs ) AND count( $logs )"> <foreach loop="$logs as $row"> {parse template="logsRow" group="skin_fg" params="$row"} </foreach> </if> O dziwo, warunek if działa poprawnie ( sprawdzanie var_dump daję poprawną tablicę ), ale pętla nie działa. W żaden możliwy sposób. Dlaczego? Oto tablica: array(2) { [0]=> array(26) { ["id"]=> string(1) "2" ["sender_id"]=> string(1) "2" ["sender_fg"]=> string(6) "100.00" ["sender_ip"]=> string(12) "62.74.173.27" ["recipient_id"]=> string(1) "1" ["recipient_fg"]=> string(6) "900.00" ["type"]=> NULL ["amount"]=> string(6) "100.00" ["comment"]=> string(4) "Test" ["date"]=> string(26) "01 January 1974 - 04:09 PM" ["transactions"]=> string(1) "1" ["neg_all_fg"]=> string(6) "100.00" ["pos_all_fg"]=> string(6) "100.00" ["s_id"]=> string(1) "2" ["s_name"]=> string(5) "Dawid" ["s_group"]=> string(1) "4" ["s_icon"]=> string(0) "" ["r_id"]=> string(1) "1" ["r_name"]=> string(5) "Largo" ["r_group"]=> string(1) "4" ["r_icon"]=> string(0) "" ["description"]=> NULL ["css"]=> string(8) "positive" ["new_amount"]=> string(26) "(900.00 => 900.00+100.00 )" ["who"]=> string(0) "" ["old_amount"]=> string(26) "(100.00 => 100.00-100.00 )" } [1]=> array(26) { ["id"]=> string(1) "1" ["sender_id"]=> string(1) "1" ["sender_fg"]=> string(7) "1000.00" ["sender_ip"]=> string(13) "172.67.172.49" ["recipient_id"]=> string(1) "2" ["recipient_fg"]=> string(4) "0.00" ["type"]=> NULL ["amount"]=> string(6) "100.00" ["comment"]=> string(4) "Test" ["date"]=> string(27) "29 November 1973 - 10:33 PM" ["transactions"]=> string(1) "1" ["neg_all_fg"]=> string(6) "100.00" ["pos_all_fg"]=> string(6) "100.00" ["s_id"]=> string(1) "1" ["s_name"]=> string(5) "Largo" ["s_group"]=> string(1) "4" ["s_icon"]=> string(0) "" ["r_id"]=> string(1) "2" ["r_name"]=> string(5) "Dawid" ["r_group"]=> string(1) "4" ["r_icon"]=> string(0) "" ["description"]=> NULL ["css"]=> string(8) "negative" ["new_amount"]=> string(28) "(1000.00 => 1000.00-100.00 )" ["who"]=> string(0) "" ["old_amount"]=> string(22) "(0.00 => 0.00+100.00 )" } } PS. Do czego w parsowaniu if i foreach służą hasSubforums:|: w przypadku warunku i subforumsData: w przypadku pętli? Pozdrawiam, Largo
  8. Witaj, Jeżeli uda mi się dynamicznie wypełniać tabelę ^^ Tymczasem to zwykła tabela z użyciem klasy row1 i row2.
  9. Witam, Jak w nowym IP.Board użyć klas CSS, aby w wierszach dzielił widoczną kreską ( pewnie 1px i czarny kolor ), aby były widoczne przerwy w komórkach i wiadomo było do jakiego nagłówka tabeli się odnosi? Tak wygląda obecna tabela: Chcę, aby w każdej komórce BYŁA pionowa, widoczna linia oddzielająca komórki. Pozdrawiam, Largo
  10. Witam, Chciałbym dodać do swojej aplikacji informacje z archiwum. Do tego celu chcę wykorzystać klasę Prototype, która wchodzi w skład IP.Board. Jest ona używana w nowym temacie do sprecyzowania otwarcia tematu i jego zamknięcia. Przekazuję wygląd, dodaję klasę do kodu HTML, ale nie pokazuje mi tej ikonki, dlaczego? Czy klasa wysyła dane do IP.Board i ja muszę je dopiero do szablonu wysyłać? Mógłbym prosić o pomoc w tej kwestii, ponieważ nie widzę opcji, dlaczego ten kod nie chcę działać. Zmieniłem ID i nazwy, ale jak skrypt JS ma prawo przekazywać dane do PHP i od tak szybko manipulować nimi? Przecież tu nie występuje akcja Ajax'owa, chyba, że się mylę? Patrzyłem mimo to w kod szablonu i tam w wartości przekazuje dane. Jak? Powinno przekazywać dane, które zostanę odrobione na rzecz skryptu PHP. PS. Jestem zwolennikiem API skryptów, więc nie mam zamiaru korzystać z innych opcji, jedynym wyjątkiem są klasy CSS :-) PS2. Chyba rozumiem problem: /************************************************/ /* IPB3 Javascript */ /* -------------------------------------------- */ /* ips.board.js - Board index code */ /* (c) IPS, Inc 2008 */ /* -------------------------------------------- */ /* Author: Rikki Tissier */ /************************************************/ var _post = window.IPBoard; _post.prototype.post = { cal_open: '', cal_close: '', /*------------------------------*/ /* Constructor */ init: function() { Debug.write("Initializing ips.post.js"); document.observe("dom:loaded", function(){ ipb.post.initEvents(); }); }, initEvents: function() { // Form validation if( $('postingform') ){ $('postingform').observe('submit', ipb.post.postFormSubmit); } if( $('open_emoticons') ){ $('open_emoticons').observe('click', ipb.post.toggleEmoticons); } if( $('post_options_options') && $('toggle_post_options') ){ $('toggle_post_options').update( ipb.lang['click_to_show_opts'] ); $('toggle_post_options').observe('click', ipb.post.showOptions ); } // Add calendars if( $('mod_open_date') && $('mod_open_date_icon') ){ $('mod_open_date_icon').observe('click', function(){ new CalendarDateSelect( $('mod_open_date'), { year_range: 6, close_on_click: true } ); }); } if( $('mod_close_date') && $('mod_close_date_icon') ){ $('mod_close_date_icon').observe('click', function(){ new CalendarDateSelect( $('mod_close_date'), { year_range: 6, close_on_click: true } ); }); } if( $('post_preview' ) ){ // Resize images ipb.global.findImgs( $( 'post_preview' ) ); } // Image resizing for topic summary if( $('topic_summary') ){ ipb.global.findImgs( $('topic_summary') ); } if( $('review_topic') ){ $('review_topic').observe('click', ipb.global.openNewWindow.bindAsEventListener( this, $('review_topic'), 1 ) ); } }, Jak takie coś zamknąć w swoim kodzie? W katalogu js dla aplikacji dodać takie coś? PS3. OK, problem rozwiązany. Leżał po stronie nie inicjowanie kodu JS kliknięciem. Wykorzystałem kod z IPS i działa. Może go rozbuduję na inne potrzeby :-) Pozdrawiam, Largo
  11. Witaj, Nie pomagasz mi A może ktoś inny jest co rozumie nowy CSS IP.Board? W skrócie co chcę osiągnąć: http://community.invisionpower.com/index.php?app=downloads&showfile=2679 Dokładnie chcę boki takie i treść jak on ma. Czy tego nie da się dokonać o zwykłe klasy CSS?
  12. Witaj, To jak robi IPS, że im działa? Zapewne CSS, ale w nim jestem słaby i to zresztą widać. Na stałe ustawione szerokości działają, ale jak ustawię CSS: div#kod_klasy { width: 300px; } To nic to nie daję, dlaczego? Pozdrawiam, Largo
  13. Witaj, Porzuciłem ten pomysł. Chcę zrobić zwykły design na zasadzie bloki danych. Oto kod: <!-- Main FG Menu! --> <div id='fg_menu' class='left ipb_table clearfix'> <h3 class='maintitle'>Forum Gold Menu</h3> <ul class='test'> <li>Menu</li> </ul> <ul> <li>Test</li> </ul> </div> <div id='logs_div' class='right ipb_table clearfix'> <table class='ipb_table'> <caption class='maintitle'>Transakcje Forum Gold</td> <tr> <td>Logi Forum Gold!</td> </tr> </table> </div> Głupi, prosty kod, a nie działa. fg_menu powinno być po lewej stronie i zawierać listę opcji. Inne bloki po tej stronie to kwestia czasu. Dlaczego efekt jest taki, że oba pola się zwijają do lewej lub prawej na długość hmm, paru px?
  14. Witam, Mam pewien mętlik w głowie. Otóź robię nowy projekt do IP.Board 3.0.X i idzie mi nieźle, lubię PHP5 i sam Framework IP.Board, ale mam pewien problem. Otóż chcę zbudować menu podobne do tego z Edycji profilu. Na górze menu tworzone na sztywno, ale zakładki lewe chcę generować dynamicznie. Wszystko OK, stworzę specjalne tablice i przelistuję wszystko, gdzie problem? Teoretycznie musiałbym ładować zawartość strony do 1 szablonu, czy się mylę? Czy to jest dobry sposób na rozwiązanie tego problemu? Chodzi o to, że nie chcę w szablonach tworzyć XX warunków, czy zakładka równa się danej, a potem czy jest aktywna... To da się zrobić w pętli, łącznie z warunkiem. Czy to jest opłacalne? Problem też jest w tym, że zakładki to będą inne moduły, czy może ładować menu w klasie podczas startu każdej aplikacji? Chodzi o fakt, że robiąc to, zmuszam się do tworzenia nowych odwołań, a to ma być dynamiczne dla modułów. Może lepsze rozwiązanie wyglądu? Pozdrawiam, Largo
  15. Witaj, Dawidzie, proszę Cię, stosujmy się do kodu xHTML :-) <span style='color: red'> opis </span> Pozdrawiam, Largo
  16. Witaj, Poradziłem sobie samemu. Zamiast w konstruktorze biblioteki, wywołuje funkcję getClass(), a następnie odwołuje się do publicznej metody, która ładuje wszelką konfigurację, pliki, CSS, JS i sprawdza podstawową funkcjonalność. Pozdrawiam, Largo
  17. Witaj, [OT] Jakbym Cię nie znał to bym nie uwierzył, że Ty to mówisz ^^ Jak można nie korzystać z podstawowej funkcjonalności w językach obiektowych czyli z wyjątków? :-)[/OT] Ucięcie try i catch nic nie dało. Dalej nie ma obiektu output :-) Oto błąd: [b]Fatal error[/b]: Uncaught exception 'Exception' with message 'output is not an object' in /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php:918 Stack trace: #0 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/sources/classFG.php(65): ipsRegistry::getClass('output') #1 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/sources/classFG.php(56): ForumGoldLibrary->loadPermissions() #2 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/app_class_fg.php(57): ForumGoldLibrary->__construct(Object(ipsRegistry)) #3 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php(1169): app_class_fg->__construct(Object(ipsRegistry)) #4 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php(524): ipsRegistry::_getAppClass() #5 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsController.php(75): ips in [b]/srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php[/b] on line [b]918[/b] Nie to powoduje ten błąd, a coś zupełnie innego. Pozdrawiam, Largo
  18. Witam, Dziwny problem z tworzeniem nowej aplikacji do IP.Board 3.0.X. Mam kod app_class_aplikacja.php i tam chcę, aby dodawał biblioteki. Oto kod: <?php /** * DiabloTrade.pl * Forum Gold 2.0.0 * Forum Gold initialization class * * @author Largo-W * @copyright (c) 2008 - 2009 DiabloTrade.pl * @package Forum Gold * @version 2.0.0prealpha1 * */ if ( !defined( 'IN_IPB' ) ) { print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } class app_class_fg { /** * Registry objects * @access protected * @var object */ protected $registry; protected $DB; protected $settings; protected $request; protected $lang; protected $member; protected $memberData; protected $cache; /** * Constructor * * @access public * @param object ipsRegistry reference * @return void */ function __construct( ipsRegistry $registry ) { /* Make objects */ $this->registry = $registry; $this->DB = $this->registry->DB(); $this->settings =& $this->registry->fetchSettings(); $this->request =& $this->registry->fetchRequest(); $this->cache = $this->registry->cache(); $this->caches =& $this->registry->cache()->fetchCaches(); $this->lang = $this->registry->getClass( 'class_localization' ); $this->member = $this->registry->member(); $this->memberData =& $this->registry->member()->fetchMemberData(); /* ACP location? */ if ( IN_ACP ) { try { /* Add required class! */ require_once( IPSLib::getAppDir( 'fg' ) .'/sources/classFG.php' ); require_once( IPSLib::getAppDir( 'fg' ) .'/sources/admin_fg_functions.php' ); $this->registry->setClass( 'ForumGoldLibrary', new admin_fg_functions( $registry ) ); /* Add language! */ $this->registry->class_localization->loadLanguageFile( 'admin_fg', 'fg' ); } catch( Exception $error ) { IPS_exception_error( $error ); } } else { try { require_once( IPSLib::getAppDir( 'fg' ) .'/sources/classFG.php' ); $this->registry->setClass( 'ForumGoldLibrary', new ForumGoldLibrary( $registry ) ); /* Add language! */ $this->registry->class_localization->loadLanguageFile( 'public_fg', 'fg' ); } catch( Exception $error ) { IPS_exception_error( $error ); } } } } ?> Potem biblioteka i problem pojawia się kiedy chcę wywołać $this->registry->getClass('output')->showError() lub $this->registry->output->showError(), a nawet statyczna metoda ipsRegistry::getClass('output')->showError nie działa. Czemu? Wszystkie inne obiekty są prawidłowo tworzone. Kod klasy: <?php /** * DiabloTrade.pl * Forum Gold 2.0.0 * Forum Gold Sources Class * * @author Largo-W * @copyright (c) 2008 - 2009 DiabloTrade.pl * @package Forum Gold * @version 2.0.0prealpha1 * */ if ( ! defined( 'IN_IPB' ) ) { print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } class ForumGoldLibrary { /** * Registry objects * @access private * @var object */ protected $registry; protected $DB; protected $settings; protected $request; protected $lang; protected $member; protected $cache; /** * Constructor * * @param object $registry ipsRegistry object * @return void * @access public */ public function __construct( ipsRegistry $registry ) { /* Make objects */ $this->registry = $registry; $this->DB = $this->registry->DB(); $this->settings =& $this->registry->fetchSettings(); $this->request =& $this->registry->fetchRequest(); $this->lang = $this->registry->getClass('class_localization'); $this->member = $this->registry->member(); $this->memberData =& $this->registry->member()->fetchMemberData(); $this->cache = $this->registry->cache(); $this->caches =& $this->registry->cache()->fetchCaches(); /* Forum Gold enabled? */ if( !$this->settings['lw30_fg_enable'] ) { $this->registry->getClass('output')->showError( $this->lang->words['lw30_fg_off_message'], '10F01' ); } } } ?> Błąd: exception 'Exception' with message 'output is not an object' in /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php:918 Stack trace: #0 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/sources/classFG.php(59): ipsRegistry::getClass('output') #1 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/app_class_fg.php(80): ForumGoldLibrary->__construct(Object(ipsRegistry)) #2 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php(1169): app_class_fg->__construct(Object(ipsRegistry)) #3 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php(524): ipsRegistry::_getAppClass() #4 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsController.php(75): ipsRegistry::init() #5 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsController.php(62): ipsController->init() #6 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/index.php(24): ipsController::run() #7 {main}
  19. Witaj, Czy czasem po zbanowaniu użytkownika, który np. był osobą prowadzącą dany dział nie masz jak pomóc użytkownikom? Dzięki tej modyfikacji możesz łatwo zamknąć wszystkie tematy użytkownika, gdzie był autorem! Otwórz: admin/applications/members/warn/warn.php Znajdź: IPSMember::save( $this->warn_member['member_id'], array( 'core' => array( 'mod_posts' => $mod_queue, 'restrict_post' => $restrict_post, 'temp_ban' => $susp, 'member_banned' => $member_banned, 'warn_level' => $warn_level, 'warn_lastwarn' => time() ) ) ); Dodaj poniżej: //----------------------------------------- // (LW30) Close all member topics! //----------------------------------------- $this->DB->update( 'topics', array( 'state' => 'closed' ), 'starter_id=.'$this->warn_member['member_id'] ); Pozdrawiam, Largo Autorem tutoriala jest Largo. Zabrania się kopiowania, powielania. W szczególności na inne fora bez zgody autora. Tutorial wykonany dla www.forum.invisionize.pl
  20. Witaj, Wiesz, teoretycznie jeżeli użytkownik nie ma ostrzeżeń to nie ma możliwości zmiany ustawienia. Ale jeżeli ma ktoś ostrzeżenia to zmieniam siłą woli ustawienia. Bo jako czas floodingu podaję ilość sekund pomnożą w zależności od ilości ostrzeżeń. Możliwe, że cache się mieszają kiedy jest 2 użytkowników z ostrzeżeniami i aktualizuje podczas odświeżania. Próbowałem, ale tylko chwilkę z polami klasy, aby dziedziczyły czas i jeżeli istnieje ten czas to niech najpierw w ajax.php brał pod uwagę odziedziczone pole. Mógłbyś sprawdzić mój tok myślenia? Chyba, że masz lepszą propozycję rozwiązania tej sytuacji? PS. Wiem już! Kiedy użytkownik z % wejdzie naliczy mu czas za to. Dopóki nikt inny nie zaktualizuje tego wartość dla tego użytkownika będzie poprawna. Ale jeżeli w międzyczasie wejdzie kolejna to wartość znowu się zmieni dla dwóch osób. Chyba jedynym wyjściem z tej sytuacji to odziedziczone pole i po nim w skrypcie sprawdzać poprawność? Pozdrawiam, Largo
  21. function _check_warn_status() { /* Alowed to use the shoutbox? */ if ( $this->ipsclass->member['id'] == '392' AND $this->ipsclass->member['g_shoutbox_use'] ) { /* Init */ $flood = ( $this->ipsclass->vars['shoutbox_flood_limit'] ) ? $this->ipsclass->vars['shoutbox_flood_limit'] : 10; $time = 0; $max = $this->ipsclass->vars['warn_max']; $warn_level = $this->ipsclass->member['warn_level']; $percents = intval( $warn_level ) ? intval( $warn_level * 100 / $max ) : 0; if( $percents != 0 ) { /* Prepare iteration! BugFix: 10% and intvaled to 0. */ $count = ( $warn_level != 1 ) ? intval( $percents / 10 ) : 1; /* Count % points! */ for( $i = 0; $i <= $count; $i++ ) { $time += $flood; } /* Add time to our member! */ $this->ipsclass->vars['shoutbox_flood_limit'] += $time; } } } Wiele poprawiłem problem w tym, że zmienna $this->ipsclass->vars['shoutbox_flood_limit'], niekiedy aktualizuje się z innymi osobami. Da się temu zaradzić czy muszę robić Flood per użytkowników?
  22. Witaj, Posłuchałem Cię i dodałem. Dziękuje za uwagę, myślałem o tym, ale poprawiłem. Pojawił się nam ze znajomym inny problem. Kiedy użytkownik nie ma %, to nic się nie dzieje, ma normalny Flooding. Ale kiedy są np. 2 osoby z % Flooding zmienia się zależnie od ich aktywności na SB. Czy da się zablokować obiekt na jednego użytkownika? Czy zostaje jedynie pole w bazie danych i sprawdzanie tam wszystkiego? Pozdrawiam, Largo
  23. Witaj, OK, działa już. Znalazłem powód - warn_level. On nie jest ładowany w load_member() :-) Oto poprawny kod: function _check_warn_status() { /* Alowed to use the shoutbox? */ if ( $this->ipsclass->member['id'] AND $this->ipsclass->member['g_shoutbox_use'] ) { /* Init */ $flood = ( $this->ipsclass->vars['shoutbox_flood_limit'] ) ? $this->ipsclass->vars['shoutbox_flood_limit'] : 10; $time = 0; $max = $this->ipsclass->vars['warn_max']; $member = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'warn_level', 'from' => 'members', 'where' => 'id='.$this->ipsclass->member['id'] ) ); $percents = intval( $member['warn_level'] * 100 / $max ); $count = intval( $percents / 10 ); if( $percents != 0 ) { /* Count % points! */ for( $i = 0; $i < $count; $i++ ) { $time += $flood; } /* Add time to our member! */ $this->ipsclass->vars['shoutbox_flood_limit'] = $time; } } } PS. Zapodaj pomysł dla twórców IP.Shoutbox i z pełną możliwością wykorzystaj mój kod! Pozdrawiam, Largo
  24. Witam, Chciałem dla Shoutbox dodać pewną sugestię. Chodzi o to, że jeżeli użytkownik ma jakiekolwiek % zwiększa mu o 100% czas Flood. Oto kod: function _check_warn_status() { /* Alowed to use the shoutbox? */ if ( $this->ipsclass->member['id'] AND $this->ipsclass->member['g_shoutbox_use'] ) { /* Init */ $time = 0; $max = $this->ipsclass->vars['warn_max']; $warn_level = $this->ipsclass->member['warn_level']; $percents = intval( $warn_level * 100 / $max ); $count = intval( $percents / 10 ); if( $percents != 0 ) { /* Count % points! */ for( $i = 0; $i < $count; $i++ ) { $time += $this->ipsclass->vars['shoutbox_flood_limit']; } /* Add time to our member. */ $this->ipsclass->vars['shoutbox_flood_limit'] += $time; } } } Dlaczego globalny obiekt nie działa na takich userów? Przecież ten obiekt zostaje zmieniony na czas działania skryptu dla danego użytkownika. Wiele razy widziałem jak w IP.Board np. nadpisuję się zmienną systemową dotyczącą czasu nieaktywności.
×
×
  • 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ę.