Beispiel #1
0
 static function mod_pg($pg)
 {
     $p = plugins::getinst();
     $user = $p->d->getrow('SELECT * FROM users WHERE name="' . $pg . '";');
     if ($user->account_id == $_SESSION['datiaccount']['id']) {
         $t = new template('template/mod_pg.tpl');
         $t->assign_var('PG_NAME', $pg);
         if ($_POST) {
             $query = 'UPDATE users SET description="' . $_POST['desc'] . '",image="' . $_POST['image'] . '" WHERE name="' . $pg . '";';
             $upd = $p->d->query($query);
             if (!$upd) {
                 $t->start_block('mod_failed');
                 $t->end_block('mod_failed');
             } else {
                 $t->start_block('mod_success');
                 $t->end_block('mod_success');
             }
         } else {
             $t->start_block('mod_failed');
             $t->end_block('mod_failed');
         }
         $p->action('mod_pg');
         $t->out();
     }
 }
Beispiel #2
0
 static function mp_list_arrived($page = 1)
 {
     global $t;
     $p = plugins::getinst();
     $msg_for_page = 10;
     $limit = ($page - 1) * $msg_for_page;
     $t = new template('template/mp_list.tpl');
     $msgs = $p->d->getresults('SELECT * FROM messaggi WHERE dest="' . $_SESSION['datiuser']['id'] . '" ORDER BY id DESC LIMIT ' . $limit . ',' . $msg_for_page . ';');
     if ($msgs) {
         $t->start_block('if_messages');
         foreach ($msgs as $msg) {
             $t->start_block('messaggio');
             $t->assign_block_vars(array('TIME' => $msg->time, 'TO' => $_SESSION['datiuser']['name'], 'FROM' => $p->d->getvar('SELECT name FROM users WHERE id="' . $msg->mittente . '";'), 'ID' => $msg->id));
             $t->end_block('messaggio');
         }
         $t->end_block('if_messages');
         $num_mess = $p->d->getvar('SELECT COUNT(`id`) FROM messaggi WHERE dest="' . $_SESSION['datiuser']['id'] . '";');
         for ($i = 1; $i <= $num_mess / $msg_for_page + 1; $i++) {
             $t->to_comp['if_pages'][0]['link_page'][] = array('TYPE' => 'arrived', 'PAGE' => $i);
         }
     } else {
         $t->to_comp['if_not_messages'][] = array();
     }
     $p->action('mp_list_arrived');
     @$t->out();
 }
Beispiel #3
0
 static function get_chat($last_time = NULL)
 {
     $p = plugins::getinst();
     $t = new template('template/chat_messages.tpl');
     $chat_id = $_SESSION['stanza'];
     $query = 'SELECT * FROM messaggi_chat WHERE time > "' . $last_time . '" AND chat_id="' . $chat_id . '" ORDER BY time DESC;';
     if (empty($last_time)) {
         $query = 'SELECT * FROM messaggi_chat WHERE time > ' . (time() * 1000 - 30 * 60 * 1000) . ' AND chat_id="' . $chat_id . '" ORDER BY time DESC;';
     }
     $messages = $p->d->getresults($query);
     if ($messages) {
         foreach ($messages as $mess) {
             $time = date('H:i', $mess->time / 1000);
             $t->start_block('message');
             $message = array('HOUR' => $time, 'USERNAME' => $mess->user, 'TEXT' => stripslashes($mess->text));
             switch ($mess->text[0]) {
                 //in base al primo carattere del messaggio
                 //se è un + il messaggio è in terza persona
                 case '+':
                     $t->start_block('third_person');
                     $message['TEXT'] = substr($message['TEXT'], 1);
                     $t->assign_block_vars($message);
                     //assegno l'array message preparato prima
                     $t->end_block('third_person');
                     break;
                     //se è * è del master, ma controllo che chi l'ha scritto sia realmente un master prima
                 //se è * è del master, ma controllo che chi l'ha scritto sia realmente un master prima
                 case '*':
                     $master = $p->d->getvar('SELECT master FROM accounts WHERE id=(SELECT account_id FROM users WHERE name="' . $mess->user . '");');
                     if ($master == 1) {
                         $t->start_block('master');
                         $message['TEXT'] = substr($message['TEXT'], 1);
                         $t->assign_block_vars($message);
                         //assegno l'array message preparato prima
                         $t->end_block('master');
                     } else {
                         $t->to_comp['message'][]['normal'][] = $message;
                     }
                     break;
                     //altrimenti è un messaggio normale
                 //altrimenti è un messaggio normale
                 default:
                     $t->start_block('normal');
                     $t->assign_block_vars($message);
                     //assegno l'array message preparato prima
                     $t->end_block('normal');
                     break;
             }
             $t->end_block('message');
         }
     }
     //$p->action('chat_body');
     @$t->out();
 }
