function lire_metas($table = 'meta') { if ($result = spip_query("SELECT nom,valeur FROM spip_{$table}")) { include_spip('base/abstract_sql'); $GLOBALS[$table] = array(); while ($row = sql_fetch($result)) { $GLOBALS[$table][$row['nom']] = $row['valeur']; } sql_free($result); if (!$GLOBALS[$table]['charset'] or $GLOBALS[$table]['charset'] == '_DEFAULT_CHARSET') { ecrire_meta('charset', _DEFAULT_CHARSET, NULL, $table); } // noter cette table de configuration dans les meta de SPIP if ($table !== 'meta') { $liste = unserialize($GLOBALS['meta']['tables_config']); if (!$liste) { $liste = array(); } if (!in_array($table, $liste)) { $liste[] = $table; ecrire_meta('tables_config', serialize($liste)); } } } return $GLOBALS[$table]; }
function wha_check_offer_dist($id_abonnement) { $res = spip_query('SELECT * FROM spip_abonnements WHERE id_abonnement=' . intval($id_abonnement)); if (!($row = spip_fetch_array($res))) { return false; } if ($row['mode_paiement'] != 'wha' or !($uoid = $row['abonne_uid'])) { spip_log("wha_check_offer :Erreur : abonnement {$id_abonnement} n'a pas ete souscrit avec wha (ou pas d'uoid)", 'wha_abo_check'); return false; } if (!($confirm = $row['confirm']) or !($confirm = unserialize($confirm))) { spip_log("wha_check_offer :Erreur : abonnement {$id_abonnement} n'a pas d'url node enregistree", 'wha_abo_check'); return false; } $config = array('MERCHANT_ID' => $confirm['partner'], 'KEY_ID' => $confirm['key'], 'node' => $confirm['node']); $url_check = wha_url_check_abo($uoid, 'love', $config); include_spip('inc/distant'); $ack = @recuperer_page($url_check); spip_log($t = "wha_check_offer : reponse a {$url_check} : {$ack}", 'wha_abo_check'); if (!$ack or !($unsign = wha_unsign($ack)) or !($args = wha_extract_args(reset($unsign)))) { spip_log($t = "wha_check_offer : pas de reponse valide {$url_check} : {$ack}", 'wha_abo_check'); return null; } if (isset($args['c']) and $args['c'] == 'ack') { return true; } if (isset($args['e']) and in_array($args['e'], array(0, 1, 14, 15))) { return false; } return null; }
function maj_vieille_base_1917_create() { global $tables_principales, $tables_auxiliaires, $tables_images, $tables_sequences, $tables_documents, $tables_mime; // ne pas revenir plusieurs fois (si, au contraire, il faut pouvoir // le faire car certaines mises a jour le demandent explicitement) # static $vu = false; # if ($vu) return; else $vu = true; foreach($tables_principales as $k => $v) spip_create_vieille_table($k, $v['field'], $v['key'], true); foreach($tables_auxiliaires as $k => $v) spip_create_vieille_table($k, $v['field'], $v['key'], false); foreach($tables_images as $k => $v) spip_query("INSERT IGNORE INTO spip_types_documents (extension, inclus, titre, id_type) VALUES ('$k', 'image', '" . (is_numeric($v) ? (strtoupper($k) . "', $v") : "$v', 0") . ")"); foreach($tables_sequences as $k => $v) spip_query("INSERT IGNORE INTO spip_types_documents (extension, titre, inclus) VALUES ('$k', '$v', 'embed')"); foreach($tables_documents as $k => $v) spip_query("INSERT IGNORE INTO spip_types_documents (extension, titre, inclus) VALUES ('$k', '$v', 'non')"); foreach ($tables_mime as $extension => $type_mime) spip_query("UPDATE spip_types_documents SET mime_type='$type_mime' WHERE extension='$extension'"); }
function maj_v016_dist($version_installee, $version_cible) { if (upgrade_vers(1.6, $version_installee, $version_cible)) { #8/08/07 plus d'indexation dans le core # include_spip('inc/indexation'); # purger_index(); # creer_liste_indexation(); maj_version(1.6); } if (upgrade_vers(1.601, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD INDEX id_syndic (id_syndic)"); maj_version(1.601); } if (upgrade_vers(1.603, $version_installee, $version_cible)) { // supprimer les fichiers deplaces spip_unlink('inc_meta_cache.php'); spip_unlink('inc_meta_cache.php3'); spip_unlink('data/engines-list.ini'); maj_version(1.603); } if (upgrade_vers(1.604, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); $u = spip_query("SELECT * FROM spip_auteurs WHERE prefs LIKE '%spip_lang%'"); while ($row = sql_fetch($u)) { $prefs = unserialize($row['prefs']); $l = $prefs['spip_lang']; unset($prefs['spip_lang']); spip_query("UPDATE spip_auteurs SET lang=" . _q($l) . ", prefs='" . addslashes(serialize($prefs)) . "' WHERE id_auteur=" . $row['id_auteur']); } $u = spip_query("SELECT lang FROM spip_auteurs"); maj_version(1.604, $u); } }
/** * Cron de calcul des popularités des articles * * @uses genie_popularite_constantes() * * @param int $t * Timestamp de la dernière exécution de cette tâche * @return int * Positif si la tâche a été terminée, négatif pour réexécuter cette tâche **/ function genie_popularites_dist($t) { // Si c'est le premier appel, ne pas calculer $t = $GLOBALS['meta']['date_popularites']; ecrire_meta('date_popularites', time()); if (!$t) { return 1; } $duree = time() - $t; list($a, $b) = genie_popularite_constantes($duree); // du passe, faisons table (SQL) rase sql_update('spip_articles', array('maj' => 'maj', 'popularite' => "popularite * {$a}"), 'popularite>1'); // enregistrer les metas... $row = sql_fetsel('MAX(popularite) AS max, SUM(popularite) AS tot', "spip_articles"); ecrire_meta("popularite_max", $row['max']); ecrire_meta("popularite_total", $row['tot']); // Une fois par jour purger les referers du jour ; qui deviennent // donc ceux de la veille ; au passage on stocke une date_statistiques // dans spip_meta - cela permet au code d'etre "reentrant", ie ce cron // peut etre appele par deux bases SPIP ne partageant pas le meme // _DIR_TMP, sans tout casser... $aujourdhui = date("Y-m-d"); if (($d = $GLOBALS['meta']['date_statistiques']) != $aujourdhui) { spip_log("Popularite: purger referer depuis {$d}"); ecrire_meta('date_statistiques', $aujourdhui); if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) == 0) { spip_query("UPDATE spip_referers SET visites_veille=visites_jour, visites_jour=0"); } else { sql_alter("TABLE spip_referers DROP visites_veille,\n\t\t\tCHANGE visites_jour visites_veille INT(10) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tADD visites_jour INT(10) UNSIGNED NOT NULL DEFAULT '0'"); } } // et c'est fini pour cette fois-ci return 1; }
function maj_v011_dist($version_installee, $version_cible) { if (upgrade_vers(1.1, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_petition"); spip_query("DROP TABLE spip_signatures_petition"); maj_version(1.1); } }
function maj_v012_dist($version_installee, $version_cible) { // Correction de l'oubli des modifs creations depuis 1.04 if (upgrade_vers(1.204, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3) NOT NULL"); spip_query("ALTER TABLE spip_forum ADD id_message bigint(21) NOT NULL"); spip_query("ALTER TABLE spip_forum ADD INDEX id_message (id_message)"); spip_query("ALTER TABLE spip_auteurs ADD en_ligne datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD imessage VARCHAR(3) not null"); spip_query("ALTER TABLE spip_auteurs ADD messagerie VARCHAR(3) not null"); maj_version(1.204); } if (upgrade_vers(1.207, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_rubriques DROP INDEX id_rubrique"); spip_query("ALTER TABLE spip_rubriques ADD INDEX id_parent (id_parent)"); spip_query("ALTER TABLE spip_rubriques ADD statut VARCHAR(10) NOT NULL"); // Declencher le calcul des rubriques publiques include_spip('inc/rubriques'); calculer_rubriques(); maj_version(1.207); } if (upgrade_vers(1.208, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs_messages CHANGE forum vu CHAR(3) NOT NULL"); spip_query("UPDATE spip_auteurs_messages SET vu='oui'"); spip_query("UPDATE spip_auteurs_messages SET vu='non' WHERE statut='a'"); spip_query("ALTER TABLE spip_messages ADD id_auteur bigint(21) NOT NULL"); spip_query("ALTER TABLE spip_messages ADD INDEX id_auteur (id_auteur)"); $result = spip_query("SELECT id_auteur, id_message FROM spip_auteurs_messages WHERE statut='de'"); while ($row = sql_fetch($result)) { $id_auteur = $row['id_auteur']; $id_message = $row['id_message']; spip_query("UPDATE spip_messages SET id_auteur={$id_auteur} WHERE id_message={$id_message}"); } spip_query("ALTER TABLE spip_auteurs_messages DROP statut"); maj_version(1.208); } if (upgrade_vers(1.209, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_syndic_articles ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_messages ADD maj TIMESTAMP"); maj_version(1.209); } if (upgrade_vers(1.21, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_messages DROP page"); stripslashes_base('spip_articles', array('surtitre', 'titre', 'soustitre', 'descriptif', 'chapo', 'texte', 'ps')); stripslashes_base('spip_auteurs', array('nom', 'bio', 'nom_site')); stripslashes_base('spip_breves', array('titre', 'texte', 'lien_titre')); stripslashes_base('spip_forum', array('titre', 'texte', 'auteur', 'nom_site')); stripslashes_base('spip_messages', array('titre', 'texte')); stripslashes_base('spip_mots', array('type', 'titre', 'descriptif', 'texte')); stripslashes_base('spip_petitions', array('texte')); stripslashes_base('spip_rubriques', array('titre', 'descriptif', 'texte')); stripslashes_base('spip_signatures', array('nom_email', 'nom_site', 'message')); stripslashes_base('spip_syndic', array('nom_site', 'descriptif')); stripslashes_base('spip_syndic_articles', array('titre', 'lesauteurs')); maj_version(1.21); } }
function getenfant($leparent,$rubselected){ static $i = 0, $premier = 1; $i++; $query="SELECT * FROM spip_rubriques WHERE id_parent='$leparent' ORDER BY titre"; $result = spip_query($query); while($row=spip_fetch_array($result)){ $my_rubrique=$row['id_rubrique']; $titre=typo($row['titre']); $style = ""; $espace=""; for ($count=1;$count<$i;$count++){ $espace.=" "; } switch ($i) { case 1: $espace= ""; $style .= "font-weight: bold;"; break; case 2: $style .= "color: #202020;"; break; case 3: $style .= "color: #404040;"; break; case 4: $style .= "color: #606060;"; break; case 5: $style .= "color: #808080;"; break; default; $style .= "color: #A0A0A0;"; break; } if (!(($pospoint = strpos($titre,'.')) === FALSE)) { $titre = substr($titre,$pospoint + 2); } $titre = substr($titre,0, 50); // largeur maxi //if ($i == 1 && !$premier) { $option = "<option value='$my_rubrique' style=\"$style\""; if ($rubselected == $my_rubrique) { $option .= " selected"; } echo "$option>$espace".$titre."</option>\n"; $premier = 0; getenfant($my_rubrique,$rubselected); } $i=$i-1; }
/** * Mise à jour 11388 : réparer les referers d'article, qui sont vides depuis r10572 */ function maj_11388() { $s = sql_select('referer_md5', 'spip_referers_articles', "referer='' OR referer IS NULL"); while ($t = sql_fetch($s)) { $k = sql_fetsel('referer', 'spip_referers', 'referer_md5=' . sql_quote($t['referer_md5'])); if ($k['referer']) { spip_query('UPDATE spip_referers_articles SET referer=' . sql_quote($k['referer']) . ' WHERE referer_md5=' . sql_quote($t['referer_md5']) . " AND (referer='' OR referer IS NULL)"); } } }
function cs_titre_sql($table, $where) { $titre = cs_titre_champ($table); // Utiliser la bonne requete en fonction de la version de SPIP if(function_exists('sql_getfetsel') && function_exists('table_objet_sql')) { // SPIP 2.0 if($r = sql_getfetsel($titre, table_objet_sql($table), $where)) return $r; } else { if($r = spip_query("SELECT $titre FROM spip_$table WHERE $where")) // s'il existe un champ, on le retourne if($row = spip_fetch_array($r)) return $row[$titre]; } // sinon, rien ! return ''; }
function get_liste_administrateurs() { include_spip('inc/autoriser'); include_spip('inc/texte'); $admins = $webmestres = array(); $s = spip_query("SELECT * FROM spip_auteurs WHERE statut='0minirezo'"); $fetch = function_exists('sql_fetch')?'sql_fetch':'spip_fetch_array'; // compatibilite SPIP 1.92 while ($qui = $fetch($s)) { $nom = '<a href="'.generer_url_ecrire('auteur_infos',"id_auteur=$qui[id_auteur]").'">'.typo($qui['nom']."</a> (id_auteur=$qui[id_auteur])"); if(autoriser('webmestre','','',$qui)) $webmestres[$qui['id_auteur']] = $nom; else if(autoriser('configurer','plugins','',$qui)) $admins[$qui['id_auteur']] = $nom; } return array( count($webmestres)?join(', ', $webmestres):_T('couteauprive:variable_vide'), count($admins)?join(', ', $admins):_T('couteauprive:variable_vide')); }
function lire_metas($table='meta') { if ($result = spip_query("SELECT nom,valeur FROM spip_$table")) { include_spip('base/abstract_sql'); $GLOBALS[$table] = array(); while ($row = sql_fetch($result)) $GLOBALS[$table][$row['nom']] = $row['valeur']; sql_free($result); if (!$GLOBALS[$table]['charset'] OR $GLOBALS[$table]['charset']=='_DEFAULT_CHARSET' // hum, correction d'un bug ayant abime quelques install ) ecrire_meta('charset', _DEFAULT_CHARSET, NULL, $table); } return $GLOBALS[$table]; }
function affvisit() { $query = 'SELECT SUM(visites) AS total_absolu FROM spip_visites'; $result = spip_query($query); $visites_today = 0; if ($row = spip_fetch_array($result)) { $total_absolu = $row['total_absolu']; } $query = 'SELECT visites FROM spip_visites WHERE date=NOW()'; $result = spip_query($query); if ($row = @spip_fetch_array($result)) { $visites_today = $row['visites']; } $total_gen = $total_absolu + $visites_today; return $total_gen; }
function _action_auteur($action, $id_auteur, $nom_alea) { if (!$id_auteur) { global $connect_id_auteur, $connect_pass; $id_auteur = $connect_id_auteur; $pass = $connect_pass; } else { $result = spip_query("SELECT password FROM lcm_author WHERE id_author={$id_auteur}"); if ($result) { if ($row = spip_fetch_array($result)) { $pass = $row['password']; } } } $alea = read_meta($nom_alea); return md5($action . $id_auteur . $pass . $alea); }
function maj_v013_dist($version_installee, $version_cible) { if (upgrade_vers(1.3, $version_installee, $version_cible)) { // Modifier la syndication (pour liste de sites) spip_query("ALTER TABLE spip_syndic ADD syndication VARCHAR(3) NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD statut VARCHAR(10) NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("UPDATE spip_syndic SET syndication='oui', statut='publie', date=NOW()"); // Statut pour articles syndication, pour pouvoir desactiver un article spip_query("ALTER TABLE spip_syndic_articles ADD statut VARCHAR(10) NOT NULL"); spip_query("UPDATE spip_syndic_articles SET statut='publie'"); maj_version(1.3); } if (upgrade_vers(1.301, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD id_syndic bigint(21) DEFAULT '0' NOT NULL"); maj_version(1.301); } if (upgrade_vers(1.302, $version_installee, $version_cible)) { # spip_query("ALTER TABLE spip_forum_cache DROP PRIMARY KEY"); # spip_query("ALTER TABLE spip_forum_cache DROP INDEX fichier"); # spip_query("ALTER TABLE spip_forum_cache ADD PRIMARY KEY (fichier, id_forum, id_article, id_rubrique, id_breve, id_syndic)"); spip_query("ALTER TABLE spip_forum ADD INDEX id_syndic (id_syndic)"); maj_version(1.302); } if (upgrade_vers(1.303, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_rubriques ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD date_syndic datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("UPDATE spip_syndic SET date_syndic=date"); maj_version(1.303); } if (upgrade_vers(1.306, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_index_syndic_articles"); spip_query("ALTER TABLE spip_syndic ADD date_index datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD INDEX date_index (date_index)"); maj_version(1.306); } if (upgrade_vers(1.307, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic_articles ADD descriptif blob NOT NULL"); maj_version(1.307); } }
function liste_webmestres($void) { $webmestres = array(); include_spip('inc/texte'); include_spip('inc/plugin'); // Version SPIP < 2.1 ou alors >= 2.1 mais utilisant toujours le define pour etablir la liste if (!function_exists('spip_version_compare') OR spip_version_compare($GLOBALS['spip_version_branche'],"2.1.0-rc","<") OR defined('_ID_WEBMESTRES')) { $s = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN (". join (',', array_filter(explode(':', _ID_WEBMESTRES), is_numeric)).")"); } // Version SPIP >= 2.1 et utilisation du flag webmestre en base de donnees else { $s = spip_query("SELECT * FROM spip_auteurs WHERE webmestre='oui'"); } while ($qui = sql_fetch($s)) { if (autoriser('webmestre','','',$qui)) $webmestres[$qui['id_auteur']] = typo($qui['nom']); } return join(', ', $webmestres); }
function rec_mc_install($action){ switch ($action) { // La base est deja cree ? case 'test': // Verifier que le champ id_rec_mc est present... include_spip('base/abstract_sql'); // $desc = spip_abstract_showtable("spip_rmc_rubs_groupes", '', true); return (isset($desc['field']['id_groupe'])); break; // Installer la base case 'install': include_spip('base/create'); // definir la fonction include_spip('base/rec_mc_tables'); // definir sa structure creer_base(); break; // Supprimer la base case 'uninstall': spip_query("DROP TABLE spip_rmc_rubs_groupes_conf"); spip_query("DROP TABLE spip_rmc_rubs_groupes"); spip_query("DROP TABLE spip_rmc_mots_exclus"); break; } }
/** * Mises à jour de SPIP n°010 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v010_dist($version_installee, $version_cible) { if (upgrade_vers(1.01, $version_installee, $version_cible)) { spip_query("UPDATE spip_forum SET statut='publie' WHERE statut=''"); maj_version(1.01); } if (upgrade_vers(1.02, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD id_auteur BIGINT DEFAULT '0' NOT NULL"); maj_version(1.02); } if (upgrade_vers(1.03, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_maj"); maj_version(1.03); } if (upgrade_vers(1.04, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3)"); maj_version(1.04); } if (upgrade_vers(1.05, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_petition"); spip_query("DROP TABLE spip_signatures_petition"); maj_version(1.05); } }
function autoriser_forum_modifier($faire, $type, $id, $qui, $opt) { // Le webmestre if ($GLOBALS['autorite']['editer_forums'] >= 1 AND autoriser('webmestre', $type, $id, $qui, $opt)) return true; // Les admins if ( $GLOBALS['autorite']['editer_forums'] >= 2 AND $qui['statut'] == '0minirezo' AND !$qui['restreint'] ) return true; // L'auteur du message (enregistre') // 2 = avec une periode de grace d'une heure // 3 = ad vitam if ($GLOBALS['autorite']['editer_forums'] >= 3 AND isset($qui['id_auteur'])) { $q = "SELECT id_forum FROM spip_forum WHERE id_forum="._q($id)." AND id_auteur="._q($qui['id_auteur']); if ($GLOBALS['autorite']['editer_forums'] == 3) $q .= " AND date_heure > DATE_SUB(NOW(), INTERVAL 1 HOUR)"; $s = spip_query($q); if (sql_count($s)) return true; } // par defaut return autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt); }
if (!function_exists('sql_query')) { function sql_query($query) { return spip_query($query) ; } }
/** * Tester si mysql ne veut pas du nom de la base dans les requêtes * * @param string $server_db * @return string * - chaîne vide si nom de la base utile * - chaîne : code compilé pour le faire désactiver par SPIP sinon */ function test_rappel_nom_base_mysql($server_db) { $GLOBALS['mysql_rappel_nom_base'] = true; sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db); $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db); if ($ok) { sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db); return ''; } else { $GLOBALS['mysql_rappel_nom_base'] = false; return "\$GLOBALS['mysql_rappel_nom_base'] = false; " . "/* echec de test_rappel_nom_base_mysql a l'installation. */\n"; } }
function exec_rec_mc_dist(){ // elements spip global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur, $couleur_claire, $couleur_foncee; //#plug(11-07) : fonctions requises...(construction de la liste des rubriques, ...) include_spip("inc/rec_mc_inc_fonct"); //#plug(11-07) : Initialisation de l'id rubrique . Mis a -1 pour le premier affichage $rub = -1; //#plug(11-07) : Recupération de l'id rubrique si $_post if (isset($_POST['rub'])) $rub = $_POST['rub']; elseif (isset($_GET['rub'])) $rub = $_GET['rub']; $Refresh = ""; if (isset($_POST['refresh'])) { $Refresh = $_POST['refresh']; } elseif (isset($_GET['refresh'])) { $Refresh = $_GET['refresh']; } //#plug(11-07) : construction des "blocs" include_spip("inc/rec_mc_inc_pres"); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('rmc:titre_page_admin'), "suivi", "rec_mc"); echo "<a name='haut_page'></a><br />"; echo gros_titre(_T('rmc:titre_page_admin'),'',false); echo debut_gauche('', true); //#plug(11-07) : TODO : Etat des lieux... menu_admin() ; creer_colonne_droite(); //#plug(11-07) : vers popup aide bloc_ico_aide_ligne(); //#plug(11-07) : signature echo "<br />"; echo debut_boite_info(true); echo _T('rmc:signature'); echo fin_boite_info(true); echo "<br />"; echo debut_droite('', true); echo debut_cadre_relief( _DIR_IMG_REC_MC."rec_mc-24.png"); echo gros_titre(_T('rmc:titre_config'),'',false); echo _T('rmc:info_config'); echo "<br />"; //#plug(11-07) : verif de l'existence d'au moins une rubrique $r=mysql_query("SELECT * FROM spip_rubriques"); $nb_r=mysql_num_rows($r); //#plug(11-07) : verif de l'existence d'au moins un groupe de mots $g=mysql_query("SELECT * FROM spip_groupes_mots"); $nb_g=mysql_num_rows($g); if($nb_r==0){ echo debut_boite_erreur(_T('rmc:erreur_rubrique')) ; }else if($nb_g==0){ echo debut_boite_erreur(_T('rmc:erreur_groupes_mots')) ; }else{ //#plug(11-07) : Selectionner une rubrique echo debut_cadre_trait_couleur('',true, '', _T('rmc:rubriques')); echo _T('rmc:text_select_rubrique')." <br /><br />"; echo "<form action=\" ".$PHP_SELF." \" method=\"POST\">"; //#plug(11-07) : Commentaire Dom : ma ligne qui merde !!!! ne merde plus!!!!!!!!!!!!!! echo "<select style=\"width:100%;\" name=\"rub\" onchange=\"window.location=('".generer_url_ecrire("rec_mc","rub='+this.options[this.selectedIndex].value").")\">"; if ($rub == -1) echo "<option value=\"-1\" selected><b>"._T('rmc:select_rubrique')."</b>"; else echo "<option value=\"-1\"><b>"._T('rmc:select_rubrique')."</b>"; if ($rub == 0) echo "<option value=\"0\" selected style=\"font-weight:bold\">"._T('rmc:select_ttes_rubriques'); else echo "<option value=\"0\" style=\"font-weight:bold\">"._T('rmc:select_ttes_rubriques'); $query = "SELECT id_parent FROM spip_rubriques order by titre"; $result=spip_query($query); while($row=spip_fetch_array($result)){ $parent_parent=$row['id_parent']; } getenfant(0,$rub); echo "</select><BR>\n"; echo "</form>"; echo fin_cadre_trait_couleur(true); } $idgroupeprec = 0; if ($rub != -1) { echo debut_cadre_trait_couleur ('', true, '', _T('rmc:groupes_mots')); //#plug(11-07) : formulaire - envoi du traitement vers action/rec_mc_ajoutgroupes echo '<form action="'.generer_url_action('rec_mc_ajoutgroupes').'" method="post">'; echo "<input type='hidden' name='redirect' value='".generer_url_ecrire("rec_mc", "rub=".$rub)."' />\n"; echo "<input type='hidden' name='hash' value='".calculer_action_auteur("ajoutgroupes-rien")."' />\n"; echo "<input type='hidden' name='id_auteur' value='".$connect_id_auteur."' />\n"; echo "<input type='hidden' name='rub' value='$rub'>"; if ($rub > -1) { $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot, spip_mots.id_mot as id_mot, spip_rmc_rubs_groupes.id_rubrique AS idrub FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe INNER JOIN spip_rmc_rubs_groupes ON spip_rmc_rubs_groupes.id_groupe = spip_groupes_mots.id_groupe WHERE id_rubrique = $rub GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; } $result = spip_query($sql); $aff_groupes_select=""; $listidgrp = ""; $compt = 0; $nbr = 0; if ($result) { while ($row = mysql_fetch_assoc($result)) { extract($row); if ($idgroupeprec != $id_groupe) { $aff_groupes_select.=" <br /><div style=\"background-color:#ccc; border:1px solid ".$couleur_foncee."; font-size:1.2em; font-weight:bold\"><input type=checkbox name=\"idgrp[]\" value=\"$id_groupe\" checked />$titre</div>"; $nbr = ++$nbr; if ($compt == 0) { $listidgrp .= "$id_groupe"; $compt = 1; $nb_groupes = ++$ng; } else $listidgrp .= ",$id_groupe"; } $s="SELECT id_mot_exclu FROM spip_rmc_mots_exclus WHERE id_mot_exclu=$id_mot AND id_rubrique=$rub"; $r=spip_query($s); $rw=spip_fetch_array($r); if($rw['id_mot_exclu']==$id_mot){ $aff_groupes_select.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em;height:18px;\" ><span style='float:right;color:red;font-weight:bold;'>"._T('rmc:mot_exclu')."<input type=checkbox name='motsexclus[]' value='$id_mot' style='margin:0 2px;padding:0;' checked='checked' /></span> $titremot</div>"; }else{ $aff_groupes_select.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em;height:18px;\" ><span style='float:right;color:red;'>"._T('rmc:mot_exclure')."<input type=checkbox name='motsexclus[]' value='$id_mot' style='margin:0 2px;padding:0;'/></span> $titremot</div>"; } $idgroupeprec = $id_groupe; } mysql_free_result($result); } if ($rub > -1) { if ($listidgrp != "") $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe WHERE spip_groupes_mots.id_groupe not IN ($listidgrp) GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; else $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; } $result = spip_query($sql); $idgroupeprc = 0; $aff_groupes_noselected = ""; $j=0; if ($result) { while ($row = mysql_fetch_assoc($result)) { extract($row); if ($idgroupeprec != $id_groupe) { $aff_groupes_noselected.=" <br /><div style=\"background-color:#ccc; border:1px solid ".$couleur_foncee."; font-size:1.2em; font-weight:bold\"><input type=checkbox name=\"idgrp[]\" value=\"$id_groupe\">$titre</div>"; $nb_groupes_at = ++$j; } $aff_groupes_noselected.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em\" > $titremot</div>"; $idgroupeprec = $id_groupe; } mysql_free_result($result); } //#plug(11-07) : Affichage //#plug(11-07) : Affichage des groupes attribues (deja selectionnes) if($nbr >0){ echo debut_cadre_relief(_DIR_IMG_PACK."groupe-mot-24.gif"); debut_band_titre($couleur_foncee, "verdana3", "bold"); if($idrub==0 ){ echo _T('rmc:groupes_toutes_rubriques'); }else{ echo _T('rmc:groupes_mots_attribues'); } echo fin_bloc(); echo "$aff_groupes_select"; echo fin_cadre_relief(); } //#plug(11-07) : Affichage des groupes non attribues debut_cadre_relief(_DIR_IMG_PACK."groupe-mot-24.gif"); if($nb_groupes_at >0){ debut_band_titre($couleur_foncee, "verdana3", "bold"); echo _T('rmc:groupes_mots_non_attribues'); echo fin_bloc(); }else{ echo _T('rmc:groupes_mots_tous_attribues'); } echo $aff_groupes_noselected; echo fin_cadre_relief(); echo "<input type=\"submit\" name=\"refresh\" value=\"Valider\">"; echo "</form>"; echo fin_cadre_trait_couleur(true); } echo fin_cadre_relief(); echo fin_gauche().fin_page();//fin page }//finexec
function exec_admin_galettonuts() { // Seuls les super-admins sont authorisés réaliser des synchros, // et par conséquent de configurer le plugin if (!('0minirezo' === $GLOBALS['auteur_session']['statut'] && $GLOBALS['connect_toutes_rubriques'])) { echo minipres(_T('avis_non_acces_page')); exit; } $erreurs = array(); $icone_base = _DIR_PLUGIN_GALETTONUTS . 'img_pack/galettonuts-sql_status-'; $icone_src = 'config-168.png'; $icone_title = _T('galettonuts:icone_db_config'); include_spip('inc/galettonuts_fonctions'); // Lecture de la configuration if (!class_exists('L2_Spip_Plugin_Metas')) { include_spip('lib/L2/Spip/Plugin/Metas.class'); } $config = new L2_Spip_Plugin_Metas('galettonuts_config'); $contexte = $config->lire(); $activer_cron = array_key_exists('activer_cron', $contexte) ? $contexte['activer_cron'] : true; // {{{ Traitement des données reçues if (_request('_galettonuts_ok')) { $champs = array('adresse_db' => _request('adresse_db'), 'login_db' => _request('login_db'), 'pass_db' => _request('pass_db'), 'prefix_db' => _request('prefix_db'), 'choix_db' => _request('choix_db')); // Des champs sont-ils vides ? $champs = array_map('trim', $champs); if (false === (!in_array(null, $champs) || !in_array('', $champs))) { $erreurs[] = _T('galettonuts:texte_erreur_1'); } // Activer la synchronisation automatique ? if ('oui' == _request('activer_cron')) { $activer_cron = true; } else { $activer_cron = false; } if ($activer_cron) { $champs['heures'] = intval(_request('heures')); $champs['minutes'] = intval(_request('minutes')); $synchro = new L2_Spip_Plugin_Metas('galettonuts_synchro'); $frequence = 3600 * $champs['heures'] + 60 * $champs['minutes']; if ($frequence !== $synchro->lire('frequence')) { $synchro->ajouter(array('frequence' => $frequence), true); $fichier = '<?php define(\'_GALETTONUTS_DELAIS_CRON\', ' . $frequence . '); ?>'; ecrire_fichier(_DIR_TMP . 'galettonuts_cron.php', $fichier, true); unset($fichier); } } else { // On s'assure de bien supprimer le fichier de vérouillage // pour forcer la resynchronisation tenant compte de la nouvelle // configuration. if (file_exists(_DIR_TMP . 'galettonuts_cron.lock')) { unlink(_DIR_TMP . 'galettonuts_cron.lock'); } if (file_exists(_DIR_TMP . 'galettonuts_cron.php')) { unlink(_DIR_TMP . 'galettonuts_cron.php'); } } $contexte['activer_cron'] = $activer_cron; // Prise en compte dans le contexte $contexte = array_merge($contexte, $champs); unset($champs); // Test de connexion à la BDD Galette if (!count($erreurs)) { $link = galettonuts_galette_db($contexte['adresse_db'], $contexte['login_db'], $contexte['pass_db']); if (-1 === $link) { $erreurs[] = _T('galettonuts:avis_connexion_echec_1'); $icone_src = 'error-168.png'; $icone_title = _T('galettonuts:icone_db_erreur'); } else { if (-2 === galettonuts_galette_db($contexte['choix_db'], $link)) { $erreurs[] = _T('galettonuts:avis_connexion_echec_2'); $icone_src = 'error-168.png'; $icone_title = _T('galettonuts:icone_db_erreur'); } else { $icone_src = 'ok-168.png'; $icone_title = _T('galettonuts:icone_db_ok'); $contexte['db_ok'] = true; } } if (0 < $link) { mysql_close($link); } unset($link); } // Interraction avec Accès Restreint if (defined('_DIR_PLUGIN_ACCESRESTREINT')) { if ($config->existe('zones')) { galettonuts_dissocier_zones($config->lire('zones')); } $zones = _request('zones'); if (is_array($zones) && 0 < count($zones)) { $contexte['zones'] = $zones; } else { $config->supprimer(array('zones' => null)); unset($contexte['zones']); } unset($zones); } // Mémorisation de la configuration à la base de données Galette if (!count($erreurs)) { $config->ajouter($contexte, true); } // Lancer une synchronisation if (0 == count($erreurs)) { galettonuts_synchroniser(true); } } else { if (!empty($contexte['adresse_db']) && !empty($contexte['login_db']) && !empty($contexte['pass_db'])) { $link = galettonuts_galette_db($contexte['adresse_db'], $contexte['login_db'], $contexte['pass_db']); if (0 > $link) { $icone_src = 'error-168.png'; $icone_title = _T('galettonuts:icone_db_erreur'); $config->ajouter(array('db_ok' => false)); } else { $icone_src = 'ok-168.png'; $icone_title = _T('galettonuts:icone_db_ok'); $config->ajouter(array('db_ok' => true)); mysql_close($link); unset($link); } } } // }}} // {{{ Affichage // Haut de page $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('galettonuts:titre_page_admin'), '', 'galettonuts'), '<br/><br/><br/>'; gros_titre(_T('galettonuts:titre_admin')); // Boîte d'informations debut_gauche(); debut_boite_info(); echo _T('galettonuts:texte_info_admin'); fin_boite_info(); // Message(s) d'erreur(s) debut_droite(); if ($c = count($erreurs)) { if (1 == $c) { $erreur_titre = _T('galettonuts:texte_erreur'); $erreur_texte = (string) $erreurs[0]; } else { $erreur_titre = _T('galettonuts:texte_erreurs'); $erreur_texte = '<ul>'; for ($i = 0; $c < $i; ++$i) { $erreur_texte .= '<li>' . $erreurs[$i] . '</li>'; } $erreur_texte .= '</ul>'; } echo '<div style="background-color:#fee;color:red;border:1px solid red;padding:.5em;margin-bottom:25px" class="verdana2"><strong>', $erreur_titre, '</strong> :<br />', $erreur_texte, '</div>'; } echo generer_url_post_ecrire('admin_galettonuts'); // Accès à la BDD debut_cadre_trait_couleur('base-24.gif', false, '', _T('galettonuts:info_bdd')); echo '<div style="float:right;width:175px" class="verdana2">', _T('galettonuts:texte_info_bdd'), '<div>', '<div style="position:absolute;bottom:35px;width:168px;height:168px">', '<img src="', $icone_base, $icone_src, '" width="168" height="168" alt="" title="', $icone_title, '" />', '</div>', '</div>', '</div>'; echo '<div style="width:298px">'; debut_cadre_couleur(); echo '<p><label for="adresse_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_adresse'), '</label><br/>', '<input type="text" name="adresse_db" value="', $contexte['adresse_db'], '" id="adresse_db" class="fondl" style="width:278px" tabindex="504"/>', '</p>'; echo '<p><label for="login_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_login'), '</label><br/>', '<input type="text" name="login_db" value="', $contexte['login_db'], '" id="login_db" class="fondl" style="width:278px" tabindex="508"/>', '</p>'; echo '<p><label for="pass_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_mdp'), '</label><br/>', '<input type="password" name="pass_db" value="', $contexte['pass_db'], '" id="pass_db" class="fondl" style="width:278px" tabindex="512"/>', '</p>'; echo '<p><label for="prefix_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_prefix'), '</label><br/>', '<input type="text" name="prefix_db" value="', $contexte['prefix_db'], '" id="prefix_db" class="fondl" style="width:278px" tabindex="516"/>', '</p>'; echo '<p><label for="choix_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_choix'), '</label><br/>', '<input type="text" name="choix_db" value="', $contexte['choix_db'], '" id="choix_db" class="fondl" style="width:278px" tabindex="520"/>', '</p>'; fin_cadre_couleur(); echo '</div>'; echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="560"/></div>'; fin_cadre_trait_couleur(); // Synchronisation automatique echo '<br />'; debut_cadre_relief('synchro-24.gif', false, '', _T('galettonuts:info_cron')); echo '<p class="verdana2">', _T('galettonuts:texte_info_cron'), '</p>'; echo '<p class="verdana2">', '<label', $activer_cron ? ' style="font-weight:bold"' : '', '>', '<input type="radio" name="activer_cron" value="oui" id="activer_cron_oui" tabindex="602" ', $activer_cron ? ' checked="checked" ' : '', 'onclick="changeVisible(this.checked, \'config-cron\', \'block\', \'none\');"', '/>', _T('galettonuts:entree_cron_utiliser'), '</label><br />', '<label', !$activer_cron ? ' style="font-weight:bold"' : '', '>', '<input type="radio" name="activer_cron" value="non" id="activer_cron_non" tabindex="604" ', !$activer_cron ? ' checked="checked" ' : '', 'onclick="changeVisible(this.checked, \'config-cron\', \'none\', \'block\');"', '/>', _T('galettonuts:entree_cron_utiliser_non'), '</label>', '</p>'; echo '<div id="config-cron"', !$activer_cron ? ' style="display:none"' : '', '><hr />'; echo '<p class="verdana2">', _T('galettonuts:frequence'), '</p>'; echo '<p class="verdana2" style="text-align:center">', '<input type="text" name="heures" value="', $contexte['heures'], '" id="cron_heures" size="2" maxlength="2" tabindex="606" class="fondl" style="text-align:right"/>', '<label for="cron_heures" style="font-weight:bold;cursor:pointer">', _T('galettonuts:heures'), '</label>', '<input type="text" name="minutes" value="', $contexte['minutes'], '" id="cron_minutes" size="2" maxlength="2" tabindex="606" class="fondl" style="text-align:right"/>', '<label for="cron_minutes" style="font-weight:bold;cursor:pointer">', _T('galettonuts:minutes'), '</label>', '</p>'; echo '</div>'; echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="660"/></div>'; fin_cadre_relief(); // Liaison avec le plugin Accès restreint if (defined('_DIR_PLUGIN_ACCESRESTREINT')) { $zones = spip_query("SELECT `id_zone`, `titre`, `descriptif` FROM `spip_zones` WHERE 1;"); if (spip_num_rows($zones)) { global $couleur_foncee; $i = 0; $zone['num'] = _T('accesrestreint:colonne_id'); $zone['titre'] = _T('accesrestreint:titre'); $zone['descriptif'] = _T('accesrestreint:descriptif'); $tabindex = 700; $tab_zones = <<<HTML <table class="arial2" border="0" cellpadding="2" cellspacing="0" style="width:100%;border:1px solid #AAA;"> <thead> <tr style="background-color:{$couleur_foncee};color:#fff;font-weight=bold"> <th scope="col" style="text-align:left;padding-left:5px;padding-right:5px" width="40">{$zone['num']}</th> <th scope="col" style="text-align:left;border-left:1px inset #fff;padding-left:5px;padding-right:5px">{$zone['titre']}</th> <th scope="col" style="text-align:left;border-left:1px inset #fff;padding-left:5px;padding-right:5px">{$zone['descriptif']}</th> <th scope="col" style="text-align:center;border-left:1px inset #fff;padding-left:5px;padding-right:5px" width="16"> </th> </tr> </thead> <tbody> HTML; while ($zone = spip_fetch_array($zones)) { ++$tabindex; $bgcolor = alterner(++$i, '#FEFEFE', '#EEE'); if (array_key_exists('zones', $contexte)) { $checked = in_array($zone['id_zone'], $contexte['zones']) ? ' checked="checked"' : ''; } else { $checked = ''; } $tab_zones .= <<<HTML <tr style="background-color:{$bgcolor}"> <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['id_zone']}</td> <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['titre']}</td> <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['descriptif']}</td> <td style="text-align:center"> <input type="checkbox" name="zones[]" value="{$zone['id_zone']}" class="fondl" tabindex="{$tabindex}"{$checked} /> </td> </tr> HTML; } $tab_zones .= '</tbody></table>'; echo '<br />'; debut_cadre_relief(_DIR_PLUGIN_ACCESRESTREINT . 'img_pack/zones-acces-24.gif', false, '', _T('galettonuts:info_liaison_access_restreint')); echo '<p class="verdana2">', _T('galettonuts:texte_liaison_access_restreint_1'), '</p>'; echo '<p class="verdana2">', _T('galettonuts:texte_liaison_access_restreint_2'), '</p>'; echo $tab_zones; echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="760"/></div>'; fin_cadre_relief(); } } echo '</form>'; // Fin de page echo fin_gauche() . fin_page(); // }}} }
/** * Mises à jour de SPIP n°018 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v018_dist($version_installee, $version_cible) { if (upgrade_vers(1.801, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_rubriques\tADD statut_tmp VARCHAR(10) NOT NULL,\tADD date_tmp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); include_spip('inc/rubriques'); calculer_rubriques(); maj_version(1.801); } // Nouvelles tables d'invalidation if (upgrade_vers(1.802, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_id_article_caches"); spip_query("DROP TABLE spip_id_auteur_caches"); spip_query("DROP TABLE spip_id_breve_caches"); spip_query("DROP TABLE spip_id_document_caches"); spip_query("DROP TABLE spip_id_forum_caches"); spip_query("DROP TABLE spip_id_groupe_caches"); spip_query("DROP TABLE spip_id_message_caches"); spip_query("DROP TABLE spip_id_mot_caches"); spip_query("DROP TABLE spip_id_rubrique_caches"); spip_query("DROP TABLE spip_id_signature_caches"); spip_query("DROP TABLE spip_id_syndic_article_caches"); spip_query("DROP TABLE spip_id_syndic_caches"); spip_query("DROP TABLE spip_id_type_caches"); spip_query("DROP TABLE spip_inclure_caches"); maj_version(1.802); } if (upgrade_vers(1.803, $version_installee, $version_cible)) { # 27 AOUT 2004 : conservons cette table pour autoriser les retours # de SPIP 1.8a6 CVS vers 1.7.2 # spip_query("DROP TABLE spip_forum_cache"); spip_query("DROP TABLE spip_inclure_caches"); maj_version(1.803); } if (upgrade_vers(1.804, $version_installee, $version_cible)) { // recreer la table spip_caches spip_query("DROP TABLE spip_caches"); creer_base(); maj_version(1.804); } /** * Recalculer tous les threads * * Fonction du plugin forum recopiee ici pour assurer la montee * de version dans tous les cas de figure **/ function maj_v018_calculer_threads() { // fixer les id_thread des debuts de discussion sql_update('spip_forum', array('id_thread' => 'id_forum'), "id_parent=0"); // reparer les messages qui n'ont pas l'id_secteur de leur parent do { $discussion = "0"; $precedent = 0; $r = sql_select("fille.id_forum AS id,\tmaman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman', "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread", '', "thread"); while ($row = sql_fetch($r)) { if ($row['thread'] == $precedent) { $discussion .= "," . $row['id']; } else { if ($precedent) { sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ({$discussion})"); } $precedent = $row['thread']; $discussion = $row['id']; } } sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ({$discussion})"); } while ($discussion != "0"); } if (upgrade_vers(1.805, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD id_thread bigint(21) DEFAULT '0' NOT NULL"); maj_v018_calculer_threads(); maj_version(1.805); } // tables d'orthographe #if ($version_installee < 1.806) # maj_version(1.806); // URLs propres (inc_version = 0.12) if (upgrade_vers(1.807, $version_installee, $version_cible)) { foreach (array('articles', 'breves', 'rubriques', 'mots') as $objets) { spip_query("ALTER TABLE spip_{$objets} ADD url_propre VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_{$objets} ADD INDEX url_propre (url_propre)"); } maj_version(1.807); } // referers de la veille if (upgrade_vers(1.808, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_referers ADD visites_veille INT UNSIGNED NOT NULL"); maj_version(1.808); } // corrections diverses if (upgrade_vers(1.809, $version_installee, $version_cible)) { // plus de retour possible vers 1.7.2 spip_query("DROP TABLE spip_forum_cache"); // les requetes ci-dessous ne s'appliqueront que si on est passe // par une certaine version de developpement - oublie de le faire // plus tot, car le code d'alors recreait purement et simplement // cette table spip_query("ALTER TABLE spip_versions DROP chapo"); spip_query("ALTER TABLE spip_versions DROP texte"); spip_query("ALTER TABLE spip_versions DROP ps"); spip_query("ALTER TABLE spip_versions DROP extra"); spip_query("ALTER TABLE spip_versions ADD champs text NOT NULL"); maj_version(1.809); } // Annuler les brouillons de forum jamais valides if (upgrade_vers(1.81, $version_installee, $version_cible)) { sql_delete("spip_forum", "statut='redac'"); maj_version(1.81); } if (upgrade_vers(1.811, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD extra longblob NULL"); maj_version(1.811); } if (upgrade_vers(1.812, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_documents ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); maj_version(1.812); } // Mise a jour des types MIME if (upgrade_vers(1.813, $version_installee, $version_cible)) { # rien a faire car c'est creer_base() qui s'en charge maj_version(1.813); } // URLs propres auteurs if (upgrade_vers(1.814, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD url_propre VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD INDEX url_propre (url_propre)"); maj_version(1.814); } // Mots-cles sur les documents // + liens documents <-> sites et articles syndiques (podcasting) if (upgrade_vers(1.815, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_documents\tADD distant VARCHAR(3) DEFAULT 'non'"); maj_version(1.815); } // Indexation des documents (rien a faire sauf reinstaller inc_auxbase) if (upgrade_vers(1.816, $version_installee, $version_cible)) { maj_version(1.816); } // Texte et descriptif des groupes de mots-cles if (upgrade_vers(1.817, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_groupes_mots ADD descriptif text NOT NULL AFTER titre"); spip_query("ALTER TABLE spip_groupes_mots ADD COLUMN texte longblob NOT NULL AFTER descriptif"); maj_version(1.817); } // Conformite des noms de certains champs (0minirezo => minirezo) if (upgrade_vers(1.818, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 0minirezo minirezo char(3) NOT NULL"); spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 1comite comite char(3) NOT NULL"); spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 6forum forum char(3) NOT NULL"); maj_version(1.818); } // Options de syndication : miroir + oubli if (upgrade_vers(1.819, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD miroir VARCHAR(3) DEFAULT 'non'"); spip_query("ALTER TABLE spip_syndic ADD oubli VARCHAR(3) DEFAULT 'non'"); maj_version(1.819); } // Un bug dans les 1.730 (il manquait le "ADD") if (upgrade_vers(1.82, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_auteurs ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_breves ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_mots ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_rubriques ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_syndic ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_forum ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_signatures ADD INDEX idx (idx)"); maj_version(1.82); } // reindexer les articles (on avait oublie les auteurs) if (upgrade_vers(1.821, $version_installee, $version_cible)) { spip_query("UPDATE spip_articles SET idx='1' WHERE idx='oui'"); maj_version(1.821); } // le 'type' des mots doit etre du texte, sinon on depasse en champ multi if (upgrade_vers(1.822, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_mots DROP INDEX type"); spip_query("ALTER TABLE spip_mots CHANGE type type TEXT NOT NULL"); maj_version(1.822); } // ajouter une table de fonctions pour ajax if (upgrade_vers(1.825, $version_installee, $version_cible)) { maj_version(1.825); } if (upgrade_vers(1.826, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_ajax_fonc DROP fonction"); maj_version(1.826); } }
function v019_pre193($version_installee, $version_cible) { // Syndication : ajout de l'option resume=oui/non et de la langue if (upgrade_vers(1.901, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD `resume` VARCHAR(3) DEFAULT 'oui'"); spip_query("ALTER TABLE spip_syndic_articles ADD `lang` VARCHAR(10) DEFAULT '' NOT NULL"); maj_version(1.901); } // Syndication : ajout de source, url_source, tags if (upgrade_vers(1.902, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic_articles ADD `url_source` TINYTEXT DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_syndic_articles ADD `source` TINYTEXT DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_syndic_articles ADD `tags` TEXT DEFAULT '' NOT NULL"); maj_version(1.902); } // URLs propres des sites (sait-on jamais) // + oubli des KEY url_propre sur les auteurs si installation neuve if (upgrade_vers(1.903, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD `url_propre` VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD INDEX `url_propre` (`url_propre`)"); spip_query("ALTER TABLE spip_auteurs ADD INDEX `url_propre` (`url_propre`)"); maj_version(1.903); } // suppression des anciennes tables temporaires des visites // (maintenant stockees sous forme de fichiers) if (upgrade_vers(1.904, $version_installee, $version_cible)) { spip_query("DROP TABLE IF EXISTS spip_visites_temp"); spip_query("DROP TABLE IF EXISTS spip_referers_temp"); maj_version(1.904); } // fusion des 10 tables index en une seule // pour fonctions futures evoluees du moteur de recherche if (upgrade_vers(1.905, $version_installee, $version_cible)) { // agrandir le champ "valeur" de spip_meta pour pouvoir y stocker // des choses plus sympa spip_query("ALTER TABLE spip_meta DROP INDEX `valeur`"); spip_query("ALTER TABLE spip_meta CHANGE `valeur` `valeur` TEXT"); // table des correspondances table->id_table $liste_tables = array(); $liste_tables[1] = 'spip_articles'; $liste_tables[2] = 'spip_auteurs'; $liste_tables[3] = 'spip_breves'; $liste_tables[4] = 'spip_documents'; $liste_tables[5] = 'spip_forum'; $liste_tables[6] = 'spip_mots'; $liste_tables[7] = 'spip_rubriques'; $liste_tables[8] = 'spip_signatures'; $liste_tables[9] = 'spip_syndic'; ecrire_meta('index_table', serialize($liste_tables)); ## devenu inutile car suppression totale de l'indexation /* spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_article` as id_objet,'1' as id_table FROM spip_index_articles"); spip_query("DROP TABLE IF EXISTS spip_index_articles"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_auteur` as id_objet,'2' as id_table FROM spip_index_auteurs"); spip_query("DROP TABLE IF EXISTS spip_index_auteurs"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_breve` as id_objet,'3' as id_table FROM spip_index_breves"); spip_query("DROP TABLE IF EXISTS spip_index_breves"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_document` as id_objet,'4' as id_table FROM spip_index_documents"); spip_query("DROP TABLE IF EXISTS spip_index_documents"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_forum` as id_objet,'5' as id_table FROM spip_index_forum"); spip_query("DROP TABLE IF EXISTS spip_index_forum"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_mot` as id_objet,'6' as id_table FROM spip_index_mots"); spip_query("DROP TABLE IF EXISTS spip_index_mots"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_rubrique` as id_objet,'7' as id_table FROM spip_index_rubriques"); spip_query("DROP TABLE IF EXISTS spip_index_rubriques"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_signature` as id_objet,'8' as id_table FROM spip_index_signatures"); spip_query("DROP TABLE IF EXISTS spip_index_signatures"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_syndic` as id_objet,'9' as `id_table FROM spip_index_syndic"); spip_query("DROP TABLE IF EXISTS spip_index_syndic"); */ maj_version(1.905); } // cette table est desormais geree par le plugin "podcast_client", on la // supprime si le plugin n'est pas active ; risque inherent a l'utilisation // de versions alpha :-) if (upgrade_vers(1.906, $version_installee, $version_cible)) { if (!@in_array('podcast_client', $GLOBALS['plugins'])) { spip_query("DROP TABLE spip_documents_syndic"); } maj_version(1.906); } if (upgrade_vers(1.907, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD INDEX `idx` (`idx`)"); maj_version(1.907); } // Oups ! on stockait les tags de syndication sous la forme rel="category" // au lieu de rel="directory" - http://microformats.org/wiki/rel-directory if (upgrade_vers(1.908, $version_installee, $version_cible)) { spip_query("UPDATE spip_syndic_articles SET `tags` = REPLACE(`tags`, 'rel=\"category\">', 'rel=\"directory\">') WHERE `tags` like '%category%'"); maj_version(1.908); } if (upgrade_vers(1.909, $version_installee, $version_cible)) { spip_query("ALTER IGNORE TABLE spip_mots_articles ADD PRIMARY KEY (`id_article`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_breves ADD PRIMARY KEY (`id_breve`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_rubriques ADD PRIMARY KEY (`id_rubrique`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_syndic ADD PRIMARY KEY (`id_syndic`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_documents ADD PRIMARY KEY (`id_document`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_forum ADD PRIMARY KEY (`id_forum`, `id_mot`)"); maj_version(1.909); } if (upgrade_vers(1.91, $version_installee, $version_cible)) { spip_query("ALTER IGNORE TABLE spip_auteurs_articles ADD PRIMARY KEY (`id_auteur`, `id_article`)"); spip_query("ALTER IGNORE TABLE spip_auteurs_rubriques ADD PRIMARY KEY (`id_auteur`, `id_rubrique`)"); spip_query("ALTER IGNORE TABLE spip_auteurs_messages ADD PRIMARY KEY (`id_auteur`, `id_message`)"); maj_version(1.91); } if (upgrade_vers(1.911, $version_installee, $version_cible)) { spip_query("ALTER IGNORE TABLE spip_auteurs_articles DROP INDEX `id_auteur`"); spip_query("ALTER IGNORE TABLE spip_auteurs_rubriques DROP INDEX `id_auteur`"); spip_query("ALTER IGNORE TABLE spip_auteurs_messages DROP INDEX `id_auteur`"); spip_query("ALTER IGNORE TABLE spip_mots_articles DROP INDEX `id_article`"); spip_query("ALTER IGNORE TABLE spip_mots_breves DROP INDEX `id_breve`"); spip_query("ALTER IGNORE TABLE spip_mots_rubriques DROP INDEX `id_rubrique`"); spip_query("ALTER IGNORE TABLE spip_mots_syndic DROP INDEX `id_syndic`"); spip_query("ALTER IGNORE TABLE spip_mots_forum DROP INDEX `id_forum`"); spip_query("ALTER IGNORE TABLE spip_mots_documents DROP INDEX `id_document`"); # 18 juillet 2007: table depreciee # spip_query("ALTER IGNORE TABLE spip_caches DROP INDEX fichier"); maj_version(1.911); } // Le logo du site n'est plus le logo par defaut des rubriques // mais pour assurer la compatibilite ascendante, on le duplique if (upgrade_vers(1.912, $version_installee, $version_cible)) { @copy(_DIR_LOGOS . 'rubon0.gif', _DIR_LOGOS . 'siteon0.gif'); @copy(_DIR_LOGOS . 'ruboff0.gif', _DIR_LOGOS . 'siteoff0.gif'); @copy(_DIR_LOGOS . 'rubon0.jpg', _DIR_LOGOS . 'siteon0.jpg'); @copy(_DIR_LOGOS . 'ruboff0.jpg', _DIR_LOGOS . 'siteoff0.jpg'); @copy(_DIR_LOGOS . 'rubon0.png', _DIR_LOGOS . 'siteon0.png'); @copy(_DIR_LOGOS . 'ruboff0.png', _DIR_LOGOS . 'siteoff0.png'); maj_version(1.912); } // suppression de auteur_modif qui n'est plus utilise nulle part if (upgrade_vers(1.913, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles DROP `auteur_modif`"); maj_version(1.913); } // Ajout de SVG if (upgrade_vers(1.914, $version_installee, $version_cible)) { spip_query("INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('svg', 'Scalable Vector Graphics', 'embed')"); spip_query("UPDATE spip_types_documents SET `mime_type`='image/svg+xml' WHERE `extension`='svg'"); maj_version(1.914); } // Ajout de plein de type mime if (upgrade_vers(1.915, $version_installee, $version_cible)) { maj_version(1.915); } // refaire l'upgrade 1.905 qui a pu foirer en partie a cause de la requete ALTER sur spip_meta if (upgrade_vers(1.916, $version_installee, $version_cible)) { // agrandir le champ "valeur" de spip_meta pour pouvoir y stocker // des choses plus sympa spip_query("ALTER TABLE spip_meta DROP INDEX `valeur`"); spip_query("ALTER TABLE spip_meta CHANGE `valeur` `valeur` TEXT"); #8/08/07 plus d'indexation dans le core //include_spip('inc/indexation'); //update_index_tables(); maj_version(1.916); } if (upgrade_vers(1.917, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_documents DROP `inclus`"); maj_version(1.917); } // Permettre d'enregistrer un numero IP dans les revisions d'articles // a la place de l'id_auteur if (upgrade_vers(1.918, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_versions CHANGE `id_auteur` `id_auteur` VARCHAR(23)"); maj_version(1.918); } if (upgrade_vers(1.919, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_ajax_fonc DROP `id_auteur`"); maj_version('1.919'); } if (upgrade_vers(1.92, $version_installee, $version_cible)) { spip_query("ALTER IGNORE TABLE spip_documents_articles ADD PRIMARY KEY (`id_article`, `id_document`)"); spip_query("ALTER IGNORE TABLE spip_documents_breves ADD PRIMARY KEY (`id_breve`, `id_document`)"); spip_query("ALTER IGNORE TABLE spip_documents_rubriques ADD PRIMARY KEY (`id_rubrique`, `id_document`)"); spip_query("ALTER IGNORE TABLE spip_documents_articles DROP INDEX `id_article`"); spip_query("ALTER IGNORE TABLE spip_documents_breves DROP INDEX `id_breve`"); spip_query("ALTER IGNORE TABLE spip_documents_rubriques DROP INDEX `id_rubrique`"); maj_version('1.920'); } if (upgrade_vers(1.922, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_meta ADD `impt` ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER `valeur`"); $meta_serveur = array('version_installee', 'adresse_site', 'alea_ephemere_ancien', 'alea_ephemere', 'alea_ephemere_date', 'langue_site', 'langues_proposees', 'date_calcul_rubriques', 'derniere_modif', 'optimiser_table', 'drapeau_edition', 'creer_preview', 'taille_preview', 'creer_htpasswd', 'creer_htaccess', 'gd_formats_read', 'gd_formats', 'netpbm_formats', 'formats_graphiques', 'image_process', 'plugin_header', 'plugin'); foreach ($meta_serveur as $nom) { spip_query("UPDATE spip_meta SET `impt`='non' WHERE `nom`=" . _q($nom)); } maj_version('1.922'); } if (upgrade_vers(1.923, $version_installee, $version_cible)) { if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])) { $IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']); foreach ($IMPORT_tables_noimport as $key => $table) { if ($table == 'spip_meta') { unset($IMPORT_tables_noimport[$key]); } } ecrire_meta('IMPORT_tables_noimport', serialize($IMPORT_tables_noimport), 'non'); } maj_version('1.923'); } if (upgrade_vers(1.924, $version_installee, $version_cible)) { spip_query('DROP TABLE spip_ajax_fonc'); maj_version('1.924'); } if (upgrade_vers(1.925, $version_installee, $version_cible)) { include_spip('inc/flock'); /* deplacement des sessions */ $f_session = preg_files('data', 'session_'); $repertoire = _DIR_SESSIONS; if (!@file_exists($repertoire)) { $repertoire = preg_replace(',' . _DIR_TMP . ',', '', $repertoire); $repertoire = sous_repertoire(_DIR_TMP, $repertoire); } foreach ($f_session as $f) { $d = basename($f); @copy($f, $repertoire . $d); } /* deplacement des visites */ $f_visites = preg_files('data/visites'); $repertoire = sous_repertoire(_DIR_TMP, 'visites'); foreach ($f_visites as $f) { $d = basename($f); @copy($f, $repertoire . $d); } /* deplacement des upload */ $auteurs = array(); $req = spip_query("SELECT `login` FROM spip_auteurs WHERE `statut` = '0minirezo'"); while ($row = sql_fetch($req)) { $auteurs[] = $row['login']; } $f_upload = preg_files('upload', -1, 10000, $auteurs); $repertoire = _DIR_TRANSFERT; if (!@file_exists($repertoire)) { $repertoire = preg_replace(',' . _DIR_TMP . ',', '', $repertoire); $repertoire = sous_repertoire(_DIR_TMP, $repertoire); } foreach ($auteurs as $login) { if (is_dir('upload/' . $login)) { $sous_repertoire = sous_repertoire(_DIR_TRANSFERT, $login); } } foreach ($f_upload as $f) { @copy($f, _DIR_TMP . $f); } /* deplacement des dumps */ $f_session = preg_files('data', 'dump'); $repertoire = _DIR_DUMP; if (!@file_exists($repertoire)) { $repertoire = preg_replace(',' . _DIR_TMP . ',', '', $repertoire); $repertoire = sous_repertoire(_DIR_TMP, $repertoire); } foreach ($f_session as $f) { $d = basename($f); @copy($f, $repertoire . $d); } maj_version('1.925'); } // Ajout de MP4 if (upgrade_vers(1.926, $version_installee, $version_cible)) { spip_query("INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mp4', 'MPEG4', 'embed')"); spip_query("UPDATE spip_types_documents SET `mime_type`='application/mp4' WHERE `extension`='mp4'"); maj_version('1.926'); } }
function crayons_update($id, $colval = array(), $type = '') { if (!$colval or !count($colval)) { return false; } list($distant, $table) = distant_table($type); if ($distant) { list($nom_table, $where) = table_where($type, $id); if (!$nom_table) { return false; } $update = $sep = ''; foreach ($colval as $col => $val) { $update .= $sep . '`' . $col . '`=' . _q($val); $sep = ', '; } $a = spip_query($q = 'UPDATE `' . $nom_table . '` SET ' . $update . ' WHERE ' . $where, $distant); #spip_log($q); include_spip('inc/invalideur'); suivre_invalideur($cond, $modif = true); } else { // cle primaire composee : 3-4-rubrique // calculer un where approprie // et modifier sans passer par la fonction destinee aux tables principales // on limite a SPIP 2 mini car sql_updateq n'est pas mappe dans les crayons_compat if (is_scalar($id) and $GLOBALS['spip_version_code'] >= '1.93') { list($nom_table, $where) = table_where($type, $id, true); // where sous forme de tableau $a = sql_updateq($nom_table, $colval, $where); } else { // modification d'une table principale include_spip('inc/modifier'); $a = modifier_contenu($type, $id, array(), $colval); } } return $a; }
function type_urls_edit_urls_1_action() { // forms[1] : editer un objet (cas SPIP < 2.0) $type = _request('ar_type_objet'); $table = $type.($type=='syndic'?'':'s'); $id = intval(_request('ar_num_objet')); $url = trim(_request('ar_url_objet')); $q = "UPDATE spip_$table SET url_propre="._q($url)." WHERE id_$type=$id"; spip_query($q); redirige_vers_exec(array('ar_num_objet' => _request('ar_num_objet'), 'ar_type_objet' => _request('ar_type_objet'))); }
function debusquer_source($objet, $affiche) { $quoi = $GLOBALS['debug_objets'][$affiche][$objet]; if (!empty($GLOBALS['debug_objets']['boucle'][$objet]->id_boucle)) { $nom = $GLOBALS['debug_objets']['boucle'][$objet]->id_boucle; } else { $nom = $GLOBALS['debug_objets']['sourcefile'][$objet]; } $res2 = ""; if ($affiche == 'resultat') { $legend = $nom; $req = $GLOBALS['debug_objets']['requete'][$objet]; if (function_exists('_mysql_traite_query')) { $c = strtolower(_request('connect')); $c = $GLOBALS['connexions'][$c ? $c : 0]['prefixe']; $req = _mysql_traite_query($req, '', $c); } // permettre le copier/coller facile // $res = ancre_texte($req, array(), true); $res = "<div id='T" . md5($req) . "'>\n<pre>\n" . $req . "</pre>\n</div>\n"; // formatage et affichage des resultats bruts de la requete $ress_req = spip_query($req); $brut_sql = ''; $num = 1; // eviter l'affichage de milliers de lignes // personnalisation possible dans mes_options $max_aff = defined('_MAX_DEBUG_AFF') ? _MAX_DEBUG_AFF : 50; while ($retours_sql = sql_fetch($ress_req)) { if ($num <= $max_aff) { $brut_sql .= "<h3>" . ($num == 1 ? $num . " sur " . sql_count($ress_req) : $num) . "</h3>"; $brut_sql .= "<p>"; foreach ($retours_sql as $key => $val) { $brut_sql .= "<strong>" . $key . "</strong> => " . spip_htmlspecialchars(couper($val, 150)) . "<br />\n"; } $brut_sql .= "</p>"; } $num++; } $res2 = interdire_scripts($brut_sql); foreach ($quoi as $view) { // ne pas afficher les $contexte_inclus $view = preg_replace(",<\\?php.+\\?[>],Uims", "", $view); if ($view) { $res2 .= "\n<br /><fieldset>" . interdire_scripts($view) . "</fieldset>"; } } } elseif ($affiche == 'code') { $legend = $nom; $res = ancre_texte("<" . "?php\n" . $quoi . "\n?" . ">"); } elseif ($affiche == 'boucle') { $legend = _T('zbug_boucle') . ' ' . $nom; // Le compilateur prefixe le nom des boucles par l'extension du fichier source. $gram = preg_match('/^([^_]+)_/', $objet, $r) ? $r[1] : ''; $res = ancre_texte(public_decompiler($quoi, $gram, 0, 'boucle')); } elseif ($affiche == 'squelette') { $legend = $GLOBALS['debug_objets']['sourcefile'][$objet]; $res = ancre_texte($GLOBALS['debug_objets']['squelette'][$objet]); } return array($legend, $res, $res2); }
/** * Mises à jour de SPIP n°017 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v017_dist($version_installee, $version_cible) { if (upgrade_vers(1.702, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD extra longblob NULL"); spip_query("ALTER TABLE spip_auteurs ADD extra longblob NULL"); spip_query("ALTER TABLE spip_breves ADD extra longblob NULL"); spip_query("ALTER TABLE spip_rubriques ADD extra longblob NULL"); spip_query("ALTER TABLE spip_mots ADD extra longblob NULL"); // recuperer les eventuels 'supplement' installes en 1.701 if ($version_installee == 1.701) { spip_query("UPDATE spip_articles SET extra = supplement"); spip_query("ALTER TABLE spip_articles DROP supplement"); spip_query("UPDATE spip_auteurs SET extra = supplement"); spip_query("ALTER TABLE spip_auteurs DROP supplement"); spip_query("UPDATE spip_breves SET extra = supplement"); spip_query("ALTER TABLE spip_breves DROP supplement"); spip_query("UPDATE spip_rubriques SET extra = supplement"); spip_query("ALTER TABLE spip_rubriques DROP supplement"); spip_query("UPDATE spip_mots SET extra = supplement"); spip_query("ALTER TABLE spip_mots DROP supplement"); } $u = spip_query("SELECT extra FROM spip_articles"); $u &= spip_query("SELECT extra FROM spip_auteurs"); $u &= spip_query("SELECT extra FROM spip_breves"); $u &= spip_query("SELECT extra FROM spip_rubriques"); $u &= spip_query("SELECT extra FROM spip_mots"); maj_version(1.702, $u); } if (upgrade_vers(1.703, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_rubriques ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); maj_version(1.703); } if (upgrade_vers(1.704, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD INDEX lang (lang)"); spip_query("ALTER TABLE spip_auteurs ADD INDEX lang (lang)"); spip_query("ALTER TABLE spip_rubriques ADD INDEX lang (lang)"); maj_version(1.704); } if (upgrade_vers(1.705, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD langue_choisie VARCHAR(3) DEFAULT 'non'"); spip_query("ALTER TABLE spip_rubriques ADD langue_choisie VARCHAR(3) DEFAULT 'non'"); maj_version(1.705); } if (upgrade_vers(1.707, $version_installee, $version_cible)) { spip_query("UPDATE spip_articles SET langue_choisie='oui' WHERE MID(lang,1,1) != '.' AND lang != ''"); spip_query("UPDATE spip_articles SET lang=MID(lang,2,8) WHERE langue_choisie = 'non'"); spip_query("UPDATE spip_rubriques SET langue_choisie='oui' WHERE MID(lang,1,1) != '.' AND lang != ''"); spip_query("UPDATE spip_rubriques SET lang=MID(lang,2,8) WHERE langue_choisie = 'non'"); maj_version(1.707); } if (upgrade_vers(1.708, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_breves ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_breves ADD langue_choisie VARCHAR(3) DEFAULT 'non'"); maj_version(1.708); } if (upgrade_vers(1.709, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD id_trad bigint(21) DEFAULT '0' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD INDEX id_trad (id_trad)"); maj_version(1.709); } if (upgrade_vers(1.717, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD INDEX date_modif (date_modif)"); maj_version(1.717); } if (upgrade_vers(1.718, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_referers DROP domaine"); spip_query("ALTER TABLE spip_referers_articles DROP domaine"); spip_query("ALTER TABLE spip_referers_temp DROP domaine"); maj_version(1.718); } if (upgrade_vers(1.722, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD nom_site tinytext NOT NULL"); spip_query("ALTER TABLE spip_articles ADD url_site VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_articles ADD INDEX url_site (url_site)"); if ($version_installee >= 1.72) { spip_query("UPDATE spip_articles SET url_site=url_ref"); spip_query("ALTER TABLE spip_articles DROP INDEX url_ref"); spip_query("ALTER TABLE spip_articles DROP url_ref"); } maj_version(1.722); } if (upgrade_vers(1.723, $version_installee, $version_cible)) { if ($version_installee == 1.722) { spip_query("ALTER TABLE spip_articles MODIFY url_site VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_articles DROP INDEX url_site;"); spip_query("ALTER TABLE spip_articles ADD INDEX url_site (url_site);"); } maj_version(1.723); } if (upgrade_vers(1.724, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_messages ADD date_fin datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); maj_version(1.724); } if (upgrade_vers(1.726, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD low_sec tinytext NOT NULL"); maj_version(1.726); } if (upgrade_vers(1.727, $version_installee, $version_cible)) { // occitans : oci_xx -> oc_xx spip_query("UPDATE spip_auteurs SET lang=REPLACE(lang,'oci_', 'oc_') WHERE lang LIKE 'oci_%'"); spip_query("UPDATE spip_rubriques SET lang=REPLACE(lang,'oci_', 'oc_') WHERE lang LIKE 'oci_%'"); spip_query("UPDATE spip_articles SET lang=REPLACE(lang,'oci_', 'oc_') WHERE lang LIKE 'oci_%'"); spip_query("UPDATE spip_breves SET lang=REPLACE(lang,'oci_', 'oc_') WHERE lang LIKE 'oci_%'"); maj_version(1.727); } // Ici version 1.7 officielle if (upgrade_vers(1.728, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD id_version int unsigned DEFAULT '0' NOT NULL"); maj_version(1.728); } if (upgrade_vers(1.73, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_auteurs ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_breves ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_breves ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_mots ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_mots ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_rubriques ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_rubriques ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_syndic ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_forum ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_forum ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_signatures ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_signatures ADD INDEX idx (idx)"); maj_version(1.73); } if (upgrade_vers(1.731, $version_installee, $version_cible)) { spip_query("UPDATE spip_articles SET idx='1' where lang IN ('de','vi')"); spip_query("UPDATE spip_rubriques SET idx='1' where lang IN ('de','vi')"); spip_query("UPDATE spip_breves SET idx='1' where lang IN ('de','vi')"); spip_query("UPDATE spip_auteurs SET idx='1' where lang IN ('de','vi')"); maj_version(1.731); } if (upgrade_vers(1.732, $version_installee, $version_cible)) { // en correction d'un vieux truc qui avait fait sauter le champ inclus sur les bases version 1.415 spip_query("ALTER TABLE spip_documents ADD inclus VARCHAR(3) DEFAULT 'non'"); maj_version(1.732); } if (upgrade_vers(1.733, $version_installee, $version_cible)) { // spip_query("ALTER TABLE spip_articles ADD id_version int unsigned DEFAULT '0' NOT NULL"); spip_query("DROP TABLE spip_versions"); spip_query("DROP TABLE spip_versions_fragments"); creer_base(); maj_version(1.733); } #if ($version_installee < 1.734) { # // integrer nouvelles tables auxiliaires du compilateur ESJ # creer_base(); # maj_version(1.734); #} }
function maj_1_952() { $ok = sql_alter("TABLE spip_documents CHANGE `mode` `mode` enum('vignette','image','document') DEFAULT NULL"); if ($ok) { $s = sql_select("v.id_document as id_document", "spip_documents as d join spip_documents as v ON d.id_vignette=v.id_document"); $vignettes = array(); while ($t = sql_fetch($s)) { $vignettes[] = intval($t['id_document']); } $ok &= spip_query("UPDATE spip_documents SET `mode`='image' WHERE `mode`='vignette'"); $ok &= spip_query("UPDATE spip_documents SET `mode`='vignette' WHERE `mode`='image' AND " . sql_in('id_document', $vignettes)); } if (!$ok) { die('echec sur maj_1_952()'); } }