|
From: <os...@us...> - 2012-04-13 20:22:27
|
Revision: 4225
http://oscss.svn.sourceforge.net/oscss/?rev=4225&view=rev
Author: oscim
Date: 2012-04-13 20:22:21 +0000 (Fri, 13 Apr 2012)
Log Message:
-----------
suite travail de centralisation et d'expliotation des fichier sql
Modified Paths:
--------------
trunk/catalog/Documents/admin/data/dashboard.xml
trunk/catalog/admin/includes/classes/oscss_DBIndex.php
trunk/catalog/admin/includes/languages/fr_FR/boxes/07_catalog.php
trunk/catalog/admin/includes/languages/fr_FR/modules/pages/backup.txt
trunk/catalog/admin/includes/modules/pages/backup.php
Added Paths:
-----------
trunk/catalog/admin/includes/classes/DataSqlFile.php
Modified: trunk/catalog/Documents/admin/data/dashboard.xml
===================================================================
--- trunk/catalog/Documents/admin/data/dashboard.xml 2012-04-13 15:37:03 UTC (rev 4224)
+++ trunk/catalog/Documents/admin/data/dashboard.xml 2012-04-13 20:22:21 UTC (rev 4225)
@@ -3,8 +3,7 @@
<admin>
<left>
- <widget>AdminUsersNew</widget>
- <widget>AdminUsersModified</widget>
+ <widget>AdminUsersLast</widget>
</left>
<right>
<widget>AdminGroupsNew</widget>
Added: trunk/catalog/admin/includes/classes/DataSqlFile.php
===================================================================
--- trunk/catalog/admin/includes/classes/DataSqlFile.php (rev 0)
+++ trunk/catalog/admin/includes/classes/DataSqlFile.php 2012-04-13 20:22:21 UTC (rev 4225)
@@ -0,0 +1,167 @@
+<?php if (!defined('HTTP_SERVER')) die('You can not access this file directly!');
+/**
+ @licence GPL 2005-2012 The osCSS developers - osCSS Open Source E-commerce
+ @portion code Copyright (c) 2002 osCommerce
+ @package osCSS-2 <www http://www.oscss.org>
+ @version 2.1.1
+ @date 11/04/2012, 18:17
+ @author oscim <mail aur...@os...> <www http://www.oscim.fr>
+ @encode UTF-8
+ @brief Manipluate files.sql And execute
+
+
+
+ Not used !!! In dev
+*/
+
+Class DataFileSql{
+ /**
+ @def TABLES_FOLDER
+ */
+ const TABLES_FOLDER = 'tables/';
+ /**
+ @def TABLES_DATA
+ */
+ const TABLES_DATA = 'data/';
+
+
+ /**
+ @var path base folder for list and
+ */
+ public $basepath;
+
+
+ public function __construct(){
+
+ $this->Ftables = $this->basepath . 'tables/';
+ }
+
+
+ /**
+ @brief ordonne les fichier pour l'install
+ @param path path directory for scan
+ @return array
+ [0] tables
+ [1] keys
+ [2] data
+ */
+ function SqlFileBrowse($path){
+
+ $result=array();
+ $result[0]=array();
+ $result[1]=array();
+ $result[2]=array();
+
+
+
+ foreach(scan($path.'tables/') as $row){
+ if(substr($row,-1) !='~') {
+ if(strpos($row , '.key')===false)
+ $result[0][]=$row;
+
+ elseif(strpos($row , '.key') > 0){
+ if(DB_MOTOR_TYPE =='InnoDB')
+ $result[1][]=$row;
+ }
+ }
+ }
+
+ foreach(scan($path.'data/') as $row){
+ if(substr($row,-1) !='~')
+ $result[2][]=$row;
+ }
+
+
+ return $result;
+
+ }
+
+
+ /**
+ @brief Process for load and install .sql or .key.sql
+ */
+ function SqlFileDataProcess( $sql_file, $table_prefix = -1,$file_lg_sample='') {
+ global $language;
+ $buffer = '';
+ $lg=false;
+
+
+ if( $file_lg_sample !='')include($file_lg_sample);
+ else{
+// $file_lg= dirname($_SERVER['SCRIPT_FILENAME']).'/'.WS_LANGUAGE.DC_LOADER_LANG.'/'.preg_replace(array('#(.sql)#i','#^([0-9]*_)#i'),array('.txt','') ,basename($sql_file));
+// if(file_exists($file_lg))include($file_lg);
+ }
+
+ $fp = fopen($sql_file, 'rb');
+
+ while (!feof ($fp)){
+ $buf = fgets($fp, 4096);
+ if (substr($buf, 0, 2) <> '--' ){
+ $buf=preg_replace('/--(.+)*/' ,'',$buf);
+ $buffer .= $buf;
+ }
+ }
+
+ $DB=Database::getInstance();
+ $repl = ((is_array($lg) && count($lg) >0)? true : false);
+ $buffer=preg_replace('/[ ](OSC_)([A-Z])/i', ' '.$table_prefix.'$2',$buffer);
+ $buffer = trim($buffer);
+
+ $query=preg_split("/\n/i",$buffer,-1,PREG_SPLIT_NO_EMPTY);
+
+
+ if($repl) {
+ $lg_k = array_keys($lg);
+ $lg_v = array_map('addslashes',$lg);
+ }
+ foreach($query as $row){
+ $row = trim($row);
+ if(strlen($row) > 3){
+ $sql=($repl)? str_replace($lg_k,$lg_v,$row) : $row ;
+
+ $DB->query($row);
+
+ }
+ }
+
+ }
+
+ /**
+ @brief Process for load and install .sql or .key.sql
+ */
+ function SqlFileProcess( $sql_file, $table_prefix = -1) {
+
+ $buffer = '';
+ $lg=false;
+
+ $fp = fopen($sql_file, 'rb');
+
+ while (!feof ($fp)){
+ $buf = fgets($fp, 4096);
+ if (substr($buf, 0, 2) <> '--' ){
+ $buf=preg_replace('/--(.+)*/' ,'',$buf);
+ $buffer .= $buf;
+ }
+ }
+ fclose($fp);
+
+
+ $DB=Database::getInstance();
+
+ $buffer=preg_replace('/[ ](OSC_)([A-Z])/i', ' '.$table_prefix.'$2',$buffer);
+
+ $query=explode(';',$buffer);
+ foreach($query as $row){
+ $row = trim($row);
+ if(strlen($row) > 3){
+ $DB->query($row);
+ }
+ }
+
+ }
+
+
+}
+
+
+?>
\ No newline at end of file
Modified: trunk/catalog/admin/includes/classes/oscss_DBIndex.php
===================================================================
--- trunk/catalog/admin/includes/classes/oscss_DBIndex.php 2012-04-13 15:37:03 UTC (rev 4224)
+++ trunk/catalog/admin/includes/classes/oscss_DBIndex.php 2012-04-13 20:22:21 UTC (rev 4225)
@@ -34,6 +34,8 @@
// index all tables
$this->ListTablesAvailable();
+
+
$this->ListTablesInstalled();
}
@@ -66,6 +68,7 @@
'extension'=>$ext,
'type'=>(($key) ? 't' : 'k' ),
'installed'=>'0',
+ 'Rows'=>0,
);
if($key){
@@ -108,18 +111,41 @@
function ListTablesInstalled(){
$DB = Database::getInstance();
- $res = $DB->query('SHOW TABLES FROM '.DB_DATABASE );
-// print_r($res->fetchAllAssoc() );
-// exit;
+// $res = $DB->query('SHOW TABLES FROM '.DB_DATABASE );
+// // print_r($res->fetchAllAssoc() );
+// // exit;
+// foreach ($res->fetchAllAssoc() as $key=>$row ) {
+// $row = array_values($row);
+//
+// if(!isset($this->all['table'][$row[0]])){
+// $this->all['inconnue'][$row[0]]['name'] = $row[0];
+// $this->all['inconnue'][$row[0]]['installed'] = '1';
+// }
+// else
+// $this->all['table'][$row[0]]['installed'] = '1';
+//
+// }
+
+ $res = $DB->query('SHOW TABLE STATUS ' );
+
foreach ($res->fetchAllAssoc() as $key=>$row ) {
- $row = array_values($row);
+ if(!isset($this->all['table'][$row['Name']])){
- if(!isset($this->all['table'][$row[0]])){
- $this->all['inconnue'][$row[0]]['name'] = $row[0];
- $this->all['inconnue'][$row[0]]['installed'] = '1';
+ $this->all['inconnue'][$row['Name']] = $row;
+ $this->all['inconnue'][$row['Name']]['name'] = $row;
+ $this->all['inconnue'][$row['Name']]['installed'] = '1';
+ $this->all['inconnue'][$row['Name']]['Create_time'] = $row['Create_time'];
+ $this->all['inconnue'][$row['Name']]['Rows'] = (int)$row['Rows'];
}
- else
- $this->all['table'][$row[0]]['installed'] = '1';
+ else{
+// $row['Name']
+ $this->all['table'][$row['Name']]['Create_time'] = $row['Create_time'];
+ $this->all['table'][$row['Name']]['Rows'] =(int)$row['Rows'];
+ $this->all['table'][$row['Name']]['installed'] = '1';
+
+// print_r($res->fetchAllAssoc() );
+// exit;
+ }
}
Modified: trunk/catalog/admin/includes/languages/fr_FR/boxes/07_catalog.php
===================================================================
--- trunk/catalog/admin/includes/languages/fr_FR/boxes/07_catalog.php 2012-04-13 15:37:03 UTC (rev 4224)
+++ trunk/catalog/admin/includes/languages/fr_FR/boxes/07_catalog.php 2012-04-13 20:22:21 UTC (rev 4225)
@@ -15,4 +15,8 @@
define('BOX_CATALOG_PRODUCTS_EXPECTED',"Produit(s) en attente" );
define('BOX_CATALOG_ATTIBUTES',"Attribut(s)" );
define('BOX_CATALOG_STOCK',"Stock(s)" );
+
+/* Begin SPECIALS_stable - installed by CIP */
+define('BOX_CATALOG_SPECIALS', 'Promotion');
+/* End SPECIALS_stable - installed by CIP */
?>
\ No newline at end of file
Modified: trunk/catalog/admin/includes/languages/fr_FR/modules/pages/backup.txt
===================================================================
--- trunk/catalog/admin/includes/languages/fr_FR/modules/pages/backup.txt 2012-04-13 15:37:03 UTC (rev 4224)
+++ trunk/catalog/admin/includes/languages/fr_FR/modules/pages/backup.txt 2012-04-13 20:22:21 UTC (rev 4225)
@@ -13,47 +13,55 @@
/* listing */
-$lang['table heading title']="Titre" ;
-$lang['table heading file date']="Date" ;
-$lang['table heading file size']="Taille" ;
-$lang['table heading action']="Action" ;
+ $lang['table heading title']="Titre" ;
+ $lang['table heading file date']="Date" ;
+ $lang['table heading file size']="Taille" ;
+ $lang['table heading action']="Action" ;
-$lang['image backup']="Sauvegarde" ;
-$lang['image db restore']="Restaurer" ;
-$lang['image restore file ext']="Restaurer un fichier téléchargé" ;
+ $lang['image backup']="Sauvegarde" ;
+ $lang['image db restore']="Restaurer" ;
+ $lang['image restore file ext']="Restaurer un fichier téléchargé" ;
/* backup */
-$lang['text info heading new backup']="Nouvelle sauvegarde" ;
-$lang['text info heading restore local']="Restaurer localement" ;
-$lang['text info new backup']="N'interrompez pas le processus de sauvegarde. Celui-ci peut durer quelques minutes" ;
-$lang['text info unpack']="(après extraction des fichiers de l\'archive)" ;
-$lang['text info restore']="<p>Ne pas interrompre le processus de restauration.<br />Plus le fichier est grand, plus cela prendra du temps!<br />Si possible, utilisez un client Mysql.<br />Par exemple :<br /><strong>mysql -h " . DB_SERVER . " -u " . DB_SERVER_USERNAME . " -p " . DB_DATABASE . " < %s </strong> %s</p>" ;
-$lang['text info restore local']="Ne pas interrompre le processus de restauration.<br /><br />Plus le fichier est grand, plus cela prendra du temps!" ;
-$lang['text info restore local raw file']="Le fichier transféré doit être au format SQL brut (texte)." ;
-$lang['text info date']="Date :" ;
-$lang['text info size']="Taille :" ;
-$lang['text info compression']="Compression :" ;
-$lang['text info use gzip']="Utiliser GZIP" ;
-$lang['text info use zip']="Utiliser ZIP" ;
-$lang['text info use no compression']="Pas de compression (Pur SQL)" ;
-$lang['text info download only']="Télécharger seulement (ne pas le stocker côté serveur)" ;
-$lang['text info best through https']="Préférez une connexion HTTPS" ;
-$lang['text no extension']="Aucune" ;
-$lang['faire un backup integrant la structure des tables']="faire un backup integrant la structure des tables." ;
-$lang['ajouter commande pour vider les tables avant de restaurer']="Ajouter commande pour vider les tables avant de restaurer" ;
+ $lang['text info heading new backup']="Nouvelle sauvegarde" ;
+ $lang['text info heading restore local']="Restaurer localement" ;
+ $lang['text info new backup']="N'interrompez pas le processus de sauvegarde. Celui-ci peut durer quelques minutes" ;
+ $lang['text info unpack']="(après extraction des fichiers de l\'archive)" ;
+ $lang['text info restore']="<p>Ne pas interrompre le processus de restauration.<br />Plus le fichier est grand, plus cela prendra du temps!<br />Si possible, utilisez un client Mysql.<br />Par exemple :<br /><strong>mysql -h " . DB_SERVER . " -u " . DB_SERVER_USERNAME . " -p " . DB_DATABASE . " < %s </strong> %s</p>" ;
+ $lang['text info restore local']="Ne pas interrompre le processus de restauration.<br /><br />Plus le fichier est grand, plus cela prendra du temps!" ;
+ $lang['text info restore local raw file']="Le fichier transféré doit être au format SQL brut (texte)." ;
+ $lang['text info date']="Date :" ;
+ $lang['text info size']="Taille :" ;
+ $lang['text info compression']="Compression :" ;
+ $lang['text info use gzip']="Utiliser GZIP" ;
+ $lang['text info use zip']="Utiliser ZIP" ;
+ $lang['text info use no compression']="Pas de compression (Pur SQL)" ;
+ $lang['text info download only']="Télécharger seulement (ne pas le stocker côté serveur)" ;
+ $lang['text info best through https']="Préférez une connexion HTTPS" ;
+ $lang['text no extension']="Aucune" ;
+ $lang['faire un backup integrant la structure des tables']="faire un backup integrant la structure des tables." ;
+ $lang['ajouter commande pour vider les tables avant de restaurer']="Ajouter commande pour vider les tables avant de restaurer" ;
/* delete */
-$lang['heading title delete backup']="Suppression d'une sauvegarde" ;
-$lang['text info delete backup']="Êtes-vous sûr de vouloir supprimer cette sauvegarde ?" ;
+ $lang['heading title delete backup']="Suppression d'une sauvegarde" ;
+ $lang['text info delete backup']="Êtes-vous sûr de vouloir supprimer cette sauvegarde ?" ;
+/* viewalldb */
+ $lang['backup tab all tables available']="Toutes" ;
+ $lang['backup tab tables link language']="Langues" ;
+ $lang['table heading name']="Nom" ;
+ $lang['table heading installed']="Installé" ;
+ $lang['table heading Rows']="Nbr Lignes" ;
+
+
/* other */
-$lang['text backup directory']="Répertoire de sauvegarde :" ;
-$lang['text last restoration']="Dernière restauration :" ;
-$lang['text forget']="(<u>oublier</u>)" ;
+ $lang['text backup directory']="Répertoire de sauvegarde :" ;
+ $lang['text last restoration']="Dernière restauration :" ;
+ $lang['text forget']="(<u>oublier</u>)" ;
$lang['error backup directory does not exist']="Erreur : Le répertoire de sauvegarde n\'existe pas. Merci de le préciser dans le fichier configure.php (cf DIR_FS_BACKUP)" ;
Modified: trunk/catalog/admin/includes/modules/pages/backup.php
===================================================================
--- trunk/catalog/admin/includes/modules/pages/backup.php 2012-04-13 15:37:03 UTC (rev 4224)
+++ trunk/catalog/admin/includes/modules/pages/backup.php 2012-04-13 20:22:21 UTC (rev 4225)
@@ -13,7 +13,7 @@
class backup
extends ModTwo /// new abstract class for nextgen module
implements InterfaceModule
- ,IntModTwo /// new interface module for nextgen module
+ //,IntModTwo /// new interface module for nextgen module
,ExtModConfig {
const FILENAME = FILENAME_BACKUP;
@@ -73,6 +73,7 @@
*/
if(defined('JSONSTATMENT')) return;
+ if(self::$action =='' || self::$action =='listing')
//! active datatable in ajax, precise les GET necessaire
define('JSONSTATMENT', 'mod=page&type='.self::$code.
(isset(parent::$action)?'&action='.parent::$action : '' ).
@@ -125,6 +126,16 @@
'title'=>__('image restore file ext'),
'url'=>tep_href_link(self::FILENAME, 'action=restorelocal'),
);
+
+
+ self::$InitInfo['MenuModule'][]=array(
+ 'type'=>'getLink',
+ 'format'=>'button_nav',
+ 'image'=>'',
+ 'cssclass'=>'',
+ 'title'=>__('image viewalldb'),
+ 'url'=>tep_href_link(self::FILENAME, 'action=viewalldb'),
+ );
}
@@ -160,18 +171,18 @@
case 'backupnow':
- $Go=new BackupProcess;
+ $Go=new BackupProcess;
- if (isset($_POST['backup_structure']) && ($_POST['backup_structure'] == 'yes'))
- $Go->UseStructure = true;
+ if (isset($_POST['backup_structure']) && ($_POST['backup_structure'] == 'yes'))
+ $Go->UseStructure = true;
- if (isset($_POST['backup_truncate']) && ($_POST['backup_truncate'] == 'yes'))
- $Go->EmptyTable = true;
+ if (isset($_POST['backup_truncate']) && ($_POST['backup_truncate'] == 'yes'))
+ $Go->EmptyTable = true;
- $backup_file = 'db_' . DB_DATABASE . '-' . date('YmdHis') . '.sql';
+ $backup_file = 'db_' . DB_DATABASE . '-' . date('YmdHis') . '.sql';
- $Go->Save($backup_file);
+ $Go->Save($backup_file);
if (isset($_POST['download']) && ($_POST['download'] == 'yes')) {
@@ -214,7 +225,7 @@
$restore_file = DIR_FS_BACKUP . $read_from;
}
}
- elseif (self::$action == 'restorelocalnow') {
+ elseif (self::$action == 'restorelocalnow') {
$sql_file = new upload('sql_file',DIR_FS_BACKUP);
if ($sql_file->parse() == true) {
@@ -223,9 +234,9 @@
}
}
- $Go=new BackupProcess;
+ $Go=new BackupProcess;
- $restore_query=$Go->Restore($restore_file);
+ $restore_query=$Go->Restore($restore_file);
if (isset($restore_query)) {
$sql_array = array();
@@ -242,7 +253,8 @@
case 'download':
$extension = substr($_GET['file'], -3);
- $file= tep_db_prepare_input($_GET['file']);
+ $file= tep_db_prepare_input($_GET['file']);
+
if ( ($extension == 'zip') || ($extension == '.gz') || ($extension == 'sql') ) {
if ($fp = fopen(DIR_FS_BACKUP . $file, 'rb')) {
$buffer = fread($fp, filesize(DIR_FS_BACKUP . $file));
@@ -261,7 +273,7 @@
break;
case 'deleteconfirm':
- $file= tep_db_prepare_input($_GET['file']);
+ $file= tep_db_prepare_input($_GET['file']);
if (strstr($file, '..')) tep_redirect(tep_href_link(self::FILENAME));
tep_remove(DIR_FS_BACKUP . '/' . $file);
@@ -302,9 +314,9 @@
$file_array['date'] = tep_datetime_short(date(PHP_DATE_TIME_FORMAT, filemtime(DIR_FS_BACKUP . $entry['file']))); ;
$file_array['size'] = number_format(filesize(DIR_FS_BACKUP . $entry['file'])) ;
switch ($entry['extension']) {
- case 'zip': $file_array['compression'] = 'ZIP'; break;
- case '.gz': $file_array['compression'] = 'GZIP'; break;
- default: $file_array['compression'] = __('text no extension'); break;
+ case 'zip': $file_array['compression'] = 'ZIP'; break;
+ case '.gz': $file_array['compression'] = 'GZIP'; break;
+ default: $file_array['compression'] = __('text no extension'); break;
}
self::$list[$entry['file']]=$file_array;
}
@@ -313,21 +325,21 @@
case 'backup':
case 'delete':
case 'restore':
- if(!empty(self::$Id ) && isset(self::$list[self::$Id ]))
- return self::$Info=self::$list[self::$Id];
+ if(!empty(self::$Id ) && isset(self::$list[self::$Id ]))
+ return self::$Info=self::$list[self::$Id];
break;
case 'listing':
default:
- $li=$res=array();
- foreach(self::$list as $item){
- $li['date']=date(PHP_DATE_TIME_FORMAT, filemtime(DIR_FS_BACKUP . $item['file']));
- $li['title']=$item['file'];
- $li['size']=number_format(filesize(DIR_FS_BACKUP . $item['file']));
- $li['action']=self::get_item_action($item);
- $res[$item['file']]=new objectInfo($li);
- }
+ $li=$res=array();
+ foreach(self::$list as $item){
+ $li['date']=date(PHP_DATE_TIME_FORMAT, filemtime(DIR_FS_BACKUP . $item['file']));
+ $li['title']=$item['file'];
+ $li['size']=number_format(filesize(DIR_FS_BACKUP . $item['file']));
+ $li['action']=self::get_item_action($item);
+ $res[$item['file']]=new objectInfo($li);
+ }
- return $res;
+ return $res;
}
}
@@ -335,24 +347,30 @@
public function display_view(){
switch (parent::$action) {
+
+ case 'viewalldb':
+// self::load_db_values(self::$Id);
+ return MGabCont::CallGab(parent::$action,__FUNCTION__,__CLASS__);
+ break;
+
case 'restorelocal':
case 'restore':
case 'backup':
- self::load_db_values(self::$Id);
- return MGabCont::CallGab(parent::$action,__FUNCTION__,__CLASS__);
+ self::load_db_values(self::$Id);
+ return MGabCont::CallGab(parent::$action,__FUNCTION__,__CLASS__);
break;
case 'delete':
- self::load_db_values(self::$Id);
- /// use master gabarit
- MGabCont::SetCurrentName(__CLASS__);
- return MGabCont::CallGab(parent::$action,__FUNCTION__,self::MASTER);
+ self::load_db_values(self::$Id);
+ /// use master gabarit
+ MGabCont::SetCurrentName(__CLASS__);
+ return MGabCont::CallGab(parent::$action,__FUNCTION__,self::MASTER);
break;
case 'listing':
default:
- self::$list=self::tep_get_list();
- /// use master gabarit
- MGabCont::SetCurrentName(__CLASS__);
- return MGabCont::CallGab('listing',__FUNCTION__,self::MASTER);
+ self::$list=self::tep_get_list();
+ /// use master gabarit
+ MGabCont::SetCurrentName(__CLASS__);
+ return MGabCont::CallGab('listing',__FUNCTION__,self::MASTER);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|