Exemple #1
0
 private function genExportMatrice()
 {
     $arrayCatInc = array('blog', 'news', 'multipage', 'video', 'image', 'faq', 'partner', 'genform', 'sharedlinks');
     $arrayExclude = array('_dg_translator', '_dg_translator_traduction', '_dg_translator_version');
     include CONFIGURATION . 'tables.php';
     $isAllModule = $this->dbQ("SELECT id,uri,type,extras FROM _modules ORDER BY id DESC LIMIT 200");
     $cAllModule = count($isAllModule);
     if (!empty($isAllModule)) {
         for ($i = 0; $i < $cAllModule; $i++) {
             if (in_array($isAllModule[$i]['type'], $arrayCatInc)) {
                 $isAllModule[$i]['uri'] = $this->getRealUri($isAllModule[$i]['uri']);
                 $table['_m_' . $isAllModule[$i]['uri']]['count'] = 0;
                 $table['_m_' . $isAllModule[$i]['uri']]['type'] = $isAllModule[$i]['type'];
                 switch ($isAllModule[$i]['type']) {
                     case 'faq':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlFaq($isAllModule[$i]['uri']);
                         break;
                     case 'partner':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlPartner($isAllModule[$i]['uri']);
                         break;
                     case 'image':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlImage($isAllModule[$i]['uri']);
                         break;
                     case 'video':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlVideo($isAllModule[$i]['uri']);
                         break;
                     case 'multipage':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlMultipage($isAllModule[$i]['uri']);
                         break;
                     case 'news':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlNews($isAllModule[$i]['uri']);
                         break;
                     case 'sharedlinks':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlSharedlinks($isAllModule[$i]['uri']);
                         break;
                     case 'blog':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlBlog($isAllModule[$i]['uri']);
                         break;
                     case 'genform':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->createSqlGenform($isAllModule[$i]['uri'], unserialize($isAllModule[$i]['extras']));
                         break;
                 }
                 if ($isAllModule[$i]['type'] !== 'genform') {
                     $table['_m_' . $isAllModule[$i]['uri'] . '_traduction']['count'] = 0;
                     $table['_m_' . $isAllModule[$i]['uri'] . '_traduction']['type'] = $isAllModule[$i]['type'] . '_traduction';
                     $table['_m_' . $isAllModule[$i]['uri'] . '_traduction']['sql_create_table'] = '';
                     $table['_m_' . $isAllModule[$i]['uri'] . '_version']['count'] = 0;
                     $table['_m_' . $isAllModule[$i]['uri'] . '_version']['type'] = $isAllModule[$i]['type'] . '_version';
                     $table['_m_' . $isAllModule[$i]['uri'] . '_version']['sql_create_table'] = '';
                 }
             }
         }
     }
     $timer = time();
     $tmpCode = uniqid() . "_" . $timer;
     // Création de l'archive zipper
     $filename = "doorGets_backup_{$tmpCode}.zip";
     $zip_file = BASE . "io/{$filename}";
     $json_file = BASE . "io/doorGets_backup_{$tmpCode}.json";
     $zipArchive = new ZipDir();
     $resArchive = $zipArchive->open($zip_file, ZipArchive::CREATE);
     if ($resArchive === TRUE) {
         // Création de la copie de la database
         $zipArchive->addEmptyDir('database/');
         $groupBy = 500;
         // Création des fichiers d'éxportation de la base
         foreach ($table as $name_table => $v) {
             if (!in_array($name_table, $arrayExclude)) {
                 $iTable = $this->dbQ('SELECT COUNT(*) as counter FROM ' . $name_table);
                 $table[$name_table]['count'] = (int) $iTable[0]['counter'];
                 $dirIoFile = 'database/' . $name_table . '/';
                 $zipArchive->addEmptyDir($dirIoFile);
                 $totalPosition = 0;
                 if ($table[$name_table]['count'] > $groupBy) {
                     $totalPosition = ceil($table[$name_table]['count'] / $groupBy);
                 }
                 for ($i = 0; $i < $totalPosition + 1; $i++) {
                     $initPos = $i ? $groupBy * $i : 0;
                     $valContent = $this->dbQA($name_table, " LIMIT {$initPos}, {$groupBy}");
                     $sqlToSave = '';
                     $fileNameSaved = $dirIoFile . $name_table . '-' . $i . '.php';
                     if (!empty($valContent)) {
                         $cValContentcount = count($valContent);
                         for ($j = 0; $j < $cValContentcount; $j++) {
                             $sqlToSave .= $this->dbVQI($valContent[$j], $name_table);
                         }
                         $sqlToSaveSerialized = serialize($sqlToSave);
                         $zipArchive->addFromString($fileNameSaved, $sqlToSaveSerialized);
                     }
                 }
             }
         }
         $tableInfo = serialize($table);
         $zipArchive->addFromString('database/doorgets.php', $tableInfo);
         $zipArchive->addDir(BASE . 'api', 'doorgets/api');
         $zipArchive->addDir(BASE . 'ajax', 'doorgets/ajax');
         $zipArchive->addDir(BASE . 'cache', 'doorgets/cache');
         $zipArchive->addDir(BASE . 'config', 'doorgets/config');
         $zipArchive->addDir(BASE . 'data', 'doorgets/data');
         $zipArchive->addDir(BASE . 'dg-user', 'doorgets/dg-user');
         $zipArchive->addDir(BASE . 'doorgets', 'doorgets/doorgets');
         $zipArchive->addDir(BASE . 'installer', 'doorgets/installer');
         $zipArchive->addDir(BASE . 'io', 'doorgets/io');
         $zipArchive->addDir(BASE . 'rss', 'doorgets/rss');
         $zipArchive->addDir(BASE . 'skin', 'doorgets/skin');
         $zipArchive->addDir(BASE . 't', 'doorgets/t');
         $zipArchive->addDir(BASE . 'oauth2', 'doorgets/oauth2');
         $zipArchive->addDir(BASE . 'themes', 'doorgets/themes');
         $zipArchive->addDir(BASE . 'update', 'doorgets/update');
         $zipArchive->addDir(BASE . 'u', 'doorgets/u');
         $zipArchive->addFile(BASE . 'index.php', 'doorgets/index.php');
         $zipArchive->addFile(BASE . 'favicon.ico', 'doorgets/favicon.ico');
         $zipArchive->close();
     }
     // Create json file for infos
     $this->dataInfo['file'] = $filename;
     if (file_put_contents($json_file, json_encode($this->dataInfo, JSON_PRETTY_PRINT))) {
         return true;
     }
     return false;
 }