Beispiel #4
0
 static function chat_mod($id = 0)
 {
     global $t;
     $p = plugins::getinst();
     $t = new template('template/chat_mod.tpl');
     //controllo che l'utente sia admin
     $access = control_access(ADMIN_ACCESS);
     if (!$access) {
         $t->block_null('not_admin');
         $t->out();
         exit;
     }
     //faccio un update della stanza in base ai dati che mi sono arrivati
     $query = 'UPDATE stanze SET name="' . mysql_real_escape_string(htmlspecialchars($_POST['name'])) . '",image="' . mysql_real_escape_string(htmlspecialchars($_POST['img'])) . '",description="' . mysql_real_escape_string(htmlspecialchars($_POST['desc'])) . '" WHERE id="' . mysql_real_escape_string($id) . '";';
     //Apro il blocco
     $t->start_block('is_admin');
     //faccio la query e controllo l'esito
     $upd = $p->d->query($query);
     if (!$upd) {
         $t->block_null('mod_failed');
     } else {
         $t->block_null('mod_success');
     }
     //Chiudo il blocco
     $t->end_block('is_admin');
     //Eseguo l'azione "chat_mod"
     $p->action('chat_mod');
     $t->out();
 }
Beispiel #5
0
 static function news_list()
 {
     $p = plugins::getinst();
     $t = new template('template/news_list.tpl');
     $messages = $p->d->getresults('SELECT * FROM news ORDER BY id DESC;');
     foreach ($messages as $news) {
         $t->start_block('news_row');
         $t->assign_block_vars(array('AUTHOR' => $news->author, 'DATE' => $news->date, 'TEXT' => stripslashes($news->text)));
         $t->end_block('news_row');
     }
     $t->out();
 }
Beispiel #6
0
 static function register_action()
 {
     global $p;
     $t = new template('template/register.tpl');
     //inizializzo il template
     if ($_POST) {
         //controllo e modifico le stringhe passate per evitare bugs
         $email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
         $username = mysql_real_escape_string(htmlspecialchars($_POST['username']));
         //$surname=mysql_real_escape_string(htmlspecialchars($_POST['surname']));
         $password = md5($_POST['password']);
         //$race_id=$_POST['race'];
         //$sex=$_POST['sex'];
         //controllo se l'email dell'utente esiste già, per evitare i doppi
         if ($p->d->getvar('SELECT COUNT(id) FROM accounts WHERE email="' . $email . '" OR username="******";') > 0) {
             $t->start_block('register_failed');
             $t->end_block('register_failed');
             $p->action('register_failed');
         } else {
             //$query='INSERT INTO users SET name="'.$username.'",surname="'.$surname.'",password="******",email="'.$email.'",sex="'.$sex.'",race="'.$race_id.'";';
             $query = 'INSERT INTO accounts SET username="******",password="******",email="' . $email . '",last_change_pwd=NOW() ;';
             $result = $p->d->query($query);
             if ($result == 1) {
                 $t->start_block('register_success');
                 $t->assign_block_var('USERNAME', $username);
                 $t->end_block('register_success');
             } else {
                 $t->start_block('register_failed');
                 $t->end_block('register_failed');
             }
         }
     } else {
         $t->start_block('register_failed');
         $t->end_block('register_failed');
     }
     $t->out();
 }
