diff --git a/src/bin/d3cleartmp b/src/bin/d3cleartmp new file mode 100644 index 0000000..6d9745b --- /dev/null +++ b/src/bin/d3cleartmp @@ -0,0 +1,135 @@ +#!/usr/bin/env php + + * @link http://www.oxidmodule.com + */ + +namespace D3\ModCfg; + +use D3\ModCfg\Application\Model\Maintenance\d3clrtmp; +use OxidEsales\Eshop\Core\Module\Module; +use splitbrain\phpcli\CLI; +use splitbrain\phpcli\Options; + +// @codeCoverageIgnoreStart + +$bootstrapFileName = getenv('ESHOP_BOOTSTRAP_PATH'); +if (!empty($bootstrapFileName)) { + $bootstrapFileName = realpath(trim(getenv('ESHOP_BOOTSTRAP_PATH'))); +} else { + $count = 0; + $bootstrapFileName = '../../../../../source/bootstrap.php'; + $currentDirectory = __DIR__ . '/'; + while ($count < 5) { + $count++; + if (file_exists($currentDirectory . $bootstrapFileName)) { + $bootstrapFileName = $currentDirectory . $bootstrapFileName; + break; + } + $bootstrapFileName = '../' . $bootstrapFileName; + } +} + +if (!(file_exists($bootstrapFileName) && !is_dir($bootstrapFileName))) { + $items = [ + "Unable to find eShop bootstrap.php file.", + "You can override the path by using ESHOP_BOOTSTRAP_PATH environment variable.", + "\n" + ]; + + $message = implode(" ", $items); + + die($message); +} + +require_once($bootstrapFileName); + + +class d3cleartmp extends CLI +{ + // register options and arguments + protected function setup(Options $options) + { + $options->setHelp('delete objects from temporary folder'); + $options->registerOption('version', 'print version', 'v'); + $options->registerOption('silent', 'prevents output from being displayed', 's'); + $options->registerArgument('type', 'possible types are: all, templates, database, language, menu, classpath, structure, tagcloud, seo, module', false); + } + + /** + * @param Options $options + */ + protected function main(Options $options) + { + $args = $options->getArgs(); + + if ($options->getOpt('version')) { + $oModule = oxNew(Module::class); + $oModule->load('d3modcfg_lib'); + $this->info($oModule->getModuleData()['version']); + } elseif (count($args)) { + try { + switch (strtolower($args[0])) { + case 'all': + $sTypeMethod = 'clearAllCache'; + break; + case 'templates': + $sTypeMethod = 'clearFrontendCache'; + break; + case 'database': + $sTypeMethod = 'clearDataBaseStructCache'; + break; + case 'language': + $sTypeMethod = 'clearLangCache'; + break; + case 'menu': + $sTypeMethod = 'clearMenuCache'; + break; + case 'classpath': + $sTypeMethod = 'clearClassPathCache'; + break; + case 'structure': + $sTypeMethod = 'clearStructureCache'; + break; + case 'tagcloud': + $sTypeMethod = 'clearTagcloudCache'; + break; + case 'seo': + $sTypeMethod = 'clearSeoCache'; + break; + case 'module': + $sTypeMethod = 'clearModuleCache'; + break; + default: + $this->error('no valid type defined'); + } + + if ($sTypeMethod) { + $controller = oxNew( d3clrtmp::class); + call_user_func_array(array($controller, $sMethodName)); + } + } catch (\Exception $oEx) { + ob_end_flush(); + $this->error($oEx->getMessage()); + } + + } else { + echo $options->help(); + } + } +} + +$cli = new d3cleartmp(); +$cli->run();