/** * Relâcher un verrou SQL local * * @deprecated Pas d'équivalence actuellement en dehors de MySQL * @see spip_get_lock() * * @param string $nom * Inutilisé. Le nom est calculé en fonction de la connexion principale * @return string|bool * True si réussite, false sinon. */ function spip_release_lock($nom) { $connexion =& $GLOBALS['connexions'][0]; $bd = $connexion['db']; $prefixe = $connexion['prefixe']; $nom = "{$bd}:{$prefixe}:{$nom}" . _LOCK_TIME; $connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")"; mysqli_query(_mysql_link(), $q); }
/** * Supprime des enregistrements d'une table * * @param string $table Nom de la table SQL * @param string|array $where Conditions à vérifier * @param string $serveur Nom du connecteur * @param bool $requeter Exécuter la requête, sinon la retourner * @return bool|string * - int : nombre de suppressions réalisées, * - Texte de la requête si demandé, * - False en cas d'erreur. **/ function spip_mysql_delete($table, $where = '', $serveur = '', $requeter = true) { $res = spip_mysql_query(calculer_mysql_expression('DELETE FROM', $table, ',') . calculer_mysql_expression('WHERE', $where), $serveur, $requeter); if (!$requeter) { return $res; } if ($res) { $link = _mysql_link($serveur); return mysqli_affected_rows($link); } else { return false; } }
/** * Mises à jour de SPIP n°014 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v014_dist($version_installee, $version_cible) { if (upgrade_vers(1.404, $version_installee, $version_cible)) { spip_query("UPDATE spip_mots SET type='Mots sans groupe...' WHERE type=''"); $result = spip_query("SELECT * FROM spip_mots GROUP BY type"); while ($row = sql_fetch($result)) { $type = addslashes($row['type']); // Old style, doit echouer spip_log('ne pas tenir compte de l erreur spip_groupes_mots ci-dessous:', 'mysql'); spip_query("INSERT INTO spip_groupes_mots \t\t\t\t\t(titre, unseul, obligatoire, articles, breves, rubriques, syndic, 0minirezo, 1comite, 6forum)\t\t\t\t\tVALUES (\"{$type}\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')"); // New style, devrait marcher spip_query("INSERT INTO spip_groupes_mots \t\t\t\t\t(titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum)\t\t\t\t\tVALUES (\"{$type}\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')"); } sql_delete("spip_mots", "titre='kawax'"); maj_version(1.404); } if (upgrade_vers(1.405, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_mots ADD id_groupe bigint(21) NOT NULL"); $result = spip_query("SELECT * FROM spip_groupes_mots"); while ($row = sql_fetch($result)) { $id_groupe = addslashes($row['id_groupe']); $type = addslashes($row['titre']); spip_query("UPDATE spip_mots SET id_groupe = '{$id_groupe}' WHERE type='{$type}'"); } maj_version(1.405); } if (upgrade_vers(1.408, $version_installee, $version_cible)) { // Images articles passent dans spip_documents $result = spip_query("SELECT id_article, images FROM spip_articles WHERE LENGTH(images) > 0"); $types = array('jpg' => 1, 'png' => 2, 'gif' => 3); while ($row = @sql_fetch($result)) { $id_article = $row['id_article']; $images = $row['images']; $images = explode(",", $images); reset($images); $replace = '_orig_'; foreach ($images as $val) { $image = explode("|", $val); $fichier = $image[0]; $largeur = $image[1]; $hauteur = $image[2]; preg_match(",-([0-9]+)\\.(gif|jpg|png)\$,i", $fichier, $match); $id_type = intval($types[$match[2]]); $num_img = $match[1]; $fichier = _DIR_IMG . $fichier; $taille = @filesize($fichier); // ici on n'a pas les fonctions absctract ! spip_query("INSERT INTO spip_documents (titre, id_type, fichier, mode, largeur, hauteur, taille) VALUES ('image {$largeur} x {$hauteur}', {$id_type}, '{$fichier}', 'vignette', '{$largeur}', '{$hauteur}', '{$taille}')"); $id_document = mysqli_insert_id(_mysql_link()); if ($id_document > 0) { spip_query("INSERT INTO spip_documents_articles (id_document, id_article) VALUES ({$id_document}, {$id_article})"); $replace = "REPLACE({$replace}, '<IMG{$num_img}|', '<IM_{$id_document}|')"; } else { echo _T('texte_erreur_mise_niveau_base', array('fichier' => $fichier, 'id_article' => $id_article)); exit; } } $replace = "REPLACE({$replace}, '<IM_', '<IMG')"; $replace_chapo = str_replace('_orig_', 'chapo', $replace); $replace_descriptif = str_replace('_orig_', 'descriptif', $replace); $replace_texte = str_replace('_orig_', 'texte', $replace); $replace_ps = str_replace('_orig_', 'ps', $replace); spip_query("UPDATE spip_articles SET chapo={$replace_chapo}, descriptif={$replace_descriptif}, texte={$replace_texte}, ps={$replace_ps} WHERE id_article={$id_article}"); } spip_query("ALTER TABLE spip_articles DROP images"); maj_version(1.408); } if (upgrade_vers(1.414, $version_installee, $version_cible)) { // Forum par defaut "en dur" dans les spip_articles // -> non, prio (priori), pos (posteriori), abo (abonnement) $accepter_forum = substr($GLOBALS['meta']["forums_publics"], 0, 3); $result = spip_query("ALTER TABLE spip_articles CHANGE accepter_forum accepter_forum CHAR(3) NOT NULL"); $result = spip_query("UPDATE spip_articles SET accepter_forum='{$accepter_forum}' WHERE accepter_forum != 'non'"); maj_version(1.414); } /* if ($version_installee == 1.415) { spip_query("ALTER TABLE spip_documents DROP inclus"); maj_version (1.415); } */ if (upgrade_vers(1.417, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic_articles DROP date_index"); maj_version(1.417); } if (upgrade_vers(1.418, $version_installee, $version_cible)) { $result = spip_query("SELECT * FROM spip_auteurs WHERE statut = '0minirezo' AND email != '' ORDER BY id_auteur LIMIT 1"); if ($webmaster = sql_fetch($result)) { ecrire_meta('email_webmaster', $webmaster['email']); } maj_version(1.418); } if (upgrade_vers(1.419, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD alea_actuel TINYTEXT DEFAULT ''"); spip_query("ALTER TABLE spip_auteurs ADD alea_futur TINYTEXT DEFAULT ''"); spip_query("UPDATE spip_auteurs SET alea_futur = FLOOR(32000*RAND())"); maj_version(1.419); } if (upgrade_vers(1.42, $version_installee, $version_cible)) { spip_query("UPDATE spip_auteurs SET alea_actuel='' WHERE statut='nouveau'"); maj_version(1.42); } if (upgrade_vers(1.421, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD auteur_modif bigint(21) DEFAULT '0' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD date_modif datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); maj_version(1.421); } if (upgrade_vers(1.432, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles DROP referers"); spip_query("ALTER TABLE spip_articles ADD referers INTEGER DEFAULT '0' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD popularite INTEGER DEFAULT '0' NOT NULL"); maj_version(1.432); } if (upgrade_vers(1.436, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_documents ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); maj_version(1.436); } if (upgrade_vers(1.437, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_visites ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_visites_referers ADD maj TIMESTAMP"); maj_version(1.437); } if (upgrade_vers(1.438, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD INDEX id_secteur (id_secteur)"); spip_query("ALTER TABLE spip_articles ADD INDEX statut (statut, date)"); maj_version(1.438); } if (upgrade_vers(1.439, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD INDEX statut (statut, date_syndic)"); spip_query("ALTER TABLE spip_syndic_articles ADD INDEX statut (statut)"); spip_query("ALTER TABLE spip_syndic_articles CHANGE url url VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_syndic_articles ADD INDEX url (url)"); maj_version(1.439); } if (upgrade_vers(1.44, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_visites_temp CHANGE ip ip INTEGER UNSIGNED NOT NULL"); maj_version(1.44); } if (upgrade_vers(1.441, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_visites_temp CHANGE date date DATE NOT NULL"); spip_query("ALTER TABLE spip_visites CHANGE date date DATE NOT NULL"); spip_query("ALTER TABLE spip_visites_referers CHANGE date date DATE NOT NULL"); maj_version(1.441); } if (upgrade_vers(1.442, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD prefs TINYTEXT NOT NULL"); maj_version(1.442); } if (upgrade_vers(1.443, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs CHANGE login login VARCHAR(255) BINARY NOT NULL"); spip_query("ALTER TABLE spip_auteurs CHANGE statut statut VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD INDEX login (login)"); spip_query("ALTER TABLE spip_auteurs ADD INDEX statut (statut)"); maj_version(1.443); } if (upgrade_vers(1.444, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD moderation VARCHAR(3) NOT NULL"); maj_version(1.444); } if (upgrade_vers(1.457, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_visites"); spip_query("DROP TABLE spip_visites_temp"); spip_query("DROP TABLE spip_visites_referers"); creer_base(); // crade, a ameliorer :-(( maj_version(1.457); } if (upgrade_vers(1.458, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD cookie_oubli TINYTEXT NOT NULL"); maj_version(1.458); } if (upgrade_vers(1.459, $version_installee, $version_cible)) { $result = spip_query("SELECT type FROM spip_mots GROUP BY type"); while ($row = sql_fetch($result)) { $type = addslashes($row['type']); $res = spip_query("SELECT * FROM spip_groupes_mots WHERE titre='{$type}'"); if (sql_count($res) == 0) { spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum) VALUES ('{$type}', 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')"); if ($id_groupe = mysqli_insert_id(_mysql_link())) { spip_query("UPDATE spip_mots SET id_groupe = '{$id_groupe}' WHERE type='{$type}'"); } } } spip_query("UPDATE spip_articles SET popularite=0"); maj_version(1.459); } if (upgrade_vers(1.46, $version_installee, $version_cible)) { // remettre les mots dans les groupes dupliques par erreur // dans la precedente version du paragraphe de maj 1.459 // et supprimer ceux-ci $result = spip_query("SELECT * FROM spip_groupes_mots ORDER BY id_groupe"); while ($row = sql_fetch($result)) { $titre = addslashes($row['titre']); if (!$vu[$titre]) { $vu[$titre] = true; $id_groupe = $row['id_groupe']; spip_query("UPDATE spip_mots SET id_groupe={$id_groupe} WHERE type='{$titre}'"); sql_delete("spip_groupes_mots", "titre='{$titre}' AND id_groupe<>{$id_groupe}"); } } maj_version(1.46); } if (upgrade_vers(1.462, $version_installee, $version_cible)) { spip_query("UPDATE spip_types_documents SET inclus='embed' WHERE inclus!='non' AND extension IN ('aiff', 'asf', 'avi', 'mid', 'mov', 'mp3', 'mpg', 'ogg', 'qt', 'ra', 'ram', 'rm', 'swf', 'wav', 'wmv')"); maj_version(1.462); } if (upgrade_vers(1.463, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE"); spip_query("ALTER TABLE spip_visites_temp ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_referers_temp ADD maj TIMESTAMP"); maj_version(1.463); } // l'upgrade < 1.462 ci-dessus etait fausse, d'ou correctif if (upgrade_vers(1.464, $version_installee, $version_cible) and $version_installee >= 1.462) { $res = spip_query("SELECT id_type, extension FROM spip_types_documents WHERE id_type NOT IN (1,2,3)"); while ($row = sql_fetch($res)) { $extension = $row['extension']; $id_type = $row['id_type']; spip_query("UPDATE spip_documents SET id_type={$id_type}\tWHERE fichier like '%.{$extension}'"); } maj_version(1.464); } if (upgrade_vers(1.465, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE NOT NULL"); maj_version(1.465); } if (upgrade_vers(1.466, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD source VARCHAR(10) DEFAULT 'spip' NOT NULL"); maj_version(1.466); } if (upgrade_vers(1.468, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD INDEX en_ligne (en_ligne)"); spip_query("ALTER TABLE spip_forum ADD INDEX statut (statut, date_heure)"); maj_version(1.468); } if (upgrade_vers(1.47, $version_installee, $version_cible)) { if ($version_installee >= 1.467) { // annule les "listes de diff" spip_query("DROP TABLE spip_listes"); spip_query("ALTER TABLE spip_auteurs DROP abonne"); spip_query("ALTER TABLE spip_auteurs DROP abonne_pass"); } maj_version(1.47); } if (upgrade_vers(1.471, $version_installee, $version_cible)) { if ($version_installee >= 1.47) { // annule les "maj" spip_query("ALTER TABLE spip_auteurs_articles DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_auteurs_rubriques DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_auteurs_messages DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_documents_articles DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_documents_rubriques DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_documents_breves DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_articles DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_breves DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_rubriques DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_syndic DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_forum DROP maj TIMESTAMP"); } maj_version(1.471); } if (upgrade_vers(1.472, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_referers ADD visites_jour INTEGER UNSIGNED NOT NULL"); maj_version(1.472); } if (upgrade_vers(1.473, $version_installee, $version_cible)) { spip_query("UPDATE spip_syndic_articles SET url = REPLACE(url, '&', '&')"); spip_query("UPDATE spip_syndic SET url_site = REPLACE(url_site, '&', '&')"); maj_version(1.473); } }