Beispiel #7
0
function online()
{
    $p = plugins::getinst();
    $t = new template('template/online.tpl');
    //seleziono distintamente le stanze dove si trovano i pg
    $stanze = $p->d->getresults('SELECT DISTINCT chat_name,chat_id FROM sessioni GROUP BY chat_id ASC;');
    //per ogni stanza aggiungo al template i pg presenti
    for ($i = 0; $i < count($stanze); $i++) {
        $chat = $stanze[$i];
        $t->start_block('online_chat');
        $t->assign_block_vars(array('CHAT_ID' => $chat->chat_id, 'CHAT_NAME' => $chat->chat_name));
        $users = $p->d->getcol('SELECT pg_id FROM sessioni WHERE chat_id="' . $chat->chat_id . '";');
        foreach ($users as $user) {
            $username = $p->d->getvar('SELECT name FROM users WHERE id="' . $user . '";');
            $t->start_block('online_row');
            $t->assign_block_var('USERNAME', $username);
            $t->end_block('online_row');
        }
        $t->end_block('online_chat');
    }
    @$t->out();
}
Beispiel #8
0
 static function account_switch($action = '')
 {
     /* prendo l'istanza della classe plugin dal singleton | Call Singleton Plugin */
     $p = plugins::getinst();
     /* prendo l'id dell'account | gain account id
      * TODO Fix filtraggio input
      */
     $account_id = $_SESSION['datiaccount']['id'];
     $t = new template('template/account_switch.tpl');
     /* se si vuole usare un utente | "Use a User Profile" Action */
     if ($action == 'use_user') {
         /* vedo se esiste l'utente selezionato e se è dell'account che lo ha selezionato | Check existance and proprietary account on selected one
          * TODO Fix filtraggio input
          */
         $cond = $p->d->getrow('SELECT COUNT(id) AS count, account_id FROM users WHERE id="' . mysql_real_escape_string($_POST['pg_id']) . '" GROUP BY id;');
         /* se supera l'if metto nella sessione i dati del pg separati da quelli dell'account, cambio pg_id nella tabella sessioni e mando l'utente alla pagina main |
          * save usre data out of account data, update pg_id in session table, redirect to main page */
         if ($cond->count > 0 && $cond->account_id == $_SESSION['datiaccount']['id']) {
             $_SESSION['datiuser'] = get_object_vars($p->d->getrow('SELECT * FROM users WHERE id="' . $_POST['pg_id'] . '";'));
             $updsess = $p->d->query('UPDATE sessioni SET pg_id="' . $_POST['pg_id'] . '" WHERE session_id="' . session_id() . '";');
             header('Location:' . config::game_dir . '/plugins.php/main');
             /* command to redirect */
         }
     }
     /* se si vuole cambiare la password | Change Password OF FULL ACCOUNT */
     if ($action == 'change_pwd') {
         /* cripto in md5 quella nuova | md5 encript
          * TODO Fix filtraggio input
          */
         $password = md5(mysql_real_escape_string($_POST['password']));
         /* faccio l'update della password sul db | update query */
         $query = 'UPDATE accounts SET password="******",last_change_pwd=NOW() WHERE id="' . $account_id . '";';
         if ($p->d->query($query) > 0) {
             $t->block_null('new_password_success');
         } else {
             $t->block_null('new_password_failed');
         }
     }
     /* se si vuole creare un nuovo utente | New User */
     if ($action == 'new_user') {
         /* prendo tutti i dati passati in POST e li passo a mysql_real_escape_string e htmlentities per evitare XSS e SQL injections | Input filtering
          * TODO Fix filtraggio input
          */
         $name = mysql_real_escape_string(htmlentities($_POST['name']));
         $surname = mysql_real_escape_string(htmlentities($_POST['surname']));
         $sex = mysql_real_escape_string(htmlentities($_POST['sex']));
         $race = mysql_real_escape_string(htmlentities($_POST['race']));
         /* vedo se sono stati riempiti tutti i campi | no empty fields */
         if ($name == NULL || ($surname = NULL || $sex == NULL || $race == NULL)) {
             die('Non hai riempito tutti i campi <br/> <a href="javascript:history.back();">torna indietro</a>');
         }
         /* java function to reload form */
         /* controllo che il personaggio non esista già | Check in DB for duplicate entries */
         if ($p->d->getvar('SELECT COUNT(id) as count FROM users WHERE name="' . $name . '";') > 0) {
             die('Il personaggio che vuoi creare esiste gi&agrave;! <br/> <a href="javascript:history.back();">torna indietro</a>');
         }
         /* vedo se l'utente ha già raggiunto il massimo di pg consentiti (settati nel config) | check for max number of users in account */
         if ($p->d->getvar('SELECT COUNT(*) FROM users WHERE account_id="' . $account_id . '";') < config::max_pg) {
             /* creo il pg e lo collego all'account che lo ha creato | add user in db and link it to account */
             $query = 'INSERT INTO users SET account_id="' . $account_id . '",name="' . $name . '",surname="' . $surname . '",sex="' . $sex . '",race="' . $race . '";';
             $p->d->query($query);
             /* faccio un refresh della pagina, per evitare che lo faccia manualmente l'utente creando un'altro utente vuoto | force a refresh so no duplicate entries for hand-made refreshes */
             header('Location:' . config::game_dir . '/plugins.php/account_switch');
         } else {
             echo 'Hai raggiunto il numero massimo di personaggi consentiti... <br/> <a href="javascript:history.back();">torna indietro</a>';
         }
         /* | if already has all slot full display a warning and rollback */
     }
     /* assegno l'account id e il path di questa pagina al template | view init: assign account id and path to template */
     $t->assign_var('ID', $account_id);
     $t->assign_var('ACTION', config::game_dir . '/plugins.php/account_switch');
     /* | Check for last changed password
      * TODO Fix filtraggio input
      */
     $time_password = $p->d->getvar('SELECT COUNT(id) FROM accounts WHERE id="' . $_SESSION['datiaccount']['id'] . '" AND last_change_pwd < (NOW() - INTERVAL 6 MONTH);');
     if ($time_password > 0) {
         $t->block_null('change_password');
     }
     /* seleziono i pg dell'utente | extract from db account's pc */
     $users = $p->d->getresults('SELECT * FROM users WHERE account_id="' . $account_id . '" LIMIT 0,' . config::max_pg . ';');
     /* se ce ne sono li aggiungo al template | if any add it to template */
     if (count($users) > 0) {
         foreach ($users as $user) {
             $t->start_block('user');
             $t->assign_block_vars(array('PG_ID' => $user->id, 'PG_NAME' => $user->name, 'PG_SURNAME' => $user->surname, 'PG_IMAGE' => $user->image, 'PG_DESC' => isset($user->description) ? $user->description : 'nessuna descrizione'));
             $t->end_block('user');
             /* assegnazioni per gli editor in-place per le modifiche dei PG | set editor-in-place for PC mod */
             $t->block_assign('javascript_inplace_row_surname', 'ID', $user->id);
             $t->block_assign('javascript_inplace_row_desc', 'ID', $user->id);
         }
     }
     /* se il numero di utenti è minore del numero massimo consentito visualizzo il form di creazione pg | If 
      * number of current pc is less than max allowed per account, show new PC form */
     if (count($users) < config::max_pg) {
         /* | Use config constant to perform check */
         $query = 'SELECT * FROM razze WHERE evolution!=1;';
         /* TODO implementare uso delle sottorazze e razze avanzate */
         $races = $p->d->getresults($query);
         /* ogni razza a cui sia possibile aggiungere il pg è aggiunta nel template | add any pc's allowed race to template */
         $t->start_block('new_user_form');
         foreach ($races as $race) {
             $t->block_assign('race_row', array('RACE_ID' => $race->id, 'RACE_NAME' => $race->name));
         }
         $t->end_block('new_user_form');
     }
     // endif
     $t->out();
 }
