getRelative() public static method

Find relative path of file (remove root part)
public static getRelative ( string $filePath, string | null $rootPath = null, string $forceDS = DIRECTORY_SEPARATOR, boolean $toRealpath = true ) : mixed
$filePath string
$rootPath string | null
$forceDS string
$toRealpath boolean
return mixed
Example #1
0
File: Leafo.php Project: jbzoo/less
 /**
  * {@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);
 }
Example #2
0
 /**
  * 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);
 }
Example #3
0
File: Path.php Project: JBZoo/Path
 /**
  * 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;
 }
Example #4
0
File: Cache.php Project: jbzoo/less
 /**
  * @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;
 }
Example #5
0
 /**
  * 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();
     }
 }
Example #6
0
 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, '\\'));
 }