- Home
- Categorie
- Coding e Sistemistica
- Tutti gli altri Gestionali
- Una classe per inserire topic in forum Smf
-
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.2ENGLISH
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