• User

    Una classe per inserire topic in forum Smf

    ecco un altro script per smf 😉
    [PHP]
    <?
    /*
    Licenza:
    Quest'opera è stata rilasciata sotto la licenza Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia.
    Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-nc-sa/2.5/it/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

    Autore: Arminio Patrick
    Sito web: www.patrick91.it || www.inkscapeitalia.org
    For: smf version 1.1.2

    ENGLISH
    Copyright:

    This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Italy License.
    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/it/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

    Autor: Arminio Patrick
    Website: www.patrick91.it || www.inkscapeitalia.org
    For: smf version 1.1.2
    */

    class smf {
    //variabili
    var $sticky; // 1 se la discussione è in risalto
    var $id_categoria; //id della categoria
    var $id_membro; //id dell'user
    var $oggetto; //
    var $corpo; //corpo del messaggio

    //funzione per recuperare i dati dell'utente
    private function datiUser() {
    //query per le info dell'user
    $post_utente = "SELECT * FROM smf_members WHERE ID_MEMBER = '$this->id_membro'";
    //eseguo la query
    $row_post_utente = mysql_query($post_utente);
    //metto in un array associativo i dati dell'utente
    $datiUser = mysql_fetch_assoc($row_post_utente);
    return $datiUser;
    }

    //funzione per aggiornare i post dell'utente
    private function aggiornaDatiUser($post_vecchi) {
    //aggiungo uno al numero di post dell'utente
    $post_aggiornati = $post_vecchi + 1;
    //query
    $aggiorna_post_user = "UPDATE smf_members SET posts = '$post_aggiornati' WHERE ID_MEMBER = '$this->id_membro'";
    //eseguo la query
    mysql_query($aggiorna_post_user);
    }

    //funzione per recuperare i dati della categoria
    private function datiBoard() {
    //query per le info della categoria
    $info_board = "SELECT * FROM smf_boards WHERE ID_BOARD = '$this->id_categoria'";
    //eseguo la query
    $row_board = mysql_query($info_board);
    //metto in un array associativo i dati della categoria
    $datiBoard = mysql_fetch_assoc($row_board);
    return $datiBoard;
    }

    //funzione per aggiornare i dati della categoria (post, topic, ultimo msg)
    private function aggiornaDatiBoard($post_board_vecchi, $topic_board_vecchi, $id_msg) {
    //aggiungo uno al numero di post dell'utente
    $post_board_aggiornati = $post_board_vecchi + 1;
    $topic_board_aggiornati = $topic_board_vecchi + 1;
    //query
    $aggiorna_board = "UPDATE smf_boards SET ID_LAST_MSG = '$id_msg', numTopics = '$topic_board_aggiornati', numPosts = '$post_board_aggiornati' WHERE ID_BOARD = '$this->id_categoria'";
    mysql_query($aggiorna_board);
    }

    //funzione per inserire il TOPIC e generare l'id
    private function inserisciTopic() {
    //creo la query per inserire il topic
    $query_topic = "INSERT INTO smf_topics (isSticky, ID_BOARD, ID_MEMBER_STARTED) VALUES ('$this->sticky', '$this->id_categoria', '$this->id_membro')";
    //avvio la query
    mysql_query($query_topic);
    //recupero l'id
    $id_topic = mysql_insert_id();
    return $id_topic;
    }

    //funzione per inserire il MESSAGGIO e generare l'id
    private function inserisciMsg($id_topic, $nome_membro) {
    //orario
    $orario = mktime();
    //indirizzo IP
    $ip = $_SERVER['SERVER_ADDR'];
    //creo la query per inserire il messaggio
    $query_msg = "INSERT INTO smf_messages (ID_TOPIC, ID_BOARD, posterTime, ID_MEMBER, subject, posterName, posterIP, body, icon) VALUES ('$id_topic', '$this->id_categoria', '$orario', '$this->id_membro', '$this->oggetto', '$nome_membro', '$ip', '$this->corpo', 'xx')";
    //avvio la query
    mysql_query($query_msg);
    //recupero l'id per indicare al topic il post di inizio e di fine 😐 che sono uguali, almeno per la prima volta 😛
    $id_msg = mysql_insert_id();
    return $id_msg;
    }

    //funzione per per aggiornare il TOPIC
    private function aggiornaTopic($id_msg, $id_topic) {
    //query
    $aggiorna_topic = "UPDATE smf_topics SET ID_FIRST_MSG = '$id_msg', ID_LAST_MSG = '$id_msg' WHERE ID_TOPIC = '$id_topic' LIMIT 1";
    //avvio la query
    mysql_query($aggiorna_topic);
    }

    //funzione per inserire il topic e il messaggio
    function vai() {
    //prendi i dati dell'user
    $informazioni_user = $this->datiUser();
    //nome
    $nome_user = $informazioni_user['memberName'];
    //post
    $post = $informazioni_user['posts'];
    //email
    $email = $informazioni_user['emailAdress'];
    //id topic
    $id_topic = $this->inserisciTopic();
    //aggiorna i post dell'utente
    $this->aggiornaDatiUser($post);
    //id messaggio
    $id_msg = $this->inserisciMsg($id_topic, $nome_user);
    //aggiorna il topic
    $this->aggiornaTopic($id_msg, $id_topic);
    //dati Board
    $dati_board = $this->datiBoard();
    //post
    $post_board = $dati_board['numPosts'];
    //topic
    $topic_board = $dati_board['numTopics'];
    //aggiorna la board
    $this->aggiornaDatiBoard($post_board, $topic_board, $id_msg);
    }
    }
    ?>
    [/PHP]

    Invece ecco qui il codice per utilizzarla

    [PHP]
    <?
    require_once('class.php');
    //qui bisogna creare una connessione a mysql
    $smf = new smf();
    $smf->sticky = "0"; //se 1 in rilievo
    $smf->id_categoria = "1"; //qui dovete mettere l'id della categoria
    $smf->id_membro = "1"; //qui l'id dell user
    $smf->oggetto = "Primo messaggio";
    $smf->corpo = "Se lo leggi, funziona";
    $smf->vai(); //inserisce il topic
    ?>
    [/PHP]

    enjoy 😉