Exemple #2
0
 private function genExportMatrice()
 {
     $arrayCatInc = array('blog', 'news', 'multipage', 'video', 'image', 'faq', 'partner', 'shop', 'genform', 'sharedlinks');
     $arrayExclude = array('_dg_translator', '_dg_translator_traduction', '_dg_translator_version');
     include CONFIGURATION . 'tables.php';
     $isAllModule = $this->dbQ("SELECT id,uri,type,extras FROM _modules ORDER BY id DESC LIMIT 1000");
     $cAllModule = count($isAllModule);
     if (!empty($isAllModule)) {
         for ($i = 0; $i < $cAllModule; $i++) {
             if (in_array($isAllModule[$i]['type'], $arrayCatInc)) {
                 $isAllModule[$i]['uri'] = $this->getRealUri($isAllModule[$i]['uri']);
                 $table['_m_' . $isAllModule[$i]['uri']]['count'] = 0;
                 $table['_m_' . $isAllModule[$i]['uri']]['type'] = $isAllModule[$i]['type'];
                 switch ($isAllModule[$i]['type']) {
                     case 'faq':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlFaq($isAllModule[$i]['uri']);
                         break;
                     case 'partner':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlPartner($isAllModule[$i]['uri']);
                         break;
                     case 'image':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlImage($isAllModule[$i]['uri']);
                         break;
                     case 'video':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlVideo($isAllModule[$i]['uri']);
                         break;
                     case 'multipage':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlMultipage($isAllModule[$i]['uri']);
                         break;
                     case 'news':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlNews($isAllModule[$i]['uri']);
                         break;
                     case 'sharedlinks':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlSharedlinks($isAllModule[$i]['uri']);
                         break;
                     case 'blog':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlBlog($isAllModule[$i]['uri']);
                         break;
                     case 'shop':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlShop($isAllModule[$i]['uri']);
                         break;
                     case 'genform':
                         $table['_m_' . $isAllModule[$i]['uri']]['sql_create_table'] = $this->installDB->createSqlGenform($isAllModule[$i]['uri'], unserialize(base64_decode($isAllModule[$i]['extras'])));
                         break;
                 }
                 if ($isAllModule[$i]['type'] !== 'genform') {
                     $table['_m_' . $isAllModule[$i]['uri'] . '_traduction']['count'] = 0;
                     $table['_m_' . $isAllModule[$i]['uri'] . '_traduction']['type'] = $isAllModule[$i]['type'] . '_traduction';
                     $table['_m_' . $isAllModule[$i]['uri'] . '_traduction']['sql_create_table'] = '';
                     $table['_m_' . $isAllModule[$i]['uri'] . '_version']['count'] = 0;
                     $table['_m_' . $isAllModule[$i]['uri'] . '_version']['type'] = $isAllModule[$i]['type'] . '_version';
                     $table['_m_' . $isAllModule[$i]['uri'] . '_version']['sql_create_table'] = '';
                 }
             }
         }
     }
     $timer = time();
     $tmpCode = uniqid() . "_" . $timer;
     // Création de l'archive zipper
     $filename = "doorGets_CMS_7.0_{$tmpCode}.zip";
     $zip_file = BASE . "installer/{$filename}";
     $json_file = BASE . "installer/doorGets_CMS_7.0_{$tmpCode}.json";
     $zip_file_doorgets = BASE . "installer/doorgets.zip.{$tmpCode}";
     $zip_file_database = BASE . "installer/database.zip.{$tmpCode}";
     $dirCache = BASE . "cache/_tempDatabase/";
     if (!is_dir($dirCache)) {
         @mkdir($dirCache, 0777, true);
     }
     $zipdoorGets = new ZipDir();
     $resdoorGets = $zipdoorGets->open($zip_file_doorgets, ZipArchive::CREATE);
     if ($resdoorGets === TRUE) {
         $zipdoorGets->addDir(BASE . 'api', 'api');
         $zipdoorGets->addDir(BASE . 'ajax', 'ajax');
         $zipdoorGets->addDir(BASE . 'config', 'config');
         $zipdoorGets->addDir(BASE . 'data', 'data');
         //$zipdoorGets->addDir(BASE.'checkout', 'checkout');
         //$zipdoorGets->addDir(BASE.'payment', 'payment');
         $zipdoorGets->addDir(BASE . 'dg-user', 'dg-user');
         $zipdoorGets->addDir(BASE . 'doorgets', 'doorgets');
         $zipdoorGets->addDir(BASE . 'rss', 'rss');
         $zipdoorGets->addDir(BASE . 'skin', 'skin');
         $zipdoorGets->addDir(BASE . 'fileman', 'fileman');
         $zipdoorGets->addDir(BASE . 't', 't');
         $zipdoorGets->addDir(BASE . 'oauth2', 'oauth2');
         $zipdoorGets->addDir(BASE . 'themes', 'themes');
         $zipdoorGets->addDir(BASE . 'update', 'update');
         $zipdoorGets->addDir(BASE . 'u', 'u');
         //$zipdoorGets->addFile(BASE.'Table2Model.php', 'Table2Model.php');
         //$zipdoorGets->addFile(BASE.'cmd.php', 'cmd.php');
         $zipdoorGets->addFile(BASE . '404.php', '404.php');
         $zipdoorGets->addFile(BASE . 'index.php', 'index.php');
         //$zipdoorGets->addFile(BASE.'.htaccess', '.htaccess');
         $zipdoorGets->addFile(BASE . 'favicon.ico', 'favicon.ico');
         $zipdoorGets->addEmptyDir('cache');
         $zipdoorGets->addFile(BASE . 'cache/.htaccess', 'cache/.htaccess');
         $zipdoorGets->addFile(BASE . 'data/index.php', 'cache/index.php');
         $zipdoorGets->addEmptyDir('installer');
         $zipdoorGets->addFile(BASE . 'installer/.htaccess', 'installer/.htaccess');
         $zipdoorGets->addFile(BASE . 'data/index.php', 'installer/index.php');
         $zipdoorGets->addEmptyDir('io');
         $zipdoorGets->addFile(BASE . 'io/.htaccess', 'io/.htaccess');
         $zipdoorGets->addFile(BASE . 'data/index.php', 'io/index.php');
         if (!empty($this->doorGets->configWeb['saas_position'])) {
             $zipdoorGets->addEmptyDir($this->doorGets->configWeb['saas_position']);
             $zipdoorGets->addFile(BASE . 'io/index.php', $this->doorGets->configWeb['saas_position'] . 'index.php');
         } else {
             $zipdoorGets->addEmptyDir('cloud');
             $zipdoorGets->addFile(BASE . 'data/index.php', 'cloud/index.php');
         }
     }
     $zipdoorGets->close();
     $zipDatabase = new ZipDir();
     $resDatabase = $zipDatabase->open($zip_file_database, ZipArchive::CREATE);
     if ($resDatabase === TRUE) {
         // Création de la copie de la database
         $zipDatabase->addEmptyDir('database/');
         $groupBy = 1000;
         // Création des fichiers d'éxportation de la base
         foreach ($table as $name_table => $v) {
             if (!in_array($name_table, $arrayExclude)) {
                 $iTable = $this->dbQ('SELECT COUNT(*) as counter FROM ' . $name_table);
                 $table[$name_table]['count'] = (int) $iTable[0]['counter'];
                 $dirIoFile = 'database/' . $name_table . '/';
                 $zipDatabase->addEmptyDir($dirIoFile);
                 $totalPosition = 0;
                 if ($table[$name_table]['count'] > $groupBy) {
                     $totalPosition = ceil($table[$name_table]['count'] / $groupBy);
                 }
                 for ($i = 0; $i < $totalPosition + 1; $i++) {
                     $initPos = $i ? $groupBy * $i : 0;
                     $valContent = $this->dbQA($name_table, " LIMIT {$initPos}, {$groupBy}");
                     $sqlToSave = '';
                     $fileNameSaved = $dirIoFile . $name_table . '-' . $i . '.php';
                     $fileCache = $dirCache . $name_table . '-' . $i . '.php';
                     if (!empty($valContent)) {
                         $fp = fopen($fileCache, 'w');
                         $cValContentcount = count($valContent);
                         for ($j = 0; $j < $cValContentcount; $j++) {
                             //fwrite($fp, base64_encode(serialize($this->dbVQI($valContent[$j],$name_table))));
                             fwrite($fp, $this->dbVQI($valContent[$j], $name_table));
                         }
                         $zipDatabase->addFile($fileCache, $fileNameSaved);
                         fclose($fp);
                     }
                 }
             }
         }
         $tableInfo = serialize($table);
         file_put_contents($dirCache . 'doorgets.php', $tableInfo);
         $zipDatabase->addFile($dirCache . 'doorgets.php', 'database/doorgets.php');
         $zipDatabase->close();
     }
     $zipArchive = new ZipDir();
     $res = $zipArchive->open($zip_file, ZipArchive::CREATE);
     if ($res === TRUE) {
         $userInformation = serialize(array('user_id' => $this->doorGets->user['id'], 'pseudo' => $this->doorGets->user['pseudo']));
         $zipArchive->addFromString('setup/temp/_fromUser.php', $userInformation);
         $zipArchive->addDir(BASE . 'doorgets/installer/setup/setup/', 'setup');
         $zipArchive->addFile(BASE . 'doorgets/installer/setup/index.php', 'index.php');
         $zipArchive->addFile($zip_file_doorgets, 'setup/data/doorgets.zip');
         $zipArchive->addFile($zip_file_database, 'setup/data/database.zip');
         $zipArchive->close();
     }
     if (is_file($zip_file_doorgets)) {
         unlink($zip_file_doorgets);
     }
     if (is_file($zip_file_database)) {
         unlink($zip_file_database);
     }
     // Create json file for infos
     $this->dataInfo['file'] = $filename;
     $fileJson = json_encode($this->dataInfo);
     if (file_put_contents($json_file, $fileJson)) {
         return true;
     }
     return false;
 }