<?php

/**
 * elFinder driver for Volume Group.
 *
 * @author Naoki Sawada
 **/
class elFinderVolumeGroup extends elFinderVolumeDriver
{

    /**
     * Driver id
     * Must be started from letter and contains [a-z0-9]
     * Used as part of volume id
     *
     * @var string
     **/
    protected $driverId = 'g';


    /**
     * Constructor
     * Extend options with required fields
     */
    public function __construct()
    {
        $this->options['type'] = 'group';
        $this->options['path'] = '/';
        $this->options['dirUrlOwn'] = true;
        $this->options['syncMinMs'] = 0;
        $this->options['tmbPath'] = '';
        $this->options['disabled'] = array(
            'archive',
            'copy',
            'cut',
            'duplicate',
            'edit',
            'empty',
            'extract',
            'getfile',
            'mkdir',
            'mkfile',
            'paste',
            'resize',
            'rm',
            'upload'
        );
    }

    /*********************************************************************/
    /*                               FS API                              */
    /*********************************************************************/

    /*********************** paths/urls *************************/

    /**
     * @inheritdoc
     **/
    protected function _dirname($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _basename($path)
    {
        return '';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _joinPath($dir, $name)
    {
        return '/' . $name;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _normpath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _relpath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _abspath($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _path($path)
    {
        return '/';
    }

    /**
     * {@inheritDoc}
     **/
    protected function _inpath($path, $parent)
    {
        return false;
    }



    /***************** file stat ********************/

    /**
     * {@inheritDoc}
     **/
    protected function _stat($path)
    {
        if ($path === '/') {
            return array(
                'size' => 0,
                'ts' => 0,
                'mime' => 'directory',
                'read' => true,
                'write' => false,
                'locked' => true,
                'hidden' => false,
                'dirs' => 0
            );
        }
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _subdirs($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _dimensions($path, $mime)
    {
        return false;
    }
    /******************** file/dir content *********************/

    /**
     * {@inheritDoc}
     **/
    protected function readlink($path)
    {
        return null;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _scandir($path)
    {
        return array();
    }

    /**
     * {@inheritDoc}
     **/
    protected function _fopen($path, $mode = 'rb')
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _fclose($fp, $path = '')
    {
        return true;
    }

    /********************  file/dir manipulations *************************/

    /**
     * {@inheritDoc}
     **/
    protected function _mkdir($path, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _mkfile($path, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _symlink($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _copy($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _move($source, $targetDir, $name)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _unlink($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _rmdir($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _save($fp, $dir, $name, $stat)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _getContents($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _filePutContents($path, $content)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _checkArchivers()
    {
        return;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _chmod($path, $mode)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _findSymlinks($path)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _extract($path, $arc)
    {
        return false;
    }

    /**
     * {@inheritDoc}
     **/
    protected function _archive($dir, $files, $name, $arc)
    {
        return false;
    }
}