| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364 | 
							- <?php
 
- /**
 
-  * elFinder is a AJAX file manager with Wysiwyg API capable editors support
 
-  * Copyright (c) 2010-2013, Alexey Sukhotin
 
-  */
 
- define('ELFINDER_POPUP_WIDTH', 700);
 
- define('ELFINDER_POPUP_HEIGHT', 400);
 
- include_once dirname(elfinder_connector_path()) . DIRECTORY_SEPARATOR . 'elFinder.class.php';
 
- if (class_exists('elFinder')) {
 
-   include_once drupal_get_path('module', 'elfinder') . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'elfinder.drupal.inc';
 
- }
 
- function elfinder_check_badpaths() {
 
-   $ret = array('result' => TRUE, 'message' => '');
 
-   $libpath = elfinder_lib_path();
 
-   $badfiles = array('connectors/php/connector.php', 'php/connector.php', 'php/connector.minimal.php');
 
-   $badpaths = array();
 
-   foreach ($badfiles as $badfile) {
 
-     $path = $libpath . '/' . $badfile;
 
-     if (file_exists($path)) {
 
-       $badpaths[] = $path;
 
-     }
 
-   }
 
-   if (count($badpaths) > 0) {
 
-     $message = t('elFinder library directory containing features test files :files. Please remove these files to avoid security hole.', array(':files' => implode(', ', $badpaths)));
 
-     watchdog('elfinder', $message, array(), WATCHDOG_ALERT);
 
-     drupal_set_message($message, 'error');
 
-     
 
-     $ret['result'] = FALSE;
 
-     $ret['message'] = $message;
 
-     
 
-   }
 
-   return $ret;
 
- }
 
- function elfinder_init() {
 
-   elfinder_check_badpaths();
 
- }
 
-  
 
- /**
 
-  * Implements hook_menu().
 
-  */
 
- function elfinder_menu() {
 
-   $items = array();
 
-   
 
-   $access = array('use file manager');
 
-   $items['admin/content/files'] = array(
 
-     'title' => 'Files',
 
-     'page callback' => 'elfinder_file_browser',
 
-     'page arguments' => array('backend'),
 
-     'description' => 'Manage media files.',
 
-     'access arguments' => array('administer file manager'),
 
-   );  
 
-   $items['admin/content/files']['type'] = MENU_LOCAL_TASK;
 
-     
 
-   $items['elfinder'] = array(
 
-     'title' => 'File browser',
 
-     'page callback' => 'elfinder_file_browser',
 
-     'page arguments' => array('default'),
 
-     'access arguments' => $access,
 
-     'type' => MENU_CALLBACK,
 
-   );
 
-   $items['elfinder/connector'] = array(
 
-     'title' => 'File browser',
 
-     'page callback' => 'elfinder_filesystemconnector',
 
-     'page arguments' => array(NULL),
 
-     'access arguments' => $access,
 
-     'type' => MENU_CALLBACK,
 
-   );
 
-   // Forced connector relative url mode. For filefield_sources support.
 
-   $items['elfinder/connector/relative'] = array(
 
-     'title' => 'File browser',
 
-     'page callback' => 'elfinder_filesystemconnector',
 
-     'page arguments' => array('relative'),
 
-     'access arguments' => $access,
 
-     'type' => MENU_CALLBACK,
 
-   );
 
-   $settings_page = array(
 
-     'title' => 'elFinder',
 
-     'description' => 'elFinder file manager settings',
 
-     'page callback' => 'elfinder_admin',
 
-     'access arguments' => array('administer file manager'),
 
-     'file' => 'inc/elfinder.admin.inc',
 
-   );
 
-   $items['admin/config/elfinder'] = $items['admin/config/media/elfinder'] = $settings_page;
 
-   $items['admin/config/elfinder']['type'] = MENU_CALLBACK;
 
-  
 
-   $items['admin/config/media/elfinder/profile'] = array(
 
-     'title' => 'Add Profile',
 
-     'page callback' => 'elfinder_admin_profiles',
 
-     'page arguments' => array('profile_add'),
 
-     'access arguments' => array('administer file manager'),
 
-     'type' => MENU_CALLBACK,
 
-     'file' => 'inc/elfinder.admin.profiles.inc',
 
-   );
 
-   
 
-   $items['admin/config/media/elfinder/profile/%/delete'] = array(
 
-     'title' => 'Delete Profile',
 
-     'page callback' => 'elfinder_admin_profiles',
 
-     'page arguments' => array('profile_delete', 5),
 
-     'access arguments' => array('administer file manager'),
 
-     'type' => MENU_CALLBACK,
 
-     'file' => 'inc/elfinder.admin.profiles.inc',
 
-   );
 
-   $items['admin/config/media/elfinder/profile/%/edit'] = array(
 
-     'title' => 'Edit Profile',
 
-     'page callback' => 'drupal_get_form',
 
-     'page arguments' => array('elfinder_admin_profile', 'profile_edit', 5),
 
-     'access arguments' => array('administer file manager'),
 
-     'type' => MENU_CALLBACK,
 
-     'file' => 'inc/elfinder.admin.profiles.inc',
 
-   );
 
-   
 
-  $items['elfinder/ahah/dir'] = array(
 
-     'title' => 'JavaScript Volume Add Item',
 
-     'page callback' => 'elfinder_admin_form_dir_js',
 
-     'page arguments' => array('item_add'),
 
-     'access arguments' => array('administer file manager'),
 
-     'type' => MENU_CALLBACK,
 
-     'file' => 'inc/elfinder.admin.profiles.inc',
 
-   );
 
-   
 
-  $items['elfinder/ahah/rmdir/%'] = array(
 
-     'title' => 'JavaScript Volume Remove Item',
 
-     'page callback' => 'elfinder_admin_form_dir_js',
 
-     'page arguments' => array('item_remove', 3),
 
-     'access arguments' => array('administer file manager'),
 
-     'type' => MENU_CALLBACK,
 
-     'file' => 'inc/elfinder.admin.profiles.inc',
 
-   );  
 
-   
 
-   $items['elfinder/upload/fckeditor'] = array(
 
-     'title' => 'FCKeditor Quick Upload',
 
-     'page callback' => 'elfinder_editor_upload_fckeditor',
 
-     'access arguments' => array('access content'),
 
-     'type' => MENU_CALLBACK,
 
-     'file' => 'editors/fckeditor/fckeditor.upload.inc',
 
-   );
 
-   
 
-   $items['elfinder/upload/ckeditor'] = array(
 
-     'title' => 'CKeditor Quick Upload',
 
-     'page callback' => 'elfinder_editor_upload_ckeditor',
 
-     'access arguments' => array('access content'),
 
-     'type' => MENU_CALLBACK,
 
-     'file' => 'editors/ckeditor/ckeditor.upload.inc',
 
-   );  
 
-   
 
-   /* Getting updated menu items from hook_elfinder_menu */
 
-   $newitems = module_invoke_all('elfinder_menu', $items);
 
-   
 
-   return ($newitems) ? $newitems : $items;
 
- }
 
