public function __construct()
 {
     $this->path = STORAGE_DIR . 'Cache/';
     if (!isDirExists($this->path)) {
         library('Folder', 'create', array($this->path, 0777));
     }
 }
示例#2
0
 public function exec()
 {
     try {
         /* check installed module */
         if (false === isInstalled($this->parm)) {
             /* target module is already installed */
             throw new \err\ComErr('specified module is not installed', 'please check \'spac mod list\'');
         }
         /* confirm */
         echo 'Uninstall ' . $this->parm . ' module.' . PHP_EOL;
         echo 'Are you sure ?(y,n):';
         $line = rtrim(fgets(STDIN), "\n");
         if (!(0 === strcmp($line, 'y') || 0 === strcmp($line, 'Y'))) {
             exit;
         }
         /* delete module files */
         if (true === isDirExists(__DIR__ . '/../../mod/' . $this->parm)) {
             try {
                 delDir(__DIR__ . '/../../mod/' . $this->parm);
             } catch (\Exception $e) {
                 throw new \err\ComErr('could not delete ' . __DIR__ . '/../../mod/' . $this->parm, 'please check directory');
             }
         }
         /* edit module config */
         $modcnf = yaml_parse_file(__DIR__ . '/../../../../conf/module.yml');
         if (false === $modcnf) {
             throw new \err\ComErr('could not read module config file', 'please check ' . __DIR__ . '/../../../../conf/module.yml');
         }
         $newcnf = array();
         foreach ($modcnf as $elm) {
             if (0 === strcmp($this->parm, $elm['name'])) {
                 continue;
             }
             $newcnf[] = $elm;
         }
         if (0 === count($newcnf)) {
             $newcnf = null;
         }
         if (false === copy(__DIR__ . '/../../../../conf/module.yml', __DIR__ . '/../../../../conf/module.yml_')) {
             throw new \err\ComErr('could not create backup of module config', 'please check ' . __DIR__ . '/../../../../conf');
         }
         if (false === file_put_contents(__DIR__ . '/../../../../conf/module.yml', yaml_emit($newcnf))) {
             throw new \err\ComErr('could not edit module config file', 'please check ' . __DIR__ . '/../../../../conf/module.yml');
         }
         unlink(__DIR__ . '/../../../../conf/module.yml_');
         echo 'Successful uninstall ' . $this->parm . ' module ' . PHP_EOL;
     } catch (\Exception $e) {
         throw $e;
     }
 }
示例#3
0
 public function deleteEmpty($name = '')
 {
     if (!is_string($name)) {
         $name = '';
     }
     if (isDirExists($name)) {
         rmdir($name);
     } else {
         $this->error = lang('Folder', 'notFoundError', $name);
         Error::set($this->error);
     }
 }
示例#4
0
 public static function package($packages = "", $differentExtension = array())
 {
     if (!is_string($packages) || !isDirExists($packages) || !is_array($differentExtension)) {
         Error::set(lang('Error', 'stringParameter', 'packages'));
         Error::set(lang('Error', 'dirParameter', 'packages'));
         Error::set(lang('Error', 'arrayParameter', 'differentExtension'));
         return false;
     }
     if (Folder::files($packages)) {
         foreach (Folder::files($packages) as $val) {
             if (extension($val) === "php") {
                 require_once suffix($packages) . $val;
             } elseif (extension($val) === "js") {
                 echo '<script type="text/javascript" src="' . baseUrl() . suffix($packages) . $val . '"></script>' . eol();
             } elseif (extension($val) === "css") {
                 echo '<link href="' . baseUrl() . suffix($packages) . $val . '" rel="stylesheet" type="text/css" />' . eol();
             } else {
                 if (!empty($differentExtension)) {
                     if (in_array(extension($val), $differentExtension)) {
                         require_once suffix($packages) . $val;
                     }
                 }
             }
         }
     } else {
         return false;
     }
 }
