[ Index ] |
|
Code source de b2evolution 2.1.0-beta |
1 <?php 2 /** 3 * This file implements the FileCache class. 4 * 5 * This file is part of the evoCore framework - {@link http://evocore.net/} 6 * See also {@link http://sourceforge.net/projects/evocms/}. 7 * 8 * @copyright (c)2003-2007 by Francois PLANQUE - {@link http://fplanque.net/} 9 * 10 * {@internal License choice 11 * - If you have received this file as part of a package, please find the license.txt file in 12 * the same folder or the closest folder above for complete license terms. 13 * - If you have received this file individually (e-g: from http://evocms.cvs.sourceforge.net/) 14 * then you must choose one of the following licenses before using the file: 15 * - GNU General Public License 2 (GPL) - http://www.opensource.org/licenses/gpl-license.php 16 * - Mozilla Public License 1.1 (MPL) - http://www.opensource.org/licenses/mozilla1.1.php 17 * }} 18 * 19 * {@internal Open Source relicensing agreement: 20 * }} 21 * 22 * @package evocore 23 * 24 * {@internal Below is a list of authors who have contributed to design/coding of this file: }} 25 * @author fplanque: Francois PLANQUE 26 * 27 * @version $Id: _filecache.class.php,v 1.1 2007/06/25 10:59:54 fplanque Exp $ 28 */ 29 if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' ); 30 31 load_class('_core/model/dataobjects/_dataobjectcache.class.php'); 32 33 /** 34 * FileCache Class 35 * 36 * @package evocore 37 */ 38 class FileCache extends DataObjectCache 39 { 40 /** 41 * Cache for 'root_type:root_in_type_ID:relative_path' -> File object reference 42 * @access private 43 * @var array 44 */ 45 var $cache_root_and_path = array(); 46 47 /** 48 * Constructor 49 */ 50 function FileCache() 51 { 52 parent::DataObjectCache( 'File', false, 'T_files', 'file_', 'file_ID' ); 53 } 54 55 56 /** 57 * Instantiate a DataObject from a table row and then cache it. 58 * 59 * @param Object Database row 60 * @return Object 61 */ 62 function & instantiate( & $db_row ) 63 { 64 // Get ID of the object we'ere preparing to instantiate... 65 $obj_ID = $db_row->{$this->dbIDname}; 66 67 if( !empty($obj_ID) ) 68 { // If the object ID is valid: 69 if( !isset($this->cache[$obj_ID]) ) 70 { // If not already cached: 71 // Instantiate a File object for this line: 72 $current_File = new File( $db_row->file_root_type, $db_row->file_root_ID, $db_row->file_path ); // COPY! 73 // Flow meta data into File object: 74 $current_File->load_meta( false, $db_row ); 75 $this->add( $current_File ); 76 } 77 else 78 { // Already cached: 79 $current_File = & $this->cache[$obj_ID]; 80 // Flow meta data into File object: 81 $current_File->load_meta( false, $db_row ); 82 } 83 } 84 85 return $this->cache[$obj_ID]; 86 } 87 88 89 /** 90 * Creates an object of the {@link File} class, while providing caching 91 * and making sure that only one reference to a file exists. 92 * 93 * @param string Root type: 'user', 'group' or 'collection' 94 * @param integer ID of the user, the group or the collection the file belongs to... 95 * @param string Subpath for this file/folder, relative the associated root, including trailing slash (if directory) 96 * @param boolean check for meta data? 97 * @return File a {@link File} object 98 */ 99 function & get_by_root_and_path( $root_type, $root_in_type_ID, $rel_path, $load_meta = false ) 100 { 101 global $Debuglog, $cache_File; 102 103 if( is_windows() ) 104 { 105 $rel_path = strtolower(str_replace( '\\', '/', $rel_path )); 106 } 107 108 // Generate cache key for this file: 109 $cacheindex = $root_type.':'.$root_in_type_ID.':'.$rel_path; 110 111 if( isset( $this->cache_root_and_path[$cacheindex] ) ) 112 { // Already in cache 113 $Debuglog->add( 'File retrieved from cache: '.$cacheindex, 'files' ); 114 $File = & $this->cache_root_and_path[$cacheindex]; 115 if( $load_meta ) 116 { // Make sure meta is loaded: 117 $File->load_meta(); 118 } 119 } 120 else 121 { // Not in cache 122 $Debuglog->add( 'File not in cache: '.$cacheindex, 'files' ); 123 $File = new File( $root_type, $root_in_type_ID, $rel_path, $load_meta ); // COPY !! 124 $this->cache_root_and_path[$cacheindex] = & $File; 125 } 126 return $File; 127 } 128 129 130 } 131 132 /* 133 * $Log: _filecache.class.php,v $ 134 * Revision 1.1 2007/06/25 10:59:54 fplanque 135 * MODULES (refactored MVC) 136 * 137 * Revision 1.7 2007/04/26 00:11:10 fplanque 138 * (c) 2007 139 * 140 * Revision 1.6 2007/01/25 05:09:53 fplanque 141 * bugfix 142 * 143 * Revision 1.5 2006/12/07 20:03:32 fplanque 144 * Woohoo! File editing... means all skin editing. 145 * 146 * Revision 1.4 2006/11/24 18:27:24 blueyed 147 * Fixed link to b2evo CVS browsing interface in file docblocks 148 */ 149 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Thu Nov 29 23:58:50 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |