*/ class Carousel extends BaseModule { const DOMAIN_NAME = 'carousel'; public function preActivation(ConnectionInterface $con = null) { if (! self::getConfigValue('is_initialized', false)) { $database = new Database($con); $database->insertSql(null, array(__DIR__ . '/Config/thelia.sql')); self::setConfigValue('is_initialized', true); } return true; } public function destroy(ConnectionInterface $con = null, $deleteModuleData = false) { $database = new Database($con); $database->insertSql(null, array(__DIR__ . '/Config/sql/destroy.sql')); } public function getUploadDir() { $uploadDir = ConfigQuery::read('images_library_path'); if ($uploadDir === null) { $uploadDir = THELIA_LOCAL_DIR . 'media' . DS . 'images'; } else { $uploadDir = THELIA_ROOT . $uploadDir; } return $uploadDir . DS . self::DOMAIN_NAME; } /** * @param string $currentVersion * @param string $newVersion * @param ConnectionInterface $con * @author Thomas Arnaud */ public function update($currentVersion, $newVersion, ConnectionInterface $con = null) { $uploadDir = $this->getUploadDir(); $fileSystem = new Filesystem(); if (!$fileSystem->exists($uploadDir) && $fileSystem->exists(__DIR__ . DS . 'media' . DS . 'carousel')) { $finder = new Finder(); $finder->files()->in(__DIR__ . DS . 'media' . DS . 'carousel'); $fileSystem->mkdir($uploadDir); /** @var SplFileInfo $file */ foreach ($finder as $file) { copy($file, $uploadDir . DS . $file->getRelativePathname()); } $fileSystem->remove(__DIR__ . DS . 'media'); } $finder = (new Finder())->files()->name('#.*?\.sql#')->sortByName()->in(__DIR__ . DS . 'Config' . DS .'update'); if (0 === $finder->count()) { return; } $database = new Database($con); // apply update only if table exists if ($database->execute("SHOW TABLES LIKE 'carousel'")->rowCount() === 0) { return; } /** @var SplFileInfo $updateSQLFile */ foreach ($finder as $updateSQLFile) { if (version_compare($currentVersion, str_replace('.sql', '', $updateSQLFile->getFilename()), '<')) { $database->insertSql(null, [$updateSQLFile->getPathname()]); } } } }