To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

1.12.7 i starsze - Robocik 2.0.1

Danyeru - 13-07-2008, 11:47

aha, jeszcze jedno pytanko: Co zmienić/dodać w pliku shoutbox_view.php ? :P
Zabrałem się właśnie za instalacje, i widzę, że gotowe pliki, ale przy okazji któregoś moda edytowałem tenże plik, niestety nie pamiętam którego/których, bo tak to bym nadpisał i wyedytował na nowo :P

Jarek 11 - 13-07-2008, 12:04

el_danielo1985,
Kod:

#
#-----[ OPEN ]--------------------------------
#
shoutbox_view.php

#
#-----[ FIND ]--------------------------------
#
    if ( !$too_long && !$flood_msg && !$shoutbox_banned && $is_auth_send )
    {
        $msg_id = $db->sql_nextid();

        $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
            VALUES($msg_id, $sb_user_id, '" . str_replace("\'", "''", $msg) . "', '" . CR_TIME . "')";
        if ( !($result = $db->sql_query($sql)) )
        {
            message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
        }

#
#-----[ AFTER, ADD ]--------------------------
#
// BEGIN ROBOCIK ///////////////////////////////       
        if ( $shoutbox_config['robocik_on'] )
        {
            if ( $check_cache = sql_cache('check', 'robocik_randtxt') )
            {
                include($check_cache);
            }
            else if ( $check_cache === false )
            {
                $sql = "SELECT cat_id, rand_text
                    FROM " . ROBOCIK_RANDTXT_TABLE . "
                    ORDER BY cat_id, rand_id;";;
                if ( !($result = $db->sql_query($sql)) )
                {
                    message_die(GENERAL_ERROR, 'Could not query robocik random texts table', '', __LINE__, __FILE__, $sql);
                }
               
                $robocik_randtxt = array();
               
                if ( $row = $db->sql_fetchrow($result) )
                {
                    do
                    {
                        $robocik_randtxt[$row['cat_id']][] = $row['rand_text'];
                    }
                    while ( $row = $db->sql_fetchrow($result) );
                }
               
                sql_cache('write', 'robocik_randtxt', $robocik_randtxt);
            }
           
            if ( $check_cache = sql_cache('check', 'robocik_words') )
            {
                include($check_cache);
            }
            else if ( $check_cache === false )
            {
                $sql = "SELECT user_word, robot_word
                    FROM " . ROBOCIK_TABLE;
                if ( !($result = $db->sql_query($sql)) )
                {
                    message_die(GENERAL_ERROR, 'Could not get robocik words from database', '', __LINE__, __FILE__, $sql);
                }
               
                $robocik_words = array();
               
                if ( $row = $db->sql_fetchrow($result) )
                {
                    do
                    {
                        $robocik_words[$row['user_word']] = $row['robot_word'];
                    }
                    while ( $row = $db->sql_fetchrow($result) );
                }
               
                sql_cache('write', 'robocik_words', $robocik_words);
            }
           
            if( is_array($robocik_words) )
            {
                foreach ( $robocik_words as $user_word => $robot_word )
                {
                    if ( strstr(strtolower($msg), strtolower($user_word)) )
                    {
                        if ( strstr($robot_word, 'randtxt_') )
                        {
                            $randtxt_cat_id = intval(substr($robot_word, 8));
                           
                            $robot_word = $robocik_randtxt[$randtxt_cat_id][ rand(0, (count($robocik_randtxt[$randtxt_cat_id]) - 1)) ];
                        }
                       
                        $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                            VALUES(NULL, '" . $shoutbox_config['robocik_id'] . "', '" . str_replace('{$name}', $userdata['username'], $robot_word) . "', '" . (CR_TIME+2) . "')";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                            message_die(GENERAL_ERROR, 'Could not insert robot message', '', __LINE__, __FILE__, $sql);
                        }
                    }
                }
               
                if ( $shoutbox_config['robocik_wulg_on'] )
                {
                    if ( $check_cache = sql_cache('check', 'word_list') )
                    {
                        include($check_cache);

                        foreach($word_list as $word => $replacement)
                        {
                            $orig_word[] = str_replace('*', '', $word);
                            $replacement_word[] = strip_tags($replacement);
                        }
                    }
                    else if ( $check_cache === false )
                    {
                        $sql = "SELECT word, replacement
                            FROM " . WORDS_TABLE;
                        if ( !($result = $db->sql_query($sql)) )
                        {
                            message_die(GENERAL_ERROR, 'Could not get censored words from database', '', __LINE__, __FILE__, $sql);
                        }

                        $word_list = array();

                        if ( $row = $db->sql_fetchrow($result) )
                        {
                            do
                            {
                                $orig_word[] = str_replace('\*', '', $row['word']);
                                $word_list[$row['word']] = $row['replacement'];
                            }
                            while ( $row = $db->sql_fetchrow($result) );
                        }
                        sql_cache('write', 'word_list', $word_list);
                    }
                   
                    foreach ( $orig_word as $key => $val )
                    {
                        if ( strstr(strtolower($msg), $val) )
                        {
                            $robot_wulg_message = ( $userdata['user_wulg'] >= ($shoutbox_config['robocik_max_user_wulg'] - 1) ) ? $shoutbox_config['robocik_warning_text_warn'] : $shoutbox_config['robocik_warning_text_wulg'];
                            $robot_wulg_message = str_replace('{$name}', $userdata['username'], $robot_wulg_message);
                           
                            $sql = "UPDATE " . USERS_TABLE . " SET user_wulg = ( `user_wulg` + 1 ) WHERE user_id = '$sb_user_id'";
                            if ( !($result = $db->sql_query($sql)) )
                            {
                                message_die(GENERAL_ERROR, 'Could not update user_wulg', '', __LINE__, __FILE__, $sql);
                            }
                           
                            $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                                VALUES(NULL, '" . $shoutbox_config['robocik_id'] . "', '$robot_wulg_message', '" . (CR_TIME+2) . "')";
                            if ( !($result = $db->sql_query($sql)) )
                            {
                                message_die(GENERAL_ERROR, 'Could not insert robot message', '', __LINE__, __FILE__, $sql);
                            }
                        }
                    }
                   
                    if ( $userdata['user_wulg'] >= ($shoutbox_config['robocik_max_user_wulg'] - 1) )
                    {
                        $sql = "INSERT INTO " . WARNINGS_TABLE . "
                        VALUES(NULL, '$sb_user_id', '" . $shoutbox_config['robocik_id'] . "', '" . CR_TIME . "', '1', '" . str_replace('{$name}', $userdata['username'], $shoutbox_config['robocik_warn_reason']) . "', '0', '1')";
                       
                        if ( !$result = $db->sql_query($sql) )
                        {
                            message_die(GENERAL_ERROR, 'Could not insert warning', '', __LINE__, __FILE__, $sql);
                        }
                        $sql = "UPDATE " . USERS_TABLE . " SET user_wulg = '0' WHERE user_id = '$sb_user_id'";
                        $db->sql_query($sql);
                    }
                }
            }
        }
