protected function mkdir($args)
{
$target = $args['target'];
$name = $args['name'];
$dirs = $args['dirs'];
if ($name === '' && !$dirs) {
return array('error' => $this->error(self::ERROR_INV_PARAMS, 'mkdir'));
}
if (($volume = $this->volume($target)) == false) {
return array('error' => $this->error(self::ERROR_MKDIR, $name, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target));
}
if ($dirs) {
sort($dirs);
$reset = null;
$mkdirs = array();
foreach ($dirs as $dir) {
$tgt =& $mkdirs;
$_names = explode('/', trim($dir, '/'));
foreach ($_names as $_key => $_name) {
if (!isset($tgt[$_name])) {
$tgt[$_name] = array();
}
$tgt =& $tgt[$_name];
}
$tgt =& $reset;
}
return ($res = $this->ensureDirsRecursively($volume, $target, $mkdirs)) === false ? array('error' => $this->error(self::ERROR_MKDIR, $name, $volume->error())) : array('added' => $res['stats'], 'hashes' => $res['hashes']);
} else {
return ($dir = $volume->mkdir($target, $name)) == false ? array('error' => $this->error(self::ERROR_MKDIR, $name, $volume->error())) : array('added' => array($dir));
}
}