Beispiel #9
0
 static function edit_post($forum_id = 0, $id = 0)
 {
     $p = plugins::getinst();
     if ($id != 0) {
         $t = new template('template/forum_message.tpl');
         $t->assign_var('FORUM_ID', $forum_id);
         //controllo se la bacheca è riservata al master e in caso controllo che l'utente lo sia
         if ($p->d->getvar('SELECT master FROM forums WHERE id="' . $forum_id . '";') == 1 && control_access(MASTER_ACCESS) != 1) {
             $t->start_block('access_denied');
             $t->end_block('access_denied');
         } else {
             $post = $p->d->getrow('SELECT * FROM posts WHERE id="' . $id . '"');
             if (!$_POST) {
                 $t->start_block('message_form');
                 if ($post->title != NULL && $post->topic_id == 0) {
                     $t->block_assign('is_topic', 'TOPIC_TITLE', $post->title);
                 }
                 $t->assign_block_var('TEXT', $post->text);
                 $t->assign_block_var('SUBMIT_TEXT', 'modifica messaggio');
                 $t->assign_block_var('ACTION', '{ROOT}/plugins.php/edit_post/' . $forum_id . '/' . $id);
                 $t->end_block('message_form');
             } else {
                 if (isset($_POST['title'])) {
                     $title = mysql_real_escape_string(htmlentities($_POST['title']));
                 } else {
                     $title = $post->title;
                 }
                 $text = $p->filter('topic_message_edited', mysql_real_escape_string(htmlentities($_POST['text'])));
                 $query = 'UPDATE posts SET title="' . $title . '",text="' . $text . '" WHERE id="' . $id . '"';
                 $res = $p->d->query($query);
                 if ($res > 0) {
                     $t->block_assign('success', 'TEXT_SUCCESS', 'Messaggio modificato!');
                 } else {
                     $t->block_assign('failed', 'TEXT_FAILED', 'Messaggio NON modificato: ' . mysql_error());
                 }
             }
         }
         $t->out();
     }
 }
Beispiel #10
0
 static function logout()
 {
     $p = plugins::getinst();
     $t = new template('template/logout.tpl');
     //Elimino l'utente dalle sessioni
     $query = 'DELETE FROM sessioni WHERE session_id="' . session_id() . '";';
     $p->d->query($query);
     //Elimino le variabili di sessione resettando $_SESSION
     $_SESSION = array();
     $t->start_block('logout');
     //Eseguo l'azione "logout"
     $p->action('logout');
     $t->end_block('logout');
     $t->out();
 }