// END ROBOCIK ///////////////////////////////


koziolek - 13-07-2008, 17:44

RuseK napisał/a:
w plugin_bash.php klasa ma sie nazywac
plugin_bash
sprawdz, bo moze sie nazywa plugin_plugins, jak tak to popraw.
no to raczej się tak nire nazywała bo nie pamiętem żebym to zmieniał :P

Jarek 11 napisał/a:
RuseK, Nastempny problem:
może nie masz odblokowanej funkcji allow_url_open na serwerze.
plugin wzorowany na Modzie Centuriona: http://www.przemo.org/php...pic.php?t=50917

RuseK, sugeruje wydzielić posty o Becie do osobnego tematu bo teraz nie wiadomo czy KLU ma proble ze "stabilną" wersją czy z betą ;)

Radek - 13-07-2008, 18:03

koziolek, to zamieszanie będzie, będą pisać raz tu raz tam :D
A co do pluginów - klasy mają się nazywac
plugin_nazwa
:>

Danyeru - 13-07-2008, 18:54

Jarek 11, to na pewno jest edycja pliku przy pluginie? Bo wygląda to znajomo, a samego robta to mam zainstalowanego ;)

[ Dodano: 13-07-2008, 20:00 ]
nie wiem, czy to wina braku edycji czegoś, ale jak wpisuję słowo kluczowe danego pluginu w sb, to nie odpowiada.

a jak wgrałem plugin bash do folderu pluginów, to po kliknięciu na zakładkę pluginów w administracji robocika wyświetla mi się pusta strona, pozostałe zakładki są ok

Radek - 13-07-2008, 19:05

el_danielo1985, chciałeś ręczną instrukcję do pluginów ? Ok :)
Kod:
                sql_cache('write', 'robocik_words', $robocik_words);
            }

