private function dircopy(Gpf_Io_File $source, Gpf_Io_File $target) { if (!$source->isDirectory()) { $this->copyFile($source, $target); return; } if (!$target->isExists()) { $target->mkdir(true, $this->mode); } $dir = dir($source->getFileName()); $entries = array(); while (false !== ($entry = $dir->read())) { $entries[] = $entry; } $dir->close(); sort($entries); foreach ($entries as $entry) { if ($entry == '.' || $entry == '..' || $entry == '.svn') { continue; } $newSource = new Gpf_Io_File(rtrim($source->getFileName(), '/') . '/' . $entry); $newTarget = new Gpf_Io_File(rtrim($target->getFileName(), '/') . '/' . $entry); if ($newSource->isDirectory()) { $this->dircopy($newSource, $newTarget); continue; } $this->copyFile($newSource, $newTarget); } }
/** * @return Gpf_Io_File */ private function loadFile($fileName) { $file = new Gpf_Io_File($this->siteDir->getFileName().$fileName); if ($file->isDirectory()) { $file = $this->findIndexFiles($file, array('index.php', 'index.html', 'index.htm')); } if (!$file->isExists()) { throw new Gpf_Exception(sprintf('404 File not found \'%s\'', $fileName)); } return $file; }
private function loadSubfilesFiles($fileUrl, Gpf_Data_RecordSet $result, $directories = false) { foreach (new Gpf_Io_DirectoryIterator($fileUrl, '', false, $directories) as $fullFileName => $file) { $file = new Gpf_Io_File($fullFileName); if ($file->isDirectory()) { $filesData = $this->getFilesData($fullFileName); $result->add(array($fullFileName, $filesData['count'], $file->getName(), $filesData['size'], self::TYPE_DIRECTORY)); continue; } $result->add(array($fullFileName, 0, $file->getName(), $file->getSize(), self::TYPE_FILE)); } }
private static function resolveCompileDirInInstallMode() { $tempDir = new Gpf_Io_File(str_replace('\\', '/', self::getSysTempDir())); if ($tempDir->isDirectory() && $tempDir->isWritable()) { return $tempDir->getFileName(); } $accountsDir = new Gpf_Io_File(Gpf_Paths::getInstance()->getFullBaseServerPath() . Gpf_Paths::ACCOUNTS_DIR); if ($accountsDir->isDirectory() && $accountsDir->isWritable()) { return self::getTempInAccountsDir(); } return self::INSTALL_STREAM . '://:'; }