@@ -17,16 +17,16 @@ |
||
| 17 | 17 | __DIR__ . '/index.php', |
| 18 | 18 | ]); |
| 19 | 19 | |
| 20 | - $rectorConfig->sets([ |
|
| 21 | - LevelSetList::UP_TO_PHP_81 |
|
| 22 | - ]); |
|
| 20 | + $rectorConfig->sets([ |
|
| 21 | + LevelSetList::UP_TO_PHP_81 |
|
| 22 | + ]); |
|
| 23 | 23 | |
| 24 | 24 | $rectorConfig->skip([ |
| 25 | 25 | __DIR__ . '/ecrire/lang', |
| 26 | - FinalizePublicClassConstantRector::class, |
|
| 27 | - NullToStrictStringFuncCallArgRector::class, |
|
| 28 | - CountOnNullRector::class, |
|
| 29 | - MixedTypeRector::class, |
|
| 26 | + FinalizePublicClassConstantRector::class, |
|
| 27 | + NullToStrictStringFuncCallArgRector::class, |
|
| 28 | + CountOnNullRector::class, |
|
| 29 | + MixedTypeRector::class, |
|
| 30 | 30 | ]); |
| 31 | 31 | |
| 32 | 32 | }; |
@@ -9,12 +9,12 @@ discard block |
||
| 9 | 9 | use Rector\Php71\Rector\FuncCall\CountOnNullRector; |
| 10 | 10 | use Rector\Php80\Rector\FunctionLike\MixedTypeRector; |
| 11 | 11 | |
| 12 | -return static function (RectorConfig $rectorConfig): void { |
|
| 12 | +return static function(RectorConfig $rectorConfig): void { |
|
| 13 | 13 | $rectorConfig->paths([ |
| 14 | - __DIR__ . '/ecrire', |
|
| 15 | - __DIR__ . '/prive', |
|
| 16 | - __DIR__ . '/spip.php', |
|
| 17 | - __DIR__ . '/index.php', |
|
| 14 | + __DIR__.'/ecrire', |
|
| 15 | + __DIR__.'/prive', |
|
| 16 | + __DIR__.'/spip.php', |
|
| 17 | + __DIR__.'/index.php', |
|
| 18 | 18 | ]); |
| 19 | 19 | |
| 20 | 20 | $rectorConfig->sets([ |
@@ -22,7 +22,7 @@ discard block |
||
| 22 | 22 | ]); |
| 23 | 23 | |
| 24 | 24 | $rectorConfig->skip([ |
| 25 | - __DIR__ . '/ecrire/lang', |
|
| 25 | + __DIR__.'/ecrire/lang', |
|
| 26 | 26 | FinalizePublicClassConstantRector::class, |
| 27 | 27 | NullToStrictStringFuncCallArgRector::class, |
| 28 | 28 | CountOnNullRector::class, |
@@ -18,7 +18,7 @@ discard block |
||
| 18 | 18 | * @package SPIP\Core\Public\Styliser |
| 19 | 19 | **/ |
| 20 | 20 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 21 | - return; |
|
| 21 | + return; |
|
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | /** |
@@ -28,190 +28,190 @@ discard block |
||
| 28 | 28 | * @return array Données modifiées du pipeline |
| 29 | 29 | */ |
| 30 | 30 | function public_styliser_par_z_dist($flux) { |
| 31 | - static $prefix_path = null; |
|
| 32 | - static $prefix_length; |
|
| 33 | - static $z_blocs; |
|
| 34 | - static $apl_constant; |
|
| 35 | - static $page; |
|
| 36 | - static $disponible = []; |
|
| 37 | - static $echafauder; |
|
| 38 | - static $prepend = ''; |
|
| 39 | - |
|
| 40 | - if (!isset($prefix_path)) { |
|
| 41 | - $z_blocs = z_blocs(test_espace_prive()); |
|
| 42 | - if (test_espace_prive()) { |
|
| 43 | - $prefix_path = 'prive/squelettes/'; |
|
| 44 | - $prefix_length = strlen($prefix_path); |
|
| 45 | - $apl_constant = '_ECRIRE_AJAX_PARALLEL_LOAD'; |
|
| 46 | - $page = 'exec'; |
|
| 47 | - $echafauder = charger_fonction('echafauder', 'prive', true); |
|
| 48 | - define('_ZCORE_EXCLURE_PATH', ''); |
|
| 49 | - } else { |
|
| 50 | - $prefix_path = ''; |
|
| 51 | - $prefix_length = 0; |
|
| 52 | - $apl_constant = '_Z_AJAX_PARALLEL_LOAD'; |
|
| 53 | - $page = _SPIP_PAGE; |
|
| 54 | - $echafauder = charger_fonction('echafauder', 'public', true); |
|
| 55 | - define('_ZCORE_EXCLURE_PATH', '\bprive|\bsquelettes-dist' . (defined('_DIR_PLUGIN_DIST') ? '|\b' . rtrim( |
|
| 56 | - (string) _DIR_PLUGIN_DIST, |
|
| 57 | - '/' |
|
| 58 | - ) : '')); |
|
| 59 | - } |
|
| 60 | - $prepend = (defined('_Z_PREPEND_PATH') ? _Z_PREPEND_PATH : ''); |
|
| 61 | - } |
|
| 62 | - $z_contenu = reset($z_blocs); // contenu par defaut |
|
| 63 | - |
|
| 64 | - $fond = $flux['args']['fond']; |
|
| 65 | - |
|
| 66 | - if ($prepend || strncmp((string) $fond, (string) $prefix_path, $prefix_length) == 0) { |
|
| 67 | - $fond = substr((string) $fond, $prefix_length); |
|
| 68 | - $squelette = $flux['data']; |
|
| 69 | - $ext = $flux['args']['ext']; |
|
| 70 | - // Ajax Parallel loading : ne pas calculer le bloc, mais renvoyer un js qui le loadera en ajax |
|
| 71 | - if ( |
|
| 72 | - defined('_Z_AJAX_PARALLEL_LOAD_OK') |
|
| 73 | - && ($dir = explode('/', $fond)) |
|
| 74 | - && count($dir) == 2 // pas un sous repertoire |
|
| 75 | - && ($dir = reset($dir)) |
|
| 76 | - && in_array($dir, $z_blocs) // verifier deja qu'on est dans un bloc Z |
|
| 77 | - && defined($apl_constant) |
|
| 78 | - && in_array($dir, explode(',', (string) constant($apl_constant))) // et dans un demande en APL |
|
| 79 | - && ($pipe = z_trouver_bloc($prefix_path . $prepend, $dir, 'z_apl', $ext)) // et qui contient le squelette APL |
|
| 80 | - ) { |
|
| 81 | - $flux['data'] = $pipe; |
|
| 82 | - |
|
| 83 | - return $flux; |
|
| 84 | - } |
|
| 85 | - |
|
| 86 | - // surcharger aussi les squelettes venant de squelettes-dist/ |
|
| 87 | - if ($squelette && !z_fond_valide($squelette)) { |
|
| 88 | - $squelette = ''; |
|
| 89 | - $echafauder = ''; |
|
| 90 | - } |
|
| 91 | - if ($prepend) { |
|
| 92 | - $squelette = substr((string) find_in_path($prefix_path . $prepend . "$fond.$ext"), 0, -strlen(".$ext")); |
|
| 93 | - if ($squelette) { |
|
| 94 | - $flux['data'] = $squelette; |
|
| 95 | - } |
|
| 96 | - } |
|
| 97 | - |
|
| 98 | - // gerer les squelettes non trouves |
|
| 99 | - // -> router vers les /dist.html |
|
| 100 | - // ou scaffolding ou page automatique les contenus |
|
| 101 | - if (!$squelette) { |
|
| 102 | - // si on est sur un ?page=XX non trouve |
|
| 103 | - if ( |
|
| 104 | - isset($flux['args']['contexte'][$page]) && $flux['args']['contexte'][$page] == $fond |
|
| 105 | - || isset($flux['args']['contexte']['type-page']) && $flux['args']['contexte']['type-page'] == $fond |
|
| 106 | - || $fond == 'sommaire' && (!isset($flux['args']['contexte'][$page]) || !$flux['args']['contexte'][$page]) |
|
| 107 | - ) { |
|
| 108 | - // si on est sur un ?page=XX non trouve |
|
| 109 | - // se brancher sur contenu/xx si il existe |
|
| 110 | - // ou si c'est un objet spip, associe a une table, utiliser le fond homonyme |
|
| 111 | - if (!isset($disponible[$fond])) { |
|
| 112 | - $disponible[$fond] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $fond, $ext, (bool) $echafauder); |
|
| 113 | - } |
|
| 114 | - |
|
| 115 | - if ($disponible[$fond]) { |
|
| 116 | - $flux['data'] = substr((string) find_in_path($prefix_path . "page.$ext"), 0, -strlen(".$ext")); |
|
| 117 | - } |
|
| 118 | - } |
|
| 119 | - |
|
| 120 | - // echafaudage : |
|
| 121 | - // si c'est un fond de contenu d'un objet en base |
|
| 122 | - // generer un fond automatique a la volee pour les webmestres |
|
| 123 | - elseif (strncmp($fond, "$z_contenu/", strlen((string) $z_contenu) + 1) == 0) { |
|
| 124 | - $type = substr($fond, strlen((string) $z_contenu) + 1); |
|
| 125 | - if ($type == 'page' && isset($flux['args']['contexte'][$page])) { |
|
| 126 | - $type = $flux['args']['contexte'][$page]; |
|
| 127 | - } |
|
| 128 | - if (!isset($disponible[$type])) { |
|
| 129 | - $disponible[$type] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, (bool) $echafauder); |
|
| 130 | - } |
|
| 131 | - if (is_string($disponible[$type])) { |
|
| 132 | - $flux['data'] = $disponible[$type]; |
|
| 133 | - } elseif ( |
|
| 134 | - $echafauder |
|
| 135 | - && include_spip('inc/autoriser') |
|
| 136 | - && isset($GLOBALS['visiteur_session']['statut']) |
|
| 137 | - && autoriser('echafauder', $type) |
|
| 138 | - && ($is = $disponible[$type]) |
|
| 139 | - && is_array($is) |
|
| 140 | - ) { |
|
| 141 | - $flux['data'] = $echafauder($type, $is[0], $is[1], $is[2], $ext); |
|
| 142 | - } else { |
|
| 143 | - $flux['data'] = ($disponible['404'] = z_contenu_disponible( |
|
| 144 | - $prefix_path . $prepend, |
|
| 145 | - $z_contenu, |
|
| 146 | - '404', |
|
| 147 | - $ext, |
|
| 148 | - (bool) $echafauder |
|
| 149 | - )); |
|
| 150 | - } |
|
| 151 | - } |
|
| 152 | - |
|
| 153 | - // sinon, si on demande un fond non trouve dans un des autres blocs |
|
| 154 | - // et si il y a bien un contenu correspondant ou echafaudable |
|
| 155 | - // se rabbatre sur le dist.html du bloc concerne |
|
| 156 | - else { |
|
| 157 | - if ( |
|
| 158 | - ($dir = explode('/', $fond)) |
|
| 159 | - && ($dir = reset($dir)) |
|
| 160 | - && $dir !== $z_contenu |
|
| 161 | - && in_array($dir, $z_blocs) |
|
| 162 | - ) { |
|
| 163 | - $type = substr($fond, strlen("$dir/")); |
|
| 164 | - if ($type == 'page' && isset($flux['args']['contexte'][$page])) { |
|
| 165 | - $type = $flux['args']['contexte'][$page]; |
|
| 166 | - } |
|
| 167 | - if ($type !== 'page' && !isset($disponible[$type])) { |
|
| 168 | - $disponible[$type] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, (bool) $echafauder); |
|
| 169 | - } |
|
| 170 | - if ($type == 'page' || $disponible[$type]) { |
|
| 171 | - $flux['data'] = z_trouver_bloc($prefix_path . $prepend, $dir, 'dist', $ext); |
|
| 172 | - } |
|
| 173 | - } |
|
| 174 | - } |
|
| 175 | - $squelette = $flux['data']; |
|
| 176 | - } |
|
| 177 | - |
|
| 178 | - // layout specifiques par type et compositions : |
|
| 179 | - // body-article.html |
|
| 180 | - // body-sommaire.html |
|
| 181 | - // pour des raisons de perfo, les declinaisons doivent etre dans le |
|
| 182 | - // meme dossier que body.html |
|
| 183 | - $f = null; |
|
| 184 | - if ($fond == 'body' && str_ends_with((string) $squelette, $fond)) { |
|
| 185 | - if ( |
|
| 186 | - isset($flux['args']['contexte']['type-page']) |
|
| 187 | - && ( |
|
| 188 | - isset($flux['args']['contexte']['composition']) && file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page'] . '-' . $flux['args']['contexte']['composition']) . ".$ext") |
|
| 189 | - || file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page']) . ".$ext") |
|
| 190 | - ) |
|
| 191 | - ) { |
|
| 192 | - $flux['data'] = $f; |
|
| 193 | - } |
|
| 194 | - } elseif ( |
|
| 195 | - $fond == 'structure' |
|
| 196 | - && z_sanitize_var_zajax() |
|
| 197 | - && ($f = find_in_path($prefix_path . $prepend . 'ajax' . ".$ext")) |
|
| 198 | - ) { |
|
| 199 | - $flux['data'] = substr((string) $f, 0, -strlen(".$ext")); |
|
| 200 | - } elseif ( |
|
| 201 | - // chercher le fond correspondant a la composition |
|
| 202 | - isset($flux['args']['contexte']['composition']) |
|
| 203 | - && (basename($fond) == 'page' || $squelette && str_ends_with((string) $squelette, $fond)) |
|
| 204 | - && ($dir = substr($fond, $prefix_length)) |
|
| 205 | - && ($dir = explode('/', $dir)) |
|
| 206 | - && ($dir = reset($dir)) |
|
| 207 | - && in_array($dir, $z_blocs) |
|
| 208 | - && ($f = find_in_path($prefix_path . $prepend . $fond . '-' . $flux['args']['contexte']['composition'] . ".$ext")) |
|
| 209 | - ) { |
|
| 210 | - $flux['data'] = substr((string) $f, 0, -strlen(".$ext")); |
|
| 211 | - } |
|
| 212 | - } |
|
| 213 | - |
|
| 214 | - return $flux; |
|
| 31 | + static $prefix_path = null; |
|
| 32 | + static $prefix_length; |
|
| 33 | + static $z_blocs; |
|
| 34 | + static $apl_constant; |
|
| 35 | + static $page; |
|
| 36 | + static $disponible = []; |
|
| 37 | + static $echafauder; |
|
| 38 | + static $prepend = ''; |
|
| 39 | + |
|
| 40 | + if (!isset($prefix_path)) { |
|
| 41 | + $z_blocs = z_blocs(test_espace_prive()); |
|
| 42 | + if (test_espace_prive()) { |
|
| 43 | + $prefix_path = 'prive/squelettes/'; |
|
| 44 | + $prefix_length = strlen($prefix_path); |
|
| 45 | + $apl_constant = '_ECRIRE_AJAX_PARALLEL_LOAD'; |
|
| 46 | + $page = 'exec'; |
|
| 47 | + $echafauder = charger_fonction('echafauder', 'prive', true); |
|
| 48 | + define('_ZCORE_EXCLURE_PATH', ''); |
|
| 49 | + } else { |
|
| 50 | + $prefix_path = ''; |
|
| 51 | + $prefix_length = 0; |
|
| 52 | + $apl_constant = '_Z_AJAX_PARALLEL_LOAD'; |
|
| 53 | + $page = _SPIP_PAGE; |
|
| 54 | + $echafauder = charger_fonction('echafauder', 'public', true); |
|
| 55 | + define('_ZCORE_EXCLURE_PATH', '\bprive|\bsquelettes-dist' . (defined('_DIR_PLUGIN_DIST') ? '|\b' . rtrim( |
|
| 56 | + (string) _DIR_PLUGIN_DIST, |
|
| 57 | + '/' |
|
| 58 | + ) : '')); |
|
| 59 | + } |
|
| 60 | + $prepend = (defined('_Z_PREPEND_PATH') ? _Z_PREPEND_PATH : ''); |
|
| 61 | + } |
|
| 62 | + $z_contenu = reset($z_blocs); // contenu par defaut |
|
| 63 | + |
|
| 64 | + $fond = $flux['args']['fond']; |
|
| 65 | + |
|
| 66 | + if ($prepend || strncmp((string) $fond, (string) $prefix_path, $prefix_length) == 0) { |
|
| 67 | + $fond = substr((string) $fond, $prefix_length); |
|
| 68 | + $squelette = $flux['data']; |
|
| 69 | + $ext = $flux['args']['ext']; |
|
| 70 | + // Ajax Parallel loading : ne pas calculer le bloc, mais renvoyer un js qui le loadera en ajax |
|
| 71 | + if ( |
|
| 72 | + defined('_Z_AJAX_PARALLEL_LOAD_OK') |
|
| 73 | + && ($dir = explode('/', $fond)) |
|
| 74 | + && count($dir) == 2 // pas un sous repertoire |
|
| 75 | + && ($dir = reset($dir)) |
|
| 76 | + && in_array($dir, $z_blocs) // verifier deja qu'on est dans un bloc Z |
|
| 77 | + && defined($apl_constant) |
|
| 78 | + && in_array($dir, explode(',', (string) constant($apl_constant))) // et dans un demande en APL |
|
| 79 | + && ($pipe = z_trouver_bloc($prefix_path . $prepend, $dir, 'z_apl', $ext)) // et qui contient le squelette APL |
|
| 80 | + ) { |
|
| 81 | + $flux['data'] = $pipe; |
|
| 82 | + |
|
| 83 | + return $flux; |
|
| 84 | + } |
|
| 85 | + |
|
| 86 | + // surcharger aussi les squelettes venant de squelettes-dist/ |
|
| 87 | + if ($squelette && !z_fond_valide($squelette)) { |
|
| 88 | + $squelette = ''; |
|
| 89 | + $echafauder = ''; |
|
| 90 | + } |
|
| 91 | + if ($prepend) { |
|
| 92 | + $squelette = substr((string) find_in_path($prefix_path . $prepend . "$fond.$ext"), 0, -strlen(".$ext")); |
|
| 93 | + if ($squelette) { |
|
| 94 | + $flux['data'] = $squelette; |
|
| 95 | + } |
|
| 96 | + } |
|
| 97 | + |
|
| 98 | + // gerer les squelettes non trouves |
|
| 99 | + // -> router vers les /dist.html |
|
| 100 | + // ou scaffolding ou page automatique les contenus |
|
| 101 | + if (!$squelette) { |
|
| 102 | + // si on est sur un ?page=XX non trouve |
|
| 103 | + if ( |
|
| 104 | + isset($flux['args']['contexte'][$page]) && $flux['args']['contexte'][$page] == $fond |
|
| 105 | + || isset($flux['args']['contexte']['type-page']) && $flux['args']['contexte']['type-page'] == $fond |
|
| 106 | + || $fond == 'sommaire' && (!isset($flux['args']['contexte'][$page]) || !$flux['args']['contexte'][$page]) |
|
| 107 | + ) { |
|
| 108 | + // si on est sur un ?page=XX non trouve |
|
| 109 | + // se brancher sur contenu/xx si il existe |
|
| 110 | + // ou si c'est un objet spip, associe a une table, utiliser le fond homonyme |
|
| 111 | + if (!isset($disponible[$fond])) { |
|
| 112 | + $disponible[$fond] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $fond, $ext, (bool) $echafauder); |
|
| 113 | + } |
|
| 114 | + |
|
| 115 | + if ($disponible[$fond]) { |
|
| 116 | + $flux['data'] = substr((string) find_in_path($prefix_path . "page.$ext"), 0, -strlen(".$ext")); |
|
| 117 | + } |
|
| 118 | + } |
|
| 119 | + |
|
| 120 | + // echafaudage : |
|
| 121 | + // si c'est un fond de contenu d'un objet en base |
|
| 122 | + // generer un fond automatique a la volee pour les webmestres |
|
| 123 | + elseif (strncmp($fond, "$z_contenu/", strlen((string) $z_contenu) + 1) == 0) { |
|
| 124 | + $type = substr($fond, strlen((string) $z_contenu) + 1); |
|
| 125 | + if ($type == 'page' && isset($flux['args']['contexte'][$page])) { |
|
| 126 | + $type = $flux['args']['contexte'][$page]; |
|
| 127 | + } |
|
| 128 | + if (!isset($disponible[$type])) { |
|
| 129 | + $disponible[$type] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, (bool) $echafauder); |
|
| 130 | + } |
|
| 131 | + if (is_string($disponible[$type])) { |
|
| 132 | + $flux['data'] = $disponible[$type]; |
|
| 133 | + } elseif ( |
|
| 134 | + $echafauder |
|
| 135 | + && include_spip('inc/autoriser') |
|
| 136 | + && isset($GLOBALS['visiteur_session']['statut']) |
|
| 137 | + && autoriser('echafauder', $type) |
|
| 138 | + && ($is = $disponible[$type]) |
|
| 139 | + && is_array($is) |
|
| 140 | + ) { |
|
| 141 | + $flux['data'] = $echafauder($type, $is[0], $is[1], $is[2], $ext); |
|
| 142 | + } else { |
|
| 143 | + $flux['data'] = ($disponible['404'] = z_contenu_disponible( |
|
| 144 | + $prefix_path . $prepend, |
|
| 145 | + $z_contenu, |
|
| 146 | + '404', |
|
| 147 | + $ext, |
|
| 148 | + (bool) $echafauder |
|
| 149 | + )); |
|
| 150 | + } |
|
| 151 | + } |
|
| 152 | + |
|
| 153 | + // sinon, si on demande un fond non trouve dans un des autres blocs |
|
| 154 | + // et si il y a bien un contenu correspondant ou echafaudable |
|
| 155 | + // se rabbatre sur le dist.html du bloc concerne |
|
| 156 | + else { |
|
| 157 | + if ( |
|
| 158 | + ($dir = explode('/', $fond)) |
|
| 159 | + && ($dir = reset($dir)) |
|
| 160 | + && $dir !== $z_contenu |
|
| 161 | + && in_array($dir, $z_blocs) |
|
| 162 | + ) { |
|
| 163 | + $type = substr($fond, strlen("$dir/")); |
|
| 164 | + if ($type == 'page' && isset($flux['args']['contexte'][$page])) { |
|
| 165 | + $type = $flux['args']['contexte'][$page]; |
|
| 166 | + } |
|
| 167 | + if ($type !== 'page' && !isset($disponible[$type])) { |
|
| 168 | + $disponible[$type] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, (bool) $echafauder); |
|
| 169 | + } |
|
| 170 | + if ($type == 'page' || $disponible[$type]) { |
|
| 171 | + $flux['data'] = z_trouver_bloc($prefix_path . $prepend, $dir, 'dist', $ext); |
|
| 172 | + } |
|
| 173 | + } |
|
| 174 | + } |
|
| 175 | + $squelette = $flux['data']; |
|
| 176 | + } |
|
| 177 | + |
|
| 178 | + // layout specifiques par type et compositions : |
|
| 179 | + // body-article.html |
|
| 180 | + // body-sommaire.html |
|
| 181 | + // pour des raisons de perfo, les declinaisons doivent etre dans le |
|
| 182 | + // meme dossier que body.html |
|
| 183 | + $f = null; |
|
| 184 | + if ($fond == 'body' && str_ends_with((string) $squelette, $fond)) { |
|
| 185 | + if ( |
|
| 186 | + isset($flux['args']['contexte']['type-page']) |
|
| 187 | + && ( |
|
| 188 | + isset($flux['args']['contexte']['composition']) && file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page'] . '-' . $flux['args']['contexte']['composition']) . ".$ext") |
|
| 189 | + || file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page']) . ".$ext") |
|
| 190 | + ) |
|
| 191 | + ) { |
|
| 192 | + $flux['data'] = $f; |
|
| 193 | + } |
|
| 194 | + } elseif ( |
|
| 195 | + $fond == 'structure' |
|
| 196 | + && z_sanitize_var_zajax() |
|
| 197 | + && ($f = find_in_path($prefix_path . $prepend . 'ajax' . ".$ext")) |
|
| 198 | + ) { |
|
| 199 | + $flux['data'] = substr((string) $f, 0, -strlen(".$ext")); |
|
| 200 | + } elseif ( |
|
| 201 | + // chercher le fond correspondant a la composition |
|
| 202 | + isset($flux['args']['contexte']['composition']) |
|
| 203 | + && (basename($fond) == 'page' || $squelette && str_ends_with((string) $squelette, $fond)) |
|
| 204 | + && ($dir = substr($fond, $prefix_length)) |
|
| 205 | + && ($dir = explode('/', $dir)) |
|
| 206 | + && ($dir = reset($dir)) |
|
| 207 | + && in_array($dir, $z_blocs) |
|
| 208 | + && ($f = find_in_path($prefix_path . $prepend . $fond . '-' . $flux['args']['contexte']['composition'] . ".$ext")) |
|
| 209 | + ) { |
|
| 210 | + $flux['data'] = substr((string) $f, 0, -strlen(".$ext")); |
|
| 211 | + } |
|
| 212 | + } |
|
| 213 | + |
|
| 214 | + return $flux; |
|
| 215 | 215 | } |
| 216 | 216 | |
| 217 | 217 | /** |
@@ -221,18 +221,18 @@ discard block |
||
| 221 | 221 | * @return array |
| 222 | 222 | */ |
| 223 | 223 | function z_blocs($espace_prive = false) { |
| 224 | - if ($espace_prive) { |
|
| 225 | - return ($GLOBALS['z_blocs_ecrire'] ?? [ |
|
| 226 | - 'contenu', |
|
| 227 | - 'navigation', |
|
| 228 | - 'extra', |
|
| 229 | - 'head', |
|
| 230 | - 'hierarchie', |
|
| 231 | - 'top' |
|
| 232 | - ]); |
|
| 233 | - } |
|
| 234 | - |
|
| 235 | - return ($GLOBALS['z_blocs'] ?? ['contenu']); |
|
| 224 | + if ($espace_prive) { |
|
| 225 | + return ($GLOBALS['z_blocs_ecrire'] ?? [ |
|
| 226 | + 'contenu', |
|
| 227 | + 'navigation', |
|
| 228 | + 'extra', |
|
| 229 | + 'head', |
|
| 230 | + 'hierarchie', |
|
| 231 | + 'top' |
|
| 232 | + ]); |
|
| 233 | + } |
|
| 234 | + |
|
| 235 | + return ($GLOBALS['z_blocs'] ?? ['contenu']); |
|
| 236 | 236 | } |
| 237 | 237 | |
| 238 | 238 | /** |
@@ -247,11 +247,11 @@ discard block |
||
| 247 | 247 | * @return mixed |
| 248 | 248 | */ |
| 249 | 249 | function z_contenu_disponible($prefix_path, $z_contenu, $type, $ext, $echafauder = true) { |
| 250 | - if ($d = z_trouver_bloc($prefix_path, $z_contenu, $type, $ext)) { |
|
| 251 | - return $d; |
|
| 252 | - } |
|
| 250 | + if ($d = z_trouver_bloc($prefix_path, $z_contenu, $type, $ext)) { |
|
| 251 | + return $d; |
|
| 252 | + } |
|
| 253 | 253 | |
| 254 | - return $echafauder ? z_echafaudable($type) : false; |
|
| 254 | + return $echafauder ? z_echafaudable($type) : false; |
|
| 255 | 255 | } |
| 256 | 256 | |
| 257 | 257 | /** |
@@ -265,7 +265,7 @@ discard block |
||
| 265 | 265 | * `true` si on peut l'utiliser, `false` sinon. |
| 266 | 266 | **/ |
| 267 | 267 | function z_fond_valide($squelette) { |
| 268 | - return !_ZCORE_EXCLURE_PATH || !preg_match(',(' . _ZCORE_EXCLURE_PATH . ')/,', $squelette); |
|
| 268 | + return !_ZCORE_EXCLURE_PATH || !preg_match(',(' . _ZCORE_EXCLURE_PATH . ')/,', $squelette); |
|
| 269 | 269 | } |
| 270 | 270 | |
| 271 | 271 | /** |
@@ -283,14 +283,14 @@ discard block |
||
| 283 | 283 | * @return string |
| 284 | 284 | */ |
| 285 | 285 | function z_trouver_bloc($prefix_path, $bloc, $fond, $ext) { |
| 286 | - if ( |
|
| 287 | - defined('_ZCORE_BLOC_PREFIX_SKEL') && ($f = find_in_path("$prefix_path$bloc/$bloc.$fond.$ext")) && z_fond_valide($f) |
|
| 288 | - || ($f = find_in_path("$prefix_path$bloc/$fond.$ext")) && z_fond_valide($f) |
|
| 289 | - ) { |
|
| 290 | - return substr((string) $f, 0, -strlen(".$ext")); |
|
| 291 | - } |
|
| 292 | - |
|
| 293 | - return ''; |
|
| 286 | + if ( |
|
| 287 | + defined('_ZCORE_BLOC_PREFIX_SKEL') && ($f = find_in_path("$prefix_path$bloc/$bloc.$fond.$ext")) && z_fond_valide($f) |
|
| 288 | + || ($f = find_in_path("$prefix_path$bloc/$fond.$ext")) && z_fond_valide($f) |
|
| 289 | + ) { |
|
| 290 | + return substr((string) $f, 0, -strlen(".$ext")); |
|
| 291 | + } |
|
| 292 | + |
|
| 293 | + return ''; |
|
| 294 | 294 | } |
| 295 | 295 | |
| 296 | 296 | /** |
@@ -302,52 +302,52 @@ discard block |
||
| 302 | 302 | * @return bool |
| 303 | 303 | */ |
| 304 | 304 | function z_echafaudable($type) { |
| 305 | - static $pages = null; |
|
| 306 | - static $echafaudable = []; |
|
| 307 | - if (isset($echafaudable[$type])) { |
|
| 308 | - return $echafaudable[$type]; |
|
| 309 | - } |
|
| 310 | - if (preg_match(',[^\w],', $type)) { |
|
| 311 | - return $echafaudable[$type] = false; |
|
| 312 | - } |
|
| 313 | - |
|
| 314 | - if (test_espace_prive()) { |
|
| 315 | - if (!function_exists('trouver_objet_exec')) { |
|
| 316 | - include_spip('inc/pipelines_ecrire'); |
|
| 317 | - } |
|
| 318 | - if ($e = trouver_objet_exec($type)) { |
|
| 319 | - return $echafaudable[$type] = [$e['table'], $e['table_objet_sql'], $e]; |
|
| 320 | - } else { |
|
| 321 | - // peut etre c'est un exec=types qui liste tous les objets "type" |
|
| 322 | - if ( |
|
| 323 | - ($t = objet_type($type, false)) !== $type |
|
| 324 | - && ($e = trouver_objet_exec($t)) |
|
| 325 | - ) { |
|
| 326 | - return $echafaudable[$type] = [$e['table'], $e['table_objet_sql'], $t]; |
|
| 327 | - } |
|
| 328 | - } |
|
| 329 | - } else { |
|
| 330 | - if (is_null($pages)) { |
|
| 331 | - $pages = []; |
|
| 332 | - $liste = lister_tables_objets_sql(); |
|
| 333 | - foreach ($liste as $t => $d) { |
|
| 334 | - if ($d['page']) { |
|
| 335 | - $pages[$d['page']] = [$d['table_objet'], $t]; |
|
| 336 | - } |
|
| 337 | - } |
|
| 338 | - } |
|
| 339 | - if (!isset($pages[$type])) { |
|
| 340 | - return $echafaudable[$type] = false; |
|
| 341 | - } |
|
| 342 | - if ((is_countable($pages[$type]) ? count($pages[$type]) : 0) == 2) { |
|
| 343 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 344 | - $pages[$type][] = $trouver_table(reset($pages[$type])); |
|
| 345 | - } |
|
| 346 | - |
|
| 347 | - return $echafaudable[$type] = $pages[$type]; |
|
| 348 | - } |
|
| 349 | - |
|
| 350 | - return $echafaudable[$type] = false; |
|
| 305 | + static $pages = null; |
|
| 306 | + static $echafaudable = []; |
|
| 307 | + if (isset($echafaudable[$type])) { |
|
| 308 | + return $echafaudable[$type]; |
|
| 309 | + } |
|
| 310 | + if (preg_match(',[^\w],', $type)) { |
|
| 311 | + return $echafaudable[$type] = false; |
|
| 312 | + } |
|
| 313 | + |
|
| 314 | + if (test_espace_prive()) { |
|
| 315 | + if (!function_exists('trouver_objet_exec')) { |
|
| 316 | + include_spip('inc/pipelines_ecrire'); |
|
| 317 | + } |
|
| 318 | + if ($e = trouver_objet_exec($type)) { |
|
| 319 | + return $echafaudable[$type] = [$e['table'], $e['table_objet_sql'], $e]; |
|
| 320 | + } else { |
|
| 321 | + // peut etre c'est un exec=types qui liste tous les objets "type" |
|
| 322 | + if ( |
|
| 323 | + ($t = objet_type($type, false)) !== $type |
|
| 324 | + && ($e = trouver_objet_exec($t)) |
|
| 325 | + ) { |
|
| 326 | + return $echafaudable[$type] = [$e['table'], $e['table_objet_sql'], $t]; |
|
| 327 | + } |
|
| 328 | + } |
|
| 329 | + } else { |
|
| 330 | + if (is_null($pages)) { |
|
| 331 | + $pages = []; |
|
| 332 | + $liste = lister_tables_objets_sql(); |
|
| 333 | + foreach ($liste as $t => $d) { |
|
| 334 | + if ($d['page']) { |
|
| 335 | + $pages[$d['page']] = [$d['table_objet'], $t]; |
|
| 336 | + } |
|
| 337 | + } |
|
| 338 | + } |
|
| 339 | + if (!isset($pages[$type])) { |
|
| 340 | + return $echafaudable[$type] = false; |
|
| 341 | + } |
|
| 342 | + if ((is_countable($pages[$type]) ? count($pages[$type]) : 0) == 2) { |
|
| 343 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 344 | + $pages[$type][] = $trouver_table(reset($pages[$type])); |
|
| 345 | + } |
|
| 346 | + |
|
| 347 | + return $echafaudable[$type] = $pages[$type]; |
|
| 348 | + } |
|
| 349 | + |
|
| 350 | + return $echafaudable[$type] = false; |
|
| 351 | 351 | } |
| 352 | 352 | |
| 353 | 353 | |
@@ -364,42 +364,42 @@ discard block |
||
| 364 | 364 | * @return string |
| 365 | 365 | */ |
| 366 | 366 | function prive_echafauder_dist($exec, $table, $table_sql, $desc_exec, $ext) { |
| 367 | - $scaffold = ''; |
|
| 368 | - |
|
| 369 | - // page objet ou objet_edit |
|
| 370 | - if (is_array($desc_exec)) { |
|
| 371 | - $type = $desc_exec['type']; |
|
| 372 | - $primary = $desc_exec['id_table_objet']; |
|
| 373 | - |
|
| 374 | - if ($desc_exec['edition'] === false) { |
|
| 375 | - $fond = 'objet'; |
|
| 376 | - } else { |
|
| 377 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 378 | - $desc = $trouver_table($table_sql); |
|
| 379 | - $fond = isset($desc['field']['id_rubrique']) ? 'objet_edit' : 'objet_edit.sans_rubrique'; |
|
| 380 | - } |
|
| 381 | - $dir = z_blocs(test_espace_prive()); |
|
| 382 | - $dir = reset($dir); |
|
| 383 | - $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/" . $fond . ',objet=' . $type . ',id_objet=#' . strtoupper((string) $primary) . ',env}>'; |
|
| 384 | - } // page objets |
|
| 385 | - elseif (($type = $desc_exec) && !str_contains($type, '/')) { |
|
| 386 | - $dir = z_blocs(test_espace_prive()); |
|
| 387 | - $dir = reset($dir); |
|
| 388 | - $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/objets,objet=" . $type . ',env} />'; |
|
| 389 | - } |
|
| 390 | - // morceau d'objet : on fournit le fond de sibstitution dans $desc_exec |
|
| 391 | - // et objet et tire de $table |
|
| 392 | - elseif ($fond = $desc_exec) { |
|
| 393 | - $dir = md5(dirname($fond)); |
|
| 394 | - $scaffold = "<INCLURE{fond=$fond,objet=" . objet_type($table) . ',env} />'; |
|
| 395 | - } |
|
| 396 | - |
|
| 397 | - $base_dir = sous_repertoire(_DIR_CACHE, 'scaffold', false); |
|
| 398 | - $base_dir = sous_repertoire($base_dir, $dir, false); |
|
| 399 | - $f = $base_dir . "$exec"; |
|
| 400 | - ecrire_fichier("$f.$ext", $scaffold); |
|
| 401 | - |
|
| 402 | - return $f; |
|
| 367 | + $scaffold = ''; |
|
| 368 | + |
|
| 369 | + // page objet ou objet_edit |
|
| 370 | + if (is_array($desc_exec)) { |
|
| 371 | + $type = $desc_exec['type']; |
|
| 372 | + $primary = $desc_exec['id_table_objet']; |
|
| 373 | + |
|
| 374 | + if ($desc_exec['edition'] === false) { |
|
| 375 | + $fond = 'objet'; |
|
| 376 | + } else { |
|
| 377 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 378 | + $desc = $trouver_table($table_sql); |
|
| 379 | + $fond = isset($desc['field']['id_rubrique']) ? 'objet_edit' : 'objet_edit.sans_rubrique'; |
|
| 380 | + } |
|
| 381 | + $dir = z_blocs(test_espace_prive()); |
|
| 382 | + $dir = reset($dir); |
|
| 383 | + $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/" . $fond . ',objet=' . $type . ',id_objet=#' . strtoupper((string) $primary) . ',env}>'; |
|
| 384 | + } // page objets |
|
| 385 | + elseif (($type = $desc_exec) && !str_contains($type, '/')) { |
|
| 386 | + $dir = z_blocs(test_espace_prive()); |
|
| 387 | + $dir = reset($dir); |
|
| 388 | + $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/objets,objet=" . $type . ',env} />'; |
|
| 389 | + } |
|
| 390 | + // morceau d'objet : on fournit le fond de sibstitution dans $desc_exec |
|
| 391 | + // et objet et tire de $table |
|
| 392 | + elseif ($fond = $desc_exec) { |
|
| 393 | + $dir = md5(dirname($fond)); |
|
| 394 | + $scaffold = "<INCLURE{fond=$fond,objet=" . objet_type($table) . ',env} />'; |
|
| 395 | + } |
|
| 396 | + |
|
| 397 | + $base_dir = sous_repertoire(_DIR_CACHE, 'scaffold', false); |
|
| 398 | + $base_dir = sous_repertoire($base_dir, $dir, false); |
|
| 399 | + $f = $base_dir . "$exec"; |
|
| 400 | + ecrire_fichier("$f.$ext", $scaffold); |
|
| 401 | + |
|
| 402 | + return $f; |
|
| 403 | 403 | } |
| 404 | 404 | |
| 405 | 405 | /** |
@@ -408,17 +408,17 @@ discard block |
||
| 408 | 408 | * @return bool|string |
| 409 | 409 | */ |
| 410 | 410 | function z_sanitize_var_zajax() { |
| 411 | - $z_ajax = _request('var_zajax'); |
|
| 412 | - if (!$z_ajax) { |
|
| 413 | - return false; |
|
| 414 | - } |
|
| 415 | - if ( |
|
| 416 | - !($z_blocs = z_blocs(test_espace_prive())) |
|
| 417 | - || !in_array($z_ajax, $z_blocs) |
|
| 418 | - ) { |
|
| 419 | - set_request('var_zajax'); // enlever cette demande incongrue |
|
| 420 | - $z_ajax = false; |
|
| 421 | - } |
|
| 422 | - |
|
| 423 | - return $z_ajax; |
|
| 411 | + $z_ajax = _request('var_zajax'); |
|
| 412 | + if (!$z_ajax) { |
|
| 413 | + return false; |
|
| 414 | + } |
|
| 415 | + if ( |
|
| 416 | + !($z_blocs = z_blocs(test_espace_prive())) |
|
| 417 | + || !in_array($z_ajax, $z_blocs) |
|
| 418 | + ) { |
|
| 419 | + set_request('var_zajax'); // enlever cette demande incongrue |
|
| 420 | + $z_ajax = false; |
|
| 421 | + } |
|
| 422 | + |
|
| 423 | + return $z_ajax; |
|
| 424 | 424 | } |
@@ -52,7 +52,7 @@ discard block |
||
| 52 | 52 | $apl_constant = '_Z_AJAX_PARALLEL_LOAD'; |
| 53 | 53 | $page = _SPIP_PAGE; |
| 54 | 54 | $echafauder = charger_fonction('echafauder', 'public', true); |
| 55 | - define('_ZCORE_EXCLURE_PATH', '\bprive|\bsquelettes-dist' . (defined('_DIR_PLUGIN_DIST') ? '|\b' . rtrim( |
|
| 55 | + define('_ZCORE_EXCLURE_PATH', '\bprive|\bsquelettes-dist'.(defined('_DIR_PLUGIN_DIST') ? '|\b'.rtrim( |
|
| 56 | 56 | (string) _DIR_PLUGIN_DIST, |
| 57 | 57 | '/' |
| 58 | 58 | ) : '')); |
@@ -76,7 +76,7 @@ discard block |
||
| 76 | 76 | && in_array($dir, $z_blocs) // verifier deja qu'on est dans un bloc Z |
| 77 | 77 | && defined($apl_constant) |
| 78 | 78 | && in_array($dir, explode(',', (string) constant($apl_constant))) // et dans un demande en APL |
| 79 | - && ($pipe = z_trouver_bloc($prefix_path . $prepend, $dir, 'z_apl', $ext)) // et qui contient le squelette APL |
|
| 79 | + && ($pipe = z_trouver_bloc($prefix_path.$prepend, $dir, 'z_apl', $ext)) // et qui contient le squelette APL |
|
| 80 | 80 | ) { |
| 81 | 81 | $flux['data'] = $pipe; |
| 82 | 82 | |
@@ -89,7 +89,7 @@ discard block |
||
| 89 | 89 | $echafauder = ''; |
| 90 | 90 | } |
| 91 | 91 | if ($prepend) { |
| 92 | - $squelette = substr((string) find_in_path($prefix_path . $prepend . "$fond.$ext"), 0, -strlen(".$ext")); |
|
| 92 | + $squelette = substr((string) find_in_path($prefix_path.$prepend."$fond.$ext"), 0, -strlen(".$ext")); |
|
| 93 | 93 | if ($squelette) { |
| 94 | 94 | $flux['data'] = $squelette; |
| 95 | 95 | } |
@@ -109,11 +109,11 @@ discard block |
||
| 109 | 109 | // se brancher sur contenu/xx si il existe |
| 110 | 110 | // ou si c'est un objet spip, associe a une table, utiliser le fond homonyme |
| 111 | 111 | if (!isset($disponible[$fond])) { |
| 112 | - $disponible[$fond] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $fond, $ext, (bool) $echafauder); |
|
| 112 | + $disponible[$fond] = z_contenu_disponible($prefix_path.$prepend, $z_contenu, $fond, $ext, (bool) $echafauder); |
|
| 113 | 113 | } |
| 114 | 114 | |
| 115 | 115 | if ($disponible[$fond]) { |
| 116 | - $flux['data'] = substr((string) find_in_path($prefix_path . "page.$ext"), 0, -strlen(".$ext")); |
|
| 116 | + $flux['data'] = substr((string) find_in_path($prefix_path."page.$ext"), 0, -strlen(".$ext")); |
|
| 117 | 117 | } |
| 118 | 118 | } |
| 119 | 119 | |
@@ -126,7 +126,7 @@ discard block |
||
| 126 | 126 | $type = $flux['args']['contexte'][$page]; |
| 127 | 127 | } |
| 128 | 128 | if (!isset($disponible[$type])) { |
| 129 | - $disponible[$type] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, (bool) $echafauder); |
|
| 129 | + $disponible[$type] = z_contenu_disponible($prefix_path.$prepend, $z_contenu, $type, $ext, (bool) $echafauder); |
|
| 130 | 130 | } |
| 131 | 131 | if (is_string($disponible[$type])) { |
| 132 | 132 | $flux['data'] = $disponible[$type]; |
@@ -141,7 +141,7 @@ discard block |
||
| 141 | 141 | $flux['data'] = $echafauder($type, $is[0], $is[1], $is[2], $ext); |
| 142 | 142 | } else { |
| 143 | 143 | $flux['data'] = ($disponible['404'] = z_contenu_disponible( |
| 144 | - $prefix_path . $prepend, |
|
| 144 | + $prefix_path.$prepend, |
|
| 145 | 145 | $z_contenu, |
| 146 | 146 | '404', |
| 147 | 147 | $ext, |
@@ -165,10 +165,10 @@ discard block |
||
| 165 | 165 | $type = $flux['args']['contexte'][$page]; |
| 166 | 166 | } |
| 167 | 167 | if ($type !== 'page' && !isset($disponible[$type])) { |
| 168 | - $disponible[$type] = z_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, (bool) $echafauder); |
|
| 168 | + $disponible[$type] = z_contenu_disponible($prefix_path.$prepend, $z_contenu, $type, $ext, (bool) $echafauder); |
|
| 169 | 169 | } |
| 170 | 170 | if ($type == 'page' || $disponible[$type]) { |
| 171 | - $flux['data'] = z_trouver_bloc($prefix_path . $prepend, $dir, 'dist', $ext); |
|
| 171 | + $flux['data'] = z_trouver_bloc($prefix_path.$prepend, $dir, 'dist', $ext); |
|
| 172 | 172 | } |
| 173 | 173 | } |
| 174 | 174 | } |
@@ -185,8 +185,8 @@ discard block |
||
| 185 | 185 | if ( |
| 186 | 186 | isset($flux['args']['contexte']['type-page']) |
| 187 | 187 | && ( |
| 188 | - isset($flux['args']['contexte']['composition']) && file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page'] . '-' . $flux['args']['contexte']['composition']) . ".$ext") |
|
| 189 | - || file_exists(($f = $squelette . '-' . $flux['args']['contexte']['type-page']) . ".$ext") |
|
| 188 | + isset($flux['args']['contexte']['composition']) && file_exists(($f = $squelette.'-'.$flux['args']['contexte']['type-page'].'-'.$flux['args']['contexte']['composition']).".$ext") |
|
| 189 | + || file_exists(($f = $squelette.'-'.$flux['args']['contexte']['type-page']).".$ext") |
|
| 190 | 190 | ) |
| 191 | 191 | ) { |
| 192 | 192 | $flux['data'] = $f; |
@@ -194,7 +194,7 @@ discard block |
||
| 194 | 194 | } elseif ( |
| 195 | 195 | $fond == 'structure' |
| 196 | 196 | && z_sanitize_var_zajax() |
| 197 | - && ($f = find_in_path($prefix_path . $prepend . 'ajax' . ".$ext")) |
|
| 197 | + && ($f = find_in_path($prefix_path.$prepend.'ajax'.".$ext")) |
|
| 198 | 198 | ) { |
| 199 | 199 | $flux['data'] = substr((string) $f, 0, -strlen(".$ext")); |
| 200 | 200 | } elseif ( |
@@ -205,7 +205,7 @@ discard block |
||
| 205 | 205 | && ($dir = explode('/', $dir)) |
| 206 | 206 | && ($dir = reset($dir)) |
| 207 | 207 | && in_array($dir, $z_blocs) |
| 208 | - && ($f = find_in_path($prefix_path . $prepend . $fond . '-' . $flux['args']['contexte']['composition'] . ".$ext")) |
|
| 208 | + && ($f = find_in_path($prefix_path.$prepend.$fond.'-'.$flux['args']['contexte']['composition'].".$ext")) |
|
| 209 | 209 | ) { |
| 210 | 210 | $flux['data'] = substr((string) $f, 0, -strlen(".$ext")); |
| 211 | 211 | } |
@@ -265,7 +265,7 @@ discard block |
||
| 265 | 265 | * `true` si on peut l'utiliser, `false` sinon. |
| 266 | 266 | **/ |
| 267 | 267 | function z_fond_valide($squelette) { |
| 268 | - return !_ZCORE_EXCLURE_PATH || !preg_match(',(' . _ZCORE_EXCLURE_PATH . ')/,', $squelette); |
|
| 268 | + return !_ZCORE_EXCLURE_PATH || !preg_match(',('._ZCORE_EXCLURE_PATH.')/,', $squelette); |
|
| 269 | 269 | } |
| 270 | 270 | |
| 271 | 271 | /** |
@@ -380,23 +380,23 @@ discard block |
||
| 380 | 380 | } |
| 381 | 381 | $dir = z_blocs(test_espace_prive()); |
| 382 | 382 | $dir = reset($dir); |
| 383 | - $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/" . $fond . ',objet=' . $type . ',id_objet=#' . strtoupper((string) $primary) . ',env}>'; |
|
| 383 | + $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/".$fond.',objet='.$type.',id_objet=#'.strtoupper((string) $primary).',env}>'; |
|
| 384 | 384 | } // page objets |
| 385 | 385 | elseif (($type = $desc_exec) && !str_contains($type, '/')) { |
| 386 | 386 | $dir = z_blocs(test_espace_prive()); |
| 387 | 387 | $dir = reset($dir); |
| 388 | - $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/objets,objet=" . $type . ',env} />'; |
|
| 388 | + $scaffold = "<INCLURE{fond=prive/echafaudage/$dir/objets,objet=".$type.',env} />'; |
|
| 389 | 389 | } |
| 390 | 390 | // morceau d'objet : on fournit le fond de sibstitution dans $desc_exec |
| 391 | 391 | // et objet et tire de $table |
| 392 | 392 | elseif ($fond = $desc_exec) { |
| 393 | 393 | $dir = md5(dirname($fond)); |
| 394 | - $scaffold = "<INCLURE{fond=$fond,objet=" . objet_type($table) . ',env} />'; |
|
| 394 | + $scaffold = "<INCLURE{fond=$fond,objet=".objet_type($table).',env} />'; |
|
| 395 | 395 | } |
| 396 | 396 | |
| 397 | 397 | $base_dir = sous_repertoire(_DIR_CACHE, 'scaffold', false); |
| 398 | 398 | $base_dir = sous_repertoire($base_dir, $dir, false); |
| 399 | - $f = $base_dir . "$exec"; |
|
| 399 | + $f = $base_dir."$exec"; |
|
| 400 | 400 | ecrire_fichier("$f.$ext", $scaffold); |
| 401 | 401 | |
| 402 | 402 | return $f; |
@@ -30,7 +30,7 @@ discard block |
||
| 30 | 30 | $type .= ($struct->type_requete ?: $struct->type_table_optionnelle); |
| 31 | 31 | |
| 32 | 32 | if ($struct->jointures_explicites) { |
| 33 | - $type .= ' ' . $struct->jointures_explicites; |
|
| 33 | + $type .= ' '.$struct->jointures_explicites; |
|
| 34 | 34 | } |
| 35 | 35 | if ($struct->table_optionnelle) { |
| 36 | 36 | $type .= '?'; |
@@ -39,11 +39,11 @@ discard block |
||
| 39 | 39 | |
| 40 | 40 | $crit = $struct->param; |
| 41 | 41 | if ($crit && !is_array($crit[0])) { |
| 42 | - $type = strtolower($type) . array_shift($crit); |
|
| 42 | + $type = strtolower($type).array_shift($crit); |
|
| 43 | 43 | } |
| 44 | 44 | $crit = decompiler_criteres($struct, $fmt, $prof); |
| 45 | 45 | |
| 46 | - $f = 'format_boucle_' . $fmt; |
|
| 46 | + $f = 'format_boucle_'.$fmt; |
|
| 47 | 47 | |
| 48 | 48 | return $f($preaff, $avant, $nom, $type, $crit, $milieu, $apres, $altern, $postaff, $prof); |
| 49 | 49 | } |
@@ -56,21 +56,20 @@ discard block |
||
| 56 | 56 | $res[] = decompiler_($v, $fmt, $prof); |
| 57 | 57 | } |
| 58 | 58 | } |
| 59 | - $file = is_string($struct->texte) ? $struct->texte : |
|
| 60 | - decompiler_($struct->texte, $fmt, $prof); |
|
| 61 | - $f = 'format_inclure_' . $fmt; |
|
| 59 | + $file = is_string($struct->texte) ? $struct->texte : decompiler_($struct->texte, $fmt, $prof); |
|
| 60 | + $f = 'format_inclure_'.$fmt; |
|
| 62 | 61 | |
| 63 | 62 | return $f($file, $res, $prof); |
| 64 | 63 | } |
| 65 | 64 | |
| 66 | 65 | function decompiler_texte($struct, $fmt = '', $prof = 0) { |
| 67 | - $f = 'format_texte_' . $fmt; |
|
| 66 | + $f = 'format_texte_'.$fmt; |
|
| 68 | 67 | |
| 69 | 68 | return strlen((string) $struct->texte) ? $f($struct->texte, $prof) : ''; |
| 70 | 69 | } |
| 71 | 70 | |
| 72 | 71 | function decompiler_polyglotte($struct, $fmt = '', $prof = 0) { |
| 73 | - $f = 'format_polyglotte_' . $fmt; |
|
| 72 | + $f = 'format_polyglotte_'.$fmt; |
|
| 74 | 73 | |
| 75 | 74 | return $f($struct->traductions, $prof); |
| 76 | 75 | } |
@@ -83,7 +82,7 @@ discard block |
||
| 83 | 82 | |
| 84 | 83 | $filtres = decompiler_liste($struct->param, $fmt, $prof); |
| 85 | 84 | |
| 86 | - $f = 'format_idiome_' . $fmt; |
|
| 85 | + $f = 'format_idiome_'.$fmt; |
|
| 87 | 86 | |
| 88 | 87 | return $f($struct->nom_champ, $struct->module, $args, $filtres, $prof); |
| 89 | 88 | } |
@@ -98,7 +97,7 @@ discard block |
||
| 98 | 97 | } |
| 99 | 98 | $filtres = decompiler_liste($p, $fmt, $prof); |
| 100 | 99 | } |
| 101 | - $f = 'format_champ_' . $fmt; |
|
| 100 | + $f = 'format_champ_'.$fmt; |
|
| 102 | 101 | |
| 103 | 102 | return $f($struct->nom_champ, $struct->nom_boucle, $struct->etoile, $avant, $apres, $args, $filtres, $prof); |
| 104 | 103 | } |
@@ -107,7 +106,7 @@ discard block |
||
| 107 | 106 | if (!is_array($sources)) { |
| 108 | 107 | return ''; |
| 109 | 108 | } |
| 110 | - $f = 'format_liste_' . $fmt; |
|
| 109 | + $f = 'format_liste_'.$fmt; |
|
| 111 | 110 | $res = ''; |
| 112 | 111 | foreach ($sources as $arg) { |
| 113 | 112 | if (!is_array($arg)) { |
@@ -124,7 +123,7 @@ discard block |
||
| 124 | 123 | && strlen((string) $v[0]->apres) == 1 |
| 125 | 124 | && $v[0]->apres == $v[0]->avant |
| 126 | 125 | ) { |
| 127 | - $args[] = $v[0]->avant . $v[0]->texte . $v[0]->apres; |
|
| 126 | + $args[] = $v[0]->avant.$v[0]->texte.$v[0]->apres; |
|
| 128 | 127 | } else { |
| 129 | 128 | $args[] = decompiler_($v, $fmt, 0 - $prof); |
| 130 | 129 | } |
@@ -147,7 +146,7 @@ discard block |
||
| 147 | 146 | return ''; |
| 148 | 147 | } |
| 149 | 148 | $res = ''; |
| 150 | - $f = 'format_critere_' . $fmt; |
|
| 149 | + $f = 'format_critere_'.$fmt; |
|
| 151 | 150 | foreach ($sources as $crit) { |
| 152 | 151 | if (!is_array($crit)) { |
| 153 | 152 | continue; |
@@ -160,13 +159,13 @@ discard block |
||
| 160 | 159 | && $v[0]->type == 'texte' |
| 161 | 160 | && $v[0]->apres |
| 162 | 161 | ) { |
| 163 | - $args[] = [['texte', ($v[0]->apres . $v[0]->texte . $v[0]->apres)]]; |
|
| 162 | + $args[] = [['texte', ($v[0]->apres.$v[0]->texte.$v[0]->apres)]]; |
|
| 164 | 163 | } else { |
| 165 | 164 | $res2 = []; |
| 166 | 165 | foreach ($v as $k => $p) { |
| 167 | 166 | if ( |
| 168 | 167 | isset($p->type) |
| 169 | - && function_exists($d = 'decompiler_' . $p->type) |
|
| 168 | + && function_exists($d = 'decompiler_'.$p->type) |
|
| 170 | 169 | ) { |
| 171 | 170 | $r = $d($p, $fmt, (0 - $prof)); |
| 172 | 171 | $res2[] = [$p->type, $r]; |
@@ -194,7 +193,7 @@ discard block |
||
| 194 | 193 | if (!isset($p->type)) { |
| 195 | 194 | continue; |
| 196 | 195 | } #?????? |
| 197 | - $d = 'decompiler_' . $p->type; |
|
| 196 | + $d = 'decompiler_'.$p->type; |
|
| 198 | 197 | $next = $liste[$k + 1] ?? false; |
| 199 | 198 | // Forcer le champ etendu si son source (pas les reecritures) |
| 200 | 199 | // contenait des args et s'il est suivi d'espaces, |
@@ -219,16 +218,16 @@ discard block |
||
| 219 | 218 | } |
| 220 | 219 | $contenu[] = [$d($p, $fmt, $prof2), $p->type]; |
| 221 | 220 | } |
| 222 | - $f = 'format_suite_' . $fmt; |
|
| 221 | + $f = 'format_suite_'.$fmt; |
|
| 223 | 222 | |
| 224 | 223 | return $f($contenu); |
| 225 | 224 | } |
| 226 | 225 | |
| 227 | 226 | function public_decompiler($liste, $fmt = '', $prof = 0, $quoi = '') { |
| 228 | - if (!include_spip('public/format_' . $fmt)) { |
|
| 227 | + if (!include_spip('public/format_'.$fmt)) { |
|
| 229 | 228 | return "'$fmt'?"; |
| 230 | 229 | } |
| 231 | - $f = 'decompiler_' . $quoi; |
|
| 230 | + $f = 'decompiler_'.$quoi; |
|
| 232 | 231 | |
| 233 | 232 | return $f($liste, $fmt, $prof); |
| 234 | 233 | } |
@@ -12,129 +12,129 @@ discard block |
||
| 12 | 12 | \***************************************************************************/ |
| 13 | 13 | |
| 14 | 14 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 15 | - return; |
|
| 15 | + return; |
|
| 16 | 16 | } |
| 17 | 17 | |
| 18 | 18 | // Decompilation de l'arbre de syntaxe abstraite d'un squelette SPIP |
| 19 | 19 | |
| 20 | 20 | function decompiler_boucle($struct, $fmt = '', $prof = 0) { |
| 21 | - $nom = $struct->id_boucle; |
|
| 22 | - $preaff = decompiler_($struct->preaff, $fmt, $prof); |
|
| 23 | - $avant = decompiler_($struct->avant, $fmt, $prof); |
|
| 24 | - $apres = decompiler_($struct->apres, $fmt, $prof); |
|
| 25 | - $altern = decompiler_($struct->altern, $fmt, $prof); |
|
| 26 | - $milieu = decompiler_($struct->milieu, $fmt, $prof); |
|
| 27 | - $postaff = decompiler_($struct->postaff, $fmt, $prof); |
|
| 28 | - |
|
| 29 | - $type = $struct->sql_serveur ? "$struct->sql_serveur:" : ''; |
|
| 30 | - $type .= ($struct->type_requete ?: $struct->type_table_optionnelle); |
|
| 31 | - |
|
| 32 | - if ($struct->jointures_explicites) { |
|
| 33 | - $type .= ' ' . $struct->jointures_explicites; |
|
| 34 | - } |
|
| 35 | - if ($struct->table_optionnelle) { |
|
| 36 | - $type .= '?'; |
|
| 37 | - } |
|
| 38 | - // Revoir le cas de la boucle recursive |
|
| 39 | - |
|
| 40 | - $crit = $struct->param; |
|
| 41 | - if ($crit && !is_array($crit[0])) { |
|
| 42 | - $type = strtolower($type) . array_shift($crit); |
|
| 43 | - } |
|
| 44 | - $crit = decompiler_criteres($struct, $fmt, $prof); |
|
| 45 | - |
|
| 46 | - $f = 'format_boucle_' . $fmt; |
|
| 47 | - |
|
| 48 | - return $f($preaff, $avant, $nom, $type, $crit, $milieu, $apres, $altern, $postaff, $prof); |
|
| 21 | + $nom = $struct->id_boucle; |
|
| 22 | + $preaff = decompiler_($struct->preaff, $fmt, $prof); |
|
| 23 | + $avant = decompiler_($struct->avant, $fmt, $prof); |
|
| 24 | + $apres = decompiler_($struct->apres, $fmt, $prof); |
|
| 25 | + $altern = decompiler_($struct->altern, $fmt, $prof); |
|
| 26 | + $milieu = decompiler_($struct->milieu, $fmt, $prof); |
|
| 27 | + $postaff = decompiler_($struct->postaff, $fmt, $prof); |
|
| 28 | + |
|
| 29 | + $type = $struct->sql_serveur ? "$struct->sql_serveur:" : ''; |
|
| 30 | + $type .= ($struct->type_requete ?: $struct->type_table_optionnelle); |
|
| 31 | + |
|
| 32 | + if ($struct->jointures_explicites) { |
|
| 33 | + $type .= ' ' . $struct->jointures_explicites; |
|
| 34 | + } |
|
| 35 | + if ($struct->table_optionnelle) { |
|
| 36 | + $type .= '?'; |
|
| 37 | + } |
|
| 38 | + // Revoir le cas de la boucle recursive |
|
| 39 | + |
|
| 40 | + $crit = $struct->param; |
|
| 41 | + if ($crit && !is_array($crit[0])) { |
|
| 42 | + $type = strtolower($type) . array_shift($crit); |
|
| 43 | + } |
|
| 44 | + $crit = decompiler_criteres($struct, $fmt, $prof); |
|
| 45 | + |
|
| 46 | + $f = 'format_boucle_' . $fmt; |
|
| 47 | + |
|
| 48 | + return $f($preaff, $avant, $nom, $type, $crit, $milieu, $apres, $altern, $postaff, $prof); |
|
| 49 | 49 | } |
| 50 | 50 | |
| 51 | 51 | function decompiler_include($struct, $fmt = '', $prof = 0) { |
| 52 | - $res = []; |
|
| 53 | - foreach ($struct->param ?: [] as $couple) { |
|
| 54 | - array_shift($couple); |
|
| 55 | - foreach ($couple as $v) { |
|
| 56 | - $res[] = decompiler_($v, $fmt, $prof); |
|
| 57 | - } |
|
| 58 | - } |
|
| 59 | - $file = is_string($struct->texte) ? $struct->texte : |
|
| 60 | - decompiler_($struct->texte, $fmt, $prof); |
|
| 61 | - $f = 'format_inclure_' . $fmt; |
|
| 62 | - |
|
| 63 | - return $f($file, $res, $prof); |
|
| 52 | + $res = []; |
|
| 53 | + foreach ($struct->param ?: [] as $couple) { |
|
| 54 | + array_shift($couple); |
|
| 55 | + foreach ($couple as $v) { |
|
| 56 | + $res[] = decompiler_($v, $fmt, $prof); |
|
| 57 | + } |
|
| 58 | + } |
|
| 59 | + $file = is_string($struct->texte) ? $struct->texte : |
|
| 60 | + decompiler_($struct->texte, $fmt, $prof); |
|
| 61 | + $f = 'format_inclure_' . $fmt; |
|
| 62 | + |
|
| 63 | + return $f($file, $res, $prof); |
|
| 64 | 64 | } |
| 65 | 65 | |
| 66 | 66 | function decompiler_texte($struct, $fmt = '', $prof = 0) { |
| 67 | - $f = 'format_texte_' . $fmt; |
|
| 67 | + $f = 'format_texte_' . $fmt; |
|
| 68 | 68 | |
| 69 | - return strlen((string) $struct->texte) ? $f($struct->texte, $prof) : ''; |
|
| 69 | + return strlen((string) $struct->texte) ? $f($struct->texte, $prof) : ''; |
|
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | function decompiler_polyglotte($struct, $fmt = '', $prof = 0) { |
| 73 | - $f = 'format_polyglotte_' . $fmt; |
|
| 73 | + $f = 'format_polyglotte_' . $fmt; |
|
| 74 | 74 | |
| 75 | - return $f($struct->traductions, $prof); |
|
| 75 | + return $f($struct->traductions, $prof); |
|
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | function decompiler_idiome($struct, $fmt = '', $prof = 0) { |
| 79 | - $args = []; |
|
| 80 | - foreach ($struct->arg as $k => $v) { |
|
| 81 | - $args[$k] = public_decompiler($v, $fmt, $prof); |
|
| 82 | - } |
|
| 79 | + $args = []; |
|
| 80 | + foreach ($struct->arg as $k => $v) { |
|
| 81 | + $args[$k] = public_decompiler($v, $fmt, $prof); |
|
| 82 | + } |
|
| 83 | 83 | |
| 84 | - $filtres = decompiler_liste($struct->param, $fmt, $prof); |
|
| 84 | + $filtres = decompiler_liste($struct->param, $fmt, $prof); |
|
| 85 | 85 | |
| 86 | - $f = 'format_idiome_' . $fmt; |
|
| 86 | + $f = 'format_idiome_' . $fmt; |
|
| 87 | 87 | |
| 88 | - return $f($struct->nom_champ, $struct->module, $args, $filtres, $prof); |
|
| 88 | + return $f($struct->nom_champ, $struct->module, $args, $filtres, $prof); |
|
| 89 | 89 | } |
| 90 | 90 | |
| 91 | 91 | function decompiler_champ($struct, $fmt = '', $prof = 0) { |
| 92 | - $avant = decompiler_($struct->avant, $fmt, $prof); |
|
| 93 | - $apres = decompiler_($struct->apres, $fmt, $prof); |
|
| 94 | - $args = $filtres = ''; |
|
| 95 | - if ($p = $struct->param) { |
|
| 96 | - if ($p[0][0] === '') { |
|
| 97 | - $args = decompiler_liste([array_shift($p)], $fmt, $prof); |
|
| 98 | - } |
|
| 99 | - $filtres = decompiler_liste($p, $fmt, $prof); |
|
| 100 | - } |
|
| 101 | - $f = 'format_champ_' . $fmt; |
|
| 102 | - |
|
| 103 | - return $f($struct->nom_champ, $struct->nom_boucle, $struct->etoile, $avant, $apres, $args, $filtres, $prof); |
|
| 92 | + $avant = decompiler_($struct->avant, $fmt, $prof); |
|
| 93 | + $apres = decompiler_($struct->apres, $fmt, $prof); |
|
| 94 | + $args = $filtres = ''; |
|
| 95 | + if ($p = $struct->param) { |
|
| 96 | + if ($p[0][0] === '') { |
|
| 97 | + $args = decompiler_liste([array_shift($p)], $fmt, $prof); |
|
| 98 | + } |
|
| 99 | + $filtres = decompiler_liste($p, $fmt, $prof); |
|
| 100 | + } |
|
| 101 | + $f = 'format_champ_' . $fmt; |
|
| 102 | + |
|
| 103 | + return $f($struct->nom_champ, $struct->nom_boucle, $struct->etoile, $avant, $apres, $args, $filtres, $prof); |
|
| 104 | 104 | } |
| 105 | 105 | |
| 106 | 106 | function decompiler_liste($sources, $fmt = '', $prof = 0) { |
| 107 | - if (!is_array($sources)) { |
|
| 108 | - return ''; |
|
| 109 | - } |
|
| 110 | - $f = 'format_liste_' . $fmt; |
|
| 111 | - $res = ''; |
|
| 112 | - foreach ($sources as $arg) { |
|
| 113 | - if (!is_array($arg)) { |
|
| 114 | - continue; // ne devrait pas arriver. |
|
| 115 | - } else { |
|
| 116 | - $r = array_shift($arg); |
|
| 117 | - } |
|
| 118 | - $args = []; |
|
| 119 | - foreach ($arg as $v) { |
|
| 120 | - // cas des arguments entoures de ' ou " |
|
| 121 | - if ( |
|
| 122 | - (is_countable($v) ? count($v) : 0) == 1 |
|
| 123 | - && $v[0]->type == 'texte' |
|
| 124 | - && strlen((string) $v[0]->apres) == 1 |
|
| 125 | - && $v[0]->apres == $v[0]->avant |
|
| 126 | - ) { |
|
| 127 | - $args[] = $v[0]->avant . $v[0]->texte . $v[0]->apres; |
|
| 128 | - } else { |
|
| 129 | - $args[] = decompiler_($v, $fmt, 0 - $prof); |
|
| 130 | - } |
|
| 131 | - } |
|
| 132 | - if ($r !== '' || $args) { |
|
| 133 | - $res .= $f($r, $args, $prof); |
|
| 134 | - } |
|
| 135 | - } |
|
| 136 | - |
|
| 137 | - return $res; |
|
| 107 | + if (!is_array($sources)) { |
|
| 108 | + return ''; |
|
| 109 | + } |
|
| 110 | + $f = 'format_liste_' . $fmt; |
|
| 111 | + $res = ''; |
|
| 112 | + foreach ($sources as $arg) { |
|
| 113 | + if (!is_array($arg)) { |
|
| 114 | + continue; // ne devrait pas arriver. |
|
| 115 | + } else { |
|
| 116 | + $r = array_shift($arg); |
|
| 117 | + } |
|
| 118 | + $args = []; |
|
| 119 | + foreach ($arg as $v) { |
|
| 120 | + // cas des arguments entoures de ' ou " |
|
| 121 | + if ( |
|
| 122 | + (is_countable($v) ? count($v) : 0) == 1 |
|
| 123 | + && $v[0]->type == 'texte' |
|
| 124 | + && strlen((string) $v[0]->apres) == 1 |
|
| 125 | + && $v[0]->apres == $v[0]->avant |
|
| 126 | + ) { |
|
| 127 | + $args[] = $v[0]->avant . $v[0]->texte . $v[0]->apres; |
|
| 128 | + } else { |
|
| 129 | + $args[] = decompiler_($v, $fmt, 0 - $prof); |
|
| 130 | + } |
|
| 131 | + } |
|
| 132 | + if ($r !== '' || $args) { |
|
| 133 | + $res .= $f($r, $args, $prof); |
|
| 134 | + } |
|
| 135 | + } |
|
| 136 | + |
|
| 137 | + return $res; |
|
| 138 | 138 | } |
| 139 | 139 | |
| 140 | 140 | // Decompilation des criteres: on triche et on deroge: |
@@ -142,93 +142,93 @@ discard block |
||
| 142 | 142 | // - le champ apres signale le critere {"separateur"} ou {'separateur'} |
| 143 | 143 | // - les champs sont implicitement etendus (crochets implicites mais interdits) |
| 144 | 144 | function decompiler_criteres($boucle, $fmt = '', $prof = 0) { |
| 145 | - $sources = $boucle->param; |
|
| 146 | - if (!is_array($sources)) { |
|
| 147 | - return ''; |
|
| 148 | - } |
|
| 149 | - $res = ''; |
|
| 150 | - $f = 'format_critere_' . $fmt; |
|
| 151 | - foreach ($sources as $crit) { |
|
| 152 | - if (!is_array($crit)) { |
|
| 153 | - continue; |
|
| 154 | - } // boucle recursive |
|
| 155 | - array_shift($crit); |
|
| 156 | - $args = []; |
|
| 157 | - foreach ($crit as $i => $v) { |
|
| 158 | - if ( |
|
| 159 | - (is_countable($v) ? count($v) : 0) == 1 |
|
| 160 | - && $v[0]->type == 'texte' |
|
| 161 | - && $v[0]->apres |
|
| 162 | - ) { |
|
| 163 | - $args[] = [['texte', ($v[0]->apres . $v[0]->texte . $v[0]->apres)]]; |
|
| 164 | - } else { |
|
| 165 | - $res2 = []; |
|
| 166 | - foreach ($v as $k => $p) { |
|
| 167 | - if ( |
|
| 168 | - isset($p->type) |
|
| 169 | - && function_exists($d = 'decompiler_' . $p->type) |
|
| 170 | - ) { |
|
| 171 | - $r = $d($p, $fmt, (0 - $prof)); |
|
| 172 | - $res2[] = [$p->type, $r]; |
|
| 173 | - } else { |
|
| 174 | - spip_logger()->info("critere $i / $k mal forme"); |
|
| 175 | - } |
|
| 176 | - } |
|
| 177 | - $args[] = $res2; |
|
| 178 | - } |
|
| 179 | - } |
|
| 180 | - $res .= $f($args); |
|
| 181 | - } |
|
| 182 | - |
|
| 183 | - return $res; |
|
| 145 | + $sources = $boucle->param; |
|
| 146 | + if (!is_array($sources)) { |
|
| 147 | + return ''; |
|
| 148 | + } |
|
| 149 | + $res = ''; |
|
| 150 | + $f = 'format_critere_' . $fmt; |
|
| 151 | + foreach ($sources as $crit) { |
|
| 152 | + if (!is_array($crit)) { |
|
| 153 | + continue; |
|
| 154 | + } // boucle recursive |
|
| 155 | + array_shift($crit); |
|
| 156 | + $args = []; |
|
| 157 | + foreach ($crit as $i => $v) { |
|
| 158 | + if ( |
|
| 159 | + (is_countable($v) ? count($v) : 0) == 1 |
|
| 160 | + && $v[0]->type == 'texte' |
|
| 161 | + && $v[0]->apres |
|
| 162 | + ) { |
|
| 163 | + $args[] = [['texte', ($v[0]->apres . $v[0]->texte . $v[0]->apres)]]; |
|
| 164 | + } else { |
|
| 165 | + $res2 = []; |
|
| 166 | + foreach ($v as $k => $p) { |
|
| 167 | + if ( |
|
| 168 | + isset($p->type) |
|
| 169 | + && function_exists($d = 'decompiler_' . $p->type) |
|
| 170 | + ) { |
|
| 171 | + $r = $d($p, $fmt, (0 - $prof)); |
|
| 172 | + $res2[] = [$p->type, $r]; |
|
| 173 | + } else { |
|
| 174 | + spip_logger()->info("critere $i / $k mal forme"); |
|
| 175 | + } |
|
| 176 | + } |
|
| 177 | + $args[] = $res2; |
|
| 178 | + } |
|
| 179 | + } |
|
| 180 | + $res .= $f($args); |
|
| 181 | + } |
|
| 182 | + |
|
| 183 | + return $res; |
|
| 184 | 184 | } |
| 185 | 185 | |
| 186 | 186 | |
| 187 | 187 | function decompiler_($liste, $fmt = '', $prof = 0) { |
| 188 | - if (!is_array($liste)) { |
|
| 189 | - return ''; |
|
| 190 | - } |
|
| 191 | - $prof2 = ($prof < 0) ? ($prof - 1) : ($prof + 1); |
|
| 192 | - $contenu = []; |
|
| 193 | - foreach ($liste as $k => $p) { |
|
| 194 | - if (!isset($p->type)) { |
|
| 195 | - continue; |
|
| 196 | - } #?????? |
|
| 197 | - $d = 'decompiler_' . $p->type; |
|
| 198 | - $next = $liste[$k + 1] ?? false; |
|
| 199 | - // Forcer le champ etendu si son source (pas les reecritures) |
|
| 200 | - // contenait des args et s'il est suivi d'espaces, |
|
| 201 | - // le champ simple les eliminant est un bug helas perenne. |
|
| 202 | - |
|
| 203 | - if ( |
|
| 204 | - $next |
|
| 205 | - && $next->type == 'texte' |
|
| 206 | - && $p->type == 'champ' |
|
| 207 | - && !$p->apres |
|
| 208 | - && !$p->avant |
|
| 209 | - && $p->fonctions |
|
| 210 | - ) { |
|
| 211 | - $n = strlen((string) $next->texte) - strlen(ltrim((string) $next->texte)); |
|
| 212 | - if ($n) { |
|
| 213 | - $champ = new Texte(); |
|
| 214 | - $champ->texte = substr((string) $next->texte, 0, $n); |
|
| 215 | - $champ->ligne = $p->ligne; |
|
| 216 | - $p->apres = [$champ]; |
|
| 217 | - $next->texte = substr((string) $next->texte, $n); |
|
| 218 | - } |
|
| 219 | - } |
|
| 220 | - $contenu[] = [$d($p, $fmt, $prof2), $p->type]; |
|
| 221 | - } |
|
| 222 | - $f = 'format_suite_' . $fmt; |
|
| 223 | - |
|
| 224 | - return $f($contenu); |
|
| 188 | + if (!is_array($liste)) { |
|
| 189 | + return ''; |
|
| 190 | + } |
|
| 191 | + $prof2 = ($prof < 0) ? ($prof - 1) : ($prof + 1); |
|
| 192 | + $contenu = []; |
|
| 193 | + foreach ($liste as $k => $p) { |
|
| 194 | + if (!isset($p->type)) { |
|
| 195 | + continue; |
|
| 196 | + } #?????? |
|
| 197 | + $d = 'decompiler_' . $p->type; |
|
| 198 | + $next = $liste[$k + 1] ?? false; |
|
| 199 | + // Forcer le champ etendu si son source (pas les reecritures) |
|
| 200 | + // contenait des args et s'il est suivi d'espaces, |
|
| 201 | + // le champ simple les eliminant est un bug helas perenne. |
|
| 202 | + |
|
| 203 | + if ( |
|
| 204 | + $next |
|
| 205 | + && $next->type == 'texte' |
|
| 206 | + && $p->type == 'champ' |
|
| 207 | + && !$p->apres |
|
| 208 | + && !$p->avant |
|
| 209 | + && $p->fonctions |
|
| 210 | + ) { |
|
| 211 | + $n = strlen((string) $next->texte) - strlen(ltrim((string) $next->texte)); |
|
| 212 | + if ($n) { |
|
| 213 | + $champ = new Texte(); |
|
| 214 | + $champ->texte = substr((string) $next->texte, 0, $n); |
|
| 215 | + $champ->ligne = $p->ligne; |
|
| 216 | + $p->apres = [$champ]; |
|
| 217 | + $next->texte = substr((string) $next->texte, $n); |
|
| 218 | + } |
|
| 219 | + } |
|
| 220 | + $contenu[] = [$d($p, $fmt, $prof2), $p->type]; |
|
| 221 | + } |
|
| 222 | + $f = 'format_suite_' . $fmt; |
|
| 223 | + |
|
| 224 | + return $f($contenu); |
|
| 225 | 225 | } |
| 226 | 226 | |
| 227 | 227 | function public_decompiler($liste, $fmt = '', $prof = 0, $quoi = '') { |
| 228 | - if (!include_spip('public/format_' . $fmt)) { |
|
| 229 | - return "'$fmt'?"; |
|
| 230 | - } |
|
| 231 | - $f = 'decompiler_' . $quoi; |
|
| 228 | + if (!include_spip('public/format_' . $fmt)) { |
|
| 229 | + return "'$fmt'?"; |
|
| 230 | + } |
|
| 231 | + $f = 'decompiler_' . $quoi; |
|
| 232 | 232 | |
| 233 | - return $f($liste, $fmt, $prof); |
|
| 233 | + return $f($liste, $fmt, $prof); |
|
| 234 | 234 | } |
@@ -10,7 +10,7 @@ discard block |
||
| 10 | 10 | \***************************************************************************/ |
| 11 | 11 | |
| 12 | 12 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 13 | - return; |
|
| 13 | + return; |
|
| 14 | 14 | } |
| 15 | 15 | |
| 16 | 16 | /** |
@@ -28,50 +28,50 @@ discard block |
||
| 28 | 28 | * @return void |
| 29 | 29 | */ |
| 30 | 30 | |
| 31 | - /** @var bool Évaluation réussie ? */ |
|
| 31 | + /** @var bool Évaluation réussie ? */ |
|
| 32 | 32 | $res = true; |
| 33 | 33 | |
| 34 | 34 | // Cas d'une page contenant du PHP : |
| 35 | 35 | if (empty($page['process_ins']) || $page['process_ins'] != 'html') { |
| 36 | - include_spip('inc/lang'); |
|
| 36 | + include_spip('inc/lang'); |
|
| 37 | 37 | |
| 38 | - // restaurer l'etat des notes avant calcul |
|
| 39 | - if ( |
|
| 40 | - isset($page['notes']) |
|
| 41 | - && $page['notes'] |
|
| 42 | - && ($notes = charger_fonction('notes', 'inc', true)) |
|
| 43 | - ) { |
|
| 44 | - $notes($page['notes'], 'restaurer_etat'); |
|
| 45 | - } |
|
| 46 | - ob_start(); |
|
| 47 | - if (str_contains((string) $page['texte'], '?xml')) { |
|
| 48 | - $page['texte'] = str_replace('<?xml', "<\1?xml", (string) $page['texte']); |
|
| 49 | - } |
|
| 38 | + // restaurer l'etat des notes avant calcul |
|
| 39 | + if ( |
|
| 40 | + isset($page['notes']) |
|
| 41 | + && $page['notes'] |
|
| 42 | + && ($notes = charger_fonction('notes', 'inc', true)) |
|
| 43 | + ) { |
|
| 44 | + $notes($page['notes'], 'restaurer_etat'); |
|
| 45 | + } |
|
| 46 | + ob_start(); |
|
| 47 | + if (str_contains((string) $page['texte'], '?xml')) { |
|
| 48 | + $page['texte'] = str_replace('<?xml', "<\1?xml", (string) $page['texte']); |
|
| 49 | + } |
|
| 50 | 50 | |
| 51 | - try { |
|
| 52 | - $res = eval('?' . '>' . $page['texte']); |
|
| 53 | - $page['texte'] = ob_get_contents(); |
|
| 54 | - } catch (\Throwable $e) { |
|
| 55 | - $code = $page['texte']; |
|
| 56 | - $GLOBALS['numero_ligne_php'] = 1; |
|
| 57 | - if (!function_exists('numerote_ligne_php')) { |
|
| 58 | - function numerote_ligne_php($match) { |
|
| 59 | - $GLOBALS['numero_ligne_php']++; |
|
| 60 | - return "\n/*" . str_pad((string) $GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT) . '*/'; |
|
| 61 | - } |
|
| 62 | - } |
|
| 63 | - $code = '/*001*/' . preg_replace_callback(",\n,", 'numerote_ligne_php', (string) $code); |
|
| 64 | - $code = trim(highlight_string($code, true)); |
|
| 65 | - erreur_squelette('L' . $e->getLine() . ': ' . $e->getMessage() . '<br />' . $code, [$page['source'],'',$e->getFile(),'',$GLOBALS['spip_lang']]); |
|
| 66 | - $page['texte'] = '<!-- Erreur -->'; |
|
| 67 | - } |
|
| 68 | - ob_end_clean(); |
|
| 51 | + try { |
|
| 52 | + $res = eval('?' . '>' . $page['texte']); |
|
| 53 | + $page['texte'] = ob_get_contents(); |
|
| 54 | + } catch (\Throwable $e) { |
|
| 55 | + $code = $page['texte']; |
|
| 56 | + $GLOBALS['numero_ligne_php'] = 1; |
|
| 57 | + if (!function_exists('numerote_ligne_php')) { |
|
| 58 | + function numerote_ligne_php($match) { |
|
| 59 | + $GLOBALS['numero_ligne_php']++; |
|
| 60 | + return "\n/*" . str_pad((string) $GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT) . '*/'; |
|
| 61 | + } |
|
| 62 | + } |
|
| 63 | + $code = '/*001*/' . preg_replace_callback(",\n,", 'numerote_ligne_php', (string) $code); |
|
| 64 | + $code = trim(highlight_string($code, true)); |
|
| 65 | + erreur_squelette('L' . $e->getLine() . ': ' . $e->getMessage() . '<br />' . $code, [$page['source'],'',$e->getFile(),'',$GLOBALS['spip_lang']]); |
|
| 66 | + $page['texte'] = '<!-- Erreur -->'; |
|
| 67 | + } |
|
| 68 | + ob_end_clean(); |
|
| 69 | 69 | |
| 70 | - $page['process_ins'] = 'html'; |
|
| 70 | + $page['process_ins'] = 'html'; |
|
| 71 | 71 | |
| 72 | - if (str_contains((string) $page['texte'], '?xml')) { |
|
| 73 | - $page['texte'] = str_replace("<\1?xml", '<?xml', (string) $page['texte']); |
|
| 74 | - } |
|
| 72 | + if (str_contains((string) $page['texte'], '?xml')) { |
|
| 73 | + $page['texte'] = str_replace("<\1?xml", '<?xml', (string) $page['texte']); |
|
| 74 | + } |
|
| 75 | 75 | } |
| 76 | 76 | |
| 77 | 77 | // le résultat de calcul d'un squelette est toujours de type string |
@@ -49,7 +49,7 @@ discard block |
||
| 49 | 49 | } |
| 50 | 50 | |
| 51 | 51 | try { |
| 52 | - $res = eval('?' . '>' . $page['texte']); |
|
| 52 | + $res = eval('?'.'>'.$page['texte']); |
|
| 53 | 53 | $page['texte'] = ob_get_contents(); |
| 54 | 54 | } catch (\Throwable $e) { |
| 55 | 55 | $code = $page['texte']; |
@@ -57,12 +57,12 @@ discard block |
||
| 57 | 57 | if (!function_exists('numerote_ligne_php')) { |
| 58 | 58 | function numerote_ligne_php($match) { |
| 59 | 59 | $GLOBALS['numero_ligne_php']++; |
| 60 | - return "\n/*" . str_pad((string) $GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT) . '*/'; |
|
| 60 | + return "\n/*".str_pad((string) $GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT).'*/'; |
|
| 61 | 61 | } |
| 62 | 62 | } |
| 63 | - $code = '/*001*/' . preg_replace_callback(",\n,", 'numerote_ligne_php', (string) $code); |
|
| 63 | + $code = '/*001*/'.preg_replace_callback(",\n,", 'numerote_ligne_php', (string) $code); |
|
| 64 | 64 | $code = trim(highlight_string($code, true)); |
| 65 | - erreur_squelette('L' . $e->getLine() . ': ' . $e->getMessage() . '<br />' . $code, [$page['source'],'',$e->getFile(),'',$GLOBALS['spip_lang']]); |
|
| 65 | + erreur_squelette('L'.$e->getLine().': '.$e->getMessage().'<br />'.$code, [$page['source'], '', $e->getFile(), '', $GLOBALS['spip_lang']]); |
|
| 66 | 66 | $page['texte'] = '<!-- Erreur -->'; |
| 67 | 67 | } |
| 68 | 68 | ob_end_clean(); |
@@ -27,7 +27,7 @@ discard block |
||
| 27 | 27 | **/ |
| 28 | 28 | |
| 29 | 29 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 30 | - return; |
|
| 30 | + return; |
|
| 31 | 31 | } |
| 32 | 32 | |
| 33 | 33 | /** Début de la partie principale d'une boucle */ |
@@ -74,54 +74,54 @@ discard block |
||
| 74 | 74 | */ |
| 75 | 75 | function phraser_inclure(string $texte, int $ligne, array $result): array { |
| 76 | 76 | |
| 77 | - while ( |
|
| 78 | - (($p = strpos($texte, '<INC')) !== false) |
|
| 79 | - && preg_match(BALISE_INCLURE, $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 80 | - ) { |
|
| 81 | - $poss = array_column($match, 1); |
|
| 82 | - $match = array_column($match, 0); |
|
| 83 | - $match = array_pad($match, 3, null); |
|
| 84 | - |
|
| 85 | - $p = $poss[0]; |
|
| 86 | - $debut = substr($texte, 0, $p); |
|
| 87 | - if ($p) { |
|
| 88 | - $result = phraser_idiomes($debut, $ligne, $result); |
|
| 89 | - } |
|
| 90 | - $ligne += public_compte_ligne($debut); |
|
| 91 | - |
|
| 92 | - $champ = new Inclure(); |
|
| 93 | - $champ->ligne = $ligne; |
|
| 94 | - $ligne += public_compte_ligne((string) $match[0]); |
|
| 95 | - $fichier = $match[2]; |
|
| 96 | - $champ->texte = $fichier; |
|
| 97 | - |
|
| 98 | - $texte = substr($texte, $p + strlen((string) $match[0])); |
|
| 99 | - |
|
| 100 | - // on assimile {var=val} a une liste de un argument sans fonction |
|
| 101 | - $pos_apres = 0; |
|
| 102 | - phraser_args($texte, '/>', '', $result, $champ, $pos_apres); |
|
| 103 | - if (!$champ->texte || (is_countable($champ->param) ? count($champ->param) : 0) > 1) { |
|
| 104 | - if (!function_exists('normaliser_inclure')) { |
|
| 105 | - include_spip('public/normaliser'); |
|
| 106 | - } |
|
| 107 | - normaliser_inclure($champ); |
|
| 108 | - } |
|
| 109 | - $pos_fin = strpos($texte, '>', $pos_apres) + 1; |
|
| 110 | - if ( |
|
| 111 | - (strpos($texte, '</INCLUDE>', $pos_fin) === $pos_fin) |
|
| 112 | - || (strpos($texte, '</INCLURE>', $pos_fin) === $pos_fin) |
|
| 113 | - ) { |
|
| 114 | - $pos_fin += 10; |
|
| 115 | - } |
|
| 116 | - $texte = substr($texte, $pos_fin); |
|
| 117 | - $result[] = $champ; |
|
| 118 | - } |
|
| 119 | - |
|
| 120 | - if ($texte != '') { |
|
| 121 | - $result = phraser_idiomes($texte, $ligne, $result); |
|
| 122 | - } |
|
| 123 | - |
|
| 124 | - return $result; |
|
| 77 | + while ( |
|
| 78 | + (($p = strpos($texte, '<INC')) !== false) |
|
| 79 | + && preg_match(BALISE_INCLURE, $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 80 | + ) { |
|
| 81 | + $poss = array_column($match, 1); |
|
| 82 | + $match = array_column($match, 0); |
|
| 83 | + $match = array_pad($match, 3, null); |
|
| 84 | + |
|
| 85 | + $p = $poss[0]; |
|
| 86 | + $debut = substr($texte, 0, $p); |
|
| 87 | + if ($p) { |
|
| 88 | + $result = phraser_idiomes($debut, $ligne, $result); |
|
| 89 | + } |
|
| 90 | + $ligne += public_compte_ligne($debut); |
|
| 91 | + |
|
| 92 | + $champ = new Inclure(); |
|
| 93 | + $champ->ligne = $ligne; |
|
| 94 | + $ligne += public_compte_ligne((string) $match[0]); |
|
| 95 | + $fichier = $match[2]; |
|
| 96 | + $champ->texte = $fichier; |
|
| 97 | + |
|
| 98 | + $texte = substr($texte, $p + strlen((string) $match[0])); |
|
| 99 | + |
|
| 100 | + // on assimile {var=val} a une liste de un argument sans fonction |
|
| 101 | + $pos_apres = 0; |
|
| 102 | + phraser_args($texte, '/>', '', $result, $champ, $pos_apres); |
|
| 103 | + if (!$champ->texte || (is_countable($champ->param) ? count($champ->param) : 0) > 1) { |
|
| 104 | + if (!function_exists('normaliser_inclure')) { |
|
| 105 | + include_spip('public/normaliser'); |
|
| 106 | + } |
|
| 107 | + normaliser_inclure($champ); |
|
| 108 | + } |
|
| 109 | + $pos_fin = strpos($texte, '>', $pos_apres) + 1; |
|
| 110 | + if ( |
|
| 111 | + (strpos($texte, '</INCLUDE>', $pos_fin) === $pos_fin) |
|
| 112 | + || (strpos($texte, '</INCLURE>', $pos_fin) === $pos_fin) |
|
| 113 | + ) { |
|
| 114 | + $pos_fin += 10; |
|
| 115 | + } |
|
| 116 | + $texte = substr($texte, $pos_fin); |
|
| 117 | + $result[] = $champ; |
|
| 118 | + } |
|
| 119 | + |
|
| 120 | + if ($texte != '') { |
|
| 121 | + $result = phraser_idiomes($texte, $ligne, $result); |
|
| 122 | + } |
|
| 123 | + |
|
| 124 | + return $result; |
|
| 125 | 125 | } |
| 126 | 126 | |
| 127 | 127 | /** |
@@ -133,38 +133,38 @@ discard block |
||
| 133 | 133 | */ |
| 134 | 134 | function phraser_polyglotte(string $texte, int $ligne, array $result): array { |
| 135 | 135 | |
| 136 | - $collecteur = new Spip\Texte\Collecteur\Multis(); |
|
| 137 | - $multis = $collecteur->collecter($texte); |
|
| 138 | - |
|
| 139 | - if (!empty($multis)) { |
|
| 140 | - $pos_prev = 0; |
|
| 141 | - foreach ($multis as $multi) { |
|
| 142 | - if ($multi['pos'] > $pos_prev) { |
|
| 143 | - $champ = new Texte(); |
|
| 144 | - $champ->texte = substr($texte, $pos_prev, $multi['pos'] - $pos_prev); |
|
| 145 | - $champ->ligne = $ligne; |
|
| 146 | - $result[] = $champ; |
|
| 147 | - $ligne += public_compte_ligne($champ->texte); |
|
| 148 | - } |
|
| 149 | - |
|
| 150 | - $champ = new Polyglotte(); |
|
| 151 | - $champ->ligne = $ligne; |
|
| 152 | - $champ->traductions = $multi['trads']; |
|
| 153 | - $result[] = $champ; |
|
| 154 | - $ligne += public_compte_ligne($multi['raw']); |
|
| 155 | - $pos_prev = $multi['pos'] + $multi['length']; |
|
| 156 | - } |
|
| 157 | - $texte = substr($texte, $pos_prev); |
|
| 158 | - } |
|
| 159 | - |
|
| 160 | - if ($texte !== '') { |
|
| 161 | - $champ = new Texte(); |
|
| 162 | - $champ->texte = $texte; |
|
| 163 | - $champ->ligne = $ligne; |
|
| 164 | - $result[] = $champ; |
|
| 165 | - } |
|
| 166 | - |
|
| 167 | - return $result; |
|
| 136 | + $collecteur = new Spip\Texte\Collecteur\Multis(); |
|
| 137 | + $multis = $collecteur->collecter($texte); |
|
| 138 | + |
|
| 139 | + if (!empty($multis)) { |
|
| 140 | + $pos_prev = 0; |
|
| 141 | + foreach ($multis as $multi) { |
|
| 142 | + if ($multi['pos'] > $pos_prev) { |
|
| 143 | + $champ = new Texte(); |
|
| 144 | + $champ->texte = substr($texte, $pos_prev, $multi['pos'] - $pos_prev); |
|
| 145 | + $champ->ligne = $ligne; |
|
| 146 | + $result[] = $champ; |
|
| 147 | + $ligne += public_compte_ligne($champ->texte); |
|
| 148 | + } |
|
| 149 | + |
|
| 150 | + $champ = new Polyglotte(); |
|
| 151 | + $champ->ligne = $ligne; |
|
| 152 | + $champ->traductions = $multi['trads']; |
|
| 153 | + $result[] = $champ; |
|
| 154 | + $ligne += public_compte_ligne($multi['raw']); |
|
| 155 | + $pos_prev = $multi['pos'] + $multi['length']; |
|
| 156 | + } |
|
| 157 | + $texte = substr($texte, $pos_prev); |
|
| 158 | + } |
|
| 159 | + |
|
| 160 | + if ($texte !== '') { |
|
| 161 | + $champ = new Texte(); |
|
| 162 | + $champ->texte = $texte; |
|
| 163 | + $champ->ligne = $ligne; |
|
| 164 | + $result[] = $champ; |
|
| 165 | + } |
|
| 166 | + |
|
| 167 | + return $result; |
|
| 168 | 168 | } |
| 169 | 169 | |
| 170 | 170 | |
@@ -187,64 +187,64 @@ discard block |
||
| 187 | 187 | **/ |
| 188 | 188 | function phraser_idiomes(string $texte, int $ligne, array $result): array { |
| 189 | 189 | |
| 190 | - while ( |
|
| 191 | - (($p = strpos($texte, '<:')) !== false) |
|
| 192 | - && preg_match(BALISE_IDIOMES, $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 193 | - ) { |
|
| 194 | - $poss = array_column($match, 1); |
|
| 195 | - $match = array_column($match, 0); |
|
| 196 | - $match = array_pad($match, 8, null); |
|
| 197 | - $p = $poss[0]; |
|
| 198 | - |
|
| 199 | - $idiome = (string) $match[0]; |
|
| 200 | - // faux idiome ? |
|
| 201 | - if (!$match[3] && (empty($match[5]) || $match[5][0] !== '=')) { |
|
| 202 | - $debut = substr($texte, 0, $p + strlen($idiome)); |
|
| 203 | - $result = phraser_champs($debut, $ligne, $result); |
|
| 204 | - $ligne += public_compte_ligne($debut); |
|
| 205 | - continue; |
|
| 206 | - } |
|
| 207 | - |
|
| 208 | - $debut = substr($texte, 0, $p); |
|
| 209 | - $result = phraser_champs($debut, $ligne, $result); |
|
| 210 | - $ligne += public_compte_ligne($debut); |
|
| 211 | - |
|
| 212 | - $texte = substr($texte, $p + strlen($idiome)); |
|
| 213 | - |
|
| 214 | - $champ = new Idiome(); |
|
| 215 | - $champ->ligne = $ligne; |
|
| 216 | - $ligne += public_compte_ligne($idiome); |
|
| 217 | - // Stocker les arguments de la balise de traduction |
|
| 218 | - $args = []; |
|
| 219 | - $largs = (string) $match[5]; |
|
| 220 | - while ( |
|
| 221 | - str_contains($largs, '=') |
|
| 222 | - && preg_match(BALISE_IDIOMES_ARGS, $largs, $r) |
|
| 223 | - ) { |
|
| 224 | - $args[$r[1]] = phraser_champs($r[2], 0, []); |
|
| 225 | - $largs = substr($largs, strlen($r[0])); |
|
| 226 | - } |
|
| 227 | - $champ->arg = $args; |
|
| 228 | - |
|
| 229 | - // TODO : supprimer ce strtolower cf https://git.spip.net/spip/spip/issues/2536 |
|
| 230 | - $champ->nom_champ = strtolower((string) $match[3]); |
|
| 231 | - $champ->module = $match[2]; |
|
| 232 | - |
|
| 233 | - // pas d'imbrication pour les filtres sur langue |
|
| 234 | - $champ->apres = ''; |
|
| 235 | - if (!is_null($match[7])) { |
|
| 236 | - $pos_apres = 0; |
|
| 237 | - phraser_args($match[7], ':', '', [], $champ, $pos_apres); |
|
| 238 | - $champ->apres = substr($match[7], $pos_apres); |
|
| 239 | - } |
|
| 240 | - $result[] = $champ; |
|
| 241 | - } |
|
| 242 | - |
|
| 243 | - if ($texte !== '') { |
|
| 244 | - $result = phraser_champs($texte, $ligne, $result); |
|
| 245 | - } |
|
| 246 | - |
|
| 247 | - return $result; |
|
| 190 | + while ( |
|
| 191 | + (($p = strpos($texte, '<:')) !== false) |
|
| 192 | + && preg_match(BALISE_IDIOMES, $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 193 | + ) { |
|
| 194 | + $poss = array_column($match, 1); |
|
| 195 | + $match = array_column($match, 0); |
|
| 196 | + $match = array_pad($match, 8, null); |
|
| 197 | + $p = $poss[0]; |
|
| 198 | + |
|
| 199 | + $idiome = (string) $match[0]; |
|
| 200 | + // faux idiome ? |
|
| 201 | + if (!$match[3] && (empty($match[5]) || $match[5][0] !== '=')) { |
|
| 202 | + $debut = substr($texte, 0, $p + strlen($idiome)); |
|
| 203 | + $result = phraser_champs($debut, $ligne, $result); |
|
| 204 | + $ligne += public_compte_ligne($debut); |
|
| 205 | + continue; |
|
| 206 | + } |
|
| 207 | + |
|
| 208 | + $debut = substr($texte, 0, $p); |
|
| 209 | + $result = phraser_champs($debut, $ligne, $result); |
|
| 210 | + $ligne += public_compte_ligne($debut); |
|
| 211 | + |
|
| 212 | + $texte = substr($texte, $p + strlen($idiome)); |
|
| 213 | + |
|
| 214 | + $champ = new Idiome(); |
|
| 215 | + $champ->ligne = $ligne; |
|
| 216 | + $ligne += public_compte_ligne($idiome); |
|
| 217 | + // Stocker les arguments de la balise de traduction |
|
| 218 | + $args = []; |
|
| 219 | + $largs = (string) $match[5]; |
|
| 220 | + while ( |
|
| 221 | + str_contains($largs, '=') |
|
| 222 | + && preg_match(BALISE_IDIOMES_ARGS, $largs, $r) |
|
| 223 | + ) { |
|
| 224 | + $args[$r[1]] = phraser_champs($r[2], 0, []); |
|
| 225 | + $largs = substr($largs, strlen($r[0])); |
|
| 226 | + } |
|
| 227 | + $champ->arg = $args; |
|
| 228 | + |
|
| 229 | + // TODO : supprimer ce strtolower cf https://git.spip.net/spip/spip/issues/2536 |
|
| 230 | + $champ->nom_champ = strtolower((string) $match[3]); |
|
| 231 | + $champ->module = $match[2]; |
|
| 232 | + |
|
| 233 | + // pas d'imbrication pour les filtres sur langue |
|
| 234 | + $champ->apres = ''; |
|
| 235 | + if (!is_null($match[7])) { |
|
| 236 | + $pos_apres = 0; |
|
| 237 | + phraser_args($match[7], ':', '', [], $champ, $pos_apres); |
|
| 238 | + $champ->apres = substr($match[7], $pos_apres); |
|
| 239 | + } |
|
| 240 | + $result[] = $champ; |
|
| 241 | + } |
|
| 242 | + |
|
| 243 | + if ($texte !== '') { |
|
| 244 | + $result = phraser_champs($texte, $ligne, $result); |
|
| 245 | + } |
|
| 246 | + |
|
| 247 | + return $result; |
|
| 248 | 248 | } |
| 249 | 249 | |
| 250 | 250 | /** |
@@ -263,53 +263,53 @@ discard block |
||
| 263 | 263 | **/ |
| 264 | 264 | function phraser_champs(string $texte, int $ligne, array $result): array { |
| 265 | 265 | |
| 266 | - while ( |
|
| 267 | - (($p = strpos($texte, '#')) !== false) |
|
| 268 | - && preg_match('/' . NOM_DE_CHAMP . '/S', $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 269 | - ) { |
|
| 270 | - $poss = array_column($match, 1); |
|
| 271 | - $match = array_column($match, 0); |
|
| 272 | - |
|
| 273 | - $p = $poss[0]; |
|
| 274 | - if ($p) { |
|
| 275 | - $debut = substr($texte, 0, $p); |
|
| 276 | - $result = phraser_polyglotte($debut, $ligne, $result); |
|
| 277 | - $ligne += public_compte_ligne($debut); |
|
| 278 | - } |
|
| 279 | - |
|
| 280 | - $champ = new Champ(); |
|
| 281 | - $champ->ligne = $ligne; |
|
| 282 | - $ligne += public_compte_ligne($match[0]); |
|
| 283 | - $champ->nom_boucle = $match[2]; |
|
| 284 | - $champ->nom_champ = $match[3]; |
|
| 285 | - $champ->etoile = $match[5]; |
|
| 286 | - |
|
| 287 | - // texte après la balise |
|
| 288 | - $suite = substr($texte, $p + strlen($match[0])); |
|
| 289 | - if ($suite && str_starts_with($suite, '{')) { |
|
| 290 | - phraser_arg($suite, '', [], $champ); |
|
| 291 | - // ce ltrim est une ereur de conception |
|
| 292 | - // mais on le conserve par souci de compatibilite |
|
| 293 | - $texte = ltrim((string) $suite); |
|
| 294 | - // Il faudrait le normaliser dans l'arbre de syntaxe abstraite |
|
| 295 | - // pour faire sauter ce cas particulier a la decompilation. |
|
| 296 | - /* Ce qui suit est malheureusement incomplet pour cela: |
|
| 266 | + while ( |
|
| 267 | + (($p = strpos($texte, '#')) !== false) |
|
| 268 | + && preg_match('/' . NOM_DE_CHAMP . '/S', $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 269 | + ) { |
|
| 270 | + $poss = array_column($match, 1); |
|
| 271 | + $match = array_column($match, 0); |
|
| 272 | + |
|
| 273 | + $p = $poss[0]; |
|
| 274 | + if ($p) { |
|
| 275 | + $debut = substr($texte, 0, $p); |
|
| 276 | + $result = phraser_polyglotte($debut, $ligne, $result); |
|
| 277 | + $ligne += public_compte_ligne($debut); |
|
| 278 | + } |
|
| 279 | + |
|
| 280 | + $champ = new Champ(); |
|
| 281 | + $champ->ligne = $ligne; |
|
| 282 | + $ligne += public_compte_ligne($match[0]); |
|
| 283 | + $champ->nom_boucle = $match[2]; |
|
| 284 | + $champ->nom_champ = $match[3]; |
|
| 285 | + $champ->etoile = $match[5]; |
|
| 286 | + |
|
| 287 | + // texte après la balise |
|
| 288 | + $suite = substr($texte, $p + strlen($match[0])); |
|
| 289 | + if ($suite && str_starts_with($suite, '{')) { |
|
| 290 | + phraser_arg($suite, '', [], $champ); |
|
| 291 | + // ce ltrim est une ereur de conception |
|
| 292 | + // mais on le conserve par souci de compatibilite |
|
| 293 | + $texte = ltrim((string) $suite); |
|
| 294 | + // Il faudrait le normaliser dans l'arbre de syntaxe abstraite |
|
| 295 | + // pour faire sauter ce cas particulier a la decompilation. |
|
| 296 | + /* Ce qui suit est malheureusement incomplet pour cela: |
|
| 297 | 297 | if ($n = (strlen($suite) - strlen($texte))) { |
| 298 | 298 | $champ->apres = array(new Texte); |
| 299 | 299 | $champ->apres[0]->texte = substr($suite,0,$n); |
| 300 | 300 | } |
| 301 | 301 | */ |
| 302 | - } else { |
|
| 303 | - $texte = $suite; |
|
| 304 | - } |
|
| 305 | - phraser_vieux($champ); |
|
| 306 | - $result[] = $champ; |
|
| 307 | - } |
|
| 308 | - if ($texte !== '') { |
|
| 309 | - $result = phraser_polyglotte($texte, $ligne, $result); |
|
| 310 | - } |
|
| 311 | - |
|
| 312 | - return $result; |
|
| 302 | + } else { |
|
| 303 | + $texte = $suite; |
|
| 304 | + } |
|
| 305 | + phraser_vieux($champ); |
|
| 306 | + $result[] = $champ; |
|
| 307 | + } |
|
| 308 | + if ($texte !== '') { |
|
| 309 | + $result = phraser_polyglotte($texte, $ligne, $result); |
|
| 310 | + } |
|
| 311 | + |
|
| 312 | + return $result; |
|
| 313 | 313 | } |
| 314 | 314 | |
| 315 | 315 | /** |
@@ -324,17 +324,17 @@ discard block |
||
| 324 | 324 | * @see phraser_champs_interieurs() |
| 325 | 325 | */ |
| 326 | 326 | function phraser_champs_etendus(string $texte, int $ligne, array $result): array { |
| 327 | - if ($texte === '') { |
|
| 328 | - return $result; |
|
| 329 | - } |
|
| 327 | + if ($texte === '') { |
|
| 328 | + return $result; |
|
| 329 | + } |
|
| 330 | 330 | |
| 331 | - $sep = '##'; |
|
| 332 | - while (str_contains($texte, $sep)) { |
|
| 333 | - $sep .= '#'; |
|
| 334 | - } |
|
| 331 | + $sep = '##'; |
|
| 332 | + while (str_contains($texte, $sep)) { |
|
| 333 | + $sep .= '#'; |
|
| 334 | + } |
|
| 335 | 335 | |
| 336 | - $champs = phraser_champs_interieurs($texte, $ligne, $sep); |
|
| 337 | - return array_merge($result, $champs); |
|
| 336 | + $champs = phraser_champs_interieurs($texte, $ligne, $sep); |
|
| 337 | + return array_merge($result, $champs); |
|
| 338 | 338 | } |
| 339 | 339 | |
| 340 | 340 | /** |
@@ -347,156 +347,156 @@ discard block |
||
| 347 | 347 | * @param Champ|Inclure|Idiome|Boucle $pointeur_champ |
| 348 | 348 | */ |
| 349 | 349 | function phraser_args(string $texte, string $fin, string $sep, array $result, &$pointeur_champ, int &$pos_debut): array { |
| 350 | - $length = strlen($texte); |
|
| 351 | - while ($pos_debut < $length && trim($texte[$pos_debut]) === '') { |
|
| 352 | - $pos_debut++; |
|
| 353 | - } |
|
| 354 | - while (($pos_debut < $length) && !str_contains($fin, $texte[$pos_debut])) { |
|
| 355 | - // phraser_arg modifie directement le $texte, on fait donc avec ici en passant par une sous chaine |
|
| 356 | - $st = substr($texte, $pos_debut); |
|
| 357 | - $result = phraser_arg($st, $sep, $result, $pointeur_champ); |
|
| 358 | - $pos_debut = $length - strlen((string) $st); |
|
| 359 | - while ($pos_debut < $length && trim($texte[$pos_debut]) === '') { |
|
| 360 | - $pos_debut++; |
|
| 361 | - } |
|
| 362 | - } |
|
| 363 | - |
|
| 364 | - return $result; |
|
| 350 | + $length = strlen($texte); |
|
| 351 | + while ($pos_debut < $length && trim($texte[$pos_debut]) === '') { |
|
| 352 | + $pos_debut++; |
|
| 353 | + } |
|
| 354 | + while (($pos_debut < $length) && !str_contains($fin, $texte[$pos_debut])) { |
|
| 355 | + // phraser_arg modifie directement le $texte, on fait donc avec ici en passant par une sous chaine |
|
| 356 | + $st = substr($texte, $pos_debut); |
|
| 357 | + $result = phraser_arg($st, $sep, $result, $pointeur_champ); |
|
| 358 | + $pos_debut = $length - strlen((string) $st); |
|
| 359 | + while ($pos_debut < $length && trim($texte[$pos_debut]) === '') { |
|
| 360 | + $pos_debut++; |
|
| 361 | + } |
|
| 362 | + } |
|
| 363 | + |
|
| 364 | + return $result; |
|
| 365 | 365 | } |
| 366 | 366 | |
| 367 | 367 | function phraser_arg(&$texte, $sep, $result, &$pointeur_champ) { |
| 368 | - preg_match(',^(\|?[^}{)|]*)(.*)$,ms', (string) $texte, $match); |
|
| 369 | - $suite = ltrim($match[2]); |
|
| 370 | - $fonc = trim($match[1]); |
|
| 371 | - if ($fonc && $fonc[0] == '|') { |
|
| 372 | - $fonc = ltrim(substr($fonc, 1)); |
|
| 373 | - } |
|
| 374 | - $res = [$fonc]; |
|
| 375 | - $err_f = ''; |
|
| 376 | - // cas du filtre sans argument ou du critere / |
|
| 377 | - if (($suite && ($suite[0] != '{')) || ($fonc && $fonc[0] == '/')) { |
|
| 378 | - // si pas d'argument, alors il faut une fonction ou un double | |
|
| 379 | - if (!$match[1]) { |
|
| 380 | - $err_f = ['zbug_erreur_filtre', ['filtre' => $texte]]; |
|
| 381 | - erreur_squelette($err_f, $pointeur_champ); |
|
| 382 | - $texte = ''; |
|
| 383 | - } else { |
|
| 384 | - $texte = $suite; |
|
| 385 | - } |
|
| 386 | - if ($err_f) { |
|
| 387 | - $pointeur_champ->param = false; |
|
| 388 | - } elseif ($fonc !== '') { |
|
| 389 | - $pointeur_champ->param[] = $res; |
|
| 390 | - } |
|
| 391 | - // pour les balises avec faux filtres qui boudent ce dur larbeur |
|
| 392 | - $pointeur_champ->fonctions[] = [$fonc, '']; |
|
| 393 | - |
|
| 394 | - return $result; |
|
| 395 | - } |
|
| 396 | - $args = ltrim(substr($suite, 1)); // virer le '(' initial |
|
| 397 | - $collecte = []; |
|
| 398 | - while ($args && $args[0] != '}') { |
|
| 399 | - if ($args[0] == '"') { |
|
| 400 | - preg_match('/^(")([^"]*)(")(.*)$/ms', $args, $regs); |
|
| 401 | - } elseif ($args[0] == "'") { |
|
| 402 | - preg_match("/^(')([^']*)(')(.*)$/ms", $args, $regs); |
|
| 403 | - } else { |
|
| 404 | - preg_match('/^([[:space:]]*)([^,([{}]*([(\[{][^])}]*[])}])?[^,}]*)([,}].*)$/ms', $args, $regs); |
|
| 405 | - if (!isset($regs[2]) || !strlen($regs[2])) { |
|
| 406 | - $err_f = ['zbug_erreur_filtre', ['filtre' => $args]]; |
|
| 407 | - erreur_squelette($err_f, $pointeur_champ); |
|
| 408 | - $champ = new Texte(); |
|
| 409 | - $champ->apres = $champ->avant = $args = ''; |
|
| 410 | - break; |
|
| 411 | - } |
|
| 412 | - } |
|
| 413 | - $arg = $regs[2]; |
|
| 414 | - if (trim($regs[1])) { |
|
| 415 | - $champ = new Texte(); |
|
| 416 | - $champ->texte = $arg; |
|
| 417 | - $champ->apres = $champ->avant = $regs[1]; |
|
| 418 | - $result[] = $champ; |
|
| 419 | - $collecte[] = $champ; |
|
| 420 | - $args = ltrim($regs[count($regs) - 1]); |
|
| 421 | - } else { |
|
| 422 | - if (!preg_match('/' . NOM_DE_CHAMP . '([{|])/', $arg, $r)) { |
|
| 423 | - // 0 est un aveu d'impuissance. A completer |
|
| 424 | - $arg = phraser_champs_exterieurs($arg, 0, $sep, $result); |
|
| 425 | - |
|
| 426 | - $args = ltrim($regs[count($regs) - 1]); |
|
| 427 | - $collecte = array_merge($collecte, $arg); |
|
| 428 | - $result = array_merge($result, $arg); |
|
| 429 | - } else { |
|
| 430 | - $n = strpos($args, (string) $r[0]); |
|
| 431 | - $pred = substr($args, 0, $n); |
|
| 432 | - $par = ',}'; |
|
| 433 | - if (preg_match('/^(.*)\($/', $pred, $m)) { |
|
| 434 | - $pred = $m[1]; |
|
| 435 | - $par = ')'; |
|
| 436 | - } |
|
| 437 | - if ($pred) { |
|
| 438 | - $champ = new Texte(); |
|
| 439 | - $champ->texte = $pred; |
|
| 440 | - $champ->apres = $champ->avant = ''; |
|
| 441 | - $result[] = $champ; |
|
| 442 | - $collecte[] = $champ; |
|
| 443 | - } |
|
| 444 | - $rec = substr($args, $n + strlen($r[0]) - 1); |
|
| 445 | - $champ = new Champ(); |
|
| 446 | - $champ->nom_boucle = $r[2]; |
|
| 447 | - $champ->nom_champ = $r[3]; |
|
| 448 | - $champ->etoile = $r[5]; |
|
| 449 | - $next = $r[6]; |
|
| 450 | - while ($next == '{') { |
|
| 451 | - phraser_arg($rec, $sep, [], $champ); |
|
| 452 | - $args = ltrim((string) $rec); |
|
| 453 | - $next = $args[0] ?? ''; |
|
| 454 | - } |
|
| 455 | - while ($next == '|') { |
|
| 456 | - $pos_apres = 0; |
|
| 457 | - phraser_args($rec, $par, $sep, [], $champ, $pos_apres); |
|
| 458 | - $args = substr((string) $rec, $pos_apres); |
|
| 459 | - $next = $args[0] ?? ''; |
|
| 460 | - } |
|
| 461 | - // Si erreur de syntaxe dans un sous-argument, propager. |
|
| 462 | - if ($champ->param === false) { |
|
| 463 | - $err_f = true; |
|
| 464 | - } else { |
|
| 465 | - phraser_vieux($champ); |
|
| 466 | - } |
|
| 467 | - if ($par == ')') { |
|
| 468 | - $args = substr($args, 1); |
|
| 469 | - } |
|
| 470 | - $collecte[] = $champ; |
|
| 471 | - $result[] = $champ; |
|
| 472 | - } |
|
| 473 | - } |
|
| 474 | - if (isset($args[0]) && $args[0] == ',') { |
|
| 475 | - $args = ltrim(substr($args, 1)); |
|
| 476 | - if ($collecte) { |
|
| 477 | - $res[] = $collecte; |
|
| 478 | - $collecte = []; |
|
| 479 | - } |
|
| 480 | - } |
|
| 481 | - } |
|
| 482 | - if ($collecte) { |
|
| 483 | - $res[] = $collecte; |
|
| 484 | - $collecte = []; |
|
| 485 | - } |
|
| 486 | - $texte = substr($args, 1); |
|
| 487 | - $source = substr($suite, 0, strlen($suite) - strlen($texte)); |
|
| 488 | - // propager les erreurs, et ignorer les param vides |
|
| 489 | - if ($pointeur_champ->param !== false) { |
|
| 490 | - if ($err_f) { |
|
| 491 | - $pointeur_champ->param = false; |
|
| 492 | - } elseif ($fonc !== '' || count($res) > 1) { |
|
| 493 | - $pointeur_champ->param[] = $res; |
|
| 494 | - } |
|
| 495 | - } |
|
| 496 | - // pour les balises avec faux filtres qui boudent ce dur larbeur |
|
| 497 | - $pointeur_champ->fonctions[] = [$fonc, $source]; |
|
| 498 | - |
|
| 499 | - return $result; |
|
| 368 | + preg_match(',^(\|?[^}{)|]*)(.*)$,ms', (string) $texte, $match); |
|
| 369 | + $suite = ltrim($match[2]); |
|
| 370 | + $fonc = trim($match[1]); |
|
| 371 | + if ($fonc && $fonc[0] == '|') { |
|
| 372 | + $fonc = ltrim(substr($fonc, 1)); |
|
| 373 | + } |
|
| 374 | + $res = [$fonc]; |
|
| 375 | + $err_f = ''; |
|
| 376 | + // cas du filtre sans argument ou du critere / |
|
| 377 | + if (($suite && ($suite[0] != '{')) || ($fonc && $fonc[0] == '/')) { |
|
| 378 | + // si pas d'argument, alors il faut une fonction ou un double | |
|
| 379 | + if (!$match[1]) { |
|
| 380 | + $err_f = ['zbug_erreur_filtre', ['filtre' => $texte]]; |
|
| 381 | + erreur_squelette($err_f, $pointeur_champ); |
|
| 382 | + $texte = ''; |
|
| 383 | + } else { |
|
| 384 | + $texte = $suite; |
|
| 385 | + } |
|
| 386 | + if ($err_f) { |
|
| 387 | + $pointeur_champ->param = false; |
|
| 388 | + } elseif ($fonc !== '') { |
|
| 389 | + $pointeur_champ->param[] = $res; |
|
| 390 | + } |
|
| 391 | + // pour les balises avec faux filtres qui boudent ce dur larbeur |
|
| 392 | + $pointeur_champ->fonctions[] = [$fonc, '']; |
|
| 393 | + |
|
| 394 | + return $result; |
|
| 395 | + } |
|
| 396 | + $args = ltrim(substr($suite, 1)); // virer le '(' initial |
|
| 397 | + $collecte = []; |
|
| 398 | + while ($args && $args[0] != '}') { |
|
| 399 | + if ($args[0] == '"') { |
|
| 400 | + preg_match('/^(")([^"]*)(")(.*)$/ms', $args, $regs); |
|
| 401 | + } elseif ($args[0] == "'") { |
|
| 402 | + preg_match("/^(')([^']*)(')(.*)$/ms", $args, $regs); |
|
| 403 | + } else { |
|
| 404 | + preg_match('/^([[:space:]]*)([^,([{}]*([(\[{][^])}]*[])}])?[^,}]*)([,}].*)$/ms', $args, $regs); |
|
| 405 | + if (!isset($regs[2]) || !strlen($regs[2])) { |
|
| 406 | + $err_f = ['zbug_erreur_filtre', ['filtre' => $args]]; |
|
| 407 | + erreur_squelette($err_f, $pointeur_champ); |
|
| 408 | + $champ = new Texte(); |
|
| 409 | + $champ->apres = $champ->avant = $args = ''; |
|
| 410 | + break; |
|
| 411 | + } |
|
| 412 | + } |
|
| 413 | + $arg = $regs[2]; |
|
| 414 | + if (trim($regs[1])) { |
|
| 415 | + $champ = new Texte(); |
|
| 416 | + $champ->texte = $arg; |
|
| 417 | + $champ->apres = $champ->avant = $regs[1]; |
|
| 418 | + $result[] = $champ; |
|
| 419 | + $collecte[] = $champ; |
|
| 420 | + $args = ltrim($regs[count($regs) - 1]); |
|
| 421 | + } else { |
|
| 422 | + if (!preg_match('/' . NOM_DE_CHAMP . '([{|])/', $arg, $r)) { |
|
| 423 | + // 0 est un aveu d'impuissance. A completer |
|
| 424 | + $arg = phraser_champs_exterieurs($arg, 0, $sep, $result); |
|
| 425 | + |
|
| 426 | + $args = ltrim($regs[count($regs) - 1]); |
|
| 427 | + $collecte = array_merge($collecte, $arg); |
|
| 428 | + $result = array_merge($result, $arg); |
|
| 429 | + } else { |
|
| 430 | + $n = strpos($args, (string) $r[0]); |
|
| 431 | + $pred = substr($args, 0, $n); |
|
| 432 | + $par = ',}'; |
|
| 433 | + if (preg_match('/^(.*)\($/', $pred, $m)) { |
|
| 434 | + $pred = $m[1]; |
|
| 435 | + $par = ')'; |
|
| 436 | + } |
|
| 437 | + if ($pred) { |
|
| 438 | + $champ = new Texte(); |
|
| 439 | + $champ->texte = $pred; |
|
| 440 | + $champ->apres = $champ->avant = ''; |
|
| 441 | + $result[] = $champ; |
|
| 442 | + $collecte[] = $champ; |
|
| 443 | + } |
|
| 444 | + $rec = substr($args, $n + strlen($r[0]) - 1); |
|
| 445 | + $champ = new Champ(); |
|
| 446 | + $champ->nom_boucle = $r[2]; |
|
| 447 | + $champ->nom_champ = $r[3]; |
|
| 448 | + $champ->etoile = $r[5]; |
|
| 449 | + $next = $r[6]; |
|
| 450 | + while ($next == '{') { |
|
| 451 | + phraser_arg($rec, $sep, [], $champ); |
|
| 452 | + $args = ltrim((string) $rec); |
|
| 453 | + $next = $args[0] ?? ''; |
|
| 454 | + } |
|
| 455 | + while ($next == '|') { |
|
| 456 | + $pos_apres = 0; |
|
| 457 | + phraser_args($rec, $par, $sep, [], $champ, $pos_apres); |
|
| 458 | + $args = substr((string) $rec, $pos_apres); |
|
| 459 | + $next = $args[0] ?? ''; |
|
| 460 | + } |
|
| 461 | + // Si erreur de syntaxe dans un sous-argument, propager. |
|
| 462 | + if ($champ->param === false) { |
|
| 463 | + $err_f = true; |
|
| 464 | + } else { |
|
| 465 | + phraser_vieux($champ); |
|
| 466 | + } |
|
| 467 | + if ($par == ')') { |
|
| 468 | + $args = substr($args, 1); |
|
| 469 | + } |
|
| 470 | + $collecte[] = $champ; |
|
| 471 | + $result[] = $champ; |
|
| 472 | + } |
|
| 473 | + } |
|
| 474 | + if (isset($args[0]) && $args[0] == ',') { |
|
| 475 | + $args = ltrim(substr($args, 1)); |
|
| 476 | + if ($collecte) { |
|
| 477 | + $res[] = $collecte; |
|
| 478 | + $collecte = []; |
|
| 479 | + } |
|
| 480 | + } |
|
| 481 | + } |
|
| 482 | + if ($collecte) { |
|
| 483 | + $res[] = $collecte; |
|
| 484 | + $collecte = []; |
|
| 485 | + } |
|
| 486 | + $texte = substr($args, 1); |
|
| 487 | + $source = substr($suite, 0, strlen($suite) - strlen($texte)); |
|
| 488 | + // propager les erreurs, et ignorer les param vides |
|
| 489 | + if ($pointeur_champ->param !== false) { |
|
| 490 | + if ($err_f) { |
|
| 491 | + $pointeur_champ->param = false; |
|
| 492 | + } elseif ($fonc !== '' || count($res) > 1) { |
|
| 493 | + $pointeur_champ->param[] = $res; |
|
| 494 | + } |
|
| 495 | + } |
|
| 496 | + // pour les balises avec faux filtres qui boudent ce dur larbeur |
|
| 497 | + $pointeur_champ->fonctions[] = [$fonc, $source]; |
|
| 498 | + |
|
| 499 | + return $result; |
|
| 500 | 500 | } |
| 501 | 501 | |
| 502 | 502 | /** |
@@ -504,28 +504,28 @@ discard block |
||
| 504 | 504 | * et phraser les inclure sur les morceaux intermédiaires |
| 505 | 505 | */ |
| 506 | 506 | function phraser_champs_exterieurs(string $texte, int $ligne, string $sep, array $nested_res): array { |
| 507 | - $res = []; |
|
| 508 | - $preg = ',^%' . preg_quote($sep, ',') . '([0-9]+)(\n*)@,'; |
|
| 509 | - while (($p = strpos($texte, "%$sep")) !== false) { |
|
| 510 | - $suite = substr($texte, $p); |
|
| 511 | - if (!preg_match($preg, $suite, $m)) { |
|
| 512 | - break; |
|
| 513 | - } |
|
| 514 | - if ($p) { |
|
| 515 | - $debut = substr($texte, 0, $p); |
|
| 516 | - $res = phraser_inclure($debut, $ligne, $res); |
|
| 517 | - $ligne += public_compte_ligne($debut); |
|
| 518 | - } |
|
| 519 | - $res[] = $nested_res[$m[1]]; |
|
| 520 | - $ligne += strlen($m[2]); |
|
| 521 | - $texte = substr($suite, strlen($m[0])); |
|
| 522 | - } |
|
| 523 | - |
|
| 524 | - if ($texte !== '') { |
|
| 525 | - $res = phraser_inclure($texte, $ligne, $res); |
|
| 526 | - } |
|
| 527 | - |
|
| 528 | - return $res; |
|
| 507 | + $res = []; |
|
| 508 | + $preg = ',^%' . preg_quote($sep, ',') . '([0-9]+)(\n*)@,'; |
|
| 509 | + while (($p = strpos($texte, "%$sep")) !== false) { |
|
| 510 | + $suite = substr($texte, $p); |
|
| 511 | + if (!preg_match($preg, $suite, $m)) { |
|
| 512 | + break; |
|
| 513 | + } |
|
| 514 | + if ($p) { |
|
| 515 | + $debut = substr($texte, 0, $p); |
|
| 516 | + $res = phraser_inclure($debut, $ligne, $res); |
|
| 517 | + $ligne += public_compte_ligne($debut); |
|
| 518 | + } |
|
| 519 | + $res[] = $nested_res[$m[1]]; |
|
| 520 | + $ligne += strlen($m[2]); |
|
| 521 | + $texte = substr($suite, strlen($m[0])); |
|
| 522 | + } |
|
| 523 | + |
|
| 524 | + if ($texte !== '') { |
|
| 525 | + $res = phraser_inclure($texte, $ligne, $res); |
|
| 526 | + } |
|
| 527 | + |
|
| 528 | + return $res; |
|
| 529 | 529 | } |
| 530 | 530 | |
| 531 | 531 | /** |
@@ -542,75 +542,75 @@ discard block |
||
| 542 | 542 | */ |
| 543 | 543 | function phraser_champs_interieurs(string $texte, int $no_ligne, string $sep): array { |
| 544 | 544 | |
| 545 | - $champs_trouves = []; |
|
| 546 | - do { |
|
| 547 | - $parties = []; |
|
| 548 | - $nbl = $no_ligne; |
|
| 549 | - $search_pos = 0; |
|
| 550 | - |
|
| 551 | - // trouver tous les champs intérieurs (sans autre champs imbriqués), les analyser, et les remplacer par un placehoder |
|
| 552 | - // le $texte est découpé en parties qu'on re-parse ensuite jusqu'à ce qu'on ne trouve plus de nouveaux champs |
|
| 553 | - while ( |
|
| 554 | - (($p = strpos($texte, '[', $search_pos)) !== false) |
|
| 555 | - && preg_match(CHAMP_ETENDU, $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 556 | - ) { |
|
| 557 | - $poss = array_column($match, 1); |
|
| 558 | - $match = array_column($match, 0); |
|
| 559 | - // si jamais il y a une sous balise inclue dans la partie 7, alors on est pas dans le champ le plus interieur, on continue le search plus loin |
|
| 560 | - if (str_contains($match[7], '[') && preg_match(CHAMP_ETENDU, $texte, $r, 0, $poss[7])) { |
|
| 561 | - $search_pos = $poss[7]; |
|
| 562 | - continue; |
|
| 563 | - } |
|
| 564 | - |
|
| 565 | - $nbl_debut = 0; |
|
| 566 | - if ($poss[0]) { |
|
| 567 | - $nbl_debut = public_compte_ligne($texte, 0, $poss[0]); |
|
| 568 | - $parties[] = substr($texte, 0, $poss[0]); |
|
| 569 | - } |
|
| 570 | - $nbl += $nbl_debut; |
|
| 571 | - |
|
| 572 | - $champ = new Champ(); |
|
| 573 | - $champ->ligne = $nbl; |
|
| 574 | - $champ->nom_boucle = $match[3]; |
|
| 575 | - $champ->nom_champ = $match[4]; |
|
| 576 | - $champ->etoile = $match[6]; |
|
| 577 | - $nbl_champ = public_compte_ligne($texte, $poss[0], $poss[0] + strlen($match[0])); |
|
| 578 | - |
|
| 579 | - // phraser_args indiquera ou commence apres |
|
| 580 | - $pos_apres = 0; |
|
| 581 | - $champs_trouves = phraser_args($match[7], ')', $sep, $champs_trouves, $champ, $pos_apres); |
|
| 582 | - phraser_vieux($champ); |
|
| 583 | - $champ->avant = phraser_champs_exterieurs($match[1], $nbl, $sep, $champs_trouves); |
|
| 584 | - $apres = substr($match[7], $pos_apres + 1); |
|
| 585 | - |
|
| 586 | - $nbl_debut_champ = 0; |
|
| 587 | - if (!empty($apres)) { |
|
| 588 | - $nbl_debut_champ = public_compte_ligne($texte, $poss[0], $poss[7] + $pos_apres + 1); |
|
| 589 | - } |
|
| 590 | - $champ->apres = phraser_champs_exterieurs($apres, $nbl + $nbl_debut_champ, $sep, $champs_trouves); |
|
| 591 | - |
|
| 592 | - // reinjecter la boucle si c'en est une |
|
| 593 | - phraser_boucle_placeholder($champ); |
|
| 594 | - |
|
| 595 | - $champs_trouves[] = $champ; |
|
| 596 | - $j = count($champs_trouves) - 1; |
|
| 597 | - // on remplace ce champ par un placeholder |
|
| 598 | - // ajouter $nbl_champ retour ligne pour que la partie conserve le nombre de lignes lors des itérations suivantes |
|
| 599 | - $parties[] = ($t = "%{$sep}{$j}" . str_repeat("\n", $nbl_champ) . '@'); |
|
| 600 | - $nbl += $nbl_champ; |
|
| 601 | - |
|
| 602 | - $texte = substr($texte, $poss[0] + strlen($match[0])); |
|
| 603 | - $search_pos = 0; |
|
| 604 | - } |
|
| 605 | - |
|
| 606 | - // si on a trouvé des morceaux, il faut recommencer |
|
| 607 | - if (count($parties)) { |
|
| 608 | - // reprenons tous les morceaux qu'on a mis de côté car ne matchant pas (encore) |
|
| 609 | - $texte = implode('', $parties) . $texte; |
|
| 610 | - } |
|
| 611 | - } while (count($parties)); |
|
| 612 | - |
|
| 613 | - return phraser_champs_exterieurs($texte, $no_ligne, $sep, $champs_trouves); |
|
| 545 | + $champs_trouves = []; |
|
| 546 | + do { |
|
| 547 | + $parties = []; |
|
| 548 | + $nbl = $no_ligne; |
|
| 549 | + $search_pos = 0; |
|
| 550 | + |
|
| 551 | + // trouver tous les champs intérieurs (sans autre champs imbriqués), les analyser, et les remplacer par un placehoder |
|
| 552 | + // le $texte est découpé en parties qu'on re-parse ensuite jusqu'à ce qu'on ne trouve plus de nouveaux champs |
|
| 553 | + while ( |
|
| 554 | + (($p = strpos($texte, '[', $search_pos)) !== false) |
|
| 555 | + && preg_match(CHAMP_ETENDU, $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 556 | + ) { |
|
| 557 | + $poss = array_column($match, 1); |
|
| 558 | + $match = array_column($match, 0); |
|
| 559 | + // si jamais il y a une sous balise inclue dans la partie 7, alors on est pas dans le champ le plus interieur, on continue le search plus loin |
|
| 560 | + if (str_contains($match[7], '[') && preg_match(CHAMP_ETENDU, $texte, $r, 0, $poss[7])) { |
|
| 561 | + $search_pos = $poss[7]; |
|
| 562 | + continue; |
|
| 563 | + } |
|
| 564 | + |
|
| 565 | + $nbl_debut = 0; |
|
| 566 | + if ($poss[0]) { |
|
| 567 | + $nbl_debut = public_compte_ligne($texte, 0, $poss[0]); |
|
| 568 | + $parties[] = substr($texte, 0, $poss[0]); |
|
| 569 | + } |
|
| 570 | + $nbl += $nbl_debut; |
|
| 571 | + |
|
| 572 | + $champ = new Champ(); |
|
| 573 | + $champ->ligne = $nbl; |
|
| 574 | + $champ->nom_boucle = $match[3]; |
|
| 575 | + $champ->nom_champ = $match[4]; |
|
| 576 | + $champ->etoile = $match[6]; |
|
| 577 | + $nbl_champ = public_compte_ligne($texte, $poss[0], $poss[0] + strlen($match[0])); |
|
| 578 | + |
|
| 579 | + // phraser_args indiquera ou commence apres |
|
| 580 | + $pos_apres = 0; |
|
| 581 | + $champs_trouves = phraser_args($match[7], ')', $sep, $champs_trouves, $champ, $pos_apres); |
|
| 582 | + phraser_vieux($champ); |
|
| 583 | + $champ->avant = phraser_champs_exterieurs($match[1], $nbl, $sep, $champs_trouves); |
|
| 584 | + $apres = substr($match[7], $pos_apres + 1); |
|
| 585 | + |
|
| 586 | + $nbl_debut_champ = 0; |
|
| 587 | + if (!empty($apres)) { |
|
| 588 | + $nbl_debut_champ = public_compte_ligne($texte, $poss[0], $poss[7] + $pos_apres + 1); |
|
| 589 | + } |
|
| 590 | + $champ->apres = phraser_champs_exterieurs($apres, $nbl + $nbl_debut_champ, $sep, $champs_trouves); |
|
| 591 | + |
|
| 592 | + // reinjecter la boucle si c'en est une |
|
| 593 | + phraser_boucle_placeholder($champ); |
|
| 594 | + |
|
| 595 | + $champs_trouves[] = $champ; |
|
| 596 | + $j = count($champs_trouves) - 1; |
|
| 597 | + // on remplace ce champ par un placeholder |
|
| 598 | + // ajouter $nbl_champ retour ligne pour que la partie conserve le nombre de lignes lors des itérations suivantes |
|
| 599 | + $parties[] = ($t = "%{$sep}{$j}" . str_repeat("\n", $nbl_champ) . '@'); |
|
| 600 | + $nbl += $nbl_champ; |
|
| 601 | + |
|
| 602 | + $texte = substr($texte, $poss[0] + strlen($match[0])); |
|
| 603 | + $search_pos = 0; |
|
| 604 | + } |
|
| 605 | + |
|
| 606 | + // si on a trouvé des morceaux, il faut recommencer |
|
| 607 | + if (count($parties)) { |
|
| 608 | + // reprenons tous les morceaux qu'on a mis de côté car ne matchant pas (encore) |
|
| 609 | + $texte = implode('', $parties) . $texte; |
|
| 610 | + } |
|
| 611 | + } while (count($parties)); |
|
| 612 | + |
|
| 613 | + return phraser_champs_exterieurs($texte, $no_ligne, $sep, $champs_trouves); |
|
| 614 | 614 | } |
| 615 | 615 | |
| 616 | 616 | /** |
@@ -621,20 +621,20 @@ discard block |
||
| 621 | 621 | * @return void |
| 622 | 622 | */ |
| 623 | 623 | function phraser_vieux(&$champ) { |
| 624 | - $nom = $champ->nom_champ; |
|
| 625 | - if ($champ->param) { |
|
| 626 | - if ($nom == 'MODELE') { |
|
| 627 | - if (!function_exists('phraser_vieux_modele')) { |
|
| 628 | - include_spip('public/normaliser'); |
|
| 629 | - } |
|
| 630 | - phraser_vieux_modele($champ); |
|
| 631 | - } elseif ($nom == 'INCLURE' || $nom == 'INCLUDE') { |
|
| 632 | - if (!function_exists('phraser_vieux_inclu')) { |
|
| 633 | - include_spip('public/normaliser'); |
|
| 634 | - } |
|
| 635 | - phraser_vieux_inclu($champ); |
|
| 636 | - } |
|
| 637 | - } |
|
| 624 | + $nom = $champ->nom_champ; |
|
| 625 | + if ($champ->param) { |
|
| 626 | + if ($nom == 'MODELE') { |
|
| 627 | + if (!function_exists('phraser_vieux_modele')) { |
|
| 628 | + include_spip('public/normaliser'); |
|
| 629 | + } |
|
| 630 | + phraser_vieux_modele($champ); |
|
| 631 | + } elseif ($nom == 'INCLURE' || $nom == 'INCLUDE') { |
|
| 632 | + if (!function_exists('phraser_vieux_inclu')) { |
|
| 633 | + include_spip('public/normaliser'); |
|
| 634 | + } |
|
| 635 | + phraser_vieux_inclu($champ); |
|
| 636 | + } |
|
| 637 | + } |
|
| 638 | 638 | } |
| 639 | 639 | |
| 640 | 640 | |
@@ -662,199 +662,199 @@ discard block |
||
| 662 | 662 | **/ |
| 663 | 663 | function phraser_criteres($params, &$result) { |
| 664 | 664 | |
| 665 | - $err_ci = ''; // indiquera s'il y a eu une erreur |
|
| 666 | - $args = []; |
|
| 667 | - $type = $result->type_requete; |
|
| 668 | - $doublons = []; |
|
| 669 | - foreach ($params as $v) { |
|
| 670 | - $var = $v[1][0]; |
|
| 671 | - $param = ($var->type != 'texte') ? '' : $var->texte; |
|
| 672 | - if (((is_countable($v) ? count($v) : 0) > 2) && (!preg_match(',[^A-Za-z]IN[^A-Za-z],i', (string) $param))) { |
|
| 673 | - // plus d'un argument et pas le critere IN: |
|
| 674 | - // detecter comme on peut si c'est le critere implicite LIMIT debut, fin |
|
| 675 | - if ( |
|
| 676 | - $var->type != 'texte' || preg_match('/^(n|n-|(n-)?\d+)$/S', (string) $param) |
|
| 677 | - ) { |
|
| 678 | - $op = ','; |
|
| 679 | - $not = false; |
|
| 680 | - $cond = false; |
|
| 681 | - } else { |
|
| 682 | - // Le debut du premier argument est l'operateur |
|
| 683 | - preg_match('/^([!]?)([a-zA-Z]\w*)[[:space:]]*(\??)[[:space:]]*(.*)$/ms', (string) $param, $m); |
|
| 684 | - $op = $m[2]; |
|
| 685 | - $not = (bool) $m[1]; |
|
| 686 | - $cond = (bool) $m[3]; |
|
| 687 | - // virer le premier argument, |
|
| 688 | - // et mettre son reliquat eventuel |
|
| 689 | - // Recopier pour ne pas alterer le texte source |
|
| 690 | - // utile au debusqueur |
|
| 691 | - if ($m[4]) { |
|
| 692 | - // une maniere tres sale de supprimer les "' autour de {critere "xxx","yyy"} |
|
| 693 | - if (preg_match(',^(["\'])(.*)\1$,', $m[4])) { |
|
| 694 | - $c = null; |
|
| 695 | - eval('$c = ' . $m[4] . ';'); |
|
| 696 | - if (isset($c)) { |
|
| 697 | - $m[4] = $c; |
|
| 698 | - } |
|
| 699 | - } |
|
| 700 | - $texte = new Texte(); |
|
| 701 | - $texte->texte = $m[4]; |
|
| 702 | - $v[1][0] = $texte; |
|
| 703 | - } else { |
|
| 704 | - array_shift($v[1]); |
|
| 705 | - } |
|
| 706 | - } |
|
| 707 | - array_shift($v); // $v[O] est vide |
|
| 708 | - $crit = new Critere(); |
|
| 709 | - $crit->op = $op; |
|
| 710 | - $crit->not = $not; |
|
| 711 | - $crit->cond = $cond; |
|
| 712 | - $crit->exclus = ''; |
|
| 713 | - $crit->param = $v; |
|
| 714 | - $args[] = $crit; |
|
| 715 | - } else { |
|
| 716 | - if ($var->type != 'texte') { |
|
| 717 | - // cas 1 seul arg ne commencant pas par du texte brut: |
|
| 718 | - // erreur ou critere infixe "/" |
|
| 719 | - if (($v[1][1]->type != 'texte') || (trim((string) $v[1][1]->texte) != '/')) { |
|
| 720 | - $err_ci = [ |
|
| 721 | - 'zbug_critere_inconnu', |
|
| 722 | - ['critere' => $var->nom_champ] |
|
| 723 | - ]; |
|
| 724 | - erreur_squelette($err_ci, $result); |
|
| 725 | - } else { |
|
| 726 | - $crit = new Critere(); |
|
| 727 | - $crit->op = '/'; |
|
| 728 | - $crit->not = false; |
|
| 729 | - $crit->exclus = ''; |
|
| 730 | - $crit->param = [[$v[1][0]], [$v[1][2]]]; |
|
| 731 | - $args[] = $crit; |
|
| 732 | - } |
|
| 733 | - } else { |
|
| 734 | - // traiter qq lexemes particuliers pour faciliter la suite |
|
| 735 | - // les separateurs |
|
| 736 | - if ($var->apres) { |
|
| 737 | - $result->separateur[] = $param; |
|
| 738 | - } elseif ($param == 'tout' || $param == 'tous') { |
|
| 739 | - $result->modificateur['tout'] = true; |
|
| 740 | - } elseif ($param == 'plat') { |
|
| 741 | - $result->modificateur['plat'] = true; |
|
| 742 | - } |
|
| 743 | - |
|
| 744 | - // Boucle hierarchie, analyser le critere id_rubrique |
|
| 745 | - // et les autres critères {id_x} pour forcer {tout} sur |
|
| 746 | - // ceux-ci pour avoir la rubrique mere... |
|
| 747 | - // Les autres critères de la boucle hierarchie doivent être |
|
| 748 | - // traités normalement. |
|
| 749 | - elseif ( |
|
| 750 | - strcasecmp($type, 'hierarchie') == 0 |
|
| 751 | - && !preg_match(",^id_rubrique\b,", (string) $param) |
|
| 752 | - && preg_match(',^id_\w+\s*$,', (string) $param) |
|
| 753 | - ) { |
|
| 754 | - $result->modificateur['tout'] = true; |
|
| 755 | - } elseif (strcasecmp($type, 'hierarchie') == 0 && $param == 'id_rubrique') { |
|
| 756 | - // rien a faire sur {id_rubrique} tout seul |
|
| 757 | - } else { |
|
| 758 | - // pas d'emplacement statique, faut un dynamique |
|
| 759 | - // mais il y a 2 cas qui ont les 2 ! |
|
| 760 | - if (($param == 'unique') || (preg_match(',^!?doublons *,', (string) $param))) { |
|
| 761 | - // cette variable sera inseree dans le code |
|
| 762 | - // et son nom sert d'indicateur des maintenant |
|
| 763 | - $result->doublons = '$doublons_index'; |
|
| 764 | - if ($param == 'unique') { |
|
| 765 | - $param = 'doublons'; |
|
| 766 | - } |
|
| 767 | - } elseif ($param == 'recherche') { |
|
| 768 | - // meme chose (a cause de #nom_de_boucle:URL_*) |
|
| 769 | - $result->hash = ' '; |
|
| 770 | - } |
|
| 771 | - |
|
| 772 | - if (preg_match(',^ *([0-9-]+) *(/) *(.+) *$,', (string) $param, $m)) { |
|
| 773 | - $crit = phraser_critere_infixe($m[1], $m[3], $v, '/', '', ''); |
|
| 774 | - } elseif ( |
|
| 775 | - preg_match(',^([!]?)(' . CHAMP_SQL_PLUS_FONC . |
|
| 776 | - ')[[:space:]]*(\??)(!?)(<=?|>=?|==?|\b(?:IN|LIKE)\b)(.*)$,is', (string) $param, $m) |
|
| 777 | - ) { |
|
| 778 | - $a2 = trim($m[8]); |
|
| 779 | - if ($a2 && ($a2[0] == "'" || $a2[0] == '"') && $a2[0] == substr($a2, -1)) { |
|
| 780 | - $a2 = substr($a2, 1, -1); |
|
| 781 | - } |
|
| 782 | - $crit = phraser_critere_infixe( |
|
| 783 | - $m[2], |
|
| 784 | - $a2, |
|
| 785 | - $v, |
|
| 786 | - (($m[2] == 'lang_select') ? $m[2] : $m[7]), |
|
| 787 | - $m[6], |
|
| 788 | - $m[5] |
|
| 789 | - ); |
|
| 790 | - $crit->exclus = $m[1]; |
|
| 791 | - } elseif ( |
|
| 792 | - preg_match('/^([!]?)\s*(' . |
|
| 793 | - CHAMP_SQL_PLUS_FONC . |
|
| 794 | - ')\s*(\??)(.*)$/is', (string) $param, $m) |
|
| 795 | - ) { |
|
| 796 | - // contient aussi les comparaisons implicites ! |
|
| 797 | - // Comme ci-dessus: |
|
| 798 | - // le premier arg contient l'operateur |
|
| 799 | - array_shift($v); |
|
| 800 | - if ($m[6]) { |
|
| 801 | - $v[0][0] = new Texte(); |
|
| 802 | - $v[0][0]->texte = $m[6]; |
|
| 803 | - } else { |
|
| 804 | - array_shift($v[0]); |
|
| 805 | - if (!$v[0]) { |
|
| 806 | - array_shift($v); |
|
| 807 | - } |
|
| 808 | - } |
|
| 809 | - $crit = new Critere(); |
|
| 810 | - $crit->op = $m[2]; |
|
| 811 | - $crit->param = $v; |
|
| 812 | - $crit->not = (bool) $m[1]; |
|
| 813 | - $crit->cond = (bool) $m[5]; |
|
| 814 | - } else { |
|
| 815 | - $err_ci = [ |
|
| 816 | - 'zbug_critere_inconnu', |
|
| 817 | - ['critere' => $param] |
|
| 818 | - ]; |
|
| 819 | - erreur_squelette($err_ci, $result); |
|
| 820 | - } |
|
| 821 | - |
|
| 822 | - if ((!preg_match(',^!?doublons *,', (string) $param)) || $crit->not) { |
|
| 823 | - $args[] = $crit; |
|
| 824 | - } else { |
|
| 825 | - $doublons[] = $crit; |
|
| 826 | - } |
|
| 827 | - } |
|
| 828 | - } |
|
| 829 | - } |
|
| 830 | - } |
|
| 831 | - |
|
| 832 | - // les doublons non nies doivent etre le dernier critere |
|
| 833 | - // pour que la variable $doublon_index ait la bonne valeur |
|
| 834 | - // cf critere_doublon |
|
| 835 | - if ($doublons) { |
|
| 836 | - $args = [...$args, ...$doublons]; |
|
| 837 | - } |
|
| 838 | - |
|
| 839 | - // Si erreur, laisser la chaine dans ce champ pour le HTTP 503 |
|
| 840 | - if (!$err_ci) { |
|
| 841 | - $result->criteres = $args; |
|
| 842 | - } |
|
| 665 | + $err_ci = ''; // indiquera s'il y a eu une erreur |
|
| 666 | + $args = []; |
|
| 667 | + $type = $result->type_requete; |
|
| 668 | + $doublons = []; |
|
| 669 | + foreach ($params as $v) { |
|
| 670 | + $var = $v[1][0]; |
|
| 671 | + $param = ($var->type != 'texte') ? '' : $var->texte; |
|
| 672 | + if (((is_countable($v) ? count($v) : 0) > 2) && (!preg_match(',[^A-Za-z]IN[^A-Za-z],i', (string) $param))) { |
|
| 673 | + // plus d'un argument et pas le critere IN: |
|
| 674 | + // detecter comme on peut si c'est le critere implicite LIMIT debut, fin |
|
| 675 | + if ( |
|
| 676 | + $var->type != 'texte' || preg_match('/^(n|n-|(n-)?\d+)$/S', (string) $param) |
|
| 677 | + ) { |
|
| 678 | + $op = ','; |
|
| 679 | + $not = false; |
|
| 680 | + $cond = false; |
|
| 681 | + } else { |
|
| 682 | + // Le debut du premier argument est l'operateur |
|
| 683 | + preg_match('/^([!]?)([a-zA-Z]\w*)[[:space:]]*(\??)[[:space:]]*(.*)$/ms', (string) $param, $m); |
|
| 684 | + $op = $m[2]; |
|
| 685 | + $not = (bool) $m[1]; |
|
| 686 | + $cond = (bool) $m[3]; |
|
| 687 | + // virer le premier argument, |
|
| 688 | + // et mettre son reliquat eventuel |
|
| 689 | + // Recopier pour ne pas alterer le texte source |
|
| 690 | + // utile au debusqueur |
|
| 691 | + if ($m[4]) { |
|
| 692 | + // une maniere tres sale de supprimer les "' autour de {critere "xxx","yyy"} |
|
| 693 | + if (preg_match(',^(["\'])(.*)\1$,', $m[4])) { |
|
| 694 | + $c = null; |
|
| 695 | + eval('$c = ' . $m[4] . ';'); |
|
| 696 | + if (isset($c)) { |
|
| 697 | + $m[4] = $c; |
|
| 698 | + } |
|
| 699 | + } |
|
| 700 | + $texte = new Texte(); |
|
| 701 | + $texte->texte = $m[4]; |
|
| 702 | + $v[1][0] = $texte; |
|
| 703 | + } else { |
|
| 704 | + array_shift($v[1]); |
|
| 705 | + } |
|
| 706 | + } |
|
| 707 | + array_shift($v); // $v[O] est vide |
|
| 708 | + $crit = new Critere(); |
|
| 709 | + $crit->op = $op; |
|
| 710 | + $crit->not = $not; |
|
| 711 | + $crit->cond = $cond; |
|
| 712 | + $crit->exclus = ''; |
|
| 713 | + $crit->param = $v; |
|
| 714 | + $args[] = $crit; |
|
| 715 | + } else { |
|
| 716 | + if ($var->type != 'texte') { |
|
| 717 | + // cas 1 seul arg ne commencant pas par du texte brut: |
|
| 718 | + // erreur ou critere infixe "/" |
|
| 719 | + if (($v[1][1]->type != 'texte') || (trim((string) $v[1][1]->texte) != '/')) { |
|
| 720 | + $err_ci = [ |
|
| 721 | + 'zbug_critere_inconnu', |
|
| 722 | + ['critere' => $var->nom_champ] |
|
| 723 | + ]; |
|
| 724 | + erreur_squelette($err_ci, $result); |
|
| 725 | + } else { |
|
| 726 | + $crit = new Critere(); |
|
| 727 | + $crit->op = '/'; |
|
| 728 | + $crit->not = false; |
|
| 729 | + $crit->exclus = ''; |
|
| 730 | + $crit->param = [[$v[1][0]], [$v[1][2]]]; |
|
| 731 | + $args[] = $crit; |
|
| 732 | + } |
|
| 733 | + } else { |
|
| 734 | + // traiter qq lexemes particuliers pour faciliter la suite |
|
| 735 | + // les separateurs |
|
| 736 | + if ($var->apres) { |
|
| 737 | + $result->separateur[] = $param; |
|
| 738 | + } elseif ($param == 'tout' || $param == 'tous') { |
|
| 739 | + $result->modificateur['tout'] = true; |
|
| 740 | + } elseif ($param == 'plat') { |
|
| 741 | + $result->modificateur['plat'] = true; |
|
| 742 | + } |
|
| 743 | + |
|
| 744 | + // Boucle hierarchie, analyser le critere id_rubrique |
|
| 745 | + // et les autres critères {id_x} pour forcer {tout} sur |
|
| 746 | + // ceux-ci pour avoir la rubrique mere... |
|
| 747 | + // Les autres critères de la boucle hierarchie doivent être |
|
| 748 | + // traités normalement. |
|
| 749 | + elseif ( |
|
| 750 | + strcasecmp($type, 'hierarchie') == 0 |
|
| 751 | + && !preg_match(",^id_rubrique\b,", (string) $param) |
|
| 752 | + && preg_match(',^id_\w+\s*$,', (string) $param) |
|
| 753 | + ) { |
|
| 754 | + $result->modificateur['tout'] = true; |
|
| 755 | + } elseif (strcasecmp($type, 'hierarchie') == 0 && $param == 'id_rubrique') { |
|
| 756 | + // rien a faire sur {id_rubrique} tout seul |
|
| 757 | + } else { |
|
| 758 | + // pas d'emplacement statique, faut un dynamique |
|
| 759 | + // mais il y a 2 cas qui ont les 2 ! |
|
| 760 | + if (($param == 'unique') || (preg_match(',^!?doublons *,', (string) $param))) { |
|
| 761 | + // cette variable sera inseree dans le code |
|
| 762 | + // et son nom sert d'indicateur des maintenant |
|
| 763 | + $result->doublons = '$doublons_index'; |
|
| 764 | + if ($param == 'unique') { |
|
| 765 | + $param = 'doublons'; |
|
| 766 | + } |
|
| 767 | + } elseif ($param == 'recherche') { |
|
| 768 | + // meme chose (a cause de #nom_de_boucle:URL_*) |
|
| 769 | + $result->hash = ' '; |
|
| 770 | + } |
|
| 771 | + |
|
| 772 | + if (preg_match(',^ *([0-9-]+) *(/) *(.+) *$,', (string) $param, $m)) { |
|
| 773 | + $crit = phraser_critere_infixe($m[1], $m[3], $v, '/', '', ''); |
|
| 774 | + } elseif ( |
|
| 775 | + preg_match(',^([!]?)(' . CHAMP_SQL_PLUS_FONC . |
|
| 776 | + ')[[:space:]]*(\??)(!?)(<=?|>=?|==?|\b(?:IN|LIKE)\b)(.*)$,is', (string) $param, $m) |
|
| 777 | + ) { |
|
| 778 | + $a2 = trim($m[8]); |
|
| 779 | + if ($a2 && ($a2[0] == "'" || $a2[0] == '"') && $a2[0] == substr($a2, -1)) { |
|
| 780 | + $a2 = substr($a2, 1, -1); |
|
| 781 | + } |
|
| 782 | + $crit = phraser_critere_infixe( |
|
| 783 | + $m[2], |
|
| 784 | + $a2, |
|
| 785 | + $v, |
|
| 786 | + (($m[2] == 'lang_select') ? $m[2] : $m[7]), |
|
| 787 | + $m[6], |
|
| 788 | + $m[5] |
|
| 789 | + ); |
|
| 790 | + $crit->exclus = $m[1]; |
|
| 791 | + } elseif ( |
|
| 792 | + preg_match('/^([!]?)\s*(' . |
|
| 793 | + CHAMP_SQL_PLUS_FONC . |
|
| 794 | + ')\s*(\??)(.*)$/is', (string) $param, $m) |
|
| 795 | + ) { |
|
| 796 | + // contient aussi les comparaisons implicites ! |
|
| 797 | + // Comme ci-dessus: |
|
| 798 | + // le premier arg contient l'operateur |
|
| 799 | + array_shift($v); |
|
| 800 | + if ($m[6]) { |
|
| 801 | + $v[0][0] = new Texte(); |
|
| 802 | + $v[0][0]->texte = $m[6]; |
|
| 803 | + } else { |
|
| 804 | + array_shift($v[0]); |
|
| 805 | + if (!$v[0]) { |
|
| 806 | + array_shift($v); |
|
| 807 | + } |
|
| 808 | + } |
|
| 809 | + $crit = new Critere(); |
|
| 810 | + $crit->op = $m[2]; |
|
| 811 | + $crit->param = $v; |
|
| 812 | + $crit->not = (bool) $m[1]; |
|
| 813 | + $crit->cond = (bool) $m[5]; |
|
| 814 | + } else { |
|
| 815 | + $err_ci = [ |
|
| 816 | + 'zbug_critere_inconnu', |
|
| 817 | + ['critere' => $param] |
|
| 818 | + ]; |
|
| 819 | + erreur_squelette($err_ci, $result); |
|
| 820 | + } |
|
| 821 | + |
|
| 822 | + if ((!preg_match(',^!?doublons *,', (string) $param)) || $crit->not) { |
|
| 823 | + $args[] = $crit; |
|
| 824 | + } else { |
|
| 825 | + $doublons[] = $crit; |
|
| 826 | + } |
|
| 827 | + } |
|
| 828 | + } |
|
| 829 | + } |
|
| 830 | + } |
|
| 831 | + |
|
| 832 | + // les doublons non nies doivent etre le dernier critere |
|
| 833 | + // pour que la variable $doublon_index ait la bonne valeur |
|
| 834 | + // cf critere_doublon |
|
| 835 | + if ($doublons) { |
|
| 836 | + $args = [...$args, ...$doublons]; |
|
| 837 | + } |
|
| 838 | + |
|
| 839 | + // Si erreur, laisser la chaine dans ce champ pour le HTTP 503 |
|
| 840 | + if (!$err_ci) { |
|
| 841 | + $result->criteres = $args; |
|
| 842 | + } |
|
| 843 | 843 | } |
| 844 | 844 | |
| 845 | 845 | function phraser_critere_infixe($arg1, $arg2, $args, $op, $not, $cond) { |
| 846 | - $args[0] = new Texte(); |
|
| 847 | - $args[0]->texte = $arg1; |
|
| 848 | - $args[0] = [$args[0]]; |
|
| 849 | - $args[1][0] = new Texte(); |
|
| 850 | - $args[1][0]->texte = $arg2; |
|
| 851 | - $crit = new Critere(); |
|
| 852 | - $crit->op = $op; |
|
| 853 | - $crit->not = (bool) $not; |
|
| 854 | - $crit->cond = (bool) $cond; |
|
| 855 | - $crit->param = $args; |
|
| 856 | - |
|
| 857 | - return $crit; |
|
| 846 | + $args[0] = new Texte(); |
|
| 847 | + $args[0]->texte = $arg1; |
|
| 848 | + $args[0] = [$args[0]]; |
|
| 849 | + $args[1][0] = new Texte(); |
|
| 850 | + $args[1][0]->texte = $arg2; |
|
| 851 | + $crit = new Critere(); |
|
| 852 | + $crit->op = $op; |
|
| 853 | + $crit->not = (bool) $not; |
|
| 854 | + $crit->cond = (bool) $cond; |
|
| 855 | + $crit->param = $args; |
|
| 856 | + |
|
| 857 | + return $crit; |
|
| 858 | 858 | } |
| 859 | 859 | |
| 860 | 860 | /** |
@@ -865,11 +865,11 @@ discard block |
||
| 865 | 865 | * @return int |
| 866 | 866 | */ |
| 867 | 867 | function public_compte_ligne($texte, $debut = 0, $fin = null) { |
| 868 | - if (is_null($fin)) { |
|
| 869 | - return substr_count((string) $texte, "\n", $debut); |
|
| 870 | - } else { |
|
| 871 | - return substr_count((string) $texte, "\n", $debut, $fin - $debut); |
|
| 872 | - } |
|
| 868 | + if (is_null($fin)) { |
|
| 869 | + return substr_count((string) $texte, "\n", $debut); |
|
| 870 | + } else { |
|
| 871 | + return substr_count((string) $texte, "\n", $debut, $fin - $debut); |
|
| 872 | + } |
|
| 873 | 873 | } |
| 874 | 874 | |
| 875 | 875 | |
@@ -879,87 +879,87 @@ discard block |
||
| 879 | 879 | * et ensuite on regarde son vrai debut soit <B_xxx> soit <BB_xxx> |
| 880 | 880 | */ |
| 881 | 881 | function public_trouver_premiere_boucle(string $texte, string $id_parent, array $descr, int $pos_debut_texte = 0): ?array { |
| 882 | - $premiere_boucle = null; |
|
| 883 | - $pos_derniere_boucle_anonyme = $pos_debut_texte; |
|
| 884 | - |
|
| 885 | - $current_pos = $pos_debut_texte; |
|
| 886 | - while (($pos_boucle = strpos((string) $texte, BALISE_BOUCLE, $current_pos)) !== false) { |
|
| 887 | - $current_pos = $pos_boucle + 1; |
|
| 888 | - $pos_parent = strpos((string) $texte, '(', $pos_boucle); |
|
| 889 | - |
|
| 890 | - $id_boucle = ''; |
|
| 891 | - if ($pos_parent !== false) { |
|
| 892 | - $id_boucle = trim(substr((string) $texte, $pos_boucle + strlen(BALISE_BOUCLE), $pos_parent - $pos_boucle - strlen(BALISE_BOUCLE))); |
|
| 893 | - } |
|
| 894 | - if ( |
|
| 895 | - $pos_parent === false |
|
| 896 | - || strlen($id_boucle) && (!is_numeric($id_boucle) && !str_starts_with($id_boucle, '_')) |
|
| 897 | - ) { |
|
| 898 | - $result = new Boucle(); |
|
| 899 | - $result->id_parent = $id_parent; |
|
| 900 | - $result->descr = $descr; |
|
| 901 | - |
|
| 902 | - // un id_boucle pour l'affichage de l'erreur |
|
| 903 | - if (!strlen($id_boucle)) { |
|
| 904 | - $id_boucle = substr((string) $texte, $pos_boucle + strlen(BALISE_BOUCLE), 15); |
|
| 905 | - } |
|
| 906 | - $result->id_boucle = $id_boucle; |
|
| 907 | - $err_b = ['zbug_erreur_boucle_syntaxe', ['id' => $id_boucle]]; |
|
| 908 | - erreur_squelette($err_b, $result); |
|
| 909 | - |
|
| 910 | - continue; |
|
| 911 | - } |
|
| 912 | - else { |
|
| 913 | - $boucle = [ |
|
| 914 | - 'id_boucle' => $id_boucle, |
|
| 915 | - 'id_boucle_err' => $id_boucle, |
|
| 916 | - 'debut_boucle' => $pos_boucle, |
|
| 917 | - 'pos_boucle' => $pos_boucle, |
|
| 918 | - 'pos_parent' => $pos_parent, |
|
| 919 | - 'pos_precond' => false, |
|
| 920 | - 'pos_precond_inside' => false, |
|
| 921 | - 'pos_preaff' => false, |
|
| 922 | - 'pos_preaff_inside' => false, |
|
| 923 | - ]; |
|
| 924 | - |
|
| 925 | - // un id_boucle pour l'affichage de l'erreur sur les boucle anonymes |
|
| 926 | - if (!strlen($id_boucle)) { |
|
| 927 | - $boucle['id_boucle_err'] = substr((string) $texte, $pos_boucle + strlen(BALISE_BOUCLE), 15); |
|
| 928 | - } |
|
| 929 | - |
|
| 930 | - // trouver sa position de depart reelle : au <Bxx> ou au <BBxx> |
|
| 931 | - $precond_boucle = BALISE_PRECOND_BOUCLE . $id_boucle . '>'; |
|
| 932 | - $pos_precond = strpos((string) $texte, $precond_boucle, $id_boucle ? $pos_debut_texte : $pos_derniere_boucle_anonyme); |
|
| 933 | - if ( |
|
| 934 | - $pos_precond !== false |
|
| 935 | - && $pos_precond < $boucle['debut_boucle'] |
|
| 936 | - ) { |
|
| 937 | - $boucle['debut_boucle'] = $pos_precond; |
|
| 938 | - $boucle['pos_precond'] = $pos_precond; |
|
| 939 | - $boucle['pos_precond_inside'] = $pos_precond + strlen($precond_boucle); |
|
| 940 | - } |
|
| 941 | - |
|
| 942 | - $preaff_boucle = BALISE_PREAFF_BOUCLE . $id_boucle . '>'; |
|
| 943 | - $pos_preaff = strpos((string) $texte, $preaff_boucle, $id_boucle ? $pos_debut_texte : $pos_derniere_boucle_anonyme); |
|
| 944 | - if ( |
|
| 945 | - $pos_preaff !== false |
|
| 946 | - && $pos_preaff < $boucle['debut_boucle'] |
|
| 947 | - ) { |
|
| 948 | - $boucle['debut_boucle'] = $pos_preaff; |
|
| 949 | - $boucle['pos_preaff'] = $pos_preaff; |
|
| 950 | - $boucle['pos_preaff_inside'] = $pos_preaff + strlen($preaff_boucle); |
|
| 951 | - } |
|
| 952 | - if (!strlen($id_boucle)) { |
|
| 953 | - $pos_derniere_boucle_anonyme = $pos_boucle; |
|
| 954 | - } |
|
| 955 | - |
|
| 956 | - if (is_null($premiere_boucle) || $premiere_boucle['debut_boucle'] > $boucle['debut_boucle']) { |
|
| 957 | - $premiere_boucle = $boucle; |
|
| 958 | - } |
|
| 959 | - } |
|
| 960 | - } |
|
| 961 | - |
|
| 962 | - return $premiere_boucle; |
|
| 882 | + $premiere_boucle = null; |
|
| 883 | + $pos_derniere_boucle_anonyme = $pos_debut_texte; |
|
| 884 | + |
|
| 885 | + $current_pos = $pos_debut_texte; |
|
| 886 | + while (($pos_boucle = strpos((string) $texte, BALISE_BOUCLE, $current_pos)) !== false) { |
|
| 887 | + $current_pos = $pos_boucle + 1; |
|
| 888 | + $pos_parent = strpos((string) $texte, '(', $pos_boucle); |
|
| 889 | + |
|
| 890 | + $id_boucle = ''; |
|
| 891 | + if ($pos_parent !== false) { |
|
| 892 | + $id_boucle = trim(substr((string) $texte, $pos_boucle + strlen(BALISE_BOUCLE), $pos_parent - $pos_boucle - strlen(BALISE_BOUCLE))); |
|
| 893 | + } |
|
| 894 | + if ( |
|
| 895 | + $pos_parent === false |
|
| 896 | + || strlen($id_boucle) && (!is_numeric($id_boucle) && !str_starts_with($id_boucle, '_')) |
|
| 897 | + ) { |
|
| 898 | + $result = new Boucle(); |
|
| 899 | + $result->id_parent = $id_parent; |
|
| 900 | + $result->descr = $descr; |
|
| 901 | + |
|
| 902 | + // un id_boucle pour l'affichage de l'erreur |
|
| 903 | + if (!strlen($id_boucle)) { |
|
| 904 | + $id_boucle = substr((string) $texte, $pos_boucle + strlen(BALISE_BOUCLE), 15); |
|
| 905 | + } |
|
| 906 | + $result->id_boucle = $id_boucle; |
|
| 907 | + $err_b = ['zbug_erreur_boucle_syntaxe', ['id' => $id_boucle]]; |
|
| 908 | + erreur_squelette($err_b, $result); |
|
| 909 | + |
|
| 910 | + continue; |
|
| 911 | + } |
|
| 912 | + else { |
|
| 913 | + $boucle = [ |
|
| 914 | + 'id_boucle' => $id_boucle, |
|
| 915 | + 'id_boucle_err' => $id_boucle, |
|
| 916 | + 'debut_boucle' => $pos_boucle, |
|
| 917 | + 'pos_boucle' => $pos_boucle, |
|
| 918 | + 'pos_parent' => $pos_parent, |
|
| 919 | + 'pos_precond' => false, |
|
| 920 | + 'pos_precond_inside' => false, |
|
| 921 | + 'pos_preaff' => false, |
|
| 922 | + 'pos_preaff_inside' => false, |
|
| 923 | + ]; |
|
| 924 | + |
|
| 925 | + // un id_boucle pour l'affichage de l'erreur sur les boucle anonymes |
|
| 926 | + if (!strlen($id_boucle)) { |
|
| 927 | + $boucle['id_boucle_err'] = substr((string) $texte, $pos_boucle + strlen(BALISE_BOUCLE), 15); |
|
| 928 | + } |
|
| 929 | + |
|
| 930 | + // trouver sa position de depart reelle : au <Bxx> ou au <BBxx> |
|
| 931 | + $precond_boucle = BALISE_PRECOND_BOUCLE . $id_boucle . '>'; |
|
| 932 | + $pos_precond = strpos((string) $texte, $precond_boucle, $id_boucle ? $pos_debut_texte : $pos_derniere_boucle_anonyme); |
|
| 933 | + if ( |
|
| 934 | + $pos_precond !== false |
|
| 935 | + && $pos_precond < $boucle['debut_boucle'] |
|
| 936 | + ) { |
|
| 937 | + $boucle['debut_boucle'] = $pos_precond; |
|
| 938 | + $boucle['pos_precond'] = $pos_precond; |
|
| 939 | + $boucle['pos_precond_inside'] = $pos_precond + strlen($precond_boucle); |
|
| 940 | + } |
|
| 941 | + |
|
| 942 | + $preaff_boucle = BALISE_PREAFF_BOUCLE . $id_boucle . '>'; |
|
| 943 | + $pos_preaff = strpos((string) $texte, $preaff_boucle, $id_boucle ? $pos_debut_texte : $pos_derniere_boucle_anonyme); |
|
| 944 | + if ( |
|
| 945 | + $pos_preaff !== false |
|
| 946 | + && $pos_preaff < $boucle['debut_boucle'] |
|
| 947 | + ) { |
|
| 948 | + $boucle['debut_boucle'] = $pos_preaff; |
|
| 949 | + $boucle['pos_preaff'] = $pos_preaff; |
|
| 950 | + $boucle['pos_preaff_inside'] = $pos_preaff + strlen($preaff_boucle); |
|
| 951 | + } |
|
| 952 | + if (!strlen($id_boucle)) { |
|
| 953 | + $pos_derniere_boucle_anonyme = $pos_boucle; |
|
| 954 | + } |
|
| 955 | + |
|
| 956 | + if (is_null($premiere_boucle) || $premiere_boucle['debut_boucle'] > $boucle['debut_boucle']) { |
|
| 957 | + $premiere_boucle = $boucle; |
|
| 958 | + } |
|
| 959 | + } |
|
| 960 | + } |
|
| 961 | + |
|
| 962 | + return $premiere_boucle; |
|
| 963 | 963 | } |
| 964 | 964 | |
| 965 | 965 | /** |
@@ -975,68 +975,68 @@ discard block |
||
| 975 | 975 | * la description de la boucle dans un tableau associatif |
| 976 | 976 | */ |
| 977 | 977 | function public_trouver_fin_boucle(string $texte, string $id_parent, array $boucle, int $pos_debut_texte, $result): array { |
| 978 | - $id_boucle = $boucle['id_boucle']; |
|
| 979 | - $pos_courante = $pos_debut_texte; |
|
| 980 | - |
|
| 981 | - $boucle['pos_postcond'] = false; |
|
| 982 | - $boucle['pos_postcond_inside'] = false; |
|
| 983 | - $boucle['pos_altern'] = false; |
|
| 984 | - $boucle['pos_altern_inside'] = false; |
|
| 985 | - $boucle['pos_postaff'] = false; |
|
| 986 | - $boucle['pos_postaff_inside'] = false; |
|
| 987 | - |
|
| 988 | - $pos_anonyme_next = null; |
|
| 989 | - // si c'est une boucle anonyme, chercher la position de la prochaine boucle anonyme |
|
| 990 | - if (!strlen((string) $id_boucle)) { |
|
| 991 | - $pos_anonyme_next = strpos((string) $texte, BALISE_BOUCLE . '(', $pos_courante); |
|
| 992 | - } |
|
| 993 | - |
|
| 994 | - // |
|
| 995 | - // 1. Recuperer la partie conditionnelle apres |
|
| 996 | - // |
|
| 997 | - $apres_boucle = BALISE_POSTCOND_BOUCLE . $id_boucle . '>'; |
|
| 998 | - $pos_apres = strpos((string) $texte, $apres_boucle, $pos_courante); |
|
| 999 | - if ( |
|
| 1000 | - $pos_apres !== false |
|
| 1001 | - && (!$pos_anonyme_next || $pos_apres < $pos_anonyme_next) |
|
| 1002 | - ) { |
|
| 1003 | - $boucle['pos_postcond'] = $pos_apres; |
|
| 1004 | - $pos_apres += strlen($apres_boucle); |
|
| 1005 | - $boucle['pos_postcond_inside'] = $pos_apres; |
|
| 1006 | - $pos_courante = $pos_apres ; |
|
| 1007 | - } |
|
| 1008 | - |
|
| 1009 | - // |
|
| 1010 | - // 2. Récuperer la partie alternative apres |
|
| 1011 | - // |
|
| 1012 | - $altern_boucle = BALISE_ALT_BOUCLE . $id_boucle . '>'; |
|
| 1013 | - $pos_altern = strpos((string) $texte, $altern_boucle, $pos_courante); |
|
| 1014 | - if ( |
|
| 1015 | - $pos_altern !== false |
|
| 1016 | - && (!$pos_anonyme_next || $pos_altern < $pos_anonyme_next) |
|
| 1017 | - ) { |
|
| 1018 | - $boucle['pos_altern'] = $pos_altern; |
|
| 1019 | - $pos_altern += strlen($altern_boucle); |
|
| 1020 | - $boucle['pos_altern_inside'] = $pos_altern; |
|
| 1021 | - $pos_courante = $pos_altern; |
|
| 1022 | - } |
|
| 1023 | - |
|
| 1024 | - // |
|
| 1025 | - // 3. Recuperer la partie footer non alternative |
|
| 1026 | - // |
|
| 1027 | - $postaff_boucle = BALISE_POSTAFF_BOUCLE . $id_boucle . '>'; |
|
| 1028 | - $pos_postaff = strpos((string) $texte, $postaff_boucle, $pos_courante); |
|
| 1029 | - if ( |
|
| 1030 | - $pos_postaff !== false |
|
| 1031 | - && (!$pos_anonyme_next || $pos_postaff < $pos_anonyme_next) |
|
| 1032 | - ) { |
|
| 1033 | - $boucle['pos_postaff'] = $pos_postaff; |
|
| 1034 | - $pos_postaff += strlen($postaff_boucle); |
|
| 1035 | - $boucle['pos_postaff_inside'] = $pos_postaff; |
|
| 1036 | - $pos_courante = $pos_postaff ; |
|
| 1037 | - } |
|
| 1038 | - |
|
| 1039 | - return $boucle; |
|
| 978 | + $id_boucle = $boucle['id_boucle']; |
|
| 979 | + $pos_courante = $pos_debut_texte; |
|
| 980 | + |
|
| 981 | + $boucle['pos_postcond'] = false; |
|
| 982 | + $boucle['pos_postcond_inside'] = false; |
|
| 983 | + $boucle['pos_altern'] = false; |
|
| 984 | + $boucle['pos_altern_inside'] = false; |
|
| 985 | + $boucle['pos_postaff'] = false; |
|
| 986 | + $boucle['pos_postaff_inside'] = false; |
|
| 987 | + |
|
| 988 | + $pos_anonyme_next = null; |
|
| 989 | + // si c'est une boucle anonyme, chercher la position de la prochaine boucle anonyme |
|
| 990 | + if (!strlen((string) $id_boucle)) { |
|
| 991 | + $pos_anonyme_next = strpos((string) $texte, BALISE_BOUCLE . '(', $pos_courante); |
|
| 992 | + } |
|
| 993 | + |
|
| 994 | + // |
|
| 995 | + // 1. Recuperer la partie conditionnelle apres |
|
| 996 | + // |
|
| 997 | + $apres_boucle = BALISE_POSTCOND_BOUCLE . $id_boucle . '>'; |
|
| 998 | + $pos_apres = strpos((string) $texte, $apres_boucle, $pos_courante); |
|
| 999 | + if ( |
|
| 1000 | + $pos_apres !== false |
|
| 1001 | + && (!$pos_anonyme_next || $pos_apres < $pos_anonyme_next) |
|
| 1002 | + ) { |
|
| 1003 | + $boucle['pos_postcond'] = $pos_apres; |
|
| 1004 | + $pos_apres += strlen($apres_boucle); |
|
| 1005 | + $boucle['pos_postcond_inside'] = $pos_apres; |
|
| 1006 | + $pos_courante = $pos_apres ; |
|
| 1007 | + } |
|
| 1008 | + |
|
| 1009 | + // |
|
| 1010 | + // 2. Récuperer la partie alternative apres |
|
| 1011 | + // |
|
| 1012 | + $altern_boucle = BALISE_ALT_BOUCLE . $id_boucle . '>'; |
|
| 1013 | + $pos_altern = strpos((string) $texte, $altern_boucle, $pos_courante); |
|
| 1014 | + if ( |
|
| 1015 | + $pos_altern !== false |
|
| 1016 | + && (!$pos_anonyme_next || $pos_altern < $pos_anonyme_next) |
|
| 1017 | + ) { |
|
| 1018 | + $boucle['pos_altern'] = $pos_altern; |
|
| 1019 | + $pos_altern += strlen($altern_boucle); |
|
| 1020 | + $boucle['pos_altern_inside'] = $pos_altern; |
|
| 1021 | + $pos_courante = $pos_altern; |
|
| 1022 | + } |
|
| 1023 | + |
|
| 1024 | + // |
|
| 1025 | + // 3. Recuperer la partie footer non alternative |
|
| 1026 | + // |
|
| 1027 | + $postaff_boucle = BALISE_POSTAFF_BOUCLE . $id_boucle . '>'; |
|
| 1028 | + $pos_postaff = strpos((string) $texte, $postaff_boucle, $pos_courante); |
|
| 1029 | + if ( |
|
| 1030 | + $pos_postaff !== false |
|
| 1031 | + && (!$pos_anonyme_next || $pos_postaff < $pos_anonyme_next) |
|
| 1032 | + ) { |
|
| 1033 | + $boucle['pos_postaff'] = $pos_postaff; |
|
| 1034 | + $pos_postaff += strlen($postaff_boucle); |
|
| 1035 | + $boucle['pos_postaff_inside'] = $pos_postaff; |
|
| 1036 | + $pos_courante = $pos_postaff ; |
|
| 1037 | + } |
|
| 1038 | + |
|
| 1039 | + return $boucle; |
|
| 1040 | 1040 | } |
| 1041 | 1041 | |
| 1042 | 1042 | |
@@ -1045,21 +1045,21 @@ discard block |
||
| 1045 | 1045 | * @param null|object $boucle |
| 1046 | 1046 | */ |
| 1047 | 1047 | function phraser_boucle_placeholder(&$champ, ?string $boucle_placeholder = null, $boucle = null) { |
| 1048 | - static $boucles_connues = []; |
|
| 1049 | - // si c'est un appel pour memoriser une boucle, memorisons la |
|
| 1050 | - if (is_string($champ) && !empty($boucle_placeholder) && !empty($boucle)) { |
|
| 1051 | - $boucles_connues[$boucle_placeholder][$champ] = &$boucle; |
|
| 1052 | - } |
|
| 1053 | - else { |
|
| 1054 | - if (!empty($champ->nom_champ) && !empty($boucles_connues[$champ->nom_champ])) { |
|
| 1055 | - $placeholder = $champ->nom_champ; |
|
| 1056 | - $id = reset($champ->param[0][1]); |
|
| 1057 | - $id = $id->texte; |
|
| 1058 | - if (!empty($boucles_connues[$placeholder][$id])) { |
|
| 1059 | - $champ = $boucles_connues[$placeholder][$id]; |
|
| 1060 | - } |
|
| 1061 | - } |
|
| 1062 | - } |
|
| 1048 | + static $boucles_connues = []; |
|
| 1049 | + // si c'est un appel pour memoriser une boucle, memorisons la |
|
| 1050 | + if (is_string($champ) && !empty($boucle_placeholder) && !empty($boucle)) { |
|
| 1051 | + $boucles_connues[$boucle_placeholder][$champ] = &$boucle; |
|
| 1052 | + } |
|
| 1053 | + else { |
|
| 1054 | + if (!empty($champ->nom_champ) && !empty($boucles_connues[$champ->nom_champ])) { |
|
| 1055 | + $placeholder = $champ->nom_champ; |
|
| 1056 | + $id = reset($champ->param[0][1]); |
|
| 1057 | + $id = $id->texte; |
|
| 1058 | + if (!empty($boucles_connues[$placeholder][$id])) { |
|
| 1059 | + $champ = $boucles_connues[$placeholder][$id]; |
|
| 1060 | + } |
|
| 1061 | + } |
|
| 1062 | + } |
|
| 1063 | 1063 | } |
| 1064 | 1064 | |
| 1065 | 1065 | |
@@ -1069,11 +1069,11 @@ discard block |
||
| 1069 | 1069 | * @return string |
| 1070 | 1070 | */ |
| 1071 | 1071 | function public_generer_boucle_placeholder(string $id_boucle, &$boucle, string $boucle_placeholder, int $nb_lignes): string { |
| 1072 | - $placeholder = "[(#{$boucle_placeholder}{" . $id_boucle . '})' . str_pad('', $nb_lignes, "\n") . ']'; |
|
| 1073 | - //memoriser la boucle a reinjecter |
|
| 1074 | - $id_boucle = "$id_boucle"; |
|
| 1075 | - phraser_boucle_placeholder($id_boucle, $boucle_placeholder, $boucle); |
|
| 1076 | - return $placeholder; |
|
| 1072 | + $placeholder = "[(#{$boucle_placeholder}{" . $id_boucle . '})' . str_pad('', $nb_lignes, "\n") . ']'; |
|
| 1073 | + //memoriser la boucle a reinjecter |
|
| 1074 | + $id_boucle = "$id_boucle"; |
|
| 1075 | + phraser_boucle_placeholder($id_boucle, $boucle_placeholder, $boucle); |
|
| 1076 | + return $placeholder; |
|
| 1077 | 1077 | } |
| 1078 | 1078 | |
| 1079 | 1079 | /** |
@@ -1086,264 +1086,264 @@ discard block |
||
| 1086 | 1086 | */ |
| 1087 | 1087 | function public_phraser_html_dist(string $texte, string $id_parent, array &$boucles, array $descr, int $ligne_debut_texte = 1, ?string $boucle_placeholder = null): array { |
| 1088 | 1088 | |
| 1089 | - $all_res = []; |
|
| 1090 | - // definir un placholder pour les boucles dont on est sur d'avoir aucune occurence dans le squelette |
|
| 1091 | - if (is_null($boucle_placeholder)) { |
|
| 1092 | - do { |
|
| 1093 | - $boucle_placeholder = 'BOUCLE_PLACEHOLDER_' . strtoupper(md5(uniqid())); |
|
| 1094 | - } while (str_contains((string) $texte, $boucle_placeholder)); |
|
| 1095 | - } |
|
| 1096 | - |
|
| 1097 | - $ligne_debut_initial = $ligne_debut_texte; |
|
| 1098 | - $pos_debut_texte = 0; |
|
| 1099 | - while ($boucle = public_trouver_premiere_boucle($texte, $id_parent, $descr, $pos_debut_texte)) { |
|
| 1100 | - $err_b = ''; // indiquera s'il y a eu une erreur |
|
| 1101 | - $result = new Boucle(); |
|
| 1102 | - $result->id_parent = $id_parent; |
|
| 1103 | - $result->descr = $descr; |
|
| 1104 | - |
|
| 1105 | - $pos_courante = $boucle['pos_boucle']; |
|
| 1106 | - $pos_parent = $boucle['pos_parent']; |
|
| 1107 | - $id_boucle_search = $id_boucle = $boucle['id_boucle']; |
|
| 1108 | - |
|
| 1109 | - $ligne_preaff = $ligne_avant = $ligne_milieu = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_parent); |
|
| 1110 | - |
|
| 1111 | - // boucle anonyme ? |
|
| 1112 | - if (!strlen((string) $id_boucle)) { |
|
| 1113 | - $id_boucle = '_anon_L' . $ligne_milieu . '_' . substr(md5('anonyme:' . $id_parent . ':' . json_encode($boucle, JSON_THROW_ON_ERROR)), 0, 8); |
|
| 1114 | - } |
|
| 1115 | - |
|
| 1116 | - $pos_debut_boucle = $pos_courante; |
|
| 1117 | - |
|
| 1118 | - $pos_milieu = $pos_parent; |
|
| 1119 | - |
|
| 1120 | - // Regarder si on a une partie conditionnelle avant <B_xxx> |
|
| 1121 | - if ($boucle['pos_precond'] !== false) { |
|
| 1122 | - $pos_debut_boucle = $boucle['pos_precond']; |
|
| 1123 | - |
|
| 1124 | - $pos_avant = $boucle['pos_precond_inside']; |
|
| 1125 | - $result->avant = substr((string) $texte, $pos_avant, $pos_courante - $pos_avant); |
|
| 1126 | - $ligne_avant = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_avant); |
|
| 1127 | - } |
|
| 1128 | - |
|
| 1129 | - // Regarder si on a une partie inconditionnelle avant <BB_xxx> |
|
| 1130 | - if ($boucle['pos_preaff'] !== false) { |
|
| 1131 | - $end_preaff = $pos_debut_boucle; |
|
| 1132 | - |
|
| 1133 | - $pos_preaff = $boucle['pos_preaff_inside']; |
|
| 1134 | - $result->preaff = substr((string) $texte, $pos_preaff, $end_preaff - $pos_preaff); |
|
| 1135 | - $ligne_preaff = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_preaff); |
|
| 1136 | - } |
|
| 1137 | - |
|
| 1138 | - $result->id_boucle = $id_boucle; |
|
| 1139 | - |
|
| 1140 | - if ( |
|
| 1141 | - !preg_match(SPEC_BOUCLE, (string) $texte, $match, 0, $pos_milieu) |
|
| 1142 | - || ($pos_match = strpos((string) $texte, (string) $match[0], $pos_milieu)) === false |
|
| 1143 | - || $pos_match > $pos_milieu |
|
| 1144 | - ) { |
|
| 1145 | - $err_b = ['zbug_erreur_boucle_syntaxe', ['id' => $id_boucle]]; |
|
| 1146 | - erreur_squelette($err_b, $result); |
|
| 1147 | - |
|
| 1148 | - $ligne_debut_texte += public_compte_ligne($texte, $pos_debut_texte, $pos_courante + 1); |
|
| 1149 | - $pos_debut_texte = $pos_courante + 1; |
|
| 1150 | - continue; |
|
| 1151 | - } |
|
| 1152 | - |
|
| 1153 | - $result->type_requete = $match[0]; |
|
| 1154 | - $pos_milieu += strlen($match[0]); |
|
| 1155 | - $pos_courante = $pos_milieu; // on s'en sert pour compter les lignes plus precisemment |
|
| 1156 | - |
|
| 1157 | - $type = $match[1]; |
|
| 1158 | - $jointures = trim($match[2]); |
|
| 1159 | - $table_optionnelle = ($match[3]); |
|
| 1160 | - if ($jointures) { |
|
| 1161 | - // on affecte pas ici les jointures explicites, mais dans la compilation |
|
| 1162 | - // ou elles seront completees des jointures declarees |
|
| 1163 | - $result->jointures_explicites = $jointures; |
|
| 1164 | - } |
|
| 1165 | - |
|
| 1166 | - if ($table_optionnelle) { |
|
| 1167 | - $result->table_optionnelle = true; |
|
| 1168 | - $result->type_table_optionnelle = $type; |
|
| 1169 | - } |
|
| 1170 | - |
|
| 1171 | - // 1ere passe sur les criteres, vu comme des arguments sans fct |
|
| 1172 | - // Resultat mis dans result->param |
|
| 1173 | - $pos_fin_criteres = $pos_milieu; |
|
| 1174 | - phraser_args($texte, '/>', '', $all_res, $result, $pos_fin_criteres); |
|
| 1175 | - |
|
| 1176 | - // En 2e passe result->criteres contiendra un tableau |
|
| 1177 | - // pour l'instant on met le source (chaine) : |
|
| 1178 | - // si elle reste ici au final, c'est qu'elle contient une erreur |
|
| 1179 | - $pos_courante = $pos_fin_criteres; // on s'en sert pour compter les lignes plus precisemment |
|
| 1180 | - $result->criteres = substr((string) $texte, $pos_milieu, $pos_fin_criteres - $pos_milieu); |
|
| 1181 | - $pos_milieu = $pos_fin_criteres; |
|
| 1182 | - |
|
| 1183 | - // |
|
| 1184 | - // Recuperer la fin : |
|
| 1185 | - // |
|
| 1186 | - if ($texte[$pos_milieu] === '/') { |
|
| 1187 | - // boucle autofermante : pas de partie conditionnelle apres |
|
| 1188 | - $pos_courante += 2; |
|
| 1189 | - $result->milieu = ''; |
|
| 1190 | - } else { |
|
| 1191 | - $pos_milieu += 1; |
|
| 1192 | - |
|
| 1193 | - $fin_boucle = BALISE_FIN_BOUCLE . $id_boucle_search . '>'; |
|
| 1194 | - $pos_fin = strpos((string) $texte, $fin_boucle, $pos_milieu); |
|
| 1195 | - if ($pos_fin === false) { |
|
| 1196 | - $err_b = [ |
|
| 1197 | - 'zbug_erreur_boucle_fermant', |
|
| 1198 | - ['id' => $id_boucle] |
|
| 1199 | - ]; |
|
| 1200 | - erreur_squelette($err_b, $result); |
|
| 1201 | - $pos_courante += strlen($fin_boucle); |
|
| 1202 | - } |
|
| 1203 | - else { |
|
| 1204 | - // verifier une eventuelle imbrication d'une boucle homonyme |
|
| 1205 | - // (interdite, generera une erreur plus loin, mais permet de signaler la bonne erreur) |
|
| 1206 | - $search_debut_boucle = BALISE_BOUCLE . $id_boucle_search . '('; |
|
| 1207 | - $search_from = $pos_milieu; |
|
| 1208 | - $nb_open = 1; |
|
| 1209 | - $nb_close = 1; |
|
| 1210 | - $maxiter = 0; |
|
| 1211 | - do { |
|
| 1212 | - while ( |
|
| 1213 | - $nb_close < $nb_open |
|
| 1214 | - && ($p = strpos((string) $texte, $fin_boucle, $pos_fin + 1)) |
|
| 1215 | - ) { |
|
| 1216 | - $nb_close++; |
|
| 1217 | - $pos_fin = $p; |
|
| 1218 | - } |
|
| 1219 | - // si on a pas trouve assez de boucles fermantes, sortir de la, on a fait de notre mieux |
|
| 1220 | - if ($nb_close < $nb_open) { |
|
| 1221 | - break; |
|
| 1222 | - } |
|
| 1223 | - while ( |
|
| 1224 | - ($p = strpos((string) $texte, $search_debut_boucle, $search_from)) |
|
| 1225 | - && $p < $pos_fin |
|
| 1226 | - ) { |
|
| 1227 | - $nb_open++; |
|
| 1228 | - $search_from = $p + 1; |
|
| 1229 | - } |
|
| 1230 | - } while ($nb_close < $nb_open && $maxiter++ < 5); |
|
| 1231 | - |
|
| 1232 | - $pos_courante = $pos_fin + strlen($fin_boucle); |
|
| 1233 | - } |
|
| 1234 | - $result->milieu = substr((string) $texte, $pos_milieu, $pos_fin - $pos_milieu); |
|
| 1235 | - } |
|
| 1236 | - |
|
| 1237 | - $ligne_suite = $ligne_apres = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_courante); |
|
| 1238 | - $boucle = public_trouver_fin_boucle($texte, $id_parent, $boucle, $pos_courante, $result); |
|
| 1239 | - |
|
| 1240 | - // |
|
| 1241 | - // 1. Partie conditionnelle apres ? |
|
| 1242 | - // |
|
| 1243 | - if ($boucle['pos_postcond']) { |
|
| 1244 | - $result->apres = substr((string) $texte, $pos_courante, $boucle['pos_postcond'] - $pos_courante); |
|
| 1245 | - $ligne_suite += public_compte_ligne($texte, $pos_courante, $boucle['pos_postcond_inside']); |
|
| 1246 | - $pos_courante = $boucle['pos_postcond_inside'] ; |
|
| 1247 | - } |
|
| 1248 | - |
|
| 1249 | - |
|
| 1250 | - // |
|
| 1251 | - // 2. Partie alternative apres ? |
|
| 1252 | - // |
|
| 1253 | - $ligne_altern = $ligne_suite; |
|
| 1254 | - if ($boucle['pos_altern']) { |
|
| 1255 | - $result->altern = substr((string) $texte, $pos_courante, $boucle['pos_altern'] - $pos_courante); |
|
| 1256 | - $ligne_suite += public_compte_ligne($texte, $pos_courante, $boucle['pos_altern_inside']); |
|
| 1257 | - $pos_courante = $boucle['pos_altern_inside']; |
|
| 1258 | - } |
|
| 1259 | - |
|
| 1260 | - // |
|
| 1261 | - // 3. Partie footer non alternative ? |
|
| 1262 | - // |
|
| 1263 | - $ligne_postaff = $ligne_suite; |
|
| 1264 | - if ($boucle['pos_postaff']) { |
|
| 1265 | - $result->postaff = substr((string) $texte, $pos_courante, $boucle['pos_postaff'] - $pos_courante); |
|
| 1266 | - $ligne_suite += public_compte_ligne($texte, $pos_courante, $boucle['pos_postaff_inside']); |
|
| 1267 | - $pos_courante = $boucle['pos_postaff_inside']; |
|
| 1268 | - } |
|
| 1269 | - |
|
| 1270 | - $result->ligne = $ligne_preaff; |
|
| 1271 | - |
|
| 1272 | - if ($p = strpos($type, ':')) { |
|
| 1273 | - $result->sql_serveur = substr($type, 0, $p); |
|
| 1274 | - $type = substr($type, $p + 1); |
|
| 1275 | - } |
|
| 1276 | - $soustype = strtolower($type); |
|
| 1277 | - |
|
| 1278 | - if (!isset($GLOBALS['table_des_tables'][$soustype])) { |
|
| 1279 | - $soustype = $type; |
|
| 1280 | - } |
|
| 1281 | - |
|
| 1282 | - $result->type_requete = $soustype; |
|
| 1283 | - // Lancer la 2e passe sur les criteres si la 1ere etait bonne |
|
| 1284 | - if (!is_array($result->param)) { |
|
| 1285 | - $err_b = true; |
|
| 1286 | - } else { |
|
| 1287 | - phraser_criteres($result->param, $result); |
|
| 1288 | - if (strncasecmp($soustype, TYPE_RECURSIF, strlen(TYPE_RECURSIF)) == 0) { |
|
| 1289 | - $result->type_requete = TYPE_RECURSIF; |
|
| 1290 | - $args = $result->param; |
|
| 1291 | - array_unshift( |
|
| 1292 | - $args, |
|
| 1293 | - substr($type, strlen(TYPE_RECURSIF)) |
|
| 1294 | - ); |
|
| 1295 | - $result->param = $args; |
|
| 1296 | - } |
|
| 1297 | - } |
|
| 1298 | - |
|
| 1299 | - $descr['id_mere_contexte'] = $id_boucle; |
|
| 1300 | - $result->milieu = public_phraser_html_dist($result->milieu, $id_boucle, $boucles, $descr, $ligne_milieu, $boucle_placeholder); |
|
| 1301 | - // reserver la place dans la pile des boucles pour compiler ensuite dans le bon ordre |
|
| 1302 | - // ie les boucles qui apparaissent dans les partie conditionnelles doivent etre compilees apres cette boucle |
|
| 1303 | - // si il y a deja une boucle de ce nom, cela declenchera une erreur ensuite |
|
| 1304 | - if (empty($boucles[$id_boucle])) { |
|
| 1305 | - $boucles[$id_boucle] = null; |
|
| 1306 | - } |
|
| 1307 | - $result->preaff = public_phraser_html_dist($result->preaff, $id_parent, $boucles, $descr, $ligne_preaff, $boucle_placeholder); |
|
| 1308 | - $result->avant = public_phraser_html_dist($result->avant, $id_parent, $boucles, $descr, $ligne_avant, $boucle_placeholder); |
|
| 1309 | - $result->apres = public_phraser_html_dist($result->apres, $id_parent, $boucles, $descr, $ligne_apres, $boucle_placeholder); |
|
| 1310 | - $result->altern = public_phraser_html_dist($result->altern, $id_parent, $boucles, $descr, $ligne_altern, $boucle_placeholder); |
|
| 1311 | - $result->postaff = public_phraser_html_dist($result->postaff, $id_parent, $boucles, $descr, $ligne_postaff, $boucle_placeholder); |
|
| 1312 | - |
|
| 1313 | - // Prevenir le generateur de code que le squelette est faux |
|
| 1314 | - if ($err_b) { |
|
| 1315 | - $result->type_requete = false; |
|
| 1316 | - } |
|
| 1317 | - |
|
| 1318 | - // Verifier qu'il n'y a pas double definition |
|
| 1319 | - // apres analyse des sous-parties (pas avant). |
|
| 1320 | - if (!empty($boucles[$id_boucle])) { |
|
| 1321 | - if ($boucles[$id_boucle]->type_requete !== false) { |
|
| 1322 | - $err_b_d = [ |
|
| 1323 | - 'zbug_erreur_boucle_double', |
|
| 1324 | - ['id' => $id_boucle] |
|
| 1325 | - ]; |
|
| 1326 | - erreur_squelette($err_b_d, $result); |
|
| 1327 | - // Prevenir le generateur de code que le squelette est faux |
|
| 1328 | - $boucles[$id_boucle]->type_requete = false; |
|
| 1329 | - } |
|
| 1330 | - } else { |
|
| 1331 | - $boucles[$id_boucle] = $result; |
|
| 1332 | - } |
|
| 1333 | - |
|
| 1334 | - // remplacer la boucle par un placeholder qui compte le meme nombre de lignes |
|
| 1335 | - $placeholder = public_generer_boucle_placeholder($id_boucle, $boucles[$id_boucle], $boucle_placeholder, $ligne_suite - $ligne_debut_texte); |
|
| 1336 | - $longueur_boucle = $pos_courante - $boucle['debut_boucle']; |
|
| 1337 | - $texte = substr_replace((string) $texte, $placeholder, $boucle['debut_boucle'], $longueur_boucle); |
|
| 1338 | - $pos_courante = $pos_courante - $longueur_boucle + strlen($placeholder); |
|
| 1339 | - |
|
| 1340 | - // phraser la partie avant le debut de la boucle |
|
| 1341 | - #$all_res = phraser_champs_etendus(substr($texte, $pos_debut_texte, $boucle['debut_boucle'] - $pos_debut_texte), $ligne_debut_texte, $all_res); |
|
| 1342 | - #$all_res[] = &$boucles[$id_boucle]; |
|
| 1343 | - |
|
| 1344 | - $ligne_debut_texte = $ligne_suite; |
|
| 1345 | - $pos_debut_texte = $pos_courante; |
|
| 1346 | - } |
|
| 1347 | - |
|
| 1348 | - return phraser_champs_etendus($texte, $ligne_debut_initial, $all_res); |
|
| 1089 | + $all_res = []; |
|
| 1090 | + // definir un placholder pour les boucles dont on est sur d'avoir aucune occurence dans le squelette |
|
| 1091 | + if (is_null($boucle_placeholder)) { |
|
| 1092 | + do { |
|
| 1093 | + $boucle_placeholder = 'BOUCLE_PLACEHOLDER_' . strtoupper(md5(uniqid())); |
|
| 1094 | + } while (str_contains((string) $texte, $boucle_placeholder)); |
|
| 1095 | + } |
|
| 1096 | + |
|
| 1097 | + $ligne_debut_initial = $ligne_debut_texte; |
|
| 1098 | + $pos_debut_texte = 0; |
|
| 1099 | + while ($boucle = public_trouver_premiere_boucle($texte, $id_parent, $descr, $pos_debut_texte)) { |
|
| 1100 | + $err_b = ''; // indiquera s'il y a eu une erreur |
|
| 1101 | + $result = new Boucle(); |
|
| 1102 | + $result->id_parent = $id_parent; |
|
| 1103 | + $result->descr = $descr; |
|
| 1104 | + |
|
| 1105 | + $pos_courante = $boucle['pos_boucle']; |
|
| 1106 | + $pos_parent = $boucle['pos_parent']; |
|
| 1107 | + $id_boucle_search = $id_boucle = $boucle['id_boucle']; |
|
| 1108 | + |
|
| 1109 | + $ligne_preaff = $ligne_avant = $ligne_milieu = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_parent); |
|
| 1110 | + |
|
| 1111 | + // boucle anonyme ? |
|
| 1112 | + if (!strlen((string) $id_boucle)) { |
|
| 1113 | + $id_boucle = '_anon_L' . $ligne_milieu . '_' . substr(md5('anonyme:' . $id_parent . ':' . json_encode($boucle, JSON_THROW_ON_ERROR)), 0, 8); |
|
| 1114 | + } |
|
| 1115 | + |
|
| 1116 | + $pos_debut_boucle = $pos_courante; |
|
| 1117 | + |
|
| 1118 | + $pos_milieu = $pos_parent; |
|
| 1119 | + |
|
| 1120 | + // Regarder si on a une partie conditionnelle avant <B_xxx> |
|
| 1121 | + if ($boucle['pos_precond'] !== false) { |
|
| 1122 | + $pos_debut_boucle = $boucle['pos_precond']; |
|
| 1123 | + |
|
| 1124 | + $pos_avant = $boucle['pos_precond_inside']; |
|
| 1125 | + $result->avant = substr((string) $texte, $pos_avant, $pos_courante - $pos_avant); |
|
| 1126 | + $ligne_avant = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_avant); |
|
| 1127 | + } |
|
| 1128 | + |
|
| 1129 | + // Regarder si on a une partie inconditionnelle avant <BB_xxx> |
|
| 1130 | + if ($boucle['pos_preaff'] !== false) { |
|
| 1131 | + $end_preaff = $pos_debut_boucle; |
|
| 1132 | + |
|
| 1133 | + $pos_preaff = $boucle['pos_preaff_inside']; |
|
| 1134 | + $result->preaff = substr((string) $texte, $pos_preaff, $end_preaff - $pos_preaff); |
|
| 1135 | + $ligne_preaff = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_preaff); |
|
| 1136 | + } |
|
| 1137 | + |
|
| 1138 | + $result->id_boucle = $id_boucle; |
|
| 1139 | + |
|
| 1140 | + if ( |
|
| 1141 | + !preg_match(SPEC_BOUCLE, (string) $texte, $match, 0, $pos_milieu) |
|
| 1142 | + || ($pos_match = strpos((string) $texte, (string) $match[0], $pos_milieu)) === false |
|
| 1143 | + || $pos_match > $pos_milieu |
|
| 1144 | + ) { |
|
| 1145 | + $err_b = ['zbug_erreur_boucle_syntaxe', ['id' => $id_boucle]]; |
|
| 1146 | + erreur_squelette($err_b, $result); |
|
| 1147 | + |
|
| 1148 | + $ligne_debut_texte += public_compte_ligne($texte, $pos_debut_texte, $pos_courante + 1); |
|
| 1149 | + $pos_debut_texte = $pos_courante + 1; |
|
| 1150 | + continue; |
|
| 1151 | + } |
|
| 1152 | + |
|
| 1153 | + $result->type_requete = $match[0]; |
|
| 1154 | + $pos_milieu += strlen($match[0]); |
|
| 1155 | + $pos_courante = $pos_milieu; // on s'en sert pour compter les lignes plus precisemment |
|
| 1156 | + |
|
| 1157 | + $type = $match[1]; |
|
| 1158 | + $jointures = trim($match[2]); |
|
| 1159 | + $table_optionnelle = ($match[3]); |
|
| 1160 | + if ($jointures) { |
|
| 1161 | + // on affecte pas ici les jointures explicites, mais dans la compilation |
|
| 1162 | + // ou elles seront completees des jointures declarees |
|
| 1163 | + $result->jointures_explicites = $jointures; |
|
| 1164 | + } |
|
| 1165 | + |
|
| 1166 | + if ($table_optionnelle) { |
|
| 1167 | + $result->table_optionnelle = true; |
|
| 1168 | + $result->type_table_optionnelle = $type; |
|
| 1169 | + } |
|
| 1170 | + |
|
| 1171 | + // 1ere passe sur les criteres, vu comme des arguments sans fct |
|
| 1172 | + // Resultat mis dans result->param |
|
| 1173 | + $pos_fin_criteres = $pos_milieu; |
|
| 1174 | + phraser_args($texte, '/>', '', $all_res, $result, $pos_fin_criteres); |
|
| 1175 | + |
|
| 1176 | + // En 2e passe result->criteres contiendra un tableau |
|
| 1177 | + // pour l'instant on met le source (chaine) : |
|
| 1178 | + // si elle reste ici au final, c'est qu'elle contient une erreur |
|
| 1179 | + $pos_courante = $pos_fin_criteres; // on s'en sert pour compter les lignes plus precisemment |
|
| 1180 | + $result->criteres = substr((string) $texte, $pos_milieu, $pos_fin_criteres - $pos_milieu); |
|
| 1181 | + $pos_milieu = $pos_fin_criteres; |
|
| 1182 | + |
|
| 1183 | + // |
|
| 1184 | + // Recuperer la fin : |
|
| 1185 | + // |
|
| 1186 | + if ($texte[$pos_milieu] === '/') { |
|
| 1187 | + // boucle autofermante : pas de partie conditionnelle apres |
|
| 1188 | + $pos_courante += 2; |
|
| 1189 | + $result->milieu = ''; |
|
| 1190 | + } else { |
|
| 1191 | + $pos_milieu += 1; |
|
| 1192 | + |
|
| 1193 | + $fin_boucle = BALISE_FIN_BOUCLE . $id_boucle_search . '>'; |
|
| 1194 | + $pos_fin = strpos((string) $texte, $fin_boucle, $pos_milieu); |
|
| 1195 | + if ($pos_fin === false) { |
|
| 1196 | + $err_b = [ |
|
| 1197 | + 'zbug_erreur_boucle_fermant', |
|
| 1198 | + ['id' => $id_boucle] |
|
| 1199 | + ]; |
|
| 1200 | + erreur_squelette($err_b, $result); |
|
| 1201 | + $pos_courante += strlen($fin_boucle); |
|
| 1202 | + } |
|
| 1203 | + else { |
|
| 1204 | + // verifier une eventuelle imbrication d'une boucle homonyme |
|
| 1205 | + // (interdite, generera une erreur plus loin, mais permet de signaler la bonne erreur) |
|
| 1206 | + $search_debut_boucle = BALISE_BOUCLE . $id_boucle_search . '('; |
|
| 1207 | + $search_from = $pos_milieu; |
|
| 1208 | + $nb_open = 1; |
|
| 1209 | + $nb_close = 1; |
|
| 1210 | + $maxiter = 0; |
|
| 1211 | + do { |
|
| 1212 | + while ( |
|
| 1213 | + $nb_close < $nb_open |
|
| 1214 | + && ($p = strpos((string) $texte, $fin_boucle, $pos_fin + 1)) |
|
| 1215 | + ) { |
|
| 1216 | + $nb_close++; |
|
| 1217 | + $pos_fin = $p; |
|
| 1218 | + } |
|
| 1219 | + // si on a pas trouve assez de boucles fermantes, sortir de la, on a fait de notre mieux |
|
| 1220 | + if ($nb_close < $nb_open) { |
|
| 1221 | + break; |
|
| 1222 | + } |
|
| 1223 | + while ( |
|
| 1224 | + ($p = strpos((string) $texte, $search_debut_boucle, $search_from)) |
|
| 1225 | + && $p < $pos_fin |
|
| 1226 | + ) { |
|
| 1227 | + $nb_open++; |
|
| 1228 | + $search_from = $p + 1; |
|
| 1229 | + } |
|
| 1230 | + } while ($nb_close < $nb_open && $maxiter++ < 5); |
|
| 1231 | + |
|
| 1232 | + $pos_courante = $pos_fin + strlen($fin_boucle); |
|
| 1233 | + } |
|
| 1234 | + $result->milieu = substr((string) $texte, $pos_milieu, $pos_fin - $pos_milieu); |
|
| 1235 | + } |
|
| 1236 | + |
|
| 1237 | + $ligne_suite = $ligne_apres = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_courante); |
|
| 1238 | + $boucle = public_trouver_fin_boucle($texte, $id_parent, $boucle, $pos_courante, $result); |
|
| 1239 | + |
|
| 1240 | + // |
|
| 1241 | + // 1. Partie conditionnelle apres ? |
|
| 1242 | + // |
|
| 1243 | + if ($boucle['pos_postcond']) { |
|
| 1244 | + $result->apres = substr((string) $texte, $pos_courante, $boucle['pos_postcond'] - $pos_courante); |
|
| 1245 | + $ligne_suite += public_compte_ligne($texte, $pos_courante, $boucle['pos_postcond_inside']); |
|
| 1246 | + $pos_courante = $boucle['pos_postcond_inside'] ; |
|
| 1247 | + } |
|
| 1248 | + |
|
| 1249 | + |
|
| 1250 | + // |
|
| 1251 | + // 2. Partie alternative apres ? |
|
| 1252 | + // |
|
| 1253 | + $ligne_altern = $ligne_suite; |
|
| 1254 | + if ($boucle['pos_altern']) { |
|
| 1255 | + $result->altern = substr((string) $texte, $pos_courante, $boucle['pos_altern'] - $pos_courante); |
|
| 1256 | + $ligne_suite += public_compte_ligne($texte, $pos_courante, $boucle['pos_altern_inside']); |
|
| 1257 | + $pos_courante = $boucle['pos_altern_inside']; |
|
| 1258 | + } |
|
| 1259 | + |
|
| 1260 | + // |
|
| 1261 | + // 3. Partie footer non alternative ? |
|
| 1262 | + // |
|
| 1263 | + $ligne_postaff = $ligne_suite; |
|
| 1264 | + if ($boucle['pos_postaff']) { |
|
| 1265 | + $result->postaff = substr((string) $texte, $pos_courante, $boucle['pos_postaff'] - $pos_courante); |
|
| 1266 | + $ligne_suite += public_compte_ligne($texte, $pos_courante, $boucle['pos_postaff_inside']); |
|
| 1267 | + $pos_courante = $boucle['pos_postaff_inside']; |
|
| 1268 | + } |
|
| 1269 | + |
|
| 1270 | + $result->ligne = $ligne_preaff; |
|
| 1271 | + |
|
| 1272 | + if ($p = strpos($type, ':')) { |
|
| 1273 | + $result->sql_serveur = substr($type, 0, $p); |
|
| 1274 | + $type = substr($type, $p + 1); |
|
| 1275 | + } |
|
| 1276 | + $soustype = strtolower($type); |
|
| 1277 | + |
|
| 1278 | + if (!isset($GLOBALS['table_des_tables'][$soustype])) { |
|
| 1279 | + $soustype = $type; |
|
| 1280 | + } |
|
| 1281 | + |
|
| 1282 | + $result->type_requete = $soustype; |
|
| 1283 | + // Lancer la 2e passe sur les criteres si la 1ere etait bonne |
|
| 1284 | + if (!is_array($result->param)) { |
|
| 1285 | + $err_b = true; |
|
| 1286 | + } else { |
|
| 1287 | + phraser_criteres($result->param, $result); |
|
| 1288 | + if (strncasecmp($soustype, TYPE_RECURSIF, strlen(TYPE_RECURSIF)) == 0) { |
|
| 1289 | + $result->type_requete = TYPE_RECURSIF; |
|
| 1290 | + $args = $result->param; |
|
| 1291 | + array_unshift( |
|
| 1292 | + $args, |
|
| 1293 | + substr($type, strlen(TYPE_RECURSIF)) |
|
| 1294 | + ); |
|
| 1295 | + $result->param = $args; |
|
| 1296 | + } |
|
| 1297 | + } |
|
| 1298 | + |
|
| 1299 | + $descr['id_mere_contexte'] = $id_boucle; |
|
| 1300 | + $result->milieu = public_phraser_html_dist($result->milieu, $id_boucle, $boucles, $descr, $ligne_milieu, $boucle_placeholder); |
|
| 1301 | + // reserver la place dans la pile des boucles pour compiler ensuite dans le bon ordre |
|
| 1302 | + // ie les boucles qui apparaissent dans les partie conditionnelles doivent etre compilees apres cette boucle |
|
| 1303 | + // si il y a deja une boucle de ce nom, cela declenchera une erreur ensuite |
|
| 1304 | + if (empty($boucles[$id_boucle])) { |
|
| 1305 | + $boucles[$id_boucle] = null; |
|
| 1306 | + } |
|
| 1307 | + $result->preaff = public_phraser_html_dist($result->preaff, $id_parent, $boucles, $descr, $ligne_preaff, $boucle_placeholder); |
|
| 1308 | + $result->avant = public_phraser_html_dist($result->avant, $id_parent, $boucles, $descr, $ligne_avant, $boucle_placeholder); |
|
| 1309 | + $result->apres = public_phraser_html_dist($result->apres, $id_parent, $boucles, $descr, $ligne_apres, $boucle_placeholder); |
|
| 1310 | + $result->altern = public_phraser_html_dist($result->altern, $id_parent, $boucles, $descr, $ligne_altern, $boucle_placeholder); |
|
| 1311 | + $result->postaff = public_phraser_html_dist($result->postaff, $id_parent, $boucles, $descr, $ligne_postaff, $boucle_placeholder); |
|
| 1312 | + |
|
| 1313 | + // Prevenir le generateur de code que le squelette est faux |
|
| 1314 | + if ($err_b) { |
|
| 1315 | + $result->type_requete = false; |
|
| 1316 | + } |
|
| 1317 | + |
|
| 1318 | + // Verifier qu'il n'y a pas double definition |
|
| 1319 | + // apres analyse des sous-parties (pas avant). |
|
| 1320 | + if (!empty($boucles[$id_boucle])) { |
|
| 1321 | + if ($boucles[$id_boucle]->type_requete !== false) { |
|
| 1322 | + $err_b_d = [ |
|
| 1323 | + 'zbug_erreur_boucle_double', |
|
| 1324 | + ['id' => $id_boucle] |
|
| 1325 | + ]; |
|
| 1326 | + erreur_squelette($err_b_d, $result); |
|
| 1327 | + // Prevenir le generateur de code que le squelette est faux |
|
| 1328 | + $boucles[$id_boucle]->type_requete = false; |
|
| 1329 | + } |
|
| 1330 | + } else { |
|
| 1331 | + $boucles[$id_boucle] = $result; |
|
| 1332 | + } |
|
| 1333 | + |
|
| 1334 | + // remplacer la boucle par un placeholder qui compte le meme nombre de lignes |
|
| 1335 | + $placeholder = public_generer_boucle_placeholder($id_boucle, $boucles[$id_boucle], $boucle_placeholder, $ligne_suite - $ligne_debut_texte); |
|
| 1336 | + $longueur_boucle = $pos_courante - $boucle['debut_boucle']; |
|
| 1337 | + $texte = substr_replace((string) $texte, $placeholder, $boucle['debut_boucle'], $longueur_boucle); |
|
| 1338 | + $pos_courante = $pos_courante - $longueur_boucle + strlen($placeholder); |
|
| 1339 | + |
|
| 1340 | + // phraser la partie avant le debut de la boucle |
|
| 1341 | + #$all_res = phraser_champs_etendus(substr($texte, $pos_debut_texte, $boucle['debut_boucle'] - $pos_debut_texte), $ligne_debut_texte, $all_res); |
|
| 1342 | + #$all_res[] = &$boucles[$id_boucle]; |
|
| 1343 | + |
|
| 1344 | + $ligne_debut_texte = $ligne_suite; |
|
| 1345 | + $pos_debut_texte = $pos_courante; |
|
| 1346 | + } |
|
| 1347 | + |
|
| 1348 | + return phraser_champs_etendus($texte, $ligne_debut_initial, $all_res); |
|
| 1349 | 1349 | } |
@@ -55,19 +55,19 @@ discard block |
||
| 55 | 55 | * Nom d'une balise #TOTO |
| 56 | 56 | * |
| 57 | 57 | * Écriture alambiquée pour rester compatible avec les hexadecimaux des vieux squelettes */ |
| 58 | -define('NOM_DE_CHAMP', '#((' . NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)\b(\*{0,2})"); |
|
| 58 | +define('NOM_DE_CHAMP', '#(('.NOM_DE_BOUCLE."):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)\b(\*{0,2})"); |
|
| 59 | 59 | /** Balise complète [...(#TOTO) ... ] */ |
| 60 | -define('CHAMP_ETENDU', '/\[([^\[]*?)\(' . NOM_DE_CHAMP . '([^)]*\)[^]]*)\]/S'); |
|
| 60 | +define('CHAMP_ETENDU', '/\[([^\[]*?)\('.NOM_DE_CHAMP.'([^)]*\)[^]]*)\]/S'); |
|
| 61 | 61 | |
| 62 | 62 | define('BALISE_INCLURE', '/<INCLU[DR]E[[:space:]]*(\(([^)]*)\))?/S'); |
| 63 | 63 | define('BALISE_POLYGLOTTE', ',<multi>(.*)</multi>,Uims'); |
| 64 | 64 | define('BALISE_IDIOMES', ',<:(([a-z0-9_]+):)?([a-z0-9_]*)({([^\|=>]*=[^\|>]*)})?((\|[^>]*)?:/?>),iS'); |
| 65 | -define('BALISE_IDIOMES_ARGS', '@^\s*([^= ]*)\s*=\s*((' . NOM_DE_CHAMP . '[{][^}]*})?[^,]*)\s*,?\s*@s'); |
|
| 65 | +define('BALISE_IDIOMES_ARGS', '@^\s*([^= ]*)\s*=\s*(('.NOM_DE_CHAMP.'[{][^}]*})?[^,]*)\s*,?\s*@s'); |
|
| 66 | 66 | |
| 67 | 67 | /** Champ sql dans parenthèse ex: (id_article) */ |
| 68 | 68 | define('SQL_ARGS', '(\([^)]*\))'); |
| 69 | 69 | /** Fonction SQL sur un champ ex: SUM(visites) */ |
| 70 | -define('CHAMP_SQL_PLUS_FONC', '`?([A-Z_\/][A-Z_\/0-9.]*)' . SQL_ARGS . '?`?'); |
|
| 70 | +define('CHAMP_SQL_PLUS_FONC', '`?([A-Z_\/][A-Z_\/0-9.]*)'.SQL_ARGS.'?`?'); |
|
| 71 | 71 | |
| 72 | 72 | /** |
| 73 | 73 | * Parser les <INCLURE> dans le texte |
@@ -265,7 +265,7 @@ discard block |
||
| 265 | 265 | |
| 266 | 266 | while ( |
| 267 | 267 | (($p = strpos($texte, '#')) !== false) |
| 268 | - && preg_match('/' . NOM_DE_CHAMP . '/S', $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 268 | + && preg_match('/'.NOM_DE_CHAMP.'/S', $texte, $match, PREG_OFFSET_CAPTURE, $p) |
|
| 269 | 269 | ) { |
| 270 | 270 | $poss = array_column($match, 1); |
| 271 | 271 | $match = array_column($match, 0); |
@@ -419,7 +419,7 @@ discard block |
||
| 419 | 419 | $collecte[] = $champ; |
| 420 | 420 | $args = ltrim($regs[count($regs) - 1]); |
| 421 | 421 | } else { |
| 422 | - if (!preg_match('/' . NOM_DE_CHAMP . '([{|])/', $arg, $r)) { |
|
| 422 | + if (!preg_match('/'.NOM_DE_CHAMP.'([{|])/', $arg, $r)) { |
|
| 423 | 423 | // 0 est un aveu d'impuissance. A completer |
| 424 | 424 | $arg = phraser_champs_exterieurs($arg, 0, $sep, $result); |
| 425 | 425 | |
@@ -505,7 +505,7 @@ discard block |
||
| 505 | 505 | */ |
| 506 | 506 | function phraser_champs_exterieurs(string $texte, int $ligne, string $sep, array $nested_res): array { |
| 507 | 507 | $res = []; |
| 508 | - $preg = ',^%' . preg_quote($sep, ',') . '([0-9]+)(\n*)@,'; |
|
| 508 | + $preg = ',^%'.preg_quote($sep, ',').'([0-9]+)(\n*)@,'; |
|
| 509 | 509 | while (($p = strpos($texte, "%$sep")) !== false) { |
| 510 | 510 | $suite = substr($texte, $p); |
| 511 | 511 | if (!preg_match($preg, $suite, $m)) { |
@@ -580,7 +580,7 @@ discard block |
||
| 580 | 580 | $pos_apres = 0; |
| 581 | 581 | $champs_trouves = phraser_args($match[7], ')', $sep, $champs_trouves, $champ, $pos_apres); |
| 582 | 582 | phraser_vieux($champ); |
| 583 | - $champ->avant = phraser_champs_exterieurs($match[1], $nbl, $sep, $champs_trouves); |
|
| 583 | + $champ->avant = phraser_champs_exterieurs($match[1], $nbl, $sep, $champs_trouves); |
|
| 584 | 584 | $apres = substr($match[7], $pos_apres + 1); |
| 585 | 585 | |
| 586 | 586 | $nbl_debut_champ = 0; |
@@ -596,7 +596,7 @@ discard block |
||
| 596 | 596 | $j = count($champs_trouves) - 1; |
| 597 | 597 | // on remplace ce champ par un placeholder |
| 598 | 598 | // ajouter $nbl_champ retour ligne pour que la partie conserve le nombre de lignes lors des itérations suivantes |
| 599 | - $parties[] = ($t = "%{$sep}{$j}" . str_repeat("\n", $nbl_champ) . '@'); |
|
| 599 | + $parties[] = ($t = "%{$sep}{$j}".str_repeat("\n", $nbl_champ).'@'); |
|
| 600 | 600 | $nbl += $nbl_champ; |
| 601 | 601 | |
| 602 | 602 | $texte = substr($texte, $poss[0] + strlen($match[0])); |
@@ -606,7 +606,7 @@ discard block |
||
| 606 | 606 | // si on a trouvé des morceaux, il faut recommencer |
| 607 | 607 | if (count($parties)) { |
| 608 | 608 | // reprenons tous les morceaux qu'on a mis de côté car ne matchant pas (encore) |
| 609 | - $texte = implode('', $parties) . $texte; |
|
| 609 | + $texte = implode('', $parties).$texte; |
|
| 610 | 610 | } |
| 611 | 611 | } while (count($parties)); |
| 612 | 612 | |
@@ -692,7 +692,7 @@ discard block |
||
| 692 | 692 | // une maniere tres sale de supprimer les "' autour de {critere "xxx","yyy"} |
| 693 | 693 | if (preg_match(',^(["\'])(.*)\1$,', $m[4])) { |
| 694 | 694 | $c = null; |
| 695 | - eval('$c = ' . $m[4] . ';'); |
|
| 695 | + eval('$c = '.$m[4].';'); |
|
| 696 | 696 | if (isset($c)) { |
| 697 | 697 | $m[4] = $c; |
| 698 | 698 | } |
@@ -772,7 +772,7 @@ discard block |
||
| 772 | 772 | if (preg_match(',^ *([0-9-]+) *(/) *(.+) *$,', (string) $param, $m)) { |
| 773 | 773 | $crit = phraser_critere_infixe($m[1], $m[3], $v, '/', '', ''); |
| 774 | 774 | } elseif ( |
| 775 | - preg_match(',^([!]?)(' . CHAMP_SQL_PLUS_FONC . |
|
| 775 | + preg_match(',^([!]?)('.CHAMP_SQL_PLUS_FONC. |
|
| 776 | 776 | ')[[:space:]]*(\??)(!?)(<=?|>=?|==?|\b(?:IN|LIKE)\b)(.*)$,is', (string) $param, $m) |
| 777 | 777 | ) { |
| 778 | 778 | $a2 = trim($m[8]); |
@@ -789,8 +789,8 @@ discard block |
||
| 789 | 789 | ); |
| 790 | 790 | $crit->exclus = $m[1]; |
| 791 | 791 | } elseif ( |
| 792 | - preg_match('/^([!]?)\s*(' . |
|
| 793 | - CHAMP_SQL_PLUS_FONC . |
|
| 792 | + preg_match('/^([!]?)\s*('. |
|
| 793 | + CHAMP_SQL_PLUS_FONC. |
|
| 794 | 794 | ')\s*(\??)(.*)$/is', (string) $param, $m) |
| 795 | 795 | ) { |
| 796 | 796 | // contient aussi les comparaisons implicites ! |
@@ -928,7 +928,7 @@ discard block |
||
| 928 | 928 | } |
| 929 | 929 | |
| 930 | 930 | // trouver sa position de depart reelle : au <Bxx> ou au <BBxx> |
| 931 | - $precond_boucle = BALISE_PRECOND_BOUCLE . $id_boucle . '>'; |
|
| 931 | + $precond_boucle = BALISE_PRECOND_BOUCLE.$id_boucle.'>'; |
|
| 932 | 932 | $pos_precond = strpos((string) $texte, $precond_boucle, $id_boucle ? $pos_debut_texte : $pos_derniere_boucle_anonyme); |
| 933 | 933 | if ( |
| 934 | 934 | $pos_precond !== false |
@@ -939,7 +939,7 @@ discard block |
||
| 939 | 939 | $boucle['pos_precond_inside'] = $pos_precond + strlen($precond_boucle); |
| 940 | 940 | } |
| 941 | 941 | |
| 942 | - $preaff_boucle = BALISE_PREAFF_BOUCLE . $id_boucle . '>'; |
|
| 942 | + $preaff_boucle = BALISE_PREAFF_BOUCLE.$id_boucle.'>'; |
|
| 943 | 943 | $pos_preaff = strpos((string) $texte, $preaff_boucle, $id_boucle ? $pos_debut_texte : $pos_derniere_boucle_anonyme); |
| 944 | 944 | if ( |
| 945 | 945 | $pos_preaff !== false |
@@ -988,13 +988,13 @@ discard block |
||
| 988 | 988 | $pos_anonyme_next = null; |
| 989 | 989 | // si c'est une boucle anonyme, chercher la position de la prochaine boucle anonyme |
| 990 | 990 | if (!strlen((string) $id_boucle)) { |
| 991 | - $pos_anonyme_next = strpos((string) $texte, BALISE_BOUCLE . '(', $pos_courante); |
|
| 991 | + $pos_anonyme_next = strpos((string) $texte, BALISE_BOUCLE.'(', $pos_courante); |
|
| 992 | 992 | } |
| 993 | 993 | |
| 994 | 994 | // |
| 995 | 995 | // 1. Recuperer la partie conditionnelle apres |
| 996 | 996 | // |
| 997 | - $apres_boucle = BALISE_POSTCOND_BOUCLE . $id_boucle . '>'; |
|
| 997 | + $apres_boucle = BALISE_POSTCOND_BOUCLE.$id_boucle.'>'; |
|
| 998 | 998 | $pos_apres = strpos((string) $texte, $apres_boucle, $pos_courante); |
| 999 | 999 | if ( |
| 1000 | 1000 | $pos_apres !== false |
@@ -1003,13 +1003,13 @@ discard block |
||
| 1003 | 1003 | $boucle['pos_postcond'] = $pos_apres; |
| 1004 | 1004 | $pos_apres += strlen($apres_boucle); |
| 1005 | 1005 | $boucle['pos_postcond_inside'] = $pos_apres; |
| 1006 | - $pos_courante = $pos_apres ; |
|
| 1006 | + $pos_courante = $pos_apres; |
|
| 1007 | 1007 | } |
| 1008 | 1008 | |
| 1009 | 1009 | // |
| 1010 | 1010 | // 2. Récuperer la partie alternative apres |
| 1011 | 1011 | // |
| 1012 | - $altern_boucle = BALISE_ALT_BOUCLE . $id_boucle . '>'; |
|
| 1012 | + $altern_boucle = BALISE_ALT_BOUCLE.$id_boucle.'>'; |
|
| 1013 | 1013 | $pos_altern = strpos((string) $texte, $altern_boucle, $pos_courante); |
| 1014 | 1014 | if ( |
| 1015 | 1015 | $pos_altern !== false |
@@ -1024,7 +1024,7 @@ discard block |
||
| 1024 | 1024 | // |
| 1025 | 1025 | // 3. Recuperer la partie footer non alternative |
| 1026 | 1026 | // |
| 1027 | - $postaff_boucle = BALISE_POSTAFF_BOUCLE . $id_boucle . '>'; |
|
| 1027 | + $postaff_boucle = BALISE_POSTAFF_BOUCLE.$id_boucle.'>'; |
|
| 1028 | 1028 | $pos_postaff = strpos((string) $texte, $postaff_boucle, $pos_courante); |
| 1029 | 1029 | if ( |
| 1030 | 1030 | $pos_postaff !== false |
@@ -1033,7 +1033,7 @@ discard block |
||
| 1033 | 1033 | $boucle['pos_postaff'] = $pos_postaff; |
| 1034 | 1034 | $pos_postaff += strlen($postaff_boucle); |
| 1035 | 1035 | $boucle['pos_postaff_inside'] = $pos_postaff; |
| 1036 | - $pos_courante = $pos_postaff ; |
|
| 1036 | + $pos_courante = $pos_postaff; |
|
| 1037 | 1037 | } |
| 1038 | 1038 | |
| 1039 | 1039 | return $boucle; |
@@ -1069,7 +1069,7 @@ discard block |
||
| 1069 | 1069 | * @return string |
| 1070 | 1070 | */ |
| 1071 | 1071 | function public_generer_boucle_placeholder(string $id_boucle, &$boucle, string $boucle_placeholder, int $nb_lignes): string { |
| 1072 | - $placeholder = "[(#{$boucle_placeholder}{" . $id_boucle . '})' . str_pad('', $nb_lignes, "\n") . ']'; |
|
| 1072 | + $placeholder = "[(#{$boucle_placeholder}{".$id_boucle.'})'.str_pad('', $nb_lignes, "\n").']'; |
|
| 1073 | 1073 | //memoriser la boucle a reinjecter |
| 1074 | 1074 | $id_boucle = "$id_boucle"; |
| 1075 | 1075 | phraser_boucle_placeholder($id_boucle, $boucle_placeholder, $boucle); |
@@ -1090,7 +1090,7 @@ discard block |
||
| 1090 | 1090 | // definir un placholder pour les boucles dont on est sur d'avoir aucune occurence dans le squelette |
| 1091 | 1091 | if (is_null($boucle_placeholder)) { |
| 1092 | 1092 | do { |
| 1093 | - $boucle_placeholder = 'BOUCLE_PLACEHOLDER_' . strtoupper(md5(uniqid())); |
|
| 1093 | + $boucle_placeholder = 'BOUCLE_PLACEHOLDER_'.strtoupper(md5(uniqid())); |
|
| 1094 | 1094 | } while (str_contains((string) $texte, $boucle_placeholder)); |
| 1095 | 1095 | } |
| 1096 | 1096 | |
@@ -1110,7 +1110,7 @@ discard block |
||
| 1110 | 1110 | |
| 1111 | 1111 | // boucle anonyme ? |
| 1112 | 1112 | if (!strlen((string) $id_boucle)) { |
| 1113 | - $id_boucle = '_anon_L' . $ligne_milieu . '_' . substr(md5('anonyme:' . $id_parent . ':' . json_encode($boucle, JSON_THROW_ON_ERROR)), 0, 8); |
|
| 1113 | + $id_boucle = '_anon_L'.$ligne_milieu.'_'.substr(md5('anonyme:'.$id_parent.':'.json_encode($boucle, JSON_THROW_ON_ERROR)), 0, 8); |
|
| 1114 | 1114 | } |
| 1115 | 1115 | |
| 1116 | 1116 | $pos_debut_boucle = $pos_courante; |
@@ -1123,7 +1123,7 @@ discard block |
||
| 1123 | 1123 | |
| 1124 | 1124 | $pos_avant = $boucle['pos_precond_inside']; |
| 1125 | 1125 | $result->avant = substr((string) $texte, $pos_avant, $pos_courante - $pos_avant); |
| 1126 | - $ligne_avant = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_avant); |
|
| 1126 | + $ligne_avant = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_avant); |
|
| 1127 | 1127 | } |
| 1128 | 1128 | |
| 1129 | 1129 | // Regarder si on a une partie inconditionnelle avant <BB_xxx> |
@@ -1132,7 +1132,7 @@ discard block |
||
| 1132 | 1132 | |
| 1133 | 1133 | $pos_preaff = $boucle['pos_preaff_inside']; |
| 1134 | 1134 | $result->preaff = substr((string) $texte, $pos_preaff, $end_preaff - $pos_preaff); |
| 1135 | - $ligne_preaff = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_preaff); |
|
| 1135 | + $ligne_preaff = $ligne_debut_texte + public_compte_ligne($texte, $pos_debut_texte, $pos_preaff); |
|
| 1136 | 1136 | } |
| 1137 | 1137 | |
| 1138 | 1138 | $result->id_boucle = $id_boucle; |
@@ -1190,7 +1190,7 @@ discard block |
||
| 1190 | 1190 | } else { |
| 1191 | 1191 | $pos_milieu += 1; |
| 1192 | 1192 | |
| 1193 | - $fin_boucle = BALISE_FIN_BOUCLE . $id_boucle_search . '>'; |
|
| 1193 | + $fin_boucle = BALISE_FIN_BOUCLE.$id_boucle_search.'>'; |
|
| 1194 | 1194 | $pos_fin = strpos((string) $texte, $fin_boucle, $pos_milieu); |
| 1195 | 1195 | if ($pos_fin === false) { |
| 1196 | 1196 | $err_b = [ |
@@ -1203,7 +1203,7 @@ discard block |
||
| 1203 | 1203 | else { |
| 1204 | 1204 | // verifier une eventuelle imbrication d'une boucle homonyme |
| 1205 | 1205 | // (interdite, generera une erreur plus loin, mais permet de signaler la bonne erreur) |
| 1206 | - $search_debut_boucle = BALISE_BOUCLE . $id_boucle_search . '('; |
|
| 1206 | + $search_debut_boucle = BALISE_BOUCLE.$id_boucle_search.'('; |
|
| 1207 | 1207 | $search_from = $pos_milieu; |
| 1208 | 1208 | $nb_open = 1; |
| 1209 | 1209 | $nb_close = 1; |
@@ -1243,7 +1243,7 @@ discard block |
||
| 1243 | 1243 | if ($boucle['pos_postcond']) { |
| 1244 | 1244 | $result->apres = substr((string) $texte, $pos_courante, $boucle['pos_postcond'] - $pos_courante); |
| 1245 | 1245 | $ligne_suite += public_compte_ligne($texte, $pos_courante, $boucle['pos_postcond_inside']); |
| 1246 | - $pos_courante = $boucle['pos_postcond_inside'] ; |
|
| 1246 | + $pos_courante = $boucle['pos_postcond_inside']; |
|
| 1247 | 1247 | } |
| 1248 | 1248 | |
| 1249 | 1249 | |
@@ -908,8 +908,7 @@ discard block |
||
| 908 | 908 | erreur_squelette($err_b, $result); |
| 909 | 909 | |
| 910 | 910 | continue; |
| 911 | - } |
|
| 912 | - else { |
|
| 911 | + } else { |
|
| 913 | 912 | $boucle = [ |
| 914 | 913 | 'id_boucle' => $id_boucle, |
| 915 | 914 | 'id_boucle_err' => $id_boucle, |
@@ -1049,8 +1048,7 @@ discard block |
||
| 1049 | 1048 | // si c'est un appel pour memoriser une boucle, memorisons la |
| 1050 | 1049 | if (is_string($champ) && !empty($boucle_placeholder) && !empty($boucle)) { |
| 1051 | 1050 | $boucles_connues[$boucle_placeholder][$champ] = &$boucle; |
| 1052 | - } |
|
| 1053 | - else { |
|
| 1051 | + } else { |
|
| 1054 | 1052 | if (!empty($champ->nom_champ) && !empty($boucles_connues[$champ->nom_champ])) { |
| 1055 | 1053 | $placeholder = $champ->nom_champ; |
| 1056 | 1054 | $id = reset($champ->param[0][1]); |
@@ -1199,8 +1197,7 @@ discard block |
||
| 1199 | 1197 | ]; |
| 1200 | 1198 | erreur_squelette($err_b, $result); |
| 1201 | 1199 | $pos_courante += strlen($fin_boucle); |
| 1202 | - } |
|
| 1203 | - else { |
|
| 1200 | + } else { |
|
| 1204 | 1201 | // verifier une eventuelle imbrication d'une boucle homonyme |
| 1205 | 1202 | // (interdite, generera une erreur plus loin, mais permet de signaler la bonne erreur) |
| 1206 | 1203 | $search_debut_boucle = BALISE_BOUCLE . $id_boucle_search . '('; |
@@ -5,100 +5,100 @@ |
||
| 5 | 5 | |
| 6 | 6 | return [ |
| 7 | 7 | |
| 8 | - // A |
|
| 9 | - 'accueil_site' => 'Halaman Depan', # MODIF |
|
| 10 | - 'articles' => 'Artikel-artikel', |
|
| 11 | - 'articles_auteur' => 'Artikel-artikel penulis ini', |
|
| 12 | - 'articles_populaires' => 'Artikel-artikel yang paling banyak dibaca', |
|
| 13 | - 'articles_rubrique' => 'Artikel-artikel bagian ini', |
|
| 14 | - 'aucun_article' => 'Tidak ada artikel di alamat ini', |
|
| 15 | - 'aucun_auteur' => 'Tidak ada penulis di alamat ini', |
|
| 16 | - 'aucun_site' => 'Tidak ada situs di alamat ini', |
|
| 17 | - 'aucune_breve' => 'Tidak ada berita di alamat ini', |
|
| 18 | - 'aucune_rubrique' => 'Tidak ada bagian di alamat ini', |
|
| 19 | - 'autres_breves' => 'Berita lainnya', |
|
| 20 | - 'autres_groupes_mots_clefs' => 'Kelompok-kelompok kata kunci lainnya', |
|
| 21 | - 'autres_sites' => 'Situs-situs lainnya', |
|
| 8 | + // A |
|
| 9 | + 'accueil_site' => 'Halaman Depan', # MODIF |
|
| 10 | + 'articles' => 'Artikel-artikel', |
|
| 11 | + 'articles_auteur' => 'Artikel-artikel penulis ini', |
|
| 12 | + 'articles_populaires' => 'Artikel-artikel yang paling banyak dibaca', |
|
| 13 | + 'articles_rubrique' => 'Artikel-artikel bagian ini', |
|
| 14 | + 'aucun_article' => 'Tidak ada artikel di alamat ini', |
|
| 15 | + 'aucun_auteur' => 'Tidak ada penulis di alamat ini', |
|
| 16 | + 'aucun_site' => 'Tidak ada situs di alamat ini', |
|
| 17 | + 'aucune_breve' => 'Tidak ada berita di alamat ini', |
|
| 18 | + 'aucune_rubrique' => 'Tidak ada bagian di alamat ini', |
|
| 19 | + 'autres_breves' => 'Berita lainnya', |
|
| 20 | + 'autres_groupes_mots_clefs' => 'Kelompok-kelompok kata kunci lainnya', |
|
| 21 | + 'autres_sites' => 'Situs-situs lainnya', |
|
| 22 | 22 | |
| 23 | - // B |
|
| 24 | - 'bonjour' => 'Halo', |
|
| 23 | + // B |
|
| 24 | + 'bonjour' => 'Halo', |
|
| 25 | 25 | |
| 26 | - // C |
|
| 27 | - 'commenter_site' => 'Komentar di situs ini', |
|
| 26 | + // C |
|
| 27 | + 'commenter_site' => 'Komentar di situs ini', |
|
| 28 | 28 | |
| 29 | - // D |
|
| 30 | - 'date' => 'Tanggal', |
|
| 31 | - 'dernier_ajout' => 'Penambahan terbaru', |
|
| 32 | - 'dernieres_breves' => 'Berita terbaru', |
|
| 33 | - 'derniers_articles' => 'Artikel-artikel terbaru', |
|
| 34 | - 'derniers_commentaires' => 'Komentar-komentar terbaru', |
|
| 35 | - 'derniers_messages_forum' => 'Pesan-pesan terbaru yang dipublikasikan di forum ini', |
|
| 29 | + // D |
|
| 30 | + 'date' => 'Tanggal', |
|
| 31 | + 'dernier_ajout' => 'Penambahan terbaru', |
|
| 32 | + 'dernieres_breves' => 'Berita terbaru', |
|
| 33 | + 'derniers_articles' => 'Artikel-artikel terbaru', |
|
| 34 | + 'derniers_commentaires' => 'Komentar-komentar terbaru', |
|
| 35 | + 'derniers_messages_forum' => 'Pesan-pesan terbaru yang dipublikasikan di forum ini', |
|
| 36 | 36 | |
| 37 | - // E |
|
| 38 | - 'edition_mode_texte' => 'Tampilan teks saja', |
|
| 39 | - 'en_reponse' => 'Membalas kepada:', |
|
| 40 | - 'en_resume' => 'Ringkasan', |
|
| 41 | - 'envoyer_message' => 'Untuk mengirimkan sebuah pesan', |
|
| 42 | - 'espace_prive' => 'Area pribadi', |
|
| 37 | + // E |
|
| 38 | + 'edition_mode_texte' => 'Tampilan teks saja', |
|
| 39 | + 'en_reponse' => 'Membalas kepada:', |
|
| 40 | + 'en_resume' => 'Ringkasan', |
|
| 41 | + 'envoyer_message' => 'Untuk mengirimkan sebuah pesan', |
|
| 42 | + 'espace_prive' => 'Area pribadi', |
|
| 43 | 43 | |
| 44 | - // H |
|
| 45 | - 'hierarchie_site' => 'Hirarki situs', |
|
| 44 | + // H |
|
| 45 | + 'hierarchie_site' => 'Hirarki situs', |
|
| 46 | 46 | |
| 47 | - // J |
|
| 48 | - 'jours' => 'hari', |
|
| 47 | + // J |
|
| 48 | + 'jours' => 'hari', |
|
| 49 | 49 | |
| 50 | - // M |
|
| 51 | - 'meme_auteur' => 'Oleh penulis yang sama', |
|
| 52 | - 'meme_rubrique' => 'Dalam bagian yang sama', |
|
| 53 | - 'memes_auteurs' => 'Oleh penulis-penulis yang sama', |
|
| 54 | - 'message' => 'Pesan', |
|
| 55 | - 'messages_forum' => 'Pesan-pesan forum', # MODIF |
|
| 56 | - 'messages_recents' => 'Pesan-pesan forum terbaru', |
|
| 57 | - 'mots_clefs' => 'Kata-kata kunci', |
|
| 58 | - 'mots_clefs_meme_groupe' => 'Kata-kata kunci dalam kelompok yang sama', |
|
| 50 | + // M |
|
| 51 | + 'meme_auteur' => 'Oleh penulis yang sama', |
|
| 52 | + 'meme_rubrique' => 'Dalam bagian yang sama', |
|
| 53 | + 'memes_auteurs' => 'Oleh penulis-penulis yang sama', |
|
| 54 | + 'message' => 'Pesan', |
|
| 55 | + 'messages_forum' => 'Pesan-pesan forum', # MODIF |
|
| 56 | + 'messages_recents' => 'Pesan-pesan forum terbaru', |
|
| 57 | + 'mots_clefs' => 'Kata-kata kunci', |
|
| 58 | + 'mots_clefs_meme_groupe' => 'Kata-kata kunci dalam kelompok yang sama', |
|
| 59 | 59 | |
| 60 | - // N |
|
| 61 | - 'navigation' => 'Navigasi', |
|
| 62 | - 'nom' => 'Nama', |
|
| 63 | - 'nouveautes' => 'Yang terbaru', |
|
| 64 | - 'nouveautes_web' => 'Yang terbaru di dunia Web', |
|
| 65 | - 'nouveaux_articles' => 'Artikel-artikel baru', |
|
| 66 | - 'nouvelles_breves' => 'Berita-berita baru', |
|
| 60 | + // N |
|
| 61 | + 'navigation' => 'Navigasi', |
|
| 62 | + 'nom' => 'Nama', |
|
| 63 | + 'nouveautes' => 'Yang terbaru', |
|
| 64 | + 'nouveautes_web' => 'Yang terbaru di dunia Web', |
|
| 65 | + 'nouveaux_articles' => 'Artikel-artikel baru', |
|
| 66 | + 'nouvelles_breves' => 'Berita-berita baru', |
|
| 67 | 67 | |
| 68 | - // P |
|
| 69 | - 'page_precedente' => 'halaman sebelumnya', |
|
| 70 | - 'page_suivante' => 'halaman selanjutnya', |
|
| 71 | - 'par_auteur' => 'oleh ', |
|
| 72 | - 'participer_site' => 'Anda dapat berpartisipasi secara aktif di situs web ini dan menulis artikel anda sendiri dengan sebelumnya mendaftarkan diri di bawah ini. Anda akan menerima segera sebuah e-mail yang berisikan kode akses ke area pribadi situs ini.', |
|
| 73 | - 'plan_site' => 'Peta Situs', |
|
| 74 | - 'popularite' => 'Popularitas', |
|
| 75 | - 'poster_message' => 'Untuk mengirimkan sebuah pesan', |
|
| 76 | - 'proposer_site' => 'Anda dapat merekomendasikan sebuah situs untuk ditambahkan ke dalam bagian ini:', |
|
| 68 | + // P |
|
| 69 | + 'page_precedente' => 'halaman sebelumnya', |
|
| 70 | + 'page_suivante' => 'halaman selanjutnya', |
|
| 71 | + 'par_auteur' => 'oleh ', |
|
| 72 | + 'participer_site' => 'Anda dapat berpartisipasi secara aktif di situs web ini dan menulis artikel anda sendiri dengan sebelumnya mendaftarkan diri di bawah ini. Anda akan menerima segera sebuah e-mail yang berisikan kode akses ke area pribadi situs ini.', |
|
| 73 | + 'plan_site' => 'Peta Situs', |
|
| 74 | + 'popularite' => 'Popularitas', |
|
| 75 | + 'poster_message' => 'Untuk mengirimkan sebuah pesan', |
|
| 76 | + 'proposer_site' => 'Anda dapat merekomendasikan sebuah situs untuk ditambahkan ke dalam bagian ini:', |
|
| 77 | 77 | |
| 78 | - // R |
|
| 79 | - 'repondre_article' => 'Balasan pada artikel ini', |
|
| 80 | - 'repondre_breve' => 'Balasan pada artikel berita ini', |
|
| 81 | - 'resultats_recherche' => 'Hasil pencarian', |
|
| 82 | - 'retour_debut_forums' => 'Kembali ke awal forum', |
|
| 83 | - 'rubrique' => 'Bagian', |
|
| 84 | - 'rubriques' => 'Bagian', |
|
| 78 | + // R |
|
| 79 | + 'repondre_article' => 'Balasan pada artikel ini', |
|
| 80 | + 'repondre_breve' => 'Balasan pada artikel berita ini', |
|
| 81 | + 'resultats_recherche' => 'Hasil pencarian', |
|
| 82 | + 'retour_debut_forums' => 'Kembali ke awal forum', |
|
| 83 | + 'rubrique' => 'Bagian', |
|
| 84 | + 'rubriques' => 'Bagian', |
|
| 85 | 85 | |
| 86 | - // S |
|
| 87 | - 'signatures_petition' => 'Tanda tangan', |
|
| 88 | - 'site_realise_avec_spip' => 'Situs dibuat dengan SPIP', |
|
| 89 | - 'sites_web' => 'Situs-situs web', |
|
| 90 | - 'sous_rubriques' => 'Sub-sub bagian', |
|
| 91 | - 'suite' => 'lanjut', |
|
| 92 | - 'sur_web' => 'Di Web', |
|
| 93 | - 'syndiquer_rubrique' => 'Sindikasi bagian ini', |
|
| 94 | - 'syndiquer_site' => 'Sindikasi seluruh isi situs', |
|
| 86 | + // S |
|
| 87 | + 'signatures_petition' => 'Tanda tangan', |
|
| 88 | + 'site_realise_avec_spip' => 'Situs dibuat dengan SPIP', |
|
| 89 | + 'sites_web' => 'Situs-situs web', |
|
| 90 | + 'sous_rubriques' => 'Sub-sub bagian', |
|
| 91 | + 'suite' => 'lanjut', |
|
| 92 | + 'sur_web' => 'Di Web', |
|
| 93 | + 'syndiquer_rubrique' => 'Sindikasi bagian ini', |
|
| 94 | + 'syndiquer_site' => 'Sindikasi seluruh isi situs', |
|
| 95 | 95 | |
| 96 | - // T |
|
| 97 | - 'texte_lettre_information' => 'Berikut adalah laporan berkala situs', |
|
| 98 | - 'texte_lettre_information_2' => 'Laporan ini memberikan ringkasan artikel-artikel dan berita-berita yang dipublikasikan sejak', # MODIF |
|
| 96 | + // T |
|
| 97 | + 'texte_lettre_information' => 'Berikut adalah laporan berkala situs', |
|
| 98 | + 'texte_lettre_information_2' => 'Laporan ini memberikan ringkasan artikel-artikel dan berita-berita yang dipublikasikan sejak', # MODIF |
|
| 99 | 99 | |
| 100 | - // V |
|
| 101 | - 'ver_imprimer' => 'Versi cetak', |
|
| 102 | - 'voir_en_ligne' => 'Lihat secara online', |
|
| 103 | - 'voir_squelette' => 'ٍTampilkan templat halaman ini', |
|
| 100 | + // V |
|
| 101 | + 'ver_imprimer' => 'Versi cetak', |
|
| 102 | + 'voir_en_ligne' => 'Lihat secara online', |
|
| 103 | + 'voir_squelette' => 'ٍTampilkan templat halaman ini', |
|
| 104 | 104 | ]; |
@@ -5,484 +5,484 @@ discard block |
||
| 5 | 5 | |
| 6 | 6 | return [ |
| 7 | 7 | |
| 8 | - // A |
|
| 9 | - 'activer_plugin' => 'Activar l’ajuston', |
|
| 10 | - 'aide_non_disponible' => 'Aquela part de l’ajuda en linha es pas encara disponibla per aquesta lenga.', |
|
| 11 | - 'auteur' => 'Autor :', |
|
| 12 | - 'avis_acces_interdit' => 'Accès proïbit.', |
|
| 13 | - 'avis_article_modifie' => 'Atencion, @nom_auteur_modif@ a trabalhat sus aquel article fa @date_diff@ minutas', |
|
| 14 | - 'avis_aucun_resultat' => 'Ges de resultat.', |
|
| 15 | - 'avis_chemin_invalide_1' => 'Lo camin qu’avètz chausit', |
|
| 16 | - 'avis_chemin_invalide_2' => 'sembla pas valid. Vougatz tornar a la pagina anteriora per verificar leis informacions fornidas.', |
|
| 17 | - 'avis_connexion_echec_1' => 'La connexion au servidor SQL s’es encalada.', # MODIF |
|
| 18 | - 'avis_connexion_echec_2' => 'Tornatz a la pagina anteriora, e verificatz leis informacions qu’avètz fornidas.', |
|
| 19 | - 'avis_connexion_echec_3' => '<b>N.B.</b> Sus fòrça servidors, devètz <b>demandar</b> qu’activen vòstre accès a la basa SQL avans de la poder utilizar. Se vos podètz pas connectar, verificatz qu’agatz ben realizat aqueu procediment.', # MODIF |
|
| 20 | - 'avis_connexion_ldap_echec_1' => 'La connexion au servidor LDAP s’es encalada.', |
|
| 21 | - 'avis_connexion_ldap_echec_2' => 'Tornatz a la pagina anteriora, e verificatz leis informacions qu’avètz fornidas. ', |
|
| 22 | - 'avis_connexion_ldap_echec_3' => 'Alternativament, utilizetz pas lo supòrt LDAP per importar d’utilizaires.', |
|
| 23 | - 'avis_deplacement_rubrique' => 'Atention! Aquela rubrica conten @contient_breves@ brèvas@scb@: se la desplaçatz, voudretz ben oscar aquela casa de confirmacion.', |
|
| 24 | - 'avis_erreur_connexion_mysql' => 'Error de connexion SQL', |
|
| 25 | - 'avis_espace_interdit' => '<b>Espaci proïbit</b><p>SPIP es ja installat.', # MODIF |
|
| 26 | - 'avis_lecture_noms_bases_1' => 'Lo programa d’installacion a pas pogut legir lei noms dei basas de donadas installadas.', |
|
| 27 | - 'avis_lecture_noms_bases_2' => 'Siá ges de basa es disponibla, siá la foncion que permet d’entierar lei basas es estada desactivada per de rasons de seguretat (aquò’s lo cas en cò de mai d’un aubergador).', |
|
| 28 | - 'avis_lecture_noms_bases_3' => 'Dins la segonda alternativa, es probable qu’una basa que pòrta vòstre nom de login siá utilizabla:', |
|
| 29 | - 'avis_non_acces_page' => 'Podètz pas accedir a aquela pagina.', |
|
| 30 | - 'avis_operation_echec' => 'L’operacion s’es encalada.', |
|
| 31 | - 'avis_suppression_base' => 'ATENCION, suprimir lei donadas es irreversible', |
|
| 8 | + // A |
|
| 9 | + 'activer_plugin' => 'Activar l’ajuston', |
|
| 10 | + 'aide_non_disponible' => 'Aquela part de l’ajuda en linha es pas encara disponibla per aquesta lenga.', |
|
| 11 | + 'auteur' => 'Autor :', |
|
| 12 | + 'avis_acces_interdit' => 'Accès proïbit.', |
|
| 13 | + 'avis_article_modifie' => 'Atencion, @nom_auteur_modif@ a trabalhat sus aquel article fa @date_diff@ minutas', |
|
| 14 | + 'avis_aucun_resultat' => 'Ges de resultat.', |
|
| 15 | + 'avis_chemin_invalide_1' => 'Lo camin qu’avètz chausit', |
|
| 16 | + 'avis_chemin_invalide_2' => 'sembla pas valid. Vougatz tornar a la pagina anteriora per verificar leis informacions fornidas.', |
|
| 17 | + 'avis_connexion_echec_1' => 'La connexion au servidor SQL s’es encalada.', # MODIF |
|
| 18 | + 'avis_connexion_echec_2' => 'Tornatz a la pagina anteriora, e verificatz leis informacions qu’avètz fornidas.', |
|
| 19 | + 'avis_connexion_echec_3' => '<b>N.B.</b> Sus fòrça servidors, devètz <b>demandar</b> qu’activen vòstre accès a la basa SQL avans de la poder utilizar. Se vos podètz pas connectar, verificatz qu’agatz ben realizat aqueu procediment.', # MODIF |
|
| 20 | + 'avis_connexion_ldap_echec_1' => 'La connexion au servidor LDAP s’es encalada.', |
|
| 21 | + 'avis_connexion_ldap_echec_2' => 'Tornatz a la pagina anteriora, e verificatz leis informacions qu’avètz fornidas. ', |
|
| 22 | + 'avis_connexion_ldap_echec_3' => 'Alternativament, utilizetz pas lo supòrt LDAP per importar d’utilizaires.', |
|
| 23 | + 'avis_deplacement_rubrique' => 'Atention! Aquela rubrica conten @contient_breves@ brèvas@scb@: se la desplaçatz, voudretz ben oscar aquela casa de confirmacion.', |
|
| 24 | + 'avis_erreur_connexion_mysql' => 'Error de connexion SQL', |
|
| 25 | + 'avis_espace_interdit' => '<b>Espaci proïbit</b><p>SPIP es ja installat.', # MODIF |
|
| 26 | + 'avis_lecture_noms_bases_1' => 'Lo programa d’installacion a pas pogut legir lei noms dei basas de donadas installadas.', |
|
| 27 | + 'avis_lecture_noms_bases_2' => 'Siá ges de basa es disponibla, siá la foncion que permet d’entierar lei basas es estada desactivada per de rasons de seguretat (aquò’s lo cas en cò de mai d’un aubergador).', |
|
| 28 | + 'avis_lecture_noms_bases_3' => 'Dins la segonda alternativa, es probable qu’una basa que pòrta vòstre nom de login siá utilizabla:', |
|
| 29 | + 'avis_non_acces_page' => 'Podètz pas accedir a aquela pagina.', |
|
| 30 | + 'avis_operation_echec' => 'L’operacion s’es encalada.', |
|
| 31 | + 'avis_suppression_base' => 'ATENCION, suprimir lei donadas es irreversible', |
|
| 32 | 32 | |
| 33 | - // B |
|
| 34 | - 'bouton_acces_ldap' => 'Apondre l’accès a LDAP >>', |
|
| 35 | - 'bouton_ajouter' => 'Apondre', |
|
| 36 | - 'bouton_demande_publication' => 'Demandar la publicacion d’aquest article', |
|
| 37 | - 'bouton_desactive_tout' => 'Desactivar tot', |
|
| 38 | - 'bouton_effacer_tout' => 'O escafar tot', |
|
| 39 | - 'bouton_envoyer_message' => 'Messatge definitiu: mandar', |
|
| 40 | - 'bouton_modifier' => 'Modificar', |
|
| 41 | - 'bouton_radio_afficher' => 'Afichar', |
|
| 42 | - 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Afichar dins la tiera dei redactors connectats', |
|
| 43 | - 'bouton_radio_envoi_annonces_adresse' => 'Mandar leis anoncis a l’adreiça:', |
|
| 44 | - 'bouton_radio_envoi_liste_nouveautes' => 'Mandar la tiera dei novetats', |
|
| 45 | - 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Pas aparéisser dins la tiera dei redactors', |
|
| 46 | - 'bouton_radio_non_envoi_annonces_editoriales' => 'Pas mandar d’anoncis editoriaus', |
|
| 47 | - 'bouton_redirection' => 'TORNAR DIRIGIR', |
|
| 48 | - 'bouton_relancer_installation' => 'Tornar lançar l’installacion', |
|
| 49 | - 'bouton_suivant' => 'Seguent', |
|
| 50 | - 'bouton_tenter_recuperation' => 'Assajar de reparar', |
|
| 51 | - 'bouton_test_proxy' => 'Assajar lo proxy', |
|
| 52 | - 'bouton_vider_cache' => 'Vujar l’escondedor', |
|
| 33 | + // B |
|
| 34 | + 'bouton_acces_ldap' => 'Apondre l’accès a LDAP >>', |
|
| 35 | + 'bouton_ajouter' => 'Apondre', |
|
| 36 | + 'bouton_demande_publication' => 'Demandar la publicacion d’aquest article', |
|
| 37 | + 'bouton_desactive_tout' => 'Desactivar tot', |
|
| 38 | + 'bouton_effacer_tout' => 'O escafar tot', |
|
| 39 | + 'bouton_envoyer_message' => 'Messatge definitiu: mandar', |
|
| 40 | + 'bouton_modifier' => 'Modificar', |
|
| 41 | + 'bouton_radio_afficher' => 'Afichar', |
|
| 42 | + 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Afichar dins la tiera dei redactors connectats', |
|
| 43 | + 'bouton_radio_envoi_annonces_adresse' => 'Mandar leis anoncis a l’adreiça:', |
|
| 44 | + 'bouton_radio_envoi_liste_nouveautes' => 'Mandar la tiera dei novetats', |
|
| 45 | + 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Pas aparéisser dins la tiera dei redactors', |
|
| 46 | + 'bouton_radio_non_envoi_annonces_editoriales' => 'Pas mandar d’anoncis editoriaus', |
|
| 47 | + 'bouton_redirection' => 'TORNAR DIRIGIR', |
|
| 48 | + 'bouton_relancer_installation' => 'Tornar lançar l’installacion', |
|
| 49 | + 'bouton_suivant' => 'Seguent', |
|
| 50 | + 'bouton_tenter_recuperation' => 'Assajar de reparar', |
|
| 51 | + 'bouton_test_proxy' => 'Assajar lo proxy', |
|
| 52 | + 'bouton_vider_cache' => 'Vujar l’escondedor', |
|
| 53 | 53 | |
| 54 | - // C |
|
| 55 | - 'cache_modifiable_webmestre' => 'Lo webmèstre dau sit pòt modificar aquestei paramètres.', |
|
| 56 | - 'calendrier_synchro' => 'S’utilizatz un logiciau d’agenda compatible <b>iCal</b>, lo podètz sincronizar amb leis informacions d’aquest sit.', |
|
| 54 | + // C |
|
| 55 | + 'cache_modifiable_webmestre' => 'Lo webmèstre dau sit pòt modificar aquestei paramètres.', |
|
| 56 | + 'calendrier_synchro' => 'S’utilizatz un logiciau d’agenda compatible <b>iCal</b>, lo podètz sincronizar amb leis informacions d’aquest sit.', |
|
| 57 | 57 | |
| 58 | - // D |
|
| 59 | - 'date_mot_heures' => 'oras', |
|
| 58 | + // D |
|
| 59 | + 'date_mot_heures' => 'oras', |
|
| 60 | 60 | |
| 61 | - // E |
|
| 62 | - 'email' => 'e-mail', |
|
| 63 | - 'email_2' => 'e-mail:', |
|
| 64 | - 'entree_adresse_annuaire' => 'Adreiça de l’annuari', |
|
| 65 | - 'entree_adresse_email' => 'Vòstra adreiça e-mail', |
|
| 66 | - 'entree_base_donnee_1' => 'Adreiça de la basa de donadas', |
|
| 67 | - 'entree_base_donnee_2' => '(Sovent, aquela adreiça correspònd a la dau vòstre sit, de còps correspònd a la mençon "localhost", de còps, se laissa vueja completament.)', |
|
| 68 | - 'entree_biographie' => 'Biografia corta, en quauquei mots.', |
|
| 69 | - 'entree_chemin_acces' => '<b>Intrar</b> lo camin d’accès:', |
|
| 70 | - 'entree_cle_pgp' => 'Vòstra clau PGP', |
|
| 71 | - 'entree_contenu_rubrique' => '(Contengut de la rubrica en quauquei mots.)', |
|
| 72 | - 'entree_identifiants_connexion' => 'Vòstreis identificants de connexion...', |
|
| 73 | - 'entree_informations_connexion_ldap' => 'Vougatz intrar dins aqueu formulari leis informacions de connexion au vòstre annuari LDAP. |
|
| 61 | + // E |
|
| 62 | + 'email' => 'e-mail', |
|
| 63 | + 'email_2' => 'e-mail:', |
|
| 64 | + 'entree_adresse_annuaire' => 'Adreiça de l’annuari', |
|
| 65 | + 'entree_adresse_email' => 'Vòstra adreiça e-mail', |
|
| 66 | + 'entree_base_donnee_1' => 'Adreiça de la basa de donadas', |
|
| 67 | + 'entree_base_donnee_2' => '(Sovent, aquela adreiça correspònd a la dau vòstre sit, de còps correspònd a la mençon "localhost", de còps, se laissa vueja completament.)', |
|
| 68 | + 'entree_biographie' => 'Biografia corta, en quauquei mots.', |
|
| 69 | + 'entree_chemin_acces' => '<b>Intrar</b> lo camin d’accès:', |
|
| 70 | + 'entree_cle_pgp' => 'Vòstra clau PGP', |
|
| 71 | + 'entree_contenu_rubrique' => '(Contengut de la rubrica en quauquei mots.)', |
|
| 72 | + 'entree_identifiants_connexion' => 'Vòstreis identificants de connexion...', |
|
| 73 | + 'entree_informations_connexion_ldap' => 'Vougatz intrar dins aqueu formulari leis informacions de connexion au vòstre annuari LDAP. |
|
| 74 | 74 | L’administrator dau sistèma o de la ret vos deu poder fornir |
| 75 | 75 | aqueleis informacions.', |
| 76 | - 'entree_infos_perso' => 'Quau siatz?', |
|
| 77 | - 'entree_interieur_rubrique' => 'Dintre la rubrica:', |
|
| 78 | - 'entree_liens_sites' => '<b>Liame ipertèxt</b> (referéncia, sit de vesitar...)', |
|
| 79 | - 'entree_login' => 'Lo vòstre login', |
|
| 80 | - 'entree_login_connexion_1' => 'Lo login de connexion', |
|
| 81 | - 'entree_login_connexion_2' => '(Correspònd de còps au vòstre login d’accès a l’FTP; de còps se laissa vuege)', |
|
| 82 | - 'entree_mot_passe' => 'Vòstre senhau', |
|
| 83 | - 'entree_mot_passe_1' => 'Senhau per la connexion', |
|
| 84 | - 'entree_mot_passe_2' => '(Correspònd de còps a vòstre senhau per l’FTP; de còps se laissa vuege)', |
|
| 85 | - 'entree_nom_fichier' => 'Vougatz intrar lo nom dau fichier @texte_compresse@:', |
|
| 86 | - 'entree_nom_pseudo' => 'Vòstre nom o vòstre pseudonim', |
|
| 87 | - 'entree_nom_pseudo_1' => '(Vòstre nom o vòstre pseudonim)', |
|
| 88 | - 'entree_nom_site' => 'Lo nom dau vòstre sit', |
|
| 89 | - 'entree_nouveau_passe' => 'Senhau novèu', |
|
| 90 | - 'entree_passe_ldap' => 'Senhau', |
|
| 91 | - 'entree_port_annuaire' => 'Lo numèro de pòrt de l’annuari', |
|
| 92 | - 'entree_signature' => 'Signatura', |
|
| 93 | - 'entree_titre_obligatoire' => '<b>Títol</b> [Obligatòri]<br />', |
|
| 94 | - 'entree_url' => 'L’adreiça (URL) dau vòstre sit', |
|
| 76 | + 'entree_infos_perso' => 'Quau siatz?', |
|
| 77 | + 'entree_interieur_rubrique' => 'Dintre la rubrica:', |
|
| 78 | + 'entree_liens_sites' => '<b>Liame ipertèxt</b> (referéncia, sit de vesitar...)', |
|
| 79 | + 'entree_login' => 'Lo vòstre login', |
|
| 80 | + 'entree_login_connexion_1' => 'Lo login de connexion', |
|
| 81 | + 'entree_login_connexion_2' => '(Correspònd de còps au vòstre login d’accès a l’FTP; de còps se laissa vuege)', |
|
| 82 | + 'entree_mot_passe' => 'Vòstre senhau', |
|
| 83 | + 'entree_mot_passe_1' => 'Senhau per la connexion', |
|
| 84 | + 'entree_mot_passe_2' => '(Correspònd de còps a vòstre senhau per l’FTP; de còps se laissa vuege)', |
|
| 85 | + 'entree_nom_fichier' => 'Vougatz intrar lo nom dau fichier @texte_compresse@:', |
|
| 86 | + 'entree_nom_pseudo' => 'Vòstre nom o vòstre pseudonim', |
|
| 87 | + 'entree_nom_pseudo_1' => '(Vòstre nom o vòstre pseudonim)', |
|
| 88 | + 'entree_nom_site' => 'Lo nom dau vòstre sit', |
|
| 89 | + 'entree_nouveau_passe' => 'Senhau novèu', |
|
| 90 | + 'entree_passe_ldap' => 'Senhau', |
|
| 91 | + 'entree_port_annuaire' => 'Lo numèro de pòrt de l’annuari', |
|
| 92 | + 'entree_signature' => 'Signatura', |
|
| 93 | + 'entree_titre_obligatoire' => '<b>Títol</b> [Obligatòri]<br />', |
|
| 94 | + 'entree_url' => 'L’adreiça (URL) dau vòstre sit', |
|
| 95 | 95 | |
| 96 | - // I |
|
| 97 | - 'ical_info1' => 'Aquela pagina mòstra de metòdes diferents per restar en contacte amb la vida d’aqueu sit.', |
|
| 98 | - 'ical_info2' => 'Per tenir mai d’informacions subre aquelei tecnicas, esitetz pas de consultar <a href="@spipnet@">la documentacion d’SPIP</a>.', # MODIF |
|
| 99 | - 'ical_info_calendrier' => 'I a dos calendiers a la vòstra disposicion. Lo primier es un plan dau sit qu’anóncia totei leis articles publicats. Lo segond conten leis anoncis editoriaus en mai de vòstrei darriers messatges privats: vos es reservat gràcias a una clau personala, que la podètz modificar en tot moment en renovant vòstre senhau. ', |
|
| 100 | - 'ical_methode_http' => 'Telecargament', |
|
| 101 | - 'ical_methode_webcal' => 'Sincronizacion (webcal://)', # MODIF |
|
| 102 | - 'ical_texte_prive' => 'Aqueu calendier, d’us estrictament personau, vos informa de l’activitat editoriala privada d’aqueu sit (òbras e rendètz-vos personaus, articles e brèvas prepausats...).', |
|
| 103 | - 'ical_texte_public' => 'Aqueu calendier vos permet de seguir l’activitat publica d’aqueu sit (articles e brèvas publicats).', |
|
| 104 | - 'ical_texte_rss' => 'Podètz sindicar lei novetats d’aquest sit dins quin legidor de fichiers que siá en format XML/RSS (Rich Site Summary). Es tanben lo format que permet a SPIP de legir lei novetats publicadas dins d’autrei sits en utilizant un format d’escambi compatible (sits sindicats). ', |
|
| 105 | - 'ical_titre_js' => 'Javascript', |
|
| 106 | - 'ical_titre_mailing' => 'Lista de corrier', |
|
| 107 | - 'ical_titre_rss' => 'Fichiers «backend»', |
|
| 108 | - 'icone_activer_cookie' => 'Activar lo cookie de correspondéncia', |
|
| 109 | - 'icone_admin_plugin' => 'Gestion deis ajustons', |
|
| 110 | - 'icone_afficher_auteurs' => 'Afichar leis autors', |
|
| 111 | - 'icone_afficher_visiteurs' => 'Afichar lei vesitaires', |
|
| 112 | - 'icone_arret_discussion' => 'Quitar aquela discussion', |
|
| 113 | - 'icone_calendrier' => 'Calendier', |
|
| 114 | - 'icone_creer_auteur' => 'Crear un autor nòu e l’associar a aquel article', |
|
| 115 | - 'icone_creer_mot_cle' => 'Crear un mot clau nòu e lo liar a aquel article', |
|
| 116 | - 'icone_creer_rubrique_2' => 'Crear una rubrica nòva', |
|
| 117 | - 'icone_modifier_article' => 'Modificar aquel article', |
|
| 118 | - 'icone_modifier_rubrique' => 'Modificar aquela rubrica', |
|
| 119 | - 'icone_retour' => 'Tornar', |
|
| 120 | - 'icone_retour_article' => 'Tornar a l’article', |
|
| 121 | - 'icone_supprimer_cookie' => 'Suprimir lo cookie de correspondéncia', |
|
| 122 | - 'icone_supprimer_rubrique' => 'Suprimir aquela rubrica', |
|
| 123 | - 'icone_supprimer_signature' => 'Suprimir aquela signatura', |
|
| 124 | - 'icone_valider_signature' => 'Validar aquela signatura', |
|
| 125 | - 'image_administrer_rubrique' => 'Podètz administrar aquela rubrica', |
|
| 126 | - 'impossible_modifier_login_auteur' => 'Impossible de modifier le login.', # MODIF |
|
| 127 | - 'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.', # MODIF |
|
| 128 | - 'info_1_article' => '1 article', |
|
| 129 | - 'info_activer_cookie' => 'Podètz activar un <b>cookie de correspondéncia</b>; aquò vos permetrà de passar aisat dau sit public au sit privat.', |
|
| 130 | - 'info_administrateur' => 'Administrator', |
|
| 131 | - 'info_administrateur_1' => 'Administrator', |
|
| 132 | - 'info_administrateur_2' => 'dau sit(<i>d’utilizar amb precaucion</i>)', |
|
| 133 | - 'info_administrateur_site_01' => 'Se siatz administrator/tritz dau sit, vougatz', |
|
| 134 | - 'info_administrateur_site_02' => 'clicar aqueu liame', |
|
| 135 | - 'info_administrateurs' => 'Administrators', |
|
| 136 | - 'info_administrer_rubrique' => 'Podètz administrar aquela rubrica', |
|
| 137 | - 'info_adresse' => 'a l’adreiça:', |
|
| 138 | - 'info_adresse_url' => 'Adreiça (URL) dau sit public', |
|
| 139 | - 'info_aide_en_ligne' => 'Ajuda en linha SPIP', |
|
| 140 | - 'info_ajout_image' => 'Quand apondètz d’imatges coma estacaments jonchs a un article, SPIP pòt crear automaticament per vos de vinhetas (miniaturas) deis imatges inserits. Aquò permet per exemple de crear automaticament una galariá o un pòrtfòlio.', |
|
| 141 | - 'info_ajouter_rubrique' => 'Apondre una autra rubrica d’administrar:', |
|
| 142 | - 'info_annonce_nouveautes' => 'Anonci dei novetats', |
|
| 143 | - 'info_article' => 'article', |
|
| 144 | - 'info_article_2' => 'articles', |
|
| 145 | - 'info_article_a_paraitre' => 'Leis articles pòstdatats per paréisser', |
|
| 146 | - 'info_articles_02' => 'articles', |
|
| 147 | - 'info_articles_2' => 'Articles', |
|
| 148 | - 'info_articles_auteur' => 'Los articles d’aquel autor', |
|
| 149 | - 'info_articles_trouves' => 'Articles trobats', |
|
| 150 | - 'info_attente_validation' => 'Vòstreis articles en espèra de validacion', |
|
| 151 | - 'info_aujourdhui' => 'uei:', |
|
| 152 | - 'info_auteurs' => 'Leis autors', |
|
| 153 | - 'info_auteurs_par_tri' => 'autors@partri@', |
|
| 154 | - 'info_auteurs_trouves' => 'Autors trobats', |
|
| 155 | - 'info_authentification_externe' => 'Autentificacion extèrna', |
|
| 156 | - 'info_avertissement' => 'Avís', |
|
| 157 | - 'info_base_installee' => 'L’estructura de vòstra basa de donadas es installada.', |
|
| 158 | - 'info_chapeau' => 'Capèu', |
|
| 159 | - 'info_chapeau_2' => 'Capèu:', |
|
| 160 | - 'info_chemin_acces_1' => 'Opcions: <b>camin d’accès dins l’annuari</b>', |
|
| 161 | - 'info_chemin_acces_2' => 'Ara devètz configurar lo camin d’accès ais informacions dins l’annuari.', |
|
| 162 | - 'info_chemin_acces_annuaire' => 'Opcions: <b>camin d’accès dins l’annuari', |
|
| 163 | - 'info_choix_base' => 'Tresena estapa:', |
|
| 164 | - 'info_classement_1' => '<sup>ier</sup> de @liste@', |
|
| 165 | - 'info_classement_2' => '<sup>nd</sup> de @liste@', |
|
| 166 | - 'info_code_acces' => 'Oblidetz pas vòstrei còdes d’accès pròpris!', |
|
| 167 | - 'info_config_suivi' => 'S’aquela adreiça correspònd a una lista de corrier, podètz indicar çai sota l’adreiça ont lei participants au sit se pòdon inscriure. Aquela adreiça pòt èstre una URL (per exemple la pagina d’inscripcion a la lista per lo web), o una adreiça e-mail tenent un subjècte especific (per exemple: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 168 | - 'info_config_suivi_explication' => 'Vos podètz abonar a la lista de difusion d’aquest sit. Alora recebretz per e-mail leis anoncis d’articles e de brèvas que se prepausa a la publicacion.', |
|
| 169 | - 'info_confirmer_passe' => 'Confirmar aqueu senhau novèu:', |
|
| 170 | - 'info_connexion_base' => 'Segonda estapa: <b>Assai de connexion a la basa</b>', |
|
| 171 | - 'info_connexion_ldap_ok' => 'La connexion LDAP a capitat.</b><p> Podètz passar a l’estapa seguenta.</p>', # MODIF |
|
| 172 | - 'info_connexion_mysql' => 'Primiera estapa: <b>Vòstra connexion SQL</b>', |
|
| 173 | - 'info_connexion_ok' => 'La connexion a capitat.', |
|
| 174 | - 'info_contact' => 'Contacte', |
|
| 175 | - 'info_contenu_articles' => 'Contengut deis articles', |
|
| 176 | - 'info_creation_paragraphe' => '(Per crear de paragrafs, basta que laissetz de linhas vuejas.)', # MODIF |
|
| 177 | - 'info_creation_rubrique' => 'Avans de poder escriure d’articles,<br /> devètz crear aumens una rubrica.<br />', |
|
| 178 | - 'info_creation_tables' => 'Quatrena estapa: <b>Creacion dei taulas de la basa</b>', |
|
| 179 | - 'info_creer_base' => '<b>Crear</b> una basa de donadas novèla:', |
|
| 180 | - 'info_dans_rubrique' => 'Dins la rubrica:', |
|
| 181 | - 'info_date_publication_anterieure' => 'Data anteriora de publicacion:', |
|
| 182 | - 'info_date_referencement' => 'DATA DE REFERENCIAMENT D’AQUEU SIT:', |
|
| 183 | - 'info_derniere_etape' => 'Darriera estapa: <b>Es acabat!', |
|
| 184 | - 'info_descriptif' => 'Descriptiu:', |
|
| 185 | - 'info_discussion_cours' => 'Discussions en cors', |
|
| 186 | - 'info_ecrire_article' => 'Avans de poder escriure d’articles, vos cau crear aumens una rubrica.', |
|
| 187 | - 'info_email_envoi' => 'Adreiça e-mail de mandadís (opcionau)', |
|
| 188 | - 'info_email_envoi_txt' => 'Indicatz aicí l’adreiça d’utilizar per enviar leis e-mails (a fauta d’aquò, s’utilizarà l’adreiça destinatari coma adreiça de mandadís):', |
|
| 189 | - 'info_email_webmestre' => 'Adreiça e-mail dau responsable dau sit (opcionau)', # MODIF |
|
| 190 | - 'info_envoi_email_automatique' => 'Mandadís d’e-mails automatics', |
|
| 191 | - 'info_envoyer_maintenant' => 'Mandar ara', |
|
| 192 | - 'info_etape_suivante' => 'Passar a l’estapa seguenta', |
|
| 193 | - 'info_etape_suivante_1' => 'Podètz passar a l’estapa seguenta.', |
|
| 194 | - 'info_etape_suivante_2' => 'Podètz passar a l’estapa seguenta.', |
|
| 195 | - 'info_exportation_base' => 'exportacion de la basa vèrs @archive@', |
|
| 196 | - 'info_facilite_suivi_activite' => 'Per facilitar lo seguit de l’activitat editoriala dau sit, SPIP vos pòt fornir per e-mail, per exemple a una lista de corrier dei redactors, l’anonci dei demandas de publicacion e dei validacions d’articles.', # MODIF |
|
| 197 | - 'info_fichiers_authent' => 'Fichiers d’autentificacion « .htpasswd »', |
|
| 198 | - 'info_forums_abo_invites' => 'Vòstre sit web porgís de forums per leis abonats; dins lo sit public lei vesitaires son convidats a se registrar.', |
|
| 199 | - 'info_gauche_admin_tech' => '<b>A aquela pagina, ren que lei responsables dau sit i pòdon accedir.</b><p> Permet de trobar lei diferentei foncions de mantenença tecnica. D’unei que i a implican un procès d’autentificacion especific, que necessita un accès FTP au sit web.</p>', # MODIF |
|
| 200 | - 'info_gauche_admin_vider' => '<b>A aquela pagina, ren que lei responsables dau sit i pòdon accedir.</b><p> Permet de trobar lei diferentei foncions de mantenença tecnica. D’unei que i a implican un procès d’autentificacion especific, que necessita un accès FTP au sit web.</p>', # MODIF |
|
| 201 | - 'info_gauche_auteurs' => 'Trobaretz aicí totei leis autors dau sit. La color deis icònas n’indica l’estatut (administrator = verd; redactor = jaune).', |
|
| 202 | - 'info_gauche_auteurs_exterieurs' => 'Leis autors exteriors, sens accès au sit, son indicats per una icòna blava; leis autors escafats per un bordilhier.', # MODIF |
|
| 203 | - 'info_gauche_messagerie' => 'La messatjariá vos permet d’escambiar de messatges entre redactors, de servar de mementos (per vòstre usatge personau) o d’afichar d’anoncis sus la pagina d’acuelh de l’espaci privat (se siatz administrator/tritz).', |
|
| 204 | - 'info_gauche_statistiques_referers' => 'Aquela pagina presenta la lista dei <i>referidors</i>, valent a dire dei sits que contenon de liames menant vèrs vòstre sit pròpri, mai unicament per ièr e uei: aquela lista s’actualiza cada 24 oras.', |
|
| 205 | - 'info_gauche_visiteurs_enregistres' => 'Trobaretz aquí lei vesitaires registrats |
|
| 96 | + // I |
|
| 97 | + 'ical_info1' => 'Aquela pagina mòstra de metòdes diferents per restar en contacte amb la vida d’aqueu sit.', |
|
| 98 | + 'ical_info2' => 'Per tenir mai d’informacions subre aquelei tecnicas, esitetz pas de consultar <a href="@spipnet@">la documentacion d’SPIP</a>.', # MODIF |
|
| 99 | + 'ical_info_calendrier' => 'I a dos calendiers a la vòstra disposicion. Lo primier es un plan dau sit qu’anóncia totei leis articles publicats. Lo segond conten leis anoncis editoriaus en mai de vòstrei darriers messatges privats: vos es reservat gràcias a una clau personala, que la podètz modificar en tot moment en renovant vòstre senhau. ', |
|
| 100 | + 'ical_methode_http' => 'Telecargament', |
|
| 101 | + 'ical_methode_webcal' => 'Sincronizacion (webcal://)', # MODIF |
|
| 102 | + 'ical_texte_prive' => 'Aqueu calendier, d’us estrictament personau, vos informa de l’activitat editoriala privada d’aqueu sit (òbras e rendètz-vos personaus, articles e brèvas prepausats...).', |
|
| 103 | + 'ical_texte_public' => 'Aqueu calendier vos permet de seguir l’activitat publica d’aqueu sit (articles e brèvas publicats).', |
|
| 104 | + 'ical_texte_rss' => 'Podètz sindicar lei novetats d’aquest sit dins quin legidor de fichiers que siá en format XML/RSS (Rich Site Summary). Es tanben lo format que permet a SPIP de legir lei novetats publicadas dins d’autrei sits en utilizant un format d’escambi compatible (sits sindicats). ', |
|
| 105 | + 'ical_titre_js' => 'Javascript', |
|
| 106 | + 'ical_titre_mailing' => 'Lista de corrier', |
|
| 107 | + 'ical_titre_rss' => 'Fichiers «backend»', |
|
| 108 | + 'icone_activer_cookie' => 'Activar lo cookie de correspondéncia', |
|
| 109 | + 'icone_admin_plugin' => 'Gestion deis ajustons', |
|
| 110 | + 'icone_afficher_auteurs' => 'Afichar leis autors', |
|
| 111 | + 'icone_afficher_visiteurs' => 'Afichar lei vesitaires', |
|
| 112 | + 'icone_arret_discussion' => 'Quitar aquela discussion', |
|
| 113 | + 'icone_calendrier' => 'Calendier', |
|
| 114 | + 'icone_creer_auteur' => 'Crear un autor nòu e l’associar a aquel article', |
|
| 115 | + 'icone_creer_mot_cle' => 'Crear un mot clau nòu e lo liar a aquel article', |
|
| 116 | + 'icone_creer_rubrique_2' => 'Crear una rubrica nòva', |
|
| 117 | + 'icone_modifier_article' => 'Modificar aquel article', |
|
| 118 | + 'icone_modifier_rubrique' => 'Modificar aquela rubrica', |
|
| 119 | + 'icone_retour' => 'Tornar', |
|
| 120 | + 'icone_retour_article' => 'Tornar a l’article', |
|
| 121 | + 'icone_supprimer_cookie' => 'Suprimir lo cookie de correspondéncia', |
|
| 122 | + 'icone_supprimer_rubrique' => 'Suprimir aquela rubrica', |
|
| 123 | + 'icone_supprimer_signature' => 'Suprimir aquela signatura', |
|
| 124 | + 'icone_valider_signature' => 'Validar aquela signatura', |
|
| 125 | + 'image_administrer_rubrique' => 'Podètz administrar aquela rubrica', |
|
| 126 | + 'impossible_modifier_login_auteur' => 'Impossible de modifier le login.', # MODIF |
|
| 127 | + 'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.', # MODIF |
|
| 128 | + 'info_1_article' => '1 article', |
|
| 129 | + 'info_activer_cookie' => 'Podètz activar un <b>cookie de correspondéncia</b>; aquò vos permetrà de passar aisat dau sit public au sit privat.', |
|
| 130 | + 'info_administrateur' => 'Administrator', |
|
| 131 | + 'info_administrateur_1' => 'Administrator', |
|
| 132 | + 'info_administrateur_2' => 'dau sit(<i>d’utilizar amb precaucion</i>)', |
|
| 133 | + 'info_administrateur_site_01' => 'Se siatz administrator/tritz dau sit, vougatz', |
|
| 134 | + 'info_administrateur_site_02' => 'clicar aqueu liame', |
|
| 135 | + 'info_administrateurs' => 'Administrators', |
|
| 136 | + 'info_administrer_rubrique' => 'Podètz administrar aquela rubrica', |
|
| 137 | + 'info_adresse' => 'a l’adreiça:', |
|
| 138 | + 'info_adresse_url' => 'Adreiça (URL) dau sit public', |
|
| 139 | + 'info_aide_en_ligne' => 'Ajuda en linha SPIP', |
|
| 140 | + 'info_ajout_image' => 'Quand apondètz d’imatges coma estacaments jonchs a un article, SPIP pòt crear automaticament per vos de vinhetas (miniaturas) deis imatges inserits. Aquò permet per exemple de crear automaticament una galariá o un pòrtfòlio.', |
|
| 141 | + 'info_ajouter_rubrique' => 'Apondre una autra rubrica d’administrar:', |
|
| 142 | + 'info_annonce_nouveautes' => 'Anonci dei novetats', |
|
| 143 | + 'info_article' => 'article', |
|
| 144 | + 'info_article_2' => 'articles', |
|
| 145 | + 'info_article_a_paraitre' => 'Leis articles pòstdatats per paréisser', |
|
| 146 | + 'info_articles_02' => 'articles', |
|
| 147 | + 'info_articles_2' => 'Articles', |
|
| 148 | + 'info_articles_auteur' => 'Los articles d’aquel autor', |
|
| 149 | + 'info_articles_trouves' => 'Articles trobats', |
|
| 150 | + 'info_attente_validation' => 'Vòstreis articles en espèra de validacion', |
|
| 151 | + 'info_aujourdhui' => 'uei:', |
|
| 152 | + 'info_auteurs' => 'Leis autors', |
|
| 153 | + 'info_auteurs_par_tri' => 'autors@partri@', |
|
| 154 | + 'info_auteurs_trouves' => 'Autors trobats', |
|
| 155 | + 'info_authentification_externe' => 'Autentificacion extèrna', |
|
| 156 | + 'info_avertissement' => 'Avís', |
|
| 157 | + 'info_base_installee' => 'L’estructura de vòstra basa de donadas es installada.', |
|
| 158 | + 'info_chapeau' => 'Capèu', |
|
| 159 | + 'info_chapeau_2' => 'Capèu:', |
|
| 160 | + 'info_chemin_acces_1' => 'Opcions: <b>camin d’accès dins l’annuari</b>', |
|
| 161 | + 'info_chemin_acces_2' => 'Ara devètz configurar lo camin d’accès ais informacions dins l’annuari.', |
|
| 162 | + 'info_chemin_acces_annuaire' => 'Opcions: <b>camin d’accès dins l’annuari', |
|
| 163 | + 'info_choix_base' => 'Tresena estapa:', |
|
| 164 | + 'info_classement_1' => '<sup>ier</sup> de @liste@', |
|
| 165 | + 'info_classement_2' => '<sup>nd</sup> de @liste@', |
|
| 166 | + 'info_code_acces' => 'Oblidetz pas vòstrei còdes d’accès pròpris!', |
|
| 167 | + 'info_config_suivi' => 'S’aquela adreiça correspònd a una lista de corrier, podètz indicar çai sota l’adreiça ont lei participants au sit se pòdon inscriure. Aquela adreiça pòt èstre una URL (per exemple la pagina d’inscripcion a la lista per lo web), o una adreiça e-mail tenent un subjècte especific (per exemple: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 168 | + 'info_config_suivi_explication' => 'Vos podètz abonar a la lista de difusion d’aquest sit. Alora recebretz per e-mail leis anoncis d’articles e de brèvas que se prepausa a la publicacion.', |
|
| 169 | + 'info_confirmer_passe' => 'Confirmar aqueu senhau novèu:', |
|
| 170 | + 'info_connexion_base' => 'Segonda estapa: <b>Assai de connexion a la basa</b>', |
|
| 171 | + 'info_connexion_ldap_ok' => 'La connexion LDAP a capitat.</b><p> Podètz passar a l’estapa seguenta.</p>', # MODIF |
|
| 172 | + 'info_connexion_mysql' => 'Primiera estapa: <b>Vòstra connexion SQL</b>', |
|
| 173 | + 'info_connexion_ok' => 'La connexion a capitat.', |
|
| 174 | + 'info_contact' => 'Contacte', |
|
| 175 | + 'info_contenu_articles' => 'Contengut deis articles', |
|
| 176 | + 'info_creation_paragraphe' => '(Per crear de paragrafs, basta que laissetz de linhas vuejas.)', # MODIF |
|
| 177 | + 'info_creation_rubrique' => 'Avans de poder escriure d’articles,<br /> devètz crear aumens una rubrica.<br />', |
|
| 178 | + 'info_creation_tables' => 'Quatrena estapa: <b>Creacion dei taulas de la basa</b>', |
|
| 179 | + 'info_creer_base' => '<b>Crear</b> una basa de donadas novèla:', |
|
| 180 | + 'info_dans_rubrique' => 'Dins la rubrica:', |
|
| 181 | + 'info_date_publication_anterieure' => 'Data anteriora de publicacion:', |
|
| 182 | + 'info_date_referencement' => 'DATA DE REFERENCIAMENT D’AQUEU SIT:', |
|
| 183 | + 'info_derniere_etape' => 'Darriera estapa: <b>Es acabat!', |
|
| 184 | + 'info_descriptif' => 'Descriptiu:', |
|
| 185 | + 'info_discussion_cours' => 'Discussions en cors', |
|
| 186 | + 'info_ecrire_article' => 'Avans de poder escriure d’articles, vos cau crear aumens una rubrica.', |
|
| 187 | + 'info_email_envoi' => 'Adreiça e-mail de mandadís (opcionau)', |
|
| 188 | + 'info_email_envoi_txt' => 'Indicatz aicí l’adreiça d’utilizar per enviar leis e-mails (a fauta d’aquò, s’utilizarà l’adreiça destinatari coma adreiça de mandadís):', |
|
| 189 | + 'info_email_webmestre' => 'Adreiça e-mail dau responsable dau sit (opcionau)', # MODIF |
|
| 190 | + 'info_envoi_email_automatique' => 'Mandadís d’e-mails automatics', |
|
| 191 | + 'info_envoyer_maintenant' => 'Mandar ara', |
|
| 192 | + 'info_etape_suivante' => 'Passar a l’estapa seguenta', |
|
| 193 | + 'info_etape_suivante_1' => 'Podètz passar a l’estapa seguenta.', |
|
| 194 | + 'info_etape_suivante_2' => 'Podètz passar a l’estapa seguenta.', |
|
| 195 | + 'info_exportation_base' => 'exportacion de la basa vèrs @archive@', |
|
| 196 | + 'info_facilite_suivi_activite' => 'Per facilitar lo seguit de l’activitat editoriala dau sit, SPIP vos pòt fornir per e-mail, per exemple a una lista de corrier dei redactors, l’anonci dei demandas de publicacion e dei validacions d’articles.', # MODIF |
|
| 197 | + 'info_fichiers_authent' => 'Fichiers d’autentificacion « .htpasswd »', |
|
| 198 | + 'info_forums_abo_invites' => 'Vòstre sit web porgís de forums per leis abonats; dins lo sit public lei vesitaires son convidats a se registrar.', |
|
| 199 | + 'info_gauche_admin_tech' => '<b>A aquela pagina, ren que lei responsables dau sit i pòdon accedir.</b><p> Permet de trobar lei diferentei foncions de mantenença tecnica. D’unei que i a implican un procès d’autentificacion especific, que necessita un accès FTP au sit web.</p>', # MODIF |
|
| 200 | + 'info_gauche_admin_vider' => '<b>A aquela pagina, ren que lei responsables dau sit i pòdon accedir.</b><p> Permet de trobar lei diferentei foncions de mantenença tecnica. D’unei que i a implican un procès d’autentificacion especific, que necessita un accès FTP au sit web.</p>', # MODIF |
|
| 201 | + 'info_gauche_auteurs' => 'Trobaretz aicí totei leis autors dau sit. La color deis icònas n’indica l’estatut (administrator = verd; redactor = jaune).', |
|
| 202 | + 'info_gauche_auteurs_exterieurs' => 'Leis autors exteriors, sens accès au sit, son indicats per una icòna blava; leis autors escafats per un bordilhier.', # MODIF |
|
| 203 | + 'info_gauche_messagerie' => 'La messatjariá vos permet d’escambiar de messatges entre redactors, de servar de mementos (per vòstre usatge personau) o d’afichar d’anoncis sus la pagina d’acuelh de l’espaci privat (se siatz administrator/tritz).', |
|
| 204 | + 'info_gauche_statistiques_referers' => 'Aquela pagina presenta la lista dei <i>referidors</i>, valent a dire dei sits que contenon de liames menant vèrs vòstre sit pròpri, mai unicament per ièr e uei: aquela lista s’actualiza cada 24 oras.', |
|
| 205 | + 'info_gauche_visiteurs_enregistres' => 'Trobaretz aquí lei vesitaires registrats |
|
| 206 | 206 | dins l’espaci public dau sit (forums amb abonament).', |
| 207 | - 'info_generation_miniatures_images' => 'Congreacion de miniaturas deis imatges', |
|
| 208 | - 'info_hebergeur_desactiver_envoi_email' => 'D’uneis aubergadors desactivan lo mandadís automatic |
|
| 207 | + 'info_generation_miniatures_images' => 'Congreacion de miniaturas deis imatges', |
|
| 208 | + 'info_hebergeur_desactiver_envoi_email' => 'D’uneis aubergadors desactivan lo mandadís automatic |
|
| 209 | 209 | d’e-mails dempuei sei servidors. En aqueu cas, lei foncionalitats seguentas |
| 210 | 210 | d’SPIP foncionaràn pas.', |
| 211 | - 'info_hier' => 'ièr:', |
|
| 212 | - 'info_identification_publique' => 'Vòstra identitat publica...', |
|
| 213 | - 'info_image_process' => 'Vougatz seleccionar lo melhor metòde de fabricacion dei vinhetas en clicant sus l’imatge correspondent.', |
|
| 214 | - 'info_images_auto' => 'Imatges calculats automaticament', |
|
| 215 | - 'info_informations_personnelles' => 'Cinquena estapa: <b>Informacions personalas</b>', |
|
| 216 | - 'info_inscription_automatique' => 'Inscripcion automatica de redactors novèus', |
|
| 217 | - 'info_jeu_caractere' => 'Jòc de caractèrs dau sit', |
|
| 218 | - 'info_jours' => 'jorns', |
|
| 219 | - 'info_laisser_champs_vides' => 'laissar aquelei camps vueges)', |
|
| 220 | - 'info_langues' => 'Lengas dau sit', |
|
| 221 | - 'info_ldap_ok' => 'L’autentificacion LDAP es installada.', |
|
| 222 | - 'info_lien_hypertexte' => 'Liame ipertèxt:', |
|
| 223 | - 'info_liste_redacteurs_connectes' => 'Tiera dei redactors connectats', |
|
| 224 | - 'info_login_existant' => 'Aqueu login ja existís.', |
|
| 225 | - 'info_login_trop_court' => 'Login tròp cort.', |
|
| 226 | - 'info_maximum' => 'maximum:', |
|
| 227 | - 'info_meme_rubrique' => 'Dins la meteissa rubrica', |
|
| 228 | - 'info_message_en_redaction' => 'Vòstrei messatges en cors de redaccion', |
|
| 229 | - 'info_message_technique' => 'Messatge tecnic:', |
|
| 230 | - 'info_messagerie_interne' => 'Messatjariá intèrna', |
|
| 231 | - 'info_mise_a_niveau_base' => 'Mesa a nivèu de vòstra basa SQL', |
|
| 232 | - 'info_mise_a_niveau_base_2' => '{{Atencion!}} Avètz installada una version |
|
| 211 | + 'info_hier' => 'ièr:', |
|
| 212 | + 'info_identification_publique' => 'Vòstra identitat publica...', |
|
| 213 | + 'info_image_process' => 'Vougatz seleccionar lo melhor metòde de fabricacion dei vinhetas en clicant sus l’imatge correspondent.', |
|
| 214 | + 'info_images_auto' => 'Imatges calculats automaticament', |
|
| 215 | + 'info_informations_personnelles' => 'Cinquena estapa: <b>Informacions personalas</b>', |
|
| 216 | + 'info_inscription_automatique' => 'Inscripcion automatica de redactors novèus', |
|
| 217 | + 'info_jeu_caractere' => 'Jòc de caractèrs dau sit', |
|
| 218 | + 'info_jours' => 'jorns', |
|
| 219 | + 'info_laisser_champs_vides' => 'laissar aquelei camps vueges)', |
|
| 220 | + 'info_langues' => 'Lengas dau sit', |
|
| 221 | + 'info_ldap_ok' => 'L’autentificacion LDAP es installada.', |
|
| 222 | + 'info_lien_hypertexte' => 'Liame ipertèxt:', |
|
| 223 | + 'info_liste_redacteurs_connectes' => 'Tiera dei redactors connectats', |
|
| 224 | + 'info_login_existant' => 'Aqueu login ja existís.', |
|
| 225 | + 'info_login_trop_court' => 'Login tròp cort.', |
|
| 226 | + 'info_maximum' => 'maximum:', |
|
| 227 | + 'info_meme_rubrique' => 'Dins la meteissa rubrica', |
|
| 228 | + 'info_message_en_redaction' => 'Vòstrei messatges en cors de redaccion', |
|
| 229 | + 'info_message_technique' => 'Messatge tecnic:', |
|
| 230 | + 'info_messagerie_interne' => 'Messatjariá intèrna', |
|
| 231 | + 'info_mise_a_niveau_base' => 'Mesa a nivèu de vòstra basa SQL', |
|
| 232 | + 'info_mise_a_niveau_base_2' => '{{Atencion!}} Avètz installada una version |
|
| 233 | 233 | dei fichiers SPIP {anteriora} a la que i aviá |
| 234 | 234 | avans sus aquest sit: riscatz de pèrdre vòstra basa de donadas |
| 235 | 235 | e vòstre sit foncionarà pus.<br />{{Tornatz installar lei |
| 236 | 236 | fichiers d’SPIP.}}', |
| 237 | - 'info_modifier_rubrique' => 'Modificar la rubrica:', |
|
| 238 | - 'info_modifier_titre' => 'Modificar: @titre@', |
|
| 239 | - 'info_mon_site_spip' => 'Mon sit SPIP', |
|
| 240 | - 'info_moyenne' => 'mejana:', |
|
| 241 | - 'info_multi_cet_article' => 'Lenga d’aquest article:', |
|
| 242 | - 'info_multi_langues_choisies' => 'Vougatz seleccionar çai sota lei lengas que son a posita dei redactors de vòstre sit. |
|
| 237 | + 'info_modifier_rubrique' => 'Modificar la rubrica:', |
|
| 238 | + 'info_modifier_titre' => 'Modificar: @titre@', |
|
| 239 | + 'info_mon_site_spip' => 'Mon sit SPIP', |
|
| 240 | + 'info_moyenne' => 'mejana:', |
|
| 241 | + 'info_multi_cet_article' => 'Lenga d’aquest article:', |
|
| 242 | + 'info_multi_langues_choisies' => 'Vougatz seleccionar çai sota lei lengas que son a posita dei redactors de vòstre sit. |
|
| 243 | 243 | Lei lengas ja emplegadas dins vòstre sit (afichadas d’en primier) se pòdon pas desactivar.', |
| 244 | - 'info_multi_secteurs' => '... ren que per lei rubricas a la raiç dau sit?', |
|
| 245 | - 'info_nom' => 'Nom', |
|
| 246 | - 'info_nom_destinataire' => 'Nom dau destinatari', |
|
| 247 | - 'info_nom_site' => 'Nom dau vòstre sit', |
|
| 248 | - 'info_nombre_articles' => '@nb_articles@ articles,', |
|
| 249 | - 'info_nombre_rubriques' => '@nb_rubriques@ rubricas,', |
|
| 250 | - 'info_nombre_sites' => '@nb_sites@ sits,', |
|
| 251 | - 'info_non_deplacer' => 'De pas desplaçar...', |
|
| 252 | - 'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP pòt mandar, regularament, l’anonci dei darrierei novetats dau sit |
|
| 244 | + 'info_multi_secteurs' => '... ren que per lei rubricas a la raiç dau sit?', |
|
| 245 | + 'info_nom' => 'Nom', |
|
| 246 | + 'info_nom_destinataire' => 'Nom dau destinatari', |
|
| 247 | + 'info_nom_site' => 'Nom dau vòstre sit', |
|
| 248 | + 'info_nombre_articles' => '@nb_articles@ articles,', |
|
| 249 | + 'info_nombre_rubriques' => '@nb_rubriques@ rubricas,', |
|
| 250 | + 'info_nombre_sites' => '@nb_sites@ sits,', |
|
| 251 | + 'info_non_deplacer' => 'De pas desplaçar...', |
|
| 252 | + 'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIP pòt mandar, regularament, l’anonci dei darrierei novetats dau sit |
|
| 253 | 253 | (articles e brèvas publicats recentament).', |
| 254 | - 'info_non_envoi_liste_nouveautes' => 'Pas mandar la tiera dei novetats', |
|
| 255 | - 'info_non_modifiable' => 'se pòt pas modificar', |
|
| 256 | - 'info_non_suppression_mot_cle' => 'vòli pas suprimir aqueu mot clau.', |
|
| 257 | - 'info_notes' => 'Nòtas', |
|
| 258 | - 'info_nouvel_article' => 'Article nòu', |
|
| 259 | - 'info_nouvelle_traduction' => 'Revirada nòva:', |
|
| 260 | - 'info_numero_article' => 'ARTICLE NUMÈRO:', |
|
| 261 | - 'info_obligatoire_02' => '[Obligatòri]', # MODIF |
|
| 262 | - 'info_option_accepter_visiteurs' => 'Acceptar l’inscripcion dei vesitaires dau sit public', |
|
| 263 | - 'info_option_ne_pas_accepter_visiteurs' => 'Refusar l’inscripcion de vesitaires', |
|
| 264 | - 'info_options_avancees' => 'OPCIONS AVANÇADAS', |
|
| 265 | - 'info_ou' => 'o... ', |
|
| 266 | - 'info_page_interdite' => 'Pagina proïbida', |
|
| 267 | - 'info_par_nombre_article' => '(per nombre d’articles)', |
|
| 268 | - 'info_passe_trop_court' => 'Mot de santa Clara tròp cort.', |
|
| 269 | - 'info_passes_identiques' => 'Lei dos mots de santa Clara son pas identics.', |
|
| 270 | - 'info_plus_cinq_car' => 'mai de 5 caractèrs', |
|
| 271 | - 'info_plus_cinq_car_2' => '(mai de 5 caractèrs)', |
|
| 272 | - 'info_plus_trois_car' => '(mai de 3 caractèrs)', |
|
| 273 | - 'info_popularite' => 'popularitat: @popularite@; vesitas: @visites@', |
|
| 274 | - 'info_post_scriptum' => 'Post-scriptum', |
|
| 275 | - 'info_post_scriptum_2' => 'Post-scriptum:', |
|
| 276 | - 'info_pour' => 'per', |
|
| 277 | - 'info_preview_texte' => 'Es possible de previsualizar lo sit coma s’avián publicat totei leis articles e brèvas (que tenon aumens l’estatut "prepausat"). La cau dobrir, aquela possibilitat, ren qu’ais administrators, a totei lei redactors, o en degun?', # MODIF |
|
| 278 | - 'info_procedez_par_etape' => 'procedissètz estapa per estapa', |
|
| 279 | - 'info_procedure_maj_version' => 'Cau lançar la procedura d’actualizacion per adaptar |
|
| 254 | + 'info_non_envoi_liste_nouveautes' => 'Pas mandar la tiera dei novetats', |
|
| 255 | + 'info_non_modifiable' => 'se pòt pas modificar', |
|
| 256 | + 'info_non_suppression_mot_cle' => 'vòli pas suprimir aqueu mot clau.', |
|
| 257 | + 'info_notes' => 'Nòtas', |
|
| 258 | + 'info_nouvel_article' => 'Article nòu', |
|
| 259 | + 'info_nouvelle_traduction' => 'Revirada nòva:', |
|
| 260 | + 'info_numero_article' => 'ARTICLE NUMÈRO:', |
|
| 261 | + 'info_obligatoire_02' => '[Obligatòri]', # MODIF |
|
| 262 | + 'info_option_accepter_visiteurs' => 'Acceptar l’inscripcion dei vesitaires dau sit public', |
|
| 263 | + 'info_option_ne_pas_accepter_visiteurs' => 'Refusar l’inscripcion de vesitaires', |
|
| 264 | + 'info_options_avancees' => 'OPCIONS AVANÇADAS', |
|
| 265 | + 'info_ou' => 'o... ', |
|
| 266 | + 'info_page_interdite' => 'Pagina proïbida', |
|
| 267 | + 'info_par_nombre_article' => '(per nombre d’articles)', |
|
| 268 | + 'info_passe_trop_court' => 'Mot de santa Clara tròp cort.', |
|
| 269 | + 'info_passes_identiques' => 'Lei dos mots de santa Clara son pas identics.', |
|
| 270 | + 'info_plus_cinq_car' => 'mai de 5 caractèrs', |
|
| 271 | + 'info_plus_cinq_car_2' => '(mai de 5 caractèrs)', |
|
| 272 | + 'info_plus_trois_car' => '(mai de 3 caractèrs)', |
|
| 273 | + 'info_popularite' => 'popularitat: @popularite@; vesitas: @visites@', |
|
| 274 | + 'info_post_scriptum' => 'Post-scriptum', |
|
| 275 | + 'info_post_scriptum_2' => 'Post-scriptum:', |
|
| 276 | + 'info_pour' => 'per', |
|
| 277 | + 'info_preview_texte' => 'Es possible de previsualizar lo sit coma s’avián publicat totei leis articles e brèvas (que tenon aumens l’estatut "prepausat"). La cau dobrir, aquela possibilitat, ren qu’ais administrators, a totei lei redactors, o en degun?', # MODIF |
|
| 278 | + 'info_procedez_par_etape' => 'procedissètz estapa per estapa', |
|
| 279 | + 'info_procedure_maj_version' => 'Cau lançar la procedura d’actualizacion per adaptar |
|
| 280 | 280 | la basa de donadas a la version novèla d’SPIP.', |
| 281 | - 'info_ps' => 'P.S.', |
|
| 282 | - 'info_publier' => 'publicar', |
|
| 283 | - 'info_publies' => 'Vòstreis articles publicats en linha', |
|
| 284 | - 'info_question_accepter_visiteurs' => 'S’ais esqueletas de vòstre sit web se prevei lo registrament de vesitaires sens accès a l’espaci privat, vougatz activar l’opcion seguenta:', |
|
| 285 | - 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que de redactors novèus s’inscrigan |
|
| 281 | + 'info_ps' => 'P.S.', |
|
| 282 | + 'info_publier' => 'publicar', |
|
| 283 | + 'info_publies' => 'Vòstreis articles publicats en linha', |
|
| 284 | + 'info_question_accepter_visiteurs' => 'S’ais esqueletas de vòstre sit web se prevei lo registrament de vesitaires sens accès a l’espaci privat, vougatz activar l’opcion seguenta:', |
|
| 285 | + 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que de redactors novèus s’inscrigan |
|
| 286 | 286 | a partir dau sit public? S’o acceptatz, lei vesitaires se poiràn inscriure |
| 287 | 287 | dieumercé un formulari automatizat e alora accediràn a l’espaci privat per |
| 288 | 288 | prepausar d’articles.<blockquote><i> Durant la fasa d’inscripcion, leis utilizaires recebon un e-mail automatic |
| 289 | 289 | que li baila un còde d’accès au sit privat. |
| 290 | 290 | D’uneis aubergadors autorizan pas lo mandadís d’e-mails dempuei sei servidors: en aqueu cas, l’inscripcion automatica es |
| 291 | 291 | impossibla.', # MODIF |
| 292 | - 'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes', # MODIF |
|
| 293 | - 'info_racine_site' => 'Raiç dau sit', |
|
| 294 | - 'info_recharger_page' => 'Vougatz tornar cargar aquela pagina dins un momenton.', |
|
| 295 | - 'info_recherche_auteur_zero' => '<b>Ges de resultat trobat per "@cherche_auteur@".', |
|
| 296 | - 'info_recommencer' => 'Vougatz tornar començar.', |
|
| 297 | - 'info_redacteur_1' => 'Redactor', |
|
| 298 | - 'info_redacteur_2' => 'qu’accedís a l’espaci privat (<i>recomandat</i>)', |
|
| 299 | - 'info_redacteurs' => 'Redactors', |
|
| 300 | - 'info_redaction_en_cours' => 'EN CORS DE REDACCION', |
|
| 301 | - 'info_redirection' => 'Redireccion', |
|
| 302 | - 'info_refuses' => 'Vòstreis articles refusats', |
|
| 303 | - 'info_reglage_ldap' => 'Opcions: <b>Reglatge de l’importacion LDAP</b>', |
|
| 304 | - 'info_renvoi_article' => '<b>Redireccion.</b> Aquel article remanda a la pagina:', |
|
| 305 | - 'info_reserve_admin' => 'Ren que leis administrators pòdon modificar aquela adreiça.', |
|
| 306 | - 'info_restreindre_rubrique' => 'Restrénher la gestion a la rubrica:', |
|
| 307 | - 'info_resultat_recherche' => 'Resultats de la cèrca:', |
|
| 308 | - 'info_rubriques' => 'Rubricas', |
|
| 309 | - 'info_rubriques_02' => 'rubricas', |
|
| 310 | - 'info_rubriques_trouvees' => 'Rubricas trobadas', |
|
| 311 | - 'info_sans_titre' => 'Sensa títol', |
|
| 312 | - 'info_selection_chemin_acces' => '<b>Seleccionatz</b> çai sota lo camin d’accès dins l’annuari:', |
|
| 313 | - 'info_signatures' => 'signaturas', |
|
| 314 | - 'info_site' => 'Sit', |
|
| 315 | - 'info_site_2' => 'sit: ', |
|
| 316 | - 'info_site_min' => 'sit', |
|
| 317 | - 'info_site_reference_2' => 'Sit referenciat', |
|
| 318 | - 'info_site_web' => 'SIT WEB:', # MODIF |
|
| 319 | - 'info_sites' => 'sits', |
|
| 320 | - 'info_sites_lies_mot' => 'Lei sits referenciats ligats a aqueu mot clau', |
|
| 321 | - 'info_sites_proxy' => 'Utilizar un proxy', |
|
| 322 | - 'info_sites_trouves' => 'Sits trobats', |
|
| 323 | - 'info_sous_titre' => 'Sostítol:', |
|
| 324 | - 'info_statut_administrateur' => 'Administrator', |
|
| 325 | - 'info_statut_auteur' => 'Estatut d’aquel autor:', # MODIF |
|
| 326 | - 'info_statut_auteur_a_confirmer' => 'Inscripcion de confirmar', |
|
| 327 | - 'info_statut_auteur_autre' => 'Autre estatut :', |
|
| 328 | - 'info_statut_redacteur' => 'Redactor', |
|
| 329 | - 'info_statut_utilisateurs_1' => 'Estatut predefinit deis utilizaires importats', |
|
| 330 | - 'info_statut_utilisateurs_2' => 'Chausissètz l’estatut d’atribuir ai personas presentas dins l’annuari LDAP quora se connèctan per lo primier còp. Poiretz puei modificar aquel estatut per cada autor un cas per un.', |
|
| 331 | - 'info_suivi_activite' => 'Seguit de l’activitat editoriala', |
|
| 332 | - 'info_surtitre' => 'Subretítol:', |
|
| 333 | - 'info_taille_maximale_vignette' => 'Talha maximala dei vinhetas congreadas per lo sistèma:', |
|
| 334 | - 'info_terminer_installation' => 'Ara podètz acabar la procedura d’installacion estandard.', |
|
| 335 | - 'info_texte' => 'Tèxt', |
|
| 336 | - 'info_texte_explicatif' => 'Tèxt explicatiu', |
|
| 337 | - 'info_texte_long' => '(lo tèxt es lòng: apareis doncas en tròç distints que se tornaràn empegar un còp validats.)', |
|
| 338 | - 'info_texte_message' => 'Tèxt dau vòstre messatge:', # MODIF |
|
| 339 | - 'info_texte_message_02' => 'Tèxt dau messatge', |
|
| 340 | - 'info_titre' => 'Títol:', |
|
| 341 | - 'info_total' => 'totau: ', |
|
| 342 | - 'info_tous_articles_en_redaction' => 'Totei leis articles en cors de redaccion', |
|
| 343 | - 'info_tous_articles_presents' => 'Totei leis articles publicats dins aquela rubrica', |
|
| 344 | - 'info_tous_les' => 'totei lei:', |
|
| 345 | - 'info_tout_site' => 'Tot lo sit', |
|
| 346 | - 'info_tout_site2' => 'An pas revirat l’article dins aquela lenga.', |
|
| 347 | - 'info_tout_site3' => 'An revirat l’article dins aquela lenga, mai an portat puei de modificacions a l’article de referéncia. Cau actualizar la revirada.', |
|
| 348 | - 'info_tout_site4' => 'An revirat l’article dins aquela lenga, e la revirada es actualizada.', |
|
| 349 | - 'info_tout_site5' => 'Article originau.', |
|
| 350 | - 'info_tout_site6' => '<b>Atencion:</b> ren que leis articles originaus s’afichan. |
|
| 292 | + 'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes', # MODIF |
|
| 293 | + 'info_racine_site' => 'Raiç dau sit', |
|
| 294 | + 'info_recharger_page' => 'Vougatz tornar cargar aquela pagina dins un momenton.', |
|
| 295 | + 'info_recherche_auteur_zero' => '<b>Ges de resultat trobat per "@cherche_auteur@".', |
|
| 296 | + 'info_recommencer' => 'Vougatz tornar començar.', |
|
| 297 | + 'info_redacteur_1' => 'Redactor', |
|
| 298 | + 'info_redacteur_2' => 'qu’accedís a l’espaci privat (<i>recomandat</i>)', |
|
| 299 | + 'info_redacteurs' => 'Redactors', |
|
| 300 | + 'info_redaction_en_cours' => 'EN CORS DE REDACCION', |
|
| 301 | + 'info_redirection' => 'Redireccion', |
|
| 302 | + 'info_refuses' => 'Vòstreis articles refusats', |
|
| 303 | + 'info_reglage_ldap' => 'Opcions: <b>Reglatge de l’importacion LDAP</b>', |
|
| 304 | + 'info_renvoi_article' => '<b>Redireccion.</b> Aquel article remanda a la pagina:', |
|
| 305 | + 'info_reserve_admin' => 'Ren que leis administrators pòdon modificar aquela adreiça.', |
|
| 306 | + 'info_restreindre_rubrique' => 'Restrénher la gestion a la rubrica:', |
|
| 307 | + 'info_resultat_recherche' => 'Resultats de la cèrca:', |
|
| 308 | + 'info_rubriques' => 'Rubricas', |
|
| 309 | + 'info_rubriques_02' => 'rubricas', |
|
| 310 | + 'info_rubriques_trouvees' => 'Rubricas trobadas', |
|
| 311 | + 'info_sans_titre' => 'Sensa títol', |
|
| 312 | + 'info_selection_chemin_acces' => '<b>Seleccionatz</b> çai sota lo camin d’accès dins l’annuari:', |
|
| 313 | + 'info_signatures' => 'signaturas', |
|
| 314 | + 'info_site' => 'Sit', |
|
| 315 | + 'info_site_2' => 'sit: ', |
|
| 316 | + 'info_site_min' => 'sit', |
|
| 317 | + 'info_site_reference_2' => 'Sit referenciat', |
|
| 318 | + 'info_site_web' => 'SIT WEB:', # MODIF |
|
| 319 | + 'info_sites' => 'sits', |
|
| 320 | + 'info_sites_lies_mot' => 'Lei sits referenciats ligats a aqueu mot clau', |
|
| 321 | + 'info_sites_proxy' => 'Utilizar un proxy', |
|
| 322 | + 'info_sites_trouves' => 'Sits trobats', |
|
| 323 | + 'info_sous_titre' => 'Sostítol:', |
|
| 324 | + 'info_statut_administrateur' => 'Administrator', |
|
| 325 | + 'info_statut_auteur' => 'Estatut d’aquel autor:', # MODIF |
|
| 326 | + 'info_statut_auteur_a_confirmer' => 'Inscripcion de confirmar', |
|
| 327 | + 'info_statut_auteur_autre' => 'Autre estatut :', |
|
| 328 | + 'info_statut_redacteur' => 'Redactor', |
|
| 329 | + 'info_statut_utilisateurs_1' => 'Estatut predefinit deis utilizaires importats', |
|
| 330 | + 'info_statut_utilisateurs_2' => 'Chausissètz l’estatut d’atribuir ai personas presentas dins l’annuari LDAP quora se connèctan per lo primier còp. Poiretz puei modificar aquel estatut per cada autor un cas per un.', |
|
| 331 | + 'info_suivi_activite' => 'Seguit de l’activitat editoriala', |
|
| 332 | + 'info_surtitre' => 'Subretítol:', |
|
| 333 | + 'info_taille_maximale_vignette' => 'Talha maximala dei vinhetas congreadas per lo sistèma:', |
|
| 334 | + 'info_terminer_installation' => 'Ara podètz acabar la procedura d’installacion estandard.', |
|
| 335 | + 'info_texte' => 'Tèxt', |
|
| 336 | + 'info_texte_explicatif' => 'Tèxt explicatiu', |
|
| 337 | + 'info_texte_long' => '(lo tèxt es lòng: apareis doncas en tròç distints que se tornaràn empegar un còp validats.)', |
|
| 338 | + 'info_texte_message' => 'Tèxt dau vòstre messatge:', # MODIF |
|
| 339 | + 'info_texte_message_02' => 'Tèxt dau messatge', |
|
| 340 | + 'info_titre' => 'Títol:', |
|
| 341 | + 'info_total' => 'totau: ', |
|
| 342 | + 'info_tous_articles_en_redaction' => 'Totei leis articles en cors de redaccion', |
|
| 343 | + 'info_tous_articles_presents' => 'Totei leis articles publicats dins aquela rubrica', |
|
| 344 | + 'info_tous_les' => 'totei lei:', |
|
| 345 | + 'info_tout_site' => 'Tot lo sit', |
|
| 346 | + 'info_tout_site2' => 'An pas revirat l’article dins aquela lenga.', |
|
| 347 | + 'info_tout_site3' => 'An revirat l’article dins aquela lenga, mai an portat puei de modificacions a l’article de referéncia. Cau actualizar la revirada.', |
|
| 348 | + 'info_tout_site4' => 'An revirat l’article dins aquela lenga, e la revirada es actualizada.', |
|
| 349 | + 'info_tout_site5' => 'Article originau.', |
|
| 350 | + 'info_tout_site6' => '<b>Atencion:</b> ren que leis articles originaus s’afichan. |
|
| 351 | 351 | Lei reviradas s’assòcian a l’originau, |
| 352 | 352 | una color indica lor estat:', |
| 353 | - 'info_travail_colaboratif' => 'Trabalh collaboratiu subre leis articles', |
|
| 354 | - 'info_un_article' => 'un article, ', |
|
| 355 | - 'info_un_site' => 'un sit, ', |
|
| 356 | - 'info_une_rubrique' => 'una rubrica, ', |
|
| 357 | - 'info_une_rubrique_02' => '1 rubrica', |
|
| 358 | - 'info_url' => 'URL:', |
|
| 359 | - 'info_urlref' => 'Liame ipertèxt:', |
|
| 360 | - 'info_utilisation_spip' => 'Ara podètz començar d’utilizar lo sistèma de publicacion assistida...', |
|
| 361 | - 'info_visites_par_mois' => 'Afichatge per mes:', |
|
| 362 | - 'info_visiteur_1' => 'Vesitaire', |
|
| 363 | - 'info_visiteur_2' => 'dau sit public', |
|
| 364 | - 'info_visiteurs' => 'Vesitaires', |
|
| 365 | - 'info_visiteurs_02' => 'Vesitaires dau sit public', |
|
| 366 | - 'install_echec_annonce' => 'L’installacion capitarà mau, o abotirà a un sit non foncionau...', |
|
| 367 | - 'install_extension_php_obligatoire' => 'SPIP exigís l’extension php:', |
|
| 368 | - 'install_select_langue' => 'Seleccionatz una lenga puei clicatz lo boton «seguent» per amodar la procedura d’installacion.', |
|
| 369 | - 'intem_redacteur' => 'redactor', |
|
| 370 | - 'item_accepter_inscriptions' => 'Acceptar leis inscripcions', |
|
| 371 | - 'item_activer_messages_avertissement' => 'Activar lei messatges d’avertiment', |
|
| 372 | - 'item_administrateur_2' => 'administrator', |
|
| 373 | - 'item_afficher_calendrier' => 'Afichar dins lo calendier', |
|
| 374 | - 'item_choix_administrateurs' => 'leis administrators', |
|
| 375 | - 'item_choix_generation_miniature' => 'Congrear automaticament lei miniaturas deis imatges.', |
|
| 376 | - 'item_choix_non_generation_miniature' => 'Congrear ges de miniaturas deis imatges.', |
|
| 377 | - 'item_choix_redacteurs' => 'lei redactors', |
|
| 378 | - 'item_choix_visiteurs' => 'lei vesitaires dau sit public', |
|
| 379 | - 'item_creer_fichiers_authent' => 'Crear de fichiers .htpasswd', |
|
| 380 | - 'item_login' => 'Login', |
|
| 381 | - 'item_mots_cles_association_articles' => 'ais articles', |
|
| 382 | - 'item_mots_cles_association_rubriques' => 'ai rubricas', |
|
| 383 | - 'item_mots_cles_association_sites' => 'ai sits referenciats o sindicats', |
|
| 384 | - 'item_non' => 'Non', |
|
| 385 | - 'item_non_accepter_inscriptions' => 'Pas acceptar leis inscripcions', |
|
| 386 | - 'item_non_activer_messages_avertissement' => 'Ges de messatge d’avertiment', |
|
| 387 | - 'item_non_afficher_calendrier' => 'De pas afichar dins lo calendier', |
|
| 388 | - 'item_non_creer_fichiers_authent' => 'Pas crear aquelei fichiers', |
|
| 389 | - 'item_non_publier_articles' => 'Pas publicar leis articles avans la data de publicacion prevista.', |
|
| 390 | - 'item_nouvel_auteur' => 'Autor nòu', |
|
| 391 | - 'item_nouvelle_rubrique' => 'Rubrica nòva', |
|
| 392 | - 'item_oui' => 'Òc', |
|
| 393 | - 'item_publier_articles' => 'Publicar leis articles, quina que siá sa data de publicacion', |
|
| 394 | - 'item_reponse_article' => 'Respònsa a l’article', |
|
| 395 | - 'item_visiteur' => 'vesitaire', |
|
| 353 | + 'info_travail_colaboratif' => 'Trabalh collaboratiu subre leis articles', |
|
| 354 | + 'info_un_article' => 'un article, ', |
|
| 355 | + 'info_un_site' => 'un sit, ', |
|
| 356 | + 'info_une_rubrique' => 'una rubrica, ', |
|
| 357 | + 'info_une_rubrique_02' => '1 rubrica', |
|
| 358 | + 'info_url' => 'URL:', |
|
| 359 | + 'info_urlref' => 'Liame ipertèxt:', |
|
| 360 | + 'info_utilisation_spip' => 'Ara podètz començar d’utilizar lo sistèma de publicacion assistida...', |
|
| 361 | + 'info_visites_par_mois' => 'Afichatge per mes:', |
|
| 362 | + 'info_visiteur_1' => 'Vesitaire', |
|
| 363 | + 'info_visiteur_2' => 'dau sit public', |
|
| 364 | + 'info_visiteurs' => 'Vesitaires', |
|
| 365 | + 'info_visiteurs_02' => 'Vesitaires dau sit public', |
|
| 366 | + 'install_echec_annonce' => 'L’installacion capitarà mau, o abotirà a un sit non foncionau...', |
|
| 367 | + 'install_extension_php_obligatoire' => 'SPIP exigís l’extension php:', |
|
| 368 | + 'install_select_langue' => 'Seleccionatz una lenga puei clicatz lo boton «seguent» per amodar la procedura d’installacion.', |
|
| 369 | + 'intem_redacteur' => 'redactor', |
|
| 370 | + 'item_accepter_inscriptions' => 'Acceptar leis inscripcions', |
|
| 371 | + 'item_activer_messages_avertissement' => 'Activar lei messatges d’avertiment', |
|
| 372 | + 'item_administrateur_2' => 'administrator', |
|
| 373 | + 'item_afficher_calendrier' => 'Afichar dins lo calendier', |
|
| 374 | + 'item_choix_administrateurs' => 'leis administrators', |
|
| 375 | + 'item_choix_generation_miniature' => 'Congrear automaticament lei miniaturas deis imatges.', |
|
| 376 | + 'item_choix_non_generation_miniature' => 'Congrear ges de miniaturas deis imatges.', |
|
| 377 | + 'item_choix_redacteurs' => 'lei redactors', |
|
| 378 | + 'item_choix_visiteurs' => 'lei vesitaires dau sit public', |
|
| 379 | + 'item_creer_fichiers_authent' => 'Crear de fichiers .htpasswd', |
|
| 380 | + 'item_login' => 'Login', |
|
| 381 | + 'item_mots_cles_association_articles' => 'ais articles', |
|
| 382 | + 'item_mots_cles_association_rubriques' => 'ai rubricas', |
|
| 383 | + 'item_mots_cles_association_sites' => 'ai sits referenciats o sindicats', |
|
| 384 | + 'item_non' => 'Non', |
|
| 385 | + 'item_non_accepter_inscriptions' => 'Pas acceptar leis inscripcions', |
|
| 386 | + 'item_non_activer_messages_avertissement' => 'Ges de messatge d’avertiment', |
|
| 387 | + 'item_non_afficher_calendrier' => 'De pas afichar dins lo calendier', |
|
| 388 | + 'item_non_creer_fichiers_authent' => 'Pas crear aquelei fichiers', |
|
| 389 | + 'item_non_publier_articles' => 'Pas publicar leis articles avans la data de publicacion prevista.', |
|
| 390 | + 'item_nouvel_auteur' => 'Autor nòu', |
|
| 391 | + 'item_nouvelle_rubrique' => 'Rubrica nòva', |
|
| 392 | + 'item_oui' => 'Òc', |
|
| 393 | + 'item_publier_articles' => 'Publicar leis articles, quina que siá sa data de publicacion', |
|
| 394 | + 'item_reponse_article' => 'Respònsa a l’article', |
|
| 395 | + 'item_visiteur' => 'vesitaire', |
|
| 396 | 396 | |
| 397 | - // J |
|
| 398 | - 'jour_non_connu_nc' => 'n.c.', |
|
| 397 | + // J |
|
| 398 | + 'jour_non_connu_nc' => 'n.c.', |
|
| 399 | 399 | |
| 400 | - // L |
|
| 401 | - 'lien_ajouter_auteur' => 'Apondre aquel autor', |
|
| 402 | - 'lien_email' => 'e-mail', |
|
| 403 | - 'lien_nom_site' => 'NOM DAU SIT:', |
|
| 404 | - 'lien_retirer_auteur' => 'Levar l’autor', |
|
| 405 | - 'lien_site' => 'sit', |
|
| 406 | - 'lien_tout_deplier' => 'Desplegar tot', |
|
| 407 | - 'lien_tout_replier' => 'Tornar plegar', |
|
| 408 | - 'lien_trier_nom' => 'Triar per nom', |
|
| 409 | - 'lien_trier_nombre_articles' => 'Triar per nombre d’articles', |
|
| 410 | - 'lien_trier_statut' => 'Triar per estatut', |
|
| 411 | - 'lien_voir_en_ligne' => 'VEIRE EN LINHA:', |
|
| 412 | - 'logo_article' => 'LÒGO DE L’ARTICLE', # MODIF |
|
| 413 | - 'logo_auteur' => 'LÒGO DE L’AUTOR', # MODIF |
|
| 414 | - 'logo_rubrique' => 'LÒGO DE LA RUBRICA', # MODIF |
|
| 415 | - 'logo_site' => 'LÒGO D’AQUEU SIT', # MODIF |
|
| 416 | - 'logo_standard_rubrique' => 'LÒGO ESTANDARD DEI RUBRICAS', # MODIF |
|
| 417 | - 'logo_survol' => 'LÒGO PER LO SUBREVÒU', # MODIF |
|
| 400 | + // L |
|
| 401 | + 'lien_ajouter_auteur' => 'Apondre aquel autor', |
|
| 402 | + 'lien_email' => 'e-mail', |
|
| 403 | + 'lien_nom_site' => 'NOM DAU SIT:', |
|
| 404 | + 'lien_retirer_auteur' => 'Levar l’autor', |
|
| 405 | + 'lien_site' => 'sit', |
|
| 406 | + 'lien_tout_deplier' => 'Desplegar tot', |
|
| 407 | + 'lien_tout_replier' => 'Tornar plegar', |
|
| 408 | + 'lien_trier_nom' => 'Triar per nom', |
|
| 409 | + 'lien_trier_nombre_articles' => 'Triar per nombre d’articles', |
|
| 410 | + 'lien_trier_statut' => 'Triar per estatut', |
|
| 411 | + 'lien_voir_en_ligne' => 'VEIRE EN LINHA:', |
|
| 412 | + 'logo_article' => 'LÒGO DE L’ARTICLE', # MODIF |
|
| 413 | + 'logo_auteur' => 'LÒGO DE L’AUTOR', # MODIF |
|
| 414 | + 'logo_rubrique' => 'LÒGO DE LA RUBRICA', # MODIF |
|
| 415 | + 'logo_site' => 'LÒGO D’AQUEU SIT', # MODIF |
|
| 416 | + 'logo_standard_rubrique' => 'LÒGO ESTANDARD DEI RUBRICAS', # MODIF |
|
| 417 | + 'logo_survol' => 'LÒGO PER LO SUBREVÒU', # MODIF |
|
| 418 | 418 | |
| 419 | - // M |
|
| 420 | - 'menu_aide_installation_choix_base' => 'Chausida de vòstra basa', |
|
| 421 | - 'module_fichier_langue' => 'Fichier de lenga', |
|
| 422 | - 'module_raccourci' => 'Acorcha', |
|
| 423 | - 'module_texte_affiche' => 'Tèxt afichat', |
|
| 424 | - 'module_texte_explicatif' => 'Podètz inserir leis acorchas seguentas dins leis esqueletas de vòstre sit public. Se reviraràn automaticament dins lei diferentei lengas per lei qualas existís un fichier de lenga.', |
|
| 425 | - 'module_texte_traduction' => 'Lo fichier de lenga «@module@» es disponible en:', |
|
| 426 | - 'mois_non_connu' => 'non conegut', |
|
| 419 | + // M |
|
| 420 | + 'menu_aide_installation_choix_base' => 'Chausida de vòstra basa', |
|
| 421 | + 'module_fichier_langue' => 'Fichier de lenga', |
|
| 422 | + 'module_raccourci' => 'Acorcha', |
|
| 423 | + 'module_texte_affiche' => 'Tèxt afichat', |
|
| 424 | + 'module_texte_explicatif' => 'Podètz inserir leis acorchas seguentas dins leis esqueletas de vòstre sit public. Se reviraràn automaticament dins lei diferentei lengas per lei qualas existís un fichier de lenga.', |
|
| 425 | + 'module_texte_traduction' => 'Lo fichier de lenga «@module@» es disponible en:', |
|
| 426 | + 'mois_non_connu' => 'non conegut', |
|
| 427 | 427 | |
| 428 | - // O |
|
| 429 | - 'onglet_repartition_actuelle' => 'd’aquesta passa', |
|
| 428 | + // O |
|
| 429 | + 'onglet_repartition_actuelle' => 'd’aquesta passa', |
|
| 430 | 430 | |
| 431 | - // P |
|
| 432 | - 'plugin_etat_developpement' => 'en cors de desvolopament', |
|
| 433 | - 'plugin_etat_experimental' => 'experimentau', |
|
| 434 | - 'plugin_etat_stable' => 'estable', |
|
| 435 | - 'plugin_etat_test' => 'a l’ensag', |
|
| 436 | - 'plugins_liste' => 'Tièra deis ajustons', |
|
| 431 | + // P |
|
| 432 | + 'plugin_etat_developpement' => 'en cors de desvolopament', |
|
| 433 | + 'plugin_etat_experimental' => 'experimentau', |
|
| 434 | + 'plugin_etat_stable' => 'estable', |
|
| 435 | + 'plugin_etat_test' => 'a l’ensag', |
|
| 436 | + 'plugins_liste' => 'Tièra deis ajustons', |
|
| 437 | 437 | |
| 438 | - // R |
|
| 439 | - 'repertoire_plugins' => 'Repertòri :', |
|
| 440 | - 'required' => '[Obligatòri]', # MODIF |
|
| 438 | + // R |
|
| 439 | + 'repertoire_plugins' => 'Repertòri :', |
|
| 440 | + 'required' => '[Obligatòri]', # MODIF |
|
| 441 | 441 | |
| 442 | - // S |
|
| 443 | - 'statut_admin_restreint' => '(admin. restrench)', # MODIF |
|
| 442 | + // S |
|
| 443 | + 'statut_admin_restreint' => '(admin. restrench)', # MODIF |
|
| 444 | 444 | |
| 445 | - // T |
|
| 446 | - 'taille_cache_image' => 'Leis imatges qu’SPIP a calculat automaticament (vinhetas dei documents, títols presentats en forma grafica, foncions matematicas en format TeX...) ocupan dins lo repertòri @dir@ un totau de @taille@.', |
|
| 447 | - 'taille_cache_octets' => 'Ara la talha de l’escondedor compassa @octets@.', # MODIF |
|
| 448 | - 'taille_cache_vide' => 'L’escondedor es vuege.', |
|
| 449 | - 'taille_repertoire_cache' => 'Talha dau repertòri escondedor', |
|
| 450 | - 'text_article_propose_publication' => 'Article prepausat per la publicacion. Esitetz pas de donar vòstre vejaire gràcias au forum estacat a aquel article (en bas de pagina).', # MODIF |
|
| 451 | - 'texte_acces_ldap_anonyme_1' => 'D’unei servidors LDAP accèptan ges d’accès anonim. En aqueu cas, cau especificar un identificant d’accès iniciau per poder puei cercar d’informacions dins l’annuari. Pasmens, lei camps seguents se poiràn laissar vueges dins la màger part dei cas.', |
|
| 452 | - 'texte_admin_effacer_01' => 'Aquela comanda escafa <i>tot</i> lo contengut de la basa de donadas, |
|
| 445 | + // T |
|
| 446 | + 'taille_cache_image' => 'Leis imatges qu’SPIP a calculat automaticament (vinhetas dei documents, títols presentats en forma grafica, foncions matematicas en format TeX...) ocupan dins lo repertòri @dir@ un totau de @taille@.', |
|
| 447 | + 'taille_cache_octets' => 'Ara la talha de l’escondedor compassa @octets@.', # MODIF |
|
| 448 | + 'taille_cache_vide' => 'L’escondedor es vuege.', |
|
| 449 | + 'taille_repertoire_cache' => 'Talha dau repertòri escondedor', |
|
| 450 | + 'text_article_propose_publication' => 'Article prepausat per la publicacion. Esitetz pas de donar vòstre vejaire gràcias au forum estacat a aquel article (en bas de pagina).', # MODIF |
|
| 451 | + 'texte_acces_ldap_anonyme_1' => 'D’unei servidors LDAP accèptan ges d’accès anonim. En aqueu cas, cau especificar un identificant d’accès iniciau per poder puei cercar d’informacions dins l’annuari. Pasmens, lei camps seguents se poiràn laissar vueges dins la màger part dei cas.', |
|
| 452 | + 'texte_admin_effacer_01' => 'Aquela comanda escafa <i>tot</i> lo contengut de la basa de donadas, |
|
| 453 | 453 | inclús <i>totei</i> leis accès redactors e administrators. Un còp que l’auretz executada, auretz de tornar lançar l’installacion d’SPIP per tornar crear una basa novèla e mai un primier accès administrator.', |
| 454 | - 'texte_adresse_annuaire_1' => '(Se vòstre annuari es installat sus la meteissa maquina qu’aqueu sit web, s’agís probable de "localhost".)', |
|
| 455 | - 'texte_ajout_auteur' => 'L’autor seguent es estat apondut a l’article:', |
|
| 456 | - 'texte_annuaire_ldap_1' => 'S’accedissètz a un annuari (LDAP), lo podètz utilizar per importar automaticament d’utilizaires sota SPIP.', |
|
| 457 | - 'texte_article_statut' => 'Aquel article es:', |
|
| 458 | - 'texte_article_virtuel' => 'Article virtuau', |
|
| 459 | - 'texte_article_virtuel_reference' => '<b>Article virtuau:</b> article referenciat dins vòstre sit SPIP, mai redirigit vèrs una autra URL. Per suprimir la redireccion, escafatz l’URL çai subre.', |
|
| 460 | - 'texte_aucun_resultat_auteur' => 'Ges de resultat per "@cherche_auteur@"', |
|
| 461 | - 'texte_auteur_messagerie' => 'Aquest sit vos pòt indicar de contunha la tiera dei redactors connectats, çò que vos permet d’escambiar de messatges en dirècte. Podètz decidir de pas aparéisser dins aquela lista (siatz "invisible/a" per leis autreis utilizaires).', |
|
| 462 | - 'texte_auteurs' => 'LEIS AUTORS', |
|
| 463 | - 'texte_choix_base_1' => 'Chausissètz vòstra basa:', |
|
| 464 | - 'texte_choix_base_2' => 'Lo servidor SQL conten mai d’una basa de donadas.', |
|
| 465 | - 'texte_choix_base_3' => '<b>Chausissètz</b> çai sota la que vòstre aubergador vos a atribuida:', |
|
| 466 | - 'texte_compte_element' => '@count@ element', |
|
| 467 | - 'texte_compte_elements' => '@count@ elements', |
|
| 468 | - 'texte_connexion_mysql' => 'Consultatz leis informacions que vòstre aubergador fornís: i devètz trobar, se vòstre aubergador supòrta SQL, lei còdes de connexion au servidor SQL.', # MODIF |
|
| 469 | - 'texte_contenu_article' => '(Contengut de l’article en quauquei mots.)', |
|
| 470 | - 'texte_contenu_articles' => 'Segon la maqueta que vòstre sit a adoptada, podètz decidir |
|
| 454 | + 'texte_adresse_annuaire_1' => '(Se vòstre annuari es installat sus la meteissa maquina qu’aqueu sit web, s’agís probable de "localhost".)', |
|
| 455 | + 'texte_ajout_auteur' => 'L’autor seguent es estat apondut a l’article:', |
|
| 456 | + 'texte_annuaire_ldap_1' => 'S’accedissètz a un annuari (LDAP), lo podètz utilizar per importar automaticament d’utilizaires sota SPIP.', |
|
| 457 | + 'texte_article_statut' => 'Aquel article es:', |
|
| 458 | + 'texte_article_virtuel' => 'Article virtuau', |
|
| 459 | + 'texte_article_virtuel_reference' => '<b>Article virtuau:</b> article referenciat dins vòstre sit SPIP, mai redirigit vèrs una autra URL. Per suprimir la redireccion, escafatz l’URL çai subre.', |
|
| 460 | + 'texte_aucun_resultat_auteur' => 'Ges de resultat per "@cherche_auteur@"', |
|
| 461 | + 'texte_auteur_messagerie' => 'Aquest sit vos pòt indicar de contunha la tiera dei redactors connectats, çò que vos permet d’escambiar de messatges en dirècte. Podètz decidir de pas aparéisser dins aquela lista (siatz "invisible/a" per leis autreis utilizaires).', |
|
| 462 | + 'texte_auteurs' => 'LEIS AUTORS', |
|
| 463 | + 'texte_choix_base_1' => 'Chausissètz vòstra basa:', |
|
| 464 | + 'texte_choix_base_2' => 'Lo servidor SQL conten mai d’una basa de donadas.', |
|
| 465 | + 'texte_choix_base_3' => '<b>Chausissètz</b> çai sota la que vòstre aubergador vos a atribuida:', |
|
| 466 | + 'texte_compte_element' => '@count@ element', |
|
| 467 | + 'texte_compte_elements' => '@count@ elements', |
|
| 468 | + 'texte_connexion_mysql' => 'Consultatz leis informacions que vòstre aubergador fornís: i devètz trobar, se vòstre aubergador supòrta SQL, lei còdes de connexion au servidor SQL.', # MODIF |
|
| 469 | + 'texte_contenu_article' => '(Contengut de l’article en quauquei mots.)', |
|
| 470 | + 'texte_contenu_articles' => 'Segon la maqueta que vòstre sit a adoptada, podètz decidir |
|
| 471 | 471 | que certaneis elements deis articles s’utilizen pas. |
| 472 | 472 | Utilizatz la tiera çai sota per indicar quineis elements son disponibles.', |
| 473 | - 'texte_crash_base' => 'Se vòstra basa de donadas s’es |
|
| 473 | + 'texte_crash_base' => 'Se vòstra basa de donadas s’es |
|
| 474 | 474 | encalada, podètz assajar una reparacion |
| 475 | 475 | automatica.', |
| 476 | - 'texte_creer_rubrique' => 'Avans de poder escriure d’articles,<br /> devètz crear una rubrica.', |
|
| 477 | - 'texte_date_creation_article' => 'DATA DE CREACION DE L’ARTICLE:', |
|
| 478 | - 'texte_date_publication_anterieure' => 'DATA DE PUBLICACION ANTERIORA :', |
|
| 479 | - 'texte_date_publication_anterieure_nonaffichee' => 'Afichar ges de data de publicacion anteriora.', |
|
| 480 | - 'texte_date_publication_article' => 'DATA DE PUBLICACION EN LINHA :', |
|
| 481 | - 'texte_descriptif_rapide' => 'Descriptiu rapid', |
|
| 482 | - 'texte_effacer_base' => 'Escafar la basa de donadas SPIP', |
|
| 483 | - 'texte_en_cours_validation' => 'Se prepausa de publicar leis articles e brèvas çai sota. Esitetz pas de donar vòstre vejaire gràcias ai forums que i son estacats.', # MODIF |
|
| 484 | - 'texte_enrichir_mise_a_jour' => 'Podètz enriquir la compaginacion de vòstre tèxt en utilizant d’"acorchas tipograficas".', |
|
| 485 | - 'texte_fichier_authent' => '<b>Deu crear, SPIP, de fichiers especiaus <tt>.htpasswd</tt> |
|
| 476 | + 'texte_creer_rubrique' => 'Avans de poder escriure d’articles,<br /> devètz crear una rubrica.', |
|
| 477 | + 'texte_date_creation_article' => 'DATA DE CREACION DE L’ARTICLE:', |
|
| 478 | + 'texte_date_publication_anterieure' => 'DATA DE PUBLICACION ANTERIORA :', |
|
| 479 | + 'texte_date_publication_anterieure_nonaffichee' => 'Afichar ges de data de publicacion anteriora.', |
|
| 480 | + 'texte_date_publication_article' => 'DATA DE PUBLICACION EN LINHA :', |
|
| 481 | + 'texte_descriptif_rapide' => 'Descriptiu rapid', |
|
| 482 | + 'texte_effacer_base' => 'Escafar la basa de donadas SPIP', |
|
| 483 | + 'texte_en_cours_validation' => 'Se prepausa de publicar leis articles e brèvas çai sota. Esitetz pas de donar vòstre vejaire gràcias ai forums que i son estacats.', # MODIF |
|
| 484 | + 'texte_enrichir_mise_a_jour' => 'Podètz enriquir la compaginacion de vòstre tèxt en utilizant d’"acorchas tipograficas".', |
|
| 485 | + 'texte_fichier_authent' => '<b>Deu crear, SPIP, de fichiers especiaus <tt>.htpasswd</tt> |
|
| 486 | 486 | e <tt>.htpasswd-admin</tt> dins lo repertòri @dossier@?</b><p> |
| 487 | 487 | Aquelei fichiers vos pòdon servir per restrénher l’accès ais autors |
| 488 | 488 | e administrators alhors dins vòstre sit |
@@ -490,46 +490,46 @@ discard block |
||
| 490 | 490 | Se vos sèrv pas, podètz laissar aquesta opcion |
| 491 | 491 | a sa valor predefinida (ges de creacion |
| 492 | 492 | dei fichiers).</p>', # MODIF |
| 493 | - 'texte_informations_personnelles_1' => 'Ara lo sistèma vos crearà un accès personalizat au sit.', |
|
| 494 | - 'texte_informations_personnelles_2' => '(Nòta: se s’agís d’una reïnstallacion, e se vòstre accès fonciona encara, podètz', # MODIF |
|
| 495 | - 'texte_introductif_article' => '(Tèxt introductiu de l’article.)', |
|
| 496 | - 'texte_jeu_caractere' => 'Aquesta opcion es utila se vòstre sit deu afichar d’alfabets |
|
| 493 | + 'texte_informations_personnelles_1' => 'Ara lo sistèma vos crearà un accès personalizat au sit.', |
|
| 494 | + 'texte_informations_personnelles_2' => '(Nòta: se s’agís d’una reïnstallacion, e se vòstre accès fonciona encara, podètz', # MODIF |
|
| 495 | + 'texte_introductif_article' => '(Tèxt introductiu de l’article.)', |
|
| 496 | + 'texte_jeu_caractere' => 'Aquesta opcion es utila se vòstre sit deu afichar d’alfabets |
|
| 497 | 497 | diferents de l’alfabet latin (o "occidentau") e sei derivats. |
| 498 | 498 | En aqueu cas, cau cambiar lo reglatge predefinit per fin d’utilizar |
| 499 | 499 | un jòc de caractèrs apropriat. Oblidetz pas tanpauc d’adaptar |
| 500 | 500 | lo sit public en consequéncia (balisa <tt>#CHARSET</tt>).', |
| 501 | - 'texte_jeu_caractere_3' => 'Vòstre sit es per ara installat amb lo jòc de caractèrs :', |
|
| 502 | - 'texte_login_ldap_1' => '(Laissar vuege per un accès anonim, o picar lo camin complet, per exemple «<tt>uid=fabre, ou=usanciers, dc=mon-domeni, dc=com</tt>».)', |
|
| 503 | - 'texte_login_precaution' => 'Atencion! Aquò’s lo login amb lo quau siatz ara connectat/ada. |
|
| 501 | + 'texte_jeu_caractere_3' => 'Vòstre sit es per ara installat amb lo jòc de caractèrs :', |
|
| 502 | + 'texte_login_ldap_1' => '(Laissar vuege per un accès anonim, o picar lo camin complet, per exemple «<tt>uid=fabre, ou=usanciers, dc=mon-domeni, dc=com</tt>».)', |
|
| 503 | + 'texte_login_precaution' => 'Atencion! Aquò’s lo login amb lo quau siatz ara connectat/ada. |
|
| 504 | 504 | Utilizatz aquest formulari amb precaucion...', |
| 505 | - 'texte_mise_a_niveau_base_1' => 'Venètz d’actualizar lei fichiers SPIP. |
|
| 505 | + 'texte_mise_a_niveau_base_1' => 'Venètz d’actualizar lei fichiers SPIP. |
|
| 506 | 506 | Ara cau metre a nivèu la basa de donadas |
| 507 | 507 | dau sit.', |
| 508 | - 'texte_modifier_article' => 'Modificar l’article:', |
|
| 509 | - 'texte_multilinguisme' => 'Se desiratz de gerir d’articles en mai d’una lenga, amb una navigacion complèxa, podètz apondre un menut per chausir la lenga deis articles e/o dei rubricas, en foncion de l’organizacion de vòstre sit.', # MODIF |
|
| 510 | - 'texte_multilinguisme_trad' => 'Podètz tanben activar un sistèma de gestion dei liames entre lei diferentei reviradas d’un article.', # MODIF |
|
| 511 | - 'texte_non_compresse' => '<i>non comprimit</i> (per amòr que vòstre servidor supòrta pas aquela foncionalitat)', |
|
| 512 | - 'texte_nouvelle_version_spip_1' => 'Avètz installada una version novèla d’SPIP.', |
|
| 513 | - 'texte_nouvelle_version_spip_2' => 'Aquesta version novèla demanda una actualizacion mai completa que de costuma. Se siatz webmèstre/webmèstra dau sit, vougatz escafar lo fichier <tt>inc_connect.php3</tt> dau repertòri <tt>ecrire</tt> e tornar prene l’installacion per fin d’actualizar vòstrei paramètres de connexion a la basa de donadas.<p> (NB: s’avètz demembrat vòstrei paramètres de connexion, espepissatz lo fichier <tt>inc_connect.php3</tt> avans de lo suprimir...)</p>', # MODIF |
|
| 514 | - 'texte_operation_echec' => 'Tornatz a la pagina precedenta, chausissètz una autra basa o creatz-ne’n una novèla. Verificatz leis informacions que vòstre aubergador a fornidas.', |
|
| 515 | - 'texte_plus_trois_car' => 'mai de 3 caractèrs', |
|
| 516 | - 'texte_plusieurs_articles' => 'Mai d’un autor trobat per "@cherche_auteur@":', |
|
| 517 | - 'texte_port_annuaire' => '(La valor indicada coma predefinida conven en generau.)', |
|
| 518 | - 'texte_proposer_publication' => 'Quora auretz acabat vòstre article,<br /> poiretz prepausar que siá publicat.', |
|
| 519 | - 'texte_proxy' => 'Dins d’unei cas (intranet, rets protegidas...), |
|
| 508 | + 'texte_modifier_article' => 'Modificar l’article:', |
|
| 509 | + 'texte_multilinguisme' => 'Se desiratz de gerir d’articles en mai d’una lenga, amb una navigacion complèxa, podètz apondre un menut per chausir la lenga deis articles e/o dei rubricas, en foncion de l’organizacion de vòstre sit.', # MODIF |
|
| 510 | + 'texte_multilinguisme_trad' => 'Podètz tanben activar un sistèma de gestion dei liames entre lei diferentei reviradas d’un article.', # MODIF |
|
| 511 | + 'texte_non_compresse' => '<i>non comprimit</i> (per amòr que vòstre servidor supòrta pas aquela foncionalitat)', |
|
| 512 | + 'texte_nouvelle_version_spip_1' => 'Avètz installada una version novèla d’SPIP.', |
|
| 513 | + 'texte_nouvelle_version_spip_2' => 'Aquesta version novèla demanda una actualizacion mai completa que de costuma. Se siatz webmèstre/webmèstra dau sit, vougatz escafar lo fichier <tt>inc_connect.php3</tt> dau repertòri <tt>ecrire</tt> e tornar prene l’installacion per fin d’actualizar vòstrei paramètres de connexion a la basa de donadas.<p> (NB: s’avètz demembrat vòstrei paramètres de connexion, espepissatz lo fichier <tt>inc_connect.php3</tt> avans de lo suprimir...)</p>', # MODIF |
|
| 514 | + 'texte_operation_echec' => 'Tornatz a la pagina precedenta, chausissètz una autra basa o creatz-ne’n una novèla. Verificatz leis informacions que vòstre aubergador a fornidas.', |
|
| 515 | + 'texte_plus_trois_car' => 'mai de 3 caractèrs', |
|
| 516 | + 'texte_plusieurs_articles' => 'Mai d’un autor trobat per "@cherche_auteur@":', |
|
| 517 | + 'texte_port_annuaire' => '(La valor indicada coma predefinida conven en generau.)', |
|
| 518 | + 'texte_proposer_publication' => 'Quora auretz acabat vòstre article,<br /> poiretz prepausar que siá publicat.', |
|
| 519 | + 'texte_proxy' => 'Dins d’unei cas (intranet, rets protegidas...), |
|
| 520 | 520 | se pòt que cauga utilizar un <i>proxy HTTP</i> per aténher lei sits sindicats. |
| 521 | 521 | En aqueu cas, marcatz çai sota son adreiça, sota la forma |
| 522 | 522 | <tt><html>http://proxy:8080</html></tt>. En generau, |
| 523 | 523 | laissaretz vueja aquela casa.', |
| 524 | - 'texte_publication_articles_post_dates' => 'Coma SPIP se deu comportar fàcia ais articles que sa |
|
| 524 | + 'texte_publication_articles_post_dates' => 'Coma SPIP se deu comportar fàcia ais articles que sa |
|
| 525 | 525 | data de publicacion es fixada a una |
| 526 | 526 | escasença futura?', |
| 527 | - 'texte_rappel_selection_champs' => '[Oblidetz pas de seleccionar aqueu camp correctament.]', |
|
| 528 | - 'texte_recalcul_page' => 'Se volètz |
|
| 527 | + 'texte_rappel_selection_champs' => '[Oblidetz pas de seleccionar aqueu camp correctament.]', |
|
| 528 | + 'texte_recalcul_page' => 'Se volètz |
|
| 529 | 529 | tornar calcular ren qu’una pagina, passatz puslèu per l’espaci public e utilizatz lo boton "tornar calcular".', |
| 530 | - 'texte_recuperer_base' => 'Reparar la basa de donadas', |
|
| 531 | - 'texte_reference_mais_redirige' => 'article referenciat dins vòstre sit SPIP, mai redirigit vèrs una autra URL.', |
|
| 532 | - 'texte_requetes_echouent' => '<b>Quora d’unei requistas SQL s’encalan |
|
| 530 | + 'texte_recuperer_base' => 'Reparar la basa de donadas', |
|
| 531 | + 'texte_reference_mais_redirige' => 'article referenciat dins vòstre sit SPIP, mai redirigit vèrs una autra URL.', |
|
| 532 | + 'texte_requetes_echouent' => '<b>Quora d’unei requistas SQL s’encalan |
|
| 533 | 533 | sistematicament e sensa rason aparenta, se pòt |
| 534 | 534 | qu’aquò venga ben de la basa de donadas. </b><p> |
| 535 | 535 | SQL ten la facultat de reparar sei |
@@ -539,73 +539,73 @@ discard block |
||
| 539 | 539 | benlèu d’indicis de çò que va pas...</p><p> |
| 540 | 540 | Se lo problèma persistís, contactatz vòstre |
| 541 | 541 | aubergador.</p>', # MODIF |
| 542 | - 'texte_selection_langue_principale' => 'Podètz seleccionar çai sota la "lenga principala" dau sit. Aquela chausida vos obliga pas -grand gaug- d’escriure vòstreis articles dins la lenga seleccionada, mai permet de determinar: |
|
| 542 | + 'texte_selection_langue_principale' => 'Podètz seleccionar çai sota la "lenga principala" dau sit. Aquela chausida vos obliga pas -grand gaug- d’escriure vòstreis articles dins la lenga seleccionada, mai permet de determinar: |
|
| 543 | 543 | <ul><li> lo format predefinit dei datas sus lo sit public;</li> |
| 544 | 544 | <li> la natura dau motor tipografic que SPIP deu utilizar per lo rendut dei tèxts;</li> |
| 545 | 545 | <li> la lenga utilizada dins lei formularis dau sit public;</li> |
| 546 | 546 | <li> la lenga presentada coma predefinida dins l’espaci privat.</li></ul>', |
| 547 | - 'texte_sous_titre' => 'Sostítol', |
|
| 548 | - 'texte_statistiques_visites' => '(barras escuras: dimenge / corba escura: evolucion de la mejana)', |
|
| 549 | - 'texte_statut_attente_validation' => 'en espèra de validacion', |
|
| 550 | - 'texte_statut_publies' => 'publicats en linha', |
|
| 551 | - 'texte_statut_refuses' => 'refusats', |
|
| 552 | - 'texte_suppression_fichiers' => 'Utilizatz aquela comanda per suprimir totei lei fichiers que se tròban |
|
| 547 | + 'texte_sous_titre' => 'Sostítol', |
|
| 548 | + 'texte_statistiques_visites' => '(barras escuras: dimenge / corba escura: evolucion de la mejana)', |
|
| 549 | + 'texte_statut_attente_validation' => 'en espèra de validacion', |
|
| 550 | + 'texte_statut_publies' => 'publicats en linha', |
|
| 551 | + 'texte_statut_refuses' => 'refusats', |
|
| 552 | + 'texte_suppression_fichiers' => 'Utilizatz aquela comanda per suprimir totei lei fichiers que se tròban |
|
| 553 | 553 | dins l’escondedor SPIP. Aquò permet per exemple de forçar un calcul nòu de totei lei paginas |
| 554 | 554 | s’avètz bravament modificat lo grafisme o l’estructura dau sit.', |
| 555 | - 'texte_sur_titre' => 'Subretítol', |
|
| 556 | - 'texte_table_ok' => ': aquesta taula es condrecha.', |
|
| 557 | - 'texte_tentative_recuperation' => 'Assai de reparacion', |
|
| 558 | - 'texte_tenter_reparation' => 'Assajar de reparar la basa de donadas', |
|
| 559 | - 'texte_test_proxy' => 'Per assajar aqueu proxy, indicatz aicí l’adreiça d’un sit web |
|
| 555 | + 'texte_sur_titre' => 'Subretítol', |
|
| 556 | + 'texte_table_ok' => ': aquesta taula es condrecha.', |
|
| 557 | + 'texte_tentative_recuperation' => 'Assai de reparacion', |
|
| 558 | + 'texte_tenter_reparation' => 'Assajar de reparar la basa de donadas', |
|
| 559 | + 'texte_test_proxy' => 'Per assajar aqueu proxy, indicatz aicí l’adreiça d’un sit web |
|
| 560 | 560 | que lo voudriatz esprovar.', |
| 561 | - 'texte_titre_02' => 'Títol:', |
|
| 562 | - 'texte_titre_obligatoire' => '<b>Títol</b> [Obligatòri]', |
|
| 563 | - 'texte_travail_article' => '@nom_auteur_modif@ a trabalhat sus aquel article fa @date_diff@ minutas', |
|
| 564 | - 'texte_travail_collaboratif' => 'Quora es frequent que mai d’un redactor |
|
| 561 | + 'texte_titre_02' => 'Títol:', |
|
| 562 | + 'texte_titre_obligatoire' => '<b>Títol</b> [Obligatòri]', |
|
| 563 | + 'texte_travail_article' => '@nom_auteur_modif@ a trabalhat sus aquel article fa @date_diff@ minutas', |
|
| 564 | + 'texte_travail_collaboratif' => 'Quora es frequent que mai d’un redactor |
|
| 565 | 565 | trabalhe sus lo meteis article, lo sistèma |
| 566 | 566 | pòt afichar leis articles recentament "dobèrts" |
| 567 | 567 | per fin d’evitar lei modificacions simultanèas. |
| 568 | 568 | Aquela opcion es desactivada de maniera predefinida |
| 569 | 569 | per fin d’evitar d’afichar de messatges d’avertiment |
| 570 | 570 | intempestius.', |
| 571 | - 'texte_vide' => 'vuege', |
|
| 572 | - 'texte_vider_cache' => 'Vujar l’escondedor', |
|
| 573 | - 'titre_admin_tech' => 'Mantenença tecnica', |
|
| 574 | - 'titre_admin_vider' => 'Mantenença tecnica', |
|
| 575 | - 'titre_cadre_afficher_article' => 'Afichar leis articles', |
|
| 576 | - 'titre_cadre_afficher_traductions' => 'Afichar l’estat dei reviradas per aquela lenga', |
|
| 577 | - 'titre_cadre_ajouter_auteur' => 'APONDRE UN AUTOR:', |
|
| 578 | - 'titre_cadre_interieur_rubrique' => 'Dintre la rubrica', |
|
| 579 | - 'titre_cadre_numero_auteur' => 'AUTOR NUMÈRO', |
|
| 580 | - 'titre_cadre_signature_obligatoire' => '<b>Signatura</b> [Obligatòria]<br />', |
|
| 581 | - 'titre_config_fonctions' => 'Configuracion dau sit', |
|
| 582 | - 'titre_configuration' => 'Configuracion dau sit', |
|
| 583 | - 'titre_connexion_ldap' => 'Opcions: <b>Vòstra connexion LDAP</b>', |
|
| 584 | - 'titre_groupe_mots' => 'GROP DE MOTS:', |
|
| 585 | - 'titre_langue_article' => 'LENGA DE L’ARTICLE', # MODIF |
|
| 586 | - 'titre_langue_rubrique' => 'LENGA DE LA RUBRICA', # MODIF |
|
| 587 | - 'titre_langue_trad_article' => 'LENGA E REVIRADAS DE L’ARTICLE', |
|
| 588 | - 'titre_les_articles' => 'LEIS ARTICLES', |
|
| 589 | - 'titre_naviguer_dans_le_site' => 'Navigar per lo sit...', |
|
| 590 | - 'titre_nouvelle_rubrique' => 'Rubrica novèla', |
|
| 591 | - 'titre_numero_rubrique' => 'RUBRICA NUMÈRO:', |
|
| 592 | - 'titre_page_articles_edit' => 'Modificar: @titre@', |
|
| 593 | - 'titre_page_articles_page' => 'Leis articles', |
|
| 594 | - 'titre_page_articles_tous' => 'Tot lo sit', |
|
| 595 | - 'titre_page_calendrier' => 'Calendier @nom_mois@ de @annee@', |
|
| 596 | - 'titre_page_config_contenu' => 'Configuracion dau sit', |
|
| 597 | - 'titre_page_delete_all' => 'supression totala e irreversibla', |
|
| 598 | - 'titre_page_recherche' => 'Resultats de la cèrca @recherche@', |
|
| 599 | - 'titre_page_statistiques_referers' => 'Estadisticas (liames intrants)', |
|
| 600 | - 'titre_page_upgrade' => 'Mesa a nivèu d’SPIP', |
|
| 601 | - 'titre_publication_articles_post_dates' => 'Publicacion deis articles pòstdatats', |
|
| 602 | - 'titre_reparation' => 'Reparacion', |
|
| 603 | - 'titre_suivi_petition' => 'Seguit dei peticions', |
|
| 604 | - 'trad_article_traduction' => 'Totei lei versions d’aquel article:', |
|
| 605 | - 'trad_delier' => 'Cessar de liar aquest article a sei reviradas ', # MODIF |
|
| 606 | - 'trad_lier' => 'Aquest article es una revirada de l’article numèro:', |
|
| 607 | - 'trad_new' => 'Escriure una revirada novèla d’aquest article', # MODIF |
|
| 571 | + 'texte_vide' => 'vuege', |
|
| 572 | + 'texte_vider_cache' => 'Vujar l’escondedor', |
|
| 573 | + 'titre_admin_tech' => 'Mantenença tecnica', |
|
| 574 | + 'titre_admin_vider' => 'Mantenença tecnica', |
|
| 575 | + 'titre_cadre_afficher_article' => 'Afichar leis articles', |
|
| 576 | + 'titre_cadre_afficher_traductions' => 'Afichar l’estat dei reviradas per aquela lenga', |
|
| 577 | + 'titre_cadre_ajouter_auteur' => 'APONDRE UN AUTOR:', |
|
| 578 | + 'titre_cadre_interieur_rubrique' => 'Dintre la rubrica', |
|
| 579 | + 'titre_cadre_numero_auteur' => 'AUTOR NUMÈRO', |
|
| 580 | + 'titre_cadre_signature_obligatoire' => '<b>Signatura</b> [Obligatòria]<br />', |
|
| 581 | + 'titre_config_fonctions' => 'Configuracion dau sit', |
|
| 582 | + 'titre_configuration' => 'Configuracion dau sit', |
|
| 583 | + 'titre_connexion_ldap' => 'Opcions: <b>Vòstra connexion LDAP</b>', |
|
| 584 | + 'titre_groupe_mots' => 'GROP DE MOTS:', |
|
| 585 | + 'titre_langue_article' => 'LENGA DE L’ARTICLE', # MODIF |
|
| 586 | + 'titre_langue_rubrique' => 'LENGA DE LA RUBRICA', # MODIF |
|
| 587 | + 'titre_langue_trad_article' => 'LENGA E REVIRADAS DE L’ARTICLE', |
|
| 588 | + 'titre_les_articles' => 'LEIS ARTICLES', |
|
| 589 | + 'titre_naviguer_dans_le_site' => 'Navigar per lo sit...', |
|
| 590 | + 'titre_nouvelle_rubrique' => 'Rubrica novèla', |
|
| 591 | + 'titre_numero_rubrique' => 'RUBRICA NUMÈRO:', |
|
| 592 | + 'titre_page_articles_edit' => 'Modificar: @titre@', |
|
| 593 | + 'titre_page_articles_page' => 'Leis articles', |
|
| 594 | + 'titre_page_articles_tous' => 'Tot lo sit', |
|
| 595 | + 'titre_page_calendrier' => 'Calendier @nom_mois@ de @annee@', |
|
| 596 | + 'titre_page_config_contenu' => 'Configuracion dau sit', |
|
| 597 | + 'titre_page_delete_all' => 'supression totala e irreversibla', |
|
| 598 | + 'titre_page_recherche' => 'Resultats de la cèrca @recherche@', |
|
| 599 | + 'titre_page_statistiques_referers' => 'Estadisticas (liames intrants)', |
|
| 600 | + 'titre_page_upgrade' => 'Mesa a nivèu d’SPIP', |
|
| 601 | + 'titre_publication_articles_post_dates' => 'Publicacion deis articles pòstdatats', |
|
| 602 | + 'titre_reparation' => 'Reparacion', |
|
| 603 | + 'titre_suivi_petition' => 'Seguit dei peticions', |
|
| 604 | + 'trad_article_traduction' => 'Totei lei versions d’aquel article:', |
|
| 605 | + 'trad_delier' => 'Cessar de liar aquest article a sei reviradas ', # MODIF |
|
| 606 | + 'trad_lier' => 'Aquest article es una revirada de l’article numèro:', |
|
| 607 | + 'trad_new' => 'Escriure una revirada novèla d’aquest article', # MODIF |
|
| 608 | 608 | |
| 609 | - // V |
|
| 610 | - 'version' => 'Version :', |
|
| 609 | + // V |
|
| 610 | + 'version' => 'Version :', |
|
| 611 | 611 | ]; |
@@ -5,99 +5,99 @@ |
||
| 5 | 5 | |
| 6 | 6 | return [ |
| 7 | 7 | |
| 8 | - // A |
|
| 9 | - 'accueil_site' => 'Hjemmeside', # MODIF |
|
| 10 | - 'articles' => 'Artikler', |
|
| 11 | - 'articles_auteur' => 'Denne forfatters artikler', |
|
| 12 | - 'articles_populaires' => 'De mest læste artikler', |
|
| 13 | - 'articles_rubrique' => 'Dette områdes artikler', |
|
| 14 | - 'aucun_article' => 'Der er ingen artikel på denne adresse', |
|
| 15 | - 'aucun_auteur' => 'Der er ingen forfatter på denne adresse', |
|
| 16 | - 'aucun_site' => 'Der er intet websted på denne adresse', |
|
| 17 | - 'aucune_breve' => 'Der er ingen nyhed på denne adresse', |
|
| 18 | - 'aucune_rubrique' => 'Der er ikke noget afsnit på denne adresse', |
|
| 19 | - 'autres_breves' => 'Andre nyheder', |
|
| 20 | - 'autres_groupes_mots_clefs' => 'Andre grupper af nøgleord', |
|
| 21 | - 'autres_sites' => 'Andre websteder', |
|
| 8 | + // A |
|
| 9 | + 'accueil_site' => 'Hjemmeside', # MODIF |
|
| 10 | + 'articles' => 'Artikler', |
|
| 11 | + 'articles_auteur' => 'Denne forfatters artikler', |
|
| 12 | + 'articles_populaires' => 'De mest læste artikler', |
|
| 13 | + 'articles_rubrique' => 'Dette områdes artikler', |
|
| 14 | + 'aucun_article' => 'Der er ingen artikel på denne adresse', |
|
| 15 | + 'aucun_auteur' => 'Der er ingen forfatter på denne adresse', |
|
| 16 | + 'aucun_site' => 'Der er intet websted på denne adresse', |
|
| 17 | + 'aucune_breve' => 'Der er ingen nyhed på denne adresse', |
|
| 18 | + 'aucune_rubrique' => 'Der er ikke noget afsnit på denne adresse', |
|
| 19 | + 'autres_breves' => 'Andre nyheder', |
|
| 20 | + 'autres_groupes_mots_clefs' => 'Andre grupper af nøgleord', |
|
| 21 | + 'autres_sites' => 'Andre websteder', |
|
| 22 | 22 | |
| 23 | - // B |
|
| 24 | - 'bonjour' => 'Hej', |
|
| 23 | + // B |
|
| 24 | + 'bonjour' => 'Hej', |
|
| 25 | 25 | |
| 26 | - // C |
|
| 27 | - 'commenter_site' => 'Kommentar til dette websted', |
|
| 26 | + // C |
|
| 27 | + 'commenter_site' => 'Kommentar til dette websted', |
|
| 28 | 28 | |
| 29 | - // D |
|
| 30 | - 'date' => 'Dato', |
|
| 31 | - 'dernier_ajout' => 'Seneste tilføjelse', |
|
| 32 | - 'dernieres_breves' => 'Seneste nyhed', |
|
| 33 | - 'derniers_articles' => 'Seneste artikler', |
|
| 34 | - 'derniers_commentaires' => 'Seneste kommentarer', |
|
| 35 | - 'derniers_messages_forum' => 'Seneste indlæg offentliggjort i forummer', |
|
| 29 | + // D |
|
| 30 | + 'date' => 'Dato', |
|
| 31 | + 'dernier_ajout' => 'Seneste tilføjelse', |
|
| 32 | + 'dernieres_breves' => 'Seneste nyhed', |
|
| 33 | + 'derniers_articles' => 'Seneste artikler', |
|
| 34 | + 'derniers_commentaires' => 'Seneste kommentarer', |
|
| 35 | + 'derniers_messages_forum' => 'Seneste indlæg offentliggjort i forummer', |
|
| 36 | 36 | |
| 37 | - // E |
|
| 38 | - 'edition_mode_texte' => 'Tekstudgave', |
|
| 39 | - 'en_reponse' => 'Svaradresse:', |
|
| 40 | - 'en_resume' => 'Opsummering', |
|
| 41 | - 'envoyer_message' => 'Lav indlæg', |
|
| 42 | - 'espace_prive' => 'Privat område', |
|
| 37 | + // E |
|
| 38 | + 'edition_mode_texte' => 'Tekstudgave', |
|
| 39 | + 'en_reponse' => 'Svaradresse:', |
|
| 40 | + 'en_resume' => 'Opsummering', |
|
| 41 | + 'envoyer_message' => 'Lav indlæg', |
|
| 42 | + 'espace_prive' => 'Privat område', |
|
| 43 | 43 | |
| 44 | - // H |
|
| 45 | - 'hierarchie_site' => 'Webstedets struktur', |
|
| 44 | + // H |
|
| 45 | + 'hierarchie_site' => 'Webstedets struktur', |
|
| 46 | 46 | |
| 47 | - // J |
|
| 48 | - 'jours' => 'dage', |
|
| 47 | + // J |
|
| 48 | + 'jours' => 'dage', |
|
| 49 | 49 | |
| 50 | - // M |
|
| 51 | - 'meme_auteur' => 'Af samme forfatter', |
|
| 52 | - 'meme_rubrique' => 'I samme afsnit', |
|
| 53 | - 'memes_auteurs' => 'Af samme forfattere', |
|
| 54 | - 'message' => 'Indlæg', |
|
| 55 | - 'messages_forum' => 'Forumindlæg', # MODIF |
|
| 56 | - 'messages_recents' => 'Seneste forumindlæg', |
|
| 57 | - 'mots_clefs' => 'Nøgleord', |
|
| 58 | - 'mots_clefs_meme_groupe' => 'Nøgleord i samme gruppe', |
|
| 50 | + // M |
|
| 51 | + 'meme_auteur' => 'Af samme forfatter', |
|
| 52 | + 'meme_rubrique' => 'I samme afsnit', |
|
| 53 | + 'memes_auteurs' => 'Af samme forfattere', |
|
| 54 | + 'message' => 'Indlæg', |
|
| 55 | + 'messages_forum' => 'Forumindlæg', # MODIF |
|
| 56 | + 'messages_recents' => 'Seneste forumindlæg', |
|
| 57 | + 'mots_clefs' => 'Nøgleord', |
|
| 58 | + 'mots_clefs_meme_groupe' => 'Nøgleord i samme gruppe', |
|
| 59 | 59 | |
| 60 | - // N |
|
| 61 | - 'navigation' => 'Navigering', |
|
| 62 | - 'nom' => 'Navn', |
|
| 63 | - 'nouveautes' => 'Hvad nyt', |
|
| 64 | - 'nouveautes_web' => 'Hvad nyt på Internettet', |
|
| 65 | - 'nouveaux_articles' => 'Nye artikler', |
|
| 66 | - 'nouvelles_breves' => 'Nyheder', |
|
| 60 | + // N |
|
| 61 | + 'navigation' => 'Navigering', |
|
| 62 | + 'nom' => 'Navn', |
|
| 63 | + 'nouveautes' => 'Hvad nyt', |
|
| 64 | + 'nouveautes_web' => 'Hvad nyt på Internettet', |
|
| 65 | + 'nouveaux_articles' => 'Nye artikler', |
|
| 66 | + 'nouvelles_breves' => 'Nyheder', |
|
| 67 | 67 | |
| 68 | - // P |
|
| 69 | - 'page_precedente' => 'foregående side', |
|
| 70 | - 'page_suivante' => 'næste side', |
|
| 71 | - 'par_auteur' => 'af', |
|
| 72 | - 'participer_site' => 'Du kan deltage aktivt på dette websted og skrive dine egne artikler ved at tilmelde dig nedenfor. Du vil da straks modtage en email med en adgangskode til webstedets private område.', |
|
| 73 | - 'plan_site' => 'Indholdsoversigt', |
|
| 74 | - 'popularite' => 'Popularitet', |
|
| 75 | - 'poster_message' => 'Indlæg', |
|
| 68 | + // P |
|
| 69 | + 'page_precedente' => 'foregående side', |
|
| 70 | + 'page_suivante' => 'næste side', |
|
| 71 | + 'par_auteur' => 'af', |
|
| 72 | + 'participer_site' => 'Du kan deltage aktivt på dette websted og skrive dine egne artikler ved at tilmelde dig nedenfor. Du vil da straks modtage en email med en adgangskode til webstedets private område.', |
|
| 73 | + 'plan_site' => 'Indholdsoversigt', |
|
| 74 | + 'popularite' => 'Popularitet', |
|
| 75 | + 'poster_message' => 'Indlæg', |
|
| 76 | 76 | |
| 77 | - // R |
|
| 78 | - 'repondre_article' => 'Lav et svar til denne artikel', |
|
| 79 | - 'repondre_breve' => 'Lav et svar på denne nyhed', |
|
| 80 | - 'resultats_recherche' => 'Søgeresultater', |
|
| 81 | - 'retour_debut_forums' => 'Tilbage til starten på forummet', |
|
| 82 | - 'rubrique' => 'Afsnit', |
|
| 83 | - 'rubriques' => 'Afsnit', |
|
| 77 | + // R |
|
| 78 | + 'repondre_article' => 'Lav et svar til denne artikel', |
|
| 79 | + 'repondre_breve' => 'Lav et svar på denne nyhed', |
|
| 80 | + 'resultats_recherche' => 'Søgeresultater', |
|
| 81 | + 'retour_debut_forums' => 'Tilbage til starten på forummet', |
|
| 82 | + 'rubrique' => 'Afsnit', |
|
| 83 | + 'rubriques' => 'Afsnit', |
|
| 84 | 84 | |
| 85 | - // S |
|
| 86 | - 'signatures_petition' => 'Underskrifter', |
|
| 87 | - 'site_realise_avec_spip' => 'Websted lavet med SPIP', |
|
| 88 | - 'sites_web' => 'Websteder', |
|
| 89 | - 'sous_rubriques' => 'Underafsnit', |
|
| 90 | - 'suite' => 'fortsæt', |
|
| 91 | - 'sur_web' => 'På Internettet', |
|
| 92 | - 'syndiquer_rubrique' => 'Syndiker dette afsnit', |
|
| 93 | - 'syndiquer_site' => 'Syndiker hele webstedet', |
|
| 85 | + // S |
|
| 86 | + 'signatures_petition' => 'Underskrifter', |
|
| 87 | + 'site_realise_avec_spip' => 'Websted lavet med SPIP', |
|
| 88 | + 'sites_web' => 'Websteder', |
|
| 89 | + 'sous_rubriques' => 'Underafsnit', |
|
| 90 | + 'suite' => 'fortsæt', |
|
| 91 | + 'sur_web' => 'På Internettet', |
|
| 92 | + 'syndiquer_rubrique' => 'Syndiker dette afsnit', |
|
| 93 | + 'syndiquer_site' => 'Syndiker hele webstedet', |
|
| 94 | 94 | |
| 95 | - // T |
|
| 96 | - 'texte_lettre_information' => 'Her er webstedets nyhedsbrev', |
|
| 97 | - 'texte_lettre_information_2' => 'Dette brev opsummerer artikler og nyheder offentlliggjort siden', # MODIF |
|
| 95 | + // T |
|
| 96 | + 'texte_lettre_information' => 'Her er webstedets nyhedsbrev', |
|
| 97 | + 'texte_lettre_information_2' => 'Dette brev opsummerer artikler og nyheder offentlliggjort siden', # MODIF |
|
| 98 | 98 | |
| 99 | - // V |
|
| 100 | - 'ver_imprimer' => 'Printbar version', |
|
| 101 | - 'voir_en_ligne' => 'Se online', |
|
| 102 | - 'voir_squelette' => 'Hent skabelonen til denne side', |
|
| 99 | + // V |
|
| 100 | + 'ver_imprimer' => 'Printbar version', |
|
| 101 | + 'voir_en_ligne' => 'Se online', |
|
| 102 | + 'voir_squelette' => 'Hent skabelonen til denne side', |
|
| 103 | 103 | ]; |
@@ -5,100 +5,100 @@ |
||
| 5 | 5 | |
| 6 | 6 | return [ |
| 7 | 7 | |
| 8 | - // A |
|
| 9 | - 'accueil_site' => 'Akey sit la', # MODIF |
|
| 10 | - 'articles' => 'Atik yo', |
|
| 11 | - 'articles_auteur' => 'Tout atik lotè a', |
|
| 12 | - 'articles_populaires' => 'Atik yo ki plis popilè', |
|
| 13 | - 'articles_rubrique' => 'Atik yo nan ribrik sa-a', |
|
| 14 | - 'aucun_article' => 'Gen pa oken atik sou ladrès la', |
|
| 15 | - 'aucun_auteur' => 'Gen pa oken lotè sou ladrès la', |
|
| 16 | - 'aucun_site' => 'Gen pa oken sit sou ladrès la', |
|
| 17 | - 'aucune_breve' => 'Gen pa oken tinouvèl sou ladrès la', |
|
| 18 | - 'aucune_rubrique' => 'Gen pa oken ribrik sou ladrès la', |
|
| 19 | - 'autres_breves' => 'Lòt tinouvèl yo', |
|
| 20 | - 'autres_groupes_mots_clefs' => 'Lòt gwoup mokle yo', |
|
| 21 | - 'autres_sites' => 'Lòt sit yo', |
|
| 8 | + // A |
|
| 9 | + 'accueil_site' => 'Akey sit la', # MODIF |
|
| 10 | + 'articles' => 'Atik yo', |
|
| 11 | + 'articles_auteur' => 'Tout atik lotè a', |
|
| 12 | + 'articles_populaires' => 'Atik yo ki plis popilè', |
|
| 13 | + 'articles_rubrique' => 'Atik yo nan ribrik sa-a', |
|
| 14 | + 'aucun_article' => 'Gen pa oken atik sou ladrès la', |
|
| 15 | + 'aucun_auteur' => 'Gen pa oken lotè sou ladrès la', |
|
| 16 | + 'aucun_site' => 'Gen pa oken sit sou ladrès la', |
|
| 17 | + 'aucune_breve' => 'Gen pa oken tinouvèl sou ladrès la', |
|
| 18 | + 'aucune_rubrique' => 'Gen pa oken ribrik sou ladrès la', |
|
| 19 | + 'autres_breves' => 'Lòt tinouvèl yo', |
|
| 20 | + 'autres_groupes_mots_clefs' => 'Lòt gwoup mokle yo', |
|
| 21 | + 'autres_sites' => 'Lòt sit yo', |
|
| 22 | 22 | |
| 23 | - // B |
|
| 24 | - 'bonjour' => 'Bonjou', |
|
| 23 | + // B |
|
| 24 | + 'bonjour' => 'Bonjou', |
|
| 25 | 25 | |
| 26 | - // C |
|
| 27 | - 'commenter_site' => 'Lès yon komantè sou sit la', |
|
| 26 | + // C |
|
| 27 | + 'commenter_site' => 'Lès yon komantè sou sit la', |
|
| 28 | 28 | |
| 29 | - // D |
|
| 30 | - 'date' => 'Dat', |
|
| 31 | - 'dernier_ajout' => 'Dènye bagay ki ajoute', |
|
| 32 | - 'dernieres_breves' => 'Dènye tinouvèl yo', |
|
| 33 | - 'derniers_articles' => 'Dènye atik yo', |
|
| 34 | - 'derniers_commentaires' => 'Dènye komantè yo', |
|
| 35 | - 'derniers_messages_forum' => 'Dènye mesaj yo ki te piblye nan fowom yo', |
|
| 29 | + // D |
|
| 30 | + 'date' => 'Dat', |
|
| 31 | + 'dernier_ajout' => 'Dènye bagay ki ajoute', |
|
| 32 | + 'dernieres_breves' => 'Dènye tinouvèl yo', |
|
| 33 | + 'derniers_articles' => 'Dènye atik yo', |
|
| 34 | + 'derniers_commentaires' => 'Dènye komantè yo', |
|
| 35 | + 'derniers_messages_forum' => 'Dènye mesaj yo ki te piblye nan fowom yo', |
|
| 36 | 36 | |
| 37 | - // E |
|
| 38 | - 'edition_mode_texte' => 'Ledisyon modtèks pou', |
|
| 39 | - 'en_reponse' => 'Pou réponn a :', |
|
| 40 | - 'en_resume' => 'Nan kèk mo', |
|
| 41 | - 'envoyer_message' => 'Voye yon mesaj', |
|
| 42 | - 'espace_prive' => 'Espas privé', |
|
| 37 | + // E |
|
| 38 | + 'edition_mode_texte' => 'Ledisyon modtèks pou', |
|
| 39 | + 'en_reponse' => 'Pou réponn a :', |
|
| 40 | + 'en_resume' => 'Nan kèk mo', |
|
| 41 | + 'envoyer_message' => 'Voye yon mesaj', |
|
| 42 | + 'espace_prive' => 'Espas privé', |
|
| 43 | 43 | |
| 44 | - // H |
|
| 45 | - 'hierarchie_site' => 'Estrikti sit sa-a', |
|
| 44 | + // H |
|
| 45 | + 'hierarchie_site' => 'Estrikti sit sa-a', |
|
| 46 | 46 | |
| 47 | - // J |
|
| 48 | - 'jours' => 'jou yo', |
|
| 47 | + // J |
|
| 48 | + 'jours' => 'jou yo', |
|
| 49 | 49 | |
| 50 | - // M |
|
| 51 | - 'meme_auteur' => 'Mèm lotè ki ekri ankò', |
|
| 52 | - 'meme_rubrique' => 'Andan mèm ribrik', |
|
| 53 | - 'memes_auteurs' => 'Mèm lotè yo ki ekri ankò', |
|
| 54 | - 'message' => 'Mesaj', |
|
| 55 | - 'messages_forum' => 'Mesaj yo nan fowom ', # MODIF |
|
| 56 | - 'messages_recents' => 'Mesaj yo nan fowom ki plis resan', |
|
| 57 | - 'mots_clefs' => 'Mokle yo', |
|
| 58 | - 'mots_clefs_meme_groupe' => 'Mokle yo nan mèm gwoup', |
|
| 50 | + // M |
|
| 51 | + 'meme_auteur' => 'Mèm lotè ki ekri ankò', |
|
| 52 | + 'meme_rubrique' => 'Andan mèm ribrik', |
|
| 53 | + 'memes_auteurs' => 'Mèm lotè yo ki ekri ankò', |
|
| 54 | + 'message' => 'Mesaj', |
|
| 55 | + 'messages_forum' => 'Mesaj yo nan fowom ', # MODIF |
|
| 56 | + 'messages_recents' => 'Mesaj yo nan fowom ki plis resan', |
|
| 57 | + 'mots_clefs' => 'Mokle yo', |
|
| 58 | + 'mots_clefs_meme_groupe' => 'Mokle yo nan mèm gwoup', |
|
| 59 | 59 | |
| 60 | - // N |
|
| 61 | - 'navigation' => 'Toune-vire', |
|
| 62 | - 'nom' => 'Kouman rele', |
|
| 63 | - 'nouveautes' => 'Nouvèlté yo', |
|
| 64 | - 'nouveautes_web' => 'Kisa nouvo sou wèb la', |
|
| 65 | - 'nouveaux_articles' => 'Nouvo atik yo', |
|
| 66 | - 'nouvelles_breves' => 'Nouvo tinouvèl yo', |
|
| 60 | + // N |
|
| 61 | + 'navigation' => 'Toune-vire', |
|
| 62 | + 'nom' => 'Kouman rele', |
|
| 63 | + 'nouveautes' => 'Nouvèlté yo', |
|
| 64 | + 'nouveautes_web' => 'Kisa nouvo sou wèb la', |
|
| 65 | + 'nouveaux_articles' => 'Nouvo atik yo', |
|
| 66 | + 'nouvelles_breves' => 'Nouvo tinouvèl yo', |
|
| 67 | 67 | |
| 68 | - // P |
|
| 69 | - 'page_precedente' => 'paj dèyè', |
|
| 70 | - 'page_suivante' => 'paj swivan', |
|
| 71 | - 'par_auteur' => 'pa', |
|
| 72 | - 'participer_site' => 'Ou se kapab soutni vi sit la ek pwopoze ou pwop atik aw. Pou soutni kon sa enskri a w isit anba. Ou ke gen touswit ou kod laksè nan espas privé sit la.', |
|
| 73 | - 'plan_site' => 'Kat sit la', |
|
| 74 | - 'popularite' => 'Kouman se popilè', |
|
| 75 | - 'poster_message' => 'Voye yon mesaj', |
|
| 76 | - 'proposer_site' => 'Ou se kapab pwopoze yon sit pou ajoute nan ribrik la :', |
|
| 68 | + // P |
|
| 69 | + 'page_precedente' => 'paj dèyè', |
|
| 70 | + 'page_suivante' => 'paj swivan', |
|
| 71 | + 'par_auteur' => 'pa', |
|
| 72 | + 'participer_site' => 'Ou se kapab soutni vi sit la ek pwopoze ou pwop atik aw. Pou soutni kon sa enskri a w isit anba. Ou ke gen touswit ou kod laksè nan espas privé sit la.', |
|
| 73 | + 'plan_site' => 'Kat sit la', |
|
| 74 | + 'popularite' => 'Kouman se popilè', |
|
| 75 | + 'poster_message' => 'Voye yon mesaj', |
|
| 76 | + 'proposer_site' => 'Ou se kapab pwopoze yon sit pou ajoute nan ribrik la :', |
|
| 77 | 77 | |
| 78 | - // R |
|
| 79 | - 'repondre_article' => 'Reponn sou atik la', |
|
| 80 | - 'repondre_breve' => 'Reponn sou tinouvèl la', |
|
| 81 | - 'resultats_recherche' => 'Rezilta pou ou chèche', |
|
| 82 | - 'retour_debut_forums' => 'Tounyen nan koumansman fowom sa-yo', |
|
| 83 | - 'rubrique' => 'Ribrik', |
|
| 84 | - 'rubriques' => 'Ribrik yo', |
|
| 78 | + // R |
|
| 79 | + 'repondre_article' => 'Reponn sou atik la', |
|
| 80 | + 'repondre_breve' => 'Reponn sou tinouvèl la', |
|
| 81 | + 'resultats_recherche' => 'Rezilta pou ou chèche', |
|
| 82 | + 'retour_debut_forums' => 'Tounyen nan koumansman fowom sa-yo', |
|
| 83 | + 'rubrique' => 'Ribrik', |
|
| 84 | + 'rubriques' => 'Ribrik yo', |
|
| 85 | 85 | |
| 86 | - // S |
|
| 87 | - 'signatures_petition' => 'Siyati yo', |
|
| 88 | - 'site_realise_avec_spip' => 'Sit la se sit ki te fè ak SPIP', |
|
| 89 | - 'sites_web' => 'Sitwèb yo', |
|
| 90 | - 'sous_rubriques' => 'Souribrik yo', |
|
| 91 | - 'suite' => 'swit', |
|
| 92 | - 'sur_web' => 'Sou wèb', |
|
| 93 | - 'syndiquer_rubrique' => 'Sindike ribrik la', |
|
| 94 | - 'syndiquer_site' => 'Sindike tout sit la mèm', |
|
| 86 | + // S |
|
| 87 | + 'signatures_petition' => 'Siyati yo', |
|
| 88 | + 'site_realise_avec_spip' => 'Sit la se sit ki te fè ak SPIP', |
|
| 89 | + 'sites_web' => 'Sitwèb yo', |
|
| 90 | + 'sous_rubriques' => 'Souribrik yo', |
|
| 91 | + 'suite' => 'swit', |
|
| 92 | + 'sur_web' => 'Sou wèb', |
|
| 93 | + 'syndiquer_rubrique' => 'Sindike ribrik la', |
|
| 94 | + 'syndiquer_site' => 'Sindike tout sit la mèm', |
|
| 95 | 95 | |
| 96 | - // T |
|
| 97 | - 'texte_lettre_information' => 'Tala lèt-enfòmasyon sit la ', |
|
| 98 | - 'texte_lettre_information_2' => 'Lèt la ka ramase tout atik ek tinouvèl yo te pibliye depi', # MODIF |
|
| 96 | + // T |
|
| 97 | + 'texte_lettre_information' => 'Tala lèt-enfòmasyon sit la ', |
|
| 98 | + 'texte_lettre_information_2' => 'Lèt la ka ramase tout atik ek tinouvèl yo te pibliye depi', # MODIF |
|
| 99 | 99 | |
| 100 | - // V |
|
| 101 | - 'ver_imprimer' => 'Vèsyon pou enprime', |
|
| 102 | - 'voir_en_ligne' => 'Gad an liy', |
|
| 103 | - 'voir_squelette' => 'kou je sou léskelèt paj-la', |
|
| 100 | + // V |
|
| 101 | + 'ver_imprimer' => 'Vèsyon pou enprime', |
|
| 102 | + 'voir_en_ligne' => 'Gad an liy', |
|
| 103 | + 'voir_squelette' => 'kou je sou léskelèt paj-la', |
|
| 104 | 104 | ]; |