示例#5
0
文件: file.php 项目: simpart/trut
function copyDir($src, $dst)
{
    try {
        /* check source directory */
        if (false === isDirExists($src)) {
            throw new \Exception('could not find source directory');
        }
        /* check destination directory */
        if (false === isDirExists($dst)) {
            if (false === mkdir($dst)) {
                throw new \Exception('could not create destination directory');
            }
        }
        $scan = scandir($src);
        foreach ($scan as $elm) {
            if (0 === strcmp($elm, '.') || 0 === strcmp($elm, '..')) {
                continue;
            }
            $ftype = filetype($src . '/' . $elm);
            if (0 === strcmp($ftype, 'dir')) {
                copyDir($src . '/' . $elm, $dst . '/' . $elm);
            } else {
                if (false === copy($src . '/' . $elm, $dst . '/' . $elm)) {
                    throw new \Exception('could not copy \'' . $src . '/' . $elm . '\'' . ' to \'' . $dst . '\'');
                }
            }
        }
    } catch (\Exception $e) {
        throw $e;
    }
}
示例#6
0
 private static function searchClassMap($directory = '', $baseDirectory = '')
 {
     static $classes;
     // Dizin parametreleri / eki içermiyorsa
     // dizin bilgisinin sonuna / ekini ekle.
     $directory = suffix($directory);
     $baseDirectory = suffix($baseDirectory);
     // Dizine ait alt dosya ve dizinler alınıyor...
     $files = glob($directory . '*');
     if (!empty($files)) {
         foreach ($files as $v) {
             // Sadece .php uzantılı dosyalar için işlem yap.
             if (is_file($v) && extension($v) === 'php') {
                 $classEx = explode('/', $v);
                 // Sınıf isimleri ve yolları oluşturuluyor...
                 $classInfo = self::tokenClassFileInfo($v);
                 if (isset($classInfo['class'])) {
                     $class = strtolower($classInfo['class']);
                     // İsim alanı varsa oluşturuluyor...
                     if (isset($classInfo['namespace'])) {
                         // İsim alanını oluştur.
                         $className = strtolower($classInfo['namespace']) . '\\' . $class;
                         $classes['namespaces'][$className] = $class;
                     } else {
                         $className = $class;
                     }
                     $classes['classes'][$className] = $v;
                     $useStaticAccess = strtolower(STATIC_ACCESS);
                     // Statik erişim sağlanmak istenen
                     // Statik olmayan sınıfların
                     // sınıf adına Static ön eki getirilerek
                     // bu sınıfların statik kullanımlarının oluşturulması
                     // sağlanabilir.
                     if (strpos($class, $useStaticAccess) === 0) {
                         // Yeni sınıf ismi oluşturuluyor...
                         $newClassName = str_ireplace($useStaticAccess, '', $classInfo['class']);
                         // Yeni sınıf dizini oluşturuluyor...
                         $newPath = str_ireplace($baseDirectory, '', $v);
                         // Yeni StaticAccess/ dizin yolu oluşturuluyor...
                         $pathEx = explode('/', $newPath);
                         array_pop($pathEx);
                         $newDir = implode('/', $pathEx);
                         $dir = SYSTEM_LIBRARIES_DIR . 'StaticAccess/';
                         $newDir = $dir . $newDir;
                         if (!isDirExists($dir)) {
                             mkdir($dir, 0777, true);
                         }
                         // Oluşturulacak dizinin var olup olmadığı
                         // kontrol ediliyor...
                         if (!isDirExists($newDir)) {
                             // StaticAccess/ dizini içi sınıf dizini oluşturuluyor...
                             mkdir($newDir, 0777, true);
                         }
                         $path = suffix($newDir) . $classInfo['class'] . '.php';
                         // Oluşturulacak dosyanın var olup olmadığı
                         // kontrol ediliyor...
                         if (!file_exists($path)) {
                             // Statik sınıf içeriği oluşturuluyor....
                             $classContent = '<?php' . eol();
                             $classContent .= 'class ' . $newClassName . ' extends StaticAccess' . eol();
                             $classContent .= '{' . eol();
                             $classContent .= "\t" . 'public static function getClassName()' . eol();
                             $classContent .= "\t" . '{' . eol();
                             $classContent .= "\t\t" . 'return __CLASS__;' . eol();
                             $classContent .= "\t" . '}' . eol();
                             $classContent .= '}';
                             // Dosya yazdırılıyor...
                             $fileOpen = fopen($path, 'w');
                             $fileWrite = fwrite($fileOpen, $classContent);
                             if (empty($fileWrite)) {
                                 die(getErrorMessage('Error', 'fileNotWrite', $path));
                             }
                             fclose($fileOpen);
                         }
                         $classes['classes'][strtolower($newClassName)] = $path;
                     }
                 }
             } elseif (is_dir($v)) {
                 // Yol bir dizini ifade ediyorsa taramaya devam et.
                 self::searchClassMap($v, $baseDirectory);
             }
         }
     }
     return $classes;
 }