app\helpers\FileWorker::copy PHP Метод

copy() публичный статический Метод

public static copy ( $source, $target )
    public static function copy($source, $target)
    {
        if (!is_dir($source)) {
            //it is a file, do a normal copy
            if (!copy($source, $target)) {
                return false;
            }
            return true;
        }
        //it is a folder, copy its files & sub-folders
        if (!self::mkDir($target)) {
            return false;
        }
        $d = dir($source);
        $navFolders = array('.', '..');
        while (false !== ($fileEntry = $d->read())) {
            //copy one by one
            //skip if it is navigation folder . or ..
            if (in_array($fileEntry, $navFolders)) {
                continue;
            }
            //do copy
            $s = "{$source}/{$fileEntry}";
            $t = "{$target}/{$fileEntry}";
            self::copy($s, $t);
        }
        $d->close();
        return true;
    }

Usage Example

Пример #1
0
 public function doAdd($req, $res)
 {
     $params = new RequestParams($req);
     $name = $params->post('name');
     $sys_name = $params->post('system_name');
     $desc = $params->post('description');
     $version = $params->post('version');
     $author = $params->post('author');
     $sys_name = preg_replace("/[^A-Za-z0-9_]/", "", $sys_name);
     if (!$sys_name) {
         $this->flash->addMessage('errors', 'Module system_name is empty!');
         return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator'));
     }
     $sys_name = Str::studly($sys_name);
     if (is_dir(MODULE_PATH . $sys_name)) {
         $this->flash->addMessage('errors', 'Module exist!');
         return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator'));
     }
     $path = MODULE_PATH . $sys_name;
     if (!FileWorker::copy(MODULE_PATH . 'ModuleGenerator' . DIRECTORY_SEPARATOR . 'Source' . DIRECTORY_SEPARATOR . '.default', $path)) {
         $this->flash->addMessage('errors', 'Module dir \\"' . MODULE_PATH . '\\" - is write protect. Check permissions!');
         return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator'));
     }
     $ret = FileWorker::replaseInFile($path . '/info.json', ["%name%", "%description%", "%system_name%", "%version%", "%author%"], [$name, $desc, $sys_name, $version, $author]);
     if ($ret === false) {
         $this->flash->addMessage('errors', 'Replace file content for \\"' . $path . '/info.json' . '\\" - is write protect. Check permissions!');
         return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator'));
     }
     $ret = FileWorker::replaseInFile($path . '/Module.php', ["%system_name%"], [$sys_name]);
     if ($ret === false) {
         $this->flash->addMessage('errors', 'Replace file content for \\"' . $path . '/Module.php' . '\\" - is write protect. Check permissions!');
         return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator'));
     }
     $this->flash->addMessage('success', 'Module create!');
     return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('developers.module.generator'));
 }