Продолжение темы поднятой в статьях
Часть1 и
часть2
Написал небольшой скрипт который сканирует рабочий проект и рядом в файлик складывает названия пустых папок, который при необходимости можно подправить руками. Если запустить скрипт с флагом create, то он создаст все эти папки.
#! /usr/bin/env php
<?php
/*
* создание базы с папками #php make.php scan
* создание папок по базе #php make.php create
*
*/
$current_dir = dirname(__FILE__).DIRECTORY_SEPARATOR;
$manager = new FolderManager($current_dir);
if($argv[1] == 'scan'){
$manager->scan();
} elseif($argv[1] == 'create'){
$manager->create();
}
class FolderManager{
protected static $folder_list = array();
protected static $current_dir;
protected static $filename = 'empty_folders.dat';
public function __construct($dir)
{
self::$current_dir = $dir;
}
public function scan()
{
$this->make(self::$current_dir);
$database = '';
if(count(self::$folder_list) == 0)
{
echo "empty folder not exist\n";exit;
}
foreach (self::$folder_list as $folder){
$database .= $folder."\n";
}
file_put_contents(self::$filename,$database);
}
private function make($path)
{
$h = opendir($path);
while (FALSE !== ($element = readdir($h)))
{
$path_in = $path.$element;
if ($element == '.' or $element == '..' or !is_dir($path_in))
{
continue;
}
if(count(scandir($path_in)) == 2)//если папка пуста
{
echo 'Adding: '.$path_in."\n";
self::$folder_list[] = str_replace(self::$current_dir,'',$path_in);
}
else
{
$this->make($path_in.DIRECTORY_SEPARATOR);
}
}
closedir($h);
}
public function create()
{
$folder_list = file(self::$filename);
if(count($folder_list) == 0)
{
echo "Database empty \n";exit;
}
foreach ($folder_list as $folder)
{
$folder = trim($folder);
if(!file_exists($folder)) {
if(mkdir($folder)) echo $folder." - Folder created\n";
} else {
echo $folder." - Folder exist\n";
}
}
}
}
Сканирование:
#php make.php scan
Создание папок:
#php make.php create
Комментарии (0)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.