/** * {@inheritdoc} */ public function setImportPath($fullPath, $relPath = null) { $this->_initCompiler(); if (!FS::isDir($fullPath)) { throw new Exception('Undefined import path: ' . $fullPath); } $fullPath = FS::getRelative($fullPath, $this->_options->get('root_path')); $this->_compiler->addImportDir($fullPath); }
/** * Progress wrapper (if use stepmode). * * @param string $name * @param int $total * @param int $stepSize * @param \Closure $onStart * @param \Closure $onStepMode * @param \Closure $onFinish */ protected function _progressWrap($name, $total, $stepSize, $onStart, $onStepMode, $onFinish) { $_this = $this; $step = $this->_getOpt('step'); $profile = $this->_getOpt('profile'); $stepMode = $this->_getOpt('stepmode'); $isFinished = false; if ($stepMode) { if ($step >= 0) { $onStepMode($step); } else { $this->_progressBar($name, $total, $stepSize, function ($currentStep) use($profile, $total, $_this, $name) { $phpBin = Env::getBinary(); $binPath = './' . FS::getRelative($_SERVER['SCRIPT_FILENAME'], JPATH_ROOT, '/'); $options = array('profile' => $profile, 'step' => (int) $currentStep, 'stepmode' => '', 'q' => ''); $command = $phpBin . ' ' . $binPath . ' ' . $name; $result = Cli::exec($command, $options, JPATH_ROOT, false); if (0 && $this->_isDebug()) { $_this->_($result); } return $currentStep <= $total; }); $isFinished = true; } } else { $isFinished = $onStart(); } $onFinish($isFinished); }
/** * Get list of relative path to file or directory * * @param string $source (example: "default:*.txt") * @return null|string */ public function relGlob($source) { $list = (array) $this->glob($source); foreach ($list as $key => $item) { $list[$key] = FS::getRelative($item, $this->_root, '/'); } return $list; }
/** * @return string */ protected function _getResultFile() { $relPath = FS::getRelative($this->_less, $this->_options->get('root_path')); // Normalize relative path $relPath = Slug::filter($relPath, '_'); $relPath = Str::low($relPath); // Gett full clean path $fullPath = FS::real($this->_options->get('cache_path')) . '/' . $relPath . '.css'; $fullPath = FS::clean($fullPath); return $fullPath; }
/** * Execute method of command * * @param InputInterface $input * @param OutputInterface $output * @return int|null|void * * @SuppressWarnings(PHPMD.Superglobals) * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function execute(InputInterface $input, OutputInterface $output) { $this->_executePrepare($input, $output); $this->_init(); // Prepare if ((int) $this->_config->get('reindex', 0)) { $this->_('Database ReIndex = true', 'info'); $_GET['controller'] = $_REQUEST['controller'] = 'cli-import'; // emulate browser and admin CP } else { $this->_('Database ReIndex = false', 'info'); $_GET['controller'] = $_REQUEST['controller'] = 'jbimport'; // emulate browser and admin CP } $stepMode = $this->_getOpt('stepmode'); $step = $this->_getOpt('step'); $profileName = $this->_getOpt('profile'); $csvInfo = $this->_getCsvInfo(); $sesData = $this->_initJoomlaSession($csvInfo); $stepSize = $this->_getStepSize(); $rowsCount = $sesData['count']; $stepsCount = (int) ceil($rowsCount / $stepSize); if ($stepsCount <= 0) { $this->_('Count of steps is <= 0', 'Error', 1); } $this->_showProfiler('Import - prepared'); $this->_('CSV File: ' . $csvInfo['path'], 'Info'); $this->_('CSV lines: ' . $csvInfo['count'], 'Info'); $this->_('Step size: ' . $stepSize, 'Info'); $this->_('Steps count: ' . $stepsCount, 'Info'); $this->_('Step mode: ' . ($stepMode ? 'on' : 'off'), 'Info'); // Show progress bar and run process $jbimport = $this->_jbimport; $_this = $this; $isFinished = false; if ($stepMode) { if ($step >= 0) { $jbimport->itemsProcess($step); $this->_addTmpData($this->_jbsession->get('ids', 'import-ids')); } else { $this->_cleanTmpData(); $this->_progressBar('import', $stepsCount, 1, function ($currentStep) use($jbimport, $stepsCount, $profileName, $_this) { $phpBin = Env::getBinary(); $binPath = './' . FS::getRelative($_SERVER['SCRIPT_FILENAME'], JPATH_ROOT, '/'); $options = array('profile' => $profileName, 'step' => (int) $currentStep, 'stepmode' => '', 'q' => ''); $result = Cli::exec($phpBin . ' ' . $binPath . ' import:items', $options, JPATH_ROOT, false); if (0 && $this->_isDebug()) { $_this->_($result); } return $currentStep <= $stepsCount; }); $this->_jbsession->set('ids', $this->_getTmpData(), 'import-ids'); $isFinished = true; } } else { $this->_progressBar('import', $stepsCount, 1, function ($currentStep) use($jbimport) { $result = $jbimport->itemsProcess($currentStep); return $result['progress'] >= 100 ? false : true; }); $isFinished = true; } if ($isFinished) { $this->_showProfiler('Import - finished'); // Remove or disable other items $this->_jbsession->set('ids', $this->_getTmpData(), 'import-ids'); $this->_postImport(); $this->_showProfiler('Import - Post handler'); $this->_moveCsvFile($csvInfo['path']); $this->_showProfiler('Import - Done!'); $this->_cleanTmpData(); } }
public function testGetRelative() { $file = __FILE__; $root = __DIR__; isSame('FileSystemTest.php', FS::getRelative($file, $root, '/')); isSame('FileSystemTest.php', FS::getRelative($file, $root, '\\')); $root = __DIR__ . '/..'; isSame('tests/FileSystemTest.php', FS::getRelative($file, $root, '/')); isSame('tests\\FileSystemTest.php', FS::getRelative($file, $root, '\\')); $root = null; isSame('tests/FileSystemTest.php', FS::getRelative($file, $root, '/')); isSame('tests\\FileSystemTest.php', FS::getRelative($file, $root, '\\')); }