"; echo "
", gros_titre(_T('titre_admin_tech'),'',false), '
'; if ($GLOBALS['connect_toutes_rubriques']) { echo barre_onglets("administration", "sauver") . "
"; echo debut_gauche('',true); echo debut_boite_info(true); echo _T('info_gauche_admin_tech'); echo fin_boite_info(true); $repertoire = _DIR_DUMP; if (!@file_exists($repertoire) AND !$repertoire = sous_repertoire(_DIR_DUMP,'',false,true) ) { $repertoire = preg_replace(','._DIR_TMP.',', '', _DIR_DUMP); $repertoire = sous_repertoire(_DIR_TMP, $repertoire); } $dir_dump = $repertoire; } else { echo debut_gauche('', true); $dir_dump = determine_upload(); } echo debut_droite('',true); // // Sauvegarde de la base // // a passer en fonction if (substr(_DIR_IMG, 0, strlen(_DIR_RACINE)) === _DIR_RACINE) $dir_img = substr(_DIR_IMG,strlen(_DIR_RACINE)); else $dir_img = _DIR_IMG; $dir_dump = joli_repertoire($dir_dump); $res = "\n

" . http_img_pack('warning.gif', _T('info_avertissement'), "style='width: 48px; height: 48px; float: right;margin: 10px;'") . _T('texte_admin_tech_01', array('dossier' => ''.$dir_dump.'', 'img'=>''.$dir_img.'')) . ' ' . _T('texte_admin_tech_02', array('spipnet' => $GLOBALS['home_server'] . '/' . $GLOBALS['spip_lang'] . '_article1489.html' )) . "

"; $file = nom_fichier_dump(); $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc'); $form = $chercher_rubrique(0, $GLOBALS['connect_id_rubrique'] ? 'breve' : 'rubrique', $GLOBALS['connect_id_rubrique'], 0, 'admin_tech'); if ($form) { if (preg_match('@^]*)>(\s*]*)>([^[<]+)(.*)$@s', $form, $r)) { if (!strpos($r[2], 'selected=')) $r[2] .= " selected='selected'"; $form = ""; $znom = "\n"; $res .= _T('texte_admin_tech_03') . "\n\n" . "\n"; if (!$GLOBALS['connect_toutes_rubriques']) foreach($tables as $k => $v) if (!strpos($v, 'checked')) unset($tables[$k]); $bloc = "

"._T('install_tables_base')."

" . "\n
  1. \n" . join("
  2. \n
  3. ", $tables) . "
\n"; $bloc = block_parfois_visible('export_tables', _T('info_options_avancees'), $bloc, '', false); echo debut_cadre_trait_couleur('',true,'',_T('texte_sauvegarde'),'sauvegarder'), generer_form_ecrire('export_all', $res . $bloc, '', _T('texte_sauvegarde_base')), fin_cadre_trait_couleur(true); // // Restauration de la base // // restaurer est equivalent a detruire, ou pas (cas des restaurations partielles, a affiner ?) if (autoriser('detruire')) { echo debut_cadre_trait_couleur('',true,'', _T('texte_restaurer_base'),'restaurer'); echo admin_sauvegardes($dir_dump, _request('tri')); echo fin_cadre_trait_couleur(true); // // Lien vers la reparation // if (!_request('reinstall') AND version_compare(sql_version(),'3.23.14','>=')) { $res = "\n

". _T('texte_crash_base') . "\n

"; echo debut_cadre_trait_couleur('',true,'',_T('texte_recuperer_base'),'reparer'), generer_form_ecrire('admin_repair', $res, '', _T('bouton_tenter_recuperation')), fin_cadre_trait_couleur(true); } } echo "
"; echo fin_gauche(), fin_page(); } function admin_sauvegardes($dir_dump, $tri) { $liste_dump = preg_files(_DIR_DUMP,'\.xml(\.gz)?$',50,false); $selected = end($liste_dump); $n = strlen(_DIR_DUMP); $tl = $tt = $td = array(); $f = ""; $i = 0; foreach($liste_dump as $fichier){ $i++; $d = filemtime($fichier); $t = filesize($fichier); $s = ($fichier==$selected); $class = 'row_'.alterner($i, 'even', 'odd'); $fichier = substr($fichier, $n); $tl[]= liste_sauvegardes($i, $fichier, $class, $s, $d, $t); $td[] = $d; $tt[] = $t; } if ($tri == 'taille') array_multisort($tt, SORT_ASC, $tl); elseif ($tri == 'date') array_multisort($td, SORT_ASC, $tl); $fichier_defaut = $f ? basename($f) : str_replace(array("@stamp@","@nom_site@"),array("",""),_SPIP_DUMP); $self = self(); $class = 'row_'.alterner($i+1, 'even', 'odd'); $head = !$tl ? '' : ( "\n" . '' . _T('info_nom') . "\n" . '' . _T('taille_octets', array('taille' => '')) . "\n" . '' . _T('public:date') . ''); $texte = _T('texte_compresse_ou_non')." "; $h = _T('texte_restaurer_sauvegarde', array('dossier' => ''.$dir_dump.'')); $res = "\n

" . $h . '

' . _T('entree_nom_fichier', array('texte_compresse' => $texte)) . "\n

" . $head . join('',$tl) . "\n" . '
" . "\n
'; $plie = _T('info_options_avancees'); // restauration partielle / fusion $opt = debut_cadre_enfonce('',true) . "\n
" . " 
\n" . " 
\n" . "" . "  \n" . '
' . fin_cadre_enfonce(true); $res .= block_parfois_visible('import_tables', $plie, $opt, '', false); return generer_form_ecrire('import_all', $res, '', _T('bouton_restaurer_base')); } // http://doc.spip.org/@liste_sauvegardes function liste_sauvegardes($key, $fichier, $class, $selected, $date, $taille) { return "\n\n" . taille_en_octets($taille) . '' . affdate_heure(date('Y-m-d H:i:s',$date)) . ''; } // http://doc.spip.org/@nom_fichier_dump function nom_fichier_dump() { global $connect_toutes_rubriques; if ($connect_toutes_rubriques AND file_exists(_DIR_DUMP)) $dir = _DIR_DUMP; else $dir = determine_upload(); $site = isset($GLOBALS['meta']['nom_site']) ? preg_replace(array(",\W,is",",_(?=_),",",_$,"),array("_","",""), couper(translitteration(trim($GLOBALS['meta']['nom_site'])),30,"")) : 'spip'; $site .= '_' . date('Ymd'); $nom = $site; $cpt=0; while (file_exists($dir. $nom . ".xml") OR file_exists($dir. $nom . ".xml.gz")) { $nom = $site . sprintf('_%03d', ++$cpt); } return $nom; } function options_avancees_dump(){ list($tables,) = base_liste_table_for_dump(lister_tables_noexport()); return controle_tables_en_base('export', $tables); } // Fabrique la liste a cocher des tables presentes function controle_tables_en_base($name, $check) { $p = '/^' . $GLOBALS['table_prefix'] . '/'; $res = $check; foreach(sql_alltable() as $t) { $t = preg_replace($p, 'spip', $t); if (!in_array($t, $check)) $res[]= $t; } sort($res); foreach ($res as $k => $t) { $res[$k] = "\n" . $t . " (" . sql_countsel($t) . ")"; } return $res; } ?>