paths = $paths; $this->dirmode = $dirmode; $this->errors = array(); } public function apply() { $success = true; foreach ($this->paths as $path) { if (false === file_exists($path)) { if (false === @mkdir($path)) { $this->errors[$path] = error_get_last(); $success = false; } else { $this->errors[$path] = null; $old = umask(0); chmod($path, $this->dirmode); umask($old); } } } return $success; } public function getSummary() { // This step is usually being used for directories which are required for the configuration but // are not defined in any way by the user. So there is no need to show a summary for this step. } public function getReport() { $okMessage = mt('setup', 'Directory "%s" in "%s" has been successfully created.'); $failMessage = mt('setup', 'Unable to create directory "%s" in "%s". An error occured:'); $report = ''; foreach ($this->paths as $path) { if (array_key_exists($path, $this->errors)) { if (is_array($this->errors[$path])) { $report .= '

' . sprintf($failMessage, basename($path), dirname($path)) . '

' . '

' . $this->errors[$path]['message'] . '

'; } else { $report .= '

' . sprintf($okMessage, basename($path), dirname($path)) . '

'; } } } return $report; } }