po tym kodzie w shoutbox_view.php dodaj:
Kod:
include($phpbb_root_path . '/includes/plugins.'.$phpEx);
$plugins = new plugins('plugins');
$plugins->check_keyword($msg, $userdata['user_id']);

Koniec :)

Co do pluginu bash - mówiłem, że koziołek go zepsuł :D
Zaraz wrzucę poprawną wersję.

<hr>
Wersja beta2 już dziś :>

Danyeru - 13-07-2008, 19:24

no i nie wiem...
z tym shoutbox_view.php mam już wsjo, a nadal nie reaguje na keyword danego pluginu. normalne gadki są ok

koziolek - 14-07-2008, 10:28

RuseK napisał/a:
A co do pluginów - klasy mają się nazywac
plugin_nazwa
oki :)

RuseK napisał/a:
Koniec :)
a to:
Kod:
            if ( !$plugins->plugin_activated )
            {
?

przeanalizowałem właśnie kod i czy funkcja rename() nie potrzebuje ustawionych chmodów na katalog plugins/installed/ :?:
el_danielo1985, może masz zablokowaną powyższą funkcje na serwerze?
masz wogóle katalog installed/ ?

Radek - 14-07-2008, 13:01

koziolek napisał/a:
przeanalizowałem właśnie kod i czy funkcja rename() nie potrzebuje ustawionych chmodów na katalog plugins/installed/ :?:

nawet jak są ustawione na 777 to nie działa.
na cba.pl nie działa ani copy(), ani rename(), ani nawet file_put_contents(). Żadnych błędów, nic. Po prostu nie przenosi i tyle.

koziolek - 14-07-2008, 14:23

to może w MySQL zapisywać czy plugin jest zainstalowany?

kiedy ta beta2 ? :>

Radek - 14-07-2008, 14:25

koziolek, w mysql tez jest zapisywane, ale pliki musza byc przenoszone, bo potem sa includowane. jak zostana w tym samym katalogu, to beda wykrywane do zainstalowania jeszcze raz
koziolek - 14-07-2008, 14:42

no to przy skanowaniu forlderu trzeba by porównywać nazwy z tymi co są w bazie zapisane ;)
They2 - 14-07-2008, 19:59

RuseK, w Twoim zalaczniku jest plik beta1 (plugin) z gotowymi plikami, nie ma tam napisane w instrukcji recznej instalacji, mam na mysli o wklejanie kodu. Nie jestem leniwy na grzebanie, ale mam zupelnie zmodyfikowany plik i dlatego nie chce stracic. Moglbys napisac dokladna instrukcje reczna ?

i poza tym te pluginy (install i bash) najlepiej wstaw do zalacznika w pierwszym poscie (koziolka). Byloby lepiej widoczne, bo czasami moge zgubic w temacie.

koziolek - 14-07-2008, 20:03

They2 napisał/a:
w Twoim zalaczniku jest plik beta1 (plugin) z gotowymi plikami, nie ma tam napisane w instrukcji recznej instalacji, mam na mysli o wklejanie kodu. Nie jestem leniwy na grzebanie, ale mam zupelnie zmodyfikowany plik i dlatego nie chce stracic. Moglbys napisac dokladna instrukcje reczna ?
prosze: http://www.przemo.org/php...p=364442#364442 ;)

They2 napisał/a:
i poza tym te pluginy (install i bash) najlepiej wstaw do zalacznika w pierwszym poscie (koziolka). Byloby lepiej widoczne, bo czasami moge zgubic w temacie.
ale to jest narazie beta więc jest jak jest ;)
Radek - 14-07-2008, 20:05

They2, masz na mysli shoutbox_view.php ?
Kod:
       sql_cache('write', 'robocik_words', $robocik_words);
            }   

po tym kodzie w shoutbox_view.php dodaj:
Kod:

include($phpbb_root_path . '/includes/plugins.'.$phpEx);
$plugins = new plugins('plugins');
$plugins->check_keyword($msg, $userdata['user_id']);
            if ( !$plugins->plugin_activated )
            {

znajdz:
Kod:
// END ROBOCIK ///////////////////////////////

i dodaj przed jedną klamrę:
Kod:
}

Nie wrzucałem instrukcji bo to dopiero beta, w wersji beta2 dam instrukcję bo dojdzie jeszcze parę modyfikacji.

Pluginy dodam do 1 postu razem z modem jak będzie wersja final, na razie nie na każdym serwerze działa i nie wszystko jest skończone :)



Powered by phpBB modified by Przemo © 2003 phpBB Group