- function elfinder_js_alter(&$javascript) {
 
-   //$javascript['misc/jquery.js']['data'] = drupal_get_path('module', 'elfinder') . '/js/elfinder.jquery.min.js';
 
- }
 
- /**
 
-  * File browser render
 
-  */
 
- function elfinder_file_browser($browser_mode = 'default') {
 
-   $libpath = elfinder_lib_path() . '/';
 
-   $p = elfinder_get_user_profile();
 
-   if (is_readable(elfinder_connector_path())) {
 
-     global $language;
 
-     $path = drupal_get_path('module', 'elfinder');
 
-     $editorApp = '';
 
-     $langCode = isset($language->language) ? $language->language : 'en';
 
-     if (isset($_GET['app'])) {
 
-       if (preg_match("/^[a-zA-Z]+$/", $_GET['app'])) {
 
-         $editorApp = $_GET['app'];
 
-       } elseif (preg_match("/^([a-zA-Z]+)|/", $_GET['app'], $m)) {
 
-         $editorApp = $m[1];
 
-       }
 
-     }
 
-     if (isset($_GET['langCode'])) {
 
-       if (preg_match("/^[a-zA-z]{2}$/", $_GET['langCode'])) {
 
-         $langCode = $_GET['langCode'];
 
-       }
 
-     }
 
-     
 
-     /* Initial frontend settings */
 
-     $elfinder_js_settings = array(
 
-       'connectorUrl' => url('elfinder/connector'),
 
-       'moduleUrl' => url('elfinder'),
 
-       'editorApp' => $editorApp,
 
-       'langCode' => $langCode,
 
-       'rememberLastDir' => variable_get('elfinder_settings_misc_rememberlastdir', 'true')  == 'true' ? TRUE : FALSE, // remember last opened directory
 
-       'disabledCommands' => elfinder_get_disabled_commands(),
 
-       'requestType' => variable_get('elfinder_settings_misc_requesttype', 'get') == 'get' ? 'get' : 'post',
 
-       'browserMode' => $browser_mode,
 
-       'token' => drupal_get_token('elFinder'),
 
-       'soundPath' => base_path() . elfinder_lib_path() . '/sounds',
 
-     );
 
-     if (($mheight = variable_get('elfinder_settings_misc_manager_height', '')) != '') {
 
-       $elfinder_js_settings['height'] = (int)$mheight;
 
-     }
 
-     $elfinder_js_settings['resizable'] = ($browser_mode == 'backend');
 
-     if ($editorApp) {
 
-       $elfinder_js_settings['editorCallback'] = 'elfinder_' . $editorApp . '_callback';
 
-     }
 
-     
 
-     $options = array(
 
-       'group' => CSS_DEFAULT, 
 
-       'every_page' => FALSE,
 
-     );
 
- 	  $sysjqver = variable_get('jquery_update_jquery_version', '1.10');
 
-     if (!(module_exists('jquery_update') && preg_match('/1\.(8|9|10|11|12)/', $sysjqver))) {
 
-       drupal_add_js($path . '/js/elfinder.jquery.min.js');
 
-       drupal_add_js($path . '/js/elfinder.jquery-ui.min.js');
 
-     } else {
 
-       drupal_add_library('system', 'ui.button');
 
-       drupal_add_library('system', 'ui.dialog');
 
-       drupal_add_library('system', 'ui.draggable');
 
-       drupal_add_library('system', 'ui.droppable');
 
-       drupal_add_library('system', 'ui.resizable');
 
-       drupal_add_library('system', 'ui.selectable');
 
-       drupal_add_library('system', 'ui.slider');
 
-     }
 
-     
 
-     elfinder_add_css($path . '/css/ui-themes/smoothness/jquery-ui.custom.css', $options);
 
-     elfinder_add_css($path . '/css/elfinder.common.css', $options);
 
-     
 
-     if (is_readable($libpath . 'css/elfinder.min.css') && is_readable($libpath . 'js/elfinder.min.js')) {
 
-       elfinder_add_css($libpath . 'css/elfinder.min.css');
 
-       drupal_add_js($libpath . 'js/elfinder.min.js');
 
-     } else if (is_readable($libpath . 'css/elfinder.full.css') && is_readable($libpath . 'js/elfinder.full.js')) {
 
-       elfinder_add_css($libpath . 'css/elfinder.full.css');
 
-       drupal_add_js($libpath . 'js/elfinder.full.js');
 
-     } else if (is_readable($libpath . 'css/common.css') && is_readable($libpath . 'js/elFinder.js')) {
 
-       elfinder_add_css($libpath . 'css/common.css');
 
-       elfinder_add_css($libpath . 'css/dialog.css');
 
-       elfinder_add_css($libpath . 'css/toolbar.css');
 
-       elfinder_add_css($libpath . 'css/navbar.css');
 
-       elfinder_add_css($libpath . 'css/statusbar.css');
 
-       elfinder_add_css($libpath . 'css/cwd.css');
 
-       elfinder_add_css($libpath . 'css/quicklook.css');
 
-       elfinder_add_css($libpath . 'css/commands.css');
 
-       elfinder_add_css($libpath . 'css/contextmenu.css');
 
-       elfinder_add_css($libpath . 'css/theme.css');
 
-       drupal_add_js($libpath . 'js/elFinder.js');
 
-       drupal_add_js($libpath . 'js/elFinder.version.js');
 
-       drupal_add_js($libpath . 'js/jquery.elfinder.js');
 
-       drupal_add_js($libpath . 'js/elFinder.resources.js');
 
-       drupal_add_js($libpath . 'js/elFinder.options.js');
 
-       drupal_add_js($libpath . 'js/elFinder.history.js');
 
-       drupal_add_js($libpath . 'js/elFinder.command.js');
 
-       drupal_add_js($libpath . 'js/ui/overlay.js');
 
-       drupal_add_js($libpath . 'js/ui/workzone.js');
 
-       drupal_add_js($libpath . 'js/ui/navbar.js');
 
-       drupal_add_js($libpath . 'js/ui/dialog.js');
 
-       drupal_add_js($libpath . 'js/ui/tree.js');
 
-       drupal_add_js($libpath . 'js/ui/cwd.js');
 
-       drupal_add_js($libpath . 'js/ui/toolbar.js');
 
-       drupal_add_js($libpath . 'js/ui/button.js');
 
-       drupal_add_js($libpath . 'js/ui/uploadButton.js');
 
-       drupal_add_js($libpath . 'js/ui/viewbutton.js');
 
-       drupal_add_js($libpath . 'js/ui/searchbutton.js');
 
-       drupal_add_js($libpath . 'js/ui/panel.js');
 
-       drupal_add_js($libpath . 'js/ui/contextmenu.js');
 
-       drupal_add_js($libpath . 'js/ui/path.js');
 
-       drupal_add_js($libpath . 'js/ui/stat.js');
 
-       drupal_add_js($libpath . 'js/ui/places.js');
 
-       drupal_add_js($libpath . 'js/commands/back.js');
 
-       drupal_add_js($libpath . 'js/commands/forward.js');
 
-       drupal_add_js($libpath . 'js/commands/reload.js');
 
-       drupal_add_js($libpath . 'js/commands/up.js');
 
-       drupal_add_js($libpath . 'js/commands/home.js');
 
-       drupal_add_js($libpath . 'js/commands/copy.js');
 
-       drupal_add_js($libpath . 'js/commands/cut.js');
 
-       drupal_add_js($libpath . 'js/commands/paste.js');
 
-       drupal_add_js($libpath . 'js/commands/open.js');
 
-       drupal_add_js($libpath . 'js/commands/rm.js');
 
-       drupal_add_js($libpath . 'js/commands/duplicate.js');
 
-       drupal_add_js($libpath . 'js/commands/rename.js');
 
-       drupal_add_js($libpath . 'js/commands/help.js');
 
-       drupal_add_js($libpath . 'js/commands/getfile.js');
 
-       drupal_add_js($libpath . 'js/commands/mkdir.js');
 
-       drupal_add_js($libpath . 'js/commands/mkfile.js');
 
-       drupal_add_js($libpath . 'js/commands/upload.js');
 
-       drupal_add_js($libpath . 'js/commands/download.js');
 
-       drupal_add_js($libpath . 'js/commands/edit.js');
 
-       drupal_add_js($libpath . 'js/commands/quicklook.js');
 
-       drupal_add_js($libpath . 'js/commands/quicklook.plugins.js');
 
-       drupal_add_js($libpath . 'js/commands/extract.js');
 
-       drupal_add_js($libpath . 'js/commands/archive.js');
 
-       drupal_add_js($libpath . 'js/commands/search.js');
 
-       drupal_add_js($libpath . 'js/commands/view.js');
 
-       drupal_add_js($libpath . 'js/commands/resize.js');
 
-       drupal_add_js($libpath . 'js/commands/info.js');
 
-       drupal_add_js($libpath . 'js/commands/sort.js');
 
-       drupal_add_js($libpath . 'js/commands/netmount.js');
 
-       drupal_add_js($libpath . 'js/proxy/elFinderSupportVer1.js');
 
-       drupal_add_js($libpath . 'js/jquery.dialogelfinder.js');
 
-     } else {
 
-       watchdog('Failed Requirement', 'elFinder unable to load required JS and CSS files', array(), WATCHDOG_ERROR);
 
-     }
 
-  
 
- 		$langfile = $libpath . 'js/i18n/elfinder.' . $langCode . '.js';
 
-       
 
-     if (is_readable($libpath . 'css/theme.css')) {
 
-         elfinder_add_css($libpath . 'css/theme.css');
 
-     }
 
- 		
 
-     /* Adding localization */
 
-     if (is_readable($langfile)) {
 
-       drupal_add_js($langfile);
 
-     }
 
-     /* Getting updated frontend settings from hook_elfinder_js_settings */
 
-     $newjssettings = module_invoke_all('elfinder_js_settings', $elfinder_js_settings);
 
-     
 
-     if (isset($newjssettings['all'])) {
 
-       $elfinder_js_settings = array_merge($elfinder_js_settings, (array)$newjssettings['all']);
 
-     }
 
-     
 
-     if (isset($newjssettings[$editorApp])) {
 
-       $elfinder_js_settings = array_merge($elfinder_js_settings, (array)$newjssettings[$editorApp]);
 
-     }
 
-     /* Loading callbacks for returning url from file manager to caller */
 
-     $editor_plugins = elfinder_system_listing("$editorApp\.callback\.js\$", $path . '/editors' , 'name', 0);
 
-     $callback_file = '';
 
-     if (isset($editorApp)) {
 
-     
 
-       if (isset($editorApp) && isset($editor_plugins[$editorApp . '.callback'])) {
 
-         $callback_file = $editor_plugins[$editorApp . '.callback']->uri;
 
-         if (isset($callback_file)) {
 
-           drupal_add_js($callback_file);
 
-         }
 
-       }
 
-       
 
-       if (isset($elfinder_js_settings['browserscripts'])) {
 
-         foreach ((array)$elfinder_js_settings['browserscripts'] as $script) {
 
-           drupal_add_js($script, array('weight' => 999));
 
-         }
 
-         unset($elfinder_js_settings['browserscripts']);
 
-       }
 
-     
 
-     }
 
-       
 
-     if (property_exists('elFinder', 'ApiVersion')) {
 
-         $elfinder_js_settings['api21'] = true;
 
-     } else {
 
-         drupal_add_js($path . '/js/info.js');
 
-     }
 
-    // drupal_add_js($path . '/js/mouseover.js');
 
-     drupal_add_js($path . '/js/elfinder.callback.js');
 
-     drupal_add_js(array('elfinder' => $elfinder_js_settings), 'setting');
 
-       
 
-       
 
-      $libs = elfinder_get_libraries('tinymce');
 
-      if (count($libs) > 0 && !empty($libs['tinymce'])) {
 
-          
 
-          $path = $libs['tinymce'] . '/jscripts/tiny_mce/tiny_mce_popup.js';
 
-          $abspath = base_path() . "/$path";
 
-          drupal_add_js($path);
 
-      }
 
-     
 
-   } else {
 
-     drupal_set_message(t('elFinder library was not found. Please download it from <a href="@url">@url</a> and install to @libpath.', array('@url' => elfinder_download_url(), '@libpath' => $libpath)), 'error');
 
-   }
 
-   if ($browser_mode && $browser_mode  == 'backend') {
 
-     return theme('elfinder_page_backend');
 
-   } else {
 
-     print theme('elfinder_page');
 
-   }
 
-   module_invoke_all('exit');
 
-   exit();
 
- }
 
- function elfinder_get_disabled_commands() {
 
-   $disabled_commands = array();
 
-   $permissions = elfinder_permission();
 
-   
 
-   $commands = elfinder_cmd_permissions();
 
-   // Disable not allowed commands
 
-   foreach ($permissions as $perm_name => $perm_data) {
 
-     if (array_key_exists($perm_name, $commands) && !user_access($perm_name)) {
 
-       array_push($disabled_commands, $commands[$perm_name]);
 
-     }
 
-   } 
 
-    
 
- /*  if (!user_access('download own uploaded files') && !user_access('download all uploaded files')) {
 
-     $disabled_commands[] = 'getfile';
 
-   }*/
 
-  
 
-   return $disabled_commands;
 
- }
 
- function elfinder_user_roles() {
 
-   global $user;
 
-   return array_reverse(array_keys($user->roles));
 
- }
 
- function elfinder_get_user_profile() {
 
-   /* Get role id list sorted by weight descending */
 
-   $profiles = elfinder_admin_profile_get();
 
-   
 
-   if (!is_array($profiles)) {
 
-       $profiles = array($profiles);
 
-   }
 
-   
 
-   $first_profile = NULL;
 
-   
 
-   $rids = elfinder_user_roles();
 
-   $rids[] = 1; // anonymous user
 
-   
 
-   /* Get first matching profile for higest weight user role */
 
-   foreach ($rids as $rid) {
 
-     foreach ($profiles as $profile) {
 
-         if (isset($profile->settings['profile_role']) && in_array($rid, $profile->settings['profile_role']) ) {
 
-           if (is_null($first_profile)) {
 
-             $first_profile = $profile;
 
-           } else if (isset($profile->settings['volume'])) {
 
-             /* Adding all available to current user volumes from other profiles */
 
-             foreach ($profile->settings['volume'] as $volume) {
 
-               $first_profile->settings['volume'][] = $volume;
 
-             }
 
-           }
 
-         }
 
-     }
 
-     
 
-   }
 
-   return $first_profile;
 
- }
 
- /**
 
-  * File browser to filesystem php connector callback
 
-  */
 
- function elfinder_filesystemconnector($mode = 'default') {
 
-   global $base_root, $user;
 
-   
 
-   $p = elfinder_get_user_profile();
 
-   
 
-   $path = drupal_get_path('module', 'elfinder');
 
-   
 
-   include_once dirname(elfinder_connector_path()) . DIRECTORY_SEPARATOR . 'elFinderConnector.class.php';
 
-   include_once dirname(elfinder_connector_path()) . DIRECTORY_SEPARATOR . 'elFinderVolumeDriver.class.php';
 
-   include_once dirname(elfinder_connector_path()) . DIRECTORY_SEPARATOR . 'elFinderVolumeLocalFileSystem.class.php';
 
-   include_once $path . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'elfinder.drupalfs.driver.inc';
 
-   include_once $path . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'elfinder.drupalfs.acl.inc';
 
-   include_once $path . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'elfinder.admin.profiles.inc';
 
-   
 
- /**
 
-  * Emulate json_encode required by filesystem connector for old php without JSON support
 
-  */
 
-   if (!function_exists('json_encode')) {
 
-     function json_encode($arg) {
 
-       return drupal_json($arg);
 
-     }
 
-   }
 
-   
 
-   /* Disabling incompartible devel module features */
 
-   if (module_exists('devel')) {
 
-     $devel_incompat = array('dev_timer', 'devel_query_display', 'dev_mem', 'devel_redirect_page');
 
-     $flag = FALSE;
 
-     foreach ($devel_incompat as $di) {
 
-       if (variable_get($di, 0)) {
 
-         $flag = TRUE;
 
-         variable_set($di, 0);
 
-       }
 
-     }
 
-     if ($flag) {
 
-       drupal_set_message(t('elFinder disabled incompatible devel module features.'), 'warning');
 
-     }
 
-   }
 
-   // Set absolute/relative url variable.
 
-   if(!isset($mode) && variable_get('elfinder_settings_filesystem_fileurl', 'true') == 'false') {
 
-     $mode = 'relative';
 
-   }
 
-   $disabled_commands = elfinder_get_disabled_commands();
 
-   $acl = new elFinderDrupalACL();
 
-   
 
-   $pubFiles = file_stream_wrapper_get_instance_by_uri('public://');
 
-   $pvtFiles = file_stream_wrapper_get_instance_by_uri('private://');
 
-   
 
-   $roots = array();
 
-   if ($p) {
 
-     $profile = $p->settings;
 
-   } else {
 
-     $profile = array();
 
-   }
 
-   $options_defs = array(
 
-       'disabled' => $disabled_commands, // list of not allowed commands
 
-       'debug' => FALSE,
 
-       'dirSize' => FALSE,
 
-       'tmbSize' => isset($profile['tmbsize']) ? $profile['tmbsize'] : variable_get('elfinder_settings_thumbnail_size', '48'), // thumbnail image size
 
-       'tmbPath' => variable_get('elfinder_settings_thumbnail_dirname', 'tmb'), // thumbnail images directory (tmbPath in 2.x)
 
-       'tmbCrop' => variable_get('elfinder_settings_thumbnail_tmbcrop', 'true') == 'true' ? TRUE : FALSE, // crop thumbnail image
 
-       'dateFormat' => variable_get('date_format_long', 'j M Y H:i'),  // file modification date format
 
-       'mimeDetect' => isset($profile['mime_detect']) ? $profile['mime_detect'] : variable_get('elfinder_settings_filesystem_mimedetect', 'auto'),  // file type detection method
 
-       'imgLib' => isset($profile['imglib']) ? $profile['imglib'] : variable_get('elfinder_settings_thumbnail_imglib', 'auto'), // image manipulation library
 
-       'fileMode' => isset($profile['file_perm']) ? octdec($profile['file_perm']) : octdec(variable_get('elfinder_settings_filesystem_fileperm', '0666')), // created file permissions
 
-       'dirMode' => isset($profile['dir_perm']) ? octdec($profile['dir_perm']) : octdec(variable_get('elfinder_settings_filesystem_dirperm', '0777')), // created directory permissions
 
-       'accessControlData' => array('uid' => $user->uid),
 
-       'acceptedName' => '/^[^\.]+/',
 
-       'uploadMaxSize' => parse_size(variable_get('elfinder_settings_filesystem_maxfilesize', '')),
 
-       'userProfile' => $p,
 
-       'jpgQuality' => variable_get('image_jpeg_quality', 75),
 
-   );
 
-   
 
-   if (is_object($pubFiles) && user_access('access public files')) {
 
-     $roots[] = array_merge($options_defs, array(
 
-       'driver' => 'Drupal',
 
-       'path' => drupal_realpath('public://'),  // path to root directory (named 'path' in elFinder 2.0)
 
-       'URL' => $mode == 'relative' ? base_path() . $pubFiles->getDirectoryPath() : $pubFiles->getExternalUrl(), // root directory URL
 
-       'alias' => variable_get('elfinder_settings_filesystem_public_root_label', '') != '' ? variable_get('elfinder_settings_filesystem_public_root_label', '') : t('Public Files'), // display this instead of root directory name (named 'alias' in elFinder 2.0)
 
-       'accessControl' => array($acl, 'fsAccessPublic'),
 
-      ));
 
-   }
 
-   
 
-   if (is_object($pvtFiles) && user_access('access private files')) {
 
-     $roots[] = array_merge($options_defs, array(
 
-       'driver' => 'Drupal',
 
-       'path' => drupal_realpath('private://'),  // path to root directory (named 'path' in elFinder 2.0)
 
-       'URL' => $mode == 'relative' ? base_path() . $pvtFiles->getDirectoryPath() : $pvtFiles->getExternalUrl(), // root directory URL
 
-       'alias' => variable_get('elfinder_settings_filesystem_private_root_label', '') != '' ? variable_get('elfinder_settings_filesystem_private_root_label', '') : t('Private Files'), // display this instead of root directory name (named 'alias' in elFinder 2.0)
 
-       'accessControl' => array($acl, 'fsAccessPrivate'),
 
-      ));
 
-   }
 
-   
 
-   if (user_access('access unmanaged files')) {
 
-     $roots[] = array_merge($options_defs, array(
 
-       'driver' => 'LocalFileSystem',
 
-       'path' => elfinder_file_directory_path(TRUE),  // path to root directory (named 'path' in elFinder 2.0)
 
-       'URL' => elfinder_file_directory_url($mode == 'relative' ? TRUE : FALSE), // root directory URL
 
-       'alias' => variable_get('elfinder_settings_filesystem_unmanaged_root_label', '') != '' ? variable_get('elfinder_settings_filesystem_unmanaged_root_label', '') : t('Unmanaged Files'), // display this instead of root directory name (named 'alias' in elFinder 2.0)
 
-       'accessControl' => array($acl, 'fsAccessUnmanaged'),
 
-      ));
 
-   }
 
-   
 
-   if (isset($profile['volume'])) {
 
-     foreach ($profile['volume'] as $volume) {
 
-       $root = array(
 
-           'alias' => $volume['label'],
 
-       );
 
-       $is_subdir = FALSE;
 
-       $rootpath = '';
 
-       if (isset($volume['path']) && substr($volume['path'], 0, 1) != DIRECTORY_SEPARATOR) {
 
-         $is_subdir = TRUE;
 
-       }
 
-       if ($is_subdir) {
 
-           
 
-         $root['driver'] = 'Drupal';
 
-         $scheme = file_uri_scheme($volume['path']);
 
-         if ($scheme == FALSE) {
 
-            if (is_object(file_stream_wrapper_get_instance_by_uri('private://'))) {
 
-              $scheme = 'private';
 
-           } else {
 
-              $scheme = 'public';
 
-            }
 
-         }
 
-         $rootpath = $volume['path'];
 
-         if ($pos = strpos($rootpath, '://')) {
 
-           $rootpath = substr($rootpath, $pos + 3);
 
-         }
 
-         $streamWrapper = file_stream_wrapper_get_instance_by_scheme($scheme);
 
-         if (is_object($streamWrapper)) {
 
-             $volpath = $streamWrapper->realpath();
 
-             $volurl = $mode == 'relative' ? base_path() . $streamWrapper->getDirectoryPath() : $streamWrapper->getExternalUrl();
 
-             $url = isset($volume['url']) && $volume['url'] != '' ? elfinder_parse_path_tokens($volume['url']) : $volurl;
 
-         }
 
-         $rootpath = elfinder_parse_path_tokens($rootpath);
 
-         $trimmedpath = ltrim($rootpath, './');
 
-         $rootpath = $volpath . DIRECTORY_SEPARATOR . $trimmedpath;
 
-         $url = rtrim($url, '/');
 
-         $url .= "/$trimmedpath";
 
-         if (!file_prepare_directory($rootpath, FILE_CREATE_DIRECTORY)) {
 
-           drupal_set_message(t('Error. Cannot initialize directory %dir', array('%dir' => $rootpath)), 'error');
 
-         }
 
-         $root['path'] = drupal_realpath($rootpath);
 
-         $root['URL'] = $url;
 
-         $root['tmbPath'] = $volpath . DIRECTORY_SEPARATOR . variable_get('elfinder_settings_thumbnail_dirname', 'tmb');
 
-         $root['tmbURL'] = $volurl . '/' . variable_get('elfinder_settings_thumbnail_dirname', 'tmb');
 
-       } else {
 
-         $rootpath = elfinder_parse_path_tokens($volume['path']);
 
-         $root['driver'] = 'LocalFileSystem';
 
-         $root['path'] = $rootpath;
 
-         if (isset($volume['url'])) {
 
-           $root['URL'] = elfinder_parse_path_tokens($volume['url']);
 
-         }
 
-       }
 
-       $root = array_merge($options_defs, $root);
 
-       $roots[] = $root;
 
-     }
 
-   }
 
-   
 
-   $opts = array(
 
-     'roots' => $roots,     
 
- 	'driver_defaults' => $options_defs,
 
-   );
 
-   
 
-   $newopts = module_invoke_all('elfinder_connector_config', $opts);
 
-   
 
-   if ($newopts) {
 
-     $opts = $newopts;
 
-   }
 
-   class elFinderConnectorDrupal extends elFinderConnector {
 
-     public function test() {
 
-     }
 
-   }
 
-   
 
-   try {
 
- 	  $elFinderObj = new elFinderDrupal($opts);
 
-   } catch (Exception $e) {
 
- 	module_invoke_all('exit');
 
- 	exit(drupal_json_encode(array('error' => array(t('Unable to initialize elFinder object. :msg', array(':msg' => basename($e->getFile()) .": ". $e->getMessage()))))));
 
-   }
 
-   
 
-   $bindcmds = module_invoke_all('elfinder_bind');
 
-   
 
-   foreach ($bindcmds as $cmd => $cmdfunc) {
 
-     $elFinderObj->bind($cmd, $cmdfunc);
 
-   }
 
-   
 
-   try {
 
- 	$elFinderConnectorObj = new elFinderConnectorDrupal($elFinderObj);
 
-   } catch (Exception $e) {
 
- 	module_invoke_all('exit');
 
- 	exit(drupal_json_encode(array('error' => array(t('Unable to initialize elFinder connector object. :msg', array(':msg' => basename($e->getFile()) .": ". $e->getMessage()))))));
 
-   }
 
-   
 
-   module_invoke_all('elfinder_connector_init', $elFinderConnectorObj);
 
-     
 
- 	if (!drupal_valid_token($_REQUEST['token'], 'elFinder', TRUE)) {
 
- 		module_invoke_all('exit');
 
- 		exit(drupal_json_encode(array('error' => array(t('Access denied')))));
 
- 	} else {
 
- 		try {
 
- 			$elFinderConnectorObj->run();
 
- 		} catch (Exception $e) {
 
- 			module_invoke_all('exit');
 
- 			exit(drupal_json_encode(array('error' => array(t('Unable to run elFinder connector. :msg', array(':msg' => basename($e->getFile()) .": ". $e->getMessage()))))));
 
- 		}
 
- 		module_invoke_all('exit');
 
- 		exit();
 
- 	}
 
- }
 
- function elfinder_elfinder_bind() {
 
-   return array('test' => 'test2');
 
- }
 
- /**
 
-  * Implements hook_theme().
 
-  */
 
- function elfinder_theme() {
 
-   $theme = array();
 
-   $theme['elfinder_page'] = array(
 
-     'template' => 'elfinder-page',
 
-     'arguments' => array('libPath' => '/' . elfinder_lib_path()),
 
-     'path' => drupal_get_path('module', 'elfinder') . '/tpl',
 
-   );
 
-   $theme['elfinder_page_backend'] = array(
 
-     'template' => 'elfinder-page-backend',
 
-     'arguments' => array('libPath' => '/' . elfinder_lib_path()),
 
-     'path' => drupal_get_path('module', 'elfinder') . '/tpl',
 
-   );
 
-   
 
-   return $theme;
 
- }
 
- /**
 
-  * Implements hook_permission(), D7
 
-  */
 
- function elfinder_permission() {
 
-   $perm = array(
 
-     'use file manager' => array(
 
-       'title' => t('Use elFinder file manager'),
 
-       'description' => t('Allow accessing elFinder file manager module'),
 
-     ),
 
-     'administer file manager' => array(
 
-       'title' => t('Administer file manager'),
 
-       'description' => t('Allow users to administer file manager'),
 
-     ),
 
-     'create new directories' => array(
 
-       'title' => t('Create new directories'),
 
-       'description' => t('Allow users to create new directories'),
 
-     ),
 
-     'create new files' => array(
 
-       'title' => t('Create new files'),
 
-       'description' => t('Allow users to create new files'),
 
-     ),
 
-     'rename files and directories' => array(
 
-       'title' => t('Rename files and directories'),
 
-       'description' => t('Allow users to rename files and directories'),
 
-     ),
 
-     'file uploads' => array(
 
-       'title' => t('File uploads'),
 
-       'description' => t('Allow users to upload files'),
 
-     ),
 
-     'paste from clipboard' => array(
 
-       'title' => t('Paste from clipboard'),
 
-       'description' => t('Allow users to paste files from clipboard'),
 
-     ),
 
-     'copy to clipboard' => array(
 
-       'title' => t('Copy to clipboard'),
 
-       'description' => t('Allow users to copy files to clipboard'),
 
-     ),
 
-     
 
-     'cut to clipboard' => array(
 
-       'title' => t('Cut to clipboard'),
 
-       'description' => t('Allow users to cut files to clipboard'),
 
-     ),
 
-     'view file info' => array(
 
-       'title' => t('View file info'),
 
-       'description' => t('Allow users to view file info'),
 
-     ),
 
-     
 
-     'preview files' => array(
 
-       'title' => t('Preview files'),
 
-       'description' => t('Allow users to preview files'),
 
-     ),
 
-     
 
-     'delete files and directories' => array(
 
-       'title' => t('Delete files and directories'),
 
-       'description' => t('Allow users to delete files and directories'),
 
-     ),
 
-     'duplicate files' => array(
 
-       'title' => t('Duplicate files'),
 
-       'description' => t('Allow users to duplicate files'),
 
-     ),
 
-     'edit files' => array(
 
-       'title' => t('Edit files'),
 
-       'description' => t('Allow users to edit files'),
 
-     ),
 
-     'add files to archive' => array(
 
-       'title' => t('Add files to archive'),
 
-       'description' => t('Allow users add files to archive'),
 
-     ),
 
-     'extract files from archive' => array(
 
-       'title' => t('Extract files from archive'),
 
-       'description' => t('Allow users to extract files from archive'),
 
-     ),
 
-     'resize images' => array(
 
-       'title' => t('Resize images'),
 
-       'description' => t('Allow users to resize images'),
 
-     ),
 
-     'download own uploaded files' => array(
 
-       'title' => t('Download own uploaded files'),
 
-       'description' => t('Allow users to download own uploaded files'),
 
-     ),
 
-     'download all uploaded files' => array(
 
-       'title' => t('Download all uploaded files'),
 
-       'description' => t('Allow users to download all uploaded files'),
 
-     ),
 
-     
 
-     'access public files' => array(
 
-       'title' => t('Access public files'),
 
-       'description' => t('Allow users to access public files directory'),
 
-     ),
 
-     
 
-     'access private files' => array(
 
-       'title' => t('Access private files'),
 
-       'description' => t('Allow users to access private files directory'),
 
-     ),
 
-     'access unmanaged files' => array(
 
-       'title' => t('Access unmanaged files'),
 
-       'description' => t('Allow users to access unmanaged files in custom directory'),
 
-     ),
 
-     
 
-     'write public files' => array(
 
-       'title' => t('Write public files'),
 
-       'description' => t('Allow users write access to public files directory'),
 
-     ),
 
-     
 
-     'write private files' => array(
 
-       'title' => t('Write private files'),
 
-       'description' => t('Allow users write access to private files directory'),
 
-     ),
 
-     'access unmanaged files' => array(
 
-       'title' => t('Access unmanaged files'),
 
-       'description' => t('Allow users write access to unmanaged files in custom directory'),
 
-     ),
 
-     'view file description' => array(
 
-       'title' => t('View file descriptions'),
 
-       'description' => t('Allow users to view file descriptions'),
 
-     ),
 
-     
 
-     'edit file description' => array(
 
-       'title' => t('Edit file descriptions'),
 
-       'description' => t('Allow users to edit file descriptions'),
 
-     ),
 
-     
 
-     'view file owner' => array(
 
-       'title' => t('View file owner'),
 
-       'description' => t('Allow users to view file owner'),
 
-     ),
 
-     
 
-     'view file downloads' => array(
 
-       'title' => t('View file downloads'),
 
-       'description' => t('Allow users to view file downloads'),
 
-     ),
 
-       
 
-     'mount network volumes' => array(
 
-       'title' => t('Mount network volumes'),
 
-       'description' => t('Allow users to mount remote network volumes'),
 
-     ),
 
-     
 
-   );
 
-   
 
-   $newperms = module_invoke_all('elfinder_perms', $perm);
 
-   
 
-   return ($newperms) ? $newperms : $perm;
 
- }
 
- /**
 
-  * elFider commandsto permissions assignment
 
-  */
 
- function elfinder_cmd_permissions() {
 
-   $perm = array(
 
-     'create new directories'        => 'mkdir',
 
-     'create new files'              => 'mkfile',
 
-     'rename files and directories'  => 'rename',
 
-     'file uploads'                  => 'upload',
 
-     'copy to clipboard'             => 'copy',
 
-     'cut to clipboard'              => 'cut',
 
-     'paste from clipboard'          => 'paste',
 
-     'preview files'                 => 'quicklook',
 
-     'view file info'                => 'info',
 
-     'delete files and directories'  => 'rm',
 
-     'duplicate files'               => 'duplicate',
 
-     'edit files'                    => 'edit',
 
-     'add files to archive'          => 'archive',
 
-     'extract files from archive'    => 'extract',
 
-     'resize images'                 => 'resize',
 
-     'download own uploaded files'   => 'download',
 
-     'view file description'         => 'desc',
 
-     'edit file description'         => 'editdesc',
 
-     'view file owner'               => 'owner',
 
-     'view file downloads'           => 'downloadcount',
 
-     'mount network volumes'         => 'netmount',
 
-   );
 
-   
 
-   $newcperms = module_invoke_all('elfinder_cmd_perms', $perm);
 
-   
 
-   return ($newcperms) ? $newcperms : $perm;
 
- }
 
- /**
 
-  * Implements hook_wysiwyg_plugin().
 
-  */
 
- function elfinder_wysiwyg_plugin($editor, $version) {
 
-   $path = drupal_get_path('module', 'elfinder');
 
-   drupal_add_js($path . '/js/elfinder.wysiwyg.init.js', array('group' => JS_LIBRARY));
 
-   
 
-   $options = array(
 
-     'elfinder_url' => url('elfinder', array('query' => array('app' => $editor ))),
 
-     'homepage_url' => elfinder_homepage_url(),
 
-     'path'         => $path,
 
-   );
 
-   
 
-   /* bueditor hack */
 
-   if (preg_match('/^(bueditor|bue)/', $editor)) {
 
-       $editor = 'bueditor';
 
-   }
 
-   
 
-   $editor_plugins = elfinder_system_listing("$editor\.inc\$", $path . '/editors' , 'name', 0);
 
-   
 
-   /* loading editor plugin */
 
-   $plugin_file = '';
 
-   
 
-   if (isset($editor_plugins[$editor])) {
 
-   
 
-     $plugin_file = $editor_plugins[$editor]->uri;
 
-  
 
-     if ($plugin_file) {
 
-       $options['plugin_url_base'] = "$path/editors/$editor"; 
 
-       require_once $plugin_file;
 
-     }
 
-   }
 
-   /* hook for adding another editor support */
 
-   //module_invoke_all('elfinder_editor_plugin');
 
-   
 
-   /* wysiwyg plugin generation func for selected editor */
 
-   $pluginfunc = 'elfinder_' . $editor . '_elfinder_editor_plugin';
 
-   
 
-   /* returning elFinder wysiwyg editor plugin for selected editor */
 
-   if (function_exists($pluginfunc)) {
 
-     return call_user_func_array($pluginfunc, array($options));
 
-   }
 
- }
 
- /**
 
-  * library homepage url
 
-  */
 
- function elfinder_homepage_url() {
 
-   return 'http://elfinder.org/';
 
- }
 
- /**
 
-  * library download url
 
-  */
 
- function elfinder_download_url() {
 
-   return 'http://sourceforge.net/projects/drupal-elfinder/files/Library/';
 
- }
 
- /**
 
-  * library files path
 
-  */
 
- function elfinder_lib_path($name = 'elfinder') {
 
-   
 
-   $libraries = &drupal_static(__FUNCTION__);
 
-   if (!isset($libraries)) {
 
-     $libraries = elfinder_get_libraries();
 
-   }
 
-   $path = '';
 
-   
 
-   if (!isset($libraries[$name])) {
 
-     return FALSE;
 
-   } else {
 
-     $path .= $libraries[$name];
 
-   }
 
-   return $path;
 
- }
 
- function elfinder_get_libraries() {
 
-   $directory = 'libraries';
 
-   $searchdir = array();
 
-   $profile = drupal_get_profile();
 
-   $config = conf_path();
 
-   // Similar to 'modules' and 'themes' directories in the root directory,
 
-   // certain distributions may want to place libraries into a 'libraries'
 
-   // directory in Drupal's root directory.
 
-   $searchdir[] = $directory;
 
-   // The 'profiles' directory contains pristine collections of modules and
 
-   // themes as organized by a distribution.  It is pristine in the same way
 
-   // that /modules is pristine for core; users should avoid changing anything
 
-   // there in favor of sites/all or sites/<domain> directories.
 
-   if (file_exists("profiles/$profile/$directory")) {
 
-     $searchdir[] = "profiles/$profile/$directory";
 
-   }
 
-   // Always search sites/all/*.
 
-   $searchdir[] = 'sites/all/' . $directory;
 
-   // Also search sites/<domain>/*.
 
-   if (file_exists("$config/$directory")) {
 
-     $searchdir[] = "$config/$directory";
 
-   }
 
-   // Retrieve list of directories.
 
-   // @todo Core: Allow to scan for directories.
 
-   $directories = array();
 
-   $nomask = array('CVS');
 
-   foreach ($searchdir as $dir) {
 
-     if (is_dir($dir) && $handle = opendir($dir)) {
 
-       while (FALSE !== ($file = readdir($handle))) {
 
-         if (!in_array($file, $nomask) && $file[0] != '.') {
 
-           if (is_dir("$dir/$file")) {
 
-             $directories[$file] = "$dir/$file";
 
-           }
 
-         }
 
-       }
 
-       closedir($handle);
 
-     }
 
-   }
 
-   return $directories;
 
- }
 
- /**
 
-  * library to filesystem connector path
 
-  */
 
- function elfinder_connector_path() {
 
-   return elfinder_lib_path() . '/php/elFinder.class.php';
 
- }
 
- /**
 
-   * path to files directory
 
-   */
 
- function elfinder_file_directory_path($absolute = FALSE) {
 
-   $path = variable_get('elfinder_settings_filesystem_root_custom', '');
 
-   $path = elfinder_parse_path_tokens($path);
 
-   return $path;
 
- }
 
- /**
 
-   * Returning site document root
 
-   */
 
- function elfinder_document_root() {
 
-   return realpath('');
 
- }
 
- /**
 
-   * replace path tokens to its values (%uid, %user, etc)
 
-   */
 
- function elfinder_parse_path_tokens($unparsed_path) {
 
-   global $user, $language;
 
-   $path = $unparsed_path;
 
-   
 
-   $uname = isset($user->name) ? preg_replace('/[[:^alnum:]]+/', '', $user->name) : '';
 
-   $langCode = isset($language->language) ? $language->language : 'en';
 
-   
 
-   $path_tokens = array(
 
-     '%uid' => $user->uid,
 
-     '%name' => $uname,
 
-     '%user' => $uname,
 
-     '%files' => elfinder_default_directory_path(),
 
-     '%lang' => $langCode,
 
-   );
 
-   $path = strtr($path, $path_tokens);
 
-   if (function_exists('token_replace')) {
 
-     $node = null;
 
-       
 
-     if (module_exists('og_context') AND isset($_SESSION['og_context']['gid'])) {
 
-       $gid =  $_SESSION['og_context']['gid'];
 
-       $node = node_load($gid);
 
-     } 
 
-       
 
-     $path = token_replace($path, array('node' => $node, 'user' => $user));
 
-   }
 
-   
 
-   return $path;
 
- }
 
- /**
 
-   * default path to files directory
 
-   */
 
- function elfinder_default_directory_path() {
 
-   $filepath = '';
 
-   $scheme = file_default_scheme();
 
-     
 
-   if ($scheme == 'public') {
 
-     $filepath = variable_get('file_public_path', conf_path() . '/files');  
 
-   } else {
 
-     $filepath = variable_get('file_private_path', conf_path());
 
-   }
 
-   
 
-   return $filepath;
 
- }
 
- /**
 
-   * files directory url
 
-   */
 
- function elfinder_file_directory_url($force_relative = FALSE) {
 
-   global $base_root;
 
-   $fileurl = '';
 
-   $fileurl = variable_get('elfinder_settings_filesystem_url_custom', '') . '/';
 
-   if ($fileurl) {
 
-     $fileurl = elfinder_parse_path_tokens($fileurl);
 
-   }
 
-   // Cutting off absolute url prefix
 
-   if ($force_relative) {
 
-     $fileurl = str_replace($base_root, '', $fileurl);
 
-   }
 
-   
 
-   return $fileurl;
 
- }
 
- /**
 
-   * prepare directory for files
 
-   */
 
- function elfinder_prepare_directory($directory) {
 
-   $rc = file_prepare_directory($directory, FILE_CREATE_DIRECTORY);
 
-   return $rc;
 
- }
 
- /**
 
-   * Add css
 
-   */
 
- function elfinder_add_css($path, $options = array()) {
 
-     return drupal_add_css($path, $options);
 
- }
 
- /**
 
-   * Removing unwanted css
 
-   */
 
- function elfinder_browser_css() {
 
-   $css = drupal_add_css();
 
-   $rms = array();
 
-   
 
-   if (module_exists('admin_menu')) {
 
-     $apath = drupal_get_path('module', 'admin_menu');
 
-     $atpath = drupal_get_path('module', 'admin_menu_toolbar');
 
-     $rms[] = isset($apath) ? $apath : '';
 
-     $rms[] = isset($atpath) ? $atpath : '';
 
-     foreach (array_keys($css) as $k) {
 
-    
 
-       foreach ($rms as $rm) {
 
-         if (preg_match('|' . $rm . '|', $k) && $rm != '') {
 
-         
 
-           unset($css[$k]);
 
-         }
 
-       }
 
-     }
 
-   }
 
-   
 
-   return drupal_get_css($css);
 
- }
 
- /**
 
-   * Removing unwanted js
 
-   */
 
- function elfinder_browser_js() {
 
-   $js = drupal_add_js(NULL, array('scope' => 'header'));
 
-   
 
-   if (module_exists('admin_menu')) {
 
-   
 
-     $apath = drupal_get_path('module', 'admin_menu');
 
-     $atpath = drupal_get_path('module', 'admin_menu_toolbar');
 
-     $rms[] = isset($apath) ? $apath : '';
 
-     $rms[] = isset($atpath) ? $atpath : '';
 
-     foreach (array_keys($js) as $k) {
 
-       foreach ($rms as $rm) {
 
-         if (preg_match('|' . $rm . '|', $k) && $rm != '') {
 
-           unset($js[$k]);
 
-         }
 
-       }
 
-     }
 
-   }
 
-   return drupal_get_js('header', $js);
 
- }
 
- function elfinder_system_listing($matchexpr, $path, $arg1, $arg2) {
 
-     return drupal_system_listing("/$matchexpr/", $path, $arg1, $arg2);
 
- }
 
- function elfinder_get_drupal_file_obj($uri) {
 
-     global $user;
 
-     $file = NULL;
 
-     
 
-     $fid = db_select('file_managed', 'f')
 
-       ->condition('uri', rawurldecode($uri))
 
-       ->fields('f', array('fid'))
 
-       ->execute()
 
-       ->fetchField();
 
-     if ($fid) {
 
-       $file = file_load($fid);
 
-     } 
 
-     else {
 
-       $file = new StdClass;
 
-       $file->uid = $user->uid;
 
-       $file->filename = basename($uri);
 
-       $file->uri = $uri;
 
-       $file->filemime = file_get_mimetype($uri);
 
-       if (is_file(drupal_realpath($uri))) {
 
-         $file->filesize = filesize($uri);
 
-       // Use the file_entity module's mimetype to entity type
 
-       // functionality if we have that method available.
 
-       if (function_exists('file_entity_file_type')) {
 
-         $types = file_entity_file_type($file);
 
-         if (count($types) > 0) {
 
-           $file->type = $types[0];
 
-         } else {
 
-           $file->type = 'default';
 
-         }
 
-       } else {
 
-         list($type) = explode("/", $file->filemime);
 
-         switch($type) {
 
-           case 'image':
 
-           case 'video':
 
-             $file->type = $type;
 
-             break;
 
-           default:
 
-             $file->type = 'default';
 
-             break;
 
-         }
 
-       }
 
-     }
 
-       $file->timestamp = REQUEST_TIME;
 
-       $file->status = FILE_STATUS_PERMANENT;
 
-     }
 
-     return $file;
 
- }
 
- function elfinder_file_download($uri) {
 
-   if (variable_get('elfinder_settings_filesystem_handleprivate', 'true') == 'true') {
 
-     global $user;
 
-     
 
-     $accessown = 'download own uploaded files';
 
-     $accessall = 'download all uploaded files';
 
-     
 
-     $info = elfinder_get_drupal_file_obj($uri);
 
-     if (($info->uid == $user->uid && user_access($accessown)) || user_access($accessall)) {
 
-     
 
-      $disposition = preg_match("/^(text|image)\//", $info->filemime) ? 'inline' : 'attachment';
 
-       return array(
 
-         'Content-Type' => $info->filemime,
 
-         'Content-Length' => $info->filesize,
 
-         'Content-Disposition' => elFinderDrupal::GetContentDisposition($info->filename, $info->filemime, FALSE),
 
-       );
 
-     
 
-     }
 
-  
 
-     return NULL;
 
-   }
 
- }
 
- function elfinder_admin_profile_get($name = '') {
 
-   $q = db_select('elfinder_profile', 'p')->fields('p', array('pid', 'name', 'description', 'settings'));
 
-   
 
-   if ($name) {
 
-     $q->condition('p.name', $name);
 
-   }
 
-   
 
-   $result = $q->execute();
 
-   
 
-   $profile = array();
 
-      
 
-   foreach ($result as $record) {
 
-     $row = $record;
 
-     $row->settings = unserialize($row->settings);
 
-     $profile[] = $row;
 
-   }
 
-   
 
-   if (count($profile) == 1) {
 
-     $profile = $profile[0];
 
-   }
 
-   
 
-   return $profile;
 
- }
 
- function elfinder_block_info() {
 
-   // Makes it show up on /admin/build/block page.
 
-   $blocks = array();
 
-   $blocks[0]['info'] = t('File Manager');
 
-   return $blocks;
 
- }
 
- function elfinder_block_view() {
 
-   // Show the block.
 
-   $block = array();
 
-   $block['subject'] = t('File Manager');
 
-   $block['content'] = elfinder_file_browser('backend');
 
-   return $block;
 
- }
 
- /**
 
-  * Implements hook_ckeditor_settings_alter().
 
-  */
 
- function elfinder_ckeditor_settings_alter(&$settings, $conf) {
 
-   $width = variable_get('elfinder_settings_misc_manager_width', '');
 
-   if(!$width) {
 
-     $width = ELFINDER_POPUP_WIDTH;
 
-   }
 
-   $height = variable_get('elfinder_settings_misc_manager_height', '');
 
-   if(!$height) {
 
-     $height = ELFINDER_POPUP_HEIGHT;
 
-   }
 
-   $settings['js_conf']['filebrowserWindowWidth'] = $width;
 
-   $settings['js_conf']['filebrowserWindowHeight'] = $height;
 
- }
 
 
  |