コード例 #1
0
ファイル: doorgetsBackupsIO.php プロジェクト: neoartdoo/CMS
 private function genImportMatrice($file)
 {
     $ff = $file;
     $file = BASE . 'io/' . $file;
     if (!is_file($file)) {
         return false;
     }
     $fileName = str_replace('.zip', '', $ff);
     $contents = '';
     $configData = '';
     // Extraction des données de la databse vers un dossier Temp
     $nameDirTemp = BASE . 'data/_temp/';
     if (!is_dir($nameDirTemp)) {
         @mkdir($nameDirTemp);
     }
     if (!is_dir($nameDirTemp . $fileName . '/')) {
         @mkdir($nameDirTemp . $fileName . '/');
     }
     $dirTempDatabase = $nameDirTemp . $fileName . '/';
     $dirToCopyAllDatas = BASE . '';
     // Récupération du fichier de configuration doorgets.php
     $zip = new ZipArchive();
     if ($res = $zip->open($file)) {
         $zip->extractTo($dirTempDatabase);
         $zip->close();
     }
     $contents = file_get_contents($dirTempDatabase . 'database/doorgets.php');
     $configData = unserialize($contents);
     if (!empty($configData) && is_array($configData)) {
         $sql_query_install = '';
         $dirDatabase = 'database/';
         //$this->doorGets->dbpdo = null;
         $db = new CRUDx();
         // Installation de la base de données
         $sqlToSave = array();
         foreach ($configData as $k => $v) {
             if (!empty($v['sql_create_table'])) {
                 $query = $v['sql_create_table'];
                 $query = trim($query);
                 if (!empty($query)) {
                     $sql_query_install .= $query;
                 }
             }
             $dirDatabaseName = $dirTempDatabase . $dirDatabase . $k . '/';
             $allFiles = $this->files($dirDatabaseName);
             foreach ($allFiles as $nameFile) {
                 if (is_file($dirDatabaseName . $nameFile)) {
                     $dataTableFile = file_get_contents($dirDatabaseName . $nameFile);
                     if ($dataTableContent = unserialize($dataTableFile)) {
                         $sqlToSave[] = $dataTableContent;
                     }
                 }
             }
         }
         $db->dbQuery($sql_query_install);
         $db->dbpdo->commit();
         $db->dbpdo = null;
         foreach ($sqlToSave as $query) {
             if (!empty($query)) {
                 $db = new CRUD();
                 $db->dbQuery($query);
                 $db->dbpdo->commit();
                 $db->dbpdo = null;
             }
         }
         // Copie des fichiers doorGets
         $this->full_copy($dirTempDatabase . 'doorgets/', BASE);
         // Suppression des données temporaire
         if (is_dir($nameDirTemp)) {
             $this->destroy_dir($nameDirTemp);
         }
     }
     FlashInfo::set($this->l("Votre sauvegarde est installée"));
     header("Location:./?controller=configuration&action=backups");
     exit;
 }