function enregistre_et_modifie_forum($id_forum, $c=false) { if ($err = conserver_original($id_forum)) { spip_log("erreur de sauvegarde de l'original, $err"); return; } include_spip('inc/modifier'); return revision_forum($id_forum, $c); }
function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_mot = false) { if (!in_array($statut, array('privrac', 'privadm'))) { // si le statut est vide, c'est qu'on ne veut pas de ce presume spam ! if (!$statut or !$objet or !$id_objet) { $args = func_get_args(); spip_log("Erreur sur forum_insert_base " . var_export($args, 1), 'forum.' . _LOG_ERREUR); return false; } } // Entrer le message dans la base $id_reponse = sql_insertq('spip_forum', array('date_heure' => date('Y-m-d H:i:s'), 'ip' => $GLOBALS['ip'], 'id_auteur' => $GLOBALS['visiteur_session']['id_auteur'])); if ($id_reponse) { if ($id_forum > 0) { $id_thread = sql_getfetsel("id_thread", "spip_forum", "id_forum =" . intval($id_forum)); } else { $id_thread = $id_reponse; } # id_thread oblige INSERT puis UPDATE. // Entrer les cles sql_updateq('spip_forum', array('id_parent' => $id_forum, 'objet' => $objet, 'id_objet' => $id_objet, 'id_thread' => $id_thread, 'statut' => $statut), "id_forum=" . intval($id_reponse)); // Entrer les mots-cles associes if ($ajouter_mot) { mots_du_forum($ajouter_mot, $id_reponse); } // // Entree du contenu et invalidation des caches // include_spip('action/editer_forum'); revision_forum($id_reponse, $c); // Ajouter un document if (isset($_FILES['ajouter_document']) and $_FILES['ajouter_document']['tmp_name']) { $files[] = array('tmp_name' => $_FILES['ajouter_document']['tmp_name'], 'name' => $_FILES['ajouter_document']['name']); $ajouter_documents = charger_fonction('ajouter_documents', 'action'); $ajouter_documents('new', $files, 'forum', $id_reponse, 'document'); // supprimer le temporaire et ses meta donnees spip_unlink($_FILES['ajouter_document']['tmp_name']); spip_unlink(preg_replace(',\\.bin$,', '.txt', $_FILES['ajouter_document']['tmp_name'])); } // Notification $quoi = strncmp($statut, 'priv', 4) == 0 ? 'forumprive' : 'forumposte'; if ($notifications = charger_fonction('notifications', 'inc')) { $notifications($quoi, $id_reponse); } } return $id_reponse; }
function forum_insert_base($c, $id_forum, $id_article, $id_breve, $id_syndic, $id_rubrique, $statut, $retour) { $afficher_texte = (_request('afficher_texte') <> 'non'); $ajouter_mot = _request('ajouter_mot'); // si le statut est vide, c'est qu'on ne veut pas de ce presume spam ! if (!$statut) return false; // Si forum avec previsu sans bon hash de securite, echec silencieux if ($afficher_texte AND forum_insert_noprevisu()) { return false; } if (array_reduce($_POST, 'reduce_strlen', (20 * 1024)) < 0) { ask_php_auth(_T('forum_message_trop_long'), _T('forum_cliquer_retour', array('retour_forum' => $retour))); } // Entrer le message dans la base $id_message = sql_insertq('spip_forum', array( 'date_heure'=> date('Y-m-d H:i:s'), 'ip' => $GLOBALS['ip'], 'id_auteur' => $GLOBALS['visiteur_session']['id_auteur'] )); if ($id_forum>0) { $id_thread = sql_getfetsel("id_thread", "spip_forum", "id_forum = $id_forum"); } else $id_thread = $id_message; # id_thread oblige INSERT puis UPDATE. // id_rubrique est parfois passee pour les articles, on n'en veut pas if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic)) $id_rubrique = 0; // Entrer les cles de jointures et assimilees sql_updateq('spip_forum', array('id_parent' => $id_forum, 'id_rubrique' => $id_rubrique, 'id_article' => $id_article, 'id_breve' => $id_breve, 'id_syndic' => $id_syndic, 'id_thread' => $id_thread, 'statut' => $statut), "id_forum = $id_message"); // Entrer les mots-cles associes if ($ajouter_mot) mots_du_forum($ajouter_mot, $id_message); // // Entree du contenu et invalidation des caches // include_spip('inc/modifier'); revision_forum($id_message, $c); // Ajouter un document if (isset($_FILES['ajouter_document']) AND $_FILES['ajouter_document']['tmp_name']) { $ajouter_documents = charger_fonction('ajouter_documents', 'inc'); $ajouter_documents( $_FILES['ajouter_document']['tmp_name'], $_FILES['ajouter_document']['name'], 'forum', $id_message, 'document', 0, $documents_actifs); // supprimer le temporaire et ses meta donnees spip_unlink($_FILES['ajouter_document']['tmp_name']); spip_unlink(preg_replace(',\.bin$,', '.txt', $_FILES['ajouter_document']['tmp_name'])); } // Notification if ($notifications = charger_fonction('notifications', 'inc')) $notifications('forumposte', $id_message); return $id_message; }