Back to Stream class

Method chmod

public bool
chmod
(mixed $filename = '', mixed $mode = 0)
Chmod wrapper
Parameters
  • string $filename File name.
  • mixed $mode Mode to use.
Returns
  • bool
Since
  • 1.7.0
Class: Stream
Project: Joomla

Method chmod - Source code

/**
 * Chmod wrapper
 *
 * @param   string  $filename  File name.
 * @param   mixed   $mode      Mode to use.
 *
 * @return  boolean
 *
 * @since   1.7.0
 */
public function chmod($filename = '', $mode = 0)
{
    if (!$filename) {
        if (!isset($this->filename) || !$this->filename) {
            $this->setError(Text::_('JLIB_FILESYSTEM_ERROR_STREAMS_FILENAME'));
            return false;
        }
        $filename = $this->filename;
    }
    // If no mode is set use the default
    if (!$mode) {
        $mode = $this->filemode;
    }
    $retval = false;
    // Capture PHP errors
    $php_errormsg = '';
    $track_errors = ini_get('track_errors');
    ini_set('track_errors', true);
    $sch = parse_url($filename, PHP_URL_SCHEME);
    // Scheme specific options; ftp's chmod support is fun.
    switch ($sch) {
        case 'ftp':
        case 'ftps':
            $res = FilesystemHelper::ftpChmod($filename, $mode);
            break;
        default:
            $res = chmod($filename, $mode);
            break;
    }
    // Seek, interestingly, returns 0 on success or -1 on failure
    if (!$res) {
        $this->setError($php_errormsg);
    } else {
        $retval = true;
    }
    // Restore error tracking to what it was before.
    ini_set('track_errors', $track_errors);
    // Return the result
    return $retval;
}