if (!file_exists($tempDir)) { MODXInstaller::quit('Unable to create directory: ' . $tempDir); } if (!is_readable($tempDir)) { MODXInstaller::quit('Unable to read from /temp directory'); } set_time_limit(0); $success = MODXInstaller::unZip(MODX_CORE_PATH, $source, $destination, $forcePclZip); if ($success !== true) { MODXInstaller::quit($success); } $directories = MODXInstaller::getDirectories(); $directories = MODXInstaller::normalize($directories); $sourceDir = $tempDir . '/' . MODXInstaller::getModxDir($tempDir); $sourceDir = MODXInstaller::normalize($sourceDir); MODXInstaller::copyFiles($sourceDir, $directories); unlink($source); if (!is_dir(MODX_BASE_PATH . 'setup')) { MODXInstaller::quit('File Copy Failed'); } MODXInstaller::removeFolder($tempDir, true); /* Clear cache files but not cache folder */ $path = MODX_CORE_PATH . 'cache'; if (is_dir($path)) { MODXInstaller::removeFolder($path, false); } unlink(basename(__FILE__)); /* Log upgrade in Manager Actions log */ include MODX_CORE_PATH . 'model/modx/modx.class.php'; $modx = new modX(); $modx->initialize('web');
public function testCopyFiles() { $dest = dirname(__FILE__) . '/' . 'temproot'; $dest = MODXInstaller::normalize($dest); MODXInstaller::removeFolder($dest, true); MODXInstaller::mmkdir($dest); $directories = $this->getDirectories($dest); $directories = MODXInstaller::normalize($directories); $tempDir = realPath(dirname(__FILE__)) . '/temp'; $sourceDir = $tempDir . '/' . MODXInstaller::getModxDir($tempDir); $sourceDir = MODXInstaller::normalize($sourceDir); MODXInstaller::copyFiles($sourceDir, $directories); $this->assertTrue(is_dir($dest . '/setup')); $this->assertTrue(is_dir($dest . '/setup/controllers')); $this->assertTrue(is_dir($dest . '/core')); $this->assertTrue(is_dir($dest . '/core/docs')); $this->assertTrue(is_dir($dest . '/manager')); $this->assertTrue(is_dir($dest . '/manager/controllers')); $this->assertTrue(is_dir($dest . '/connectors')); $this->assertTrue(is_dir($dest . '/connectors/security')); $this->assertTrue(is_dir($dest . '/myprocessors')); }