PHP Classes

File: uploads/elfinder/php/elFinderConnector.class.php

Recommend this page to a friend!
  Classes of Minh Tien   Noblesse CMS   uploads/elfinder/php/elFinderConnector.class.php   Download  
File: uploads/elfinder/php/elFinderConnector.class.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Noblesse CMS
Content management system with custom plugins
Author: By
Last change:
Date: 9 years ago
Size: 3,128 bytes
 

Contents

Class file image Download
<?php

/**
 * Default elFinder connector
 *
 * @author Dmitry (dio) Levashov
 **/
class elFinderConnector {
   
/**
     * elFinder instance
     *
     * @var elFinder
     **/
   
protected $elFinder;
   
   
/**
     * Options
     *
     * @var aray
     **/
   
protected $options = array();
   
   
/**
     * undocumented class variable
     *
     * @var string
     **/
   
protected $header = 'Content-Type: application/json';
   
   
   
/**
     * Constructor
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
   
public function __construct($elFinder, $debug=false) {
       
       
$this->elFinder = $elFinder;
        if (
$debug) {
           
$this->header = 'Content-Type: text/html; charset=utf-8';
        }
    }
   
   
/**
     * Execute elFinder command and output result
     *
     * @return void
     * @author Dmitry (dio) Levashov
     **/
   
public function run() {
       
$isPost = $_SERVER["REQUEST_METHOD"] == 'POST';
       
$src = $_SERVER["REQUEST_METHOD"] == 'POST' ? $_POST : $_GET;
       
$cmd = isset($src['cmd']) ? $src['cmd'] : '';
       
$args = array();
       
        if (!
function_exists('json_encode')) {
           
$error = $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_JSON);
           
$this->output(array('error' => '{"error":["'.implode('","', $error).'"]}', 'raw' => true));
        }
       
        if (!
$this->elFinder->loaded()) {
           
$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_VOL), 'debug' => $this->elFinder->mountErrors));
        }
       
       
// telepat_mode: on
       
if (!$cmd && $isPost) {
           
$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UPLOAD, elFinder::ERROR_UPLOAD_TOTAL_SIZE), 'header' => 'Content-Type: text/html'));
        }
       
// telepat_mode: off
       
       
if (!$this->elFinder->commandExists($cmd)) {
           
$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UNKNOWN_CMD)));
        }
       
       
// collect required arguments to exec command
       
foreach ($this->elFinder->commandArgsList($cmd) as $name => $req) {
           
$arg = $name == 'FILES'
               
? $_FILES
               
: (isset($src[$name]) ? $src[$name] : '');
               
            if (!
is_array($arg)) {
               
$arg = trim($arg);
            }
            if (
$req && (!isset($arg) || $arg === '')) {
               
$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_INV_PARAMS, $cmd)));
            }
           
$args[$name] = $arg;
        }
       
       
$args['debug'] = isset($src['debug']) ? !!$src['debug'] : false;
       
       
$this->output($this->elFinder->exec($cmd, $args));
    }
   
   
/**
     * Output json
     *
     * @param array data to output
     * @return void
     * @author Dmitry (dio) Levashov
     **/
   
protected function output(array $data) {
       
$header = isset($data['header']) ? $data['header'] : $this->header;
        unset(
$data['header']);
        if (
$header) {
            if (
is_array($header)) {
                foreach (
$header as $h) {
                   
header($h);
                }
            } else {
               
header($header);
            }
        }
       
        if (isset(
$data['pointer'])) {
           
rewind($data['pointer']);
           
fpassthru($data['pointer']);
            if (!empty(
$data['volume'])) {
               
$data['volume']->close($data['pointer'], $data['info']['hash']);
            }
            exit();
        } else {
            if (!empty(
$data['raw']) && !empty($data['error'])) {
                exit(
$data['error']);
            } else {
                exit(
json_encode($data));
            }
        }
       
    }
   
}
// END class