@@ -68,7 +68,7 @@ discard block |
||
| 68 | 68 | } |
| 69 | 69 | $dir = constant($dir); |
| 70 | 70 | foreach ($infos['install'] as $file) { |
| 71 | - $file = $dir . $plug . '/' . trim($file); |
|
| 71 | + $file = $dir.$plug.'/'.trim($file); |
|
| 72 | 72 | if (file_exists($file)) { |
| 73 | 73 | include_once($file); |
| 74 | 74 | } |
@@ -81,10 +81,10 @@ discard block |
||
| 81 | 81 | // S'assurer que les metas de la table spécifique sont bien accessibles dans la globale |
| 82 | 82 | lire_metas($table); |
| 83 | 83 | } |
| 84 | - $nom_meta = $infos['prefix'] . '_base_version'; |
|
| 84 | + $nom_meta = $infos['prefix'].'_base_version'; |
|
| 85 | 85 | |
| 86 | 86 | // Détermination de la fonction à appeler et de ses arguments |
| 87 | - $f = $infos['prefix'] . '_install'; |
|
| 87 | + $f = $infos['prefix'].'_install'; |
|
| 88 | 88 | if (!function_exists($f)) { |
| 89 | 89 | $f = isset($infos['schema']) ? 'spip_plugin_install' : ''; |
| 90 | 90 | $arg = $infos; |
@@ -168,12 +168,12 @@ discard block |
||
| 168 | 168 | and spip_version_compare($GLOBALS[$table][$nom_meta], $version_cible, '>=')); |
| 169 | 169 | break; |
| 170 | 170 | case 'install': |
| 171 | - if (function_exists($upgrade = $infos['prefix'] . '_upgrade')) { |
|
| 171 | + if (function_exists($upgrade = $infos['prefix'].'_upgrade')) { |
|
| 172 | 172 | $upgrade($nom_meta, $version_cible, $table); |
| 173 | 173 | } |
| 174 | 174 | break; |
| 175 | 175 | case 'uninstall': |
| 176 | - if (function_exists($vider_tables = $infos['prefix'] . '_vider_tables')) { |
|
| 176 | + if (function_exists($vider_tables = $infos['prefix'].'_vider_tables')) { |
|
| 177 | 177 | $vider_tables($nom_meta, $table); |
| 178 | 178 | } |
| 179 | 179 | break; |
@@ -18,7 +18,7 @@ discard block |
||
| 18 | 18 | |
| 19 | 19 | |
| 20 | 20 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 21 | - return; |
|
| 21 | + return; |
|
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | /** |
@@ -54,96 +54,96 @@ discard block |
||
| 54 | 54 | */ |
| 55 | 55 | function plugins_installer_dist($plug, $action, $dir_type = '_DIR_PLUGINS') { |
| 56 | 56 | |
| 57 | - // Charger les informations du XML du plugin et vérification de l'existence d'une installation |
|
| 58 | - $get_infos = charger_fonction('get_infos', 'plugins'); |
|
| 59 | - $infos = $get_infos($plug, false, constant($dir_type)); |
|
| 60 | - if (!isset($infos['install']) or !$infos['install']) { |
|
| 61 | - return false; |
|
| 62 | - } |
|
| 63 | - |
|
| 64 | - // Passer en chemin absolu si possible, c'est plus efficace |
|
| 65 | - $dir = str_replace('_DIR_', '_ROOT_', $dir_type); |
|
| 66 | - if (!defined($dir)) { |
|
| 67 | - $dir = $dir_type; |
|
| 68 | - } |
|
| 69 | - $dir = constant($dir); |
|
| 70 | - foreach ($infos['install'] as $file) { |
|
| 71 | - $file = $dir . $plug . '/' . trim($file); |
|
| 72 | - if (file_exists($file)) { |
|
| 73 | - include_once($file); |
|
| 74 | - } |
|
| 75 | - } |
|
| 76 | - |
|
| 77 | - // Détermination de la table meta et du nom de la meta plugin |
|
| 78 | - $table = 'meta'; |
|
| 79 | - if (isset($infos['meta']) and ($infos['meta'] !== 'meta')) { |
|
| 80 | - $table = $infos['meta']; |
|
| 81 | - // S'assurer que les metas de la table spécifique sont bien accessibles dans la globale |
|
| 82 | - lire_metas($table); |
|
| 83 | - } |
|
| 84 | - $nom_meta = $infos['prefix'] . '_base_version'; |
|
| 85 | - |
|
| 86 | - // Détermination de la fonction à appeler et de ses arguments |
|
| 87 | - $f = $infos['prefix'] . '_install'; |
|
| 88 | - if (!function_exists($f)) { |
|
| 89 | - $f = isset($infos['schema']) ? 'spip_plugin_install' : ''; |
|
| 90 | - $arg = $infos; |
|
| 91 | - // On passe la table et la meta pour éviter de les recalculer dans la fonction appelée |
|
| 92 | - $arg['meta'] = $table; |
|
| 93 | - $arg['nom_meta'] = $nom_meta; |
|
| 94 | - } else { |
|
| 95 | - // Ancienne méthode d'installation - TODO à supprimer à terme |
|
| 96 | - // stupide: info deja dans le nom |
|
| 97 | - $arg = $infos['prefix']; |
|
| 98 | - } |
|
| 99 | - $version = $infos['schema'] ?? ''; |
|
| 100 | - |
|
| 101 | - if (!$f) { |
|
| 102 | - // installation sans operation particuliere |
|
| 103 | - $infos['install_test'] = [true, '']; |
|
| 104 | - return $infos; |
|
| 105 | - } |
|
| 106 | - |
|
| 107 | - // Tester si l'action demandée est nécessaire ou pas. |
|
| 108 | - $test = $f('test', $arg, $version); |
|
| 109 | - if ($action == 'uninstall') { |
|
| 110 | - $test = !$test; |
|
| 111 | - } |
|
| 112 | - // Si deja fait, on ne fait rien et on ne dit rien |
|
| 113 | - if ($test) { |
|
| 114 | - return true; |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - // Si install et que l'on a la meta d'installation, c'est un upgrade. On le consigne dans $infos |
|
| 118 | - // pour renvoyer le bon message en retour de la fonction. |
|
| 119 | - if ($action == 'install' && !empty($GLOBALS[$table][$nom_meta])) { |
|
| 120 | - $infos['upgrade'] = true; |
|
| 121 | - } |
|
| 122 | - |
|
| 123 | - // executer l'installation ou l'inverse |
|
| 124 | - // et renvoyer la trace (mais il faudrait passer en AJAX plutot) |
|
| 125 | - ob_start(); |
|
| 126 | - $f($action, $arg, $version); |
|
| 127 | - $aff = ob_get_contents(); |
|
| 128 | - ob_end_clean(); |
|
| 129 | - |
|
| 130 | - // vider le cache des descriptions de tables a chaque (de)installation |
|
| 131 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 132 | - $trouver_table(''); |
|
| 133 | - $infos['install_test'] = [$f('test', $arg, $version), $aff]; |
|
| 134 | - |
|
| 135 | - // Si la table meta n'est pas spip_meta et qu'on est dans la première installation du plugin |
|
| 136 | - // on force la création du fichier cache à la date du moment. |
|
| 137 | - // On relit les metas de la table pour être sur que la globale soit à jour pour touch_meta. |
|
| 138 | - if ( |
|
| 139 | - ($table !== 'meta') |
|
| 140 | - and ($action == 'install') |
|
| 141 | - and empty($infos['upgrade']) |
|
| 142 | - ) { |
|
| 143 | - touch_meta(false, $table); |
|
| 144 | - } |
|
| 145 | - |
|
| 146 | - return $infos; |
|
| 57 | + // Charger les informations du XML du plugin et vérification de l'existence d'une installation |
|
| 58 | + $get_infos = charger_fonction('get_infos', 'plugins'); |
|
| 59 | + $infos = $get_infos($plug, false, constant($dir_type)); |
|
| 60 | + if (!isset($infos['install']) or !$infos['install']) { |
|
| 61 | + return false; |
|
| 62 | + } |
|
| 63 | + |
|
| 64 | + // Passer en chemin absolu si possible, c'est plus efficace |
|
| 65 | + $dir = str_replace('_DIR_', '_ROOT_', $dir_type); |
|
| 66 | + if (!defined($dir)) { |
|
| 67 | + $dir = $dir_type; |
|
| 68 | + } |
|
| 69 | + $dir = constant($dir); |
|
| 70 | + foreach ($infos['install'] as $file) { |
|
| 71 | + $file = $dir . $plug . '/' . trim($file); |
|
| 72 | + if (file_exists($file)) { |
|
| 73 | + include_once($file); |
|
| 74 | + } |
|
| 75 | + } |
|
| 76 | + |
|
| 77 | + // Détermination de la table meta et du nom de la meta plugin |
|
| 78 | + $table = 'meta'; |
|
| 79 | + if (isset($infos['meta']) and ($infos['meta'] !== 'meta')) { |
|
| 80 | + $table = $infos['meta']; |
|
| 81 | + // S'assurer que les metas de la table spécifique sont bien accessibles dans la globale |
|
| 82 | + lire_metas($table); |
|
| 83 | + } |
|
| 84 | + $nom_meta = $infos['prefix'] . '_base_version'; |
|
| 85 | + |
|
| 86 | + // Détermination de la fonction à appeler et de ses arguments |
|
| 87 | + $f = $infos['prefix'] . '_install'; |
|
| 88 | + if (!function_exists($f)) { |
|
| 89 | + $f = isset($infos['schema']) ? 'spip_plugin_install' : ''; |
|
| 90 | + $arg = $infos; |
|
| 91 | + // On passe la table et la meta pour éviter de les recalculer dans la fonction appelée |
|
| 92 | + $arg['meta'] = $table; |
|
| 93 | + $arg['nom_meta'] = $nom_meta; |
|
| 94 | + } else { |
|
| 95 | + // Ancienne méthode d'installation - TODO à supprimer à terme |
|
| 96 | + // stupide: info deja dans le nom |
|
| 97 | + $arg = $infos['prefix']; |
|
| 98 | + } |
|
| 99 | + $version = $infos['schema'] ?? ''; |
|
| 100 | + |
|
| 101 | + if (!$f) { |
|
| 102 | + // installation sans operation particuliere |
|
| 103 | + $infos['install_test'] = [true, '']; |
|
| 104 | + return $infos; |
|
| 105 | + } |
|
| 106 | + |
|
| 107 | + // Tester si l'action demandée est nécessaire ou pas. |
|
| 108 | + $test = $f('test', $arg, $version); |
|
| 109 | + if ($action == 'uninstall') { |
|
| 110 | + $test = !$test; |
|
| 111 | + } |
|
| 112 | + // Si deja fait, on ne fait rien et on ne dit rien |
|
| 113 | + if ($test) { |
|
| 114 | + return true; |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + // Si install et que l'on a la meta d'installation, c'est un upgrade. On le consigne dans $infos |
|
| 118 | + // pour renvoyer le bon message en retour de la fonction. |
|
| 119 | + if ($action == 'install' && !empty($GLOBALS[$table][$nom_meta])) { |
|
| 120 | + $infos['upgrade'] = true; |
|
| 121 | + } |
|
| 122 | + |
|
| 123 | + // executer l'installation ou l'inverse |
|
| 124 | + // et renvoyer la trace (mais il faudrait passer en AJAX plutot) |
|
| 125 | + ob_start(); |
|
| 126 | + $f($action, $arg, $version); |
|
| 127 | + $aff = ob_get_contents(); |
|
| 128 | + ob_end_clean(); |
|
| 129 | + |
|
| 130 | + // vider le cache des descriptions de tables a chaque (de)installation |
|
| 131 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 132 | + $trouver_table(''); |
|
| 133 | + $infos['install_test'] = [$f('test', $arg, $version), $aff]; |
|
| 134 | + |
|
| 135 | + // Si la table meta n'est pas spip_meta et qu'on est dans la première installation du plugin |
|
| 136 | + // on force la création du fichier cache à la date du moment. |
|
| 137 | + // On relit les metas de la table pour être sur que la globale soit à jour pour touch_meta. |
|
| 138 | + if ( |
|
| 139 | + ($table !== 'meta') |
|
| 140 | + and ($action == 'install') |
|
| 141 | + and empty($infos['upgrade']) |
|
| 142 | + ) { |
|
| 143 | + touch_meta(false, $table); |
|
| 144 | + } |
|
| 145 | + |
|
| 146 | + return $infos; |
|
| 147 | 147 | } |
| 148 | 148 | |
| 149 | 149 | /** |
@@ -159,25 +159,25 @@ discard block |
||
| 159 | 159 | * @return bool|void |
| 160 | 160 | */ |
| 161 | 161 | function spip_plugin_install($action, $infos, $version_cible) { |
| 162 | - $nom_meta = $infos['nom_meta']; |
|
| 163 | - $table = $infos['meta']; |
|
| 164 | - switch ($action) { |
|
| 165 | - case 'test': |
|
| 166 | - return (isset($GLOBALS[$table]) |
|
| 167 | - and isset($GLOBALS[$table][$nom_meta]) |
|
| 168 | - and spip_version_compare($GLOBALS[$table][$nom_meta], $version_cible, '>=')); |
|
| 169 | - break; |
|
| 170 | - case 'install': |
|
| 171 | - if (function_exists($upgrade = $infos['prefix'] . '_upgrade')) { |
|
| 172 | - $upgrade($nom_meta, $version_cible, $table); |
|
| 173 | - } |
|
| 174 | - break; |
|
| 175 | - case 'uninstall': |
|
| 176 | - if (function_exists($vider_tables = $infos['prefix'] . '_vider_tables')) { |
|
| 177 | - $vider_tables($nom_meta, $table); |
|
| 178 | - } |
|
| 179 | - break; |
|
| 180 | - } |
|
| 162 | + $nom_meta = $infos['nom_meta']; |
|
| 163 | + $table = $infos['meta']; |
|
| 164 | + switch ($action) { |
|
| 165 | + case 'test': |
|
| 166 | + return (isset($GLOBALS[$table]) |
|
| 167 | + and isset($GLOBALS[$table][$nom_meta]) |
|
| 168 | + and spip_version_compare($GLOBALS[$table][$nom_meta], $version_cible, '>=')); |
|
| 169 | + break; |
|
| 170 | + case 'install': |
|
| 171 | + if (function_exists($upgrade = $infos['prefix'] . '_upgrade')) { |
|
| 172 | + $upgrade($nom_meta, $version_cible, $table); |
|
| 173 | + } |
|
| 174 | + break; |
|
| 175 | + case 'uninstall': |
|
| 176 | + if (function_exists($vider_tables = $infos['prefix'] . '_vider_tables')) { |
|
| 177 | + $vider_tables($nom_meta, $table); |
|
| 178 | + } |
|
| 179 | + break; |
|
| 180 | + } |
|
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | |
@@ -196,29 +196,29 @@ discard block |
||
| 196 | 196 | * @return array Tableau des plugins actifs |
| 197 | 197 | **/ |
| 198 | 198 | function liste_plugin_actifs() { |
| 199 | - $liste = $GLOBALS['meta']['plugin'] ?? ''; |
|
| 200 | - if (!$liste) { |
|
| 201 | - return []; |
|
| 202 | - } |
|
| 203 | - if (!is_array($liste = unserialize($liste))) { |
|
| 204 | - // compatibilite pre 1.9.2, mettre a jour la meta |
|
| 205 | - spip_log("MAJ meta plugin vieille version : $liste", 'plugin'); |
|
| 206 | - $new = true; |
|
| 207 | - [, $liste] = liste_plugin_valides(explode(',', $liste)); |
|
| 208 | - } else { |
|
| 209 | - $new = false; |
|
| 210 | - // compat au moment d'une migration depuis version anterieure |
|
| 211 | - // si pas de dir_type, alors c'est _DIR_PLUGINS |
|
| 212 | - foreach ($liste as $prefix => $infos) { |
|
| 213 | - if (!isset($infos['dir_type'])) { |
|
| 214 | - $liste[$prefix]['dir_type'] = '_DIR_PLUGINS'; |
|
| 215 | - $new = true; |
|
| 216 | - } |
|
| 217 | - } |
|
| 218 | - } |
|
| 219 | - if ($new) { |
|
| 220 | - ecrire_meta('plugin', serialize($liste)); |
|
| 221 | - } |
|
| 222 | - |
|
| 223 | - return $liste; |
|
| 199 | + $liste = $GLOBALS['meta']['plugin'] ?? ''; |
|
| 200 | + if (!$liste) { |
|
| 201 | + return []; |
|
| 202 | + } |
|
| 203 | + if (!is_array($liste = unserialize($liste))) { |
|
| 204 | + // compatibilite pre 1.9.2, mettre a jour la meta |
|
| 205 | + spip_log("MAJ meta plugin vieille version : $liste", 'plugin'); |
|
| 206 | + $new = true; |
|
| 207 | + [, $liste] = liste_plugin_valides(explode(',', $liste)); |
|
| 208 | + } else { |
|
| 209 | + $new = false; |
|
| 210 | + // compat au moment d'une migration depuis version anterieure |
|
| 211 | + // si pas de dir_type, alors c'est _DIR_PLUGINS |
|
| 212 | + foreach ($liste as $prefix => $infos) { |
|
| 213 | + if (!isset($infos['dir_type'])) { |
|
| 214 | + $liste[$prefix]['dir_type'] = '_DIR_PLUGINS'; |
|
| 215 | + $new = true; |
|
| 216 | + } |
|
| 217 | + } |
|
| 218 | + } |
|
| 219 | + if ($new) { |
|
| 220 | + ecrire_meta('plugin', serialize($liste)); |
|
| 221 | + } |
|
| 222 | + |
|
| 223 | + return $liste; |
|
| 224 | 224 | } |
@@ -48,7 +48,7 @@ discard block |
||
| 48 | 48 | } |
| 49 | 49 | } |
| 50 | 50 | if (is_null($p)) { |
| 51 | - $arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent') . " : $plug"]]; |
|
| 51 | + $arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent')." : $plug"]]; |
|
| 52 | 52 | $silence = true; |
| 53 | 53 | } else { |
| 54 | 54 | $arbre = $p; |
@@ -83,15 +83,15 @@ discard block |
||
| 83 | 83 | if (isset($arbre['etat'])) { |
| 84 | 84 | $etat = trim(end($arbre['etat'])); |
| 85 | 85 | if (!in_array($etat, $etats)) { |
| 86 | - $arbre['erreur'][] = _T('erreur_plugin_etat_inconnu') . " : '$etat'"; |
|
| 86 | + $arbre['erreur'][] = _T('erreur_plugin_etat_inconnu')." : '$etat'"; |
|
| 87 | 87 | } |
| 88 | 88 | } |
| 89 | 89 | if (isset($arbre['options'])) { |
| 90 | 90 | foreach ($arbre['options'] as $optfile) { |
| 91 | 91 | $optfile = trim($optfile); |
| 92 | - if (!@is_readable($dir_plugins . "$plug/$optfile")) { |
|
| 92 | + if (!@is_readable($dir_plugins."$plug/$optfile")) { |
|
| 93 | 93 | if (!$silence) { |
| 94 | - $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile"; |
|
| 94 | + $arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $optfile"; |
|
| 95 | 95 | } |
| 96 | 96 | } |
| 97 | 97 | } |
@@ -99,9 +99,9 @@ discard block |
||
| 99 | 99 | if (isset($arbre['fonctions'])) { |
| 100 | 100 | foreach ($arbre['fonctions'] as $optfile) { |
| 101 | 101 | $optfile = trim($optfile); |
| 102 | - if (!@is_readable($dir_plugins . "$plug/$optfile")) { |
|
| 102 | + if (!@is_readable($dir_plugins."$plug/$optfile")) { |
|
| 103 | 103 | if (!$silence) { |
| 104 | - $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile"; |
|
| 104 | + $arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $optfile"; |
|
| 105 | 105 | } |
| 106 | 106 | } |
| 107 | 107 | } |
@@ -135,14 +135,14 @@ discard block |
||
| 135 | 135 | // verif que la methode a un nom autorise |
| 136 | 136 | if (in_array(strtolower($action), $liste_methodes_reservees)) { |
| 137 | 137 | if (!$silence) { |
| 138 | - $arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit') . " : $action"; |
|
| 138 | + $arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit')." : $action"; |
|
| 139 | 139 | } |
| 140 | 140 | } |
| 141 | 141 | if (isset($pipe['inclure'])) { |
| 142 | - $inclure = $dir_plugins . "$plug/" . $pipe['inclure']; |
|
| 142 | + $inclure = $dir_plugins."$plug/".$pipe['inclure']; |
|
| 143 | 143 | if (!@is_readable($inclure)) { |
| 144 | 144 | if (!$silence) { |
| 145 | - $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $inclure"; |
|
| 145 | + $arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $inclure"; |
|
| 146 | 146 | } |
| 147 | 147 | } |
| 148 | 148 | } |
@@ -212,9 +212,9 @@ discard block |
||
| 212 | 212 | foreach ($arbre['noisette'] as $k => $nut) { |
| 213 | 213 | $nut = preg_replace(',[.]html$,uims', '', trim($nut)); |
| 214 | 214 | $arbre['noisette'][$k] = $nut; |
| 215 | - if (!@is_readable($dir_plugins . "$plug/$nut.html")) { |
|
| 215 | + if (!@is_readable($dir_plugins."$plug/$nut.html")) { |
|
| 216 | 216 | if (!$silence) { |
| 217 | - $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $nut"; |
|
| 217 | + $arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $nut"; |
|
| 218 | 218 | } |
| 219 | 219 | } |
| 220 | 220 | } |
@@ -11,225 +11,225 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | include_spip('inc/xml'); |
| 18 | 18 | include_spip('inc/plugin'); |
| 19 | 19 | |
| 20 | 20 | function plugins_verifie_conformite_dist($plug, &$arbre, $dir_plugins = _DIR_PLUGINS) { |
| 21 | - $needs = null; |
|
| 22 | - $compat_spip = null; |
|
| 23 | - $uses = null; |
|
| 24 | - $paths = null; |
|
| 25 | - $trads = null; |
|
| 26 | - static $etats = ['dev', 'experimental', 'test', 'stable']; |
|
| 21 | + $needs = null; |
|
| 22 | + $compat_spip = null; |
|
| 23 | + $uses = null; |
|
| 24 | + $paths = null; |
|
| 25 | + $trads = null; |
|
| 26 | + static $etats = ['dev', 'experimental', 'test', 'stable']; |
|
| 27 | 27 | |
| 28 | - $matches = []; |
|
| 29 | - $silence = false; |
|
| 30 | - $p = null; |
|
| 31 | - // chercher la declaration <plugin spip='...'> a prendre pour cette version de SPIP |
|
| 32 | - if ($n = spip_xml_match_nodes(',^plugin(\s|$),', $arbre, $matches)) { |
|
| 33 | - // version de SPIP |
|
| 34 | - $vspip = $GLOBALS['spip_version_branche']; |
|
| 35 | - foreach ($matches as $tag => $sous) { |
|
| 36 | - [$tagname, $atts] = spip_xml_decompose_tag($tag); |
|
| 37 | - if ($tagname == 'plugin' and is_array($sous)) { |
|
| 38 | - // On rajoute la condition sur $n : |
|
| 39 | - // -- en effet si $n==1 on a pas plus a choisir la balise que l'on ait |
|
| 40 | - // un attribut spip ou pas. Cela permet de traiter tous les cas mono-balise |
|
| 41 | - // de la meme facon. |
|
| 42 | - if ( |
|
| 43 | - !isset($atts['spip']) |
|
| 44 | - or $n == 1 |
|
| 45 | - or plugin_version_compatible($atts['spip'], $vspip, 'spip') |
|
| 46 | - ) { |
|
| 47 | - // on prend la derniere declaration avec ce nom |
|
| 48 | - $p = end($sous); |
|
| 49 | - $compat_spip = $atts['spip'] ?? ''; |
|
| 50 | - } |
|
| 51 | - } |
|
| 52 | - } |
|
| 53 | - } |
|
| 54 | - if (is_null($p)) { |
|
| 55 | - $arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent') . " : $plug"]]; |
|
| 56 | - $silence = true; |
|
| 57 | - } else { |
|
| 58 | - $arbre = $p; |
|
| 59 | - } |
|
| 60 | - if (!is_array($arbre)) { |
|
| 61 | - $arbre = []; |
|
| 62 | - } |
|
| 63 | - // verification de la conformite du plugin avec quelques |
|
| 64 | - // precautions elementaires |
|
| 65 | - if (!isset($arbre['nom'])) { |
|
| 66 | - if (!$silence) { |
|
| 67 | - $arbre['erreur'][] = _T('erreur_plugin_nom_manquant'); |
|
| 68 | - } |
|
| 69 | - $arbre['nom'] = ['']; |
|
| 70 | - } |
|
| 71 | - if (!isset($arbre['version'])) { |
|
| 72 | - if (!$silence) { |
|
| 73 | - $arbre['erreur'][] = _T('erreur_plugin_version_manquant'); |
|
| 74 | - } |
|
| 75 | - $arbre['version'] = ['']; |
|
| 76 | - } |
|
| 77 | - if (!isset($arbre['prefix'])) { |
|
| 78 | - if (!$silence) { |
|
| 79 | - $arbre['erreur'][] = _T('erreur_plugin_prefix_manquant'); |
|
| 80 | - } |
|
| 81 | - $arbre['prefix'] = ['']; |
|
| 82 | - } else { |
|
| 83 | - $prefix = trim(end($arbre['prefix'])); |
|
| 84 | - if (strtoupper($prefix) == 'SPIP' and $plug != './') { |
|
| 85 | - $arbre['erreur'][] = _T('erreur_plugin_prefix_interdit'); |
|
| 86 | - } |
|
| 87 | - if (isset($arbre['etat'])) { |
|
| 88 | - $etat = trim(end($arbre['etat'])); |
|
| 89 | - if (!in_array($etat, $etats)) { |
|
| 90 | - $arbre['erreur'][] = _T('erreur_plugin_etat_inconnu') . " : '$etat'"; |
|
| 91 | - } |
|
| 92 | - } |
|
| 93 | - if (isset($arbre['options'])) { |
|
| 94 | - foreach ($arbre['options'] as $optfile) { |
|
| 95 | - $optfile = trim($optfile); |
|
| 96 | - if (!@is_readable($dir_plugins . "$plug/$optfile")) { |
|
| 97 | - if (!$silence) { |
|
| 98 | - $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile"; |
|
| 99 | - } |
|
| 100 | - } |
|
| 101 | - } |
|
| 102 | - } |
|
| 103 | - if (isset($arbre['fonctions'])) { |
|
| 104 | - foreach ($arbre['fonctions'] as $optfile) { |
|
| 105 | - $optfile = trim($optfile); |
|
| 106 | - if (!@is_readable($dir_plugins . "$plug/$optfile")) { |
|
| 107 | - if (!$silence) { |
|
| 108 | - $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile"; |
|
| 109 | - } |
|
| 110 | - } |
|
| 111 | - } |
|
| 112 | - } |
|
| 113 | - $fonctions = []; |
|
| 114 | - if (isset($arbre['fonctions'])) { |
|
| 115 | - $fonctions = $arbre['fonctions']; |
|
| 116 | - } |
|
| 117 | - $liste_methodes_reservees = [ |
|
| 118 | - '__construct', |
|
| 119 | - '__destruct', |
|
| 120 | - 'plugin', |
|
| 121 | - 'install', |
|
| 122 | - 'uninstall', |
|
| 123 | - strtolower($prefix) |
|
| 124 | - ]; |
|
| 28 | + $matches = []; |
|
| 29 | + $silence = false; |
|
| 30 | + $p = null; |
|
| 31 | + // chercher la declaration <plugin spip='...'> a prendre pour cette version de SPIP |
|
| 32 | + if ($n = spip_xml_match_nodes(',^plugin(\s|$),', $arbre, $matches)) { |
|
| 33 | + // version de SPIP |
|
| 34 | + $vspip = $GLOBALS['spip_version_branche']; |
|
| 35 | + foreach ($matches as $tag => $sous) { |
|
| 36 | + [$tagname, $atts] = spip_xml_decompose_tag($tag); |
|
| 37 | + if ($tagname == 'plugin' and is_array($sous)) { |
|
| 38 | + // On rajoute la condition sur $n : |
|
| 39 | + // -- en effet si $n==1 on a pas plus a choisir la balise que l'on ait |
|
| 40 | + // un attribut spip ou pas. Cela permet de traiter tous les cas mono-balise |
|
| 41 | + // de la meme facon. |
|
| 42 | + if ( |
|
| 43 | + !isset($atts['spip']) |
|
| 44 | + or $n == 1 |
|
| 45 | + or plugin_version_compatible($atts['spip'], $vspip, 'spip') |
|
| 46 | + ) { |
|
| 47 | + // on prend la derniere declaration avec ce nom |
|
| 48 | + $p = end($sous); |
|
| 49 | + $compat_spip = $atts['spip'] ?? ''; |
|
| 50 | + } |
|
| 51 | + } |
|
| 52 | + } |
|
| 53 | + } |
|
| 54 | + if (is_null($p)) { |
|
| 55 | + $arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent') . " : $plug"]]; |
|
| 56 | + $silence = true; |
|
| 57 | + } else { |
|
| 58 | + $arbre = $p; |
|
| 59 | + } |
|
| 60 | + if (!is_array($arbre)) { |
|
| 61 | + $arbre = []; |
|
| 62 | + } |
|
| 63 | + // verification de la conformite du plugin avec quelques |
|
| 64 | + // precautions elementaires |
|
| 65 | + if (!isset($arbre['nom'])) { |
|
| 66 | + if (!$silence) { |
|
| 67 | + $arbre['erreur'][] = _T('erreur_plugin_nom_manquant'); |
|
| 68 | + } |
|
| 69 | + $arbre['nom'] = ['']; |
|
| 70 | + } |
|
| 71 | + if (!isset($arbre['version'])) { |
|
| 72 | + if (!$silence) { |
|
| 73 | + $arbre['erreur'][] = _T('erreur_plugin_version_manquant'); |
|
| 74 | + } |
|
| 75 | + $arbre['version'] = ['']; |
|
| 76 | + } |
|
| 77 | + if (!isset($arbre['prefix'])) { |
|
| 78 | + if (!$silence) { |
|
| 79 | + $arbre['erreur'][] = _T('erreur_plugin_prefix_manquant'); |
|
| 80 | + } |
|
| 81 | + $arbre['prefix'] = ['']; |
|
| 82 | + } else { |
|
| 83 | + $prefix = trim(end($arbre['prefix'])); |
|
| 84 | + if (strtoupper($prefix) == 'SPIP' and $plug != './') { |
|
| 85 | + $arbre['erreur'][] = _T('erreur_plugin_prefix_interdit'); |
|
| 86 | + } |
|
| 87 | + if (isset($arbre['etat'])) { |
|
| 88 | + $etat = trim(end($arbre['etat'])); |
|
| 89 | + if (!in_array($etat, $etats)) { |
|
| 90 | + $arbre['erreur'][] = _T('erreur_plugin_etat_inconnu') . " : '$etat'"; |
|
| 91 | + } |
|
| 92 | + } |
|
| 93 | + if (isset($arbre['options'])) { |
|
| 94 | + foreach ($arbre['options'] as $optfile) { |
|
| 95 | + $optfile = trim($optfile); |
|
| 96 | + if (!@is_readable($dir_plugins . "$plug/$optfile")) { |
|
| 97 | + if (!$silence) { |
|
| 98 | + $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile"; |
|
| 99 | + } |
|
| 100 | + } |
|
| 101 | + } |
|
| 102 | + } |
|
| 103 | + if (isset($arbre['fonctions'])) { |
|
| 104 | + foreach ($arbre['fonctions'] as $optfile) { |
|
| 105 | + $optfile = trim($optfile); |
|
| 106 | + if (!@is_readable($dir_plugins . "$plug/$optfile")) { |
|
| 107 | + if (!$silence) { |
|
| 108 | + $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile"; |
|
| 109 | + } |
|
| 110 | + } |
|
| 111 | + } |
|
| 112 | + } |
|
| 113 | + $fonctions = []; |
|
| 114 | + if (isset($arbre['fonctions'])) { |
|
| 115 | + $fonctions = $arbre['fonctions']; |
|
| 116 | + } |
|
| 117 | + $liste_methodes_reservees = [ |
|
| 118 | + '__construct', |
|
| 119 | + '__destruct', |
|
| 120 | + 'plugin', |
|
| 121 | + 'install', |
|
| 122 | + 'uninstall', |
|
| 123 | + strtolower($prefix) |
|
| 124 | + ]; |
|
| 125 | 125 | |
| 126 | - $extraire_pipelines = charger_fonction('extraire_pipelines', 'plugins'); |
|
| 127 | - $arbre['pipeline'] = $extraire_pipelines($arbre); |
|
| 128 | - foreach ($arbre['pipeline'] as $pipe) { |
|
| 129 | - if (!isset($pipe['nom'])) { |
|
| 130 | - if (!$silence) { |
|
| 131 | - $arbre['erreur'][] = _T('erreur_plugin_nom_pipeline_non_defini'); |
|
| 132 | - } |
|
| 133 | - } |
|
| 134 | - if (isset($pipe['action'])) { |
|
| 135 | - $action = $pipe['action']; |
|
| 136 | - } else { |
|
| 137 | - $action = $pipe['nom']; |
|
| 138 | - } |
|
| 139 | - // verif que la methode a un nom autorise |
|
| 140 | - if (in_array(strtolower($action), $liste_methodes_reservees)) { |
|
| 141 | - if (!$silence) { |
|
| 142 | - $arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit') . " : $action"; |
|
| 143 | - } |
|
| 144 | - } |
|
| 145 | - if (isset($pipe['inclure'])) { |
|
| 146 | - $inclure = $dir_plugins . "$plug/" . $pipe['inclure']; |
|
| 147 | - if (!@is_readable($inclure)) { |
|
| 148 | - if (!$silence) { |
|
| 149 | - $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $inclure"; |
|
| 150 | - } |
|
| 151 | - } |
|
| 152 | - } |
|
| 153 | - } |
|
| 154 | - $necessite = []; |
|
| 155 | - $spip_trouve = false; |
|
| 156 | - if (spip_xml_match_nodes(',^necessite,', $arbre, $needs)) { |
|
| 157 | - foreach (array_keys($needs) as $tag) { |
|
| 158 | - [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 159 | - if (!isset($att['id'])) { |
|
| 160 | - if (!$silence) { |
|
| 161 | - $arbre['erreur'][] = _T( |
|
| 162 | - 'erreur_plugin_attribut_balise_manquant', |
|
| 163 | - ['attribut' => 'id', 'balise' => $att] |
|
| 164 | - ); |
|
| 165 | - } |
|
| 166 | - } else { |
|
| 167 | - $necessite[] = $att; |
|
| 168 | - } |
|
| 169 | - if (strtolower($att['id']) == 'spip') { |
|
| 170 | - $spip_trouve = true; |
|
| 171 | - } |
|
| 172 | - } |
|
| 173 | - } |
|
| 174 | - if ($compat_spip and !$spip_trouve) { |
|
| 175 | - $necessite[] = ['id' => 'spip', 'version' => $compat_spip]; |
|
| 176 | - } |
|
| 177 | - $arbre['necessite'] = $necessite; |
|
| 178 | - $utilise = []; |
|
| 179 | - if (spip_xml_match_nodes(',^utilise,', $arbre, $uses)) { |
|
| 180 | - foreach (array_keys($uses) as $tag) { |
|
| 181 | - [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 182 | - if (!isset($att['id'])) { |
|
| 183 | - if (!$silence) { |
|
| 184 | - $arbre['erreur'][] = _T( |
|
| 185 | - 'erreur_plugin_attribut_balise_manquant', |
|
| 186 | - ['attribut' => 'id', 'balise' => $att] |
|
| 187 | - ); |
|
| 188 | - } |
|
| 189 | - } else { |
|
| 190 | - $utilise[] = $att; |
|
| 191 | - } |
|
| 192 | - } |
|
| 193 | - } |
|
| 194 | - $arbre['utilise'] = $utilise; |
|
| 195 | - $procure = []; |
|
| 196 | - if (spip_xml_match_nodes(',^procure,', $arbre, $uses)) { |
|
| 197 | - foreach (array_keys($uses) as $tag) { |
|
| 198 | - [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 199 | - $procure[] = $att; |
|
| 200 | - } |
|
| 201 | - } |
|
| 202 | - $arbre['procure'] = $procure; |
|
| 203 | - $path = []; |
|
| 204 | - if (spip_xml_match_nodes(',^chemin,', $arbre, $paths)) { |
|
| 205 | - foreach (array_keys($paths) as $tag) { |
|
| 206 | - [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 207 | - $att['path'] = $att['dir']; // ancienne syntaxe |
|
| 208 | - $path[] = $att; |
|
| 209 | - } |
|
| 210 | - } else { |
|
| 211 | - $path = [['dir' => '']]; |
|
| 212 | - } // initialiser par defaut |
|
| 213 | - $arbre['path'] = $path; |
|
| 214 | - // exposer les noisettes |
|
| 215 | - if (isset($arbre['noisette'])) { |
|
| 216 | - foreach ($arbre['noisette'] as $k => $nut) { |
|
| 217 | - $nut = preg_replace(',[.]html$,uims', '', trim($nut)); |
|
| 218 | - $arbre['noisette'][$k] = $nut; |
|
| 219 | - if (!@is_readable($dir_plugins . "$plug/$nut.html")) { |
|
| 220 | - if (!$silence) { |
|
| 221 | - $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $nut"; |
|
| 222 | - } |
|
| 223 | - } |
|
| 224 | - } |
|
| 225 | - } |
|
| 226 | - $traduire = []; |
|
| 227 | - if (spip_xml_match_nodes(',^traduire,', $arbre, $trads)) { |
|
| 228 | - foreach (array_keys($trads) as $tag) { |
|
| 229 | - [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 230 | - $traduire[] = $att; |
|
| 231 | - } |
|
| 232 | - } |
|
| 233 | - $arbre['traduire'] = $traduire; |
|
| 234 | - } |
|
| 126 | + $extraire_pipelines = charger_fonction('extraire_pipelines', 'plugins'); |
|
| 127 | + $arbre['pipeline'] = $extraire_pipelines($arbre); |
|
| 128 | + foreach ($arbre['pipeline'] as $pipe) { |
|
| 129 | + if (!isset($pipe['nom'])) { |
|
| 130 | + if (!$silence) { |
|
| 131 | + $arbre['erreur'][] = _T('erreur_plugin_nom_pipeline_non_defini'); |
|
| 132 | + } |
|
| 133 | + } |
|
| 134 | + if (isset($pipe['action'])) { |
|
| 135 | + $action = $pipe['action']; |
|
| 136 | + } else { |
|
| 137 | + $action = $pipe['nom']; |
|
| 138 | + } |
|
| 139 | + // verif que la methode a un nom autorise |
|
| 140 | + if (in_array(strtolower($action), $liste_methodes_reservees)) { |
|
| 141 | + if (!$silence) { |
|
| 142 | + $arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit') . " : $action"; |
|
| 143 | + } |
|
| 144 | + } |
|
| 145 | + if (isset($pipe['inclure'])) { |
|
| 146 | + $inclure = $dir_plugins . "$plug/" . $pipe['inclure']; |
|
| 147 | + if (!@is_readable($inclure)) { |
|
| 148 | + if (!$silence) { |
|
| 149 | + $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $inclure"; |
|
| 150 | + } |
|
| 151 | + } |
|
| 152 | + } |
|
| 153 | + } |
|
| 154 | + $necessite = []; |
|
| 155 | + $spip_trouve = false; |
|
| 156 | + if (spip_xml_match_nodes(',^necessite,', $arbre, $needs)) { |
|
| 157 | + foreach (array_keys($needs) as $tag) { |
|
| 158 | + [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 159 | + if (!isset($att['id'])) { |
|
| 160 | + if (!$silence) { |
|
| 161 | + $arbre['erreur'][] = _T( |
|
| 162 | + 'erreur_plugin_attribut_balise_manquant', |
|
| 163 | + ['attribut' => 'id', 'balise' => $att] |
|
| 164 | + ); |
|
| 165 | + } |
|
| 166 | + } else { |
|
| 167 | + $necessite[] = $att; |
|
| 168 | + } |
|
| 169 | + if (strtolower($att['id']) == 'spip') { |
|
| 170 | + $spip_trouve = true; |
|
| 171 | + } |
|
| 172 | + } |
|
| 173 | + } |
|
| 174 | + if ($compat_spip and !$spip_trouve) { |
|
| 175 | + $necessite[] = ['id' => 'spip', 'version' => $compat_spip]; |
|
| 176 | + } |
|
| 177 | + $arbre['necessite'] = $necessite; |
|
| 178 | + $utilise = []; |
|
| 179 | + if (spip_xml_match_nodes(',^utilise,', $arbre, $uses)) { |
|
| 180 | + foreach (array_keys($uses) as $tag) { |
|
| 181 | + [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 182 | + if (!isset($att['id'])) { |
|
| 183 | + if (!$silence) { |
|
| 184 | + $arbre['erreur'][] = _T( |
|
| 185 | + 'erreur_plugin_attribut_balise_manquant', |
|
| 186 | + ['attribut' => 'id', 'balise' => $att] |
|
| 187 | + ); |
|
| 188 | + } |
|
| 189 | + } else { |
|
| 190 | + $utilise[] = $att; |
|
| 191 | + } |
|
| 192 | + } |
|
| 193 | + } |
|
| 194 | + $arbre['utilise'] = $utilise; |
|
| 195 | + $procure = []; |
|
| 196 | + if (spip_xml_match_nodes(',^procure,', $arbre, $uses)) { |
|
| 197 | + foreach (array_keys($uses) as $tag) { |
|
| 198 | + [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 199 | + $procure[] = $att; |
|
| 200 | + } |
|
| 201 | + } |
|
| 202 | + $arbre['procure'] = $procure; |
|
| 203 | + $path = []; |
|
| 204 | + if (spip_xml_match_nodes(',^chemin,', $arbre, $paths)) { |
|
| 205 | + foreach (array_keys($paths) as $tag) { |
|
| 206 | + [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 207 | + $att['path'] = $att['dir']; // ancienne syntaxe |
|
| 208 | + $path[] = $att; |
|
| 209 | + } |
|
| 210 | + } else { |
|
| 211 | + $path = [['dir' => '']]; |
|
| 212 | + } // initialiser par defaut |
|
| 213 | + $arbre['path'] = $path; |
|
| 214 | + // exposer les noisettes |
|
| 215 | + if (isset($arbre['noisette'])) { |
|
| 216 | + foreach ($arbre['noisette'] as $k => $nut) { |
|
| 217 | + $nut = preg_replace(',[.]html$,uims', '', trim($nut)); |
|
| 218 | + $arbre['noisette'][$k] = $nut; |
|
| 219 | + if (!@is_readable($dir_plugins . "$plug/$nut.html")) { |
|
| 220 | + if (!$silence) { |
|
| 221 | + $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $nut"; |
|
| 222 | + } |
|
| 223 | + } |
|
| 224 | + } |
|
| 225 | + } |
|
| 226 | + $traduire = []; |
|
| 227 | + if (spip_xml_match_nodes(',^traduire,', $arbre, $trads)) { |
|
| 228 | + foreach (array_keys($trads) as $tag) { |
|
| 229 | + [$tag, $att] = spip_xml_decompose_tag($tag); |
|
| 230 | + $traduire[] = $att; |
|
| 231 | + } |
|
| 232 | + } |
|
| 233 | + $arbre['traduire'] = $traduire; |
|
| 234 | + } |
|
| 235 | 235 | } |
@@ -60,10 +60,10 @@ discard block |
||
| 60 | 60 | $id = substr(md5($plug), 0, 16); |
| 61 | 61 | $res .= $ligne_plug( |
| 62 | 62 | $url_page, |
| 63 | - str_replace(_DIR_PLUGINS, '', _DIR_RACINE . $plug), |
|
| 63 | + str_replace(_DIR_PLUGINS, '', _DIR_RACINE.$plug), |
|
| 64 | 64 | $actif, |
| 65 | 65 | 'menu-entree' |
| 66 | - ) . "\n"; |
|
| 66 | + )."\n"; |
|
| 67 | 67 | unset($liste_plugins[$key]); |
| 68 | 68 | } |
| 69 | 69 | } |
@@ -105,12 +105,12 @@ discard block |
||
| 105 | 105 | } |
| 106 | 106 | $chemin = ''; |
| 107 | 107 | if (count($tcom)) { |
| 108 | - $chemin .= implode('/', $tcom) . '/'; |
|
| 108 | + $chemin .= implode('/', $tcom).'/'; |
|
| 109 | 109 | } |
| 110 | 110 | // ouvrir les repertoires jusqu'a la cible |
| 111 | 111 | while ($open = array_shift($ttarg)) { |
| 112 | - $visible = @isset($deplie[$chemin . $open]); |
|
| 113 | - $chemin .= $open . '/'; |
|
| 112 | + $visible = @isset($deplie[$chemin.$open]); |
|
| 113 | + $chemin .= $open.'/'; |
|
| 114 | 114 | $output .= '<li>'; |
| 115 | 115 | $output .= bouton_block_depliable($chemin, $visible); |
| 116 | 116 | $output .= debut_block_depliable($visible); |
@@ -11,110 +11,110 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | function plugins_afficher_repertoires_dist($url_page, $liste_plugins, $liste_plugins_actifs) { |
| 18 | - $ligne_plug = charger_fonction('afficher_plugin', 'plugins'); |
|
| 19 | - $racine = basename(_DIR_PLUGINS); |
|
| 20 | - $init_dir = $current_dir = ''; |
|
| 21 | - // liste des repertoires deplies : construit en remontant l'arbo de chaque plugin actif |
|
| 22 | - // des qu'un path est deja note deplie on s'arrete |
|
| 23 | - $deplie = [$racine => true]; |
|
| 24 | - $fast_liste_plugins_actifs = []; |
|
| 25 | - foreach ($liste_plugins_actifs as $key => $plug) { |
|
| 26 | - $chemin_plug = chemin_plug($racine, $plug); |
|
| 27 | - $fast_liste_plugins_actifs[$chemin_plug] = true; |
|
| 28 | - $dir = dirname($chemin_plug); |
|
| 29 | - $maxiter = 100; |
|
| 30 | - while (strlen($dir) && !isset($deplie[$dir]) && $dir != $racine && $maxiter-- > 0) { |
|
| 31 | - $deplie[$dir] = true; |
|
| 32 | - $dir = dirname($dir); |
|
| 33 | - } |
|
| 34 | - } |
|
| 18 | + $ligne_plug = charger_fonction('afficher_plugin', 'plugins'); |
|
| 19 | + $racine = basename(_DIR_PLUGINS); |
|
| 20 | + $init_dir = $current_dir = ''; |
|
| 21 | + // liste des repertoires deplies : construit en remontant l'arbo de chaque plugin actif |
|
| 22 | + // des qu'un path est deja note deplie on s'arrete |
|
| 23 | + $deplie = [$racine => true]; |
|
| 24 | + $fast_liste_plugins_actifs = []; |
|
| 25 | + foreach ($liste_plugins_actifs as $key => $plug) { |
|
| 26 | + $chemin_plug = chemin_plug($racine, $plug); |
|
| 27 | + $fast_liste_plugins_actifs[$chemin_plug] = true; |
|
| 28 | + $dir = dirname($chemin_plug); |
|
| 29 | + $maxiter = 100; |
|
| 30 | + while (strlen($dir) && !isset($deplie[$dir]) && $dir != $racine && $maxiter-- > 0) { |
|
| 31 | + $deplie[$dir] = true; |
|
| 32 | + $dir = dirname($dir); |
|
| 33 | + } |
|
| 34 | + } |
|
| 35 | 35 | |
| 36 | - // index repertoires --> plugin |
|
| 37 | - $dir_index = []; |
|
| 38 | - foreach ($liste_plugins as $key => $plug) { |
|
| 39 | - $liste_plugins[$key] = chemin_plug($racine, $plug); |
|
| 40 | - $dir_index[dirname($liste_plugins[$key])][] = $key; |
|
| 41 | - } |
|
| 36 | + // index repertoires --> plugin |
|
| 37 | + $dir_index = []; |
|
| 38 | + foreach ($liste_plugins as $key => $plug) { |
|
| 39 | + $liste_plugins[$key] = chemin_plug($racine, $plug); |
|
| 40 | + $dir_index[dirname($liste_plugins[$key])][] = $key; |
|
| 41 | + } |
|
| 42 | 42 | |
| 43 | - $visible = @isset($deplie[$current_dir]); |
|
| 44 | - $maxiter = 1000; |
|
| 43 | + $visible = @isset($deplie[$current_dir]); |
|
| 44 | + $maxiter = 1000; |
|
| 45 | 45 | |
| 46 | - $res = ''; |
|
| 47 | - while ((is_countable($liste_plugins) ? count($liste_plugins) : 0) && $maxiter--) { |
|
| 48 | - // le rep suivant |
|
| 49 | - $dir = dirname(reset($liste_plugins)); |
|
| 50 | - if ($dir != $current_dir) { |
|
| 51 | - $res .= tree_open_close_dir($current_dir, $dir, $deplie); |
|
| 52 | - } |
|
| 46 | + $res = ''; |
|
| 47 | + while ((is_countable($liste_plugins) ? count($liste_plugins) : 0) && $maxiter--) { |
|
| 48 | + // le rep suivant |
|
| 49 | + $dir = dirname(reset($liste_plugins)); |
|
| 50 | + if ($dir != $current_dir) { |
|
| 51 | + $res .= tree_open_close_dir($current_dir, $dir, $deplie); |
|
| 52 | + } |
|
| 53 | 53 | |
| 54 | - // d'abord tous les plugins du rep courant |
|
| 55 | - if (isset($dir_index[$current_dir])) { |
|
| 56 | - foreach ($dir_index[$current_dir] as $key) { |
|
| 57 | - $plug = $liste_plugins[$key]; |
|
| 58 | - $actif = @isset($fast_liste_plugins_actifs[$plug]); |
|
| 59 | - $id = substr(md5($plug), 0, 16); |
|
| 60 | - $res .= $ligne_plug( |
|
| 61 | - $url_page, |
|
| 62 | - str_replace(_DIR_PLUGINS, '', _DIR_RACINE . $plug), |
|
| 63 | - $actif, |
|
| 64 | - 'menu-entree' |
|
| 65 | - ) . "\n"; |
|
| 66 | - unset($liste_plugins[$key]); |
|
| 67 | - } |
|
| 68 | - } |
|
| 69 | - } |
|
| 70 | - $res .= tree_open_close_dir($current_dir, $init_dir, true); |
|
| 54 | + // d'abord tous les plugins du rep courant |
|
| 55 | + if (isset($dir_index[$current_dir])) { |
|
| 56 | + foreach ($dir_index[$current_dir] as $key) { |
|
| 57 | + $plug = $liste_plugins[$key]; |
|
| 58 | + $actif = @isset($fast_liste_plugins_actifs[$plug]); |
|
| 59 | + $id = substr(md5($plug), 0, 16); |
|
| 60 | + $res .= $ligne_plug( |
|
| 61 | + $url_page, |
|
| 62 | + str_replace(_DIR_PLUGINS, '', _DIR_RACINE . $plug), |
|
| 63 | + $actif, |
|
| 64 | + 'menu-entree' |
|
| 65 | + ) . "\n"; |
|
| 66 | + unset($liste_plugins[$key]); |
|
| 67 | + } |
|
| 68 | + } |
|
| 69 | + } |
|
| 70 | + $res .= tree_open_close_dir($current_dir, $init_dir, true); |
|
| 71 | 71 | |
| 72 | - return "<ul class='menu-liste plugins'>" |
|
| 73 | - . $res |
|
| 74 | - . '</ul>'; |
|
| 72 | + return "<ul class='menu-liste plugins'>" |
|
| 73 | + . $res |
|
| 74 | + . '</ul>'; |
|
| 75 | 75 | } |
| 76 | 76 | |
| 77 | 77 | |
| 78 | 78 | // vraiment n'importe quoi la gestion des chemins des plugins |
| 79 | 79 | // une fonction pour aider... |
| 80 | 80 | function chemin_plug($racine, $plug) { |
| 81 | - return preg_replace(',[^/]+/\.\./,', '', "$racine/$plug"); |
|
| 81 | + return preg_replace(',[^/]+/\.\./,', '', "$racine/$plug"); |
|
| 82 | 82 | } |
| 83 | 83 | |
| 84 | 84 | function tree_open_close_dir(&$current, $target, $deplie = []) { |
| 85 | - if ($current == $target) { |
|
| 86 | - return ''; |
|
| 87 | - } |
|
| 88 | - $tcur = explode('/', $current); |
|
| 89 | - $ttarg = explode('/', $target); |
|
| 90 | - $tcom = []; |
|
| 91 | - $output = ''; |
|
| 92 | - // la partie commune |
|
| 93 | - while (reset($tcur) == reset($ttarg)) { |
|
| 94 | - $tcom[] = array_shift($tcur); |
|
| 95 | - array_shift($ttarg); |
|
| 96 | - } |
|
| 97 | - // fermer les repertoires courant jusqu'au point de fork |
|
| 98 | - while ($close = array_pop($tcur)) { |
|
| 99 | - $output .= "</ul>\n"; |
|
| 100 | - $output .= fin_block(); |
|
| 101 | - $output .= "</li>\n"; |
|
| 102 | - } |
|
| 103 | - $chemin = ''; |
|
| 104 | - if (count($tcom)) { |
|
| 105 | - $chemin .= implode('/', $tcom) . '/'; |
|
| 106 | - } |
|
| 107 | - // ouvrir les repertoires jusqu'a la cible |
|
| 108 | - while ($open = array_shift($ttarg)) { |
|
| 109 | - $visible = @isset($deplie[$chemin . $open]); |
|
| 110 | - $chemin .= $open . '/'; |
|
| 111 | - $output .= '<li>'; |
|
| 112 | - $output .= bouton_block_depliable($chemin, $visible); |
|
| 113 | - $output .= debut_block_depliable($visible); |
|
| 85 | + if ($current == $target) { |
|
| 86 | + return ''; |
|
| 87 | + } |
|
| 88 | + $tcur = explode('/', $current); |
|
| 89 | + $ttarg = explode('/', $target); |
|
| 90 | + $tcom = []; |
|
| 91 | + $output = ''; |
|
| 92 | + // la partie commune |
|
| 93 | + while (reset($tcur) == reset($ttarg)) { |
|
| 94 | + $tcom[] = array_shift($tcur); |
|
| 95 | + array_shift($ttarg); |
|
| 96 | + } |
|
| 97 | + // fermer les repertoires courant jusqu'au point de fork |
|
| 98 | + while ($close = array_pop($tcur)) { |
|
| 99 | + $output .= "</ul>\n"; |
|
| 100 | + $output .= fin_block(); |
|
| 101 | + $output .= "</li>\n"; |
|
| 102 | + } |
|
| 103 | + $chemin = ''; |
|
| 104 | + if (count($tcom)) { |
|
| 105 | + $chemin .= implode('/', $tcom) . '/'; |
|
| 106 | + } |
|
| 107 | + // ouvrir les repertoires jusqu'a la cible |
|
| 108 | + while ($open = array_shift($ttarg)) { |
|
| 109 | + $visible = @isset($deplie[$chemin . $open]); |
|
| 110 | + $chemin .= $open . '/'; |
|
| 111 | + $output .= '<li>'; |
|
| 112 | + $output .= bouton_block_depliable($chemin, $visible); |
|
| 113 | + $output .= debut_block_depliable($visible); |
|
| 114 | 114 | |
| 115 | - $output .= "<ul>\n"; |
|
| 116 | - } |
|
| 117 | - $current = $target; |
|
| 115 | + $output .= "<ul>\n"; |
|
| 116 | + } |
|
| 117 | + $current = $target; |
|
| 118 | 118 | |
| 119 | - return $output; |
|
| 119 | + return $output; |
|
| 120 | 120 | } |
@@ -25,7 +25,7 @@ discard block |
||
| 25 | 25 | * @return array |
| 26 | 26 | */ |
| 27 | 27 | function plugins_infos_paquet($desc, $plug = '', $dir_plugins = _DIR_PLUGINS) { |
| 28 | - static $process = [ // tableau constant |
|
| 28 | + static $process = [// tableau constant |
|
| 29 | 29 | 'debut' => 'paquet_debutElement', |
| 30 | 30 | 'fin' => 'paquet_finElement', |
| 31 | 31 | 'text' => 'paquet_textElement' |
@@ -47,8 +47,8 @@ discard block |
||
| 47 | 47 | unset($tree['']); |
| 48 | 48 | } |
| 49 | 49 | |
| 50 | - $tree['slogan'] = $tree['prefix'] . '_slogan'; |
|
| 51 | - $tree['description'] = $tree['prefix'] . '_description'; |
|
| 50 | + $tree['slogan'] = $tree['prefix'].'_slogan'; |
|
| 51 | + $tree['description'] = $tree['prefix'].'_description'; |
|
| 52 | 52 | paquet_readable_files($tree, "$dir_plugins$plug/"); |
| 53 | 53 | if (!$tree['chemin']) { |
| 54 | 54 | $tree['chemin'] = []; |
@@ -80,7 +80,7 @@ discard block |
||
| 80 | 80 | // Prendre les messages d'erreur sans les numeros de lignes |
| 81 | 81 | $msg = array_column($vxml->err, 0); |
| 82 | 82 | $t = _T('plugins_erreur', ['plugins' => $plug]); |
| 83 | - array_unshift($msg, $t . " <ul class='erreur_xml'><li>" . reset($msg) . '</li></ul>'); |
|
| 83 | + array_unshift($msg, $t." <ul class='erreur_xml'><li>".reset($msg).'</li></ul>'); |
|
| 84 | 84 | |
| 85 | 85 | return ['erreur' => $msg]; |
| 86 | 86 | } |
@@ -96,9 +96,9 @@ discard block |
||
| 96 | 96 | function paquet_readable_files(&$tree, $dir) { |
| 97 | 97 | $prefix = strtolower($tree['prefix']); |
| 98 | 98 | |
| 99 | - $tree['options'] = (is_readable($dir . $f = ($prefix . '_options.php'))) ? [$f] : []; |
|
| 100 | - $tree['fonctions'] = (is_readable($dir . $f = ($prefix . '_fonctions.php'))) ? [$f] : []; |
|
| 101 | - $tree['install'] = (is_readable($dir . $f = ($prefix . '_administrations.php'))) ? [$f] : []; |
|
| 99 | + $tree['options'] = (is_readable($dir.$f = ($prefix.'_options.php'))) ? [$f] : []; |
|
| 100 | + $tree['fonctions'] = (is_readable($dir.$f = ($prefix.'_fonctions.php'))) ? [$f] : []; |
|
| 101 | + $tree['install'] = (is_readable($dir.$f = ($prefix.'_administrations.php'))) ? [$f] : []; |
|
| 102 | 102 | } |
| 103 | 103 | |
| 104 | 104 | /** |
@@ -186,7 +186,7 @@ discard block |
||
| 186 | 186 | $texte = trim($phraseur->versions[$n]['']); |
| 187 | 187 | $phraseur->versions[$n][''] = ''; |
| 188 | 188 | |
| 189 | - $f = 'info_paquet_' . $name; |
|
| 189 | + $f = 'info_paquet_'.$name; |
|
| 190 | 190 | if (function_exists($f)) { |
| 191 | 191 | $f($phraseur, $attrs, $texte); |
| 192 | 192 | } elseif (!$attrs) { |
@@ -11,7 +11,7 @@ discard block |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | /** |
@@ -25,64 +25,64 @@ discard block |
||
| 25 | 25 | * @return array |
| 26 | 26 | */ |
| 27 | 27 | function plugins_infos_paquet($desc, $plug = '', $dir_plugins = _DIR_PLUGINS) { |
| 28 | - static $process = [ // tableau constant |
|
| 29 | - 'debut' => 'paquet_debutElement', |
|
| 30 | - 'fin' => 'paquet_finElement', |
|
| 31 | - 'text' => 'paquet_textElement' |
|
| 32 | - ]; |
|
| 33 | - |
|
| 34 | - $valider_xml = charger_fonction('valider', 'xml'); |
|
| 35 | - $vxml = $valider_xml($desc, false, $process, 'paquet.dtd', 'utf-8'); |
|
| 36 | - if (!$vxml->err) { |
|
| 37 | - // On veut toutes les variantes selon la version de SPIP |
|
| 38 | - if (!$plug) { |
|
| 39 | - return $vxml->versions; |
|
| 40 | - } |
|
| 41 | - |
|
| 42 | - // compatibilite avec l'existant: |
|
| 43 | - $tree = $vxml->versions['0']; |
|
| 44 | - |
|
| 45 | - // l'arbre renvoie parfois un tag vide... etrange. Pas la peine de garder ca. |
|
| 46 | - if (isset($tree['']) and !strlen($tree[''])) { |
|
| 47 | - unset($tree['']); |
|
| 48 | - } |
|
| 49 | - |
|
| 50 | - $tree['slogan'] = $tree['prefix'] . '_slogan'; |
|
| 51 | - $tree['description'] = $tree['prefix'] . '_description'; |
|
| 52 | - paquet_readable_files($tree, "$dir_plugins$plug/"); |
|
| 53 | - if (!$tree['chemin']) { |
|
| 54 | - $tree['chemin'] = []; |
|
| 55 | - } |
|
| 56 | - |
|
| 57 | - // On verifie qu'il existe des balises spip qu'il faudrait rajouter dans |
|
| 58 | - // la structure d'infos du paquet en fonction de la version spip courante |
|
| 59 | - if ((is_countable($vxml->versions) ? count($vxml->versions) : 0) > 1) { |
|
| 60 | - $vspip = $GLOBALS['spip_version_branche']; |
|
| 61 | - foreach ($vxml->versions as $_compatibilite => $_version) { |
|
| 62 | - if ( |
|
| 63 | - ($_version['balise'] == 'spip') |
|
| 64 | - and (plugin_version_compatible($_compatibilite, $vspip, 'spip')) |
|
| 65 | - ) { |
|
| 66 | - // on merge les sous-balises de la balise spip compatible avec celles de la |
|
| 67 | - // balise paquet |
|
| 68 | - foreach ($_version as $_index => $_balise) { |
|
| 69 | - if ($_index and $_index != 'balise') { |
|
| 70 | - $tree[$_index] = array_merge($tree[$_index], $_balise); |
|
| 71 | - } |
|
| 72 | - } |
|
| 73 | - } |
|
| 74 | - } |
|
| 75 | - } |
|
| 76 | - |
|
| 77 | - return $tree; |
|
| 78 | - } |
|
| 79 | - |
|
| 80 | - // Prendre les messages d'erreur sans les numeros de lignes |
|
| 81 | - $msg = array_column($vxml->err, 0); |
|
| 82 | - $t = _T('plugins_erreur', ['plugins' => $plug]); |
|
| 83 | - array_unshift($msg, $t . " <ul class='erreur_xml'><li>" . reset($msg) . '</li></ul>'); |
|
| 84 | - |
|
| 85 | - return ['erreur' => $msg]; |
|
| 28 | + static $process = [ // tableau constant |
|
| 29 | + 'debut' => 'paquet_debutElement', |
|
| 30 | + 'fin' => 'paquet_finElement', |
|
| 31 | + 'text' => 'paquet_textElement' |
|
| 32 | + ]; |
|
| 33 | + |
|
| 34 | + $valider_xml = charger_fonction('valider', 'xml'); |
|
| 35 | + $vxml = $valider_xml($desc, false, $process, 'paquet.dtd', 'utf-8'); |
|
| 36 | + if (!$vxml->err) { |
|
| 37 | + // On veut toutes les variantes selon la version de SPIP |
|
| 38 | + if (!$plug) { |
|
| 39 | + return $vxml->versions; |
|
| 40 | + } |
|
| 41 | + |
|
| 42 | + // compatibilite avec l'existant: |
|
| 43 | + $tree = $vxml->versions['0']; |
|
| 44 | + |
|
| 45 | + // l'arbre renvoie parfois un tag vide... etrange. Pas la peine de garder ca. |
|
| 46 | + if (isset($tree['']) and !strlen($tree[''])) { |
|
| 47 | + unset($tree['']); |
|
| 48 | + } |
|
| 49 | + |
|
| 50 | + $tree['slogan'] = $tree['prefix'] . '_slogan'; |
|
| 51 | + $tree['description'] = $tree['prefix'] . '_description'; |
|
| 52 | + paquet_readable_files($tree, "$dir_plugins$plug/"); |
|
| 53 | + if (!$tree['chemin']) { |
|
| 54 | + $tree['chemin'] = []; |
|
| 55 | + } |
|
| 56 | + |
|
| 57 | + // On verifie qu'il existe des balises spip qu'il faudrait rajouter dans |
|
| 58 | + // la structure d'infos du paquet en fonction de la version spip courante |
|
| 59 | + if ((is_countable($vxml->versions) ? count($vxml->versions) : 0) > 1) { |
|
| 60 | + $vspip = $GLOBALS['spip_version_branche']; |
|
| 61 | + foreach ($vxml->versions as $_compatibilite => $_version) { |
|
| 62 | + if ( |
|
| 63 | + ($_version['balise'] == 'spip') |
|
| 64 | + and (plugin_version_compatible($_compatibilite, $vspip, 'spip')) |
|
| 65 | + ) { |
|
| 66 | + // on merge les sous-balises de la balise spip compatible avec celles de la |
|
| 67 | + // balise paquet |
|
| 68 | + foreach ($_version as $_index => $_balise) { |
|
| 69 | + if ($_index and $_index != 'balise') { |
|
| 70 | + $tree[$_index] = array_merge($tree[$_index], $_balise); |
|
| 71 | + } |
|
| 72 | + } |
|
| 73 | + } |
|
| 74 | + } |
|
| 75 | + } |
|
| 76 | + |
|
| 77 | + return $tree; |
|
| 78 | + } |
|
| 79 | + |
|
| 80 | + // Prendre les messages d'erreur sans les numeros de lignes |
|
| 81 | + $msg = array_column($vxml->err, 0); |
|
| 82 | + $t = _T('plugins_erreur', ['plugins' => $plug]); |
|
| 83 | + array_unshift($msg, $t . " <ul class='erreur_xml'><li>" . reset($msg) . '</li></ul>'); |
|
| 84 | + |
|
| 85 | + return ['erreur' => $msg]; |
|
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | /** |
@@ -94,11 +94,11 @@ discard block |
||
| 94 | 94 | * @return void |
| 95 | 95 | */ |
| 96 | 96 | function paquet_readable_files(&$tree, $dir) { |
| 97 | - $prefix = strtolower($tree['prefix']); |
|
| 97 | + $prefix = strtolower($tree['prefix']); |
|
| 98 | 98 | |
| 99 | - $tree['options'] = (is_readable($dir . $f = ($prefix . '_options.php'))) ? [$f] : []; |
|
| 100 | - $tree['fonctions'] = (is_readable($dir . $f = ($prefix . '_fonctions.php'))) ? [$f] : []; |
|
| 101 | - $tree['install'] = (is_readable($dir . $f = ($prefix . '_administrations.php'))) ? [$f] : []; |
|
| 99 | + $tree['options'] = (is_readable($dir . $f = ($prefix . '_options.php'))) ? [$f] : []; |
|
| 100 | + $tree['fonctions'] = (is_readable($dir . $f = ($prefix . '_fonctions.php'))) ? [$f] : []; |
|
| 101 | + $tree['install'] = (is_readable($dir . $f = ($prefix . '_administrations.php'))) ? [$f] : []; |
|
| 102 | 102 | } |
| 103 | 103 | |
| 104 | 104 | /** |
@@ -115,35 +115,35 @@ discard block |
||
| 115 | 115 | * @param array $attrs |
| 116 | 116 | */ |
| 117 | 117 | function paquet_debutElement($phraseur, $name, $attrs) { |
| 118 | - xml_debutElement($phraseur, $name, $attrs); |
|
| 119 | - if ($phraseur->err) { |
|
| 120 | - return; |
|
| 121 | - } |
|
| 122 | - if (($name == 'paquet') or ($name == 'spip')) { |
|
| 123 | - if ($name == 'spip') { |
|
| 124 | - $n = $attrs['compatibilite']; |
|
| 125 | - $attrs = []; |
|
| 126 | - } else { |
|
| 127 | - $n = '0'; |
|
| 128 | - $phraseur->contenu['paquet'] = $attrs; |
|
| 129 | - $attrs['menu'] = []; |
|
| 130 | - $attrs['chemin'] = []; |
|
| 131 | - $attrs['necessite'] = []; |
|
| 132 | - $attrs['lib'] = []; |
|
| 133 | - $attrs['onglet'] = []; |
|
| 134 | - $attrs['procure'] = []; |
|
| 135 | - $attrs['pipeline'] = []; |
|
| 136 | - $attrs['utilise'] = []; |
|
| 137 | - $attrs['style'] = []; |
|
| 138 | - $attrs['script'] = []; |
|
| 139 | - $attrs['genie'] = []; |
|
| 140 | - } |
|
| 141 | - $phraseur->contenu['compatible'] = $n; |
|
| 142 | - $phraseur->versions[$phraseur->contenu['compatible']] = $attrs; |
|
| 143 | - } else { |
|
| 144 | - $phraseur->versions[$phraseur->contenu['compatible']][$name][0] = $attrs; |
|
| 145 | - } |
|
| 146 | - $phraseur->versions[$phraseur->contenu['compatible']][''] = ''; |
|
| 118 | + xml_debutElement($phraseur, $name, $attrs); |
|
| 119 | + if ($phraseur->err) { |
|
| 120 | + return; |
|
| 121 | + } |
|
| 122 | + if (($name == 'paquet') or ($name == 'spip')) { |
|
| 123 | + if ($name == 'spip') { |
|
| 124 | + $n = $attrs['compatibilite']; |
|
| 125 | + $attrs = []; |
|
| 126 | + } else { |
|
| 127 | + $n = '0'; |
|
| 128 | + $phraseur->contenu['paquet'] = $attrs; |
|
| 129 | + $attrs['menu'] = []; |
|
| 130 | + $attrs['chemin'] = []; |
|
| 131 | + $attrs['necessite'] = []; |
|
| 132 | + $attrs['lib'] = []; |
|
| 133 | + $attrs['onglet'] = []; |
|
| 134 | + $attrs['procure'] = []; |
|
| 135 | + $attrs['pipeline'] = []; |
|
| 136 | + $attrs['utilise'] = []; |
|
| 137 | + $attrs['style'] = []; |
|
| 138 | + $attrs['script'] = []; |
|
| 139 | + $attrs['genie'] = []; |
|
| 140 | + } |
|
| 141 | + $phraseur->contenu['compatible'] = $n; |
|
| 142 | + $phraseur->versions[$phraseur->contenu['compatible']] = $attrs; |
|
| 143 | + } else { |
|
| 144 | + $phraseur->versions[$phraseur->contenu['compatible']][$name][0] = $attrs; |
|
| 145 | + } |
|
| 146 | + $phraseur->versions[$phraseur->contenu['compatible']][''] = ''; |
|
| 147 | 147 | } |
| 148 | 148 | |
| 149 | 149 | /** |
@@ -155,11 +155,11 @@ discard block |
||
| 155 | 155 | * @param string $data |
| 156 | 156 | */ |
| 157 | 157 | function paquet_textElement($phraseur, $data) { |
| 158 | - xml_textElement($phraseur, $data); |
|
| 159 | - if ($phraseur->err or !(trim($data))) { |
|
| 160 | - return; |
|
| 161 | - } |
|
| 162 | - $phraseur->versions[$phraseur->contenu['compatible']][''] .= $data; |
|
| 158 | + xml_textElement($phraseur, $data); |
|
| 159 | + if ($phraseur->err or !(trim($data))) { |
|
| 160 | + return; |
|
| 161 | + } |
|
| 162 | + $phraseur->versions[$phraseur->contenu['compatible']][''] .= $data; |
|
| 163 | 163 | } |
| 164 | 164 | |
| 165 | 165 | /** |
@@ -171,32 +171,32 @@ discard block |
||
| 171 | 171 | * @param string $name |
| 172 | 172 | */ |
| 173 | 173 | function paquet_finElement($phraseur, $name) { |
| 174 | - if ($phraseur->err) { |
|
| 175 | - return; |
|
| 176 | - } |
|
| 177 | - $n = $phraseur->contenu['compatible']; |
|
| 178 | - |
|
| 179 | - if (isset($phraseur->versions[$n][$name][0]) and is_array($phraseur->versions[$n][$name][0])) { |
|
| 180 | - $attrs = $phraseur->versions[$n][$name][0]; |
|
| 181 | - unset($phraseur->versions[$n][$name][0]); |
|
| 182 | - } else { |
|
| 183 | - $attrs = []; |
|
| 184 | - } |
|
| 185 | - |
|
| 186 | - $texte = trim($phraseur->versions[$n]['']); |
|
| 187 | - $phraseur->versions[$n][''] = ''; |
|
| 188 | - |
|
| 189 | - $f = 'info_paquet_' . $name; |
|
| 190 | - if (function_exists($f)) { |
|
| 191 | - $f($phraseur, $attrs, $texte); |
|
| 192 | - } elseif (!$attrs) { |
|
| 193 | - $phraseur->versions[$n][$name] = $texte; |
|
| 194 | - } else { |
|
| 195 | - // Traitement generique. Si $attrs['nom'] n'existe pas, ce n'est pas normal ici |
|
| 196 | - $phraseur->versions[$n][$name][$attrs['nom']] = $attrs; |
|
| 197 | - # echo("<br>pour $name $n " . $attrs['nom']); var_dump($phraseur->versions[$n]); |
|
| 198 | - } |
|
| 199 | - xml_finElement($phraseur, $name, $attrs); |
|
| 174 | + if ($phraseur->err) { |
|
| 175 | + return; |
|
| 176 | + } |
|
| 177 | + $n = $phraseur->contenu['compatible']; |
|
| 178 | + |
|
| 179 | + if (isset($phraseur->versions[$n][$name][0]) and is_array($phraseur->versions[$n][$name][0])) { |
|
| 180 | + $attrs = $phraseur->versions[$n][$name][0]; |
|
| 181 | + unset($phraseur->versions[$n][$name][0]); |
|
| 182 | + } else { |
|
| 183 | + $attrs = []; |
|
| 184 | + } |
|
| 185 | + |
|
| 186 | + $texte = trim($phraseur->versions[$n]['']); |
|
| 187 | + $phraseur->versions[$n][''] = ''; |
|
| 188 | + |
|
| 189 | + $f = 'info_paquet_' . $name; |
|
| 190 | + if (function_exists($f)) { |
|
| 191 | + $f($phraseur, $attrs, $texte); |
|
| 192 | + } elseif (!$attrs) { |
|
| 193 | + $phraseur->versions[$n][$name] = $texte; |
|
| 194 | + } else { |
|
| 195 | + // Traitement generique. Si $attrs['nom'] n'existe pas, ce n'est pas normal ici |
|
| 196 | + $phraseur->versions[$n][$name][$attrs['nom']] = $attrs; |
|
| 197 | + # echo("<br>pour $name $n " . $attrs['nom']); var_dump($phraseur->versions[$n]); |
|
| 198 | + } |
|
| 199 | + xml_finElement($phraseur, $name, $attrs); |
|
| 200 | 200 | } |
| 201 | 201 | |
| 202 | 202 | /** |
@@ -208,13 +208,13 @@ discard block |
||
| 208 | 208 | * @param string $texte |
| 209 | 209 | */ |
| 210 | 210 | function info_paquet_licence($phraseur, $attrs, $texte) { |
| 211 | - if (isset($attrs['lien'])) { |
|
| 212 | - $lien = $attrs['lien']; |
|
| 213 | - } else { |
|
| 214 | - $lien = ''; |
|
| 215 | - } |
|
| 216 | - $n = $phraseur->contenu['compatible']; |
|
| 217 | - $phraseur->versions[$n]['licence'][] = ['nom' => $texte, 'url' => $lien]; |
|
| 211 | + if (isset($attrs['lien'])) { |
|
| 212 | + $lien = $attrs['lien']; |
|
| 213 | + } else { |
|
| 214 | + $lien = ''; |
|
| 215 | + } |
|
| 216 | + $n = $phraseur->contenu['compatible']; |
|
| 217 | + $phraseur->versions[$n]['licence'][] = ['nom' => $texte, 'url' => $lien]; |
|
| 218 | 218 | } |
| 219 | 219 | |
| 220 | 220 | /** |
@@ -226,14 +226,14 @@ discard block |
||
| 226 | 226 | * @param string $texte |
| 227 | 227 | */ |
| 228 | 228 | function info_paquet_chemin($phraseur, $attrs, $texte) { |
| 229 | - $n = $phraseur->contenu['compatible']; |
|
| 230 | - if (isset($attrs['path'])) { |
|
| 231 | - if (isset($attrs['type'])) { |
|
| 232 | - $phraseur->versions[$n]['chemin'][] = ['path' => $attrs['path'], 'type' => $attrs['type']]; |
|
| 233 | - } else { |
|
| 234 | - $phraseur->versions[$n]['chemin'][] = ['path' => $attrs['path']]; |
|
| 235 | - } |
|
| 236 | - } |
|
| 229 | + $n = $phraseur->contenu['compatible']; |
|
| 230 | + if (isset($attrs['path'])) { |
|
| 231 | + if (isset($attrs['type'])) { |
|
| 232 | + $phraseur->versions[$n]['chemin'][] = ['path' => $attrs['path'], 'type' => $attrs['type']]; |
|
| 233 | + } else { |
|
| 234 | + $phraseur->versions[$n]['chemin'][] = ['path' => $attrs['path']]; |
|
| 235 | + } |
|
| 236 | + } |
|
| 237 | 237 | } |
| 238 | 238 | |
| 239 | 239 | |
@@ -247,24 +247,24 @@ discard block |
||
| 247 | 247 | * @param string $texte |
| 248 | 248 | */ |
| 249 | 249 | function info_paquet_auteur($phraseur, $attrs, $texte) { |
| 250 | - # echo 'auteur ', $texte; var_dump($attrs); |
|
| 251 | - if (isset($attrs['mail'])) { |
|
| 252 | - if (strpos($attrs['mail'], '@')) { |
|
| 253 | - $attrs['mail'] = str_replace('@', ' AT ', $attrs['mail']); |
|
| 254 | - } |
|
| 255 | - $mail = $attrs['mail']; |
|
| 256 | - } else { |
|
| 257 | - $mail = ''; |
|
| 258 | - } |
|
| 259 | - |
|
| 260 | - if (isset($attrs['lien'])) { |
|
| 261 | - $lien = $attrs['lien']; |
|
| 262 | - } else { |
|
| 263 | - $lien = ''; |
|
| 264 | - } |
|
| 265 | - |
|
| 266 | - $n = $phraseur->contenu['compatible']; |
|
| 267 | - $phraseur->versions[$n]['auteur'][] = ['nom' => $texte, 'url' => $lien, 'mail' => $mail]; |
|
| 250 | + # echo 'auteur ', $texte; var_dump($attrs); |
|
| 251 | + if (isset($attrs['mail'])) { |
|
| 252 | + if (strpos($attrs['mail'], '@')) { |
|
| 253 | + $attrs['mail'] = str_replace('@', ' AT ', $attrs['mail']); |
|
| 254 | + } |
|
| 255 | + $mail = $attrs['mail']; |
|
| 256 | + } else { |
|
| 257 | + $mail = ''; |
|
| 258 | + } |
|
| 259 | + |
|
| 260 | + if (isset($attrs['lien'])) { |
|
| 261 | + $lien = $attrs['lien']; |
|
| 262 | + } else { |
|
| 263 | + $lien = ''; |
|
| 264 | + } |
|
| 265 | + |
|
| 266 | + $n = $phraseur->contenu['compatible']; |
|
| 267 | + $phraseur->versions[$n]['auteur'][] = ['nom' => $texte, 'url' => $lien, 'mail' => $mail]; |
|
| 268 | 268 | } |
| 269 | 269 | |
| 270 | 270 | /** |
@@ -277,14 +277,14 @@ discard block |
||
| 277 | 277 | */ |
| 278 | 278 | function info_paquet_credit($phraseur, $attrs, $texte) { |
| 279 | 279 | |
| 280 | - if (isset($attrs['lien'])) { |
|
| 281 | - $lien = $attrs['lien']; |
|
| 282 | - } else { |
|
| 283 | - $lien = ''; |
|
| 284 | - } |
|
| 280 | + if (isset($attrs['lien'])) { |
|
| 281 | + $lien = $attrs['lien']; |
|
| 282 | + } else { |
|
| 283 | + $lien = ''; |
|
| 284 | + } |
|
| 285 | 285 | |
| 286 | - $n = $phraseur->contenu['compatible']; |
|
| 287 | - $phraseur->versions[$n]['credit'][] = ['nom' => $texte, 'url' => $lien]; |
|
| 286 | + $n = $phraseur->contenu['compatible']; |
|
| 287 | + $phraseur->versions[$n]['credit'][] = ['nom' => $texte, 'url' => $lien]; |
|
| 288 | 288 | } |
| 289 | 289 | |
| 290 | 290 | /** |
@@ -296,8 +296,8 @@ discard block |
||
| 296 | 296 | * @param string $texte |
| 297 | 297 | */ |
| 298 | 298 | function info_paquet_copyright($phraseur, $attrs, $texte) { |
| 299 | - $n = $phraseur->contenu['compatible']; |
|
| 300 | - $phraseur->versions[$n]['copyright'][] = $texte; |
|
| 299 | + $n = $phraseur->contenu['compatible']; |
|
| 300 | + $phraseur->versions[$n]['copyright'][] = $texte; |
|
| 301 | 301 | } |
| 302 | 302 | |
| 303 | 303 | /** |
@@ -309,9 +309,9 @@ discard block |
||
| 309 | 309 | * @param string $texte |
| 310 | 310 | */ |
| 311 | 311 | function info_paquet_paquet($phraseur, $attrs, $texte) { |
| 312 | - $n = 0; |
|
| 313 | - $phraseur->versions[$n]['dtd'] = 'paquet'; |
|
| 314 | - $phraseur->versions[$n]['balise'] = 'paquet'; |
|
| 312 | + $n = 0; |
|
| 313 | + $phraseur->versions[$n]['dtd'] = 'paquet'; |
|
| 314 | + $phraseur->versions[$n]['balise'] = 'paquet'; |
|
| 315 | 315 | } |
| 316 | 316 | |
| 317 | 317 | /** |
@@ -323,8 +323,8 @@ discard block |
||
| 323 | 323 | * @param string $texte |
| 324 | 324 | **/ |
| 325 | 325 | function info_paquet_traduire($phraseur, $attrs, $texte) { |
| 326 | - $n = $phraseur->contenu['compatible']; |
|
| 327 | - $phraseur->versions[$n]['traduire'][] = $attrs; |
|
| 326 | + $n = $phraseur->contenu['compatible']; |
|
| 327 | + $phraseur->versions[$n]['traduire'][] = $attrs; |
|
| 328 | 328 | } |
| 329 | 329 | |
| 330 | 330 | /** |
@@ -336,8 +336,8 @@ discard block |
||
| 336 | 336 | * @param string $texte |
| 337 | 337 | */ |
| 338 | 338 | function info_paquet_spip($phraseur, $attrs, $texte) { |
| 339 | - $n = $phraseur->contenu['compatible']; |
|
| 340 | - $phraseur->versions[$n]['balise'] = 'spip'; |
|
| 339 | + $n = $phraseur->contenu['compatible']; |
|
| 340 | + $phraseur->versions[$n]['balise'] = 'spip'; |
|
| 341 | 341 | } |
| 342 | 342 | |
| 343 | 343 | |
@@ -349,8 +349,8 @@ discard block |
||
| 349 | 349 | * @param string $texte |
| 350 | 350 | */ |
| 351 | 351 | function info_paquet_pipeline($phraseur, $attrs, $texte) { |
| 352 | - $n = $phraseur->contenu['compatible']; |
|
| 353 | - $phraseur->versions[$n]['pipeline'][] = $attrs; |
|
| 352 | + $n = $phraseur->contenu['compatible']; |
|
| 353 | + $phraseur->versions[$n]['pipeline'][] = $attrs; |
|
| 354 | 354 | } |
| 355 | 355 | |
| 356 | 356 | |
@@ -363,23 +363,23 @@ discard block |
||
| 363 | 363 | * @param string $texte |
| 364 | 364 | */ |
| 365 | 365 | function info_paquet_style($phraseur, $attrs, $texte) { |
| 366 | - $lien = $chemin = $type = $media = ''; |
|
| 367 | - |
|
| 368 | - include_spip('inc/utils'); |
|
| 369 | - if (tester_url_absolue($attrs['source'])) { |
|
| 370 | - $lien = $attrs['source']; |
|
| 371 | - } else { |
|
| 372 | - $chemin = $attrs['source']; |
|
| 373 | - } |
|
| 374 | - if (isset($attrs['type'])) { |
|
| 375 | - $type = $attrs['type']; |
|
| 376 | - } |
|
| 377 | - if (isset($attrs['media'])) { |
|
| 378 | - $media = $attrs['media']; |
|
| 379 | - } |
|
| 380 | - |
|
| 381 | - $n = $phraseur->contenu['compatible']; |
|
| 382 | - $phraseur->versions[$n]['style'][] = ['url' => $lien, 'path' => $chemin, 'type' => $type, 'media' => $media]; |
|
| 366 | + $lien = $chemin = $type = $media = ''; |
|
| 367 | + |
|
| 368 | + include_spip('inc/utils'); |
|
| 369 | + if (tester_url_absolue($attrs['source'])) { |
|
| 370 | + $lien = $attrs['source']; |
|
| 371 | + } else { |
|
| 372 | + $chemin = $attrs['source']; |
|
| 373 | + } |
|
| 374 | + if (isset($attrs['type'])) { |
|
| 375 | + $type = $attrs['type']; |
|
| 376 | + } |
|
| 377 | + if (isset($attrs['media'])) { |
|
| 378 | + $media = $attrs['media']; |
|
| 379 | + } |
|
| 380 | + |
|
| 381 | + $n = $phraseur->contenu['compatible']; |
|
| 382 | + $phraseur->versions[$n]['style'][] = ['url' => $lien, 'path' => $chemin, 'type' => $type, 'media' => $media]; |
|
| 383 | 383 | } |
| 384 | 384 | |
| 385 | 385 | |
@@ -392,20 +392,20 @@ discard block |
||
| 392 | 392 | * @param string $texte |
| 393 | 393 | */ |
| 394 | 394 | function info_paquet_script($phraseur, $attrs, $texte) { |
| 395 | - $lien = $chemin = $type = $media = ''; |
|
| 396 | - |
|
| 397 | - include_spip('inc/utils'); |
|
| 398 | - if (tester_url_absolue($attrs['source'])) { |
|
| 399 | - $lien = $attrs['source']; |
|
| 400 | - } else { |
|
| 401 | - $chemin = $attrs['source']; |
|
| 402 | - } |
|
| 403 | - if (isset($attrs['type'])) { |
|
| 404 | - $type = $attrs['type']; |
|
| 405 | - } |
|
| 406 | - |
|
| 407 | - $n = $phraseur->contenu['compatible']; |
|
| 408 | - $phraseur->versions[$n]['script'][] = ['url' => $lien, 'path' => $chemin, 'type' => $type]; |
|
| 395 | + $lien = $chemin = $type = $media = ''; |
|
| 396 | + |
|
| 397 | + include_spip('inc/utils'); |
|
| 398 | + if (tester_url_absolue($attrs['source'])) { |
|
| 399 | + $lien = $attrs['source']; |
|
| 400 | + } else { |
|
| 401 | + $chemin = $attrs['source']; |
|
| 402 | + } |
|
| 403 | + if (isset($attrs['type'])) { |
|
| 404 | + $type = $attrs['type']; |
|
| 405 | + } |
|
| 406 | + |
|
| 407 | + $n = $phraseur->contenu['compatible']; |
|
| 408 | + $phraseur->versions[$n]['script'][] = ['url' => $lien, 'path' => $chemin, 'type' => $type]; |
|
| 409 | 409 | } |
| 410 | 410 | |
| 411 | 411 | /** |
@@ -416,6 +416,6 @@ discard block |
||
| 416 | 416 | * @param string $texte |
| 417 | 417 | */ |
| 418 | 418 | function info_paquet_genie($phraseur, $attrs, $texte) { |
| 419 | - $n = $phraseur->contenu['compatible']; |
|
| 420 | - $phraseur->versions[$n]['genie'][] = $attrs; |
|
| 419 | + $n = $phraseur->contenu['compatible']; |
|
| 420 | + $phraseur->versions[$n]['genie'][] = $attrs; |
|
| 421 | 421 | } |
@@ -38,7 +38,7 @@ discard block |
||
| 38 | 38 | |
| 39 | 39 | // numerotons les occurences d'un meme prefix |
| 40 | 40 | $versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : ''; |
| 41 | - $id = $info['prefix'] . $versions[$info['prefix']]; |
|
| 41 | + $id = $info['prefix'].$versions[$info['prefix']]; |
|
| 42 | 42 | |
| 43 | 43 | $class = $class_li; |
| 44 | 44 | $class .= $actif ? ' actif' : ''; |
@@ -55,15 +55,15 @@ discard block |
||
| 55 | 55 | $prefix = $info['prefix']; |
| 56 | 56 | $dir = "$dir_plugins$plug_file/lang/$prefix"; |
| 57 | 57 | $desc = plugin_propre($info['description'], $dir); |
| 58 | - $url_stat = parametre_url($url_page, 'plugin', $dir_plugins . $plug_file); |
|
| 58 | + $url_stat = parametre_url($url_page, 'plugin', $dir_plugins.$plug_file); |
|
| 59 | 59 | |
| 60 | - $s .= "<strong class='nom'>" . typo($info['nom']) . '</strong>'; |
|
| 61 | - $s .= " <span class='version'>" . $info['version'] . '</span>'; |
|
| 62 | - $s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . '</span>'; |
|
| 60 | + $s .= "<strong class='nom'>".typo($info['nom']).'</strong>'; |
|
| 61 | + $s .= " <span class='version'>".$info['version'].'</span>'; |
|
| 62 | + $s .= " <span class='etat'> - ".plugin_etat_en_clair($info['etat']).'</span>'; |
|
| 63 | 63 | $s .= '</div>'; |
| 64 | 64 | |
| 65 | 65 | if ($erreur) { |
| 66 | - $s .= "<div class='erreur'>" . join('<br >', $info['erreur']) . '</div>'; |
|
| 66 | + $s .= "<div class='erreur'>".join('<br >', $info['erreur']).'</div>'; |
|
| 67 | 67 | } |
| 68 | 68 | |
| 69 | 69 | $s .= '</li>'; |
@@ -11,61 +11,61 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | include_spip('inc/charsets'); |
| 17 | 17 | include_spip('inc/texte'); |
| 18 | 18 | include_spip('plugins/afficher_plugin'); |
| 19 | 19 | |
| 20 | 20 | function plugins_afficher_nom_plugin_dist( |
| 21 | - $url_page, |
|
| 22 | - $plug_file, |
|
| 23 | - $checked, |
|
| 24 | - $actif, |
|
| 25 | - $expose = false, |
|
| 26 | - $class_li = 'item', |
|
| 27 | - $dir_plugins = _DIR_PLUGINS |
|
| 21 | + $url_page, |
|
| 22 | + $plug_file, |
|
| 23 | + $checked, |
|
| 24 | + $actif, |
|
| 25 | + $expose = false, |
|
| 26 | + $class_li = 'item', |
|
| 27 | + $dir_plugins = _DIR_PLUGINS |
|
| 28 | 28 | ) { |
| 29 | - static $id_input = 0; |
|
| 30 | - static $versions = []; |
|
| 29 | + static $id_input = 0; |
|
| 30 | + static $versions = []; |
|
| 31 | 31 | |
| 32 | - $erreur = false; |
|
| 33 | - $s = ''; |
|
| 32 | + $erreur = false; |
|
| 33 | + $s = ''; |
|
| 34 | 34 | |
| 35 | - $get_infos = charger_fonction('get_infos', 'plugins'); |
|
| 36 | - $info = $get_infos($plug_file, false, $dir_plugins); |
|
| 35 | + $get_infos = charger_fonction('get_infos', 'plugins'); |
|
| 36 | + $info = $get_infos($plug_file, false, $dir_plugins); |
|
| 37 | 37 | |
| 38 | - // numerotons les occurences d'un meme prefix |
|
| 39 | - $versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : ''; |
|
| 40 | - $id = $info['prefix'] . $versions[$info['prefix']]; |
|
| 38 | + // numerotons les occurences d'un meme prefix |
|
| 39 | + $versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : ''; |
|
| 40 | + $id = $info['prefix'] . $versions[$info['prefix']]; |
|
| 41 | 41 | |
| 42 | - $class = $class_li; |
|
| 43 | - $class .= $actif ? ' actif' : ''; |
|
| 44 | - $class .= $expose ? ' on' : ''; |
|
| 45 | - $erreur = isset($info['erreur']); |
|
| 46 | - if ($erreur) { |
|
| 47 | - $class .= ' error'; |
|
| 48 | - } |
|
| 49 | - $s .= "<li id='$id' class='$class'>"; |
|
| 42 | + $class = $class_li; |
|
| 43 | + $class .= $actif ? ' actif' : ''; |
|
| 44 | + $class .= $expose ? ' on' : ''; |
|
| 45 | + $erreur = isset($info['erreur']); |
|
| 46 | + if ($erreur) { |
|
| 47 | + $class .= ' error'; |
|
| 48 | + } |
|
| 49 | + $s .= "<li id='$id' class='$class'>"; |
|
| 50 | 50 | |
| 51 | - // Cartouche Resume |
|
| 52 | - $s .= "<div class='resume'>"; |
|
| 51 | + // Cartouche Resume |
|
| 52 | + $s .= "<div class='resume'>"; |
|
| 53 | 53 | |
| 54 | - $prefix = $info['prefix']; |
|
| 55 | - $dir = "$dir_plugins$plug_file/lang/$prefix"; |
|
| 56 | - $desc = plugin_propre($info['description'], $dir); |
|
| 57 | - $url_stat = parametre_url($url_page, 'plugin', $dir_plugins . $plug_file); |
|
| 54 | + $prefix = $info['prefix']; |
|
| 55 | + $dir = "$dir_plugins$plug_file/lang/$prefix"; |
|
| 56 | + $desc = plugin_propre($info['description'], $dir); |
|
| 57 | + $url_stat = parametre_url($url_page, 'plugin', $dir_plugins . $plug_file); |
|
| 58 | 58 | |
| 59 | - $s .= "<strong class='nom'>" . typo($info['nom']) . '</strong>'; |
|
| 60 | - $s .= " <span class='version'>" . $info['version'] . '</span>'; |
|
| 61 | - $s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . '</span>'; |
|
| 62 | - $s .= '</div>'; |
|
| 59 | + $s .= "<strong class='nom'>" . typo($info['nom']) . '</strong>'; |
|
| 60 | + $s .= " <span class='version'>" . $info['version'] . '</span>'; |
|
| 61 | + $s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . '</span>'; |
|
| 62 | + $s .= '</div>'; |
|
| 63 | 63 | |
| 64 | - if ($erreur) { |
|
| 65 | - $s .= "<div class='erreur'>" . join('<br >', $info['erreur']) . '</div>'; |
|
| 66 | - } |
|
| 64 | + if ($erreur) { |
|
| 65 | + $s .= "<div class='erreur'>" . join('<br >', $info['erreur']) . '</div>'; |
|
| 66 | + } |
|
| 67 | 67 | |
| 68 | - $s .= '</li>'; |
|
| 68 | + $s .= '</li>'; |
|
| 69 | 69 | |
| 70 | - return $s; |
|
| 70 | + return $s; |
|
| 71 | 71 | } |
@@ -37,7 +37,7 @@ discard block |
||
| 37 | 37 | static $filecache = ''; |
| 38 | 38 | |
| 39 | 39 | if ($cache === '') { |
| 40 | - $filecache = _DIR_TMP . 'plugin_xml_cache.gz'; |
|
| 40 | + $filecache = _DIR_TMP.'plugin_xml_cache.gz'; |
|
| 41 | 41 | if (is_file($filecache)) { |
| 42 | 42 | lire_fichier($filecache, $contenu); |
| 43 | 43 | $cache = unserialize($contenu); |
@@ -128,7 +128,7 @@ discard block |
||
| 128 | 128 | if (isset($ret['prefix']) and $ret['prefix'] == 'spip') { |
| 129 | 129 | $ret['procure']['php'] = ['nom' => 'php', 'version' => phpversion()]; |
| 130 | 130 | foreach (get_loaded_extensions() as $ext) { |
| 131 | - $ret['procure']['php:' . $ext] = ['nom' => 'php:' . $ext, 'version' => phpversion($ext)]; |
|
| 131 | + $ret['procure']['php:'.$ext] = ['nom' => 'php:'.$ext, 'version' => phpversion($ext)]; |
|
| 132 | 132 | } |
| 133 | 133 | } |
| 134 | 134 | $diff = ($ret != $pcache); |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | /** |
@@ -33,110 +33,110 @@ discard block |
||
| 33 | 33 | * @return array |
| 34 | 34 | */ |
| 35 | 35 | function plugins_get_infos_dist($plug = false, $reload = false, $dir = _DIR_PLUGINS, $clean_old = false) { |
| 36 | - $contenu = null; |
|
| 37 | - $res = null; |
|
| 38 | - static $cache = ''; |
|
| 39 | - static $filecache = ''; |
|
| 40 | - |
|
| 41 | - if ($cache === '') { |
|
| 42 | - $filecache = _DIR_TMP . 'plugin_xml_cache.gz'; |
|
| 43 | - if (is_file($filecache)) { |
|
| 44 | - lire_fichier($filecache, $contenu); |
|
| 45 | - $cache = unserialize($contenu); |
|
| 46 | - } |
|
| 47 | - if (!is_array($cache)) { |
|
| 48 | - $cache = []; |
|
| 49 | - } |
|
| 50 | - } |
|
| 51 | - |
|
| 52 | - if (defined('_VAR_MODE') and _VAR_MODE == 'recalcul') { |
|
| 53 | - $reload = true; |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - if ($plug === false) { |
|
| 57 | - ecrire_fichier($filecache, serialize($cache)); |
|
| 58 | - |
|
| 59 | - return $cache; |
|
| 60 | - } elseif (is_string($plug)) { |
|
| 61 | - $res = plugins_get_infos_un($plug, $reload, $dir, $cache); |
|
| 62 | - } elseif (is_array($plug)) { |
|
| 63 | - $res = false; |
|
| 64 | - if (!$reload) { |
|
| 65 | - $reload = -1; |
|
| 66 | - } |
|
| 67 | - foreach ($plug as $nom) { |
|
| 68 | - $res |= plugins_get_infos_un($nom, $reload, $dir, $cache); |
|
| 69 | - } |
|
| 70 | - |
|
| 71 | - // Nettoyer le cache des vieux plugins qui ne sont plus la |
|
| 72 | - if ($clean_old and isset($cache[$dir]) and is_countable($cache[$dir]) ? count($cache[$dir]) : 0) { |
|
| 73 | - foreach (array_keys($cache[$dir]) as $p) { |
|
| 74 | - if (!in_array($p, $plug)) { |
|
| 75 | - unset($cache[$dir][$p]); |
|
| 76 | - } |
|
| 77 | - } |
|
| 78 | - } |
|
| 79 | - } |
|
| 80 | - if ($res) { |
|
| 81 | - ecrire_fichier($filecache, serialize($cache)); |
|
| 82 | - } |
|
| 83 | - if (!isset($cache[$dir])) { |
|
| 84 | - return []; |
|
| 85 | - } |
|
| 86 | - if (is_string($plug)) { |
|
| 87 | - return $cache[$dir][$plug] ?? []; |
|
| 88 | - } else { |
|
| 89 | - return $cache[$dir]; |
|
| 90 | - } |
|
| 36 | + $contenu = null; |
|
| 37 | + $res = null; |
|
| 38 | + static $cache = ''; |
|
| 39 | + static $filecache = ''; |
|
| 40 | + |
|
| 41 | + if ($cache === '') { |
|
| 42 | + $filecache = _DIR_TMP . 'plugin_xml_cache.gz'; |
|
| 43 | + if (is_file($filecache)) { |
|
| 44 | + lire_fichier($filecache, $contenu); |
|
| 45 | + $cache = unserialize($contenu); |
|
| 46 | + } |
|
| 47 | + if (!is_array($cache)) { |
|
| 48 | + $cache = []; |
|
| 49 | + } |
|
| 50 | + } |
|
| 51 | + |
|
| 52 | + if (defined('_VAR_MODE') and _VAR_MODE == 'recalcul') { |
|
| 53 | + $reload = true; |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + if ($plug === false) { |
|
| 57 | + ecrire_fichier($filecache, serialize($cache)); |
|
| 58 | + |
|
| 59 | + return $cache; |
|
| 60 | + } elseif (is_string($plug)) { |
|
| 61 | + $res = plugins_get_infos_un($plug, $reload, $dir, $cache); |
|
| 62 | + } elseif (is_array($plug)) { |
|
| 63 | + $res = false; |
|
| 64 | + if (!$reload) { |
|
| 65 | + $reload = -1; |
|
| 66 | + } |
|
| 67 | + foreach ($plug as $nom) { |
|
| 68 | + $res |= plugins_get_infos_un($nom, $reload, $dir, $cache); |
|
| 69 | + } |
|
| 70 | + |
|
| 71 | + // Nettoyer le cache des vieux plugins qui ne sont plus la |
|
| 72 | + if ($clean_old and isset($cache[$dir]) and is_countable($cache[$dir]) ? count($cache[$dir]) : 0) { |
|
| 73 | + foreach (array_keys($cache[$dir]) as $p) { |
|
| 74 | + if (!in_array($p, $plug)) { |
|
| 75 | + unset($cache[$dir][$p]); |
|
| 76 | + } |
|
| 77 | + } |
|
| 78 | + } |
|
| 79 | + } |
|
| 80 | + if ($res) { |
|
| 81 | + ecrire_fichier($filecache, serialize($cache)); |
|
| 82 | + } |
|
| 83 | + if (!isset($cache[$dir])) { |
|
| 84 | + return []; |
|
| 85 | + } |
|
| 86 | + if (is_string($plug)) { |
|
| 87 | + return $cache[$dir][$plug] ?? []; |
|
| 88 | + } else { |
|
| 89 | + return $cache[$dir]; |
|
| 90 | + } |
|
| 91 | 91 | } |
| 92 | 92 | |
| 93 | 93 | |
| 94 | 94 | function plugins_get_infos_un($plug, $reload, $dir, &$cache) { |
| 95 | - if (!is_readable($file = "$dir$plug/paquet.xml")) { |
|
| 96 | - return false; |
|
| 97 | - } |
|
| 98 | - $time = intval(@filemtime($file)); |
|
| 99 | - if ($time < 0) { |
|
| 100 | - return false; |
|
| 101 | - } |
|
| 102 | - $md5 = md5_file($file); |
|
| 103 | - |
|
| 104 | - $pcache = $cache[$dir][$plug] ?? ['filemtime' => 0, 'md5_file' => '']; |
|
| 105 | - |
|
| 106 | - // si le cache est valide |
|
| 107 | - if ( |
|
| 108 | - (intval($reload) <= 0) |
|
| 109 | - and ($time > 0) |
|
| 110 | - and ($time <= $pcache['filemtime']) |
|
| 111 | - and $md5 == $pcache['md5_file'] |
|
| 112 | - ) { |
|
| 113 | - return false; |
|
| 114 | - } |
|
| 115 | - |
|
| 116 | - // si on arrive pas a lire le fichier, se contenter du cache |
|
| 117 | - if (!($texte = spip_file_get_contents($file))) { |
|
| 118 | - return false; |
|
| 119 | - } |
|
| 120 | - |
|
| 121 | - $f = charger_fonction('infos_paquet', 'plugins'); |
|
| 122 | - $ret = $f($texte, $plug, $dir); |
|
| 123 | - $ret['filemtime'] = $time; |
|
| 124 | - $ret['md5_file'] = $md5; |
|
| 125 | - // Si on lit le paquet.xml de SPIP, on rajoute un procure php afin que les plugins puissent |
|
| 126 | - // utiliser un necessite php. SPIP procure donc la version php courante du serveur. |
|
| 127 | - // chaque librairie php est aussi procurée, par exemple 'php:curl'. |
|
| 128 | - if (isset($ret['prefix']) and $ret['prefix'] == 'spip') { |
|
| 129 | - $ret['procure']['php'] = ['nom' => 'php', 'version' => phpversion()]; |
|
| 130 | - foreach (get_loaded_extensions() as $ext) { |
|
| 131 | - $ret['procure']['php:' . $ext] = ['nom' => 'php:' . $ext, 'version' => phpversion($ext)]; |
|
| 132 | - } |
|
| 133 | - } |
|
| 134 | - $diff = ($ret != $pcache); |
|
| 135 | - |
|
| 136 | - if ($diff) { |
|
| 137 | - $cache[$dir][$plug] = $ret; |
|
| 95 | + if (!is_readable($file = "$dir$plug/paquet.xml")) { |
|
| 96 | + return false; |
|
| 97 | + } |
|
| 98 | + $time = intval(@filemtime($file)); |
|
| 99 | + if ($time < 0) { |
|
| 100 | + return false; |
|
| 101 | + } |
|
| 102 | + $md5 = md5_file($file); |
|
| 103 | + |
|
| 104 | + $pcache = $cache[$dir][$plug] ?? ['filemtime' => 0, 'md5_file' => '']; |
|
| 105 | + |
|
| 106 | + // si le cache est valide |
|
| 107 | + if ( |
|
| 108 | + (intval($reload) <= 0) |
|
| 109 | + and ($time > 0) |
|
| 110 | + and ($time <= $pcache['filemtime']) |
|
| 111 | + and $md5 == $pcache['md5_file'] |
|
| 112 | + ) { |
|
| 113 | + return false; |
|
| 114 | + } |
|
| 115 | + |
|
| 116 | + // si on arrive pas a lire le fichier, se contenter du cache |
|
| 117 | + if (!($texte = spip_file_get_contents($file))) { |
|
| 118 | + return false; |
|
| 119 | + } |
|
| 120 | + |
|
| 121 | + $f = charger_fonction('infos_paquet', 'plugins'); |
|
| 122 | + $ret = $f($texte, $plug, $dir); |
|
| 123 | + $ret['filemtime'] = $time; |
|
| 124 | + $ret['md5_file'] = $md5; |
|
| 125 | + // Si on lit le paquet.xml de SPIP, on rajoute un procure php afin que les plugins puissent |
|
| 126 | + // utiliser un necessite php. SPIP procure donc la version php courante du serveur. |
|
| 127 | + // chaque librairie php est aussi procurée, par exemple 'php:curl'. |
|
| 128 | + if (isset($ret['prefix']) and $ret['prefix'] == 'spip') { |
|
| 129 | + $ret['procure']['php'] = ['nom' => 'php', 'version' => phpversion()]; |
|
| 130 | + foreach (get_loaded_extensions() as $ext) { |
|
| 131 | + $ret['procure']['php:' . $ext] = ['nom' => 'php:' . $ext, 'version' => phpversion($ext)]; |
|
| 132 | + } |
|
| 133 | + } |
|
| 134 | + $diff = ($ret != $pcache); |
|
| 135 | + |
|
| 136 | + if ($diff) { |
|
| 137 | + $cache[$dir][$plug] = $ret; |
|
| 138 | 138 | # echo count($cache[$dir]), $dir,$plug, " $reloadc<br>"; |
| 139 | - } |
|
| 139 | + } |
|
| 140 | 140 | |
| 141 | - return $diff; |
|
| 141 | + return $diff; |
|
| 142 | 142 | } |
@@ -4,415 +4,415 @@ discard block |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'activer_plugin' => 'Activar el plugin', |
|
| 14 | - 'affichage' => 'Visualización', |
|
| 15 | - 'aide_non_disponible' => 'Esta parte de la ayuda en línea aún no está disponible en este idioma.', |
|
| 16 | - 'annuler_recherche' => 'Cancelar la búsqueda', |
|
| 17 | - 'auteur' => 'Autor/a:', |
|
| 18 | - 'avis_acces_interdit' => 'Acceso prohibido.', |
|
| 19 | - 'avis_acces_interdit_prive' => 'No tienes derecho de acceder a la página <b>@exec@</b>.', |
|
| 20 | - 'avis_article_modifie' => 'Atención: @nom_auteur_modif@ ha modificado este artículo hace @date_diff@ minutos', |
|
| 21 | - 'avis_aucun_resultat' => 'Ningún resultado.', |
|
| 22 | - 'avis_base_inaccessible' => 'No se puede conectar a la base de datos @base@.', |
|
| 23 | - 'avis_chemin_invalide_1' => 'Ruta de acceso seleccionada', |
|
| 24 | - 'avis_chemin_invalide_2' => 'no parece válido. Regrese a la página precedente y compruebe las informaciones procuradas.', |
|
| 25 | - 'avis_connexion_echec_1' => 'La conexión con la base de datos ha fallado.', |
|
| 26 | - 'avis_connexion_echec_2' => 'Regresa a la página precedente y verifica las informaciones procuradas.', |
|
| 27 | - 'avis_connexion_echec_3' => '<b>Aviso:</b> En muchos servidores, es necesario <b>solicitar</b> la activación del acceso a la base de datos SQL antes de poder usarla. En caso de no poder conectarse a la base de datos, compruebe que se ha realizado la activación.', |
|
| 28 | - 'avis_connexion_erreur_creer_base' => 'La base de datos no se ha podido crear', |
|
| 29 | - 'avis_connexion_erreur_nom_base' => 'El nombre de la base sólo puede contener letras, dígitos y guiones.', |
|
| 30 | - 'avis_connexion_ldap_echec_1' => 'La conexión al servidor LDAP ha fallado.', |
|
| 31 | - 'avis_connexion_ldap_echec_2' => 'Regrese a la página anterior y compruebe la información procurada.', |
|
| 32 | - 'avis_connexion_ldap_echec_3' => 'Alternativamente, no utilice el soporte LDAP para importar usuarios.', |
|
| 33 | - 'avis_deplacement_rubrique' => '¡ATENCIÓN! Esta sección contiene @contient_breves@ breve@scb@. Si la desplaza, active esta casilla de confirmación.', |
|
| 34 | - 'avis_erreur_connexion_mysql' => 'Error de conexión SQL', |
|
| 35 | - 'avis_espace_interdit' => '<b>Espacio prohibido</b> <div>SPIP ya está instalado.</div>', |
|
| 36 | - 'avis_lecture_noms_bases_1' => 'El programa de instalación no logró leer los nombres de las bases de datos instaladas.', |
|
| 37 | - 'avis_lecture_noms_bases_2' => 'Dos posibilidades: o no hay ninguna base disponible o la función de listado de las bases fue desactivada por razones de seguridad (caso frecuente en muchos hospedajes).', |
|
| 38 | - 'avis_lecture_noms_bases_3' => 'En el segundo caso, es probable que una base que tenga como nombre su identificador de usuario sea utilizable:', |
|
| 39 | - 'avis_non_acces_page' => 'No tiene acceso a esta página.', |
|
| 40 | - 'avis_operation_echec' => 'La operación ha fallado.', |
|
| 41 | - 'avis_operation_impossible' => 'Operación imposible', |
|
| 42 | - 'avis_suppression_base' => '¡ATENCIÓN, la supresión de datos es irreversible!', |
|
| 12 | + // A |
|
| 13 | + 'activer_plugin' => 'Activar el plugin', |
|
| 14 | + 'affichage' => 'Visualización', |
|
| 15 | + 'aide_non_disponible' => 'Esta parte de la ayuda en línea aún no está disponible en este idioma.', |
|
| 16 | + 'annuler_recherche' => 'Cancelar la búsqueda', |
|
| 17 | + 'auteur' => 'Autor/a:', |
|
| 18 | + 'avis_acces_interdit' => 'Acceso prohibido.', |
|
| 19 | + 'avis_acces_interdit_prive' => 'No tienes derecho de acceder a la página <b>@exec@</b>.', |
|
| 20 | + 'avis_article_modifie' => 'Atención: @nom_auteur_modif@ ha modificado este artículo hace @date_diff@ minutos', |
|
| 21 | + 'avis_aucun_resultat' => 'Ningún resultado.', |
|
| 22 | + 'avis_base_inaccessible' => 'No se puede conectar a la base de datos @base@.', |
|
| 23 | + 'avis_chemin_invalide_1' => 'Ruta de acceso seleccionada', |
|
| 24 | + 'avis_chemin_invalide_2' => 'no parece válido. Regrese a la página precedente y compruebe las informaciones procuradas.', |
|
| 25 | + 'avis_connexion_echec_1' => 'La conexión con la base de datos ha fallado.', |
|
| 26 | + 'avis_connexion_echec_2' => 'Regresa a la página precedente y verifica las informaciones procuradas.', |
|
| 27 | + 'avis_connexion_echec_3' => '<b>Aviso:</b> En muchos servidores, es necesario <b>solicitar</b> la activación del acceso a la base de datos SQL antes de poder usarla. En caso de no poder conectarse a la base de datos, compruebe que se ha realizado la activación.', |
|
| 28 | + 'avis_connexion_erreur_creer_base' => 'La base de datos no se ha podido crear', |
|
| 29 | + 'avis_connexion_erreur_nom_base' => 'El nombre de la base sólo puede contener letras, dígitos y guiones.', |
|
| 30 | + 'avis_connexion_ldap_echec_1' => 'La conexión al servidor LDAP ha fallado.', |
|
| 31 | + 'avis_connexion_ldap_echec_2' => 'Regrese a la página anterior y compruebe la información procurada.', |
|
| 32 | + 'avis_connexion_ldap_echec_3' => 'Alternativamente, no utilice el soporte LDAP para importar usuarios.', |
|
| 33 | + 'avis_deplacement_rubrique' => '¡ATENCIÓN! Esta sección contiene @contient_breves@ breve@scb@. Si la desplaza, active esta casilla de confirmación.', |
|
| 34 | + 'avis_erreur_connexion_mysql' => 'Error de conexión SQL', |
|
| 35 | + 'avis_espace_interdit' => '<b>Espacio prohibido</b> <div>SPIP ya está instalado.</div>', |
|
| 36 | + 'avis_lecture_noms_bases_1' => 'El programa de instalación no logró leer los nombres de las bases de datos instaladas.', |
|
| 37 | + 'avis_lecture_noms_bases_2' => 'Dos posibilidades: o no hay ninguna base disponible o la función de listado de las bases fue desactivada por razones de seguridad (caso frecuente en muchos hospedajes).', |
|
| 38 | + 'avis_lecture_noms_bases_3' => 'En el segundo caso, es probable que una base que tenga como nombre su identificador de usuario sea utilizable:', |
|
| 39 | + 'avis_non_acces_page' => 'No tiene acceso a esta página.', |
|
| 40 | + 'avis_operation_echec' => 'La operación ha fallado.', |
|
| 41 | + 'avis_operation_impossible' => 'Operación imposible', |
|
| 42 | + 'avis_suppression_base' => '¡ATENCIÓN, la supresión de datos es irreversible!', |
|
| 43 | 43 | |
| 44 | - // B |
|
| 45 | - 'bouton_acces_ldap' => 'Añadir un acceso LDAP', |
|
| 46 | - 'bouton_ajouter' => 'Añadir', |
|
| 47 | - 'bouton_annuler' => 'Anular', |
|
| 48 | - 'bouton_cache_activer' => 'Reactivar la caché', |
|
| 49 | - 'bouton_cache_desactiver' => 'Desactivar temporalmente la caché', |
|
| 50 | - 'bouton_demande_publication' => 'Pedir la publicación de este artículo', |
|
| 51 | - 'bouton_desactive_tout' => 'Desactivar todo', |
|
| 52 | - 'bouton_desinstaller' => 'Desinstalar', |
|
| 53 | - 'bouton_effacer_tout' => '¡Borrar TODO!', |
|
| 54 | - 'bouton_envoyer_message' => 'Mensaje definitivo: enviar', |
|
| 55 | - 'bouton_fermer' => 'Cerrar', |
|
| 56 | - 'bouton_mettre_a_jour_base' => 'Actualizar la base de datos', |
|
| 57 | - 'bouton_modifier' => 'Modificar', |
|
| 58 | - 'bouton_radio_afficher' => 'Mostrar', |
|
| 59 | - 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Aparecer en la lista de redactores y redactoras conectados', |
|
| 60 | - 'bouton_radio_envoi_annonces_adresse' => 'Enviar los anuncios a la dirección:', |
|
| 61 | - 'bouton_radio_envoi_liste_nouveautes' => 'Enviar la lista de novedades', |
|
| 62 | - 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'No aparecer en la lista de redactores y redactoras', |
|
| 63 | - 'bouton_radio_non_envoi_annonces_editoriales' => 'No enviar anuncios editoriales', |
|
| 64 | - 'bouton_redirection' => 'Redirección', |
|
| 65 | - 'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Reinicializar a los valores por omisión', |
|
| 66 | - 'bouton_relancer_inscription' => 'Relanzar la inscripción', |
|
| 67 | - 'bouton_relancer_inscriptions' => 'Relanzamiento de las inscripciones', |
|
| 68 | - 'bouton_relancer_installation' => 'Relanzar la instalación', |
|
| 69 | - 'bouton_reset_password' => 'Generar una nueva contraseña y enviarla por correo electrónico', |
|
| 70 | - 'bouton_suivant' => 'Siguiente', |
|
| 71 | - 'bouton_tenter_recuperation' => 'Intentar reparar', |
|
| 72 | - 'bouton_test_proxy' => 'Probar el proxy', |
|
| 73 | - 'bouton_vider_cache' => 'Vaciar la caché', |
|
| 44 | + // B |
|
| 45 | + 'bouton_acces_ldap' => 'Añadir un acceso LDAP', |
|
| 46 | + 'bouton_ajouter' => 'Añadir', |
|
| 47 | + 'bouton_annuler' => 'Anular', |
|
| 48 | + 'bouton_cache_activer' => 'Reactivar la caché', |
|
| 49 | + 'bouton_cache_desactiver' => 'Desactivar temporalmente la caché', |
|
| 50 | + 'bouton_demande_publication' => 'Pedir la publicación de este artículo', |
|
| 51 | + 'bouton_desactive_tout' => 'Desactivar todo', |
|
| 52 | + 'bouton_desinstaller' => 'Desinstalar', |
|
| 53 | + 'bouton_effacer_tout' => '¡Borrar TODO!', |
|
| 54 | + 'bouton_envoyer_message' => 'Mensaje definitivo: enviar', |
|
| 55 | + 'bouton_fermer' => 'Cerrar', |
|
| 56 | + 'bouton_mettre_a_jour_base' => 'Actualizar la base de datos', |
|
| 57 | + 'bouton_modifier' => 'Modificar', |
|
| 58 | + 'bouton_radio_afficher' => 'Mostrar', |
|
| 59 | + 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Aparecer en la lista de redactores y redactoras conectados', |
|
| 60 | + 'bouton_radio_envoi_annonces_adresse' => 'Enviar los anuncios a la dirección:', |
|
| 61 | + 'bouton_radio_envoi_liste_nouveautes' => 'Enviar la lista de novedades', |
|
| 62 | + 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'No aparecer en la lista de redactores y redactoras', |
|
| 63 | + 'bouton_radio_non_envoi_annonces_editoriales' => 'No enviar anuncios editoriales', |
|
| 64 | + 'bouton_redirection' => 'Redirección', |
|
| 65 | + 'bouton_reinitialiser_aux_valeurs_par_defaut' => 'Reinicializar a los valores por omisión', |
|
| 66 | + 'bouton_relancer_inscription' => 'Relanzar la inscripción', |
|
| 67 | + 'bouton_relancer_inscriptions' => 'Relanzamiento de las inscripciones', |
|
| 68 | + 'bouton_relancer_installation' => 'Relanzar la instalación', |
|
| 69 | + 'bouton_reset_password' => 'Generar una nueva contraseña y enviarla por correo electrónico', |
|
| 70 | + 'bouton_suivant' => 'Siguiente', |
|
| 71 | + 'bouton_tenter_recuperation' => 'Intentar reparar', |
|
| 72 | + 'bouton_test_proxy' => 'Probar el proxy', |
|
| 73 | + 'bouton_vider_cache' => 'Vaciar la caché', |
|
| 74 | 74 | |
| 75 | - // C |
|
| 76 | - 'cache_modifiable_webmestre' => 'Este parámetro es modificable por la webmistress del sitio.', |
|
| 77 | - 'calendrier_synchro' => 'Si utiliza un software de agenda compatible <b>iCal</b>, puede sincronizarlo con la actualidad editorial de este sitio.', |
|
| 78 | - 'config_activer_champs' => 'Activar los campos siguientes', |
|
| 79 | - 'config_choix_base_sup' => 'indicar una base de datos de este servidor', |
|
| 80 | - 'config_erreur_base_sup' => 'SPIP no tiene acceso a la lista de bases accesibles', |
|
| 81 | - 'config_info_base_sup' => 'Si dispone de otras bases de datos a consultar mediante SPIP, con su servidor SQL o con otro, el formulario siguiente permite declararlas. Si deja vacíos ciertos campos, se usarán los identificadores de la conexión a la base principal.', |
|
| 82 | - 'config_info_base_sup_disponibles' => 'Bases de datos suplementarias consultables:', |
|
| 83 | - 'config_info_enregistree' => 'La nueva configuración fue guardada', |
|
| 84 | - 'config_info_logos' => 'Cada elemento del sitio puede tener un logo, así como un « logo de paso del ratón »', |
|
| 85 | - 'config_info_logos_utiliser' => 'Utilizar los logos', |
|
| 86 | - 'config_info_logos_utiliser_non' => 'No utilizar los logos', |
|
| 87 | - 'config_info_logos_utiliser_survol' => 'Utilizar los logos de paso del ratón', |
|
| 88 | - 'config_info_logos_utiliser_survol_non' => 'No utilizar los logos de paso del ratón', |
|
| 89 | - 'config_info_redirection' => 'Activando esta opción, se podrán crear artículos virtuales, que son simples referencias de artículos publicados en otros sitios o fuera de SPIP.', |
|
| 90 | - 'config_redirection' => 'Artículos virtuales', |
|
| 91 | - 'config_titre_base_sup' => 'Declaración de una base suplementaria', |
|
| 92 | - 'config_titre_base_sup_choix' => 'Elige una base suplementaria', |
|
| 93 | - 'connexion_ldap' => 'Conexión:', |
|
| 94 | - 'creer_et_associer_un_auteur' => 'Crear y asociar un autor', |
|
| 75 | + // C |
|
| 76 | + 'cache_modifiable_webmestre' => 'Este parámetro es modificable por la webmistress del sitio.', |
|
| 77 | + 'calendrier_synchro' => 'Si utiliza un software de agenda compatible <b>iCal</b>, puede sincronizarlo con la actualidad editorial de este sitio.', |
|
| 78 | + 'config_activer_champs' => 'Activar los campos siguientes', |
|
| 79 | + 'config_choix_base_sup' => 'indicar una base de datos de este servidor', |
|
| 80 | + 'config_erreur_base_sup' => 'SPIP no tiene acceso a la lista de bases accesibles', |
|
| 81 | + 'config_info_base_sup' => 'Si dispone de otras bases de datos a consultar mediante SPIP, con su servidor SQL o con otro, el formulario siguiente permite declararlas. Si deja vacíos ciertos campos, se usarán los identificadores de la conexión a la base principal.', |
|
| 82 | + 'config_info_base_sup_disponibles' => 'Bases de datos suplementarias consultables:', |
|
| 83 | + 'config_info_enregistree' => 'La nueva configuración fue guardada', |
|
| 84 | + 'config_info_logos' => 'Cada elemento del sitio puede tener un logo, así como un « logo de paso del ratón »', |
|
| 85 | + 'config_info_logos_utiliser' => 'Utilizar los logos', |
|
| 86 | + 'config_info_logos_utiliser_non' => 'No utilizar los logos', |
|
| 87 | + 'config_info_logos_utiliser_survol' => 'Utilizar los logos de paso del ratón', |
|
| 88 | + 'config_info_logos_utiliser_survol_non' => 'No utilizar los logos de paso del ratón', |
|
| 89 | + 'config_info_redirection' => 'Activando esta opción, se podrán crear artículos virtuales, que son simples referencias de artículos publicados en otros sitios o fuera de SPIP.', |
|
| 90 | + 'config_redirection' => 'Artículos virtuales', |
|
| 91 | + 'config_titre_base_sup' => 'Declaración de una base suplementaria', |
|
| 92 | + 'config_titre_base_sup_choix' => 'Elige una base suplementaria', |
|
| 93 | + 'connexion_ldap' => 'Conexión:', |
|
| 94 | + 'creer_et_associer_un_auteur' => 'Crear y asociar un autor', |
|
| 95 | 95 | |
| 96 | - // D |
|
| 97 | - 'date_mot_heures' => 'horas', |
|
| 96 | + // D |
|
| 97 | + 'date_mot_heures' => 'horas', |
|
| 98 | 98 | |
| 99 | - // E |
|
| 100 | - 'ecran_connexion_couleur_principale' => 'Color principal', |
|
| 101 | - 'ecran_connexion_image_fond' => 'Imagen de fondo', |
|
| 102 | - 'ecran_connexion_image_fond_explication' => 'Utilizar una imagen (en formato JPEG, 1920x1080 píxeles)', |
|
| 103 | - 'ecran_connexion_image_revenir_couleur_defaut' => 'Volver al color por defecto', |
|
| 104 | - 'ecran_connexion_titre' => 'Pantalla de acceso', |
|
| 105 | - 'ecran_securite' => ' + pantalla de seguridad @version@', |
|
| 106 | - 'email' => 'correo electrónico', |
|
| 107 | - 'email_2' => 'correo electrónico:', |
|
| 108 | - 'en_savoir_plus' => 'Más información', |
|
| 109 | - 'entree_adresse_annuaire' => 'Dirección del anuario', |
|
| 110 | - 'entree_adresse_email' => 'Tu correo electrónico', |
|
| 111 | - 'entree_adresse_email_2' => 'Dirección correo electrónico', |
|
| 112 | - 'entree_base_donnee_1' => 'Dirección de la base de datos', |
|
| 113 | - 'entree_base_donnee_2' => '(A menudo esta dirección corresponde a la de su sitio, a veces corresponde a la mención «localhost» y, en ocasiones, se deja totalmente vacía.)', |
|
| 114 | - 'entree_biographie' => 'Una corta biografía, en pocas palabras...', |
|
| 115 | - 'entree_chemin_acces' => '<b>Introducir</b> el camino de acceso:', |
|
| 116 | - 'entree_cle_pgp' => 'Su clave PGP', |
|
| 117 | - 'entree_cle_pgp_2' => 'Clave PGP', |
|
| 118 | - 'entree_contenu_rubrique' => '(Contenido de la sección en pocas palabras)', |
|
| 119 | - 'entree_identifiants_connexion' => 'Sus identificadores de conexión...', |
|
| 120 | - 'entree_identifiants_connexion_2' => 'Identificadores de conexión', |
|
| 121 | - 'entree_informations_connexion_ldap' => 'Escriba en este formulario los datos de conexión a su directorio LDAP. Tales informaciones le serán transmitidas por el administrador del sistema o de la red.', |
|
| 122 | - 'entree_infos_perso' => '¿Quién es usted?', |
|
| 123 | - 'entree_infos_perso_2' => '¿Quién es el/la autor/a?', |
|
| 124 | - 'entree_interieur_rubrique' => 'En el interior de la sección...', |
|
| 125 | - 'entree_liens_sites' => '<b>Enlace hipertexto </b>(referencia, sitio para visitar, ...)', |
|
| 126 | - 'entree_login' => 'Su nombre de usuario', |
|
| 127 | - 'entree_login_connexion_1' => 'Su identificador de conexión', |
|
| 128 | - 'entree_login_connexion_2' => '(A veces corresponde a su identificador de conexión; a veces se deja vacío)', |
|
| 129 | - 'entree_mot_passe' => 'Su contraseña', |
|
| 130 | - 'entree_mot_passe_1' => 'Su contraseña de conexión', |
|
| 131 | - 'entree_mot_passe_2' => '(A veces corresponde a tu contraseña FTP y a veces se deja en blanco)', |
|
| 132 | - 'entree_nom_fichier' => 'Introducir el nombre del archivo @texte_compresse@:', |
|
| 133 | - 'entree_nom_pseudo' => 'Su nombre o pseudónimo', |
|
| 134 | - 'entree_nom_pseudo_1' => '(Su nombre o pseudónimo)', |
|
| 135 | - 'entree_nom_pseudo_2' => 'Nombre o seudónimo', |
|
| 136 | - 'entree_nom_site' => 'El nombre de su sitio', |
|
| 137 | - 'entree_nom_site_2' => 'Nombre del sitio del/a autor/a', |
|
| 138 | - 'entree_nouveau_passe' => 'Nueva contraseña', |
|
| 139 | - 'entree_passe_ldap' => 'Tu contraseña', |
|
| 140 | - 'entree_port_annuaire' => 'El número de puerto del anuario', |
|
| 141 | - 'entree_signature' => 'Firma', |
|
| 142 | - 'entree_titre_obligatoire' => '<b>Título</b> [Obligatorio]<br />', |
|
| 143 | - 'entree_url' => 'La dirección (URL) de su sitio', |
|
| 144 | - 'entree_url_2' => 'Dirección (URL) del sitio', |
|
| 145 | - 'erreur_connect_deja_existant' => 'Ya existe un servidor con este nombre', |
|
| 146 | - 'erreur_contenu_suspect' => 'Cotenido con algún error', |
|
| 147 | - 'erreur_email_deja_existant' => 'Esta dirección de correo electrónico ya esta registrada.', |
|
| 148 | - 'erreur_nom_connect_incorrect' => 'Este nombre de servidor no esta autorizado', |
|
| 149 | - 'erreur_plugin_attribut_balise_manquant' => 'Atributo @attribut@ que falta en la baliza @balise@.', |
|
| 150 | - 'erreur_plugin_desinstalation_echouee' => 'La desinstalación del plugin ha fracasado. No obstante, puede desactivarlo.', |
|
| 151 | - 'erreur_plugin_fichier_absent' => 'Archivo inexistente ', |
|
| 152 | - 'erreur_plugin_fichier_def_absent' => 'Archivo de definición inexistente', |
|
| 153 | - 'erreur_plugin_nom_fonction_interdit' => 'Nombre de función prohibido', |
|
| 154 | - 'erreur_plugin_nom_manquant' => 'Falta el nombre del plugin', |
|
| 155 | - 'erreur_plugin_prefix_manquant' => 'Espacio de nombres del plugin no definido', |
|
| 156 | - 'erreur_plugin_tag_plugin_absent' => 'Falta el <plugin> en el archivo de definición', |
|
| 157 | - 'erreur_plugin_version_manquant' => 'Falta la versión del plugin', |
|
| 158 | - 'erreur_type_fichier' => 'Tipo de archivo incorrecto', |
|
| 99 | + // E |
|
| 100 | + 'ecran_connexion_couleur_principale' => 'Color principal', |
|
| 101 | + 'ecran_connexion_image_fond' => 'Imagen de fondo', |
|
| 102 | + 'ecran_connexion_image_fond_explication' => 'Utilizar una imagen (en formato JPEG, 1920x1080 píxeles)', |
|
| 103 | + 'ecran_connexion_image_revenir_couleur_defaut' => 'Volver al color por defecto', |
|
| 104 | + 'ecran_connexion_titre' => 'Pantalla de acceso', |
|
| 105 | + 'ecran_securite' => ' + pantalla de seguridad @version@', |
|
| 106 | + 'email' => 'correo electrónico', |
|
| 107 | + 'email_2' => 'correo electrónico:', |
|
| 108 | + 'en_savoir_plus' => 'Más información', |
|
| 109 | + 'entree_adresse_annuaire' => 'Dirección del anuario', |
|
| 110 | + 'entree_adresse_email' => 'Tu correo electrónico', |
|
| 111 | + 'entree_adresse_email_2' => 'Dirección correo electrónico', |
|
| 112 | + 'entree_base_donnee_1' => 'Dirección de la base de datos', |
|
| 113 | + 'entree_base_donnee_2' => '(A menudo esta dirección corresponde a la de su sitio, a veces corresponde a la mención «localhost» y, en ocasiones, se deja totalmente vacía.)', |
|
| 114 | + 'entree_biographie' => 'Una corta biografía, en pocas palabras...', |
|
| 115 | + 'entree_chemin_acces' => '<b>Introducir</b> el camino de acceso:', |
|
| 116 | + 'entree_cle_pgp' => 'Su clave PGP', |
|
| 117 | + 'entree_cle_pgp_2' => 'Clave PGP', |
|
| 118 | + 'entree_contenu_rubrique' => '(Contenido de la sección en pocas palabras)', |
|
| 119 | + 'entree_identifiants_connexion' => 'Sus identificadores de conexión...', |
|
| 120 | + 'entree_identifiants_connexion_2' => 'Identificadores de conexión', |
|
| 121 | + 'entree_informations_connexion_ldap' => 'Escriba en este formulario los datos de conexión a su directorio LDAP. Tales informaciones le serán transmitidas por el administrador del sistema o de la red.', |
|
| 122 | + 'entree_infos_perso' => '¿Quién es usted?', |
|
| 123 | + 'entree_infos_perso_2' => '¿Quién es el/la autor/a?', |
|
| 124 | + 'entree_interieur_rubrique' => 'En el interior de la sección...', |
|
| 125 | + 'entree_liens_sites' => '<b>Enlace hipertexto </b>(referencia, sitio para visitar, ...)', |
|
| 126 | + 'entree_login' => 'Su nombre de usuario', |
|
| 127 | + 'entree_login_connexion_1' => 'Su identificador de conexión', |
|
| 128 | + 'entree_login_connexion_2' => '(A veces corresponde a su identificador de conexión; a veces se deja vacío)', |
|
| 129 | + 'entree_mot_passe' => 'Su contraseña', |
|
| 130 | + 'entree_mot_passe_1' => 'Su contraseña de conexión', |
|
| 131 | + 'entree_mot_passe_2' => '(A veces corresponde a tu contraseña FTP y a veces se deja en blanco)', |
|
| 132 | + 'entree_nom_fichier' => 'Introducir el nombre del archivo @texte_compresse@:', |
|
| 133 | + 'entree_nom_pseudo' => 'Su nombre o pseudónimo', |
|
| 134 | + 'entree_nom_pseudo_1' => '(Su nombre o pseudónimo)', |
|
| 135 | + 'entree_nom_pseudo_2' => 'Nombre o seudónimo', |
|
| 136 | + 'entree_nom_site' => 'El nombre de su sitio', |
|
| 137 | + 'entree_nom_site_2' => 'Nombre del sitio del/a autor/a', |
|
| 138 | + 'entree_nouveau_passe' => 'Nueva contraseña', |
|
| 139 | + 'entree_passe_ldap' => 'Tu contraseña', |
|
| 140 | + 'entree_port_annuaire' => 'El número de puerto del anuario', |
|
| 141 | + 'entree_signature' => 'Firma', |
|
| 142 | + 'entree_titre_obligatoire' => '<b>Título</b> [Obligatorio]<br />', |
|
| 143 | + 'entree_url' => 'La dirección (URL) de su sitio', |
|
| 144 | + 'entree_url_2' => 'Dirección (URL) del sitio', |
|
| 145 | + 'erreur_connect_deja_existant' => 'Ya existe un servidor con este nombre', |
|
| 146 | + 'erreur_contenu_suspect' => 'Cotenido con algún error', |
|
| 147 | + 'erreur_email_deja_existant' => 'Esta dirección de correo electrónico ya esta registrada.', |
|
| 148 | + 'erreur_nom_connect_incorrect' => 'Este nombre de servidor no esta autorizado', |
|
| 149 | + 'erreur_plugin_attribut_balise_manquant' => 'Atributo @attribut@ que falta en la baliza @balise@.', |
|
| 150 | + 'erreur_plugin_desinstalation_echouee' => 'La desinstalación del plugin ha fracasado. No obstante, puede desactivarlo.', |
|
| 151 | + 'erreur_plugin_fichier_absent' => 'Archivo inexistente ', |
|
| 152 | + 'erreur_plugin_fichier_def_absent' => 'Archivo de definición inexistente', |
|
| 153 | + 'erreur_plugin_nom_fonction_interdit' => 'Nombre de función prohibido', |
|
| 154 | + 'erreur_plugin_nom_manquant' => 'Falta el nombre del plugin', |
|
| 155 | + 'erreur_plugin_prefix_manquant' => 'Espacio de nombres del plugin no definido', |
|
| 156 | + 'erreur_plugin_tag_plugin_absent' => 'Falta el <plugin> en el archivo de definición', |
|
| 157 | + 'erreur_plugin_version_manquant' => 'Falta la versión del plugin', |
|
| 158 | + 'erreur_type_fichier' => 'Tipo de archivo incorrecto', |
|
| 159 | 159 | |
| 160 | - // H |
|
| 161 | - 'htaccess_a_simuler' => 'Advertencia: la configuración de su servidor HTTP no toma en cuenta los archivos @htaccess@. Para poder asegurar una buena seguridad, debe modificar la configuración correspondiente, o bien que las constantes @constantes@ (que se pueden definir en el archivo mes_options.php) tomen valores de carpetas fuera de @document_root@.', |
|
| 162 | - 'htaccess_inoperant' => 'htaccess inoperante', |
|
| 160 | + // H |
|
| 161 | + 'htaccess_a_simuler' => 'Advertencia: la configuración de su servidor HTTP no toma en cuenta los archivos @htaccess@. Para poder asegurar una buena seguridad, debe modificar la configuración correspondiente, o bien que las constantes @constantes@ (que se pueden definir en el archivo mes_options.php) tomen valores de carpetas fuera de @document_root@.', |
|
| 162 | + 'htaccess_inoperant' => 'htaccess inoperante', |
|
| 163 | 163 | |
| 164 | - // I |
|
| 165 | - 'ical_info1' => 'En esta página se presentan diferentes maneras de quedar en contacto con la vida del sitio.', |
|
| 166 | - 'ical_info2' => 'Para mayor información sobre todas estas técnicas, no dude en consultar <a href="@spipnet@">la documentación de SPIP</a>.', |
|
| 167 | - 'ical_info_calendrier' => 'Tiene dos calendarios a tu disposición. El primero es un plano del sitio que anuncia todos los artículos publicados. El segundo contiene los anuncios editoriales y sus últimos mensajes privados: sólo usted lo ve gracias a una clave personal, que podrá modificar en cualquier momento cambiando su contraseña.', |
|
| 168 | - 'ical_methode_http' => 'Descargar', |
|
| 169 | - 'ical_methode_webcal' => 'Sincronización (webcal://)', |
|
| 170 | - 'ical_texte_js' => 'Una línea de javascript le permite mostrar muy simplemente, en cualquier sitio que le pertenezca, los artículos recientes publicados en este sitio.', |
|
| 171 | - 'ical_texte_prive' => 'Este calendario, de uso estrictamente personal, le informa de la actividad editorial privada de este sitio (tareas y citas personales, artículos y breves propuestos...).', |
|
| 172 | - 'ical_texte_public' => 'Este calendario permite seguir la actividad pública del sitio (artículos y breves publicados).', |
|
| 173 | - 'ical_texte_rss' => 'Puede sindicar las novedades de este sitio con cualquier lector de archivos al formato XML/RSS (Rich Site Summary). Igualmente, SPIP puede leer las novedades publicadas en otros sitios que utilizan un formato de intercambio compatible (sitios sindicados). ', |
|
| 174 | - 'ical_titre_js' => 'Javascript', |
|
| 175 | - 'ical_titre_mailing' => 'Lista de correo', |
|
| 176 | - 'ical_titre_rss' => 'Archivos de sindicación', |
|
| 177 | - 'icone_accueil' => 'Mis tareas', |
|
| 178 | - 'icone_activer_cookie' => 'Activar la "cookie" de correspondencia', |
|
| 179 | - 'icone_activite' => 'Actividad', |
|
| 180 | - 'icone_admin_plugin' => 'Gestión de los plugins', |
|
| 181 | - 'icone_administration' => 'Administración', |
|
| 182 | - 'icone_afficher_auteurs' => 'Mostrar los autores', |
|
| 183 | - 'icone_afficher_visiteurs' => 'Mostrar los visitantes', |
|
| 184 | - 'icone_arret_discussion' => 'No participar más en este diálogo', |
|
| 185 | - 'icone_calendrier' => 'Calendario', |
|
| 186 | - 'icone_configuration' => 'Configuración', |
|
| 187 | - 'icone_creer_auteur' => 'Crear un nuevo autor o autora y asociarla a este artículo', |
|
| 188 | - 'icone_creer_mot_cle' => 'Crear una nueva palabra clave y asociarla a este artículo', |
|
| 189 | - 'icone_creer_rubrique_2' => 'Crear una nueva sección', |
|
| 190 | - 'icone_developpement' => 'Desarrollo', |
|
| 191 | - 'icone_edition' => 'Edición', |
|
| 192 | - 'icone_ma_langue' => 'Mi idioma', |
|
| 193 | - 'icone_mes_infos' => 'Mis datos', |
|
| 194 | - 'icone_mes_preferences' => 'Mis preferencias', |
|
| 195 | - 'icone_modifier_article' => 'Modificar este artículo', |
|
| 196 | - 'icone_modifier_rubrique' => 'Modificar esta sección', |
|
| 197 | - 'icone_publication' => 'Publicación', |
|
| 198 | - 'icone_relancer_signataire' => 'Recordar al firmante', |
|
| 199 | - 'icone_retour' => 'Volver', |
|
| 200 | - 'icone_retour_article' => 'Volver al artículo', |
|
| 201 | - 'icone_squelette' => 'Esqueletos', |
|
| 202 | - 'icone_suivi_publication' => 'Seguir la publicación', |
|
| 203 | - 'icone_supprimer_cookie' => 'Suprimir la "cookie" de correspondencia', |
|
| 204 | - 'icone_supprimer_rubrique' => 'Suprimir esta sección', |
|
| 205 | - 'icone_supprimer_signature' => 'Suprimir esta firma', |
|
| 206 | - 'icone_valider_signature' => 'Validar esta firma', |
|
| 207 | - 'image_administrer_rubrique' => 'Puedes administrar esta sección', |
|
| 208 | - 'impossible_modifier_login_auteur' => 'Imposible modificar el nombre de usuario.', |
|
| 209 | - 'impossible_modifier_pass_auteur' => 'Imposible modificar la contraseña.', |
|
| 210 | - 'info_1_article' => '1 artículo', |
|
| 211 | - 'info_1_auteur' => '1 autor/a', |
|
| 212 | - 'info_1_message' => '1 mensaje', |
|
| 213 | - 'info_1_mot_cle' => '1 palabra-clave', |
|
| 214 | - 'info_1_rubrique' => '1 sección', |
|
| 215 | - 'info_1_visiteur' => '1 visitante', |
|
| 216 | - 'info_activer_cookie' => 'Puede activar una <b>"cookie" de correspondencia</b>, que le permite actualizar páginas y pasar fácilmente de la parte pública a la redacción.', |
|
| 217 | - 'info_activer_menu_developpement' => 'Mostrar el menu desarrollo ', |
|
| 218 | - 'info_admin_etre_webmestre' => 'Darme derechos de webmaster', |
|
| 219 | - 'info_admin_je_suis_webmestre' => 'Soy <b>webmaster</b>', |
|
| 220 | - 'info_admin_statuer_webmestre' => 'Dar a este/a administrador/a derechos de webmaster', |
|
| 221 | - 'info_admin_webmestre' => 'Este/a administrador/a es <b>webmaster</b>', |
|
| 222 | - 'info_administrateur' => 'Administrador', |
|
| 223 | - 'info_administrateur_1' => 'Administrador', |
|
| 224 | - 'info_administrateur_2' => 'del sitio (<i>a utilizar con precaución</i>)', |
|
| 225 | - 'info_administrateur_site_01' => 'Si tiene derechos de administración, se ruega', |
|
| 226 | - 'info_administrateur_site_02' => 'presiona y visita este enlace', |
|
| 227 | - 'info_administrateurs' => 'Administradores', |
|
| 228 | - 'info_administrer_rubrique' => 'Puede administrar esta sección', |
|
| 229 | - 'info_adresse' => 'a la dirección:', |
|
| 230 | - 'info_adresse_desinscription' => 'Dirección para darse de baja:', |
|
| 231 | - 'info_adresse_url' => 'Dirección (URL) del sitio público', |
|
| 232 | - 'info_afficher_par_nb' => 'Visualizar por', |
|
| 233 | - 'info_aide_en_ligne' => 'Ayuda en línea de SPIP', |
|
| 234 | - 'info_ajout_image' => 'Cuando se añaden imágenes en tanto que documentos, SPIP puede crear automáticamente iconos de estas imágenes insertadas (miniaturas). Resulta útil, por ejemplo, para crear una galería o portafolio.', |
|
| 235 | - 'info_ajouter_rubrique' => 'Añadir otra sección para administrar:', |
|
| 236 | - 'info_annonce_nouveautes' => 'Anunciar novedades', |
|
| 237 | - 'info_article' => 'artículo', |
|
| 238 | - 'info_article_2' => 'artículos', |
|
| 239 | - 'info_article_a_paraitre' => 'Los artículos con fecha posterior a ser publicados', |
|
| 240 | - 'info_articles_02' => 'artículos', |
|
| 241 | - 'info_articles_2' => 'Artículos', |
|
| 242 | - 'info_articles_auteur' => 'Los artículos de este autor o autora', |
|
| 243 | - 'info_articles_miens' => 'Mis artículos', |
|
| 244 | - 'info_articles_tous' => 'Todos los artículos', |
|
| 245 | - 'info_articles_trouves' => 'Artículos localizados', |
|
| 246 | - 'info_attente_validation' => 'Sus artículos en espera de validación', |
|
| 247 | - 'info_aucun_article' => 'Ningún artículo', |
|
| 248 | - 'info_aucun_auteur' => 'Ningún autor', |
|
| 249 | - 'info_aucun_message' => 'Ningún mensaje', |
|
| 250 | - 'info_aucun_rubrique' => 'Ninguna sección', |
|
| 251 | - 'info_aujourdhui' => 'hoy:', |
|
| 252 | - 'info_auteur_gere_rubriques' => 'Este autor gestiona las secciones siguientes :', |
|
| 253 | - 'info_auteur_gere_toutes_rubriques' => 'este autor gestiona <b>todas las secciones</b>', |
|
| 254 | - 'info_auteur_gere_toutes_rubriques_2' => 'yo gestiono <b>todas las secciones</b>', |
|
| 255 | - 'info_auteurs' => 'Autores', |
|
| 256 | - 'info_auteurs_par_tri' => 'Autores@partri@', |
|
| 257 | - 'info_auteurs_trouves' => 'Autores encontrados', |
|
| 258 | - 'info_authentification_externe' => 'Autentificación externa', |
|
| 259 | - 'info_avertissement' => 'Advertencia', |
|
| 260 | - 'info_barre_outils' => '¿con su barra de herramientas?', |
|
| 261 | - 'info_base_installee' => 'La estructura de tu base de datos ha sido instalada', |
|
| 262 | - 'info_bio' => 'Biografía', |
|
| 263 | - 'info_cache_desactive' => 'La caché está temporalmente desactivada.', |
|
| 264 | - 'info_chapeau' => 'Epígrafe', |
|
| 265 | - 'info_chapeau_2' => 'Epígrafe:', |
|
| 266 | - 'info_chemin_acces_1' => 'Opciones: <b>Camino de acceso en el directorio</b>', |
|
| 267 | - 'info_chemin_acces_2' => 'Debe configurar el camino de acceso a la información en el anuario. Esta información es indispensable para leer los perfiles de personas almacenadas en el anuario.', |
|
| 268 | - 'info_chemin_acces_annuaire' => 'Opciones: <b>Camino de acceso en el directorio</b>', |
|
| 269 | - 'info_choix_base' => 'Tercera etapa:', |
|
| 270 | - 'info_classement_1' => '<sup>o</sup> sobre @liste@', |
|
| 271 | - 'info_classement_2' => '<sup>o</sup> sobre @liste@', |
|
| 272 | - 'info_code_acces' => '¡No olvide sus códigos de acceso!', |
|
| 273 | - 'info_config_suivi' => 'Si esta dirección corresponde a una lista de correo, puede indicar aquí abajo la dirección en la cual los participantes del sitio pueden inscribirse. Esta dirección puede ser una URL (por ejemplo la página de inscripción a la lista por la web), o una dirección de correo electrónico con un asunto específico (por ejemplo: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 274 | - 'info_config_suivi_explication' => 'Puede suscribirse a la lista de correo de este sitio. Recibirás por correo electrónico los anuncios de artículos y de breves propuestas a la publicación.', |
|
| 275 | - 'info_confirmer_passe' => 'Confirmar la nueva contraseña:', |
|
| 276 | - 'info_conflit_edition_avis_non_sauvegarde' => 'Atención, los siguientes campos han sido modificados por otro lado. Sus modificaciones sobre estos campos no han sido por tanto registradas.', |
|
| 277 | - 'info_conflit_edition_differences' => 'Diferencias:', |
|
| 278 | - 'info_conflit_edition_version_enregistree' => 'La versión registrada:', |
|
| 279 | - 'info_conflit_edition_votre_version' => 'Su versión:', |
|
| 280 | - 'info_connexion_base' => 'Intento de conexión a la base', |
|
| 281 | - 'info_connexion_base_donnee' => 'Conexión a su base de datos', |
|
| 282 | - 'info_connexion_ldap_ok' => '<b>Se logró la conexión LDAP.</b><p> Puede pasar a la etapa siguiente.</p>', |
|
| 283 | - 'info_connexion_mysql' => 'Tu conexión SQL', |
|
| 284 | - 'info_connexion_ok' => 'La conexión ha funcionado.', |
|
| 285 | - 'info_contact' => 'Contacto', |
|
| 286 | - 'info_contenu_articles' => 'Contenido de los artículos', |
|
| 287 | - 'info_contributions' => 'Contribuciones', |
|
| 288 | - 'info_creation_paragraphe' => 'Para crear párrafos, deje simplemente líneas vacías.', |
|
| 289 | - 'info_creation_rubrique' => 'Antes de poder escribir artículos,<br /> debe crear al menos una sección.<br />', |
|
| 290 | - 'info_creation_tables' => 'Creación de las tablas de la base', |
|
| 291 | - 'info_creer_base' => '<b>Crear</b> una nueva base de datos:', |
|
| 292 | - 'info_dans_rubrique' => 'En la sección...', |
|
| 293 | - 'info_date_publication_anterieure' => 'Fecha de redacción anterior:', |
|
| 294 | - 'info_date_referencement' => 'FECHA DE SINDICACIÓN DE ESTE SITIO :', |
|
| 295 | - 'info_derniere_etape' => '¡Ya terminamos!', |
|
| 296 | - 'info_descriptif' => 'Descripción:', |
|
| 297 | - 'info_desinstaller_plugin' => 'suprime los datos y desactiva el plugin', |
|
| 298 | - 'info_discussion_cours' => 'Debates en curso', |
|
| 299 | - 'info_ecrire_article' => 'Antes de escribir artículos, debe crear una sección.', |
|
| 300 | - 'info_email_envoi' => 'Dirección de correo de envío (opcional)', |
|
| 301 | - 'info_email_envoi_txt' => 'Indique aqui la dirección a utilizar para enviar los correos electrónicos (por defecto, se utiliza la dirección del destinatario como dirección de envío):', |
|
| 302 | - 'info_email_webmestre' => 'Dirección de correo electrónico del webmaster', |
|
| 303 | - 'info_envoi_email_automatique' => 'Envío automático de correos electrónicos', |
|
| 304 | - 'info_envoyer_maintenant' => 'Enviar ahora', |
|
| 305 | - 'info_etape_suivante' => 'Pasar a la siguiente etapa ', |
|
| 306 | - 'info_etape_suivante_1' => 'Puede pasar a la siguiente etapa ', |
|
| 307 | - 'info_etape_suivante_2' => 'Puede pasar a la siguiente etapa', |
|
| 308 | - 'info_exceptions_proxy' => 'Excepciones para el proxy', |
|
| 309 | - 'info_exportation_base' => 'exportación de la base hacia @archive@', |
|
| 310 | - 'info_facilite_suivi_activite' => 'Para facilitar el seguimiento de la actividad editorial, SPIP puede enviar por correo electrónico, por ejemplo a un lista de redactores, anuncios de solicitudes de publicación y de validación de artículos.', |
|
| 311 | - 'info_fichiers_authent' => 'Archivos de autentificación «.htpasswd»', |
|
| 312 | - 'info_forums_abo_invites' => 'Su sitio tiene foros para abonados; en el sitio público se invita a los visitantes a que se registren.', |
|
| 313 | - 'info_gauche_admin_tech' => '<b>Esta página sólo es accesible para los responsables del sitio.</b><p> Da acceso a las distintas funciones de mantenimiento técnico. Algunas de ellas requieren un proceso de autentificación para el cual es necesario tener acceso por FTP al sitio web.</p>', |
|
| 314 | - 'info_gauche_admin_vider' => '<b>Esta página sólo es accesible para los responsables del sitio.</b><p> Da acceso a las distintas funciones de mantenimiento técnico. Algunas de ellas dan lugar a un proceso de autentificación para el cual es necesario tener acceso por FTP al sitio web.</p>', |
|
| 315 | - 'info_gauche_auteurs' => 'Aquí figuran todos los autores del sitio. |
|
| 164 | + // I |
|
| 165 | + 'ical_info1' => 'En esta página se presentan diferentes maneras de quedar en contacto con la vida del sitio.', |
|
| 166 | + 'ical_info2' => 'Para mayor información sobre todas estas técnicas, no dude en consultar <a href="@spipnet@">la documentación de SPIP</a>.', |
|
| 167 | + 'ical_info_calendrier' => 'Tiene dos calendarios a tu disposición. El primero es un plano del sitio que anuncia todos los artículos publicados. El segundo contiene los anuncios editoriales y sus últimos mensajes privados: sólo usted lo ve gracias a una clave personal, que podrá modificar en cualquier momento cambiando su contraseña.', |
|
| 168 | + 'ical_methode_http' => 'Descargar', |
|
| 169 | + 'ical_methode_webcal' => 'Sincronización (webcal://)', |
|
| 170 | + 'ical_texte_js' => 'Una línea de javascript le permite mostrar muy simplemente, en cualquier sitio que le pertenezca, los artículos recientes publicados en este sitio.', |
|
| 171 | + 'ical_texte_prive' => 'Este calendario, de uso estrictamente personal, le informa de la actividad editorial privada de este sitio (tareas y citas personales, artículos y breves propuestos...).', |
|
| 172 | + 'ical_texte_public' => 'Este calendario permite seguir la actividad pública del sitio (artículos y breves publicados).', |
|
| 173 | + 'ical_texte_rss' => 'Puede sindicar las novedades de este sitio con cualquier lector de archivos al formato XML/RSS (Rich Site Summary). Igualmente, SPIP puede leer las novedades publicadas en otros sitios que utilizan un formato de intercambio compatible (sitios sindicados). ', |
|
| 174 | + 'ical_titre_js' => 'Javascript', |
|
| 175 | + 'ical_titre_mailing' => 'Lista de correo', |
|
| 176 | + 'ical_titre_rss' => 'Archivos de sindicación', |
|
| 177 | + 'icone_accueil' => 'Mis tareas', |
|
| 178 | + 'icone_activer_cookie' => 'Activar la "cookie" de correspondencia', |
|
| 179 | + 'icone_activite' => 'Actividad', |
|
| 180 | + 'icone_admin_plugin' => 'Gestión de los plugins', |
|
| 181 | + 'icone_administration' => 'Administración', |
|
| 182 | + 'icone_afficher_auteurs' => 'Mostrar los autores', |
|
| 183 | + 'icone_afficher_visiteurs' => 'Mostrar los visitantes', |
|
| 184 | + 'icone_arret_discussion' => 'No participar más en este diálogo', |
|
| 185 | + 'icone_calendrier' => 'Calendario', |
|
| 186 | + 'icone_configuration' => 'Configuración', |
|
| 187 | + 'icone_creer_auteur' => 'Crear un nuevo autor o autora y asociarla a este artículo', |
|
| 188 | + 'icone_creer_mot_cle' => 'Crear una nueva palabra clave y asociarla a este artículo', |
|
| 189 | + 'icone_creer_rubrique_2' => 'Crear una nueva sección', |
|
| 190 | + 'icone_developpement' => 'Desarrollo', |
|
| 191 | + 'icone_edition' => 'Edición', |
|
| 192 | + 'icone_ma_langue' => 'Mi idioma', |
|
| 193 | + 'icone_mes_infos' => 'Mis datos', |
|
| 194 | + 'icone_mes_preferences' => 'Mis preferencias', |
|
| 195 | + 'icone_modifier_article' => 'Modificar este artículo', |
|
| 196 | + 'icone_modifier_rubrique' => 'Modificar esta sección', |
|
| 197 | + 'icone_publication' => 'Publicación', |
|
| 198 | + 'icone_relancer_signataire' => 'Recordar al firmante', |
|
| 199 | + 'icone_retour' => 'Volver', |
|
| 200 | + 'icone_retour_article' => 'Volver al artículo', |
|
| 201 | + 'icone_squelette' => 'Esqueletos', |
|
| 202 | + 'icone_suivi_publication' => 'Seguir la publicación', |
|
| 203 | + 'icone_supprimer_cookie' => 'Suprimir la "cookie" de correspondencia', |
|
| 204 | + 'icone_supprimer_rubrique' => 'Suprimir esta sección', |
|
| 205 | + 'icone_supprimer_signature' => 'Suprimir esta firma', |
|
| 206 | + 'icone_valider_signature' => 'Validar esta firma', |
|
| 207 | + 'image_administrer_rubrique' => 'Puedes administrar esta sección', |
|
| 208 | + 'impossible_modifier_login_auteur' => 'Imposible modificar el nombre de usuario.', |
|
| 209 | + 'impossible_modifier_pass_auteur' => 'Imposible modificar la contraseña.', |
|
| 210 | + 'info_1_article' => '1 artículo', |
|
| 211 | + 'info_1_auteur' => '1 autor/a', |
|
| 212 | + 'info_1_message' => '1 mensaje', |
|
| 213 | + 'info_1_mot_cle' => '1 palabra-clave', |
|
| 214 | + 'info_1_rubrique' => '1 sección', |
|
| 215 | + 'info_1_visiteur' => '1 visitante', |
|
| 216 | + 'info_activer_cookie' => 'Puede activar una <b>"cookie" de correspondencia</b>, que le permite actualizar páginas y pasar fácilmente de la parte pública a la redacción.', |
|
| 217 | + 'info_activer_menu_developpement' => 'Mostrar el menu desarrollo ', |
|
| 218 | + 'info_admin_etre_webmestre' => 'Darme derechos de webmaster', |
|
| 219 | + 'info_admin_je_suis_webmestre' => 'Soy <b>webmaster</b>', |
|
| 220 | + 'info_admin_statuer_webmestre' => 'Dar a este/a administrador/a derechos de webmaster', |
|
| 221 | + 'info_admin_webmestre' => 'Este/a administrador/a es <b>webmaster</b>', |
|
| 222 | + 'info_administrateur' => 'Administrador', |
|
| 223 | + 'info_administrateur_1' => 'Administrador', |
|
| 224 | + 'info_administrateur_2' => 'del sitio (<i>a utilizar con precaución</i>)', |
|
| 225 | + 'info_administrateur_site_01' => 'Si tiene derechos de administración, se ruega', |
|
| 226 | + 'info_administrateur_site_02' => 'presiona y visita este enlace', |
|
| 227 | + 'info_administrateurs' => 'Administradores', |
|
| 228 | + 'info_administrer_rubrique' => 'Puede administrar esta sección', |
|
| 229 | + 'info_adresse' => 'a la dirección:', |
|
| 230 | + 'info_adresse_desinscription' => 'Dirección para darse de baja:', |
|
| 231 | + 'info_adresse_url' => 'Dirección (URL) del sitio público', |
|
| 232 | + 'info_afficher_par_nb' => 'Visualizar por', |
|
| 233 | + 'info_aide_en_ligne' => 'Ayuda en línea de SPIP', |
|
| 234 | + 'info_ajout_image' => 'Cuando se añaden imágenes en tanto que documentos, SPIP puede crear automáticamente iconos de estas imágenes insertadas (miniaturas). Resulta útil, por ejemplo, para crear una galería o portafolio.', |
|
| 235 | + 'info_ajouter_rubrique' => 'Añadir otra sección para administrar:', |
|
| 236 | + 'info_annonce_nouveautes' => 'Anunciar novedades', |
|
| 237 | + 'info_article' => 'artículo', |
|
| 238 | + 'info_article_2' => 'artículos', |
|
| 239 | + 'info_article_a_paraitre' => 'Los artículos con fecha posterior a ser publicados', |
|
| 240 | + 'info_articles_02' => 'artículos', |
|
| 241 | + 'info_articles_2' => 'Artículos', |
|
| 242 | + 'info_articles_auteur' => 'Los artículos de este autor o autora', |
|
| 243 | + 'info_articles_miens' => 'Mis artículos', |
|
| 244 | + 'info_articles_tous' => 'Todos los artículos', |
|
| 245 | + 'info_articles_trouves' => 'Artículos localizados', |
|
| 246 | + 'info_attente_validation' => 'Sus artículos en espera de validación', |
|
| 247 | + 'info_aucun_article' => 'Ningún artículo', |
|
| 248 | + 'info_aucun_auteur' => 'Ningún autor', |
|
| 249 | + 'info_aucun_message' => 'Ningún mensaje', |
|
| 250 | + 'info_aucun_rubrique' => 'Ninguna sección', |
|
| 251 | + 'info_aujourdhui' => 'hoy:', |
|
| 252 | + 'info_auteur_gere_rubriques' => 'Este autor gestiona las secciones siguientes :', |
|
| 253 | + 'info_auteur_gere_toutes_rubriques' => 'este autor gestiona <b>todas las secciones</b>', |
|
| 254 | + 'info_auteur_gere_toutes_rubriques_2' => 'yo gestiono <b>todas las secciones</b>', |
|
| 255 | + 'info_auteurs' => 'Autores', |
|
| 256 | + 'info_auteurs_par_tri' => 'Autores@partri@', |
|
| 257 | + 'info_auteurs_trouves' => 'Autores encontrados', |
|
| 258 | + 'info_authentification_externe' => 'Autentificación externa', |
|
| 259 | + 'info_avertissement' => 'Advertencia', |
|
| 260 | + 'info_barre_outils' => '¿con su barra de herramientas?', |
|
| 261 | + 'info_base_installee' => 'La estructura de tu base de datos ha sido instalada', |
|
| 262 | + 'info_bio' => 'Biografía', |
|
| 263 | + 'info_cache_desactive' => 'La caché está temporalmente desactivada.', |
|
| 264 | + 'info_chapeau' => 'Epígrafe', |
|
| 265 | + 'info_chapeau_2' => 'Epígrafe:', |
|
| 266 | + 'info_chemin_acces_1' => 'Opciones: <b>Camino de acceso en el directorio</b>', |
|
| 267 | + 'info_chemin_acces_2' => 'Debe configurar el camino de acceso a la información en el anuario. Esta información es indispensable para leer los perfiles de personas almacenadas en el anuario.', |
|
| 268 | + 'info_chemin_acces_annuaire' => 'Opciones: <b>Camino de acceso en el directorio</b>', |
|
| 269 | + 'info_choix_base' => 'Tercera etapa:', |
|
| 270 | + 'info_classement_1' => '<sup>o</sup> sobre @liste@', |
|
| 271 | + 'info_classement_2' => '<sup>o</sup> sobre @liste@', |
|
| 272 | + 'info_code_acces' => '¡No olvide sus códigos de acceso!', |
|
| 273 | + 'info_config_suivi' => 'Si esta dirección corresponde a una lista de correo, puede indicar aquí abajo la dirección en la cual los participantes del sitio pueden inscribirse. Esta dirección puede ser una URL (por ejemplo la página de inscripción a la lista por la web), o una dirección de correo electrónico con un asunto específico (por ejemplo: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 274 | + 'info_config_suivi_explication' => 'Puede suscribirse a la lista de correo de este sitio. Recibirás por correo electrónico los anuncios de artículos y de breves propuestas a la publicación.', |
|
| 275 | + 'info_confirmer_passe' => 'Confirmar la nueva contraseña:', |
|
| 276 | + 'info_conflit_edition_avis_non_sauvegarde' => 'Atención, los siguientes campos han sido modificados por otro lado. Sus modificaciones sobre estos campos no han sido por tanto registradas.', |
|
| 277 | + 'info_conflit_edition_differences' => 'Diferencias:', |
|
| 278 | + 'info_conflit_edition_version_enregistree' => 'La versión registrada:', |
|
| 279 | + 'info_conflit_edition_votre_version' => 'Su versión:', |
|
| 280 | + 'info_connexion_base' => 'Intento de conexión a la base', |
|
| 281 | + 'info_connexion_base_donnee' => 'Conexión a su base de datos', |
|
| 282 | + 'info_connexion_ldap_ok' => '<b>Se logró la conexión LDAP.</b><p> Puede pasar a la etapa siguiente.</p>', |
|
| 283 | + 'info_connexion_mysql' => 'Tu conexión SQL', |
|
| 284 | + 'info_connexion_ok' => 'La conexión ha funcionado.', |
|
| 285 | + 'info_contact' => 'Contacto', |
|
| 286 | + 'info_contenu_articles' => 'Contenido de los artículos', |
|
| 287 | + 'info_contributions' => 'Contribuciones', |
|
| 288 | + 'info_creation_paragraphe' => 'Para crear párrafos, deje simplemente líneas vacías.', |
|
| 289 | + 'info_creation_rubrique' => 'Antes de poder escribir artículos,<br /> debe crear al menos una sección.<br />', |
|
| 290 | + 'info_creation_tables' => 'Creación de las tablas de la base', |
|
| 291 | + 'info_creer_base' => '<b>Crear</b> una nueva base de datos:', |
|
| 292 | + 'info_dans_rubrique' => 'En la sección...', |
|
| 293 | + 'info_date_publication_anterieure' => 'Fecha de redacción anterior:', |
|
| 294 | + 'info_date_referencement' => 'FECHA DE SINDICACIÓN DE ESTE SITIO :', |
|
| 295 | + 'info_derniere_etape' => '¡Ya terminamos!', |
|
| 296 | + 'info_descriptif' => 'Descripción:', |
|
| 297 | + 'info_desinstaller_plugin' => 'suprime los datos y desactiva el plugin', |
|
| 298 | + 'info_discussion_cours' => 'Debates en curso', |
|
| 299 | + 'info_ecrire_article' => 'Antes de escribir artículos, debe crear una sección.', |
|
| 300 | + 'info_email_envoi' => 'Dirección de correo de envío (opcional)', |
|
| 301 | + 'info_email_envoi_txt' => 'Indique aqui la dirección a utilizar para enviar los correos electrónicos (por defecto, se utiliza la dirección del destinatario como dirección de envío):', |
|
| 302 | + 'info_email_webmestre' => 'Dirección de correo electrónico del webmaster', |
|
| 303 | + 'info_envoi_email_automatique' => 'Envío automático de correos electrónicos', |
|
| 304 | + 'info_envoyer_maintenant' => 'Enviar ahora', |
|
| 305 | + 'info_etape_suivante' => 'Pasar a la siguiente etapa ', |
|
| 306 | + 'info_etape_suivante_1' => 'Puede pasar a la siguiente etapa ', |
|
| 307 | + 'info_etape_suivante_2' => 'Puede pasar a la siguiente etapa', |
|
| 308 | + 'info_exceptions_proxy' => 'Excepciones para el proxy', |
|
| 309 | + 'info_exportation_base' => 'exportación de la base hacia @archive@', |
|
| 310 | + 'info_facilite_suivi_activite' => 'Para facilitar el seguimiento de la actividad editorial, SPIP puede enviar por correo electrónico, por ejemplo a un lista de redactores, anuncios de solicitudes de publicación y de validación de artículos.', |
|
| 311 | + 'info_fichiers_authent' => 'Archivos de autentificación «.htpasswd»', |
|
| 312 | + 'info_forums_abo_invites' => 'Su sitio tiene foros para abonados; en el sitio público se invita a los visitantes a que se registren.', |
|
| 313 | + 'info_gauche_admin_tech' => '<b>Esta página sólo es accesible para los responsables del sitio.</b><p> Da acceso a las distintas funciones de mantenimiento técnico. Algunas de ellas requieren un proceso de autentificación para el cual es necesario tener acceso por FTP al sitio web.</p>', |
|
| 314 | + 'info_gauche_admin_vider' => '<b>Esta página sólo es accesible para los responsables del sitio.</b><p> Da acceso a las distintas funciones de mantenimiento técnico. Algunas de ellas dan lugar a un proceso de autentificación para el cual es necesario tener acceso por FTP al sitio web.</p>', |
|
| 315 | + 'info_gauche_auteurs' => 'Aquí figuran todos los autores del sitio. |
|
| 316 | 316 | Su estatus se indica mediante el color de su icono (administrador/a = verde; redactor/a = amarillo).', |
| 317 | - 'info_gauche_auteurs_exterieurs' => 'Los autores exteriores, sin acceso al sitio, están indicados con un icono azul; los que están borrados por un icono gris.', |
|
| 318 | - 'info_gauche_messagerie' => 'La mensajería permite comunicarse, crear recordatorios para traer a la memoria algo o publicar anuncios (en el caso de pertenecer al grupo de administración).', |
|
| 319 | - 'info_gauche_statistiques_referers' => 'Esta página presenta la lista de los <i>referers</i>, es decir, de los sitios que contienen enlaces que llevan a su propio sitio, sólo para ayer y hoy; esta lista se pone a cero cada 24 horas.', |
|
| 320 | - 'info_gauche_visiteurs_enregistres' => 'Aquí se encuentran las personas registradas en el espacio público del sitio (foros con suscripción).', |
|
| 321 | - 'info_generation_miniatures_images' => 'Generación de las miniaturas de imágenes', |
|
| 322 | - 'info_gerer_trad_objets' => '@objets@: manejar los vínculos de traducción', |
|
| 323 | - 'info_hebergeur_desactiver_envoi_email' => 'Algunos servidores no permiten el envío automático de correos electrónicos. En esos casos, las siguientes funciones de SPIP no darán ningún resultado.', |
|
| 324 | - 'info_hier' => 'ayer:', |
|
| 325 | - 'info_identification_publique' => 'Su identidad pública...', |
|
| 326 | - 'info_image_process' => 'Por favor seleccione el mejor método de fabricación de viñetas pinchando en la imágen correspondiente. ', |
|
| 327 | - 'info_image_process2' => 'Si no aparece ninguna imagen, es que el servidor que alberga su sitio web no está configurado para usar estas herramientas. Si quiere utilizarlas, contacte al responsable técnico y solicite las extensiones «GD» o «Imagick».', |
|
| 328 | - 'info_images_auto' => 'Imágenes calculadas automáticamente', |
|
| 329 | - 'info_informations_personnelles' => 'Información personal', |
|
| 330 | - 'info_inscription' => 'Inscripción el', |
|
| 331 | - 'info_inscription_automatique' => 'Inscripcción automática de nuevos redactores', |
|
| 332 | - 'info_jeu_caractere' => 'Juego de caracteres del sitio', |
|
| 333 | - 'info_jours' => 'días', |
|
| 334 | - 'info_laisser_champs_vides' => 'dejar estos campos vacíos)', |
|
| 335 | - 'info_langues' => 'Idiomas del sitio', |
|
| 336 | - 'info_ldap_ok' => 'La autentificación LDAP está instalada.', |
|
| 337 | - 'info_lien_hypertexte' => 'Enlace hipertexto:', |
|
| 338 | - 'info_liste_nouveautes_envoyee' => 'La lista de novedades ha sido enviada', |
|
| 339 | - 'info_liste_redacteurs_connectes' => 'Lista de redactores conectados', |
|
| 340 | - 'info_login_existant' => 'Este nombre de usuario ya existe.', |
|
| 341 | - 'info_login_trop_court' => 'Identificador de usuario muy corto.', |
|
| 342 | - 'info_login_trop_court_car_pluriel' => 'El identificador de usuario debe contener por lo menos @nb@ caracteres.', |
|
| 343 | - 'info_logos' => 'Los logos', |
|
| 344 | - 'info_maximum' => 'máximo:', |
|
| 345 | - 'info_meme_rubrique' => 'En la misma sección', |
|
| 346 | - 'info_message_en_redaction' => 'Sus mensajes en curso de redacción', |
|
| 347 | - 'info_message_technique' => 'Mensaje técnico:', |
|
| 348 | - 'info_messagerie_interne' => 'Mensajería interna', |
|
| 349 | - 'info_mise_a_niveau_base' => 'actualización de su base SQL', |
|
| 350 | - 'info_mise_a_niveau_base_2' => '{{¡ATENCIÓN!}} Ha instalado una versión de los archivos SPIP {anterior} a la que se encontraba antes en este sitio: corre el riesgo de perder la base de datos y que el sitio deje de funcionar.<br />{{Vuelva a instalar los archivos de SPIP.}}', |
|
| 351 | - 'info_modification_enregistree' => 'Su modificación fue grabada', |
|
| 352 | - 'info_modifier_auteur' => 'Modificar el autor:', |
|
| 353 | - 'info_modifier_rubrique' => 'Modificar la sección', |
|
| 354 | - 'info_modifier_titre' => 'Modificar @titre@', |
|
| 355 | - 'info_mon_site_spip' => 'Mi sitio SPIP', |
|
| 356 | - 'info_moyenne' => 'promedio:', |
|
| 357 | - 'info_multi_cet_article' => 'Idioma de este artículo:', |
|
| 358 | - 'info_multi_langues_choisies' => 'A continuación seleccione los idiomas que quiera poner a disposición de los redactores de su sitio. |
|
| 317 | + 'info_gauche_auteurs_exterieurs' => 'Los autores exteriores, sin acceso al sitio, están indicados con un icono azul; los que están borrados por un icono gris.', |
|
| 318 | + 'info_gauche_messagerie' => 'La mensajería permite comunicarse, crear recordatorios para traer a la memoria algo o publicar anuncios (en el caso de pertenecer al grupo de administración).', |
|
| 319 | + 'info_gauche_statistiques_referers' => 'Esta página presenta la lista de los <i>referers</i>, es decir, de los sitios que contienen enlaces que llevan a su propio sitio, sólo para ayer y hoy; esta lista se pone a cero cada 24 horas.', |
|
| 320 | + 'info_gauche_visiteurs_enregistres' => 'Aquí se encuentran las personas registradas en el espacio público del sitio (foros con suscripción).', |
|
| 321 | + 'info_generation_miniatures_images' => 'Generación de las miniaturas de imágenes', |
|
| 322 | + 'info_gerer_trad_objets' => '@objets@: manejar los vínculos de traducción', |
|
| 323 | + 'info_hebergeur_desactiver_envoi_email' => 'Algunos servidores no permiten el envío automático de correos electrónicos. En esos casos, las siguientes funciones de SPIP no darán ningún resultado.', |
|
| 324 | + 'info_hier' => 'ayer:', |
|
| 325 | + 'info_identification_publique' => 'Su identidad pública...', |
|
| 326 | + 'info_image_process' => 'Por favor seleccione el mejor método de fabricación de viñetas pinchando en la imágen correspondiente. ', |
|
| 327 | + 'info_image_process2' => 'Si no aparece ninguna imagen, es que el servidor que alberga su sitio web no está configurado para usar estas herramientas. Si quiere utilizarlas, contacte al responsable técnico y solicite las extensiones «GD» o «Imagick».', |
|
| 328 | + 'info_images_auto' => 'Imágenes calculadas automáticamente', |
|
| 329 | + 'info_informations_personnelles' => 'Información personal', |
|
| 330 | + 'info_inscription' => 'Inscripción el', |
|
| 331 | + 'info_inscription_automatique' => 'Inscripcción automática de nuevos redactores', |
|
| 332 | + 'info_jeu_caractere' => 'Juego de caracteres del sitio', |
|
| 333 | + 'info_jours' => 'días', |
|
| 334 | + 'info_laisser_champs_vides' => 'dejar estos campos vacíos)', |
|
| 335 | + 'info_langues' => 'Idiomas del sitio', |
|
| 336 | + 'info_ldap_ok' => 'La autentificación LDAP está instalada.', |
|
| 337 | + 'info_lien_hypertexte' => 'Enlace hipertexto:', |
|
| 338 | + 'info_liste_nouveautes_envoyee' => 'La lista de novedades ha sido enviada', |
|
| 339 | + 'info_liste_redacteurs_connectes' => 'Lista de redactores conectados', |
|
| 340 | + 'info_login_existant' => 'Este nombre de usuario ya existe.', |
|
| 341 | + 'info_login_trop_court' => 'Identificador de usuario muy corto.', |
|
| 342 | + 'info_login_trop_court_car_pluriel' => 'El identificador de usuario debe contener por lo menos @nb@ caracteres.', |
|
| 343 | + 'info_logos' => 'Los logos', |
|
| 344 | + 'info_maximum' => 'máximo:', |
|
| 345 | + 'info_meme_rubrique' => 'En la misma sección', |
|
| 346 | + 'info_message_en_redaction' => 'Sus mensajes en curso de redacción', |
|
| 347 | + 'info_message_technique' => 'Mensaje técnico:', |
|
| 348 | + 'info_messagerie_interne' => 'Mensajería interna', |
|
| 349 | + 'info_mise_a_niveau_base' => 'actualización de su base SQL', |
|
| 350 | + 'info_mise_a_niveau_base_2' => '{{¡ATENCIÓN!}} Ha instalado una versión de los archivos SPIP {anterior} a la que se encontraba antes en este sitio: corre el riesgo de perder la base de datos y que el sitio deje de funcionar.<br />{{Vuelva a instalar los archivos de SPIP.}}', |
|
| 351 | + 'info_modification_enregistree' => 'Su modificación fue grabada', |
|
| 352 | + 'info_modifier_auteur' => 'Modificar el autor:', |
|
| 353 | + 'info_modifier_rubrique' => 'Modificar la sección', |
|
| 354 | + 'info_modifier_titre' => 'Modificar @titre@', |
|
| 355 | + 'info_mon_site_spip' => 'Mi sitio SPIP', |
|
| 356 | + 'info_moyenne' => 'promedio:', |
|
| 357 | + 'info_multi_cet_article' => 'Idioma de este artículo:', |
|
| 358 | + 'info_multi_langues_choisies' => 'A continuación seleccione los idiomas que quiera poner a disposición de los redactores de su sitio. |
|
| 359 | 359 | Los idiomas que ya se utilizan en el sitio (al principio de la lista) no pueden ser desactivados. |
| 360 | 360 | ', |
| 361 | - 'info_multi_objets' => '@objets@: activar el menú de idioma', |
|
| 362 | - 'info_multi_secteurs' => '... sólo para las secciones situadas en la raíz?', |
|
| 363 | - 'info_nb_articles' => '@nb@ artículos', |
|
| 364 | - 'info_nb_auteurs' => '@nb@ autores', |
|
| 365 | - 'info_nb_messages' => '@nb@ mensajes', |
|
| 366 | - 'info_nb_mots_cles' => '@nb@ palabras-claves', |
|
| 367 | - 'info_nb_rubriques' => '@nb@ secciones', |
|
| 368 | - 'info_nb_visiteurs' => '@nb@ visitantes', |
|
| 369 | - 'info_nom' => 'Nombre', |
|
| 370 | - 'info_nom_destinataire' => 'Nombre del destinatario o destinataria', |
|
| 371 | - 'info_nom_pas_conforme' => 'las etiquetas HTML no están permitidas', |
|
| 372 | - 'info_nom_site' => 'Nombre de tu sitio', |
|
| 373 | - 'info_nombre_articles' => '@nb_articles@ artículos,', |
|
| 374 | - 'info_nombre_rubriques' => '@nb_rubriques@ secciones,', |
|
| 375 | - 'info_nombre_sites' => '@nb_sites@ sitios,', |
|
| 376 | - 'info_non_deplacer' => 'No desplazar...', |
|
| 377 | - 'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP puede enviar regularmente la lista de las novedades del sitio (artículos y breves).', |
|
| 378 | - 'info_non_envoi_liste_nouveautes' => 'No enviar la lista de novedades', |
|
| 379 | - 'info_non_modifiable' => 'no puede ser modificado', |
|
| 380 | - 'info_non_suppression_mot_cle' => 'No deseo suprimir esta palabra clave', |
|
| 381 | - 'info_notes' => 'Notas', |
|
| 382 | - 'info_nouvel_article' => 'Nuevo artículo', |
|
| 383 | - 'info_nouvelle_traduction' => 'Nueva traducción:', |
|
| 384 | - 'info_numero_article' => 'ARTÍCULO NÚMERO:', |
|
| 385 | - 'info_obligatoire_02' => '(obligatorio)', |
|
| 386 | - 'info_option_accepter_visiteurs' => 'Aceptar la inscripción de los visitantes del sitio público', |
|
| 387 | - 'info_option_ne_pas_accepter_visiteurs' => 'Rechazar la inscripción de visitantes', |
|
| 388 | - 'info_options_avancees' => 'OPCIONES AVANZADAS', |
|
| 389 | - 'info_ou' => 'o...', |
|
| 390 | - 'info_page_interdite' => 'Página no accesible', |
|
| 391 | - 'info_par_nom' => 'por nombre', |
|
| 392 | - 'info_par_nombre_article' => 'por número de artículos', |
|
| 393 | - 'info_par_statut' => 'por estatus', |
|
| 394 | - 'info_par_tri' => '’(por @tri@)’', |
|
| 395 | - 'info_passe_trop_court' => 'Contraseña demasiado corta', |
|
| 396 | - 'info_passe_trop_court_car_pluriel' => 'La contraseña debe contener al menos @nb@ caracteres.', |
|
| 397 | - 'info_passes_identiques' => 'Hay diferencias entre las dos contraseñas', |
|
| 398 | - 'info_plus_cinq_car' => 'más de 5 caracteres', |
|
| 399 | - 'info_plus_cinq_car_2' => '(Más de 5 caracteres)', |
|
| 400 | - 'info_plus_trois_car' => '(Más de tres caracteres)', |
|
| 401 | - 'info_popularite' => 'Popularidad: @popularite@ Visitas: @visites@', |
|
| 402 | - 'info_post_scriptum' => 'Post Scríptum', |
|
| 403 | - 'info_post_scriptum_2' => 'Post Scríptum:', |
|
| 404 | - 'info_pour' => 'para', |
|
| 405 | - 'info_preview_texte' => 'Es posible previsualizar los diferentes elementos editoriales del sitio que tengan por lo menos el estatuto de "propuesto", así como los elementos que están en curso de redacción y de los que seamos el autor. Esta función debe estar disponible para los administradores, los redactores, o para nadie ? |
|
| 361 | + 'info_multi_objets' => '@objets@: activar el menú de idioma', |
|
| 362 | + 'info_multi_secteurs' => '... sólo para las secciones situadas en la raíz?', |
|
| 363 | + 'info_nb_articles' => '@nb@ artículos', |
|
| 364 | + 'info_nb_auteurs' => '@nb@ autores', |
|
| 365 | + 'info_nb_messages' => '@nb@ mensajes', |
|
| 366 | + 'info_nb_mots_cles' => '@nb@ palabras-claves', |
|
| 367 | + 'info_nb_rubriques' => '@nb@ secciones', |
|
| 368 | + 'info_nb_visiteurs' => '@nb@ visitantes', |
|
| 369 | + 'info_nom' => 'Nombre', |
|
| 370 | + 'info_nom_destinataire' => 'Nombre del destinatario o destinataria', |
|
| 371 | + 'info_nom_pas_conforme' => 'las etiquetas HTML no están permitidas', |
|
| 372 | + 'info_nom_site' => 'Nombre de tu sitio', |
|
| 373 | + 'info_nombre_articles' => '@nb_articles@ artículos,', |
|
| 374 | + 'info_nombre_rubriques' => '@nb_rubriques@ secciones,', |
|
| 375 | + 'info_nombre_sites' => '@nb_sites@ sitios,', |
|
| 376 | + 'info_non_deplacer' => 'No desplazar...', |
|
| 377 | + 'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP puede enviar regularmente la lista de las novedades del sitio (artículos y breves).', |
|
| 378 | + 'info_non_envoi_liste_nouveautes' => 'No enviar la lista de novedades', |
|
| 379 | + 'info_non_modifiable' => 'no puede ser modificado', |
|
| 380 | + 'info_non_suppression_mot_cle' => 'No deseo suprimir esta palabra clave', |
|
| 381 | + 'info_notes' => 'Notas', |
|
| 382 | + 'info_nouvel_article' => 'Nuevo artículo', |
|
| 383 | + 'info_nouvelle_traduction' => 'Nueva traducción:', |
|
| 384 | + 'info_numero_article' => 'ARTÍCULO NÚMERO:', |
|
| 385 | + 'info_obligatoire_02' => '(obligatorio)', |
|
| 386 | + 'info_option_accepter_visiteurs' => 'Aceptar la inscripción de los visitantes del sitio público', |
|
| 387 | + 'info_option_ne_pas_accepter_visiteurs' => 'Rechazar la inscripción de visitantes', |
|
| 388 | + 'info_options_avancees' => 'OPCIONES AVANZADAS', |
|
| 389 | + 'info_ou' => 'o...', |
|
| 390 | + 'info_page_interdite' => 'Página no accesible', |
|
| 391 | + 'info_par_nom' => 'por nombre', |
|
| 392 | + 'info_par_nombre_article' => 'por número de artículos', |
|
| 393 | + 'info_par_statut' => 'por estatus', |
|
| 394 | + 'info_par_tri' => '’(por @tri@)’', |
|
| 395 | + 'info_passe_trop_court' => 'Contraseña demasiado corta', |
|
| 396 | + 'info_passe_trop_court_car_pluriel' => 'La contraseña debe contener al menos @nb@ caracteres.', |
|
| 397 | + 'info_passes_identiques' => 'Hay diferencias entre las dos contraseñas', |
|
| 398 | + 'info_plus_cinq_car' => 'más de 5 caracteres', |
|
| 399 | + 'info_plus_cinq_car_2' => '(Más de 5 caracteres)', |
|
| 400 | + 'info_plus_trois_car' => '(Más de tres caracteres)', |
|
| 401 | + 'info_popularite' => 'Popularidad: @popularite@ Visitas: @visites@', |
|
| 402 | + 'info_post_scriptum' => 'Post Scríptum', |
|
| 403 | + 'info_post_scriptum_2' => 'Post Scríptum:', |
|
| 404 | + 'info_pour' => 'para', |
|
| 405 | + 'info_preview_texte' => 'Es posible previsualizar los diferentes elementos editoriales del sitio que tengan por lo menos el estatuto de "propuesto", así como los elementos que están en curso de redacción y de los que seamos el autor. Esta función debe estar disponible para los administradores, los redactores, o para nadie ? |
|
| 406 | 406 | |
| 407 | 407 | ', |
| 408 | - 'info_procedez_par_etape' => 'proceda etapa por etapa', |
|
| 409 | - 'info_procedure_maj_version' => 'Se debe ejecutar el proceso de actualización de la base de datos a esta nueva versión de SPIP.', |
|
| 410 | - 'info_proxy_ok' => 'Test del proxy logrado.', |
|
| 411 | - 'info_ps' => 'P.-S.', |
|
| 412 | - 'info_publier' => 'publicar', |
|
| 413 | - 'info_publies' => 'Sus artículos publicados', |
|
| 414 | - 'info_question_accepter_visiteurs' => 'Si en los esqueletos de su sitio está previsto el registro de visitantes sin acceso al espacio privado, tendrá que activar la opción siguiente:', |
|
| 415 | - 'info_question_inscription_nouveaux_redacteurs' => '¿Se aceptan inscripciones de nuevas redactoras y redactores |
|
| 408 | + 'info_procedez_par_etape' => 'proceda etapa por etapa', |
|
| 409 | + 'info_procedure_maj_version' => 'Se debe ejecutar el proceso de actualización de la base de datos a esta nueva versión de SPIP.', |
|
| 410 | + 'info_proxy_ok' => 'Test del proxy logrado.', |
|
| 411 | + 'info_ps' => 'P.-S.', |
|
| 412 | + 'info_publier' => 'publicar', |
|
| 413 | + 'info_publies' => 'Sus artículos publicados', |
|
| 414 | + 'info_question_accepter_visiteurs' => 'Si en los esqueletos de su sitio está previsto el registro de visitantes sin acceso al espacio privado, tendrá que activar la opción siguiente:', |
|
| 415 | + 'info_question_inscription_nouveaux_redacteurs' => '¿Se aceptan inscripciones de nuevas redactoras y redactores |
|
| 416 | 416 | desde el sitio público? Si se aceptan, las personas que visitan el sitio |
| 417 | 417 | podrán inscribirse desde un formulario automatizado y accederán entonces |
| 418 | 418 | al espacio privado para proponer sus propios artículos. <div class="notice">Durante |
@@ -420,471 +420,471 @@ discard block |
||
| 420 | 420 | códigos de acceso al sitio privado. Ciertos proveedores de hospedaje desactivan |
| 421 | 421 | el envío de correos electrónicos desde sus servidores: en tal caso, se hace |
| 422 | 422 | imposible la inscripción automática.</div>', |
| 423 | - 'info_qui_edite' => '@nom_auteur_modif@ ha trabajado en este contenido hace @date_diff@ minutos', |
|
| 424 | - 'info_racine_site' => 'Raíz del sitio', |
|
| 425 | - 'info_recharger_page' => 'Por favor recargue esta página dentro de un momento', |
|
| 426 | - 'info_recherche_auteur_zero' => 'No hay resultados para « @cherche_auteur@ ».', |
|
| 427 | - 'info_recommencer' => 'Vuelva a empezar.', |
|
| 428 | - 'info_redacteur_1' => 'Redactor/a', |
|
| 429 | - 'info_redacteur_2' => 'teniendo acceso al espacio privado (<i>recomendado</i>)', |
|
| 430 | - 'info_redacteurs' => 'Redactores/as', |
|
| 431 | - 'info_redaction_en_cours' => 'EN CURSO DE REDACCIÓN', |
|
| 432 | - 'info_redirection' => 'Redirección', |
|
| 433 | - 'info_redirection_activee' => 'La redirección está activada.', |
|
| 434 | - 'info_redirection_boucle' => 'Usted esta probando redirigir el artículo hacía el mismo.', |
|
| 435 | - 'info_redirection_desactivee' => 'La redirección se ha suprimido.', |
|
| 436 | - 'info_refuses' => 'Sus artículos rechazados', |
|
| 437 | - 'info_reglage_ldap' => 'Opciones: <b>Ajustes de la importación LDAP</b>', |
|
| 438 | - 'info_renvoi_article' => '<b>Redirección.</b> Este artículo reenvía a la página:', |
|
| 439 | - 'info_reserve_admin' => 'Sólo el equipo de administración puede modificar esta dirección', |
|
| 440 | - 'info_restreindre_rubrique' => 'Limitar la gestión a la sección:', |
|
| 441 | - 'info_resultat_recherche' => 'Resultados de la búsqueda:', |
|
| 442 | - 'info_rubriques' => 'Secciones', |
|
| 443 | - 'info_rubriques_02' => 'secciones', |
|
| 444 | - 'info_rubriques_trouvees' => 'Secciones localizadas', |
|
| 445 | - 'info_sans_titre' => 'Sin título', |
|
| 446 | - 'info_selection_chemin_acces' => 'Seleccione el camino de acceso en el anuario', |
|
| 447 | - 'info_signatures' => 'firmas', |
|
| 448 | - 'info_site' => 'Sitio', |
|
| 449 | - 'info_site_2' => 'sitio:', |
|
| 450 | - 'info_site_min' => 'sitio', |
|
| 451 | - 'info_site_reference_2' => 'Sitio referenciado', |
|
| 452 | - 'info_site_web' => 'Sitio Web:', |
|
| 453 | - 'info_sites' => 'sitios', |
|
| 454 | - 'info_sites_lies_mot' => 'Los sitios referenciados ligados a esta palabra clave', |
|
| 455 | - 'info_sites_proxy' => 'Utilizar un proxy', |
|
| 456 | - 'info_sites_trouves' => 'Sitios hallados', |
|
| 457 | - 'info_sous_titre' => 'Subtítulo', |
|
| 458 | - 'info_statut_administrateur' => 'Administrador/a', |
|
| 459 | - 'info_statut_auteur' => 'Estatus de este autor o autora:', |
|
| 460 | - 'info_statut_auteur_2' => 'Soy', |
|
| 461 | - 'info_statut_auteur_a_confirmer' => 'Inscripción por confirmar', |
|
| 462 | - 'info_statut_auteur_autre' => 'Otro papel:', |
|
| 463 | - 'info_statut_redacteur' => 'Redactor/a', |
|
| 464 | - 'info_statut_utilisateurs_1' => 'Estatus por defecto de usuarios importados', |
|
| 465 | - 'info_statut_utilisateurs_2' => 'Elija el estatus atribuido a las personas presentes en el directorio LDAP cuando se conectan por primera vez. Posteriormente podrá modificar este valor para cada autor en cada caso.', |
|
| 466 | - 'info_suivi_activite' => 'Seguimiento de la actividad editorial', |
|
| 467 | - 'info_surtitre' => 'Antetítulo:', |
|
| 468 | - 'info_syndication_integrale_1' => 'Su sitio propone archivos de sindicación (ver «<a href="@url@">@titre@</a>»).', |
|
| 469 | - 'info_syndication_integrale_2' => '¿Desea transmitir íntegramente los artículos, o sólo un resumen compuesto por unos cientos de caracteres?', |
|
| 470 | - 'info_table_prefix' => 'Puede modificar el prefijo del nombre de las tablas de datos (es indispensable si se quiere instalar varios sitios en la misma base de datos). Este prefijo debe ser en letras minúsculas, no acentuadas, y sin espacios. ', |
|
| 471 | - 'info_taille_maximale_images' => 'SPIP comprobará el tamaño máximo de imagen que puede gestionar (en millones de pixels).<br /> Las imágenes mayores no se reducirán.', |
|
| 472 | - 'info_taille_maximale_vignette' => 'Tamaño máximo de los iconos generados por el sistema:', |
|
| 473 | - 'info_terminer_installation' => 'Puede terminar ahora el procedimiento de instalación estándar.', |
|
| 474 | - 'info_texte' => 'Texto', |
|
| 475 | - 'info_texte_explicatif' => 'Texto explicativo', |
|
| 476 | - 'info_texte_long' => '(el texto es largo: aparece en varias partes que serán reunidas tras validación)', |
|
| 477 | - 'info_texte_message' => 'Texto de su mensaje', |
|
| 478 | - 'info_texte_message_02' => 'Texto del mensaje', |
|
| 479 | - 'info_titre' => 'Título:', |
|
| 480 | - 'info_total' => 'total:', |
|
| 481 | - 'info_tous_articles_en_redaction' => 'Todos los artículos en curso de redacción', |
|
| 482 | - 'info_tous_articles_presents' => 'Todos los artículos publicados en esta sección', |
|
| 483 | - 'info_tous_articles_refuses' => 'Todos los artículos rechazados', |
|
| 484 | - 'info_tous_les' => 'todos los:', |
|
| 485 | - 'info_tout_site' => 'Todo el sitio', |
|
| 486 | - 'info_tout_site2' => 'El artículo no ha sido traducido a este idioma.', |
|
| 487 | - 'info_tout_site3' => 'El artículo ha sido traducido a este idioma, pero posteriormente se han aportado modificaciones al artículo de referencia. La traducción debe ser actualizada.', |
|
| 488 | - 'info_tout_site4' => 'El artículo ha sido traducido a este idioma, y la traducción está al día. ', |
|
| 489 | - 'info_tout_site5' => 'Artículo original', |
|
| 490 | - 'info_tout_site6' => '<b>Atención:</b> sólo se muestran los artículos originales. |
|
| 423 | + 'info_qui_edite' => '@nom_auteur_modif@ ha trabajado en este contenido hace @date_diff@ minutos', |
|
| 424 | + 'info_racine_site' => 'Raíz del sitio', |
|
| 425 | + 'info_recharger_page' => 'Por favor recargue esta página dentro de un momento', |
|
| 426 | + 'info_recherche_auteur_zero' => 'No hay resultados para « @cherche_auteur@ ».', |
|
| 427 | + 'info_recommencer' => 'Vuelva a empezar.', |
|
| 428 | + 'info_redacteur_1' => 'Redactor/a', |
|
| 429 | + 'info_redacteur_2' => 'teniendo acceso al espacio privado (<i>recomendado</i>)', |
|
| 430 | + 'info_redacteurs' => 'Redactores/as', |
|
| 431 | + 'info_redaction_en_cours' => 'EN CURSO DE REDACCIÓN', |
|
| 432 | + 'info_redirection' => 'Redirección', |
|
| 433 | + 'info_redirection_activee' => 'La redirección está activada.', |
|
| 434 | + 'info_redirection_boucle' => 'Usted esta probando redirigir el artículo hacía el mismo.', |
|
| 435 | + 'info_redirection_desactivee' => 'La redirección se ha suprimido.', |
|
| 436 | + 'info_refuses' => 'Sus artículos rechazados', |
|
| 437 | + 'info_reglage_ldap' => 'Opciones: <b>Ajustes de la importación LDAP</b>', |
|
| 438 | + 'info_renvoi_article' => '<b>Redirección.</b> Este artículo reenvía a la página:', |
|
| 439 | + 'info_reserve_admin' => 'Sólo el equipo de administración puede modificar esta dirección', |
|
| 440 | + 'info_restreindre_rubrique' => 'Limitar la gestión a la sección:', |
|
| 441 | + 'info_resultat_recherche' => 'Resultados de la búsqueda:', |
|
| 442 | + 'info_rubriques' => 'Secciones', |
|
| 443 | + 'info_rubriques_02' => 'secciones', |
|
| 444 | + 'info_rubriques_trouvees' => 'Secciones localizadas', |
|
| 445 | + 'info_sans_titre' => 'Sin título', |
|
| 446 | + 'info_selection_chemin_acces' => 'Seleccione el camino de acceso en el anuario', |
|
| 447 | + 'info_signatures' => 'firmas', |
|
| 448 | + 'info_site' => 'Sitio', |
|
| 449 | + 'info_site_2' => 'sitio:', |
|
| 450 | + 'info_site_min' => 'sitio', |
|
| 451 | + 'info_site_reference_2' => 'Sitio referenciado', |
|
| 452 | + 'info_site_web' => 'Sitio Web:', |
|
| 453 | + 'info_sites' => 'sitios', |
|
| 454 | + 'info_sites_lies_mot' => 'Los sitios referenciados ligados a esta palabra clave', |
|
| 455 | + 'info_sites_proxy' => 'Utilizar un proxy', |
|
| 456 | + 'info_sites_trouves' => 'Sitios hallados', |
|
| 457 | + 'info_sous_titre' => 'Subtítulo', |
|
| 458 | + 'info_statut_administrateur' => 'Administrador/a', |
|
| 459 | + 'info_statut_auteur' => 'Estatus de este autor o autora:', |
|
| 460 | + 'info_statut_auteur_2' => 'Soy', |
|
| 461 | + 'info_statut_auteur_a_confirmer' => 'Inscripción por confirmar', |
|
| 462 | + 'info_statut_auteur_autre' => 'Otro papel:', |
|
| 463 | + 'info_statut_redacteur' => 'Redactor/a', |
|
| 464 | + 'info_statut_utilisateurs_1' => 'Estatus por defecto de usuarios importados', |
|
| 465 | + 'info_statut_utilisateurs_2' => 'Elija el estatus atribuido a las personas presentes en el directorio LDAP cuando se conectan por primera vez. Posteriormente podrá modificar este valor para cada autor en cada caso.', |
|
| 466 | + 'info_suivi_activite' => 'Seguimiento de la actividad editorial', |
|
| 467 | + 'info_surtitre' => 'Antetítulo:', |
|
| 468 | + 'info_syndication_integrale_1' => 'Su sitio propone archivos de sindicación (ver «<a href="@url@">@titre@</a>»).', |
|
| 469 | + 'info_syndication_integrale_2' => '¿Desea transmitir íntegramente los artículos, o sólo un resumen compuesto por unos cientos de caracteres?', |
|
| 470 | + 'info_table_prefix' => 'Puede modificar el prefijo del nombre de las tablas de datos (es indispensable si se quiere instalar varios sitios en la misma base de datos). Este prefijo debe ser en letras minúsculas, no acentuadas, y sin espacios. ', |
|
| 471 | + 'info_taille_maximale_images' => 'SPIP comprobará el tamaño máximo de imagen que puede gestionar (en millones de pixels).<br /> Las imágenes mayores no se reducirán.', |
|
| 472 | + 'info_taille_maximale_vignette' => 'Tamaño máximo de los iconos generados por el sistema:', |
|
| 473 | + 'info_terminer_installation' => 'Puede terminar ahora el procedimiento de instalación estándar.', |
|
| 474 | + 'info_texte' => 'Texto', |
|
| 475 | + 'info_texte_explicatif' => 'Texto explicativo', |
|
| 476 | + 'info_texte_long' => '(el texto es largo: aparece en varias partes que serán reunidas tras validación)', |
|
| 477 | + 'info_texte_message' => 'Texto de su mensaje', |
|
| 478 | + 'info_texte_message_02' => 'Texto del mensaje', |
|
| 479 | + 'info_titre' => 'Título:', |
|
| 480 | + 'info_total' => 'total:', |
|
| 481 | + 'info_tous_articles_en_redaction' => 'Todos los artículos en curso de redacción', |
|
| 482 | + 'info_tous_articles_presents' => 'Todos los artículos publicados en esta sección', |
|
| 483 | + 'info_tous_articles_refuses' => 'Todos los artículos rechazados', |
|
| 484 | + 'info_tous_les' => 'todos los:', |
|
| 485 | + 'info_tout_site' => 'Todo el sitio', |
|
| 486 | + 'info_tout_site2' => 'El artículo no ha sido traducido a este idioma.', |
|
| 487 | + 'info_tout_site3' => 'El artículo ha sido traducido a este idioma, pero posteriormente se han aportado modificaciones al artículo de referencia. La traducción debe ser actualizada.', |
|
| 488 | + 'info_tout_site4' => 'El artículo ha sido traducido a este idioma, y la traducción está al día. ', |
|
| 489 | + 'info_tout_site5' => 'Artículo original', |
|
| 490 | + 'info_tout_site6' => '<b>Atención:</b> sólo se muestran los artículos originales. |
|
| 491 | 491 | Las traducciones están asociadas al original, en un color que indica su estado:', |
| 492 | - 'info_traductions' => 'Traducciones', |
|
| 493 | - 'info_travail_colaboratif' => 'Trabajo colectivo en los artículos', |
|
| 494 | - 'info_un_article' => 'un artículo,', |
|
| 495 | - 'info_un_site' => 'un sitio,', |
|
| 496 | - 'info_une_rubrique' => 'una sección,', |
|
| 497 | - 'info_une_rubrique_02' => '1 sección', |
|
| 498 | - 'info_url' => 'URL:', |
|
| 499 | - 'info_url_proxy' => 'URL del proxy', |
|
| 500 | - 'info_url_proxy_pas_conforme' => 'La URL del proxy no es válido.', |
|
| 501 | - 'info_url_site_pas_conforme' => 'la URL del sitio no es válida.', |
|
| 502 | - 'info_url_test_proxy' => 'URL de prueba', |
|
| 503 | - 'info_urlref' => 'Enlace hipertexto:', |
|
| 504 | - 'info_utilisation_spip' => 'Puede comenzar a utilizar el sistema de publicación asistida...', |
|
| 505 | - 'info_visites_par_mois' => 'Mostrar por mes:', |
|
| 506 | - 'info_visiteur_1' => 'Visitante', |
|
| 507 | - 'info_visiteur_2' => 'del sitio público', |
|
| 508 | - 'info_visiteurs' => 'Visitantes', |
|
| 509 | - 'info_visiteurs_02' => 'Visitantes del sitio público', |
|
| 510 | - 'info_webmestre_forces' => 'La lista de webmasters está actualmente definida en <tt>@file_options@</tt>.', |
|
| 511 | - 'install_adresse_base_hebergeur' => 'Dirección de la base de datos asignada por el proveedor del alojamiento', |
|
| 512 | - 'install_connect_ok' => 'La nueva base de datos fue declarada con éxito con el nombre de servidor @connect@.', |
|
| 513 | - 'install_echec_annonce' => 'La instalación probablemente va a fallar, o creará un sitio que no funcione...', |
|
| 514 | - 'install_extension_mbstring' => 'SPIP no funciona con:', |
|
| 515 | - 'install_extension_php_obligatoire' => 'SPIP exige instalar la extensión php:', |
|
| 516 | - 'install_login_base_hebergeur' => 'Nombre de usuario de conexión asignado por el proveedor del alojamiento', |
|
| 517 | - 'install_nom_base_hebergeur' => 'Nombre de la base asignada por el proveedor:', |
|
| 518 | - 'install_pas_table' => 'La base no tiene tablas en este momento', |
|
| 519 | - 'install_pass_base_hebergeur' => 'Contraseña de conexión asignada por el proveedor', |
|
| 520 | - 'install_php_version' => 'PHP versión @version@ insuficiente (mínimo = @minimum@)', |
|
| 521 | - 'install_select_langue' => 'Seleccione un idioma y después pulse el botón «siguiente» para iniciar el proceso de instalación.', |
|
| 522 | - 'install_select_type_db' => 'Indicar el tipo de base de datos:', |
|
| 523 | - 'install_select_type_mysql' => 'MySQL', |
|
| 524 | - 'install_select_type_pg' => 'PostgreSQL', |
|
| 525 | - 'install_select_type_sqlite2' => 'SQLite 2', |
|
| 526 | - 'install_select_type_sqlite3' => 'SQLite 3', |
|
| 527 | - 'install_serveur_hebergeur' => 'Servidor de base de datos asignado por tu proveedor', |
|
| 528 | - 'install_table_prefix_hebergeur' => 'Prefijo de la tabla asignada por el proveedor:', |
|
| 529 | - 'install_tables_base' => 'Tablas de la base', |
|
| 530 | - 'install_types_db_connus' => 'SPIP sabe utilizar <b>MySQL</b> (el formato más extendido) y <b>SQLite</b>.', |
|
| 531 | - 'install_types_db_connus_avertissement' => 'También se propone el soporte para <b>PostgreSQL</b> en modo experimental.', |
|
| 532 | - 'instituer_erreur_statut_a_change' => 'El estatus ya ha sido modificado', |
|
| 533 | - 'instituer_erreur_statut_non_autorise' => 'No puede elegir este estatus', |
|
| 534 | - 'intem_redacteur' => 'redactor/a', |
|
| 535 | - 'intitule_licence' => 'Licencia', |
|
| 536 | - 'item_accepter_inscriptions' => 'Aceptar las inscripciones', |
|
| 537 | - 'item_activer_messages_avertissement' => 'Activar los mensajes de advertencia', |
|
| 538 | - 'item_administrateur_2' => 'administrador/a', |
|
| 539 | - 'item_afficher_calendrier' => 'Mostrar en el calendario', |
|
| 540 | - 'item_autoriser_syndication_integrale' => 'Difundir íntegramente los artículos en los archivos de sindicación', |
|
| 541 | - 'item_choix_administrateurs' => 'los administradores', |
|
| 542 | - 'item_choix_generation_miniature' => 'Generar automáticamente las miniaturas de las imágenes', |
|
| 543 | - 'item_choix_non_generation_miniature' => 'No generar miniaturas de las imágenes', |
|
| 544 | - 'item_choix_redacteurs' => 'los redactores', |
|
| 545 | - 'item_choix_visiteurs' => 'los visitantes del sitio público', |
|
| 546 | - 'item_creer_fichiers_authent' => 'Crear los archivos «.htpasswd»', |
|
| 547 | - 'item_login' => 'Login', |
|
| 548 | - 'item_messagerie_agenda' => 'Activar la mensajería y la agenda', |
|
| 549 | - 'item_mots_cles_association_articles' => 'a los artículos', |
|
| 550 | - 'item_mots_cles_association_rubriques' => 'a las secciones', |
|
| 551 | - 'item_mots_cles_association_sites' => 'a los sitios referenciados o sindicados', |
|
| 552 | - 'item_non' => 'No', |
|
| 553 | - 'item_non_accepter_inscriptions' => 'No aceptar inscripciones', |
|
| 554 | - 'item_non_activer_messages_avertissement' => 'Sin mensajes de advertencia', |
|
| 555 | - 'item_non_afficher_calendrier' => 'No mostrar en el calendario', |
|
| 556 | - 'item_non_autoriser_syndication_integrale' => 'Sólo difundir un resumen', |
|
| 557 | - 'item_non_creer_fichiers_authent' => 'No crear esos archivos', |
|
| 558 | - 'item_non_messagerie_agenda' => 'Desactivar la mensajería y la agenda', |
|
| 559 | - 'item_non_publier_articles' => 'No publicar los artículos antes de la fecha de publicación indicada', |
|
| 560 | - 'item_nouvel_auteur' => 'Nueva autora o autor', |
|
| 561 | - 'item_nouvelle_rubrique' => 'Nueva sección', |
|
| 562 | - 'item_oui' => 'Sí', |
|
| 563 | - 'item_publier_articles' => 'Publicar los artículos sin tener en cuenta la fecha de publicación', |
|
| 564 | - 'item_reponse_article' => 'Respuesta al artículo', |
|
| 565 | - 'item_visiteur' => 'visitante', |
|
| 492 | + 'info_traductions' => 'Traducciones', |
|
| 493 | + 'info_travail_colaboratif' => 'Trabajo colectivo en los artículos', |
|
| 494 | + 'info_un_article' => 'un artículo,', |
|
| 495 | + 'info_un_site' => 'un sitio,', |
|
| 496 | + 'info_une_rubrique' => 'una sección,', |
|
| 497 | + 'info_une_rubrique_02' => '1 sección', |
|
| 498 | + 'info_url' => 'URL:', |
|
| 499 | + 'info_url_proxy' => 'URL del proxy', |
|
| 500 | + 'info_url_proxy_pas_conforme' => 'La URL del proxy no es válido.', |
|
| 501 | + 'info_url_site_pas_conforme' => 'la URL del sitio no es válida.', |
|
| 502 | + 'info_url_test_proxy' => 'URL de prueba', |
|
| 503 | + 'info_urlref' => 'Enlace hipertexto:', |
|
| 504 | + 'info_utilisation_spip' => 'Puede comenzar a utilizar el sistema de publicación asistida...', |
|
| 505 | + 'info_visites_par_mois' => 'Mostrar por mes:', |
|
| 506 | + 'info_visiteur_1' => 'Visitante', |
|
| 507 | + 'info_visiteur_2' => 'del sitio público', |
|
| 508 | + 'info_visiteurs' => 'Visitantes', |
|
| 509 | + 'info_visiteurs_02' => 'Visitantes del sitio público', |
|
| 510 | + 'info_webmestre_forces' => 'La lista de webmasters está actualmente definida en <tt>@file_options@</tt>.', |
|
| 511 | + 'install_adresse_base_hebergeur' => 'Dirección de la base de datos asignada por el proveedor del alojamiento', |
|
| 512 | + 'install_connect_ok' => 'La nueva base de datos fue declarada con éxito con el nombre de servidor @connect@.', |
|
| 513 | + 'install_echec_annonce' => 'La instalación probablemente va a fallar, o creará un sitio que no funcione...', |
|
| 514 | + 'install_extension_mbstring' => 'SPIP no funciona con:', |
|
| 515 | + 'install_extension_php_obligatoire' => 'SPIP exige instalar la extensión php:', |
|
| 516 | + 'install_login_base_hebergeur' => 'Nombre de usuario de conexión asignado por el proveedor del alojamiento', |
|
| 517 | + 'install_nom_base_hebergeur' => 'Nombre de la base asignada por el proveedor:', |
|
| 518 | + 'install_pas_table' => 'La base no tiene tablas en este momento', |
|
| 519 | + 'install_pass_base_hebergeur' => 'Contraseña de conexión asignada por el proveedor', |
|
| 520 | + 'install_php_version' => 'PHP versión @version@ insuficiente (mínimo = @minimum@)', |
|
| 521 | + 'install_select_langue' => 'Seleccione un idioma y después pulse el botón «siguiente» para iniciar el proceso de instalación.', |
|
| 522 | + 'install_select_type_db' => 'Indicar el tipo de base de datos:', |
|
| 523 | + 'install_select_type_mysql' => 'MySQL', |
|
| 524 | + 'install_select_type_pg' => 'PostgreSQL', |
|
| 525 | + 'install_select_type_sqlite2' => 'SQLite 2', |
|
| 526 | + 'install_select_type_sqlite3' => 'SQLite 3', |
|
| 527 | + 'install_serveur_hebergeur' => 'Servidor de base de datos asignado por tu proveedor', |
|
| 528 | + 'install_table_prefix_hebergeur' => 'Prefijo de la tabla asignada por el proveedor:', |
|
| 529 | + 'install_tables_base' => 'Tablas de la base', |
|
| 530 | + 'install_types_db_connus' => 'SPIP sabe utilizar <b>MySQL</b> (el formato más extendido) y <b>SQLite</b>.', |
|
| 531 | + 'install_types_db_connus_avertissement' => 'También se propone el soporte para <b>PostgreSQL</b> en modo experimental.', |
|
| 532 | + 'instituer_erreur_statut_a_change' => 'El estatus ya ha sido modificado', |
|
| 533 | + 'instituer_erreur_statut_non_autorise' => 'No puede elegir este estatus', |
|
| 534 | + 'intem_redacteur' => 'redactor/a', |
|
| 535 | + 'intitule_licence' => 'Licencia', |
|
| 536 | + 'item_accepter_inscriptions' => 'Aceptar las inscripciones', |
|
| 537 | + 'item_activer_messages_avertissement' => 'Activar los mensajes de advertencia', |
|
| 538 | + 'item_administrateur_2' => 'administrador/a', |
|
| 539 | + 'item_afficher_calendrier' => 'Mostrar en el calendario', |
|
| 540 | + 'item_autoriser_syndication_integrale' => 'Difundir íntegramente los artículos en los archivos de sindicación', |
|
| 541 | + 'item_choix_administrateurs' => 'los administradores', |
|
| 542 | + 'item_choix_generation_miniature' => 'Generar automáticamente las miniaturas de las imágenes', |
|
| 543 | + 'item_choix_non_generation_miniature' => 'No generar miniaturas de las imágenes', |
|
| 544 | + 'item_choix_redacteurs' => 'los redactores', |
|
| 545 | + 'item_choix_visiteurs' => 'los visitantes del sitio público', |
|
| 546 | + 'item_creer_fichiers_authent' => 'Crear los archivos «.htpasswd»', |
|
| 547 | + 'item_login' => 'Login', |
|
| 548 | + 'item_messagerie_agenda' => 'Activar la mensajería y la agenda', |
|
| 549 | + 'item_mots_cles_association_articles' => 'a los artículos', |
|
| 550 | + 'item_mots_cles_association_rubriques' => 'a las secciones', |
|
| 551 | + 'item_mots_cles_association_sites' => 'a los sitios referenciados o sindicados', |
|
| 552 | + 'item_non' => 'No', |
|
| 553 | + 'item_non_accepter_inscriptions' => 'No aceptar inscripciones', |
|
| 554 | + 'item_non_activer_messages_avertissement' => 'Sin mensajes de advertencia', |
|
| 555 | + 'item_non_afficher_calendrier' => 'No mostrar en el calendario', |
|
| 556 | + 'item_non_autoriser_syndication_integrale' => 'Sólo difundir un resumen', |
|
| 557 | + 'item_non_creer_fichiers_authent' => 'No crear esos archivos', |
|
| 558 | + 'item_non_messagerie_agenda' => 'Desactivar la mensajería y la agenda', |
|
| 559 | + 'item_non_publier_articles' => 'No publicar los artículos antes de la fecha de publicación indicada', |
|
| 560 | + 'item_nouvel_auteur' => 'Nueva autora o autor', |
|
| 561 | + 'item_nouvelle_rubrique' => 'Nueva sección', |
|
| 562 | + 'item_oui' => 'Sí', |
|
| 563 | + 'item_publier_articles' => 'Publicar los artículos sin tener en cuenta la fecha de publicación', |
|
| 564 | + 'item_reponse_article' => 'Respuesta al artículo', |
|
| 565 | + 'item_visiteur' => 'visitante', |
|
| 566 | 566 | |
| 567 | - // J |
|
| 568 | - 'jour_non_connu_nc' => 'n.c.', |
|
| 567 | + // J |
|
| 568 | + 'jour_non_connu_nc' => 'n.c.', |
|
| 569 | 569 | |
| 570 | - // L |
|
| 571 | - 'label_bando_outils' => 'Barra de herramientas', |
|
| 572 | - 'label_bando_outils_afficher' => 'Mostrar herramientas', |
|
| 573 | - 'label_bando_outils_masquer' => 'Ocultar herramientas', |
|
| 574 | - 'label_choix_langue' => 'Seleccione su idioma', |
|
| 575 | - 'label_nom_fichier_connect' => 'Indica el nombre utilizado para este servidor', |
|
| 576 | - 'label_slogan_site' => 'Eslogan del sitio', |
|
| 577 | - 'label_taille_ecran' => 'Ancho de pantalla', |
|
| 578 | - 'label_texte_et_icones_navigation' => 'Menú de navegación', |
|
| 579 | - 'label_texte_et_icones_page' => 'Aparencia en la página', |
|
| 580 | - 'ldap_correspondance' => 'herencia del campo @champ@', |
|
| 581 | - 'ldap_correspondance_1' => 'Herencia de los campos LDAP', |
|
| 582 | - 'ldap_correspondance_2' => 'Por cada uno de los campos SPIP siguientes, indicar el nombre del campo LDAP correspondiente. Dejar vacío para no indicar ninguno, y separar con espacios o comas para que se prueben varios campos LDAP.', |
|
| 583 | - 'lien_ajouter_auteur' => 'Añadir este autor', |
|
| 584 | - 'lien_ajouter_une_rubrique' => 'Añadir esta sección', |
|
| 585 | - 'lien_email' => 'correo electrónico', |
|
| 586 | - 'lien_nom_site' => 'NOMBRE DEL SITIO:', |
|
| 587 | - 'lien_rapide_contenu' => 'saltar al contenido', |
|
| 588 | - 'lien_rapide_navigation' => 'Saltar a la navegación', |
|
| 589 | - 'lien_rapide_recherche' => 'Saltar al buscador', |
|
| 590 | - 'lien_retirer_auteur' => 'Retirar el autor', |
|
| 591 | - 'lien_retirer_rubrique' => 'Retirar la sección', |
|
| 592 | - 'lien_retirer_tous_auteurs' => 'Quitar todos los autores', |
|
| 593 | - 'lien_retirer_toutes_rubriques' => 'Retirar todas las secciones', |
|
| 594 | - 'lien_site' => 'sitio', |
|
| 595 | - 'lien_tout_decocher' => 'desmarcar todo', |
|
| 596 | - 'lien_tout_deplier' => 'Desplegar todo', |
|
| 597 | - 'lien_tout_replier' => 'Replegar todo', |
|
| 598 | - 'lien_tout_supprimer' => 'Suprimir todo', |
|
| 599 | - 'lien_trier_nom' => 'Ordenar por nombre', |
|
| 600 | - 'lien_trier_nombre_articles' => 'Ordenar por número de artículos', |
|
| 601 | - 'lien_trier_statut' => 'Ordenar por estatus', |
|
| 602 | - 'lien_voir_en_ligne' => 'VER LA LÍNEA:', |
|
| 603 | - 'logo_article' => 'Logotipo del artículo', |
|
| 604 | - 'logo_auteur' => 'Logotipo del autor', |
|
| 605 | - 'logo_rubrique' => 'Logotipo de la sección', |
|
| 606 | - 'logo_site' => 'Logotipo del sitio', |
|
| 607 | - 'logo_standard_rubrique' => 'Logotipo estándar de las secciones', |
|
| 608 | - 'logo_survol' => 'Logotipo paso del ratón', |
|
| 570 | + // L |
|
| 571 | + 'label_bando_outils' => 'Barra de herramientas', |
|
| 572 | + 'label_bando_outils_afficher' => 'Mostrar herramientas', |
|
| 573 | + 'label_bando_outils_masquer' => 'Ocultar herramientas', |
|
| 574 | + 'label_choix_langue' => 'Seleccione su idioma', |
|
| 575 | + 'label_nom_fichier_connect' => 'Indica el nombre utilizado para este servidor', |
|
| 576 | + 'label_slogan_site' => 'Eslogan del sitio', |
|
| 577 | + 'label_taille_ecran' => 'Ancho de pantalla', |
|
| 578 | + 'label_texte_et_icones_navigation' => 'Menú de navegación', |
|
| 579 | + 'label_texte_et_icones_page' => 'Aparencia en la página', |
|
| 580 | + 'ldap_correspondance' => 'herencia del campo @champ@', |
|
| 581 | + 'ldap_correspondance_1' => 'Herencia de los campos LDAP', |
|
| 582 | + 'ldap_correspondance_2' => 'Por cada uno de los campos SPIP siguientes, indicar el nombre del campo LDAP correspondiente. Dejar vacío para no indicar ninguno, y separar con espacios o comas para que se prueben varios campos LDAP.', |
|
| 583 | + 'lien_ajouter_auteur' => 'Añadir este autor', |
|
| 584 | + 'lien_ajouter_une_rubrique' => 'Añadir esta sección', |
|
| 585 | + 'lien_email' => 'correo electrónico', |
|
| 586 | + 'lien_nom_site' => 'NOMBRE DEL SITIO:', |
|
| 587 | + 'lien_rapide_contenu' => 'saltar al contenido', |
|
| 588 | + 'lien_rapide_navigation' => 'Saltar a la navegación', |
|
| 589 | + 'lien_rapide_recherche' => 'Saltar al buscador', |
|
| 590 | + 'lien_retirer_auteur' => 'Retirar el autor', |
|
| 591 | + 'lien_retirer_rubrique' => 'Retirar la sección', |
|
| 592 | + 'lien_retirer_tous_auteurs' => 'Quitar todos los autores', |
|
| 593 | + 'lien_retirer_toutes_rubriques' => 'Retirar todas las secciones', |
|
| 594 | + 'lien_site' => 'sitio', |
|
| 595 | + 'lien_tout_decocher' => 'desmarcar todo', |
|
| 596 | + 'lien_tout_deplier' => 'Desplegar todo', |
|
| 597 | + 'lien_tout_replier' => 'Replegar todo', |
|
| 598 | + 'lien_tout_supprimer' => 'Suprimir todo', |
|
| 599 | + 'lien_trier_nom' => 'Ordenar por nombre', |
|
| 600 | + 'lien_trier_nombre_articles' => 'Ordenar por número de artículos', |
|
| 601 | + 'lien_trier_statut' => 'Ordenar por estatus', |
|
| 602 | + 'lien_voir_en_ligne' => 'VER LA LÍNEA:', |
|
| 603 | + 'logo_article' => 'Logotipo del artículo', |
|
| 604 | + 'logo_auteur' => 'Logotipo del autor', |
|
| 605 | + 'logo_rubrique' => 'Logotipo de la sección', |
|
| 606 | + 'logo_site' => 'Logotipo del sitio', |
|
| 607 | + 'logo_standard_rubrique' => 'Logotipo estándar de las secciones', |
|
| 608 | + 'logo_survol' => 'Logotipo paso del ratón', |
|
| 609 | 609 | |
| 610 | - // M |
|
| 611 | - 'menu_aide_installation_choix_base' => 'Elección de su base', |
|
| 612 | - 'module_fichier_langue' => 'Archivo de idioma', |
|
| 613 | - 'module_raccourci' => 'Acceso directo', |
|
| 614 | - 'module_texte_affiche' => 'Texto mostrado', |
|
| 615 | - 'module_texte_explicatif' => 'Puede insertar los siguientes accesos directos en los esqueletos de su sitio público. Serán traducidos automáticamente en los diferentes idiomas para los que existe un archivo de idioma.', |
|
| 616 | - 'module_texte_traduction' => 'El archivo de idioma « @module@ » está disponible en:', |
|
| 617 | - 'mois_non_connu' => 'desconocido', |
|
| 610 | + // M |
|
| 611 | + 'menu_aide_installation_choix_base' => 'Elección de su base', |
|
| 612 | + 'module_fichier_langue' => 'Archivo de idioma', |
|
| 613 | + 'module_raccourci' => 'Acceso directo', |
|
| 614 | + 'module_texte_affiche' => 'Texto mostrado', |
|
| 615 | + 'module_texte_explicatif' => 'Puede insertar los siguientes accesos directos en los esqueletos de su sitio público. Serán traducidos automáticamente en los diferentes idiomas para los que existe un archivo de idioma.', |
|
| 616 | + 'module_texte_traduction' => 'El archivo de idioma « @module@ » está disponible en:', |
|
| 617 | + 'mois_non_connu' => 'desconocido', |
|
| 618 | 618 | |
| 619 | - // N |
|
| 620 | - 'nouvelle_version_spip' => 'La versión @version@ de SPIP está disponible', |
|
| 621 | - 'nouvelle_version_spip_majeure' => 'Una nueva versión SPIP @version@ está disponible', |
|
| 619 | + // N |
|
| 620 | + 'nouvelle_version_spip' => 'La versión @version@ de SPIP está disponible', |
|
| 621 | + 'nouvelle_version_spip_majeure' => 'Una nueva versión SPIP @version@ está disponible', |
|
| 622 | 622 | |
| 623 | - // O |
|
| 624 | - 'onglet_contenu' => 'Contenido', |
|
| 625 | - 'onglet_declarer_une_autre_base' => 'Declarar otra base', |
|
| 626 | - 'onglet_discuter' => 'Discutir', |
|
| 627 | - 'onglet_interactivite' => 'Interactividad', |
|
| 628 | - 'onglet_proprietes' => 'Propriedades', |
|
| 629 | - 'onglet_repartition_actuelle' => 'actualmente', |
|
| 630 | - 'onglet_sous_rubriques' => 'Subsecciones', |
|
| 623 | + // O |
|
| 624 | + 'onglet_contenu' => 'Contenido', |
|
| 625 | + 'onglet_declarer_une_autre_base' => 'Declarar otra base', |
|
| 626 | + 'onglet_discuter' => 'Discutir', |
|
| 627 | + 'onglet_interactivite' => 'Interactividad', |
|
| 628 | + 'onglet_proprietes' => 'Propriedades', |
|
| 629 | + 'onglet_repartition_actuelle' => 'actualmente', |
|
| 630 | + 'onglet_sous_rubriques' => 'Subsecciones', |
|
| 631 | 631 | |
| 632 | - // P |
|
| 633 | - 'page_pas_proxy' => 'Esta página no debe pasar por el proxy', |
|
| 634 | - 'pas_de_proxy_pour' => 'Si fuera el caso, indica los servidores o dominios para los cuales este proxy no debe aplicarse. (por ejemplo: @exemple@)', |
|
| 635 | - 'phpinfo' => 'Configuración PHP', |
|
| 636 | - 'plugin_charge_paquet' => 'Carga del paquete @name@', |
|
| 637 | - 'plugin_charger' => 'Descargar', |
|
| 638 | - 'plugin_erreur_charger' => 'error: no es posible cargar @zip@', |
|
| 639 | - 'plugin_erreur_droit1' => 'La carpeta <code>@dest@</code> no es accesible en modo escritura.', |
|
| 640 | - 'plugin_erreur_droit2' => 'Tendrás que verificar los derechos en esta carpeta (o crearla si es el caso), o instalar los archivos por FTP.', |
|
| 641 | - 'plugin_erreur_zip' => 'fallo de pclzip: error @status@', |
|
| 642 | - 'plugin_etat_developpement' => 'en desarrollo', |
|
| 643 | - 'plugin_etat_experimental' => 'experimental', |
|
| 644 | - 'plugin_etat_stable' => 'estable', |
|
| 645 | - 'plugin_etat_test' => 'en prueba', |
|
| 646 | - 'plugin_impossible_activer' => 'Imposible activar el plugin @plugin@', |
|
| 647 | - 'plugin_info_automatique1' => 'Si quiere autorizar la instalación automática de los plugins, ha de:', |
|
| 648 | - 'plugin_info_automatique1_lib' => 'Si desea autorizar la instalación automática de esta librería, consulte:', |
|
| 649 | - 'plugin_info_automatique2' => 'crear una carpeta <code>@rep@</code> ;', |
|
| 650 | - 'plugin_info_automatique3' => 'verificar que el servidor tiene permiso para escribir en esa carpeta.', |
|
| 651 | - 'plugin_info_automatique_creer' => 'que hay que crear en la raíz del sitio.', |
|
| 652 | - 'plugin_info_automatique_exemples' => 'ejemplos:', |
|
| 653 | - 'plugin_info_automatique_ftp' => 'Puede instalar plugins, por FTP, en la carpeta <tt>@rep@</tt>', |
|
| 654 | - 'plugin_info_automatique_lib' => 'Ciertos plugins también requieren que se pueda descargar archivos a la carpeta <code>lib/</code>, que habrá que crear, si es el caso, en la raíz del sitio.', |
|
| 655 | - 'plugin_info_automatique_liste' => 'Sus listas de plugins:', |
|
| 656 | - 'plugin_info_automatique_liste_officielle' => 'los plugins oficiales', |
|
| 657 | - 'plugin_info_automatique_liste_update' => 'Actualizar las listas', |
|
| 658 | - 'plugin_info_automatique_ou' => 'o...', |
|
| 659 | - 'plugin_info_automatique_select' => 'Seleccione un plugin de aquí: SPIP lo descargará y lo instalará en la carpeta <code>@rep@</code>; si el plugin ya existe, se actualizará.', |
|
| 660 | - 'plugin_info_credit' => 'Créditos', |
|
| 661 | - 'plugin_info_erreur_xml' => 'La declaración de este plugin es incorrecta', |
|
| 662 | - 'plugin_info_install_ok' => 'Instalación exitosa', |
|
| 663 | - 'plugin_info_necessite' => 'Necesita:', |
|
| 664 | - 'plugin_info_non_compatible_spip' => 'Este plugin no es compatible con esta versión de SPIP', |
|
| 665 | - 'plugin_info_plugins_dist_1' => 'Las plugins siguientes se cargan y se activan en la carpeta @plugins_dist@.', |
|
| 666 | - 'plugin_info_plugins_dist_2' => 'No pueden desactivarse.', |
|
| 667 | - 'plugin_info_telecharger' => 'se descargará de @url@ y se instalará en @rep@', |
|
| 668 | - 'plugin_info_upgrade_ok' => 'Actualización exitosa', |
|
| 669 | - 'plugin_librairies_installees' => 'Bibliotecas instaladas', |
|
| 670 | - 'plugin_necessite_extension_php' => 'Necesita la extensión PHP @plugin@ en versión @version@.', |
|
| 671 | - 'plugin_necessite_extension_php_sans_version' => 'Necesita la extensión PHP @plugin@', |
|
| 672 | - 'plugin_necessite_lib' => 'Este plugin necesita la biblioteca @lib@', |
|
| 673 | - 'plugin_necessite_php' => 'Necesita @plugin@ en versión @version@.', |
|
| 674 | - 'plugin_necessite_plugin' => 'Necesita el plugin @plugin@ con versión @version@ por lo menos.', |
|
| 675 | - 'plugin_necessite_plugin_sans_version' => 'Necesita el plugin @plugin@', |
|
| 676 | - 'plugin_necessite_spip' => 'Necesita como mínimo un SPIP de versión @version@.', |
|
| 677 | - 'plugin_source' => 'fuente: ', |
|
| 678 | - 'plugin_titre_automatique' => 'Instalación automática', |
|
| 679 | - 'plugin_titre_automatique_ajouter' => 'Añadir plugins', |
|
| 680 | - 'plugin_titre_installation' => 'Instalación del plugin @plugin@', |
|
| 681 | - 'plugin_titre_modifier' => 'Mis plugins', |
|
| 682 | - 'plugin_utilise_extension_php' => 'La extensión PHP del plugin @plugin@ debe estar en la versión @version@.', |
|
| 683 | - 'plugin_utilise_php' => '@plugin@ debe estar en la versión @version@.', |
|
| 684 | - 'plugin_utilise_plugin' => 'El plugin @plugin@ debe estar en la versión @version@.', |
|
| 685 | - 'plugin_zip_active' => 'Continúe para activarlo', |
|
| 686 | - 'plugin_zip_adresse' => 'indique aquí la dirección de un archivo zip de plugin a descargar, o también la dirección de una lista de plugins.', |
|
| 687 | - 'plugin_zip_adresse_champ' => 'Dirección del plugin o de la lista ', |
|
| 688 | - 'plugin_zip_content' => 'Contiene los siguientes archivos (@taille@),<br />que se instalarán en la carpeta <code>@rep@</code>', |
|
| 689 | - 'plugin_zip_installe_finie' => 'El archivo @zip@ se ha descomprimido e instalado.', |
|
| 690 | - 'plugin_zip_installe_rep_finie' => 'El archivo @zip@ se ha descomprimido y se ha instalado en la carpeta @rep@', |
|
| 691 | - 'plugin_zip_installer' => 'Ahora puede instalarlo.', |
|
| 692 | - 'plugin_zip_telecharge' => 'Se ha descargado el archivo @zip@', |
|
| 693 | - 'plugins_actif_aucun' => 'Ningún plugin activado.', |
|
| 694 | - 'plugins_actif_un' => 'Un plugin activado.', |
|
| 695 | - 'plugins_actifs' => '@count@ plugins activados.', |
|
| 696 | - 'plugins_actifs_liste' => 'Activos', |
|
| 697 | - 'plugins_compte' => '@count@ plugins', |
|
| 698 | - 'plugins_disponible_un' => 'Un plugin disponible.', |
|
| 699 | - 'plugins_disponibles' => '@count@ plugins disponibles.', |
|
| 700 | - 'plugins_erreur' => 'Error en los plugins: @plugins@', |
|
| 701 | - 'plugins_liste' => 'Lista de plugins', |
|
| 702 | - 'plugins_liste_dist' => 'Plugins cerrados', |
|
| 703 | - 'plugins_recents' => 'Plugins recientes.', |
|
| 704 | - 'plugins_tous_liste' => 'Todos', |
|
| 705 | - 'plugins_vue_hierarchie' => 'Jerarquía', |
|
| 706 | - 'plugins_vue_liste' => 'Lista', |
|
| 707 | - 'protocole_ldap' => 'Versión del protocolo:', |
|
| 632 | + // P |
|
| 633 | + 'page_pas_proxy' => 'Esta página no debe pasar por el proxy', |
|
| 634 | + 'pas_de_proxy_pour' => 'Si fuera el caso, indica los servidores o dominios para los cuales este proxy no debe aplicarse. (por ejemplo: @exemple@)', |
|
| 635 | + 'phpinfo' => 'Configuración PHP', |
|
| 636 | + 'plugin_charge_paquet' => 'Carga del paquete @name@', |
|
| 637 | + 'plugin_charger' => 'Descargar', |
|
| 638 | + 'plugin_erreur_charger' => 'error: no es posible cargar @zip@', |
|
| 639 | + 'plugin_erreur_droit1' => 'La carpeta <code>@dest@</code> no es accesible en modo escritura.', |
|
| 640 | + 'plugin_erreur_droit2' => 'Tendrás que verificar los derechos en esta carpeta (o crearla si es el caso), o instalar los archivos por FTP.', |
|
| 641 | + 'plugin_erreur_zip' => 'fallo de pclzip: error @status@', |
|
| 642 | + 'plugin_etat_developpement' => 'en desarrollo', |
|
| 643 | + 'plugin_etat_experimental' => 'experimental', |
|
| 644 | + 'plugin_etat_stable' => 'estable', |
|
| 645 | + 'plugin_etat_test' => 'en prueba', |
|
| 646 | + 'plugin_impossible_activer' => 'Imposible activar el plugin @plugin@', |
|
| 647 | + 'plugin_info_automatique1' => 'Si quiere autorizar la instalación automática de los plugins, ha de:', |
|
| 648 | + 'plugin_info_automatique1_lib' => 'Si desea autorizar la instalación automática de esta librería, consulte:', |
|
| 649 | + 'plugin_info_automatique2' => 'crear una carpeta <code>@rep@</code> ;', |
|
| 650 | + 'plugin_info_automatique3' => 'verificar que el servidor tiene permiso para escribir en esa carpeta.', |
|
| 651 | + 'plugin_info_automatique_creer' => 'que hay que crear en la raíz del sitio.', |
|
| 652 | + 'plugin_info_automatique_exemples' => 'ejemplos:', |
|
| 653 | + 'plugin_info_automatique_ftp' => 'Puede instalar plugins, por FTP, en la carpeta <tt>@rep@</tt>', |
|
| 654 | + 'plugin_info_automatique_lib' => 'Ciertos plugins también requieren que se pueda descargar archivos a la carpeta <code>lib/</code>, que habrá que crear, si es el caso, en la raíz del sitio.', |
|
| 655 | + 'plugin_info_automatique_liste' => 'Sus listas de plugins:', |
|
| 656 | + 'plugin_info_automatique_liste_officielle' => 'los plugins oficiales', |
|
| 657 | + 'plugin_info_automatique_liste_update' => 'Actualizar las listas', |
|
| 658 | + 'plugin_info_automatique_ou' => 'o...', |
|
| 659 | + 'plugin_info_automatique_select' => 'Seleccione un plugin de aquí: SPIP lo descargará y lo instalará en la carpeta <code>@rep@</code>; si el plugin ya existe, se actualizará.', |
|
| 660 | + 'plugin_info_credit' => 'Créditos', |
|
| 661 | + 'plugin_info_erreur_xml' => 'La declaración de este plugin es incorrecta', |
|
| 662 | + 'plugin_info_install_ok' => 'Instalación exitosa', |
|
| 663 | + 'plugin_info_necessite' => 'Necesita:', |
|
| 664 | + 'plugin_info_non_compatible_spip' => 'Este plugin no es compatible con esta versión de SPIP', |
|
| 665 | + 'plugin_info_plugins_dist_1' => 'Las plugins siguientes se cargan y se activan en la carpeta @plugins_dist@.', |
|
| 666 | + 'plugin_info_plugins_dist_2' => 'No pueden desactivarse.', |
|
| 667 | + 'plugin_info_telecharger' => 'se descargará de @url@ y se instalará en @rep@', |
|
| 668 | + 'plugin_info_upgrade_ok' => 'Actualización exitosa', |
|
| 669 | + 'plugin_librairies_installees' => 'Bibliotecas instaladas', |
|
| 670 | + 'plugin_necessite_extension_php' => 'Necesita la extensión PHP @plugin@ en versión @version@.', |
|
| 671 | + 'plugin_necessite_extension_php_sans_version' => 'Necesita la extensión PHP @plugin@', |
|
| 672 | + 'plugin_necessite_lib' => 'Este plugin necesita la biblioteca @lib@', |
|
| 673 | + 'plugin_necessite_php' => 'Necesita @plugin@ en versión @version@.', |
|
| 674 | + 'plugin_necessite_plugin' => 'Necesita el plugin @plugin@ con versión @version@ por lo menos.', |
|
| 675 | + 'plugin_necessite_plugin_sans_version' => 'Necesita el plugin @plugin@', |
|
| 676 | + 'plugin_necessite_spip' => 'Necesita como mínimo un SPIP de versión @version@.', |
|
| 677 | + 'plugin_source' => 'fuente: ', |
|
| 678 | + 'plugin_titre_automatique' => 'Instalación automática', |
|
| 679 | + 'plugin_titre_automatique_ajouter' => 'Añadir plugins', |
|
| 680 | + 'plugin_titre_installation' => 'Instalación del plugin @plugin@', |
|
| 681 | + 'plugin_titre_modifier' => 'Mis plugins', |
|
| 682 | + 'plugin_utilise_extension_php' => 'La extensión PHP del plugin @plugin@ debe estar en la versión @version@.', |
|
| 683 | + 'plugin_utilise_php' => '@plugin@ debe estar en la versión @version@.', |
|
| 684 | + 'plugin_utilise_plugin' => 'El plugin @plugin@ debe estar en la versión @version@.', |
|
| 685 | + 'plugin_zip_active' => 'Continúe para activarlo', |
|
| 686 | + 'plugin_zip_adresse' => 'indique aquí la dirección de un archivo zip de plugin a descargar, o también la dirección de una lista de plugins.', |
|
| 687 | + 'plugin_zip_adresse_champ' => 'Dirección del plugin o de la lista ', |
|
| 688 | + 'plugin_zip_content' => 'Contiene los siguientes archivos (@taille@),<br />que se instalarán en la carpeta <code>@rep@</code>', |
|
| 689 | + 'plugin_zip_installe_finie' => 'El archivo @zip@ se ha descomprimido e instalado.', |
|
| 690 | + 'plugin_zip_installe_rep_finie' => 'El archivo @zip@ se ha descomprimido y se ha instalado en la carpeta @rep@', |
|
| 691 | + 'plugin_zip_installer' => 'Ahora puede instalarlo.', |
|
| 692 | + 'plugin_zip_telecharge' => 'Se ha descargado el archivo @zip@', |
|
| 693 | + 'plugins_actif_aucun' => 'Ningún plugin activado.', |
|
| 694 | + 'plugins_actif_un' => 'Un plugin activado.', |
|
| 695 | + 'plugins_actifs' => '@count@ plugins activados.', |
|
| 696 | + 'plugins_actifs_liste' => 'Activos', |
|
| 697 | + 'plugins_compte' => '@count@ plugins', |
|
| 698 | + 'plugins_disponible_un' => 'Un plugin disponible.', |
|
| 699 | + 'plugins_disponibles' => '@count@ plugins disponibles.', |
|
| 700 | + 'plugins_erreur' => 'Error en los plugins: @plugins@', |
|
| 701 | + 'plugins_liste' => 'Lista de plugins', |
|
| 702 | + 'plugins_liste_dist' => 'Plugins cerrados', |
|
| 703 | + 'plugins_recents' => 'Plugins recientes.', |
|
| 704 | + 'plugins_tous_liste' => 'Todos', |
|
| 705 | + 'plugins_vue_hierarchie' => 'Jerarquía', |
|
| 706 | + 'plugins_vue_liste' => 'Lista', |
|
| 707 | + 'protocole_ldap' => 'Versión del protocolo:', |
|
| 708 | 708 | |
| 709 | - // Q |
|
| 710 | - 'queue_executer_maintenant' => 'Ejecutar ahora', |
|
| 711 | - 'queue_info_purger' => 'Puede eliminar todas las tareas pendientes en segundo plano y restablecer la lista con las tareas periódicas', |
|
| 712 | - 'queue_nb_jobs_in_queue' => '@nb@ tareas pendientes', |
|
| 713 | - 'queue_next_job_in_nb_sec' => 'Siguiente tarea en @nb@ s', |
|
| 714 | - 'queue_no_job_in_queue' => 'No hay tareas pendientes', |
|
| 715 | - 'queue_one_job_in_queue' => '1 tarea pendiente', |
|
| 716 | - 'queue_priorite_tache' => 'prioridad', |
|
| 717 | - 'queue_purger_queue' => 'Restablecer la lista de tareas', |
|
| 718 | - 'queue_titre' => 'Tareas en segundo plano', |
|
| 709 | + // Q |
|
| 710 | + 'queue_executer_maintenant' => 'Ejecutar ahora', |
|
| 711 | + 'queue_info_purger' => 'Puede eliminar todas las tareas pendientes en segundo plano y restablecer la lista con las tareas periódicas', |
|
| 712 | + 'queue_nb_jobs_in_queue' => '@nb@ tareas pendientes', |
|
| 713 | + 'queue_next_job_in_nb_sec' => 'Siguiente tarea en @nb@ s', |
|
| 714 | + 'queue_no_job_in_queue' => 'No hay tareas pendientes', |
|
| 715 | + 'queue_one_job_in_queue' => '1 tarea pendiente', |
|
| 716 | + 'queue_priorite_tache' => 'prioridad', |
|
| 717 | + 'queue_purger_queue' => 'Restablecer la lista de tareas', |
|
| 718 | + 'queue_titre' => 'Tareas en segundo plano', |
|
| 719 | 719 | |
| 720 | - // R |
|
| 721 | - 'repertoire_plugins' => 'Carpeta:', |
|
| 722 | - 'required' => '(obligatorio)', |
|
| 720 | + // R |
|
| 721 | + 'repertoire_plugins' => 'Carpeta:', |
|
| 722 | + 'required' => '(obligatorio)', |
|
| 723 | 723 | |
| 724 | - // S |
|
| 725 | - 'sans_heure' => 'sin hora', |
|
| 726 | - 'statut_admin_restreint' => 'administrador restringido', |
|
| 727 | - 'statut_webmestre' => 'webmaster', |
|
| 724 | + // S |
|
| 725 | + 'sans_heure' => 'sin hora', |
|
| 726 | + 'statut_admin_restreint' => 'administrador restringido', |
|
| 727 | + 'statut_webmestre' => 'webmaster', |
|
| 728 | 728 | |
| 729 | - // T |
|
| 730 | - 'tache_cron_asap' => 'Tarea CRON @function@ (ASAP)', |
|
| 731 | - 'tache_cron_secondes' => 'Tarea CRON @function@ (cada @nb@ s)', |
|
| 732 | - 'taille_cache_image' => 'Las imágenes calculadas automáticamente por SPIP (miniaturas de documentos, títulos presentados en forma gráfica, fórmulas matemáticas en formato TeX...) ocupan en el directorio @dir@ un total de @taille@.', |
|
| 733 | - 'taille_cache_infinie' => 'En este sitio no se limita el tamaño de la carpeta de cache.', |
|
| 734 | - 'taille_cache_maxi' => 'SPIP intenta limitar el tamaño de la carpeta de cache de este sitio a unos <b>@octets@</b> de datos.', |
|
| 735 | - 'taille_cache_moins_de' => 'El tamaño de la cache es menor a @octets@.', |
|
| 736 | - 'taille_cache_octets' => 'El tamaño de la caché es actualmente de @octets@.', |
|
| 737 | - 'taille_cache_vide' => 'La cache está vacía.', |
|
| 738 | - 'taille_repertoire_cache' => 'Tamaño de la carpeta cache', |
|
| 739 | - 'text_article_propose_publication' => 'Artículo propuesto para su publicación.', |
|
| 740 | - 'texte_acces_ldap_anonyme_1' => 'Algunos servidores LDAP no aceptan accesos anónimos. En ese caso debe especificar un identificador de acceso inicial para poder luego buscar información en el directorio. En la mayoría de los casos los campos siguientes pueden estar vacíos.', |
|
| 741 | - 'texte_admin_effacer_01' => 'Este comando borra <i>TODO</i> el contenido de la base de datos, e incluye <i>todos</i> los accesos redactores y administradores. Después de ejecutarlo tendrá que volver a instalar SPIP, creando una nueva base al igual que un primer acceso de administración.', |
|
| 742 | - 'texte_adresse_annuaire_1' => '(Si su carpeta está instalada en la misma máquina que el sitio Web, se trata probablemente de "localhost").', |
|
| 743 | - 'texte_ajout_auteur' => 'El siguiente autor ha sido añadido al artículo:', |
|
| 744 | - 'texte_annuaire_ldap_1' => 'Si tiene un acceso a un directorio (LDAP), puede utilizarlo para importar automáticamente usuarios de SPIP.', |
|
| 745 | - 'texte_article_statut' => 'Este artículo está:', |
|
| 746 | - 'texte_article_virtuel' => 'Artículo virtual', |
|
| 747 | - 'texte_article_virtuel_reference' => '<b>Artículo virtual:</b> Artículo referenciado en su sitio SPIP, pero redirigido hacia otra URL. Para eliminar la redirección, borre la URL .', |
|
| 748 | - 'texte_aucun_resultat_auteur' => 'Ningún resultado por "@cherche_auteur@"', |
|
| 749 | - 'texte_auteur_messagerie' => 'Este sitio puede indicarle permanentemente la lista de personas conectadas, lo que permite intercambiar mensajes en directo. Además, puede decidir no aparecer en la lista (figura como «invisible» para los otros usuarios).', |
|
| 750 | - 'texte_auteurs' => 'LOS AUTORES', |
|
| 751 | - 'texte_choix_base_1' => 'Eleja la base:', |
|
| 752 | - 'texte_choix_base_2' => 'El servidor SQL contiene varias bases de datos.', |
|
| 753 | - 'texte_choix_base_3' => '<b>Seleccione</b> aquí la que te fue atribuída por tu proveedor de hospedaje:', |
|
| 754 | - 'texte_choix_table_prefix' => 'Prefijo de las tablas:', |
|
| 755 | - 'texte_compte_element' => '@count@ elemento', |
|
| 756 | - 'texte_compte_elements' => '@count@ elementos', |
|
| 757 | - 'texte_conflit_edition_correction' => 'Por favor revise aquí debajo las diferencias entre las dos versiones del texto; también podrá copiar sus modificaciones, y luego volver a empezar.', |
|
| 758 | - 'texte_connexion_mysql' => 'Consulte la información facilitada por su hospedaje: ahí debería encontrar el nombre del servidor de base de datos que le ofrece y las claves e identificador para conectarse.', |
|
| 759 | - 'texte_contenu_article' => '(Contenido del artículo en pocas palabras)', |
|
| 760 | - 'texte_contenu_articles' => 'Según el diseño de su sitio, puede decidir que algunos elementos de los artículos no sean utilizados. Utilice la siguiente lista para indicar qué elementos están disponibles.', |
|
| 761 | - 'texte_crash_base' => 'Si su base de datos ha fallado, puede intentar una reparación automática. ', |
|
| 762 | - 'texte_creer_rubrique' => 'Antes de poder escribir artículos,<br /> debe crear una sección.', |
|
| 763 | - 'texte_date_creation_article' => 'FECHA DE CREACIÓN DEL ARTÍCULO:', |
|
| 764 | - 'texte_date_creation_objet' => 'Fecha de creación:', # on ajoute le ":" |
|
| 765 | - 'texte_date_publication_anterieure' => 'Fecha de redacción anterior:', |
|
| 766 | - 'texte_date_publication_anterieure_nonaffichee' => 'No mostrar fecha de redacción anterior.', |
|
| 767 | - 'texte_date_publication_article' => 'FECHA DE PUBLICACIÓN EN LÍNEA:', |
|
| 768 | - 'texte_date_publication_objet' => 'Fecha de publicación en línea:', |
|
| 769 | - 'texte_definir_comme_traduction_rubrique' => 'Esta rúbrica es una traducción de la rúbrica número :', |
|
| 770 | - 'texte_descriptif_rapide' => 'Descripción rápida', |
|
| 771 | - 'texte_effacer_base' => 'Borrar la base de datos SPIP', |
|
| 772 | - 'texte_effacer_statistiques' => 'Borrar las estadísticas', |
|
| 773 | - 'texte_en_cours_validation' => 'Los contenidos a continuación están a la espera de validación.', |
|
| 774 | - 'texte_enrichir_mise_a_jour' => 'Puedes enriquecer el formato de tu texto utilizando "atajos tipográficos"', |
|
| 775 | - 'texte_fichier_authent' => '<b>¿Debe SPIP crear los archivos especiales <tt>.htpasswd</tt> |
|
| 729 | + // T |
|
| 730 | + 'tache_cron_asap' => 'Tarea CRON @function@ (ASAP)', |
|
| 731 | + 'tache_cron_secondes' => 'Tarea CRON @function@ (cada @nb@ s)', |
|
| 732 | + 'taille_cache_image' => 'Las imágenes calculadas automáticamente por SPIP (miniaturas de documentos, títulos presentados en forma gráfica, fórmulas matemáticas en formato TeX...) ocupan en el directorio @dir@ un total de @taille@.', |
|
| 733 | + 'taille_cache_infinie' => 'En este sitio no se limita el tamaño de la carpeta de cache.', |
|
| 734 | + 'taille_cache_maxi' => 'SPIP intenta limitar el tamaño de la carpeta de cache de este sitio a unos <b>@octets@</b> de datos.', |
|
| 735 | + 'taille_cache_moins_de' => 'El tamaño de la cache es menor a @octets@.', |
|
| 736 | + 'taille_cache_octets' => 'El tamaño de la caché es actualmente de @octets@.', |
|
| 737 | + 'taille_cache_vide' => 'La cache está vacía.', |
|
| 738 | + 'taille_repertoire_cache' => 'Tamaño de la carpeta cache', |
|
| 739 | + 'text_article_propose_publication' => 'Artículo propuesto para su publicación.', |
|
| 740 | + 'texte_acces_ldap_anonyme_1' => 'Algunos servidores LDAP no aceptan accesos anónimos. En ese caso debe especificar un identificador de acceso inicial para poder luego buscar información en el directorio. En la mayoría de los casos los campos siguientes pueden estar vacíos.', |
|
| 741 | + 'texte_admin_effacer_01' => 'Este comando borra <i>TODO</i> el contenido de la base de datos, e incluye <i>todos</i> los accesos redactores y administradores. Después de ejecutarlo tendrá que volver a instalar SPIP, creando una nueva base al igual que un primer acceso de administración.', |
|
| 742 | + 'texte_adresse_annuaire_1' => '(Si su carpeta está instalada en la misma máquina que el sitio Web, se trata probablemente de "localhost").', |
|
| 743 | + 'texte_ajout_auteur' => 'El siguiente autor ha sido añadido al artículo:', |
|
| 744 | + 'texte_annuaire_ldap_1' => 'Si tiene un acceso a un directorio (LDAP), puede utilizarlo para importar automáticamente usuarios de SPIP.', |
|
| 745 | + 'texte_article_statut' => 'Este artículo está:', |
|
| 746 | + 'texte_article_virtuel' => 'Artículo virtual', |
|
| 747 | + 'texte_article_virtuel_reference' => '<b>Artículo virtual:</b> Artículo referenciado en su sitio SPIP, pero redirigido hacia otra URL. Para eliminar la redirección, borre la URL .', |
|
| 748 | + 'texte_aucun_resultat_auteur' => 'Ningún resultado por "@cherche_auteur@"', |
|
| 749 | + 'texte_auteur_messagerie' => 'Este sitio puede indicarle permanentemente la lista de personas conectadas, lo que permite intercambiar mensajes en directo. Además, puede decidir no aparecer en la lista (figura como «invisible» para los otros usuarios).', |
|
| 750 | + 'texte_auteurs' => 'LOS AUTORES', |
|
| 751 | + 'texte_choix_base_1' => 'Eleja la base:', |
|
| 752 | + 'texte_choix_base_2' => 'El servidor SQL contiene varias bases de datos.', |
|
| 753 | + 'texte_choix_base_3' => '<b>Seleccione</b> aquí la que te fue atribuída por tu proveedor de hospedaje:', |
|
| 754 | + 'texte_choix_table_prefix' => 'Prefijo de las tablas:', |
|
| 755 | + 'texte_compte_element' => '@count@ elemento', |
|
| 756 | + 'texte_compte_elements' => '@count@ elementos', |
|
| 757 | + 'texte_conflit_edition_correction' => 'Por favor revise aquí debajo las diferencias entre las dos versiones del texto; también podrá copiar sus modificaciones, y luego volver a empezar.', |
|
| 758 | + 'texte_connexion_mysql' => 'Consulte la información facilitada por su hospedaje: ahí debería encontrar el nombre del servidor de base de datos que le ofrece y las claves e identificador para conectarse.', |
|
| 759 | + 'texte_contenu_article' => '(Contenido del artículo en pocas palabras)', |
|
| 760 | + 'texte_contenu_articles' => 'Según el diseño de su sitio, puede decidir que algunos elementos de los artículos no sean utilizados. Utilice la siguiente lista para indicar qué elementos están disponibles.', |
|
| 761 | + 'texte_crash_base' => 'Si su base de datos ha fallado, puede intentar una reparación automática. ', |
|
| 762 | + 'texte_creer_rubrique' => 'Antes de poder escribir artículos,<br /> debe crear una sección.', |
|
| 763 | + 'texte_date_creation_article' => 'FECHA DE CREACIÓN DEL ARTÍCULO:', |
|
| 764 | + 'texte_date_creation_objet' => 'Fecha de creación:', # on ajoute le ":" |
|
| 765 | + 'texte_date_publication_anterieure' => 'Fecha de redacción anterior:', |
|
| 766 | + 'texte_date_publication_anterieure_nonaffichee' => 'No mostrar fecha de redacción anterior.', |
|
| 767 | + 'texte_date_publication_article' => 'FECHA DE PUBLICACIÓN EN LÍNEA:', |
|
| 768 | + 'texte_date_publication_objet' => 'Fecha de publicación en línea:', |
|
| 769 | + 'texte_definir_comme_traduction_rubrique' => 'Esta rúbrica es una traducción de la rúbrica número :', |
|
| 770 | + 'texte_descriptif_rapide' => 'Descripción rápida', |
|
| 771 | + 'texte_effacer_base' => 'Borrar la base de datos SPIP', |
|
| 772 | + 'texte_effacer_statistiques' => 'Borrar las estadísticas', |
|
| 773 | + 'texte_en_cours_validation' => 'Los contenidos a continuación están a la espera de validación.', |
|
| 774 | + 'texte_enrichir_mise_a_jour' => 'Puedes enriquecer el formato de tu texto utilizando "atajos tipográficos"', |
|
| 775 | + 'texte_fichier_authent' => '<b>¿Debe SPIP crear los archivos especiales <tt>.htpasswd</tt> |
|
| 776 | 776 | y <tt>.htpasswd-admin</tt> en la carpeta @dossier@?</b><p> |
| 777 | 777 | Estos archivos pueden servir para restringir el acceso a los autores y administradores en otros lugares de su sitio (programa externo de estadísticas, por ejemplo).<p> |
| 778 | 778 | Si no le ve utilidad, puede dejar esta opción con su valor por defecto (no crear los archivos).</p>', |
| 779 | - 'texte_informations_personnelles_1' => 'El sistema va a crear ahora un acceso personalizado al sitio.', |
|
| 780 | - 'texte_informations_personnelles_2' => '(Nota: si se trata de una reinstalación, y su acceso todavía funciona, puede ', |
|
| 781 | - 'texte_introductif_article' => '(Introducción del artículo)', |
|
| 782 | - 'texte_jeu_caractere' => 'Se aconseja emplear para el sitio el alfabeto universal <tt>utf-8</tt>): permite visualizar textos en todos los idiomas, y ya no plantea problemas de compatibilidad con navegadores modernos.', |
|
| 783 | - 'texte_jeu_caractere_3' => 'Su sitio está actualmente instalado en el juego de caracteres:', |
|
| 784 | - 'texte_jeu_caractere_4' => 'Si no corresponde a la realidad de Sus datos (por ejemplo, después de una restauración de base de datos), o si <em>empieza este sitio</em> y desea hacerlo con otro juego de caracteres, indíquelo aquí:', |
|
| 785 | - 'texte_login_ldap_1' => '(Dejar en blanco para un acceso anónimo, o indicar la ruta completa, por ejemplo "<tt>uid=perez, ou=users, dc=mi-dominio, dc=com</tt>".)', |
|
| 786 | - 'texte_login_precaution' => '¡Atención! Éste es el nombre de usuario con el que está conectado actualmente. |
|
| 779 | + 'texte_informations_personnelles_1' => 'El sistema va a crear ahora un acceso personalizado al sitio.', |
|
| 780 | + 'texte_informations_personnelles_2' => '(Nota: si se trata de una reinstalación, y su acceso todavía funciona, puede ', |
|
| 781 | + 'texte_introductif_article' => '(Introducción del artículo)', |
|
| 782 | + 'texte_jeu_caractere' => 'Se aconseja emplear para el sitio el alfabeto universal <tt>utf-8</tt>): permite visualizar textos en todos los idiomas, y ya no plantea problemas de compatibilidad con navegadores modernos.', |
|
| 783 | + 'texte_jeu_caractere_3' => 'Su sitio está actualmente instalado en el juego de caracteres:', |
|
| 784 | + 'texte_jeu_caractere_4' => 'Si no corresponde a la realidad de Sus datos (por ejemplo, después de una restauración de base de datos), o si <em>empieza este sitio</em> y desea hacerlo con otro juego de caracteres, indíquelo aquí:', |
|
| 785 | + 'texte_login_ldap_1' => '(Dejar en blanco para un acceso anónimo, o indicar la ruta completa, por ejemplo "<tt>uid=perez, ou=users, dc=mi-dominio, dc=com</tt>".)', |
|
| 786 | + 'texte_login_precaution' => '¡Atención! Éste es el nombre de usuario con el que está conectado actualmente. |
|
| 787 | 787 | Utilice este formulario con precaución...', |
| 788 | - 'texte_messagerie_agenda' => 'Una mensajería permite a los redactores del sitio comunicarse entre ellos directamente en el espacio privado. Esta mensajería está asociada a una agenda.', |
|
| 789 | - 'texte_mise_a_niveau_base_1' => 'Acaba de actualizar los archivos de SPIP. |
|
| 788 | + 'texte_messagerie_agenda' => 'Una mensajería permite a los redactores del sitio comunicarse entre ellos directamente en el espacio privado. Esta mensajería está asociada a una agenda.', |
|
| 789 | + 'texte_mise_a_niveau_base_1' => 'Acaba de actualizar los archivos de SPIP. |
|
| 790 | 790 | Ahora se debe actualizar la base de datos del sitio.', |
| 791 | - 'texte_modifier_article' => 'Modificar el artículo:', |
|
| 792 | - 'texte_multilinguisme' => 'Si desea manejar objetos en varios idiomas, con una navegación compleja, puede agregar un menú de selección de idioma para esos objetos, en función de la organización de su sitio.', |
|
| 793 | - 'texte_multilinguisme_trad' => 'También puede activar un sistema de gestión de enlaces entre las diferentes traducciones de ciertos objetos. ', |
|
| 794 | - 'texte_non_compresse' => '<i>no comprimido</i> (tu servidor no soporta esta funcionalidad)', |
|
| 795 | - 'texte_nouvelle_version_spip_1' => 'Ha instalado una versión nueva de SPIP.', |
|
| 796 | - 'texte_nouvelle_version_spip_2' => 'Esta nueva versión necesita una actualización más completa que de costumbre. Si es webmaster del sitio, borre el archivo @connect@ y retome la instalación con el fin de actualizar los parámetros de conexión a la base de datos.<p> (NB: si ha olvidado los parámetros de conexión, eche un vistazo al archivo @connect@ antes de suprimirlo...)</p>', |
|
| 797 | - 'texte_operation_echec' => 'Regrese a la página anterior, seleccione otra base o cree una nueva. Verifique la información facilitada por su proveedor de hospedaje.', |
|
| 798 | - 'texte_plus_trois_car' => 'más de 3 caracteres', |
|
| 799 | - 'texte_plusieurs_articles' => 'Se ha encontrado varios autores para "@cherche_auteur@":', |
|
| 800 | - 'texte_port_annuaire' => '(En general, es adecuado el valor predeterminado)', |
|
| 801 | - 'texte_presente_plugin' => 'Esta página lista los plugins disponibles en el sitio. Puede activar los plugins necesarios seleccionando la casilla correspondiente. ', |
|
| 802 | - 'texte_proposer_publication' => 'Cuando su artículo esté terminado, <br /> puede proponer su publicación.', |
|
| 803 | - 'texte_proxy' => 'En algunos casos (intranet, redes protegidas...), los sitios distantes (documentación de SPIP, sitios sindicados, etc.) no son accesibles más que através de un <i>proxy HTTP</i>. En ese caso, indique a continuación su dirección, bajo la forma <tt><html>http://proxy:8080</html></tt>. En general, se dejará esta casilla vacía.', |
|
| 804 | - 'texte_publication_articles_post_dates' => '¿Qué comportamiento debe adoptar SPIP frente a los artículos cuya fecha de publicación ha sido fijada con un plazo futuro?', |
|
| 805 | - 'texte_rappel_selection_champs' => '[Seleccione correctamente este campo]', |
|
| 806 | - 'texte_recalcul_page' => 'Si desea recalcular una sola página utiliza el botón "Recalcular" en el espacio público.', |
|
| 807 | - 'texte_recuperer_base' => 'Reparar la base de datos', |
|
| 808 | - 'texte_reference_mais_redirige' => 'Artículo referenciado en su sitio y redirigido hacia otra URL.', |
|
| 809 | - 'texte_requetes_echouent' => '<b>Cuando algunas peticiones SQL fallan sistemáticamente y sin razón aparente, es posible que sea debido a la base de datos en sí.</b><p> |
|
| 791 | + 'texte_modifier_article' => 'Modificar el artículo:', |
|
| 792 | + 'texte_multilinguisme' => 'Si desea manejar objetos en varios idiomas, con una navegación compleja, puede agregar un menú de selección de idioma para esos objetos, en función de la organización de su sitio.', |
|
| 793 | + 'texte_multilinguisme_trad' => 'También puede activar un sistema de gestión de enlaces entre las diferentes traducciones de ciertos objetos. ', |
|
| 794 | + 'texte_non_compresse' => '<i>no comprimido</i> (tu servidor no soporta esta funcionalidad)', |
|
| 795 | + 'texte_nouvelle_version_spip_1' => 'Ha instalado una versión nueva de SPIP.', |
|
| 796 | + 'texte_nouvelle_version_spip_2' => 'Esta nueva versión necesita una actualización más completa que de costumbre. Si es webmaster del sitio, borre el archivo @connect@ y retome la instalación con el fin de actualizar los parámetros de conexión a la base de datos.<p> (NB: si ha olvidado los parámetros de conexión, eche un vistazo al archivo @connect@ antes de suprimirlo...)</p>', |
|
| 797 | + 'texte_operation_echec' => 'Regrese a la página anterior, seleccione otra base o cree una nueva. Verifique la información facilitada por su proveedor de hospedaje.', |
|
| 798 | + 'texte_plus_trois_car' => 'más de 3 caracteres', |
|
| 799 | + 'texte_plusieurs_articles' => 'Se ha encontrado varios autores para "@cherche_auteur@":', |
|
| 800 | + 'texte_port_annuaire' => '(En general, es adecuado el valor predeterminado)', |
|
| 801 | + 'texte_presente_plugin' => 'Esta página lista los plugins disponibles en el sitio. Puede activar los plugins necesarios seleccionando la casilla correspondiente. ', |
|
| 802 | + 'texte_proposer_publication' => 'Cuando su artículo esté terminado, <br /> puede proponer su publicación.', |
|
| 803 | + 'texte_proxy' => 'En algunos casos (intranet, redes protegidas...), los sitios distantes (documentación de SPIP, sitios sindicados, etc.) no son accesibles más que através de un <i>proxy HTTP</i>. En ese caso, indique a continuación su dirección, bajo la forma <tt><html>http://proxy:8080</html></tt>. En general, se dejará esta casilla vacía.', |
|
| 804 | + 'texte_publication_articles_post_dates' => '¿Qué comportamiento debe adoptar SPIP frente a los artículos cuya fecha de publicación ha sido fijada con un plazo futuro?', |
|
| 805 | + 'texte_rappel_selection_champs' => '[Seleccione correctamente este campo]', |
|
| 806 | + 'texte_recalcul_page' => 'Si desea recalcular una sola página utiliza el botón "Recalcular" en el espacio público.', |
|
| 807 | + 'texte_recuperer_base' => 'Reparar la base de datos', |
|
| 808 | + 'texte_reference_mais_redirige' => 'Artículo referenciado en su sitio y redirigido hacia otra URL.', |
|
| 809 | + 'texte_requetes_echouent' => '<b>Cuando algunas peticiones SQL fallan sistemáticamente y sin razón aparente, es posible que sea debido a la base de datos en sí.</b><p> |
|
| 810 | 810 | Su servidor SQL es capaz de reparar sus tablas cuando fueron dañadas por accidente. Puede intentar aquí esta reparación: si falla, conservE una copia del resultado, que posiblemente contenga indicios de lo que no funciona...</p><p> |
| 811 | 811 | Si el problema persiste, contacte a su hospedaje.</p>', |
| 812 | - 'texte_selection_langue_principale' => 'A continuación puede seleccionar el «idioma principal» del sitio. Esta selección no obliga -¡afortunadamente!- a escribir los artículos en el idioma elegido, pero permite determinar: |
|
| 812 | + 'texte_selection_langue_principale' => 'A continuación puede seleccionar el «idioma principal» del sitio. Esta selección no obliga -¡afortunadamente!- a escribir los artículos en el idioma elegido, pero permite determinar: |
|
| 813 | 813 | <ul><li> el formato predeterminado de las fechas en el sitio público;</li> |
| 814 | 814 | <li> la naturaleza del motor tipográfico que SPIP debe utilizar para reproducir los textos;</li> |
| 815 | 815 | <li> el idioma utilizado en los formularios del sitio público;</li> |
| 816 | 816 | <li> el idioma predeterminado para el espacio privado.</li></ul>', |
| 817 | - 'texte_sous_titre' => 'Subtítulo', |
|
| 818 | - 'texte_statistiques_visites' => '(Barras oscuras: domingo / curva oscura: evolución del promedio)', |
|
| 819 | - 'texte_statut_attente_validation' => 'En espera de validación', |
|
| 820 | - 'texte_statut_publies' => 'Publicados', |
|
| 821 | - 'texte_statut_refuses' => 'Rechazados', |
|
| 822 | - 'texte_suppression_fichiers' => 'Utilice esta operación para suprimir todos los archivos presentes en la caché de SPIP. Esto permite, por ejemplo, forzar la actualización de todas las páginas si se hicieron importantes modificaciones gráficas o de estructura del sitio.', |
|
| 823 | - 'texte_sur_titre' => 'Antetítulo', |
|
| 824 | - 'texte_table_ok' => ': esta tabla está bien.', |
|
| 825 | - 'texte_tentative_recuperation' => 'Tentativa de reparación.', |
|
| 826 | - 'texte_tenter_reparation' => 'Intentar la reparación de la base de datos.', |
|
| 827 | - 'texte_test_proxy' => 'Para ensayar este "proxy" indique aquí la URL del sitio.', |
|
| 828 | - 'texte_titre_02' => 'Título', |
|
| 829 | - 'texte_titre_obligatoire' => '<b>Título</b> [Obligatorio]', |
|
| 830 | - 'texte_travail_article' => '@nom_auteur_modif@ ha trabajado sobre este artículo hace @date_diff@ minutos.', |
|
| 831 | - 'texte_travail_collaboratif' => 'Es frecuente que varios redactores y redactoras trabajen sobre el mismo artículo, el sistema puede mostrar los artículos recientemente «abiertos» para evitar las modificaciones simultáneas. |
|
| 817 | + 'texte_sous_titre' => 'Subtítulo', |
|
| 818 | + 'texte_statistiques_visites' => '(Barras oscuras: domingo / curva oscura: evolución del promedio)', |
|
| 819 | + 'texte_statut_attente_validation' => 'En espera de validación', |
|
| 820 | + 'texte_statut_publies' => 'Publicados', |
|
| 821 | + 'texte_statut_refuses' => 'Rechazados', |
|
| 822 | + 'texte_suppression_fichiers' => 'Utilice esta operación para suprimir todos los archivos presentes en la caché de SPIP. Esto permite, por ejemplo, forzar la actualización de todas las páginas si se hicieron importantes modificaciones gráficas o de estructura del sitio.', |
|
| 823 | + 'texte_sur_titre' => 'Antetítulo', |
|
| 824 | + 'texte_table_ok' => ': esta tabla está bien.', |
|
| 825 | + 'texte_tentative_recuperation' => 'Tentativa de reparación.', |
|
| 826 | + 'texte_tenter_reparation' => 'Intentar la reparación de la base de datos.', |
|
| 827 | + 'texte_test_proxy' => 'Para ensayar este "proxy" indique aquí la URL del sitio.', |
|
| 828 | + 'texte_titre_02' => 'Título', |
|
| 829 | + 'texte_titre_obligatoire' => '<b>Título</b> [Obligatorio]', |
|
| 830 | + 'texte_travail_article' => '@nom_auteur_modif@ ha trabajado sobre este artículo hace @date_diff@ minutos.', |
|
| 831 | + 'texte_travail_collaboratif' => 'Es frecuente que varios redactores y redactoras trabajen sobre el mismo artículo, el sistema puede mostrar los artículos recientemente «abiertos» para evitar las modificaciones simultáneas. |
|
| 832 | 832 | Esta opción está desactivada por omisión para evitar mostrar mensajes de advertencia intempestivos.', |
| 833 | - 'texte_vide' => 'vacío', |
|
| 834 | - 'texte_vider_cache' => 'Vaciar la caché', |
|
| 835 | - 'titre_admin_tech' => 'Mantenimiento técnico', |
|
| 836 | - 'titre_admin_vider' => 'Mantenimiento técnico', |
|
| 837 | - 'titre_ajouter_un_auteur' => 'Añadir una autora', |
|
| 838 | - 'titre_ajouter_un_mot' => 'Añadir una palabra-clave', |
|
| 839 | - 'titre_cadre_afficher_article' => 'Mostrar los artículos', |
|
| 840 | - 'titre_cadre_afficher_traductions' => 'Mostrar el estado de las traducciones para los idiomas siguientes:', |
|
| 841 | - 'titre_cadre_ajouter_auteur' => 'Añadir un autor', |
|
| 842 | - 'titre_cadre_interieur_rubrique' => 'Al interior de la sección', |
|
| 843 | - 'titre_cadre_numero_auteur' => 'AUTOR NÚMERO', |
|
| 844 | - 'titre_cadre_numero_objet' => '@objet@ NÚMERO:', |
|
| 845 | - 'titre_cadre_signature_obligatoire' => '<b>Firma</b> [Obligatoria]<br />', |
|
| 846 | - 'titre_config_contenu_notifications' => 'Notificaciones', |
|
| 847 | - 'titre_config_contenu_prive' => 'En el espacio privado', |
|
| 848 | - 'titre_config_contenu_public' => 'En el sitio público', |
|
| 849 | - 'titre_config_fonctions' => 'Configuración del sitio', |
|
| 850 | - 'titre_config_langage' => 'Configuración del idioma', |
|
| 851 | - 'titre_configuration' => 'Configuración del sitio', |
|
| 852 | - 'titre_configurer_preferences' => 'Sus preferencias', |
|
| 853 | - 'titre_configurer_preferences_menus' => 'Configurer tus preferencias de menus', |
|
| 854 | - 'titre_conflit_edition' => 'Conflicto durante la edición', |
|
| 855 | - 'titre_connexion_ldap' => 'Opciones: <b>Tu conexión LDAP</b>', |
|
| 856 | - 'titre_groupe_mots' => 'Grupo de palabras', |
|
| 857 | - 'titre_identite_site' => 'Identidad del sitio', |
|
| 858 | - 'titre_langue_article' => 'Idioma del artículo', |
|
| 859 | - 'titre_langue_rubrique' => 'Idioma de la sección', |
|
| 860 | - 'titre_langue_trad_article' => 'IDIOMA Y TRADUCCIONES DEL ARTÍCULO', |
|
| 861 | - 'titre_les_articles' => 'Los artículos', |
|
| 862 | - 'titre_messagerie_agenda' => 'Mensajería y agenda', |
|
| 863 | - 'titre_naviguer_dans_le_site' => 'Navegar por el sitio...', |
|
| 864 | - 'titre_nouvelle_rubrique' => 'Nueva sección', |
|
| 865 | - 'titre_numero_rubrique' => 'SECCIÓN NÚMERO:', |
|
| 866 | - 'titre_page_articles_edit' => 'Modificar: @titre@', |
|
| 867 | - 'titre_page_articles_page' => 'Los artículos', |
|
| 868 | - 'titre_page_articles_tous' => 'Todo el sitio', |
|
| 869 | - 'titre_page_calendrier' => 'Calendario @nom_mois@ @annee@', |
|
| 870 | - 'titre_page_config_contenu' => 'Configuración del sitio', |
|
| 871 | - 'titre_page_delete_all' => 'Supresión total e irreversible', |
|
| 872 | - 'titre_page_recherche' => 'Resultados de la búsqueda @recherche@', |
|
| 873 | - 'titre_page_statistiques_referers' => 'Estadísticas (enlaces entrantes)', |
|
| 874 | - 'titre_page_upgrade' => 'Actualización de SPIP', |
|
| 875 | - 'titre_preference_menus_favoris' => 'Menus favoritos', |
|
| 876 | - 'titre_publication_articles_post_dates' => 'Publicación de los artículos con fecha posterior', |
|
| 877 | - 'titre_reparation' => 'Reparación', |
|
| 878 | - 'titre_suivi_petition' => 'Gestión de las peticiones', |
|
| 879 | - 'tls_ldap' => 'Transport Layer Security:', |
|
| 880 | - 'trad_article_traduction' => 'Todas las versiones de este artículo:', |
|
| 881 | - 'trad_delier' => 'Dejar de ligar a estas traducciones ', |
|
| 882 | - 'trad_lier' => 'Este artículo es una traducción del artículo número:', |
|
| 883 | - 'trad_new' => 'Escribir una nueva traducción', |
|
| 833 | + 'texte_vide' => 'vacío', |
|
| 834 | + 'texte_vider_cache' => 'Vaciar la caché', |
|
| 835 | + 'titre_admin_tech' => 'Mantenimiento técnico', |
|
| 836 | + 'titre_admin_vider' => 'Mantenimiento técnico', |
|
| 837 | + 'titre_ajouter_un_auteur' => 'Añadir una autora', |
|
| 838 | + 'titre_ajouter_un_mot' => 'Añadir una palabra-clave', |
|
| 839 | + 'titre_cadre_afficher_article' => 'Mostrar los artículos', |
|
| 840 | + 'titre_cadre_afficher_traductions' => 'Mostrar el estado de las traducciones para los idiomas siguientes:', |
|
| 841 | + 'titre_cadre_ajouter_auteur' => 'Añadir un autor', |
|
| 842 | + 'titre_cadre_interieur_rubrique' => 'Al interior de la sección', |
|
| 843 | + 'titre_cadre_numero_auteur' => 'AUTOR NÚMERO', |
|
| 844 | + 'titre_cadre_numero_objet' => '@objet@ NÚMERO:', |
|
| 845 | + 'titre_cadre_signature_obligatoire' => '<b>Firma</b> [Obligatoria]<br />', |
|
| 846 | + 'titre_config_contenu_notifications' => 'Notificaciones', |
|
| 847 | + 'titre_config_contenu_prive' => 'En el espacio privado', |
|
| 848 | + 'titre_config_contenu_public' => 'En el sitio público', |
|
| 849 | + 'titre_config_fonctions' => 'Configuración del sitio', |
|
| 850 | + 'titre_config_langage' => 'Configuración del idioma', |
|
| 851 | + 'titre_configuration' => 'Configuración del sitio', |
|
| 852 | + 'titre_configurer_preferences' => 'Sus preferencias', |
|
| 853 | + 'titre_configurer_preferences_menus' => 'Configurer tus preferencias de menus', |
|
| 854 | + 'titre_conflit_edition' => 'Conflicto durante la edición', |
|
| 855 | + 'titre_connexion_ldap' => 'Opciones: <b>Tu conexión LDAP</b>', |
|
| 856 | + 'titre_groupe_mots' => 'Grupo de palabras', |
|
| 857 | + 'titre_identite_site' => 'Identidad del sitio', |
|
| 858 | + 'titre_langue_article' => 'Idioma del artículo', |
|
| 859 | + 'titre_langue_rubrique' => 'Idioma de la sección', |
|
| 860 | + 'titre_langue_trad_article' => 'IDIOMA Y TRADUCCIONES DEL ARTÍCULO', |
|
| 861 | + 'titre_les_articles' => 'Los artículos', |
|
| 862 | + 'titre_messagerie_agenda' => 'Mensajería y agenda', |
|
| 863 | + 'titre_naviguer_dans_le_site' => 'Navegar por el sitio...', |
|
| 864 | + 'titre_nouvelle_rubrique' => 'Nueva sección', |
|
| 865 | + 'titre_numero_rubrique' => 'SECCIÓN NÚMERO:', |
|
| 866 | + 'titre_page_articles_edit' => 'Modificar: @titre@', |
|
| 867 | + 'titre_page_articles_page' => 'Los artículos', |
|
| 868 | + 'titre_page_articles_tous' => 'Todo el sitio', |
|
| 869 | + 'titre_page_calendrier' => 'Calendario @nom_mois@ @annee@', |
|
| 870 | + 'titre_page_config_contenu' => 'Configuración del sitio', |
|
| 871 | + 'titre_page_delete_all' => 'Supresión total e irreversible', |
|
| 872 | + 'titre_page_recherche' => 'Resultados de la búsqueda @recherche@', |
|
| 873 | + 'titre_page_statistiques_referers' => 'Estadísticas (enlaces entrantes)', |
|
| 874 | + 'titre_page_upgrade' => 'Actualización de SPIP', |
|
| 875 | + 'titre_preference_menus_favoris' => 'Menus favoritos', |
|
| 876 | + 'titre_publication_articles_post_dates' => 'Publicación de los artículos con fecha posterior', |
|
| 877 | + 'titre_reparation' => 'Reparación', |
|
| 878 | + 'titre_suivi_petition' => 'Gestión de las peticiones', |
|
| 879 | + 'tls_ldap' => 'Transport Layer Security:', |
|
| 880 | + 'trad_article_traduction' => 'Todas las versiones de este artículo:', |
|
| 881 | + 'trad_delier' => 'Dejar de ligar a estas traducciones ', |
|
| 882 | + 'trad_lier' => 'Este artículo es una traducción del artículo número:', |
|
| 883 | + 'trad_new' => 'Escribir una nueva traducción', |
|
| 884 | 884 | |
| 885 | - // U |
|
| 886 | - 'utf8_convert_erreur_orig' => 'Error: el juego de caracteres no está soportado.', |
|
| 885 | + // U |
|
| 886 | + 'utf8_convert_erreur_orig' => 'Error: el juego de caracteres no está soportado.', |
|
| 887 | 887 | |
| 888 | - // V |
|
| 889 | - 'version' => 'Versión:' |
|
| 888 | + // V |
|
| 889 | + 'version' => 'Versión:' |
|
| 890 | 890 | ); |
@@ -4,123 +4,123 @@ |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'accueil_site' => 'Portada del sitio', |
|
| 14 | - 'article' => 'Artículo', |
|
| 15 | - 'articles' => 'Artículos', |
|
| 16 | - 'articles_auteur' => 'Artículos de esta autora o autor', |
|
| 17 | - 'articles_populaires' => 'Los artículos más populares', |
|
| 18 | - 'articles_rubrique' => 'Artículos de esta sección', |
|
| 19 | - 'aucun_article' => 'No hay ningún artículo en esta dirección ', |
|
| 20 | - 'aucun_auteur' => 'No hay autor ni autora en esta dirección ', |
|
| 21 | - 'aucun_site' => 'No hay ningún sitio en esta dirección', |
|
| 22 | - 'aucune_breve' => 'No hay ninguna breve en esta dirección', |
|
| 23 | - 'aucune_rubrique' => 'No hay ninguna sección en esta dirección', |
|
| 24 | - 'auteur' => 'Autor o autora', |
|
| 25 | - 'autres' => 'Otros', |
|
| 26 | - 'autres_breves' => 'Otros breves', |
|
| 27 | - 'autres_groupes_mots_clefs' => 'Otros grupos de palabras clave', |
|
| 28 | - 'autres_sites' => 'Otros sitios', |
|
| 29 | - |
|
| 30 | - // B |
|
| 31 | - 'bonjour' => 'Hola', |
|
| 32 | - |
|
| 33 | - // C |
|
| 34 | - 'commenter_site' => 'Comentar este sitio', |
|
| 35 | - 'contact' => 'Contacto', |
|
| 36 | - 'copie_document_impossible' => 'Imposible copiar el documento', |
|
| 37 | - |
|
| 38 | - // D |
|
| 39 | - 'date' => 'Fecha', |
|
| 40 | - 'dernier_ajout' => 'Última actualización', |
|
| 41 | - 'dernieres_breves' => 'Últimos breves', |
|
| 42 | - 'derniers_articles' => 'Últimos artículos', |
|
| 43 | - 'derniers_commentaires' => 'Últimos comentarios', |
|
| 44 | - 'derniers_messages_forum' => 'Últimos mensajes publicados en los foros', |
|
| 45 | - |
|
| 46 | - // E |
|
| 47 | - 'edition_mode_texte' => 'Edición en modo texto de', |
|
| 48 | - 'en_reponse' => 'En respuesta a:', |
|
| 49 | - 'en_resume' => 'En resumen', |
|
| 50 | - 'envoyer_message' => 'Enviar un mensaje', |
|
| 51 | - 'espace_prive' => 'Espacio privado', |
|
| 52 | - |
|
| 53 | - // F |
|
| 54 | - 'formats_acceptes' => 'Formatos aceptados: @formats@.', |
|
| 55 | - |
|
| 56 | - // H |
|
| 57 | - 'hierarchie_site' => 'Jerarquía del sitio', |
|
| 58 | - |
|
| 59 | - // J |
|
| 60 | - 'jours' => 'días', |
|
| 61 | - |
|
| 62 | - // L |
|
| 63 | - 'lien_connecter' => 'Conectarse', |
|
| 64 | - |
|
| 65 | - // M |
|
| 66 | - 'meme_auteur' => 'Del mismo autor', |
|
| 67 | - 'meme_rubrique' => 'En la misma sección', |
|
| 68 | - 'memes_auteurs' => 'De los mismos autores', |
|
| 69 | - 'message' => 'Mensaje', |
|
| 70 | - 'messages_forum' => 'Mensajes', |
|
| 71 | - 'messages_recents' => 'Los mensajes más recientes del foro', |
|
| 72 | - 'mots_clef' => 'Palabra clave', |
|
| 73 | - 'mots_clefs' => 'Palabras clave', |
|
| 74 | - 'mots_clefs_meme_groupe' => 'Palabras claves en el mismo grupo', |
|
| 75 | - |
|
| 76 | - // N |
|
| 77 | - 'navigation' => 'Navegación', |
|
| 78 | - 'nom' => 'Nombre', |
|
| 79 | - 'nouveautes' => 'Las novedades', |
|
| 80 | - 'nouveautes_web' => 'Novedades en la web', |
|
| 81 | - 'nouveaux_articles' => 'Nuevos artículos', |
|
| 82 | - 'nouvelles_breves' => 'Nuevas breves', |
|
| 83 | - |
|
| 84 | - // P |
|
| 85 | - 'page_precedente' => 'Página anterior', |
|
| 86 | - 'page_suivante' => 'Página siguiente', |
|
| 87 | - 'par_auteur' => 'por ', |
|
| 88 | - 'participer_site' => 'Puedes participar en la vida de este sitio y proponer artículos inscribiéndote aqui. De inmediato recibirás un correo electrónico con tus claves de acceso al espacio privado del sitio.', |
|
| 89 | - 'plan_site' => 'Mapa del sitio', |
|
| 90 | - 'popularite' => 'Popularidad', |
|
| 91 | - 'poster_message' => 'Publicar un mensaje', |
|
| 92 | - 'proposer_site' => 'Proponga un sitio para añadir en esta sección:', |
|
| 93 | - |
|
| 94 | - // R |
|
| 95 | - 'repondre_article' => 'Comentar este artículo', |
|
| 96 | - 'repondre_breve' => 'Comentar esta breve', |
|
| 97 | - 'resultats_recherche' => 'Resultados de la búsqueda', |
|
| 98 | - 'retour_debut_forums' => 'Volver al inicio del foro', |
|
| 99 | - 'rss_abonnement' => 'Copie la siguiente URL en su agregador:', |
|
| 100 | - 'rss_abonnement_titre' => 'Suscribirse', |
|
| 101 | - 'rss_abonnement_titre_page' => 'Suscribirse a', |
|
| 102 | - 'rss_explication' => 'Un feed RSS recoge información actualizada de un sitio. Proporciona el contenido de las entradas, comentarios o un extracto de los mismos, así como un enlace a las versiones completas y alguna otra información. Este feed está pensado para ser leído por un agregador RSS.', |
|
| 103 | - 'rss_explication_titre' => '¿Qué es un feed RSS?', |
|
| 104 | - 'rubrique' => 'Sección', |
|
| 105 | - 'rubriques' => 'Secciones', |
|
| 106 | - |
|
| 107 | - // S |
|
| 108 | - 'signatures_petition' => 'Firmas', |
|
| 109 | - 'site_realise_avec_spip' => 'Sitio desarrollado con SPIP', |
|
| 110 | - 'sites_web' => 'Sitios Web', |
|
| 111 | - 'sous_rubriques' => 'Subsección', |
|
| 112 | - 'spam' => 'Spam', |
|
| 113 | - 'suite' => 'continuar', |
|
| 114 | - 'sur_web' => 'Del web', |
|
| 115 | - 'syndiquer_rubrique' => 'Sindicar esta sección', |
|
| 116 | - 'syndiquer_site' => 'Sindicar el sitio completo', |
|
| 117 | - |
|
| 118 | - // T |
|
| 119 | - 'texte_lettre_information' => 'Este es el boletín de información del sitio', |
|
| 120 | - 'texte_lettre_information_2' => 'Este boletín reseña las novedades publicadas desde ', |
|
| 121 | - |
|
| 122 | - // V |
|
| 123 | - 'ver_imprimer' => 'Versión para imprimir', |
|
| 124 | - 'voir_en_ligne' => 'Ver en línea', |
|
| 125 | - 'voir_squelette' => 'ver el esqueleto de esta página' |
|
| 12 | + // A |
|
| 13 | + 'accueil_site' => 'Portada del sitio', |
|
| 14 | + 'article' => 'Artículo', |
|
| 15 | + 'articles' => 'Artículos', |
|
| 16 | + 'articles_auteur' => 'Artículos de esta autora o autor', |
|
| 17 | + 'articles_populaires' => 'Los artículos más populares', |
|
| 18 | + 'articles_rubrique' => 'Artículos de esta sección', |
|
| 19 | + 'aucun_article' => 'No hay ningún artículo en esta dirección ', |
|
| 20 | + 'aucun_auteur' => 'No hay autor ni autora en esta dirección ', |
|
| 21 | + 'aucun_site' => 'No hay ningún sitio en esta dirección', |
|
| 22 | + 'aucune_breve' => 'No hay ninguna breve en esta dirección', |
|
| 23 | + 'aucune_rubrique' => 'No hay ninguna sección en esta dirección', |
|
| 24 | + 'auteur' => 'Autor o autora', |
|
| 25 | + 'autres' => 'Otros', |
|
| 26 | + 'autres_breves' => 'Otros breves', |
|
| 27 | + 'autres_groupes_mots_clefs' => 'Otros grupos de palabras clave', |
|
| 28 | + 'autres_sites' => 'Otros sitios', |
|
| 29 | + |
|
| 30 | + // B |
|
| 31 | + 'bonjour' => 'Hola', |
|
| 32 | + |
|
| 33 | + // C |
|
| 34 | + 'commenter_site' => 'Comentar este sitio', |
|
| 35 | + 'contact' => 'Contacto', |
|
| 36 | + 'copie_document_impossible' => 'Imposible copiar el documento', |
|
| 37 | + |
|
| 38 | + // D |
|
| 39 | + 'date' => 'Fecha', |
|
| 40 | + 'dernier_ajout' => 'Última actualización', |
|
| 41 | + 'dernieres_breves' => 'Últimos breves', |
|
| 42 | + 'derniers_articles' => 'Últimos artículos', |
|
| 43 | + 'derniers_commentaires' => 'Últimos comentarios', |
|
| 44 | + 'derniers_messages_forum' => 'Últimos mensajes publicados en los foros', |
|
| 45 | + |
|
| 46 | + // E |
|
| 47 | + 'edition_mode_texte' => 'Edición en modo texto de', |
|
| 48 | + 'en_reponse' => 'En respuesta a:', |
|
| 49 | + 'en_resume' => 'En resumen', |
|
| 50 | + 'envoyer_message' => 'Enviar un mensaje', |
|
| 51 | + 'espace_prive' => 'Espacio privado', |
|
| 52 | + |
|
| 53 | + // F |
|
| 54 | + 'formats_acceptes' => 'Formatos aceptados: @formats@.', |
|
| 55 | + |
|
| 56 | + // H |
|
| 57 | + 'hierarchie_site' => 'Jerarquía del sitio', |
|
| 58 | + |
|
| 59 | + // J |
|
| 60 | + 'jours' => 'días', |
|
| 61 | + |
|
| 62 | + // L |
|
| 63 | + 'lien_connecter' => 'Conectarse', |
|
| 64 | + |
|
| 65 | + // M |
|
| 66 | + 'meme_auteur' => 'Del mismo autor', |
|
| 67 | + 'meme_rubrique' => 'En la misma sección', |
|
| 68 | + 'memes_auteurs' => 'De los mismos autores', |
|
| 69 | + 'message' => 'Mensaje', |
|
| 70 | + 'messages_forum' => 'Mensajes', |
|
| 71 | + 'messages_recents' => 'Los mensajes más recientes del foro', |
|
| 72 | + 'mots_clef' => 'Palabra clave', |
|
| 73 | + 'mots_clefs' => 'Palabras clave', |
|
| 74 | + 'mots_clefs_meme_groupe' => 'Palabras claves en el mismo grupo', |
|
| 75 | + |
|
| 76 | + // N |
|
| 77 | + 'navigation' => 'Navegación', |
|
| 78 | + 'nom' => 'Nombre', |
|
| 79 | + 'nouveautes' => 'Las novedades', |
|
| 80 | + 'nouveautes_web' => 'Novedades en la web', |
|
| 81 | + 'nouveaux_articles' => 'Nuevos artículos', |
|
| 82 | + 'nouvelles_breves' => 'Nuevas breves', |
|
| 83 | + |
|
| 84 | + // P |
|
| 85 | + 'page_precedente' => 'Página anterior', |
|
| 86 | + 'page_suivante' => 'Página siguiente', |
|
| 87 | + 'par_auteur' => 'por ', |
|
| 88 | + 'participer_site' => 'Puedes participar en la vida de este sitio y proponer artículos inscribiéndote aqui. De inmediato recibirás un correo electrónico con tus claves de acceso al espacio privado del sitio.', |
|
| 89 | + 'plan_site' => 'Mapa del sitio', |
|
| 90 | + 'popularite' => 'Popularidad', |
|
| 91 | + 'poster_message' => 'Publicar un mensaje', |
|
| 92 | + 'proposer_site' => 'Proponga un sitio para añadir en esta sección:', |
|
| 93 | + |
|
| 94 | + // R |
|
| 95 | + 'repondre_article' => 'Comentar este artículo', |
|
| 96 | + 'repondre_breve' => 'Comentar esta breve', |
|
| 97 | + 'resultats_recherche' => 'Resultados de la búsqueda', |
|
| 98 | + 'retour_debut_forums' => 'Volver al inicio del foro', |
|
| 99 | + 'rss_abonnement' => 'Copie la siguiente URL en su agregador:', |
|
| 100 | + 'rss_abonnement_titre' => 'Suscribirse', |
|
| 101 | + 'rss_abonnement_titre_page' => 'Suscribirse a', |
|
| 102 | + 'rss_explication' => 'Un feed RSS recoge información actualizada de un sitio. Proporciona el contenido de las entradas, comentarios o un extracto de los mismos, así como un enlace a las versiones completas y alguna otra información. Este feed está pensado para ser leído por un agregador RSS.', |
|
| 103 | + 'rss_explication_titre' => '¿Qué es un feed RSS?', |
|
| 104 | + 'rubrique' => 'Sección', |
|
| 105 | + 'rubriques' => 'Secciones', |
|
| 106 | + |
|
| 107 | + // S |
|
| 108 | + 'signatures_petition' => 'Firmas', |
|
| 109 | + 'site_realise_avec_spip' => 'Sitio desarrollado con SPIP', |
|
| 110 | + 'sites_web' => 'Sitios Web', |
|
| 111 | + 'sous_rubriques' => 'Subsección', |
|
| 112 | + 'spam' => 'Spam', |
|
| 113 | + 'suite' => 'continuar', |
|
| 114 | + 'sur_web' => 'Del web', |
|
| 115 | + 'syndiquer_rubrique' => 'Sindicar esta sección', |
|
| 116 | + 'syndiquer_site' => 'Sindicar el sitio completo', |
|
| 117 | + |
|
| 118 | + // T |
|
| 119 | + 'texte_lettre_information' => 'Este es el boletín de información del sitio', |
|
| 120 | + 'texte_lettre_information_2' => 'Este boletín reseña las novedades publicadas desde ', |
|
| 121 | + |
|
| 122 | + // V |
|
| 123 | + 'ver_imprimer' => 'Versión para imprimir', |
|
| 124 | + 'voir_en_ligne' => 'Ver en línea', |
|
| 125 | + 'voir_squelette' => 'ver el esqueleto de esta página' |
|
| 126 | 126 | ); |
@@ -398,8 +398,7 @@ discard block |
||
| 398 | 398 | if (lien_triables($table_lien)) { |
| 399 | 399 | if (isset($qualif['rang_lien'])) { |
| 400 | 400 | $rang = $qualif['rang_lien']; |
| 401 | - } |
|
| 402 | - else { |
|
| 401 | + } else { |
|
| 403 | 402 | $where = lien_where($primary, $id, $objet, $id_objet); |
| 404 | 403 | // si il y a deja un lien pour ce couple (avec un autre role?) on reprend le meme rang si non nul |
| 405 | 404 | if (!$rang = intval(sql_getfetsel('rang_lien', $table_lien, $where))) { |
@@ -545,8 +544,7 @@ discard block |
||
| 545 | 544 | $desc = $trouver_table($table_lien); |
| 546 | 545 | if ($desc and isset($desc['field']['rang_lien'])) { |
| 547 | 546 | $triables[$table_lien] = true; |
| 548 | - } |
|
| 549 | - else { |
|
| 547 | + } else { |
|
| 550 | 548 | $triables[$table_lien] = false; |
| 551 | 549 | } |
| 552 | 550 | } |
@@ -29,7 +29,7 @@ discard block |
||
| 29 | 29 | */ |
| 30 | 30 | |
| 31 | 31 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 32 | - return; |
|
| 32 | + return; |
|
| 33 | 33 | } |
| 34 | 34 | |
| 35 | 35 | // charger la gestion les rôles sur les objets |
@@ -47,22 +47,22 @@ discard block |
||
| 47 | 47 | * - array(clé primaire, nom de la table de lien) si associable |
| 48 | 48 | */ |
| 49 | 49 | function objet_associable($objet) { |
| 50 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 51 | - $table_sql = table_objet_sql($objet); |
|
| 52 | - |
|
| 53 | - $l = ''; |
|
| 54 | - if ( |
|
| 55 | - $primary = id_table_objet($objet) |
|
| 56 | - and $trouver_table($l = $table_sql . '_liens', '', true, ['log_missing' => false]) |
|
| 57 | - and !preg_match(',[^\w],', $primary) |
|
| 58 | - and !preg_match(',[^\w],', $l) |
|
| 59 | - ) { |
|
| 60 | - return [$primary, $l]; |
|
| 61 | - } |
|
| 62 | - |
|
| 63 | - spip_log("Objet $objet non associable : ne dispose pas d'une cle primaire $primary OU d'une table liens $l"); |
|
| 64 | - |
|
| 65 | - return false; |
|
| 50 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 51 | + $table_sql = table_objet_sql($objet); |
|
| 52 | + |
|
| 53 | + $l = ''; |
|
| 54 | + if ( |
|
| 55 | + $primary = id_table_objet($objet) |
|
| 56 | + and $trouver_table($l = $table_sql . '_liens', '', true, ['log_missing' => false]) |
|
| 57 | + and !preg_match(',[^\w],', $primary) |
|
| 58 | + and !preg_match(',[^\w],', $l) |
|
| 59 | + ) { |
|
| 60 | + return [$primary, $l]; |
|
| 61 | + } |
|
| 62 | + |
|
| 63 | + spip_log("Objet $objet non associable : ne dispose pas d'une cle primaire $primary OU d'une table liens $l"); |
|
| 64 | + |
|
| 65 | + return false; |
|
| 66 | 66 | } |
| 67 | 67 | |
| 68 | 68 | /** |
@@ -88,13 +88,13 @@ discard block |
||
| 88 | 88 | * @return bool|int |
| 89 | 89 | */ |
| 90 | 90 | function objet_associer($objets_source, $objets_lies, $qualif = null) { |
| 91 | - $modifs = objet_traiter_liaisons('lien_insert', $objets_source, $objets_lies, $qualif); |
|
| 91 | + $modifs = objet_traiter_liaisons('lien_insert', $objets_source, $objets_lies, $qualif); |
|
| 92 | 92 | |
| 93 | - if ($qualif) { |
|
| 94 | - objet_qualifier_liens($objets_source, $objets_lies, $qualif); |
|
| 95 | - } |
|
| 93 | + if ($qualif) { |
|
| 94 | + objet_qualifier_liens($objets_source, $objets_lies, $qualif); |
|
| 95 | + } |
|
| 96 | 96 | |
| 97 | - return $modifs; // pas d'erreur |
|
| 97 | + return $modifs; // pas d'erreur |
|
| 98 | 98 | } |
| 99 | 99 | |
| 100 | 100 | |
@@ -128,7 +128,7 @@ discard block |
||
| 128 | 128 | * @return bool|int |
| 129 | 129 | */ |
| 130 | 130 | function objet_dissocier($objets_source, $objets_lies, $cond = null) { |
| 131 | - return objet_traiter_liaisons('lien_delete', $objets_source, $objets_lies, $cond); |
|
| 131 | + return objet_traiter_liaisons('lien_delete', $objets_source, $objets_lies, $cond); |
|
| 132 | 132 | } |
| 133 | 133 | |
| 134 | 134 | |
@@ -153,7 +153,7 @@ discard block |
||
| 153 | 153 | * @return bool|int |
| 154 | 154 | */ |
| 155 | 155 | function objet_qualifier_liens($objets_source, $objets_lies, $qualif) { |
| 156 | - return objet_traiter_liaisons('lien_set', $objets_source, $objets_lies, $qualif); |
|
| 156 | + return objet_traiter_liaisons('lien_set', $objets_source, $objets_lies, $qualif); |
|
| 157 | 157 | } |
| 158 | 158 | |
| 159 | 159 | |
@@ -188,7 +188,7 @@ discard block |
||
| 188 | 188 | * Liste des trouvailles |
| 189 | 189 | */ |
| 190 | 190 | function objet_trouver_liens($objets_source, $objets_lies, $cond = null) { |
| 191 | - return objet_traiter_liaisons('lien_find', $objets_source, $objets_lies, $cond); |
|
| 191 | + return objet_traiter_liaisons('lien_find', $objets_source, $objets_lies, $cond); |
|
| 192 | 192 | } |
| 193 | 193 | |
| 194 | 194 | |
@@ -212,8 +212,8 @@ discard block |
||
| 212 | 212 | * @return int |
| 213 | 213 | */ |
| 214 | 214 | function objet_optimiser_liens($objets_source, $objets_lies) { |
| 215 | - spip_log('objet_optimiser_liens : ' . json_encode($objets_source, JSON_THROW_ON_ERROR) . ', ' . json_encode($objets_lies, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG); |
|
| 216 | - return objet_traiter_liaisons('lien_optimise', $objets_source, $objets_lies); |
|
| 215 | + spip_log('objet_optimiser_liens : ' . json_encode($objets_source, JSON_THROW_ON_ERROR) . ', ' . json_encode($objets_lies, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG); |
|
| 216 | + return objet_traiter_liaisons('lien_optimise', $objets_source, $objets_lies); |
|
| 217 | 217 | } |
| 218 | 218 | |
| 219 | 219 | |
@@ -233,37 +233,37 @@ discard block |
||
| 233 | 233 | * Nombre de liens copiés |
| 234 | 234 | */ |
| 235 | 235 | function objet_dupliquer_liens($objet, $id_source, $id_cible, $types = null, $exclure_types = null) { |
| 236 | - include_spip('base/objets'); |
|
| 237 | - $tables = lister_tables_objets_sql(); |
|
| 238 | - $n = 0; |
|
| 239 | - foreach ($tables as $table_sql => $infos) { |
|
| 240 | - if ( |
|
| 241 | - (is_null($types) or in_array($infos['type'], $types)) |
|
| 242 | - and (is_null($exclure_types) or !in_array($infos['type'], $exclure_types)) |
|
| 243 | - ) { |
|
| 244 | - if (objet_associable($infos['type'])) { |
|
| 245 | - $liens = (($infos['type'] == $objet) ? |
|
| 246 | - objet_trouver_liens([$objet => $id_source], '*') |
|
| 247 | - : |
|
| 248 | - objet_trouver_liens([$infos['type'] => '*'], [$objet => $id_source])); |
|
| 249 | - foreach ($liens as $lien) { |
|
| 250 | - $n++; |
|
| 251 | - if ($infos['type'] == $objet) { |
|
| 252 | - if ( |
|
| 253 | - (is_null($types) or in_array($lien['objet'], $types)) |
|
| 254 | - and (is_null($exclure_types) or !in_array($lien['objet'], $exclure_types)) |
|
| 255 | - ) { |
|
| 256 | - objet_associer([$objet => $id_cible], [$lien['objet'] => $lien[$lien['objet']]], $lien); |
|
| 257 | - } |
|
| 258 | - } else { |
|
| 259 | - objet_associer([$infos['type'] => $lien[$infos['type']]], [$objet => $id_cible], $lien); |
|
| 260 | - } |
|
| 261 | - } |
|
| 262 | - } |
|
| 263 | - } |
|
| 264 | - } |
|
| 265 | - |
|
| 266 | - return $n; |
|
| 236 | + include_spip('base/objets'); |
|
| 237 | + $tables = lister_tables_objets_sql(); |
|
| 238 | + $n = 0; |
|
| 239 | + foreach ($tables as $table_sql => $infos) { |
|
| 240 | + if ( |
|
| 241 | + (is_null($types) or in_array($infos['type'], $types)) |
|
| 242 | + and (is_null($exclure_types) or !in_array($infos['type'], $exclure_types)) |
|
| 243 | + ) { |
|
| 244 | + if (objet_associable($infos['type'])) { |
|
| 245 | + $liens = (($infos['type'] == $objet) ? |
|
| 246 | + objet_trouver_liens([$objet => $id_source], '*') |
|
| 247 | + : |
|
| 248 | + objet_trouver_liens([$infos['type'] => '*'], [$objet => $id_source])); |
|
| 249 | + foreach ($liens as $lien) { |
|
| 250 | + $n++; |
|
| 251 | + if ($infos['type'] == $objet) { |
|
| 252 | + if ( |
|
| 253 | + (is_null($types) or in_array($lien['objet'], $types)) |
|
| 254 | + and (is_null($exclure_types) or !in_array($lien['objet'], $exclure_types)) |
|
| 255 | + ) { |
|
| 256 | + objet_associer([$objet => $id_cible], [$lien['objet'] => $lien[$lien['objet']]], $lien); |
|
| 257 | + } |
|
| 258 | + } else { |
|
| 259 | + objet_associer([$infos['type'] => $lien[$infos['type']]], [$objet => $id_cible], $lien); |
|
| 260 | + } |
|
| 261 | + } |
|
| 262 | + } |
|
| 263 | + } |
|
| 264 | + } |
|
| 265 | + |
|
| 266 | + return $n; |
|
| 267 | 267 | } |
| 268 | 268 | |
| 269 | 269 | /** |
@@ -305,38 +305,38 @@ discard block |
||
| 305 | 305 | * @return bool|int|array |
| 306 | 306 | */ |
| 307 | 307 | function objet_traiter_liaisons($operation, $objets_source, $objets_lies, $set = null) { |
| 308 | - // accepter une syntaxe minimale pour supprimer tous les liens |
|
| 309 | - if ($objets_lies == '*') { |
|
| 310 | - $objets_lies = ['*' => '*']; |
|
| 311 | - } |
|
| 312 | - $modifs = 0; // compter le nombre de modifications |
|
| 313 | - $echec = null; |
|
| 314 | - foreach ($objets_source as $objet => $ids) { |
|
| 315 | - if ($a = objet_associable($objet)) { |
|
| 316 | - [$primary, $l] = $a; |
|
| 317 | - if (!is_array($ids)) { |
|
| 318 | - $ids = [$ids]; |
|
| 319 | - } elseif (reset($ids) == 'NOT') { |
|
| 320 | - // si on demande un array('NOT',...) => recuperer la liste d'ids correspondants |
|
| 321 | - $where = lien_where($primary, $ids, '*', '*'); |
|
| 322 | - $ids = sql_allfetsel($primary, $l, $where); |
|
| 323 | - $ids = array_map('reset', $ids); |
|
| 324 | - } |
|
| 325 | - foreach ($ids as $id) { |
|
| 326 | - $res = $operation($objet, $primary, $l, $id, $objets_lies, $set); |
|
| 327 | - if ($res === false) { |
|
| 328 | - spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id", _LOG_ERREUR); |
|
| 329 | - $echec = true; |
|
| 330 | - } else { |
|
| 331 | - $modifs = ($modifs ? (is_array($res) ? array_merge($modifs, $res) : $modifs + $res) : $res); |
|
| 332 | - } |
|
| 333 | - } |
|
| 334 | - } else { |
|
| 335 | - $echec = true; |
|
| 336 | - } |
|
| 337 | - } |
|
| 338 | - |
|
| 339 | - return ($echec ? false : $modifs); // pas d'erreur |
|
| 308 | + // accepter une syntaxe minimale pour supprimer tous les liens |
|
| 309 | + if ($objets_lies == '*') { |
|
| 310 | + $objets_lies = ['*' => '*']; |
|
| 311 | + } |
|
| 312 | + $modifs = 0; // compter le nombre de modifications |
|
| 313 | + $echec = null; |
|
| 314 | + foreach ($objets_source as $objet => $ids) { |
|
| 315 | + if ($a = objet_associable($objet)) { |
|
| 316 | + [$primary, $l] = $a; |
|
| 317 | + if (!is_array($ids)) { |
|
| 318 | + $ids = [$ids]; |
|
| 319 | + } elseif (reset($ids) == 'NOT') { |
|
| 320 | + // si on demande un array('NOT',...) => recuperer la liste d'ids correspondants |
|
| 321 | + $where = lien_where($primary, $ids, '*', '*'); |
|
| 322 | + $ids = sql_allfetsel($primary, $l, $where); |
|
| 323 | + $ids = array_map('reset', $ids); |
|
| 324 | + } |
|
| 325 | + foreach ($ids as $id) { |
|
| 326 | + $res = $operation($objet, $primary, $l, $id, $objets_lies, $set); |
|
| 327 | + if ($res === false) { |
|
| 328 | + spip_log("objet_traiter_liaisons [Echec] : $operation sur $objet/$primary/$l/$id", _LOG_ERREUR); |
|
| 329 | + $echec = true; |
|
| 330 | + } else { |
|
| 331 | + $modifs = ($modifs ? (is_array($res) ? array_merge($modifs, $res) : $modifs + $res) : $res); |
|
| 332 | + } |
|
| 333 | + } |
|
| 334 | + } else { |
|
| 335 | + $echec = true; |
|
| 336 | + } |
|
| 337 | + } |
|
| 338 | + |
|
| 339 | + return ($echec ? false : $modifs); // pas d'erreur |
|
| 340 | 340 | } |
| 341 | 341 | |
| 342 | 342 | |
@@ -365,117 +365,117 @@ discard block |
||
| 365 | 365 | * Nombre d'insertions faites, false si échec. |
| 366 | 366 | */ |
| 367 | 367 | function lien_insert($objet_source, $primary, $table_lien, $id, $objets, $qualif) { |
| 368 | - $ins = 0; |
|
| 369 | - $echec = null; |
|
| 370 | - if (is_null($qualif)) { |
|
| 371 | - $qualif = []; |
|
| 372 | - } |
|
| 373 | - |
|
| 374 | - foreach ($objets as $objet => $id_objets) { |
|
| 375 | - if (!is_array($id_objets)) { |
|
| 376 | - $id_objets = [$id_objets]; |
|
| 377 | - } |
|
| 378 | - |
|
| 379 | - // role, colonne, where par défaut |
|
| 380 | - [$role, $colonne_role, $cond] = |
|
| 381 | - roles_trouver_dans_qualif($objet_source, $objet, $qualif); |
|
| 382 | - |
|
| 383 | - foreach ($id_objets as $id_objet) { |
|
| 384 | - $objet = (($objet == '*') ? $objet : objet_type($objet)); # securite |
|
| 385 | - |
|
| 386 | - $insertions = [ |
|
| 387 | - 'id_objet' => $id_objet, |
|
| 388 | - 'objet' => $objet, |
|
| 389 | - $primary => $id |
|
| 390 | - ]; |
|
| 391 | - // rôle en plus s'il est défini |
|
| 392 | - if ($role) { |
|
| 393 | - $insertions += [ |
|
| 394 | - $colonne_role => $role |
|
| 395 | - ]; |
|
| 396 | - } |
|
| 397 | - |
|
| 398 | - if (lien_triables($table_lien)) { |
|
| 399 | - if (isset($qualif['rang_lien'])) { |
|
| 400 | - $rang = $qualif['rang_lien']; |
|
| 401 | - } |
|
| 402 | - else { |
|
| 403 | - $where = lien_where($primary, $id, $objet, $id_objet); |
|
| 404 | - // si il y a deja un lien pour ce couple (avec un autre role?) on reprend le meme rang si non nul |
|
| 405 | - if (!$rang = intval(sql_getfetsel('rang_lien', $table_lien, $where))) { |
|
| 406 | - $where = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet); |
|
| 407 | - $rang = intval(sql_getfetsel('max(rang_lien)', $table_lien, $where)); |
|
| 408 | - // si aucun lien n'a de rang, on en introduit pas, on garde zero |
|
| 409 | - if ($rang > 0) { |
|
| 410 | - $rang = intval($rang) + 1; |
|
| 411 | - } |
|
| 412 | - } |
|
| 413 | - } |
|
| 414 | - $insertions['rang_lien'] = $rang; |
|
| 415 | - } |
|
| 416 | - |
|
| 417 | - $args = [ |
|
| 418 | - 'table_lien' => $table_lien, |
|
| 419 | - 'objet_source' => $objet_source, |
|
| 420 | - 'id_objet_source' => $id, |
|
| 421 | - 'objet' => $objet, |
|
| 422 | - 'id_objet' => $id_objet, |
|
| 423 | - 'role' => $role, |
|
| 424 | - 'colonne_role' => $colonne_role, |
|
| 425 | - 'action' => 'insert', |
|
| 426 | - ]; |
|
| 427 | - |
|
| 428 | - // Envoyer aux plugins |
|
| 429 | - $insertions = pipeline( |
|
| 430 | - 'pre_edition_lien', |
|
| 431 | - [ |
|
| 432 | - 'args' => $args, |
|
| 433 | - 'data' => $insertions |
|
| 434 | - ] |
|
| 435 | - ); |
|
| 436 | - $args['id_objet'] = $insertions['id_objet']; |
|
| 437 | - |
|
| 438 | - $where = lien_where($primary, $id, $objet, $id_objet, $cond); |
|
| 439 | - |
|
| 440 | - if ( |
|
| 441 | - ($id_objet = intval($insertions['id_objet']) or in_array($objet, ['site', 'rubrique'])) |
|
| 442 | - and !sql_getfetsel($primary, $table_lien, $where) |
|
| 443 | - ) { |
|
| 444 | - if (lien_triables($table_lien) and isset($insertions['rang_lien']) and intval($insertions['rang_lien'])) { |
|
| 445 | - $where_meme_lien = lien_where($primary, $id, $objet, $id_objet); |
|
| 446 | - $where_meme_lien = implode(' AND ', $where_meme_lien); |
|
| 447 | - // on decale les liens de rang_lien>=la valeur inseree pour faire la place |
|
| 448 | - // sauf sur le meme lien avec un role eventuellement different |
|
| 449 | - $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . intval($insertions['rang_lien']), "NOT($where_meme_lien)"]); |
|
| 450 | - sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w); |
|
| 451 | - } |
|
| 452 | - |
|
| 453 | - $e = sql_insertq($table_lien, $insertions); |
|
| 454 | - if ($e !== false) { |
|
| 455 | - $ins++; |
|
| 456 | - lien_propage_date_modif($objet, $id_objet); |
|
| 457 | - lien_propage_date_modif($objet_source, $id); |
|
| 458 | - // Envoyer aux plugins |
|
| 459 | - pipeline( |
|
| 460 | - 'post_edition_lien', |
|
| 461 | - [ |
|
| 462 | - 'args' => $args, |
|
| 463 | - 'data' => $insertions |
|
| 464 | - ] |
|
| 465 | - ); |
|
| 466 | - } else { |
|
| 467 | - $echec = true; |
|
| 468 | - } |
|
| 469 | - } |
|
| 470 | - } |
|
| 471 | - } |
|
| 472 | - // si on a fait des insertions, on reordonne les liens concernes |
|
| 473 | - // pas la peine si $qualif['rang_lien'] etait fournie, on va passer dans lien_set a suivre et donc finir le recomptage |
|
| 474 | - if ($ins > 0 and empty($qualif['rang_lien'])) { |
|
| 475 | - lien_ordonner($objet_source, $primary, $table_lien, $id, $objets); |
|
| 476 | - } |
|
| 477 | - |
|
| 478 | - return ($echec ? false : $ins); |
|
| 368 | + $ins = 0; |
|
| 369 | + $echec = null; |
|
| 370 | + if (is_null($qualif)) { |
|
| 371 | + $qualif = []; |
|
| 372 | + } |
|
| 373 | + |
|
| 374 | + foreach ($objets as $objet => $id_objets) { |
|
| 375 | + if (!is_array($id_objets)) { |
|
| 376 | + $id_objets = [$id_objets]; |
|
| 377 | + } |
|
| 378 | + |
|
| 379 | + // role, colonne, where par défaut |
|
| 380 | + [$role, $colonne_role, $cond] = |
|
| 381 | + roles_trouver_dans_qualif($objet_source, $objet, $qualif); |
|
| 382 | + |
|
| 383 | + foreach ($id_objets as $id_objet) { |
|
| 384 | + $objet = (($objet == '*') ? $objet : objet_type($objet)); # securite |
|
| 385 | + |
|
| 386 | + $insertions = [ |
|
| 387 | + 'id_objet' => $id_objet, |
|
| 388 | + 'objet' => $objet, |
|
| 389 | + $primary => $id |
|
| 390 | + ]; |
|
| 391 | + // rôle en plus s'il est défini |
|
| 392 | + if ($role) { |
|
| 393 | + $insertions += [ |
|
| 394 | + $colonne_role => $role |
|
| 395 | + ]; |
|
| 396 | + } |
|
| 397 | + |
|
| 398 | + if (lien_triables($table_lien)) { |
|
| 399 | + if (isset($qualif['rang_lien'])) { |
|
| 400 | + $rang = $qualif['rang_lien']; |
|
| 401 | + } |
|
| 402 | + else { |
|
| 403 | + $where = lien_where($primary, $id, $objet, $id_objet); |
|
| 404 | + // si il y a deja un lien pour ce couple (avec un autre role?) on reprend le meme rang si non nul |
|
| 405 | + if (!$rang = intval(sql_getfetsel('rang_lien', $table_lien, $where))) { |
|
| 406 | + $where = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet); |
|
| 407 | + $rang = intval(sql_getfetsel('max(rang_lien)', $table_lien, $where)); |
|
| 408 | + // si aucun lien n'a de rang, on en introduit pas, on garde zero |
|
| 409 | + if ($rang > 0) { |
|
| 410 | + $rang = intval($rang) + 1; |
|
| 411 | + } |
|
| 412 | + } |
|
| 413 | + } |
|
| 414 | + $insertions['rang_lien'] = $rang; |
|
| 415 | + } |
|
| 416 | + |
|
| 417 | + $args = [ |
|
| 418 | + 'table_lien' => $table_lien, |
|
| 419 | + 'objet_source' => $objet_source, |
|
| 420 | + 'id_objet_source' => $id, |
|
| 421 | + 'objet' => $objet, |
|
| 422 | + 'id_objet' => $id_objet, |
|
| 423 | + 'role' => $role, |
|
| 424 | + 'colonne_role' => $colonne_role, |
|
| 425 | + 'action' => 'insert', |
|
| 426 | + ]; |
|
| 427 | + |
|
| 428 | + // Envoyer aux plugins |
|
| 429 | + $insertions = pipeline( |
|
| 430 | + 'pre_edition_lien', |
|
| 431 | + [ |
|
| 432 | + 'args' => $args, |
|
| 433 | + 'data' => $insertions |
|
| 434 | + ] |
|
| 435 | + ); |
|
| 436 | + $args['id_objet'] = $insertions['id_objet']; |
|
| 437 | + |
|
| 438 | + $where = lien_where($primary, $id, $objet, $id_objet, $cond); |
|
| 439 | + |
|
| 440 | + if ( |
|
| 441 | + ($id_objet = intval($insertions['id_objet']) or in_array($objet, ['site', 'rubrique'])) |
|
| 442 | + and !sql_getfetsel($primary, $table_lien, $where) |
|
| 443 | + ) { |
|
| 444 | + if (lien_triables($table_lien) and isset($insertions['rang_lien']) and intval($insertions['rang_lien'])) { |
|
| 445 | + $where_meme_lien = lien_where($primary, $id, $objet, $id_objet); |
|
| 446 | + $where_meme_lien = implode(' AND ', $where_meme_lien); |
|
| 447 | + // on decale les liens de rang_lien>=la valeur inseree pour faire la place |
|
| 448 | + // sauf sur le meme lien avec un role eventuellement different |
|
| 449 | + $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . intval($insertions['rang_lien']), "NOT($where_meme_lien)"]); |
|
| 450 | + sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w); |
|
| 451 | + } |
|
| 452 | + |
|
| 453 | + $e = sql_insertq($table_lien, $insertions); |
|
| 454 | + if ($e !== false) { |
|
| 455 | + $ins++; |
|
| 456 | + lien_propage_date_modif($objet, $id_objet); |
|
| 457 | + lien_propage_date_modif($objet_source, $id); |
|
| 458 | + // Envoyer aux plugins |
|
| 459 | + pipeline( |
|
| 460 | + 'post_edition_lien', |
|
| 461 | + [ |
|
| 462 | + 'args' => $args, |
|
| 463 | + 'data' => $insertions |
|
| 464 | + ] |
|
| 465 | + ); |
|
| 466 | + } else { |
|
| 467 | + $echec = true; |
|
| 468 | + } |
|
| 469 | + } |
|
| 470 | + } |
|
| 471 | + } |
|
| 472 | + // si on a fait des insertions, on reordonne les liens concernes |
|
| 473 | + // pas la peine si $qualif['rang_lien'] etait fournie, on va passer dans lien_set a suivre et donc finir le recomptage |
|
| 474 | + if ($ins > 0 and empty($qualif['rang_lien'])) { |
|
| 475 | + lien_ordonner($objet_source, $primary, $table_lien, $id, $objets); |
|
| 476 | + } |
|
| 477 | + |
|
| 478 | + return ($echec ? false : $ins); |
|
| 479 | 479 | } |
| 480 | 480 | |
| 481 | 481 | |
@@ -488,47 +488,47 @@ discard block |
||
| 488 | 488 | * @param array|string $objets |
| 489 | 489 | */ |
| 490 | 490 | function lien_ordonner($objet_source, $primary, $table_lien, $id, $objets) { |
| 491 | - if (!lien_triables($table_lien)) { |
|
| 492 | - return; |
|
| 493 | - } |
|
| 494 | - |
|
| 495 | - $deja_reordonne = []; |
|
| 496 | - |
|
| 497 | - foreach ($objets as $objet => $id_objets) { |
|
| 498 | - if (!is_array($id_objets)) { |
|
| 499 | - $id_objets = [$id_objets]; |
|
| 500 | - } |
|
| 501 | - |
|
| 502 | - foreach ($id_objets as $id_objet) { |
|
| 503 | - if (empty($deja_reordonne[$id][$objet][$id_objet])) { |
|
| 504 | - $objet = (($objet == '*') ? $objet : objet_type($objet)); # securite |
|
| 505 | - |
|
| 506 | - $where = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet); |
|
| 507 | - $liens = sql_allfetsel("$primary, id_objet, objet, rang_lien", $table_lien, $where, '', 'rang_lien'); |
|
| 508 | - |
|
| 509 | - $rangs = array_column($liens, 'rang_lien'); |
|
| 510 | - if (count($rangs) and (max($rangs) > 0 or min($rangs) < 0)) { |
|
| 511 | - $rang = 1; |
|
| 512 | - foreach ($liens as $lien) { |
|
| 513 | - if (empty($deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']])) { |
|
| 514 | - $where = lien_where($primary, $lien[$primary], $lien['objet'], $lien['id_objet'], ['rang_lien!=' . intval($rang)]); |
|
| 515 | - sql_updateq($table_lien, ['rang_lien' => $rang], $where); |
|
| 516 | - |
|
| 517 | - if (empty($deja_reordonne[$lien[$primary]])) { |
|
| 518 | - $deja_reordonne[$lien[$primary]] = []; |
|
| 519 | - } |
|
| 520 | - if (empty($deja_reordonne[$lien[$primary]][$lien['objet']])) { |
|
| 521 | - $deja_reordonne[$lien[$primary]][$lien['objet']] = []; |
|
| 522 | - } |
|
| 523 | - $deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']] = $rang; |
|
| 524 | - |
|
| 525 | - $rang++; |
|
| 526 | - } |
|
| 527 | - } |
|
| 528 | - } |
|
| 529 | - } |
|
| 530 | - } |
|
| 531 | - } |
|
| 491 | + if (!lien_triables($table_lien)) { |
|
| 492 | + return; |
|
| 493 | + } |
|
| 494 | + |
|
| 495 | + $deja_reordonne = []; |
|
| 496 | + |
|
| 497 | + foreach ($objets as $objet => $id_objets) { |
|
| 498 | + if (!is_array($id_objets)) { |
|
| 499 | + $id_objets = [$id_objets]; |
|
| 500 | + } |
|
| 501 | + |
|
| 502 | + foreach ($id_objets as $id_objet) { |
|
| 503 | + if (empty($deja_reordonne[$id][$objet][$id_objet])) { |
|
| 504 | + $objet = (($objet == '*') ? $objet : objet_type($objet)); # securite |
|
| 505 | + |
|
| 506 | + $where = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet); |
|
| 507 | + $liens = sql_allfetsel("$primary, id_objet, objet, rang_lien", $table_lien, $where, '', 'rang_lien'); |
|
| 508 | + |
|
| 509 | + $rangs = array_column($liens, 'rang_lien'); |
|
| 510 | + if (count($rangs) and (max($rangs) > 0 or min($rangs) < 0)) { |
|
| 511 | + $rang = 1; |
|
| 512 | + foreach ($liens as $lien) { |
|
| 513 | + if (empty($deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']])) { |
|
| 514 | + $where = lien_where($primary, $lien[$primary], $lien['objet'], $lien['id_objet'], ['rang_lien!=' . intval($rang)]); |
|
| 515 | + sql_updateq($table_lien, ['rang_lien' => $rang], $where); |
|
| 516 | + |
|
| 517 | + if (empty($deja_reordonne[$lien[$primary]])) { |
|
| 518 | + $deja_reordonne[$lien[$primary]] = []; |
|
| 519 | + } |
|
| 520 | + if (empty($deja_reordonne[$lien[$primary]][$lien['objet']])) { |
|
| 521 | + $deja_reordonne[$lien[$primary]][$lien['objet']] = []; |
|
| 522 | + } |
|
| 523 | + $deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']] = $rang; |
|
| 524 | + |
|
| 525 | + $rang++; |
|
| 526 | + } |
|
| 527 | + } |
|
| 528 | + } |
|
| 529 | + } |
|
| 530 | + } |
|
| 531 | + } |
|
| 532 | 532 | } |
| 533 | 533 | |
| 534 | 534 | |
@@ -539,18 +539,18 @@ discard block |
||
| 539 | 539 | * @return mixed |
| 540 | 540 | */ |
| 541 | 541 | function lien_triables($table_lien) { |
| 542 | - static $triables = []; |
|
| 543 | - if (!isset($triables[$table_lien])) { |
|
| 544 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 545 | - $desc = $trouver_table($table_lien); |
|
| 546 | - if ($desc and isset($desc['field']['rang_lien'])) { |
|
| 547 | - $triables[$table_lien] = true; |
|
| 548 | - } |
|
| 549 | - else { |
|
| 550 | - $triables[$table_lien] = false; |
|
| 551 | - } |
|
| 552 | - } |
|
| 553 | - return $triables[$table_lien]; |
|
| 542 | + static $triables = []; |
|
| 543 | + if (!isset($triables[$table_lien])) { |
|
| 544 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 545 | + $desc = $trouver_table($table_lien); |
|
| 546 | + if ($desc and isset($desc['field']['rang_lien'])) { |
|
| 547 | + $triables[$table_lien] = true; |
|
| 548 | + } |
|
| 549 | + else { |
|
| 550 | + $triables[$table_lien] = false; |
|
| 551 | + } |
|
| 552 | + } |
|
| 553 | + return $triables[$table_lien]; |
|
| 554 | 554 | } |
| 555 | 555 | |
| 556 | 556 | |
@@ -566,52 +566,52 @@ discard block |
||
| 566 | 566 | * @return array Liste des conditions |
| 567 | 567 | */ |
| 568 | 568 | function lien_where($primary, $id_source, $objet, $id_objet, $cond = []) { |
| 569 | - if ( |
|
| 570 | - (!is_array($id_source) and !strlen($id_source)) |
|
| 571 | - or !strlen($objet) |
|
| 572 | - or (!is_array($id_objet) and !strlen($id_objet)) |
|
| 573 | - ) { |
|
| 574 | - return ['0=1']; |
|
| 575 | - } // securite |
|
| 576 | - |
|
| 577 | - $not = ''; |
|
| 578 | - if (is_array($id_source) and reset($id_source) == 'NOT') { |
|
| 579 | - $not = array_shift($id_source); |
|
| 580 | - $id_source = reset($id_source); |
|
| 581 | - } |
|
| 582 | - |
|
| 583 | - $where = $cond; |
|
| 584 | - |
|
| 585 | - if ($id_source !== '*') { |
|
| 586 | - $where[] = (is_array($id_source) ? sql_in( |
|
| 587 | - addslashes($primary), |
|
| 588 | - array_map('intval', $id_source), |
|
| 589 | - $not |
|
| 590 | - ) : addslashes($primary) . ($not ? '<>' : '=') . intval($id_source)); |
|
| 591 | - } elseif ($not) { |
|
| 592 | - $where[] = '0=1'; |
|
| 593 | - } // idiot mais quand meme |
|
| 594 | - |
|
| 595 | - $not = ''; |
|
| 596 | - if (is_array($id_objet) and reset($id_objet) == 'NOT') { |
|
| 597 | - $not = array_shift($id_objet); |
|
| 598 | - $id_objet = reset($id_objet); |
|
| 599 | - } |
|
| 600 | - |
|
| 601 | - if ($objet !== '*') { |
|
| 602 | - $where[] = 'objet=' . sql_quote($objet); |
|
| 603 | - } |
|
| 604 | - if ($id_objet !== '*') { |
|
| 605 | - $where[] = (is_array($id_objet) ? sql_in( |
|
| 606 | - 'id_objet', |
|
| 607 | - array_map('intval', $id_objet), |
|
| 608 | - $not |
|
| 609 | - ) : 'id_objet' . ($not ? '<>' : '=') . intval($id_objet)); |
|
| 610 | - } elseif ($not) { |
|
| 611 | - $where[] = '0=1'; |
|
| 612 | - } // idiot mais quand meme |
|
| 613 | - |
|
| 614 | - return $where; |
|
| 569 | + if ( |
|
| 570 | + (!is_array($id_source) and !strlen($id_source)) |
|
| 571 | + or !strlen($objet) |
|
| 572 | + or (!is_array($id_objet) and !strlen($id_objet)) |
|
| 573 | + ) { |
|
| 574 | + return ['0=1']; |
|
| 575 | + } // securite |
|
| 576 | + |
|
| 577 | + $not = ''; |
|
| 578 | + if (is_array($id_source) and reset($id_source) == 'NOT') { |
|
| 579 | + $not = array_shift($id_source); |
|
| 580 | + $id_source = reset($id_source); |
|
| 581 | + } |
|
| 582 | + |
|
| 583 | + $where = $cond; |
|
| 584 | + |
|
| 585 | + if ($id_source !== '*') { |
|
| 586 | + $where[] = (is_array($id_source) ? sql_in( |
|
| 587 | + addslashes($primary), |
|
| 588 | + array_map('intval', $id_source), |
|
| 589 | + $not |
|
| 590 | + ) : addslashes($primary) . ($not ? '<>' : '=') . intval($id_source)); |
|
| 591 | + } elseif ($not) { |
|
| 592 | + $where[] = '0=1'; |
|
| 593 | + } // idiot mais quand meme |
|
| 594 | + |
|
| 595 | + $not = ''; |
|
| 596 | + if (is_array($id_objet) and reset($id_objet) == 'NOT') { |
|
| 597 | + $not = array_shift($id_objet); |
|
| 598 | + $id_objet = reset($id_objet); |
|
| 599 | + } |
|
| 600 | + |
|
| 601 | + if ($objet !== '*') { |
|
| 602 | + $where[] = 'objet=' . sql_quote($objet); |
|
| 603 | + } |
|
| 604 | + if ($id_objet !== '*') { |
|
| 605 | + $where[] = (is_array($id_objet) ? sql_in( |
|
| 606 | + 'id_objet', |
|
| 607 | + array_map('intval', $id_objet), |
|
| 608 | + $not |
|
| 609 | + ) : 'id_objet' . ($not ? '<>' : '=') . intval($id_objet)); |
|
| 610 | + } elseif ($not) { |
|
| 611 | + $where[] = '0=1'; |
|
| 612 | + } // idiot mais quand meme |
|
| 613 | + |
|
| 614 | + return $where; |
|
| 615 | 615 | } |
| 616 | 616 | |
| 617 | 617 | /** |
@@ -626,13 +626,13 @@ discard block |
||
| 626 | 626 | */ |
| 627 | 627 | function lien_rang_where($table_lien, $primary, $id_source, $objet, $id_objet, $cond = []) { |
| 628 | 628 | |
| 629 | - // si on veut compter les rangs autrement que le core ne le fait par defaut, fournir le where adhoc |
|
| 630 | - if (function_exists($f = 'lien_rang_where_' . $table_lien)) { |
|
| 631 | - return $f($primary, $id_source, $objet, $id_objet, $cond); |
|
| 632 | - } |
|
| 629 | + // si on veut compter les rangs autrement que le core ne le fait par defaut, fournir le where adhoc |
|
| 630 | + if (function_exists($f = 'lien_rang_where_' . $table_lien)) { |
|
| 631 | + return $f($primary, $id_source, $objet, $id_objet, $cond); |
|
| 632 | + } |
|
| 633 | 633 | |
| 634 | - // par defaut c'est un rang compté pour tous les id_source d'un couple objet-id_objet |
|
| 635 | - return lien_where($primary, '*', $objet, $id_objet, $cond); |
|
| 634 | + // par defaut c'est un rang compté pour tous les id_source d'un couple objet-id_objet |
|
| 635 | + return lien_where($primary, '*', $objet, $id_objet, $cond); |
|
| 636 | 636 | } |
| 637 | 637 | |
| 638 | 638 | /** |
@@ -663,90 +663,90 @@ discard block |
||
| 663 | 663 | */ |
| 664 | 664 | function lien_delete($objet_source, $primary, $table_lien, $id, $objets, $cond = null) { |
| 665 | 665 | |
| 666 | - $retire = []; |
|
| 667 | - $dels = 0; |
|
| 668 | - $echec = false; |
|
| 669 | - if (is_null($cond)) { |
|
| 670 | - $cond = []; |
|
| 671 | - } |
|
| 672 | - |
|
| 673 | - foreach ($objets as $objet => $id_objets) { |
|
| 674 | - $objet = ($objet == '*') ? $objet : objet_type($objet); # securite |
|
| 675 | - if (!is_array($id_objets) or reset($id_objets) == 'NOT') { |
|
| 676 | - $id_objets = [$id_objets]; |
|
| 677 | - } |
|
| 678 | - foreach ($id_objets as $id_objet) { |
|
| 679 | - [$cond, $colonne_role, $role] = roles_creer_condition_role($objet_source, $objet, $cond); |
|
| 680 | - // id_objet peut valoir '*' |
|
| 681 | - $where = lien_where($primary, $id, $objet, $id_objet, $cond); |
|
| 682 | - |
|
| 683 | - // lire les liens existants pour propager la date de modif |
|
| 684 | - $select = "$primary,id_objet,objet"; |
|
| 685 | - if ($colonne_role) { |
|
| 686 | - $select .= ",$colonne_role"; |
|
| 687 | - } |
|
| 688 | - $liens = sql_allfetsel($select, $table_lien, $where); |
|
| 689 | - |
|
| 690 | - // iterer sur les liens pour permettre aux plugins de gerer |
|
| 691 | - foreach ($liens as $l) { |
|
| 692 | - $args = [ |
|
| 693 | - 'table_lien' => $table_lien, |
|
| 694 | - 'objet_source' => $objet_source, |
|
| 695 | - 'id_objet_source' => $l[$primary], |
|
| 696 | - 'objet' => $l['objet'], |
|
| 697 | - 'id_objet' => $l['id_objet'], |
|
| 698 | - 'colonne_role' => $colonne_role, |
|
| 699 | - 'role' => ($colonne_role ? $l[$colonne_role] : ''), |
|
| 700 | - 'action' => 'delete', |
|
| 701 | - ]; |
|
| 702 | - |
|
| 703 | - // Envoyer aux plugins |
|
| 704 | - $l = pipeline( |
|
| 705 | - 'pre_edition_lien', |
|
| 706 | - [ |
|
| 707 | - 'args' => $args, |
|
| 708 | - 'data' => $l |
|
| 709 | - ] |
|
| 710 | - ); |
|
| 711 | - $args['id_objet'] = $id_o = $l['id_objet']; |
|
| 712 | - |
|
| 713 | - if ($id_o = intval($l['id_objet']) or in_array($l['objet'], ['site', 'rubrique'])) { |
|
| 714 | - $where = lien_where($primary, $l[$primary], $l['objet'], $id_o, $cond); |
|
| 715 | - $e = sql_delete($table_lien, $where); |
|
| 716 | - if ($e !== false) { |
|
| 717 | - $dels += $e; |
|
| 718 | - lien_propage_date_modif($l['objet'], $id_o); |
|
| 719 | - lien_propage_date_modif($objet_source, $l[$primary]); |
|
| 720 | - } else { |
|
| 721 | - $echec = true; |
|
| 722 | - } |
|
| 723 | - $retire[] = [ |
|
| 724 | - 'source' => [$objet_source => $l[$primary]], |
|
| 725 | - 'lien' => [$l['objet'] => $id_o], |
|
| 726 | - 'type' => $l['objet'], |
|
| 727 | - 'role' => ($colonne_role ? $l[$colonne_role] : ''), |
|
| 728 | - 'id' => $id_o |
|
| 729 | - ]; |
|
| 730 | - // Envoyer aux plugins |
|
| 731 | - pipeline( |
|
| 732 | - 'post_edition_lien', |
|
| 733 | - [ |
|
| 734 | - 'args' => $args, |
|
| 735 | - 'data' => $l |
|
| 736 | - ] |
|
| 737 | - ); |
|
| 738 | - } |
|
| 739 | - } |
|
| 740 | - } |
|
| 741 | - } |
|
| 742 | - // si on a supprime des liens, on reordonne les liens concernes |
|
| 743 | - if ($dels) { |
|
| 744 | - lien_ordonner($objet_source, $primary, $table_lien, $id, $objets); |
|
| 745 | - } |
|
| 746 | - |
|
| 747 | - pipeline('trig_supprimer_objets_lies', $retire); |
|
| 748 | - |
|
| 749 | - return ($echec ? false : $dels); |
|
| 666 | + $retire = []; |
|
| 667 | + $dels = 0; |
|
| 668 | + $echec = false; |
|
| 669 | + if (is_null($cond)) { |
|
| 670 | + $cond = []; |
|
| 671 | + } |
|
| 672 | + |
|
| 673 | + foreach ($objets as $objet => $id_objets) { |
|
| 674 | + $objet = ($objet == '*') ? $objet : objet_type($objet); # securite |
|
| 675 | + if (!is_array($id_objets) or reset($id_objets) == 'NOT') { |
|
| 676 | + $id_objets = [$id_objets]; |
|
| 677 | + } |
|
| 678 | + foreach ($id_objets as $id_objet) { |
|
| 679 | + [$cond, $colonne_role, $role] = roles_creer_condition_role($objet_source, $objet, $cond); |
|
| 680 | + // id_objet peut valoir '*' |
|
| 681 | + $where = lien_where($primary, $id, $objet, $id_objet, $cond); |
|
| 682 | + |
|
| 683 | + // lire les liens existants pour propager la date de modif |
|
| 684 | + $select = "$primary,id_objet,objet"; |
|
| 685 | + if ($colonne_role) { |
|
| 686 | + $select .= ",$colonne_role"; |
|
| 687 | + } |
|
| 688 | + $liens = sql_allfetsel($select, $table_lien, $where); |
|
| 689 | + |
|
| 690 | + // iterer sur les liens pour permettre aux plugins de gerer |
|
| 691 | + foreach ($liens as $l) { |
|
| 692 | + $args = [ |
|
| 693 | + 'table_lien' => $table_lien, |
|
| 694 | + 'objet_source' => $objet_source, |
|
| 695 | + 'id_objet_source' => $l[$primary], |
|
| 696 | + 'objet' => $l['objet'], |
|
| 697 | + 'id_objet' => $l['id_objet'], |
|
| 698 | + 'colonne_role' => $colonne_role, |
|
| 699 | + 'role' => ($colonne_role ? $l[$colonne_role] : ''), |
|
| 700 | + 'action' => 'delete', |
|
| 701 | + ]; |
|
| 702 | + |
|
| 703 | + // Envoyer aux plugins |
|
| 704 | + $l = pipeline( |
|
| 705 | + 'pre_edition_lien', |
|
| 706 | + [ |
|
| 707 | + 'args' => $args, |
|
| 708 | + 'data' => $l |
|
| 709 | + ] |
|
| 710 | + ); |
|
| 711 | + $args['id_objet'] = $id_o = $l['id_objet']; |
|
| 712 | + |
|
| 713 | + if ($id_o = intval($l['id_objet']) or in_array($l['objet'], ['site', 'rubrique'])) { |
|
| 714 | + $where = lien_where($primary, $l[$primary], $l['objet'], $id_o, $cond); |
|
| 715 | + $e = sql_delete($table_lien, $where); |
|
| 716 | + if ($e !== false) { |
|
| 717 | + $dels += $e; |
|
| 718 | + lien_propage_date_modif($l['objet'], $id_o); |
|
| 719 | + lien_propage_date_modif($objet_source, $l[$primary]); |
|
| 720 | + } else { |
|
| 721 | + $echec = true; |
|
| 722 | + } |
|
| 723 | + $retire[] = [ |
|
| 724 | + 'source' => [$objet_source => $l[$primary]], |
|
| 725 | + 'lien' => [$l['objet'] => $id_o], |
|
| 726 | + 'type' => $l['objet'], |
|
| 727 | + 'role' => ($colonne_role ? $l[$colonne_role] : ''), |
|
| 728 | + 'id' => $id_o |
|
| 729 | + ]; |
|
| 730 | + // Envoyer aux plugins |
|
| 731 | + pipeline( |
|
| 732 | + 'post_edition_lien', |
|
| 733 | + [ |
|
| 734 | + 'args' => $args, |
|
| 735 | + 'data' => $l |
|
| 736 | + ] |
|
| 737 | + ); |
|
| 738 | + } |
|
| 739 | + } |
|
| 740 | + } |
|
| 741 | + } |
|
| 742 | + // si on a supprime des liens, on reordonne les liens concernes |
|
| 743 | + if ($dels) { |
|
| 744 | + lien_ordonner($objet_source, $primary, $table_lien, $id, $objets); |
|
| 745 | + } |
|
| 746 | + |
|
| 747 | + pipeline('trig_supprimer_objets_lies', $retire); |
|
| 748 | + |
|
| 749 | + return ($echec ? false : $dels); |
|
| 750 | 750 | } |
| 751 | 751 | |
| 752 | 752 | |
@@ -769,67 +769,67 @@ discard block |
||
| 769 | 769 | * @return bool|int |
| 770 | 770 | */ |
| 771 | 771 | function lien_optimise($objet_source, $primary, $table_lien, $id, $objets) { |
| 772 | - include_spip('genie/optimiser'); |
|
| 773 | - $echec = false; |
|
| 774 | - $dels = 0; |
|
| 775 | - foreach ($objets as $objet => $id_objets) { |
|
| 776 | - $objet = ($objet == '*') ? $objet : objet_type($objet); # securite |
|
| 777 | - if (!is_array($id_objets) or reset($id_objets) == 'NOT') { |
|
| 778 | - $id_objets = [$id_objets]; |
|
| 779 | - } |
|
| 780 | - foreach ($id_objets as $id_objet) { |
|
| 781 | - $where = lien_where($primary, $id, $objet, $id_objet); |
|
| 782 | - # les liens vers un objet inexistant |
|
| 783 | - $r = sql_select('DISTINCT objet', $table_lien, $where); |
|
| 784 | - while ($t = sql_fetch($r)) { |
|
| 785 | - $type = $t['objet']; |
|
| 786 | - $spip_table_objet = table_objet_sql($type); |
|
| 787 | - $id_table_objet = id_table_objet($type); |
|
| 788 | - $res = sql_select( |
|
| 789 | - "L.$primary AS id,L.id_objet", |
|
| 790 | - // la condition de jointure inclue L.objet='xxx' pour ne joindre que les bonnes lignes |
|
| 791 | - // du coups toutes les lignes avec un autre objet ont un id_xxx=NULL puisque LEFT JOIN |
|
| 792 | - // il faut les eliminier en repetant la condition dans le where L.objet='xxx' |
|
| 793 | - "$table_lien AS L |
|
| 772 | + include_spip('genie/optimiser'); |
|
| 773 | + $echec = false; |
|
| 774 | + $dels = 0; |
|
| 775 | + foreach ($objets as $objet => $id_objets) { |
|
| 776 | + $objet = ($objet == '*') ? $objet : objet_type($objet); # securite |
|
| 777 | + if (!is_array($id_objets) or reset($id_objets) == 'NOT') { |
|
| 778 | + $id_objets = [$id_objets]; |
|
| 779 | + } |
|
| 780 | + foreach ($id_objets as $id_objet) { |
|
| 781 | + $where = lien_where($primary, $id, $objet, $id_objet); |
|
| 782 | + # les liens vers un objet inexistant |
|
| 783 | + $r = sql_select('DISTINCT objet', $table_lien, $where); |
|
| 784 | + while ($t = sql_fetch($r)) { |
|
| 785 | + $type = $t['objet']; |
|
| 786 | + $spip_table_objet = table_objet_sql($type); |
|
| 787 | + $id_table_objet = id_table_objet($type); |
|
| 788 | + $res = sql_select( |
|
| 789 | + "L.$primary AS id,L.id_objet", |
|
| 790 | + // la condition de jointure inclue L.objet='xxx' pour ne joindre que les bonnes lignes |
|
| 791 | + // du coups toutes les lignes avec un autre objet ont un id_xxx=NULL puisque LEFT JOIN |
|
| 792 | + // il faut les eliminier en repetant la condition dans le where L.objet='xxx' |
|
| 793 | + "$table_lien AS L |
|
| 794 | 794 | LEFT JOIN $spip_table_objet AS O |
| 795 | 795 | ON (O.$id_table_objet=L.id_objet AND L.objet=" . sql_quote($type) . ')', |
| 796 | - 'L.objet=' . sql_quote($type) . " AND O.$id_table_objet IS NULL" |
|
| 797 | - ); |
|
| 798 | - // sur une cle primaire composee, pas d'autres solutions que de virer un a un |
|
| 799 | - while ($row = sql_fetch($res)) { |
|
| 800 | - if ($primary === 'id_document' and in_array($type, ['site', 'rubrique']) and !intval($row['id_objet'])) { |
|
| 801 | - continue; // gaffe, c'est le logo du site ou des rubriques! |
|
| 802 | - } |
|
| 803 | - $e = sql_delete( |
|
| 804 | - $table_lien, |
|
| 805 | - ["$primary=" . $row['id'], 'id_objet=' . $row['id_objet'], 'objet=' . sql_quote($type)] |
|
| 806 | - ); |
|
| 807 | - if ($e != false) { |
|
| 808 | - $dels += $e; |
|
| 809 | - spip_log( |
|
| 810 | - 'lien_optimise: Entree ' . $row['id'] . '/' . $row['id_objet'] . "/$type supprimee dans la table $table_lien", |
|
| 811 | - 'genie' . _LOG_INFO_IMPORTANTE |
|
| 812 | - ); |
|
| 813 | - } |
|
| 814 | - } |
|
| 815 | - } |
|
| 816 | - |
|
| 817 | - # les liens depuis un objet inexistant |
|
| 818 | - $table_source = table_objet_sql($objet_source); |
|
| 819 | - // filtrer selon $id, $objet, $id_objet eventuellement fournis |
|
| 820 | - // (en general '*' pour chaque) |
|
| 821 | - $where = lien_where("L.$primary", $id, $objet, $id_objet); |
|
| 822 | - $where[] = "O.$primary IS NULL"; |
|
| 823 | - $res = sql_select( |
|
| 824 | - "L.$primary AS id", |
|
| 825 | - "$table_lien AS L LEFT JOIN $table_source AS O ON L.$primary=O.$primary", |
|
| 826 | - $where |
|
| 827 | - ); |
|
| 828 | - $dels += optimiser_sansref($table_lien, $primary, $res); |
|
| 829 | - } |
|
| 830 | - } |
|
| 831 | - |
|
| 832 | - return ($echec ? false : $dels); |
|
| 796 | + 'L.objet=' . sql_quote($type) . " AND O.$id_table_objet IS NULL" |
|
| 797 | + ); |
|
| 798 | + // sur une cle primaire composee, pas d'autres solutions que de virer un a un |
|
| 799 | + while ($row = sql_fetch($res)) { |
|
| 800 | + if ($primary === 'id_document' and in_array($type, ['site', 'rubrique']) and !intval($row['id_objet'])) { |
|
| 801 | + continue; // gaffe, c'est le logo du site ou des rubriques! |
|
| 802 | + } |
|
| 803 | + $e = sql_delete( |
|
| 804 | + $table_lien, |
|
| 805 | + ["$primary=" . $row['id'], 'id_objet=' . $row['id_objet'], 'objet=' . sql_quote($type)] |
|
| 806 | + ); |
|
| 807 | + if ($e != false) { |
|
| 808 | + $dels += $e; |
|
| 809 | + spip_log( |
|
| 810 | + 'lien_optimise: Entree ' . $row['id'] . '/' . $row['id_objet'] . "/$type supprimee dans la table $table_lien", |
|
| 811 | + 'genie' . _LOG_INFO_IMPORTANTE |
|
| 812 | + ); |
|
| 813 | + } |
|
| 814 | + } |
|
| 815 | + } |
|
| 816 | + |
|
| 817 | + # les liens depuis un objet inexistant |
|
| 818 | + $table_source = table_objet_sql($objet_source); |
|
| 819 | + // filtrer selon $id, $objet, $id_objet eventuellement fournis |
|
| 820 | + // (en general '*' pour chaque) |
|
| 821 | + $where = lien_where("L.$primary", $id, $objet, $id_objet); |
|
| 822 | + $where[] = "O.$primary IS NULL"; |
|
| 823 | + $res = sql_select( |
|
| 824 | + "L.$primary AS id", |
|
| 825 | + "$table_lien AS L LEFT JOIN $table_source AS O ON L.$primary=O.$primary", |
|
| 826 | + $where |
|
| 827 | + ); |
|
| 828 | + $dels += optimiser_sansref($table_lien, $primary, $res); |
|
| 829 | + } |
|
| 830 | + } |
|
| 831 | + |
|
| 832 | + return ($echec ? false : $dels); |
|
| 833 | 833 | } |
| 834 | 834 | |
| 835 | 835 | |
@@ -861,92 +861,92 @@ discard block |
||
| 861 | 861 | * Nombre de modifications faites, false si échec. |
| 862 | 862 | */ |
| 863 | 863 | function lien_set($objet_source, $primary, $table_lien, $id, $objets, $qualif) { |
| 864 | - $echec = null; |
|
| 865 | - $ok = 0; |
|
| 866 | - $reordonner = false; |
|
| 867 | - if (!$qualif) { |
|
| 868 | - return false; |
|
| 869 | - } |
|
| 870 | - // nettoyer qualif qui peut venir directement d'un objet_trouver_lien : |
|
| 871 | - unset($qualif[$primary]); |
|
| 872 | - unset($qualif[$objet_source]); |
|
| 873 | - if (isset($qualif['objet'])) { |
|
| 874 | - unset($qualif[$qualif['objet']]); |
|
| 875 | - } |
|
| 876 | - unset($qualif['objet']); |
|
| 877 | - unset($qualif['id_objet']); |
|
| 878 | - foreach ($objets as $objet => $id_objets) { |
|
| 879 | - // role, colonne, where par défaut |
|
| 880 | - [$role, $colonne_role, $cond] = |
|
| 881 | - roles_trouver_dans_qualif($objet_source, $objet, $qualif); |
|
| 882 | - |
|
| 883 | - $objet = ($objet == '*') ? $objet : objet_type($objet); # securite |
|
| 884 | - if (!is_array($id_objets) or reset($id_objets) == 'NOT') { |
|
| 885 | - $id_objets = [$id_objets]; |
|
| 886 | - } |
|
| 887 | - foreach ($id_objets as $id_objet) { |
|
| 888 | - $args = [ |
|
| 889 | - 'table_lien' => $table_lien, |
|
| 890 | - 'objet_source' => $objet_source, |
|
| 891 | - 'id_objet_source' => $id, |
|
| 892 | - 'objet' => $objet, |
|
| 893 | - 'id_objet' => $id_objet, |
|
| 894 | - 'role' => $role, |
|
| 895 | - 'colonne_role' => $colonne_role, |
|
| 896 | - 'action' => 'modifier', |
|
| 897 | - ]; |
|
| 898 | - |
|
| 899 | - // Envoyer aux plugins |
|
| 900 | - $qualif = pipeline( |
|
| 901 | - 'pre_edition_lien', |
|
| 902 | - [ |
|
| 903 | - 'args' => $args, |
|
| 904 | - 'data' => $qualif, |
|
| 905 | - ] |
|
| 906 | - ); |
|
| 907 | - $args['id_objet'] = $id_objet; |
|
| 908 | - |
|
| 909 | - if (lien_triables($table_lien) and isset($qualif['rang_lien'])) { |
|
| 910 | - if (intval($qualif['rang_lien'])) { |
|
| 911 | - // on decale les liens de rang_lien>=la valeur inseree pour faire la place |
|
| 912 | - // sauf sur le meme lien avec un role eventuellement different |
|
| 913 | - $where_meme_lien = lien_where($primary, $id, $objet, $id_objet); |
|
| 914 | - $where_meme_lien = implode(' AND ', $where_meme_lien); |
|
| 915 | - $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . intval($qualif['rang_lien']), "NOT($where_meme_lien)"]); |
|
| 916 | - sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w); |
|
| 917 | - } |
|
| 918 | - // tous les liens de même rôle recoivent le rang indiqué aussi |
|
| 919 | - if (roles_colonne($objet_source, $objet)) { |
|
| 920 | - $w = lien_where($primary, $id, $objet, $id_objet); |
|
| 921 | - sql_updateq($table_lien, ['rang_lien' => intval($qualif['rang_lien'])], $w); |
|
| 922 | - } |
|
| 923 | - $reordonner = true; |
|
| 924 | - } |
|
| 925 | - |
|
| 926 | - $where = lien_where($primary, $id, $objet, $id_objet, $cond); |
|
| 927 | - $e = sql_updateq($table_lien, $qualif, $where); |
|
| 928 | - |
|
| 929 | - if ($e === false) { |
|
| 930 | - $echec = true; |
|
| 931 | - } else { |
|
| 932 | - // Envoyer aux plugins |
|
| 933 | - pipeline( |
|
| 934 | - 'post_edition_lien', |
|
| 935 | - [ |
|
| 936 | - 'args' => $args, |
|
| 937 | - 'data' => $qualif |
|
| 938 | - ] |
|
| 939 | - ); |
|
| 940 | - $ok++; |
|
| 941 | - } |
|
| 942 | - } |
|
| 943 | - } |
|
| 944 | - // si on a fait des modif de rang, on reordonne les liens concernes |
|
| 945 | - if ($reordonner) { |
|
| 946 | - lien_ordonner($objet_source, $primary, $table_lien, $id, $objets); |
|
| 947 | - } |
|
| 948 | - |
|
| 949 | - return ($echec ? false : $ok); |
|
| 864 | + $echec = null; |
|
| 865 | + $ok = 0; |
|
| 866 | + $reordonner = false; |
|
| 867 | + if (!$qualif) { |
|
| 868 | + return false; |
|
| 869 | + } |
|
| 870 | + // nettoyer qualif qui peut venir directement d'un objet_trouver_lien : |
|
| 871 | + unset($qualif[$primary]); |
|
| 872 | + unset($qualif[$objet_source]); |
|
| 873 | + if (isset($qualif['objet'])) { |
|
| 874 | + unset($qualif[$qualif['objet']]); |
|
| 875 | + } |
|
| 876 | + unset($qualif['objet']); |
|
| 877 | + unset($qualif['id_objet']); |
|
| 878 | + foreach ($objets as $objet => $id_objets) { |
|
| 879 | + // role, colonne, where par défaut |
|
| 880 | + [$role, $colonne_role, $cond] = |
|
| 881 | + roles_trouver_dans_qualif($objet_source, $objet, $qualif); |
|
| 882 | + |
|
| 883 | + $objet = ($objet == '*') ? $objet : objet_type($objet); # securite |
|
| 884 | + if (!is_array($id_objets) or reset($id_objets) == 'NOT') { |
|
| 885 | + $id_objets = [$id_objets]; |
|
| 886 | + } |
|
| 887 | + foreach ($id_objets as $id_objet) { |
|
| 888 | + $args = [ |
|
| 889 | + 'table_lien' => $table_lien, |
|
| 890 | + 'objet_source' => $objet_source, |
|
| 891 | + 'id_objet_source' => $id, |
|
| 892 | + 'objet' => $objet, |
|
| 893 | + 'id_objet' => $id_objet, |
|
| 894 | + 'role' => $role, |
|
| 895 | + 'colonne_role' => $colonne_role, |
|
| 896 | + 'action' => 'modifier', |
|
| 897 | + ]; |
|
| 898 | + |
|
| 899 | + // Envoyer aux plugins |
|
| 900 | + $qualif = pipeline( |
|
| 901 | + 'pre_edition_lien', |
|
| 902 | + [ |
|
| 903 | + 'args' => $args, |
|
| 904 | + 'data' => $qualif, |
|
| 905 | + ] |
|
| 906 | + ); |
|
| 907 | + $args['id_objet'] = $id_objet; |
|
| 908 | + |
|
| 909 | + if (lien_triables($table_lien) and isset($qualif['rang_lien'])) { |
|
| 910 | + if (intval($qualif['rang_lien'])) { |
|
| 911 | + // on decale les liens de rang_lien>=la valeur inseree pour faire la place |
|
| 912 | + // sauf sur le meme lien avec un role eventuellement different |
|
| 913 | + $where_meme_lien = lien_where($primary, $id, $objet, $id_objet); |
|
| 914 | + $where_meme_lien = implode(' AND ', $where_meme_lien); |
|
| 915 | + $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . intval($qualif['rang_lien']), "NOT($where_meme_lien)"]); |
|
| 916 | + sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w); |
|
| 917 | + } |
|
| 918 | + // tous les liens de même rôle recoivent le rang indiqué aussi |
|
| 919 | + if (roles_colonne($objet_source, $objet)) { |
|
| 920 | + $w = lien_where($primary, $id, $objet, $id_objet); |
|
| 921 | + sql_updateq($table_lien, ['rang_lien' => intval($qualif['rang_lien'])], $w); |
|
| 922 | + } |
|
| 923 | + $reordonner = true; |
|
| 924 | + } |
|
| 925 | + |
|
| 926 | + $where = lien_where($primary, $id, $objet, $id_objet, $cond); |
|
| 927 | + $e = sql_updateq($table_lien, $qualif, $where); |
|
| 928 | + |
|
| 929 | + if ($e === false) { |
|
| 930 | + $echec = true; |
|
| 931 | + } else { |
|
| 932 | + // Envoyer aux plugins |
|
| 933 | + pipeline( |
|
| 934 | + 'post_edition_lien', |
|
| 935 | + [ |
|
| 936 | + 'args' => $args, |
|
| 937 | + 'data' => $qualif |
|
| 938 | + ] |
|
| 939 | + ); |
|
| 940 | + $ok++; |
|
| 941 | + } |
|
| 942 | + } |
|
| 943 | + } |
|
| 944 | + // si on a fait des modif de rang, on reordonne les liens concernes |
|
| 945 | + if ($reordonner) { |
|
| 946 | + lien_ordonner($objet_source, $primary, $table_lien, $id, $objets); |
|
| 947 | + } |
|
| 948 | + |
|
| 949 | + return ($echec ? false : $ok); |
|
| 950 | 950 | } |
| 951 | 951 | |
| 952 | 952 | /** |
@@ -976,23 +976,23 @@ discard block |
||
| 976 | 976 | * @return array |
| 977 | 977 | */ |
| 978 | 978 | function lien_find($objet_source, $primary, $table_lien, $id, $objets, $cond = null) { |
| 979 | - $trouve = []; |
|
| 980 | - foreach ($objets as $objet => $id_objets) { |
|
| 981 | - $objet = ($objet == '*') ? $objet : objet_type($objet); # securite |
|
| 982 | - // gerer les roles s'il y en a dans $cond |
|
| 983 | - [$cond] = roles_creer_condition_role($objet_source, $objet, $cond, true); |
|
| 984 | - // lien_where prend en charge les $id_objets sous forme int ou array |
|
| 985 | - $where = lien_where($primary, $id, $objet, $id_objets, $cond); |
|
| 986 | - $liens = sql_allfetsel('*', $table_lien, $where); |
|
| 987 | - // ajouter les entrees objet_source et objet cible par convenance |
|
| 988 | - foreach ($liens as $l) { |
|
| 989 | - $l[$objet_source] = $l[$primary]; |
|
| 990 | - $l[$l['objet']] = $l['id_objet']; |
|
| 991 | - $trouve[] = $l; |
|
| 992 | - } |
|
| 993 | - } |
|
| 994 | - |
|
| 995 | - return $trouve; |
|
| 979 | + $trouve = []; |
|
| 980 | + foreach ($objets as $objet => $id_objets) { |
|
| 981 | + $objet = ($objet == '*') ? $objet : objet_type($objet); # securite |
|
| 982 | + // gerer les roles s'il y en a dans $cond |
|
| 983 | + [$cond] = roles_creer_condition_role($objet_source, $objet, $cond, true); |
|
| 984 | + // lien_where prend en charge les $id_objets sous forme int ou array |
|
| 985 | + $where = lien_where($primary, $id, $objet, $id_objets, $cond); |
|
| 986 | + $liens = sql_allfetsel('*', $table_lien, $where); |
|
| 987 | + // ajouter les entrees objet_source et objet cible par convenance |
|
| 988 | + foreach ($liens as $l) { |
|
| 989 | + $l[$objet_source] = $l[$primary]; |
|
| 990 | + $l[$l['objet']] = $l['id_objet']; |
|
| 991 | + $trouve[] = $l; |
|
| 992 | + } |
|
| 993 | + } |
|
| 994 | + |
|
| 995 | + return $trouve; |
|
| 996 | 996 | } |
| 997 | 997 | |
| 998 | 998 | /** |
@@ -1003,26 +1003,26 @@ discard block |
||
| 1003 | 1003 | * @param array|int $ids |
| 1004 | 1004 | */ |
| 1005 | 1005 | function lien_propage_date_modif($objet, $ids) { |
| 1006 | - static $done = []; |
|
| 1007 | - $hash = md5($objet . serialize($ids)); |
|
| 1008 | - |
|
| 1009 | - // sql_updateq, peut être un rien lent. |
|
| 1010 | - // On évite de l'appeler 2 fois sur les mêmes choses |
|
| 1011 | - if (isset($done[$hash])) { |
|
| 1012 | - return; |
|
| 1013 | - } |
|
| 1014 | - |
|
| 1015 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 1016 | - |
|
| 1017 | - $table = table_objet_sql($objet); |
|
| 1018 | - if ( |
|
| 1019 | - $desc = $trouver_table($table) |
|
| 1020 | - and isset($desc['field']['date_modif']) |
|
| 1021 | - ) { |
|
| 1022 | - $primary = id_table_objet($objet); |
|
| 1023 | - $where = (is_array($ids) ? sql_in($primary, array_map('intval', $ids)) : "$primary=" . intval($ids)); |
|
| 1024 | - sql_updateq($table, ['date_modif' => date('Y-m-d H:i:s')], $where); |
|
| 1025 | - } |
|
| 1026 | - |
|
| 1027 | - $done[$hash] = true; |
|
| 1006 | + static $done = []; |
|
| 1007 | + $hash = md5($objet . serialize($ids)); |
|
| 1008 | + |
|
| 1009 | + // sql_updateq, peut être un rien lent. |
|
| 1010 | + // On évite de l'appeler 2 fois sur les mêmes choses |
|
| 1011 | + if (isset($done[$hash])) { |
|
| 1012 | + return; |
|
| 1013 | + } |
|
| 1014 | + |
|
| 1015 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 1016 | + |
|
| 1017 | + $table = table_objet_sql($objet); |
|
| 1018 | + if ( |
|
| 1019 | + $desc = $trouver_table($table) |
|
| 1020 | + and isset($desc['field']['date_modif']) |
|
| 1021 | + ) { |
|
| 1022 | + $primary = id_table_objet($objet); |
|
| 1023 | + $where = (is_array($ids) ? sql_in($primary, array_map('intval', $ids)) : "$primary=" . intval($ids)); |
|
| 1024 | + sql_updateq($table, ['date_modif' => date('Y-m-d H:i:s')], $where); |
|
| 1025 | + } |
|
| 1026 | + |
|
| 1027 | + $done[$hash] = true; |
|
| 1028 | 1028 | } |
@@ -53,7 +53,7 @@ discard block |
||
| 53 | 53 | $l = ''; |
| 54 | 54 | if ( |
| 55 | 55 | $primary = id_table_objet($objet) |
| 56 | - and $trouver_table($l = $table_sql . '_liens', '', true, ['log_missing' => false]) |
|
| 56 | + and $trouver_table($l = $table_sql.'_liens', '', true, ['log_missing' => false]) |
|
| 57 | 57 | and !preg_match(',[^\w],', $primary) |
| 58 | 58 | and !preg_match(',[^\w],', $l) |
| 59 | 59 | ) { |
@@ -212,7 +212,7 @@ discard block |
||
| 212 | 212 | * @return int |
| 213 | 213 | */ |
| 214 | 214 | function objet_optimiser_liens($objets_source, $objets_lies) { |
| 215 | - spip_log('objet_optimiser_liens : ' . json_encode($objets_source, JSON_THROW_ON_ERROR) . ', ' . json_encode($objets_lies, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG); |
|
| 215 | + spip_log('objet_optimiser_liens : '.json_encode($objets_source, JSON_THROW_ON_ERROR).', '.json_encode($objets_lies, JSON_THROW_ON_ERROR), 'genie'._LOG_DEBUG); |
|
| 216 | 216 | return objet_traiter_liaisons('lien_optimise', $objets_source, $objets_lies); |
| 217 | 217 | } |
| 218 | 218 | |
@@ -446,7 +446,7 @@ discard block |
||
| 446 | 446 | $where_meme_lien = implode(' AND ', $where_meme_lien); |
| 447 | 447 | // on decale les liens de rang_lien>=la valeur inseree pour faire la place |
| 448 | 448 | // sauf sur le meme lien avec un role eventuellement different |
| 449 | - $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . intval($insertions['rang_lien']), "NOT($where_meme_lien)"]); |
|
| 449 | + $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>='.intval($insertions['rang_lien']), "NOT($where_meme_lien)"]); |
|
| 450 | 450 | sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w); |
| 451 | 451 | } |
| 452 | 452 | |
@@ -511,7 +511,7 @@ discard block |
||
| 511 | 511 | $rang = 1; |
| 512 | 512 | foreach ($liens as $lien) { |
| 513 | 513 | if (empty($deja_reordonne[$lien[$primary]][$lien['objet']][$lien['id_objet']])) { |
| 514 | - $where = lien_where($primary, $lien[$primary], $lien['objet'], $lien['id_objet'], ['rang_lien!=' . intval($rang)]); |
|
| 514 | + $where = lien_where($primary, $lien[$primary], $lien['objet'], $lien['id_objet'], ['rang_lien!='.intval($rang)]); |
|
| 515 | 515 | sql_updateq($table_lien, ['rang_lien' => $rang], $where); |
| 516 | 516 | |
| 517 | 517 | if (empty($deja_reordonne[$lien[$primary]])) { |
@@ -587,7 +587,7 @@ discard block |
||
| 587 | 587 | addslashes($primary), |
| 588 | 588 | array_map('intval', $id_source), |
| 589 | 589 | $not |
| 590 | - ) : addslashes($primary) . ($not ? '<>' : '=') . intval($id_source)); |
|
| 590 | + ) : addslashes($primary).($not ? '<>' : '=').intval($id_source)); |
|
| 591 | 591 | } elseif ($not) { |
| 592 | 592 | $where[] = '0=1'; |
| 593 | 593 | } // idiot mais quand meme |
@@ -599,14 +599,14 @@ discard block |
||
| 599 | 599 | } |
| 600 | 600 | |
| 601 | 601 | if ($objet !== '*') { |
| 602 | - $where[] = 'objet=' . sql_quote($objet); |
|
| 602 | + $where[] = 'objet='.sql_quote($objet); |
|
| 603 | 603 | } |
| 604 | 604 | if ($id_objet !== '*') { |
| 605 | 605 | $where[] = (is_array($id_objet) ? sql_in( |
| 606 | 606 | 'id_objet', |
| 607 | 607 | array_map('intval', $id_objet), |
| 608 | 608 | $not |
| 609 | - ) : 'id_objet' . ($not ? '<>' : '=') . intval($id_objet)); |
|
| 609 | + ) : 'id_objet'.($not ? '<>' : '=').intval($id_objet)); |
|
| 610 | 610 | } elseif ($not) { |
| 611 | 611 | $where[] = '0=1'; |
| 612 | 612 | } // idiot mais quand meme |
@@ -627,7 +627,7 @@ discard block |
||
| 627 | 627 | function lien_rang_where($table_lien, $primary, $id_source, $objet, $id_objet, $cond = []) { |
| 628 | 628 | |
| 629 | 629 | // si on veut compter les rangs autrement que le core ne le fait par defaut, fournir le where adhoc |
| 630 | - if (function_exists($f = 'lien_rang_where_' . $table_lien)) { |
|
| 630 | + if (function_exists($f = 'lien_rang_where_'.$table_lien)) { |
|
| 631 | 631 | return $f($primary, $id_source, $objet, $id_objet, $cond); |
| 632 | 632 | } |
| 633 | 633 | |
@@ -792,8 +792,8 @@ discard block |
||
| 792 | 792 | // il faut les eliminier en repetant la condition dans le where L.objet='xxx' |
| 793 | 793 | "$table_lien AS L |
| 794 | 794 | LEFT JOIN $spip_table_objet AS O |
| 795 | - ON (O.$id_table_objet=L.id_objet AND L.objet=" . sql_quote($type) . ')', |
|
| 796 | - 'L.objet=' . sql_quote($type) . " AND O.$id_table_objet IS NULL" |
|
| 795 | + ON (O.$id_table_objet=L.id_objet AND L.objet=".sql_quote($type).')', |
|
| 796 | + 'L.objet='.sql_quote($type)." AND O.$id_table_objet IS NULL" |
|
| 797 | 797 | ); |
| 798 | 798 | // sur une cle primaire composee, pas d'autres solutions que de virer un a un |
| 799 | 799 | while ($row = sql_fetch($res)) { |
@@ -802,13 +802,13 @@ discard block |
||
| 802 | 802 | } |
| 803 | 803 | $e = sql_delete( |
| 804 | 804 | $table_lien, |
| 805 | - ["$primary=" . $row['id'], 'id_objet=' . $row['id_objet'], 'objet=' . sql_quote($type)] |
|
| 805 | + ["$primary=".$row['id'], 'id_objet='.$row['id_objet'], 'objet='.sql_quote($type)] |
|
| 806 | 806 | ); |
| 807 | 807 | if ($e != false) { |
| 808 | 808 | $dels += $e; |
| 809 | 809 | spip_log( |
| 810 | - 'lien_optimise: Entree ' . $row['id'] . '/' . $row['id_objet'] . "/$type supprimee dans la table $table_lien", |
|
| 811 | - 'genie' . _LOG_INFO_IMPORTANTE |
|
| 810 | + 'lien_optimise: Entree '.$row['id'].'/'.$row['id_objet']."/$type supprimee dans la table $table_lien", |
|
| 811 | + 'genie'._LOG_INFO_IMPORTANTE |
|
| 812 | 812 | ); |
| 813 | 813 | } |
| 814 | 814 | } |
@@ -912,7 +912,7 @@ discard block |
||
| 912 | 912 | // sauf sur le meme lien avec un role eventuellement different |
| 913 | 913 | $where_meme_lien = lien_where($primary, $id, $objet, $id_objet); |
| 914 | 914 | $where_meme_lien = implode(' AND ', $where_meme_lien); |
| 915 | - $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>=' . intval($qualif['rang_lien']), "NOT($where_meme_lien)"]); |
|
| 915 | + $w = lien_rang_where($table_lien, $primary, $id, $objet, $id_objet, ['rang_lien>='.intval($qualif['rang_lien']), "NOT($where_meme_lien)"]); |
|
| 916 | 916 | sql_update($table_lien, ['rang_lien' => 'rang_lien+1'], $w); |
| 917 | 917 | } |
| 918 | 918 | // tous les liens de même rôle recoivent le rang indiqué aussi |
@@ -1004,7 +1004,7 @@ discard block |
||
| 1004 | 1004 | */ |
| 1005 | 1005 | function lien_propage_date_modif($objet, $ids) { |
| 1006 | 1006 | static $done = []; |
| 1007 | - $hash = md5($objet . serialize($ids)); |
|
| 1007 | + $hash = md5($objet.serialize($ids)); |
|
| 1008 | 1008 | |
| 1009 | 1009 | // sql_updateq, peut être un rien lent. |
| 1010 | 1010 | // On évite de l'appeler 2 fois sur les mêmes choses |
@@ -1020,7 +1020,7 @@ discard block |
||
| 1020 | 1020 | and isset($desc['field']['date_modif']) |
| 1021 | 1021 | ) { |
| 1022 | 1022 | $primary = id_table_objet($objet); |
| 1023 | - $where = (is_array($ids) ? sql_in($primary, array_map('intval', $ids)) : "$primary=" . intval($ids)); |
|
| 1023 | + $where = (is_array($ids) ? sql_in($primary, array_map('intval', $ids)) : "$primary=".intval($ids)); |
|
| 1024 | 1024 | sql_updateq($table, ['date_modif' => date('Y-m-d H:i:s')], $where); |
| 1025 | 1025 | } |
| 1026 | 1026 | |