from_or_to : stringa 'A' o 'Da' date : data dell'invio del messaggio (formattata in maniera leggibile) discursive_date: data dell'invio del messaggio (gg/mm/yy HH:mm) important : true o false se il messaggio è importante o no message_html : testo del messaggio (formattato in HTML) message_plain : testo del messaggio (non formattato) reply : true o false se bisonga mostrare il bottone rispondi o no from_to_user : nome dell'utente che ha inviato o ricevuto il messaggio */ require_once "__inc__.php"; $response = new RestfulResponse("json"); $r = ''; $id = $_POST['id']; validate_num($id); $ms = new MessageService($currentUser['id']); $m = $ms->getMessage($id); if ($m['to_id'] == $currentUser['id']) { $ms->viewed($id); } $from_to = 'A'; $user = '******'; $write = ""; if ($m['to_id'] == $currentUser['id']) { $from_to = 'Da'; $user = '******'; } $user = DB::FindOne("SELECT user FROM users WHERE id=" . $m[$user] . " LIMIT 1"); $array = array("subject" => $m->getRaw('subject'), "from_or_to" => $from_to, "date" => DateUtils::GetNice($m['date_tm']), "discursive_date" => DateUtils::GetDiscursive($m['date_tm']), "important" => $m->isImportant(), "multiple" => $m->isMultiple(), "message_html" => Text::MessageToHtml($m->getRaw('message')), "message_plain" => $m->getRaw('message'), "reply" => $m['to_id'] == $currentUser['id'], "from_to_user" => $user['user']); $response->set('value', $array); $response->setSuccess(true); $response->send();
/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** Permette di cercare il nome di un utente da una parte del nome method: POST params: name : parte del nome da cercare num_records : numero massimo di nomi che deve ritornare (limite di 50 per evitare di dare troppe informazioni) returns: results : array con nomi degli utenti */ require_once "__inc__.php"; $response = new RestfulResponse("json"); if (isset($_POST['term'])) { $term = Charset::Utf8ToDB($_POST['term']); $num_records = @$_POST['num_records']; // Validazione if (!isset($num_records)) { $num_records = 20; } if ($num_records > 50) { $num_records = 50; } $results = UserSearch::Find($term, $num_records); $response->set('results', $results); $response->setSuccess(true); } else { $response->setError("Missing term param"); } $response->send();
if ($currentUser->isLogged()) { // Valida i campi di input validate_num($_POST['topic_id']); $topic = new Topic($_POST['topic_id']); $message = db_escape(Charset::Utf8ToDB($_POST['message'])); if (!Forum::IsUserFlooding($currentUser)) { if (!$topic['locked']) { // Trova il forum_id $values = DB::FindOne("SELECT argument FROM forum_posts WHERE id = {$_POST['topic_id']}"); $forum_id = $values['argument']; exequery(sprintf("INSERT INTO forum_posts (user_id, root_topic, argument, message, type, post_date, last_post_date, ip) \n VALUES(%d, %d, %d, '%s', %d, %d, %d, '%s')", $currentUser['id'], $_POST['topic_id'], $forum_id, $message, Forum::TYPE_POST, time(), time(), get_ip())); $id = DB::LastId(); $post = new ForumPost($id); Forum::UpdateTopicAfterReply($_POST['topic_id']); Forum::IncPostCountForUser($currentUser); Forum::AddReplyNotifications($post['id']); $response->set("post_html", $post->render("forum/post.html")); $response->setSuccess(true); } else { $response->setError("Il topic e' stato chiuso dal moderatore."); } } else { $response->setError("Attendi almeno " . Forum::FLOOD_SECONDS_LIMIT . " secondi tra un post e l'altro."); } } else { $response->setError("Non sei loggato."); } } else { $response->setError($av->getLastError()); } $response->send();
if ($topic->isPoll() && $topic->isViewableBy($currentUser)) { $poll_data = $topic->getPollData(); if (!$poll_data['user_has_voted']) { // Voto valido? $valid_vote = false; foreach ($poll_data['choices'] as $choice) { if ($choice['id'] == $_POST['vote']) { $valid_vote = true; break; } } if ($valid_vote) { // OK. Inseriamo il voto exequery("INSERT INTO forum_poll (topic_id, user_id, vote)\n VALUES ({$topic['id']}, {$currentUser['id']}, {$_POST['vote']})"); // Ricarica il topic $topic = new Topic($_POST['topic_id']); $response->set("results_html", $topic->renderPollResults()); $response->setSuccess(true); } else { $response->setError("Voto non valido."); } } else { $response->setError("Hai gia' votato."); } } else { $response->setError("Non hai i permessi per votare questo sondaggio."); } } else { $response->setError("Non sei loggato."); } $response->send();
<?php /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** Ricava il contenuto raw di un post (o topic) del forum La richiesta dev'essere effettuata da un utente che ha i permessi per editare il post/topic method: GET params: id: id del post/topic returns: informazioni del post/topic, inclusi: - messaggio, username del postatore */ require_once "__inc__.php"; $response = new RestfulResponse("json"); validate_num($_GET['id']); if ($currentUser->isLogged()) { $post = new ForumPost($_GET['id']); if ($post->isViewableBy($currentUser)) { $response->set('message', $post['message']); $response->set('username', $post['user']); } else { $response->setError("Non hai i permessi per leggere queste informazioni."); } } else { $response->setError("Non loggato"); } echo $response->send();
$message = db_escape(Charset::Utf8ToDB($_POST['message'])); $is_poll = isset($_POST['poll']); // Le domande del sondaggio vengono memorizzate nel campo // "poll" come array serializzato. Se "poll" e' null, allora // vuol dire che il topic non e' un sondaggio if ($is_poll) { $poll_questions = explode("\n", trim(purify(Charset::Utf8ToDB($_POST['poll'])))); if (count($poll_questions) >= 2) { $poll_data = db_escape(serialize($poll_questions)); } else { // Numero di domande nel sondaggio non valido (< 2) $poll_data = null; } } if (!Forum::IsUserFlooding($currentUser)) { exequery(sprintf("INSERT INTO forum_posts (user_id, argument, subject, message, type, post_date, last_post_date, ip, poll, replies) \n VALUES(%d, %d, '%s', '%s', %d, %d, %d, '%s', \"%s\", 0)", $currentUser['id'], $_POST['forum_id'], $subject, $message, Forum::TYPE_TOPIC, time(), time(), get_ip(), $poll_data)); $id = DB::LastId(); $topic = new Topic($id); Forum::IncPostCountForUser($currentUser); $response->set("topic_url", $topic->getUrl()); $response->setSuccess(true); } else { $response->setError("Attendi almeno " . Forum::FLOOD_SECONDS_LIMIT . " secondi tra un post e l'altro."); } } else { $response->setError("Non sei loggato."); } } else { $response->setError($av->getLastError()); } $response->send();
params: folder : cartella di cui si vogliono vedere i messaggi order : tipo di ordinamento p : pagina da visualizzare */ require_once "__inc__.php"; $response = new RestfulResponse("json"); //Salvo i parametri $folder = isset($_POST['folder']) ? $_POST['folder'] : ''; $order = isset($_POST['order']) ? $_POST['order'] : ''; $page = isset($_POST['p']) ? (int) $_POST['p'] : 1; //Controllo di folder $to_field_name = ''; switch ($folder) { case 'inbox': $response->set('to_field_name', 'Da'); $to_field = 'from_id'; $folder = MessageService::INBOX; break; case 'sent': $response->set('to_field_name', 'A'); $to_field = 'to_id'; $folder = MessageService::SENT; break; case 'trash': $response->set('to_field_name', 'Da'); $to_field = 'from_id'; $folder = MessageService::DELETED; break; default: $response->setError("Errore: parametro folder non valido");
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** Ricava il contenuto raw di un post (o topic) del forum La richiesta dev'essere effettuata da un utente che ha i permessi per editare il post/topic method: GET e POST combinato params: id (GET): id del post/topic value (POST): nuovo contenuto returns: success => true|false value => HTML contenente il nuovo post */ require_once "__inc__.php"; $response = new RestfulResponse("json"); validate_num($_GET['id']); if ($currentUser->isLogged()) { $q = exequery("SELECT argument, user_id FROM forum_posts WHERE id = {$_GET['id']}"); $values = mysqli_fetch_array($q); // Puo' editare? if ($currentUser->isModOfForum($values['argument']) || $currentUser["id"] == $values['user_id']) { $message = db_escape(Charset::Utf8ToDB($_POST['value'])); exequery("UPDATE forum_posts SET message = '{$message}', edit_date = " . time() . ", edit_by = {$currentUser['id']}\n WHERE id = {$_GET['id']}"); $post = new ForumPost($_GET['id']); $response->set("value", $post->getParsedMessage()); $response->setSuccess(true); } else { $response->setError("Non hai i permessi per modificare questo post"); } } else { $response->setError("Non loggato"); } echo $response->send();
*/ require_once "__inc__.php"; $response = new RestfulResponse("json"); $hash = $_POST['hash']; if (isset($hash)) { $currentUser = UserFactory::CreateFromLoginHash($hash); if ($currentUser->isLogged()) { $response->setSuccess(true); // Aggiorna ip, data ultimo login exequery(sprintf("UPDATE users SET previous_login_timestamp = '%d', \n last_login_timestamp = '%d', \n last_login_ip = '%s' \n WHERE id = %d", $currentUser['last_login_timestamp'], time(), get_ip(), $currentUser['id'])); // Logga Log::Info(sprintf("%s effettua il login", $currentUser['username'])); $_SESSION['login_hash'] = $currentUser['md5']; if ($_POST['usecookie']) { setcookie('login_hash', $currentUser['md5'], time() + 60 * 60 * 24 * 7, '/'); } } else { if ($currentUser->isBanned()) { $response->set("banned_message", utf8_encode("Il tuo account è stato disattivato fino al " . date("d/m/y - H:i", $currentUser->banned) . " per il seguente motivo: {$currentUser->banned_reason}.\n\nUna volta scaduto il ban il tuo account sarà automaticamente riattivato.")); $response->setError("Bannato!"); } else { setcookie('login_hash', '', 0, '/'); unset($_SESSION['login_hash']); $response->setError("Username o password invalidi."); } } } else { $response->setError("Hash mancante"); } $response->send();