/var/www/hkosl.com/demo_google/assets/libraries/elFinder-2.1.32/php/connector.minimal.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<?php
    
//exit;
    //check admin login
    
if (session_status() == PHP_SESSION_NONE) {
        
session_start();
    }

    if (!isset(
$_SESSION["ELFINDER"])) {
        exit(
_('Please login system first.'));
    }

    
error_reporting(0); // Set E_ALL for debuging

// load composer autoload before load elFinder autoload If you need composer
//require './vendor/autoload.php';

// elFinder autoload
    
require './autoload.php';
// ===============================================

// Enable FTP connector netmount
// elFinder::$netDrivers['ftp'] = 'FTP';
// ===============================================

// // Required for Dropbox network mount
// // Installation by composer
// // `composer require kunalvarma05/dropbox-php-sdk`
// // Enable network mount
// elFinder::$netDrivers['dropbox2'] = 'Dropbox2';
// // Dropbox2 Netmount driver need next two settings. You can get at https://www.dropbox.com/developers/apps
// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL?cmd=netmount&protocol=dropbox2&host=1"
// define('ELFINDER_DROPBOX_APPKEY',    '');
// define('ELFINDER_DROPBOX_APPSECRET', '');
// ===============================================

// // Required for Google Drive network mount
// // Installation by composer
// // `composer require google/apiclient:^2.0`
// // Enable network mount
// elFinder::$netDrivers['googledrive'] = 'GoogleDrive';
// // GoogleDrive Netmount driver need next two settings. You can get at https://console.developers.google.com
// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL?cmd=netmount&protocol=googledrive&host=1"
// define('ELFINDER_GOOGLEDRIVE_CLIENTID',     '');
// define('ELFINDER_GOOGLEDRIVE_CLIENTSECRET', '');
// // Required case of without composer
// define('ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT', '/path/to/google-api-php-client/vendor/autoload.php');
// ===============================================

// // Required for Google Drive network mount with Flysystem
// // Installation by composer
// // `composer require nao-pon/flysystem-google-drive:~1.1 nao-pon/elfinder-flysystem-driver-ext`
// // Enable network mount
// elFinder::$netDrivers['googledrive'] = 'FlysystemGoogleDriveNetmount';
// // GoogleDrive Netmount driver need next two settings. You can get at https://console.developers.google.com
// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL?cmd=netmount&protocol=googledrive&host=1"
// define('ELFINDER_GOOGLEDRIVE_CLIENTID',     '');
// define('ELFINDER_GOOGLEDRIVE_CLIENTSECRET', '');
// ===============================================

// // Required for One Drive network mount
// //  * cURL PHP extension required
// //  * HTTP server PATH_INFO supports required
// // Enable network mount
// elFinder::$netDrivers['onedrive'] = 'OneDrive';
// // GoogleDrive Netmount driver need next two settings. You can get at https://dev.onedrive.com
// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL/netmount/onedrive/1"
// define('ELFINDER_ONEDRIVE_CLIENTID',     '');
// define('ELFINDER_ONEDRIVE_CLIENTSECRET', '');
// ===============================================

// // Required for Box network mount
// //  * cURL PHP extension required
// // Enable network mount
// elFinder::$netDrivers['box'] = 'Box';
// // Box Netmount driver need next two settings. You can get at https://developer.box.com
// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL"
// define('ELFINDER_BOX_CLIENTID',     '');
// define('ELFINDER_BOX_CLIENTSECRET', '');
// ===============================================


// // Zoho Office Editor APIKey
// // https://www.zoho.com/docs/help/office-apis.html
// define('ELFINDER_ZOHO_OFFICE_APIKEY', '');
// ===============================================

    /**
     * Simple function to demonstrate how to control file access using "accessControl" callback.
     * This method will disable accessing files/folders starting from '.' (dot)
     *
     * @param  string    $attr    attribute name (read|write|locked|hidden)
     * @param  string    $path    absolute file path
     * @param  string    $data    value of volume option `accessControlData`
     * @param  object    $volume  elFinder volume driver object
     * @param  bool|null $isDir   path is directory (true: directory, false: file, null: unknown)
     * @param  string    $relpath file path relative to volume root directory started with directory separator
     *
     * @return bool|null
     **/
    
function access($attr$path$data$volume$isDir$relpath)
    {
        
$basename basename($path);
        return 
$basename[0] === '.'                  // if file/folder begins with '.' (dot)
        
&& strlen($relpath) !== 1           // but with out volume root
            
? !($attr == 'read' || $attr == 'write'// set read+write to false, other (locked+hidden) set to true
            
null;                                 // else elFinder decide it itself
    
}

    function 
validName($name) {
        
//return strpos($name, '.') !== 0;
        
$filname_without_ext pathinfo($namePATHINFO_FILENAME);
        return (
preg_match('/^[A-z0-9-_]+$/',$filname_without_ext));
    }

// Documentation for connector options:
// https://github.com/Studio-42/elFinder/wiki/Connector-configuration-options

    
$opts = array(
        
// 'debug' => true,
        
'roots' => array(
            
// Items volume
            
array(
                
'driver'        => 'LocalFileSystem',           // driver for accessing file system (REQUIRED)
                
'path'          => '../../../files/',                 // path to files (REQUIRED)
                
'URL'           => dirname($_SERVER['PHP_SELF']) . '/../../../files/'// URL to files (REQUIRED)
                
'trashHash'     => 't1_Lw',                     // elFinder's hash of trash folder
                
'winHashFix'    => DIRECTORY_SEPARATOR !== '/'// to make hash same to Linux one on windows too
                
'uploadDeny'    => array('all'),                // All Mimetypes not allowed to upload
                
'uploadAllow'   => array('image'),// Mimetype `image` and `text/plain` allowed to upload
                //uploadAllow' => array('image/png', 'application/x-shockwave-flash') # allow png and flash
                
'uploadOrder'   => array('deny''allow'),      // allowed Mimetype `image` and `text/plain` only
                
'accessControl' => 'access',                     // disable and hide dot starting files (OPTIONAL)
                
'acceptedName'  => 'validName',
            ),
            
// Trash volume
            //no need trash
            
array(
                
'id'            => '1',
                
'driver'        => 'Trash',
                
'path'          => '../files/.trash/',
                
'tmbURL'        => dirname($_SERVER['PHP_SELF']) . '/../files/.trash/.tmb/',
                
'winHashFix'    => DIRECTORY_SEPARATOR !== '/'// to make hash same to Linux one on windows too
                
'uploadDeny'    => array('all'),                // Recomend the same settings as the original volume that uses the trash
                
'uploadAllow'   => array('image'),// Same as above
                //uploadAllow' => array('image/png', 'application/x-shockwave-flash') # allow png and flash
                
'uploadOrder'   => array('deny''allow'),      // Same as above
                
'accessControl' => 'access',                    // Same as above
                
'acceptedName'  => 'validName',
            )
        )
    );

// run elFinder
    
$connector = new elFinderConnector(new elFinder($opts));
    
$connector->run();