本文整理汇总了PHP中joli_repertoire函数的典型用法代码示例。如果您正苦于以下问题:PHP joli_repertoire函数的具体用法?PHP joli_repertoire怎么用?PHP joli_repertoire使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了joli_repertoire函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: action_calculer_taille_cache_dist
/**
* Calculer la taille du cache ou du cache image pour l'afficher en ajax sur la page d'admin de SPIP
*
* @param string|null $arg
*/
function action_calculer_taille_cache_dist($arg = null)
{
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
include_spip('inc/filtres');
if ($arg == 'images') {
$taille = calculer_taille_dossier(_DIR_VAR);
$res = _T('ecrire:taille_cache_image', array('dir' => joli_repertoire(_DIR_VAR), 'taille' => "<b>" . (taille_en_octets($taille) > 0 ? taille_en_octets($taille) : "0 octet") . "</b>"));
} else {
include_spip('inc/invalideur');
$taille = calculer_taille_dossier(_DIR_CACHE_XML) + calculer_taille_dossier(_DIR_CACHE . 'skel/') + calculer_taille_dossier(_DIR_CACHE . 'wheels/') + calculer_taille_dossier(_DIR_CACHE . 'contextes/');
$taille += intval(taille_du_cache());
if ($taille <= 150000) {
$res = _T('taille_cache_vide');
} elseif ($taille <= 1024 * 1024) {
$res = _T('taille_cache_moins_de', array('octets' => taille_en_octets(1024 * 1024)));
} else {
$res = _T('taille_cache_octets', array('octets' => taille_en_octets($taille)));
}
$res = "<b>{$res}</b>";
}
$res = "<p>{$res}</p>";
ajax_retour($res);
}
示例2: install_etape_4_dist
function install_etape_4_dist()
{
// creer le repertoire cache, qui sert partout !
if (!@file_exists(_DIR_CACHE)) {
$rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE);
$rep = sous_repertoire(_DIR_TMP, $rep, true, true);
}
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
echo info_progression_etape(4, 'etape_', 'install/');
echo "<div class='success'><b>" . _T('info_derniere_etape') . "</b><p>" . _T('info_utilisation_spip') . "</p></div>";
echo "<p>" . _T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>" . joli_repertoire(_DIR_PLUGINS_DIST) . "</tt>")) . "</p>";
// installer les extensions
include_spip('inc/plugin');
$afficher = charger_fonction("afficher_liste", 'plugins');
echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST), array(), array(), _DIR_PLUGINS_DIST, 'afficher_nom_plugin');
// si la base de SPIP est up, on peut installer les plugins, sinon on passe cette etape
// car les plugins supposent que la base de SPIP est dans son etat normal (mise a jour)
// au premier passage dans l'espace prive on aura une demande d'upgrade qui se poursuit sur la page plugin
// et procede alors a l'installation
if (!isset($GLOBALS['meta']['version_installee']) or $GLOBALS['spip_version_base'] == str_replace(',', '.', $GLOBALS['meta']['version_installee'])) {
plugin_installes_meta();
}
// mettre a jour si necessaire l'adresse du site
// securite si on arrive plus a se loger
include_spip('inc/config');
appliquer_adresse_site('');
// aller a la derniere etape qui clos l'install et redirige
$suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive'));
echo generer_form_ecrire('install', $suite);
echo install_fin_html();
}
示例3: action_restaurer_dist
/**
* Sauvegarder par morceaux
*
* @param string $arg
*/
function action_restaurer_dist($arg = null)
{
if (!$arg) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
$status_file = $arg;
define('_DUMP_STATUS_FILE', $status_file);
$status_file = _DIR_TMP . basename($status_file) . ".txt";
if (!lire_fichier($status_file, $status) or !($status = unserialize($status))) {
include_spip('inc/headers');
echo redirige_formulaire(generer_url_ecrire("restaurer", 'status=' . _DUMP_STATUS_FILE, '', true, true));
} else {
utiliser_langue_visiteur();
$archive = "<br />" . joli_repertoire($status['archive']);
$action = _T('dump:info_restauration_sauvegarde', array('archive' => $archive));
$admin = charger_fonction('admin', 'inc');
echo $admin('restaurer', $action, "", true);
}
// forcer l'envoi du buffer par tous les moyens !
echo str_repeat("<br />\r\n", 256);
while (@ob_get_level()) {
@ob_flush();
@flush();
@ob_end_flush();
}
}
示例4: install_etape_4_dist
function install_etape_4_dist()
{
// creer le repertoire cache, qui sert partout !
if (!@file_exists(_DIR_CACHE)) {
$rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE);
$rep = sous_repertoire(_DIR_TMP, $rep, true, true);
}
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
echo info_progression_etape(4, 'etape_', 'install/');
echo "<div class='success'><b>" . _T('info_derniere_etape') . "</b><p>" . _T('info_utilisation_spip') . "</p></div>";
echo "<p>" . _T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>" . joli_repertoire(_DIR_PLUGINS_DIST) . "</tt>")) . "</p>";
// installer les extensions
include_spip('inc/plugin');
$afficher = charger_fonction("afficher_liste", 'plugins');
echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST), array(), array(), _DIR_PLUGINS_DIST, 'afficher_nom_plugin');
plugin_installes_meta();
// mettre a jour si necessaire l'adresse du site
// securite si on arrive plus a se loger
include_spip('inc/config');
appliquer_adresse_site('');
// aller a la derniere etape qui clos l'install et redirige
$suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive'));
echo generer_form_ecrire('install', $suite);
echo install_fin_html();
}
示例5: formulaires_assistant_migration_charger_dist
function formulaires_assistant_migration_charger_dist(){
if ($squelette = migration_determiner_dossier_squelette()) {
$squelette = explode(':',$squelette);
$squelette = array_map('joli_repertoire',$squelette);
$squelette = implode(', ',$squelette);
}
$valeurs = array(
'_etapes'=>3,
'editable' => autoriser('webmestre'),
'direction' => '',
'_depuis_status' => '',
'url_cible' => '',
'migration_key' => '',
'quoi' => array('base','fichiers','squelettes'),
'_auth_depuis' => verifier_auth_depuis()?' ':'',
'_dir_img' => joli_repertoire(_DIR_IMG),
'_dir_skel' => $squelette,
);
if (_request('direction')=='depuis'){
$valeurs['_depuis_status'] = lire_migration_depuis_status();
}
else {
initialiser_migration_depuis(true);
}
return $valeurs;
}
示例6: formulaires_restaurer_verifier_dist
/**
* Verifier
*
* @return array
*/
function formulaires_restaurer_verifier_dist()
{
$erreurs = array();
$nom = "";
if (!($fichier = _request('fichier')) and !($nom = _request('nom_sauvegarde'))) {
$erreurs['fichier'] = _T('info_obligatoire');
} elseif ($fichier) {
$fichier = basename($fichier);
// securite
if (!file_exists(dump_repertoire() . $fichier)) {
$erreurs['fichier'] = _T('dump:erreur_nom_fichier');
} else {
$nom = $fichier;
}
} else {
$nom = basename($nom);
// securite
if (!file_exists(dump_repertoire() . $nom)) {
$erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier');
$nom = "";
}
}
if (!$nom) {
$erreurs['message_erreur'] = _T('dump:erreur_restaurer_verifiez');
}
if ($nom) {
$archive = dump_repertoire() . $nom;
if (!($args = dump_connect_args($archive))) {
$erreurs['tout_restaurer'] = _T('dump:erreur_sqlite_indisponible');
}
dump_serveur($args);
$tables = base_lister_toutes_tables('dump');
$tables = base_saisie_tables('tables', $tables, array(), _request('tables') ? _request('tables') : array(), 'dump');
$erreurs['tables'] = "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>", $tables) . "</li></ol><input type='hidden' name='check_tables' value='oui' />\n";
if (!count(_request('tables')) and !_request('tout_restaurer') and _request('check_tables')) {
$erreurs['tout_restaurer'] = _T('dump:selectionnez_table_a_restaurer');
}
}
if ($nom and (!count($erreurs) or count($erreurs) == 1 and isset($erreurs['tables']))) {
if (_request('confirm') !== $nom) {
$erreurs['message_confirm'] = _T('dump:info_selection_sauvegarde', array('fichier' => '<i>' . joli_repertoire(dump_repertoire() . $nom) . "</i>")) . "<br /><input type='checkbox' name='confirm' value='{$nom}' id='confirm' /> ";
$erreurs['message_confirm'] .= "<label for='confirm'><strong>";
if (_request('tables')) {
$erreurs['message_confirm'] .= _T('dump:confirmer_ecraser_tables_selection');
} else {
$erreurs['message_confirm'] .= _T('dump:confirmer_ecraser_base');
}
$erreurs['message_confirm'] .= "</strong></label>";
} else {
unset($erreurs['tables']);
}
}
if (count($erreurs) and !isset($erreurs['message_erreur'])) {
$erreurs['message_erreur'] = '';
}
// pas de message general automatique ici
return $erreurs;
}
示例7: afficher_taille_cache_vignettes
function afficher_taille_cache_vignettes() {
$taille = calculer_taille_dossier(_DIR_VAR);
return _T('ecrire:taille_cache_image',
array(
'dir' => joli_repertoire(_DIR_VAR),
'taille' => "<b>".taille_en_octets($taille)."</b>"
)
);
}
示例8: exec_cfg_install_libs_dist
function exec_cfg_install_libs_dist($class = null)
{
include_spip('inc/filtres');
include_spip("inc/presentation");
global $cfg_libs;
// droits : il faut avoir le droit de choisir les plugins,
// mais aussi d'en ajouter
include_spip('inc/autoriser');
if (!autoriser('configurer', 'plugins')) {
echo minipres();
exit;
}
pipeline('exec_init', array('args' => array('exec' => 'cfg'), 'data' => ''));
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('cfg:installation_librairies'), 'cfg');
echo "<br /><br /><br />\n";
echo gros_titre(_T('cfg:installation_librairies'), '', false);
// colonne gauche
echo debut_gauche('', true);
echo pipeline('affiche_gauche', array('args' => array('exec' => 'cfg'), 'data' => ''));
echo creer_colonne_droite('', true);
echo pipeline('affiche_droite', array('args' => array('exec' => 'cfg'), 'data' => ''));
echo debut_droite("", true);
// centre de la page
echo debut_cadre_trait_couleur('', true, '', _T('cfg:installation_liste_libs'));
// message pour creer le dossier lib/
if (!is_dir(_DIR_LIB) && !is_writable(_DIR_LIB)) {
echo "<p class='important'>" . _T('cfg:installer_dossier_lib', array('dir' => joli_repertoire(_DIR_LIB))) . "</p>\n";
}
// message pour installation 1.9.2
if ($spip192 = defined('_COMPAT_CFG_192') && _COMPAT_CFG_192) {
echo "<p>" . _T('cfg:installer_lib_192', array('dir' => joli_repertoire(_DIR_LIB))) . "</p>\n";
}
// mettre un lien pour telecharger les libs
include_spip('inc/actions');
foreach ($cfg_libs as $lib => $info) {
// deja present ? texte du bouton : "mettre a jour", sinon "telecharger"
$quoi = is_dir(_DIR_LIB . $info['dir']) ? 'update' : 'install';
echo "<dl>\n";
echo "<dt>" . $info['nom'] . "</dt>\n";
echo "<dd>" . $info['description'] . "</dd>\n";
// cas 1.9.2
// proposer de copier manuellement le zip decompresse dans le dossier lib
if ($spip192) {
echo "<dd>" . ($quoi == 'update' ? "(" . _T('cfg:bouton_mettre_a_jour') . ") " : "") . "<a class='spip_out' href='{$info['install']}' />{$info['install']}</a></dd>\n";
// cas > 1.9.2
// chargeur plugin/lib de spip
} else {
echo "<dd>" . redirige_action_auteur('charger_plugin', 'lib', '', '', "<input type='hidden' name='url_zip_plugin' value='{$info['install']}' />" . "<input type='hidden' name='retour' value='" . self() . "' />" . "<input type='submit' class='fondo' name='ok' value='" . ($quoi == 'update' ? _T('cfg:bouton_mettre_a_jour') : _T('bouton_telecharger')) . "' />", "\nmethod='post'") . "</dd>\n";
}
echo "</dl>\n";
}
echo fin_cadre_trait_couleur(true);
// pied
echo fin_gauche() . fin_page();
}
示例9: formulaires_sauvegarder_charger_dist
/**
* Charger #FORMULAIRE_SAUVEGARDER
* @return array
*/
function formulaires_sauvegarder_charger_dist()
{
$dir_dump = dump_repertoire();
// ici on liste tout, les tables exclue sont simplement non cochees
$exclude = lister_tables_noexport();
list($tables, ) = base_liste_table_for_dump($exclude);
$tables = base_lister_toutes_tables('', $tables);
$valeurs = array('_dir_dump' => joli_repertoire($dir_dump), '_dir_img' => joli_repertoire(_DIR_IMG), '_spipnet' => $GLOBALS['home_server'] . '/' . $GLOBALS['spip_lang'] . '_article1489.html', 'nom_sauvegarde' => basename(dump_nom_fichier($dir_dump, 'sqlite'), '.sqlite'), 'tout_sauvegarder' => (_request('nom_sauvegarde') and !_request('tout_sauvegarder')) ? '' : 'oui', '_tables' => "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>", base_saisie_tables('tables', $tables, $exclude, _request('nom_sauvegarde') ? _request('tables') ? _request('tables') : array() : null)) . "</li></ol>\n", '_prefixe' => function_exists('base_prefixe_tables') ? base_prefixe_tables('') : 'spip');
return $valeurs;
}
示例10: formulaires_editer_squelette_charger_dist
/**
* Chargement du formulaire
* 4 cas possibles :
* - un nouveau fichier ($fichier='')
* - un fichier a l'extension interdite
* - un fichier de squelettes/, modifiable
* - un fichier existant (d'un plugin par exe),
* qui doit etre copie dans squelettes/ a l'enregistrement
*
* @param string $path_base
* @param string $fichier
* @return array
*/
function formulaires_editer_squelette_charger_dist($path_base, $fichier){
$valeurs = array(
'fichier'=>$fichier,
'date'=>'',
'size'=>'',
'filename'=>'',
'path_base'=>$path_base,
'_hidden'=>'',
'_info_copie'=>'',
'editable'=>true
);
if ($fichier){
if (!file_exists($fichier)) {
$valeurs['editable'] = false;
$valeurs['message_erreur'] = _T('skeleditor:erreur_fichier_inexistant');
$valeurs['fichier'] = '';
return $valeurs;
}
include_spip('inc/autoriser');
if (!autoriser('voir','squelette',$fichier)){
$valeurs['editable'] = false;
$valeurs['message_erreur'] = _T('skeleditor:erreur_type_interdit');
$valeurs['fichier'] = '';
return $valeurs;
}
$valeurs['date'] = filemtime($fichier);
$valeurs['size'] = filesize($fichier);
if (autoriser('modifier','squelette',$fichier)
AND strncmp($fichier, $path_base, strlen($path_base))==0)
$valeurs['filename'] = substr($fichier,strlen($path_base)); // pour le renommage
elseif(strncmp($fichier, $path_base, strlen($path_base))!=0){
// c'est une copie dans le dossier squelettes/
$valeurs['filename'] = skeleditor_nom_copie($fichier);
$valeurs['_hidden'] .= "<input type='hidden' name='copie_squelette' value='".$valeurs['filename']."' />";
$valeurs['_info_copie'] = _T('skeleditor:info_copie',array('dir'=>joli_repertoire($path_base)));
}
}
list($valeurs['code'],$valeurs['type'],$ctrl) = skeleditor_get_file_content_type_ctrl($fichier);
$valeurs['_hidden'] .= "<input type='hidden' name='ctrl_md5' value='$ctrl' />"; // un hash pour eviter les problemes de modif concourantes
return $valeurs;
}
示例11: formulaires_charger_plugin_archive_traiter_dist
/**
* Traitement du formulaire de téléchargement de plugin
*
* Télécharge le plugin via le téléporteur et rend la main.
*
* @return array
* Retours du traitement
**/
function formulaires_charger_plugin_archive_traiter_dist()
{
$retour = array();
$archive = _request('archive');
$dest = _request('destination');
include_spip('action/teleporter');
$teleporter_composant = charger_fonction('teleporter_composant', 'action');
$ok = $teleporter_composant('http', $archive, _DIR_PLUGINS_AUTO . $dest);
if ($ok !== true) {
$retour['message_erreur'] = $ok;
} else {
$retour['message_ok'] = _T('svp:message_telechargement_archive_effectue', array('dir' => joli_repertoire(_DIR_PLUGINS_AUTO . $dest)));
}
$retour['editable'] = true;
return $retour;
}
示例12: formulaires_joindre_document_charger_dist
function formulaires_joindre_document_charger_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true)
{
$valeurs = array();
$mode = joindre_determiner_mode($mode, $id_document, $objet);
$valeurs['id'] = $id_document;
$valeurs['_mode'] = $mode;
$valeurs['url'] = 'http://';
$valeurs['fichier_upload'] = $valeurs['_options_upload_ftp'] = $valeurs['_dir_upload_ftp'] = '';
$valeurs['joindre_upload'] = $valeurs['joindre_distant'] = $valeurs['joindre_ftp'] = $valeurs['joindre_mediatheque'] = '';
$valeurs['editable'] = ' ';
if (intval($id_document)) {
$valeurs['editable'] = autoriser('modifier', 'document', $id_document) ? ' ' : '';
}
$valeurs['proposer_media'] = is_string($proposer_media) ? preg_match('/^(false|non|no)$/i', $proposer_media) ? false : true : $proposer_media;
$valeurs['proposer_ftp'] = is_string($proposer_ftp) ? preg_match('/^(false|non|no)$/i', $proposer_ftp) ? false : true : $proposer_ftp;
# regarder si un choix d'upload FTP est vraiment possible
if ($valeurs['proposer_ftp'] and test_espace_prive() and $mode != 'image' and $mode != 'vignette' and $GLOBALS['flag_upload']) {
include_spip('inc/documents');
if ($dir = determine_upload('documents')) {
// quels sont les docs accessibles en ftp ?
$valeurs['_options_upload_ftp'] = joindre_options_upload_ftp($dir, $mode);
// s'il n'y en a pas, on affiche un message d'aide
// en mode document, mais pas en mode image
if ($valeurs['_options_upload_ftp'] or ($mode == 'document' or $mode == 'choix')) {
$valeurs['_dir_upload_ftp'] = "<b>" . joli_repertoire($dir) . "</b>";
}
}
}
// On ne propose le FTP que si on a des choses a afficher
$valeurs['proposer_ftp'] = ($valeurs['_options_upload_ftp'] or $valeurs['_dir_upload_ftp']);
if ($galerie) {
# passer optionnellement une galerie jointe au form
# plus utilise nativement, on prefere la mise a jour
# apres upload par ajaxReload('documents')
$valeurs['_galerie'] = $galerie;
}
if ($objet and $id_objet) {
$valeurs['id_objet'] = $id_objet;
$valeurs['objet'] = $objet;
$valeurs['refdoc_joindre'] = '';
if ($valeurs['editable']) {
include_spip('inc/autoriser');
$valeurs['editable'] = autoriser('joindredocument', $objet, $id_objet) ? ' ' : '';
}
}
return $valeurs;
}
示例13: base_convert_utf8_dist
function base_convert_utf8_dist($titre='', $reprise=false)
{
if (!$titre) return; // anti-testeur automatique
// une liste des tables a convertir, avec le champ dans lequel on
// indique '<CONVERT charset>' ; on commence par les rubriques sinon
// ca fait desordre dans l'interface privee
$tables_a_convertir = array(
'spip_rubriques' => 'titre',
'spip_auteurs' => 'nom',
'spip_articles' => 'titre',
'spip_breves' => 'titre',
'spip_documents' => 'titre',
'spip_forum' => 'titre',
'spip_mots' => 'titre',
'spip_groupes_mots' => 'titre',
'spip_petitions' => 'texte',
'spip_signatures' => 'nom_email',
'spip_syndic' => 'nom_site',
'spip_syndic_articles' => 'titre',
'spip_messages' => 'titre'
);
if (!$reprise) convert_utf8_init($tables_a_convertir);
echo install_debut_html($titre);
echo "<p>", _T('utf8_convert_timeout'), "</p><hr />\n";
// preparer un fichier de sauvegarde au cas ou
// on met 'a' car ca peut demander plusieurs rechargements
$f = @fopen(_DIR_TMP.'convert_utf8_backup.sql', 'a');
foreach ($tables_a_convertir as $table => $champ) {
convert_table_utf8($f, $table, $champ);
}
if ($f) fclose($f);
echo "<p><b>"._T('utf8_convert_termine')."</b></p>";
echo "<p>,"._T('utf8_convert_verifier', array('rep' => joli_repertoire(_DIR_TMP))), '</p>';
// bouton "retour au site" + redirige_par_entete
echo "<p style='text-align: right'>",
"<a href='", generer_url_ecrire("config_lang"), "'> >> ",
_T('icone_retour'),"</a></p>",
install_fin_html();
}
示例14: install_etape_4_dist
function install_etape_4_dist()
{
// creer le repertoire cache, qui sert partout !
if(!@file_exists(_DIR_CACHE)) {
$rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE);
$rep = sous_repertoire(_DIR_TMP, $rep, true,true);
}
echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
echo info_progression_etape(4,'etape_','install/');
echo "<p>"
._L('Les extensions ci-dessous sont chargées et activées dans le répertoire @extensions@.', array('extensions' => joli_repertoire(_DIR_EXTENSIONS)))
."</p>";
// installer les extensions
include_spip('inc/plugin');
$afficher = charger_fonction("afficher_liste",'plugins');
echo $afficher(self(), liste_plugin_files(_DIR_EXTENSIONS),array(), _DIR_EXTENSIONS,'afficher_nom_plugin');
installe_plugins();
echo info_etape(_T('info_derniere_etape'),
_T('info_utilisation_spip')
);
// mettre a jour si necessaire l'adresse du site
// securite si on arrive plus a se loger
include_spip('inc/config');
$_POST['adresse_site'] = '';
appliquer_modifs_config();
// aller a la derniere etape qui clos l'install et redirige
$suite = "\n<input type='hidden' name='etape' value='fin' />"
. bouton_suivant(_T('login_espace_prive'));
echo generer_form_ecrire('install', $suite); echo install_fin_html();
}
示例15: afficher_librairies
/**
* Crée le code HTML de la liste des librairies présentes
*
* @uses liste_librairies()
*
* @return string Code HTML
*/
function afficher_librairies()
{
if (!($libs = liste_librairies())) {
return '';
}
ksort($libs);
$res = debut_cadre_enfonce('', true, '', _T('plugin_librairies_installees'));
$res .= '<dl>';
foreach ($libs as $lib => $rep) {
$res .= "<dt>{$lib}</dt><dd>" . joli_repertoire($rep) . "</dd>\n";
}
$res .= '</dl>';
$res .= fin_cadre_enfonce(true);
return $res;
}