/** * Modifier la langue d'un objet * * @param string $objet * @param int $id * @param int $id_rubrique * @param string $changer_lang * @return string */ function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang) { if ($changer_lang) { $table_objet_sql = table_objet_sql($objet); $id_table_objet = id_table_objet($objet); if ($changer_lang != "herit") { sql_updateq($table_objet_sql, array('lang' => $changer_lang, 'langue_choisie' => 'oui'), "{$id_table_objet}=" . intval($id)); include_spip('inc/rubriques'); if ($table_objet_sql == 'spip_rubriques') { calculer_langues_rubriques(); } $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); } else { $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . intval($id_rubrique)); if (!$langue_parent) { $langue_parent = $GLOBALS['meta']['langue_site']; } sql_updateq($table_objet_sql, array('lang' => $langue_parent, 'langue_choisie' => 'non'), "{$id_table_objet}=" . intval($id)); $changer_lang = $langue_parent; if ($table_objet_sql == 'spip_rubriques') { include_spip('inc/rubriques'); calculer_langues_rubriques(); } } } return $changer_lang; }
function instituer_langue_article($id_article, $id_rubrique) { $changer_lang = _request('changer_lang'); if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $changer_lang) { if ($changer_lang != "herit") { sql_updateq('spip_articles', array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "id_article=$id_article"); include_spip('inc/rubriques'); $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); } else { $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . $id_rubrique); sql_updateq('spip_articles', array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "id_article=$id_article"); } } }
/** * Modifier la langue d'un objet * * @param string $objet * @param int $id * @param int $id_rubrique * @param string $changer_lang * @param string $serveur * @return string */ function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang, $serveur = '') { if ($changer_lang) { $table_objet_sql = table_objet_sql($objet); $id_table_objet = id_table_objet($objet); $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($table_objet_sql, $serveur); $set = array(); if (isset($desc['field']['langue_choisie'])) { $set['langue_choisie'] = 'oui'; } if ($changer_lang != "herit") { $set['lang'] = $changer_lang; sql_updateq($table_objet_sql, $set, "{$id_table_objet}=" . intval($id), '', $serveur); include_spip('inc/rubriques'); // pour calculer_langues_rubriques et calculer_langues_utilisees if ($table_objet_sql == 'spip_rubriques') { calculer_langues_rubriques(); } $langues = calculer_langues_utilisees($serveur); ecrire_meta('langues_utilisees', $langues); } else { $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . intval($id_rubrique)); if (!$langue_parent) { $langue_parent = $GLOBALS['meta']['langue_site']; } $changer_lang = $langue_parent; $set['lang'] = $changer_lang; if (isset($set['langue_choisie'])) { $set['langue_choisie'] = 'non'; } sql_updateq($table_objet_sql, $set, "{$id_table_objet}=" . intval($id), '', $serveur); if ($table_objet_sql == 'spip_rubriques') { include_spip('inc/rubriques'); calculer_langues_rubriques(); } } } return $changer_lang; }
function revisions_breves_langue($id_breve, $id_rubrique, $changer_lang) { if ($changer_lang == "herit") { $row = sql_fetsel("lang", "spip_rubriques", "id_rubrique=$id_rubrique"); $langue_parent = $row['lang']; sql_updateq('spip_breves', array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "id_breve=$id_breve"); } else { sql_updateq('spip_breves', array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "id_breve=$id_breve"); include_spip('inc/rubriques'); $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); } }
/** * Recalcule les langues des rubriques et articles * * Redéfinit la langue du site sur les rubriques sans langue spécifiée * (langue_choisie différent de 'oui') * * Redéfinit les langues des articles sans langue spécifiée * (langue_choisie différent de 'oui') en les rebasant sur la langue * de la rubrique parente lorsque ce n'est pas le cas. * * @return void **/ function calculer_langues_rubriques() { // rubriques (recursivite) sql_updateq("spip_rubriques", array("lang" => $GLOBALS['meta']['langue_site'], "langue_choisie" => 'non'), "id_parent=0 AND langue_choisie != 'oui'"); while (calculer_langues_rubriques_etape()) { } // articles $s = sql_select("A.id_article AS id_article, R.lang AS lang", "spip_articles AS A, spip_rubriques AS R", "A.id_rubrique = R.id_rubrique AND A.langue_choisie != 'oui' AND (length(A.lang)=0 OR length(R.lang)>0) AND R.lang<>A.lang"); while ($row = sql_fetch($s)) { $id_article = $row['id_article']; sql_updateq('spip_articles', array("lang" => $row['lang'], 'langue_choisie' => 'non'), "id_article={$id_article}"); } if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); } // avertir les plugins qui peuvent faire leur mises a jour egalement pipeline('trig_calculer_langues_rubriques', ''); }
function actualise_metas($liste_meta) { $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'); // verifier le impt=non sql_updateq('spip_meta', array('impt' => 'non'), sql_in('nom', $meta_serveur)); while (list($nom, $valeur) = each($liste_meta)) { if (!$GLOBALS['meta'][$nom]) { ecrire_meta($nom, $valeur); } } include_spip('inc/rubriques'); $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); }
function calculer_langues_rubriques() { // rubriques (recursivite) sql_updateq("spip_rubriques", array("lang" => $GLOBALS['meta']['langue_site'], "langue_choisie" => 'non'), "id_parent=0 AND langue_choisie != 'oui'"); while (calculer_langues_rubriques_etape()); // articles $s = sql_select("fils.id_article AS id_article, mere.lang AS lang", "spip_articles AS fils, spip_rubriques AS mere", "fils.id_rubrique = mere.id_rubrique AND fils.langue_choisie != 'oui' AND (fils.lang='' OR mere.lang<>'') AND mere.lang<>fils.lang"); while ($row = sql_fetch($s)) { $id_article = $row['id_article']; sql_updateq('spip_articles', array("lang"=> $row['lang'], 'langue_choisie'=>'non'), "id_article=$id_article"); } // breves $s = sql_select("fils.id_breve AS id_breve, mere.lang AS lang", "spip_breves AS fils, spip_rubriques AS mere", "fils.id_rubrique = mere.id_rubrique AND fils.langue_choisie != 'oui' AND (fils.lang='' OR mere.lang<>'') AND mere.lang<>fils.lang"); while ($row = sql_fetch($s)) { $id_breve = $row['id_breve']; sql_updateq('spip_breves', array("lang"=>$row['lang'], 'langue_choisie'=>'non'), "id_breve=$id_breve"); } if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); } // avertir les plugins qui peuvent faire leur mises a jour egalement pipeline('trig_calculer_langues_rubriques',''); }