Ignore:
Timestamp:
04/02/11 03:54:45 (8 years ago)
Author:
gogo
Message:

Further fixes for MFM.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Assets/Connector/FileManager.php

    r1304 r1305  
    556556                        'MoveIsAuthorized_cb' => null, 
    557557                        'thumbnailsMustGoThroughBackend' => true, // If set true (default) all thumbnail requests go through the backend (onThumbnail), if false, thumbnails will "shortcircuit" if they exist, saving roundtrips when using POST type propagateData 
     558                        'showHiddenFoldersAndFiles'      => false, // Hide dot dirs/files ? 
    558559                        'URIpropagateData' => null 
    559560                ), (is_array($options) ? $options : array())); 
     
    668669                } 
    669670                $files = $this->scandir($dir, $filemask); 
     671 
     672    // This can not be done in scandir, because other stuff (particularly delete) 
     673    // might need those dotfiles. 
     674    if(!$this->options['showHiddenFoldersAndFiles']) 
     675    { 
     676      $nohidden = array(); 
     677      foreach($files as $file) 
     678      { 
     679        if($file[0] == '.' && $file != '.' & $file != '..') continue; 
     680        $nohidden[] = $file; 
     681      } 
     682      $files = $nohidden; 
     683    } 
    670684 
    671685                if ($files === false) 
     
    782796        { 
    783797          try 
    784           { 
    785             $thumb48  = $this->getThumb ($legal_url, $file, 48, 48, true); 
    786             $thumb250 = $this->getThumb ($legal_url, $file, 250, 250, true); 
     798          {   
     799            $thumb48  = $this->getThumb ($url, $file, 48, 48, true); 
     800            $thumb250 = $this->getThumb ($url, $file, 250, 250, true); 
    787801          } 
    788802          catch(Exception $E) 
     
    859873                } 
    860874                return array( 
    861                         'dirs' => (!empty($out[0]) ? $out[0] : array()), 
    862                         'files' => (!empty($out[1]) ? $out[1] : array()), 
     875                        'dirs' => (!empty($out[1]) ? $out[1] : array()), 
     876                        'files' => (!empty($out[0]) ? $out[0] : array()), 
    863877                        'json' => array_merge((is_array($json) ? $json : array()), array( 
    864878                                'root' => substr($this->options['directory'], 1), 
     
    16441658         *                        Examples: 'image/' or 'application/zip' 
    16451659         * 
     1660         * $_GET['asJson']        if true, returns { status:1, url: '.....' } or { status:0, error: '......' } 
     1661         * 
    16461662         * On errors a HTTP 403 error response will be sent instead. 
    16471663         */ 
     
    16891705                                throw new FileManagerException('authorized'); 
    16901706 
     1707      if($this->getGETparam('asJson', 0)) 
     1708      { 
     1709        $Response = array('status' => 1, 'url' => $this->legal2abs_url_path($fileinfo['legal_url']), 'fileinfo' => $fileinfo); 
     1710        echo json_encode($Response); 
     1711        exit; 
     1712      } 
     1713       
    16911714                        $legal_url = $fileinfo['legal_url']; 
    16921715                        $file = $fileinfo['file']; 
     
    17221745                } 
    17231746                catch(FileManagerException $e) 
    1724                 { 
     1747                {  
     1748      if($this->getGETparam('asJson', 0)) 
     1749      { 
     1750        $Response = array('status' => 0, 'error' => $e->getMessage()); 
     1751        echo json_encode($Response); 
     1752        exit; 
     1753      } 
     1754       
    17251755                        // we don't care whether it's a 404, a 403 or something else entirely: we feed 'em a 403 and that's final! 
    17261756                        send_response_status_header(403); 
     
    17291759                catch(Exception $e) 
    17301760                { 
     1761      if($this->getGETparam('asJson', 0)) 
     1762      { 
     1763        $Response = array('status' => 0, 'error' => $e->getMessage()); 
     1764        echo json_encode($Response); 
     1765        exit; 
     1766      } 
     1767       
    17311768                        // we don't care whether it's a 404, a 403 or something else entirely: we feed 'em a 403 and that's final! 
    17321769                        send_response_status_header(403); 
     
    17951832                        $mime_filter = $this->getGETparam('filter', $this->options['filter']); 
    17961833                        $tmppath = $_FILES['Filedata']['tmp_name']; 
    1797                         $mime = $this->getMimeType($tmppath); 
     1834                         
     1835                        // tmp_name does not include an extention, if we don't provide it, the mime detection is too 
     1836                        // easily thwarted and returns application/octet-stream, if you are using a filter to only have images, you're dead 
     1837                        // even if it was an image (because the GD based image check only checks if the extention is recognised)                         
     1838                        $mime = $this->getMimeType($tmppath, false, strtolower(preg_replace('/.*\.([a-z0-9]+)$/i', '$1',$_FILES['Filedata']['name'])) ); 
    17981839                        $mime_filters = $this->getAllowedMimeTypes($mime_filter); 
    17991840                        if (!$this->IsAllowedMimeType($mime, $mime_filters)) 
     
    18801921                        } 
    18811922 
    1882                         if (!headers_sent()) header('Content-Type: application/json'); 
     1923                        if (!headers_sent()) header('Content-Type: text/plain');//application/json'); 
    18831924 
    18841925                        echo json_encode(array( 
     
    19001941                $this->modify_json4exception($jserr, $emsg); 
    19011942 
    1902                 if (!headers_sent()) header('Content-Type: application/json'); 
     1943                if (!headers_sent()) header('Content-Type: text/plain');//application/json'); 
    19031944 
    19041945                // when we fail here, it's pretty darn bad and nothing to it. 
    19051946                // just push the error JSON as go. 
    1906                 echo json_encode($jserr); 
     1947                echo json_encode(array_merge($jserr, $_FILES)); 
    19071948        } 
    19081949 
     
    27872828        public function getIcon($file, $smallIcon) 
    27882829        { 
    2789                 $ext = pathinfo($file, PATHINFO_EXTENSION); 
     2830                $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); 
    27902831 
    27912832                $largeDir = (!$smallIcon ? 'Large/' : ''); 
     
    33683409         *                            the mime type from the file extension is performed. 
    33693410         */ 
    3370         public function getMimeType($file, $just_guess = false) 
     3411        public function getMimeType($file, $just_guess = false, $ext = NULL) 
    33713412        { 
    33723413                if (is_dir($file)) 
    33733414                        return 'text/directory'; 
    33743415 
     3416    if(!isset($ext)) // _FILES['tmp_name'] does not have an extention, we need to provide it    
    33753417                $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); 
    33763418 
Note: See TracChangeset for help on using the changeset viewer.