
Public Member Functions | |
| __destruct () | |
| streamOpen ($fileName, $mode= 'w+', $chmod=0666) | |
| streamLock ($exclusive=true) | |
| streamUnlock () | |
| streamRead ($length=1024) | |
| streamReadCsv ($delimiter= ',', $enclosure= '"') | |
| streamWrite ($str) | |
| streamClose () | |
| streamStat ($part=null, $default=null) | |
| getStreamException () | |
| open (array $args=array()) | |
| setAllowCreateFolders ($flag) | |
| close () | |
| mkdir ($dir, $mode=0777, $recursive=true) | |
| rmdir ($dir, $recursive=false) | |
| pwd () | |
| cd ($dir) | |
| read ($filename, $dest=null) | |
| write ($filename, $src, $mode=null) | |
| fileExists ($file, $onlyFile=true) | |
| isWriteable ($path) | |
| getDestinationFolder ($filepath) | |
| createDestinationDir ($path) | |
| checkAndCreateFolder ($folder, $mode=0777) | |
| rm ($filename) | |
| mv ($src, $dest) | |
| cp ($src, $dest) | |
| chmod ($filename, $mode) | |
| ls ($grep=null) | |
| dirsep () | |
| dirname ($file) | |
Public Attributes | |
| const | GREP_FILES = 'files_only' |
| const | GREP_DIRS = 'dirs_only' |
Protected Member Functions | |
| _parsePermissions ($mode) | |
| _getFileOwner ($filename) | |
Protected Attributes | |
| $_iwd | |
| $_cwd | |
| $_allowCreateFolders = false | |
| $_streamHandler | |
| $_streamFileName | |
| $_streamChmod | |
| $_streamLocked = false | |
Definition at line 35 of file File.php.
| __destruct | ( | ) |
Destruct
Definition at line 105 of file File.php.
00106 { 00107 if ($this->_streamHandler) { 00108 $this->streamClose(); 00109 } 00110 }
| _getFileOwner | ( | $ | filename | ) | [protected] |
Get file owner
| string | $filename protected |
Definition at line 764 of file File.php.
00765 { 00766 if( !function_exists('posix_getpwuid') ) { 00767 return 'n/a'; 00768 } 00769 00770 $owner = posix_getpwuid(fileowner($filename)); 00771 $groupinfo = posix_getgrnam(filegroup($filename)); 00772 00773 return $owner['name'] . ' / ' . $groupinfo; 00774 }
| _parsePermissions | ( | $ | mode | ) | [protected] |
Convert integer permissions format into human readable
| integer | $mode protected |
Definition at line 712 of file File.php.
00713 { 00714 if( $mode & 0x1000 ) 00715 $type='p'; /* FIFO pipe */ 00716 else if( $mode & 0x2000 ) 00717 $type='c'; /* Character special */ 00718 else if( $mode & 0x4000 ) 00719 $type='d'; /* Directory */ 00720 else if( $mode & 0x6000 ) 00721 $type='b'; /* Block special */ 00722 else if( $mode & 0x8000 ) 00723 $type='-'; /* Regular */ 00724 else if( $mode & 0xA000 ) 00725 $type='l'; /* Symbolic Link */ 00726 else if( $mode & 0xC000 ) 00727 $type='s'; /* Socket */ 00728 else 00729 $type='u'; /* UNKNOWN */ 00730 00731 /* Determine permissions */ 00732 $owner['read'] = ($mode & 00400) ? 'r' : '-'; 00733 $owner['write'] = ($mode & 00200) ? 'w' : '-'; 00734 $owner['execute'] = ($mode & 00100) ? 'x' : '-'; 00735 $group['read'] = ($mode & 00040) ? 'r' : '-'; 00736 $group['write'] = ($mode & 00020) ? 'w' : '-'; 00737 $group['execute'] = ($mode & 00010) ? 'x' : '-'; 00738 $world['read'] = ($mode & 00004) ? 'r' : '-'; 00739 $world['write'] = ($mode & 00002) ? 'w' : '-'; 00740 $world['execute'] = ($mode & 00001) ? 'x' : '-'; 00741 00742 /* Adjust for SUID, SGID and sticky bit */ 00743 if( $mode & 0x800 ) 00744 $owner["execute"] = ($owner['execute']=='x') ? 's' : 'S'; 00745 if( $mode & 0x400 ) 00746 $group["execute"] = ($group['execute']=='x') ? 's' : 'S'; 00747 if( $mode & 0x200 ) 00748 $world["execute"] = ($world['execute']=='x') ? 't' : 'T'; 00749 00750 $s=sprintf('%1s', $type); 00751 $s.=sprintf('%1s%1s%1s', $owner['read'], $owner['write'], $owner['execute']); 00752 $s.=sprintf('%1s%1s%1s', $group['read'], $group['write'], $group['execute']); 00753 $s.=sprintf('%1s%1s%1s', $world['read'], $world['write'], $world['execute']); 00754 return trim($s); 00755 }
| cd | ( | $ | dir | ) |
Change current working directory
| string | $dir |
Implements Varien_Io_Interface.
Definition at line 381 of file File.php.
00382 { 00383 if( is_dir($dir) ) { 00384 @chdir($this->_iwd); 00385 $this->_cwd = realpath($dir); 00386 return true; 00387 } else { 00388 throw new Exception('Unable to list current working directory.'); 00389 return false; 00390 } 00391 }
| checkAndCreateFolder | ( | $ | folder, | |
| $ | mode = 0777 | |||
| ) |
Check and create if not exists folder
| string | $folder | |
| int | $mode |
Definition at line 510 of file File.php.
00511 { 00512 if (is_dir($folder)) { 00513 return true; 00514 } 00515 if (!is_dir(dirname($folder))) { 00516 $this->checkAndCreateFolder(dirname($folder), $mode); 00517 } 00518 if (!is_dir($folder) && !@mkdir($folder, $mode)) { 00519 throw new Exception("Unable to create directory '{$folder}'. Access forbidden."); 00520 } 00521 return true; 00522 }
| chmod | ( | $ | filename, | |
| $ | mode | |||
| ) |
Change mode of a directory or a file
| string | $filename | |
| int | $mode |
Implements Varien_Io_Interface.
Definition at line 614 of file File.php.
00615 { 00616 if ($this->_cwd) { 00617 chdir($this->_cwd); 00618 } 00619 $result = @chmod($filename, $mode); 00620 if ($this->_iwd) { 00621 chdir($this->_iwd); 00622 } 00623 return $result; 00624 }
| close | ( | ) |
Close a connection
Implements Varien_Io_Interface.
Definition at line 305 of file File.php.
| cp | ( | $ | src, | |
| $ | dest | |||
| ) |
| createDestinationDir | ( | $ | path | ) |
Create destination folder
| string | $path |
Definition at line 495 of file File.php.
00496 { 00497 if (!$this->_allowCreateFolders) { 00498 return false; 00499 } 00500 return $this->_createDestinationFolder($this->getCleanPath($path)); 00501 }
| dirname | ( | $ | file | ) |
Definition at line 781 of file File.php.
00782 { 00783 return $this->getCleanPath(dirname($file)); 00784 }
| dirsep | ( | ) |
Retrieve directory separator in context of io resource
Reimplemented from Varien_Io_Abstract.
Definition at line 776 of file File.php.
| fileExists | ( | $ | file, | |
| $ | onlyFile = true | |||
| ) |
| getDestinationFolder | ( | $ | filepath | ) |
| getStreamException | ( | ) |
| isWriteable | ( | $ | path | ) |
| ls | ( | $ | grep = null |
) |
Get list of cwd subdirectories and files
Suggestions (from moshe):
| Varien_Io_File | const public |
Implements Varien_Io_Interface.
Definition at line 640 of file File.php.
00641 { 00642 $ignoredDirectories = Array('.', '..'); 00643 00644 if( is_dir($this->_cwd) ) { 00645 $dir = $this->_cwd; 00646 } elseif( is_dir($this->_iwd) ) { 00647 $dir = $this->_iwd; 00648 } else { 00649 throw new Exception('Unable to list current working directory.'); 00650 } 00651 00652 $list = Array(); 00653 00654 if ($dh = opendir($dir)) { 00655 while (($entry = readdir($dh)) !== false) { 00656 $list_item = Array(); 00657 00658 $fullpath = $dir . DIRECTORY_SEPARATOR . $entry; 00659 00660 if( ($grep == self::GREP_DIRS) && (!is_dir($fullpath)) ) { 00661 continue; 00662 } elseif( ($grep == self::GREP_FILES) && (!is_file($fullpath)) ) { 00663 continue; 00664 } elseif( in_array($entry, $ignoredDirectories) ) { 00665 continue; 00666 } 00667 00668 $list_item['text'] = $entry; 00669 $list_item['mod_date'] = date ('Y-m-d H:i:s', filectime($fullpath)); 00670 $list_item['permissions'] = $this->_parsePermissions(fileperms($fullpath)); 00671 $list_item['owner'] = $this->_getFileOwner($fullpath); 00672 00673 if( is_file($fullpath) ) { 00674 $pathinfo = pathinfo($fullpath); 00675 $list_item['size'] = filesize($fullpath); 00676 $list_item['leaf'] = true; 00677 if( isset($pathinfo['extension']) && in_array(strtolower($pathinfo['extension']), Array('jpg', 'jpeg', 'gif', 'bmp', 'png')) && $list_item['size'] > 0 ) { 00678 $list_item['is_image'] = true; 00679 $list_item['filetype'] = $pathinfo['extension']; 00680 } elseif( $list_item['size'] == 0 ) { 00681 $list_item['is_image'] = false; 00682 $list_item['filetype'] = 'unknown'; 00683 } elseif( isset($pathinfo['extension']) ) { 00684 $list_item['is_image'] = false; 00685 $list_item['filetype'] = $pathinfo['extension']; 00686 } else { 00687 $list_item['is_image'] = false; 00688 $list_item['filetype'] = 'unknown'; 00689 } 00690 } else { 00691 $list_item['leaf'] = false; 00692 $list_item['id'] = $fullpath; 00693 } 00694 00695 $list[] = $list_item; 00696 } 00697 closedir($dh); 00698 } else { 00699 throw new Exception('Unable to list current working directory. Access forbidden.'); 00700 } 00701 00702 return $list; 00703 }
| mkdir | ( | $ | dir, | |
| $ | mode = 0777, |
|||
| $ | recursive = true | |||
| ) |
Create a directory
| string | $dir | |
| int | $mode | |
| boolean | $recursive |
Implements Varien_Io_Interface.
Definition at line 318 of file File.php.
00319 { 00320 if ($this->_cwd) { 00321 chdir($this->_cwd); 00322 } 00323 00324 $result = @mkdir($dir, $mode, $recursive); 00325 if ($result) { 00326 @chmod($dir, $mode); 00327 } 00328 if ($this->_iwd) { 00329 chdir($this->_iwd); 00330 } 00331 return $result; 00332 }
| mv | ( | $ | src, | |
| $ | dest | |||
| ) |
Rename or move a directory or a file
| string | $src | |
| string | $dest |
Implements Varien_Io_Interface.
Definition at line 584 of file File.php.
00585 { 00586 chdir($this->_cwd); 00587 $result = @rename($src, $dest); 00588 chdir($this->_iwd); 00589 return $result; 00590 }
Open a connection
Possible arguments:
| array | $args |
Reimplemented from Varien_Io_Abstract.
Definition at line 272 of file File.php.
00273 { 00274 if (!empty($args['path'])) { 00275 if ($args['path']) { 00276 if($this->_allowCreateFolders ) { 00277 $this->_createDestinationFolder($args['path']); 00278 } 00279 } 00280 } 00281 00282 $this->_iwd = getcwd(); 00283 $this->cd(!empty($args['path']) ? $args['path'] : $this->_iwd); 00284 return true; 00285 }
| pwd | ( | ) |
Get current working directory
Implements Varien_Io_Interface.
Definition at line 370 of file File.php.
| read | ( | $ | filename, | |
| $ | dest = null | |||
| ) |
Read a file to result, file or stream
If $dest is null the output will be returned. Otherwise it will be saved to the file or stream and operation result is returned.
| string | $filename | |
| string|resource | $dest |
Implements Varien_Io_Interface.
Definition at line 403 of file File.php.
00404 { 00405 if (!is_null($dest)) { 00406 chdir($this->_cwd); 00407 $result = @copy($filename, $dest); 00408 chdir($this->_iwd); 00409 return $result; 00410 } 00411 00412 chdir($this->_cwd); 00413 $result = @file_get_contents($filename); 00414 chdir($this->_iwd); 00415 00416 return $result; 00417 }
| rm | ( | $ | filename | ) |
Delete a file
| string | $filename |
Implements Varien_Io_Interface.
Definition at line 569 of file File.php.
00570 { 00571 @chdir($this->_cwd); 00572 $result = @unlink($filename); 00573 @chdir($this->_iwd); 00574 return $result; 00575 }
| rmdir | ( | $ | dir, | |
| $ | recursive = false | |||
| ) |
Delete a directory
| string | $dir |
Implements Varien_Io_Interface.
Definition at line 340 of file File.php.
00341 { 00342 if( $this->_cwd ) { 00343 @chdir($this->_cwd); 00344 } 00345 00346 if( $recursive ) { 00347 if( is_dir( $dir ) ){ 00348 foreach( scandir( $dir ) as $item ){ 00349 if( !strcmp( $item, '.' ) || !strcmp( $item, '..' ) ) 00350 continue; 00351 $this->rmdir( $dir . "/" . $item, $recursive ); 00352 } 00353 $result = @rmdir( $dir ); 00354 } else { 00355 $result = @unlink( $dir ); 00356 } 00357 } else { 00358 $result = @rmdir($dir); 00359 } 00360 00361 @chdir($this->_iwd); 00362 return $result; 00363 }
| setAllowCreateFolders | ( | $ | flag | ) |
Used to set _allowCreateFolders value
| mixed | $flag public |
Reimplemented from Varien_Io_Abstract.
Definition at line 294 of file File.php.
| streamClose | ( | ) |
Close an open file pointer Set chmod on a file
Definition at line 220 of file File.php.
00221 { 00222 if (!$this->_streamHandler) { 00223 return false; 00224 } 00225 00226 if ($this->_streamLocked) { 00227 $this->streamUnlock(); 00228 } 00229 @fclose($this->_streamHandler); 00230 @chmod($this->_streamFileName, $this->_streamChmod); 00231 return true; 00232 }
| streamLock | ( | $ | exclusive = true |
) |
| streamOpen | ( | $ | fileName, | |
| $ | mode = 'w+', |
|||
| $ | chmod = 0666 | |||
| ) |
Open file in stream mode For set folder for file use open method
| string | $fileName | |
| string | $mode |
Definition at line 120 of file File.php.
00121 { 00122 $writeableMode = preg_match('#^[wax]#i', $mode); 00123 if ($writeableMode && !is_writeable($this->_cwd)) { 00124 throw new Exception('Permission denied for write to ' . $this->_cwd); 00125 } 00126 @chdir($this->_cwd); 00127 $this->_streamHandler = @fopen($fileName, $mode); 00128 @chdir($this->_iwd); 00129 if ($this->_streamHandler === false) { 00130 throw new Exception('Error write to file ' . $fileName); 00131 } 00132 00133 $this->_streamFileName = $fileName; 00134 $this->_streamChmod = $chmod; 00135 return true; 00136 }
| streamRead | ( | $ | length = 1024 |
) |
Binary-safe file read
| int | $length |
Definition at line 173 of file File.php.
00174 { 00175 if (!$this->_streamHandler) { 00176 return false; 00177 } 00178 if (feof($this->_streamHandler)) { 00179 return false; 00180 } 00181 return @fgets($this->_streamHandler, $length); 00182 }
| streamReadCsv | ( | $ | delimiter = ',', |
|
| $ | enclosure = '"' | |||
| ) |
Gets line from file pointer and parse for CSV fields
Definition at line 189 of file File.php.
00190 { 00191 if (!$this->_streamHandler) { 00192 return false; 00193 } 00194 if (!ini_get('auto_detect_line_endings')) { 00195 ini_set('auto_detect_line_endings', 1); 00196 } 00197 return @fgetcsv($this->_streamHandler, 0, $delimiter, $enclosure); 00198 }
| streamStat | ( | $ | part = null, |
|
| $ | default = null | |||
| ) |
Retrieve open file statistic
| string | $part the part of statistic | |
| mixed | $default default value for part |
Definition at line 241 of file File.php.
00242 { 00243 if (!$this->_streamHandler) { 00244 return false; 00245 } 00246 $stat = @fstat($this->_streamHandler); 00247 if (!is_null($part)) { 00248 return isset($stat[$part]) ? $stat[$part] : $default; 00249 } 00250 return $stat; 00251 }
| streamUnlock | ( | ) |
| streamWrite | ( | $ | str | ) |
| write | ( | $ | filename, | |
| $ | src, | |||
| $ | mode = null | |||
| ) |
Write a file from string, file or stream
| string | $filename | |
| string|resource | $src |
Implements Varien_Io_Interface.
Definition at line 426 of file File.php.
00427 { 00428 if (is_string($src) && is_readable($src)) { 00429 $src = realpath($src); 00430 $srcIsFile = true; 00431 } elseif (is_string($src) || is_resource($src)) { 00432 $srcIsFile = false; 00433 } else { 00434 return false; 00435 } 00436 @chdir($this->_cwd); 00437 00438 if (file_exists($filename)) { 00439 if (!is_writeable($filename)) { 00440 printf('File %s don\'t writeable', $filename); 00441 return false; 00442 } 00443 } else { 00444 if (!is_writable(dirname($filename))) { 00445 printf('Folder %s don\'t writeable', dirname($filename)); 00446 return false; 00447 } 00448 } 00449 if ($srcIsFile) { 00450 $result = @copy($src, $filename); 00451 } else { 00452 $result = @file_put_contents($filename, $src); 00453 } 00454 if (!is_null($mode)) { 00455 @chmod($filename, $mode); 00456 } 00457 chdir($this->_iwd); 00458 return $result; 00459 }
$_allowCreateFolders = false [protected] |
| const GREP_FILES = 'files_only' |
1.5.8