Overview

Packages

  • currencysymbol
  • MAbout
  • Mage
    • Admin
    • Adminhtml
    • AdminNotification
    • Api
    • Api2
    • Authorizenet
    • Backup
    • Bundle
    • Captcha
    • Catalog
    • CatalogIndex
    • CatalogInventory
    • CatalogRule
    • CatalogSearch
    • Centinel
    • Checkout
    • Cms
    • Compiler
    • Connect
    • Contacts
    • Core
    • Cron
    • CurrencySymbol
    • Customer
    • Dataflow
    • Directory
    • DirtectPost
    • Downloadable
    • Eav
    • GiftMessage
    • GoogleAnalytics
    • GoogleBase
    • GoogleCheckout
    • ImportExport
    • Index
    • Install
    • Log
    • Media
    • Newsletter
    • Oauth
    • Page
    • PageCache
    • Paygate
    • Payment
    • Paypal
    • PaypalUk
    • Persistent
    • Poll
    • ProductAlert
    • Rating
    • Reports
    • Review
    • Rss
    • Rule
    • Sales
    • SalesRule
    • Sedfriend
    • Sendfriend
    • Shipping
    • Sitemap
    • Tag
    • Tax
    • Usa
    • Weee
    • Widget
    • Wishlist
    • XmlConnect
  • None
  • Phoenix
    • Moneybookers
  • PHP
  • Zend
    • Date
    • Mime
    • XmlRpc

Classes

  • Mage
  • Mage_Adminhtml_Block_Html_Date
  • Mage_Adminhtml_Block_Html_Select
  • Mage_Api_Model_Wsdl_Config_Element
  • Mage_Captcha_Adminhtml_RefreshController
  • Mage_Captcha_RefreshController
  • Mage_Core_AjaxController
  • Mage_Core_Block_Abstract
  • Mage_Core_Block_Flush
  • Mage_Core_Block_Html_Calendar
  • Mage_Core_Block_Html_Date
  • Mage_Core_Block_Html_Link
  • Mage_Core_Block_Html_Select
  • Mage_Core_Block_Messages
  • Mage_Core_Block_Profiler
  • Mage_Core_Block_Store_Switcher
  • Mage_Core_Block_Template
  • Mage_Core_Block_Template_Facade
  • Mage_Core_Block_Template_Smarty
  • Mage_Core_Block_Template_Zend
  • Mage_Core_Block_Text
  • Mage_Core_Block_Text_List
  • Mage_Core_Block_Text_List_Item
  • Mage_Core_Block_Text_List_Link
  • Mage_Core_Block_Text_Tag
  • Mage_Core_Block_Text_Tag_Css
  • Mage_Core_Block_Text_Tag_Css_Admin
  • Mage_Core_Block_Text_Tag_Debug
  • Mage_Core_Block_Text_Tag_Js
  • Mage_Core_Block_Text_Tag_Meta
  • Mage_Core_Controller_Front_Action
  • Mage_Core_Controller_Front_Router
  • Mage_Core_Controller_Request_Http
  • Mage_Core_Controller_Response_Http
  • Mage_Core_Controller_Varien_Action
  • Mage_Core_Controller_Varien_Front
  • Mage_Core_Controller_Varien_Router_Abstract
  • Mage_Core_Controller_Varien_Router_Admin
  • Mage_Core_Controller_Varien_Router_Default
  • Mage_Core_Controller_Varien_Router_Standard
  • Mage_Core_Helper_Abstract
  • Mage_Core_Helper_Cookie
  • Mage_Core_Helper_Data
  • Mage_Core_Helper_File_Storage
  • Mage_Core_Helper_File_Storage_Database
  • Mage_Core_Helper_Hint
  • Mage_Core_Helper_Http
  • Mage_Core_Helper_Js
  • Mage_Core_Helper_String
  • Mage_Core_Helper_Translate
  • Mage_Core_Helper_Url
  • Mage_Core_Helper_Url_Rewrite
  • Mage_Core_IndexController
  • Mage_Core_Model_Abstract
  • Mage_Core_Model_App
  • Mage_Core_Model_App_Area
  • Mage_Core_Model_App_Emulation
  • Mage_Core_Model_Cache
  • Mage_Core_Model_Calculator
  • Mage_Core_Model_Config
  • Mage_Core_Model_Config_Base
  • Mage_Core_Model_Config_Data
  • Mage_Core_Model_Config_Element
  • Mage_Core_Model_Config_Options
  • Mage_Core_Model_Config_System
  • Mage_Core_Model_Cookie
  • Mage_Core_Model_Date
  • Mage_Core_Model_Design
  • Mage_Core_Model_Design_Package
  • Mage_Core_Model_Design_Source_Design
  • Mage_Core_Model_Email
  • Mage_Core_Model_Email_Info
  • Mage_Core_Model_Email_Template
  • Mage_Core_Model_Email_Template_Filter
  • Mage_Core_Model_Email_Template_Mailer
  • Mage_Core_Model_Email_Transport
  • Mage_Core_Model_Encryption
  • Mage_Core_Model_File_Storage
  • Mage_Core_Model_File_Storage_Abstract
  • Mage_Core_Model_File_Storage_Database
  • Mage_Core_Model_File_Storage_Database_Abstract
  • Mage_Core_Model_File_Storage_Directory_Database
  • Mage_Core_Model_File_Storage_File
  • Mage_Core_Model_File_Storage_Flag
  • Mage_Core_Model_File_Uploader
  • Mage_Core_Model_File_Validator_AvailablePath
  • Mage_Core_Model_File_Validator_NotProtectedExtension
  • Mage_Core_Model_Flag
  • Mage_Core_Model_Input_Filter
  • Mage_Core_Model_Input_Filter_MaliciousCode
  • Mage_Core_Model_Language
  • Mage_Core_Model_Layout
  • Mage_Core_Model_Layout_Data
  • Mage_Core_Model_Layout_Element
  • Mage_Core_Model_Layout_Update
  • Mage_Core_Model_Locale
  • Mage_Core_Model_Locale_Config
  • Mage_Core_Model_Log_Adapter
  • Mage_Core_Model_Magento_Api
  • Mage_Core_Model_Magento_Api_V2
  • Mage_Core_Model_Message
  • Mage_Core_Model_Message_Abstract
  • Mage_Core_Model_Message_Collection
  • Mage_Core_Model_Message_Error
  • Mage_Core_Model_Message_Notice
  • Mage_Core_Model_Message_Success
  • Mage_Core_Model_Message_Warning
  • Mage_Core_Model_Mysql4_Abstract
  • Mage_Core_Model_Mysql4_Cache
  • Mage_Core_Model_Mysql4_Collection_Abstract
  • Mage_Core_Model_Mysql4_Config
  • Mage_Core_Model_Mysql4_Config_Data
  • Mage_Core_Model_Mysql4_Config_Data_Collection
  • Mage_Core_Model_Mysql4_Design
  • Mage_Core_Model_Mysql4_Design_Collection
  • Mage_Core_Model_Mysql4_Design_Package_Collection
  • Mage_Core_Model_Mysql4_Design_Theme
  • Mage_Core_Model_Mysql4_Email_Template
  • Mage_Core_Model_Mysql4_Email_Template_Collection
  • Mage_Core_Model_Mysql4_File_Storage_Abstract
  • Mage_Core_Model_Mysql4_File_Storage_Database
  • Mage_Core_Model_Mysql4_File_Storage_Directory_Database
  • Mage_Core_Model_Mysql4_File_Storage_File
  • Mage_Core_Model_Mysql4_Flag
  • Mage_Core_Model_Mysql4_Language
  • Mage_Core_Model_Mysql4_Language_Collection
  • Mage_Core_Model_Mysql4_Layout
  • Mage_Core_Model_Mysql4_Resource
  • Mage_Core_Model_Mysql4_Session
  • Mage_Core_Model_Mysql4_Store
  • Mage_Core_Model_Mysql4_Store_Collection
  • Mage_Core_Model_Mysql4_Store_Group
  • Mage_Core_Model_Mysql4_Store_Group_Collection
  • Mage_Core_Model_Mysql4_Translate
  • Mage_Core_Model_Mysql4_Translate_String
  • Mage_Core_Model_Mysql4_Url_Rewrite
  • Mage_Core_Model_Mysql4_Url_Rewrite_Collection
  • Mage_Core_Model_Mysql4_Variable
  • Mage_Core_Model_Mysql4_Variable_Collection
  • Mage_Core_Model_Mysql4_Website
  • Mage_Core_Model_Mysql4_Website_Collection
  • Mage_Core_Model_Observer
  • Mage_Core_Model_Resource
  • Mage_Core_Model_Resource_Abstract
  • Mage_Core_Model_Resource_Cache
  • Mage_Core_Model_Resource_Config
  • Mage_Core_Model_Resource_Config_Data
  • Mage_Core_Model_Resource_Config_Data_Collection
  • Mage_Core_Model_Resource_Db_Abstract
  • Mage_Core_Model_Resource_Db_Collection_Abstract
  • Mage_Core_Model_Resource_Design
  • Mage_Core_Model_Resource_Design_Collection
  • Mage_Core_Model_Resource_Design_Package_Collection
  • Mage_Core_Model_Resource_Email_Template
  • Mage_Core_Model_Resource_Email_Template_Collection
  • Mage_Core_Model_Resource_Entity_Abstract
  • Mage_Core_Model_Resource_Entity_Table
  • Mage_Core_Model_Resource_File_Storage_Abstract
  • Mage_Core_Model_Resource_File_Storage_Database
  • Mage_Core_Model_Resource_File_Storage_Directory_Database
  • Mage_Core_Model_Resource_File_Storage_File
  • Mage_Core_Model_Resource_Flag
  • Mage_Core_Model_Resource_Helper_Abstract
  • Mage_Core_Model_Resource_Helper_Mysql4
  • Mage_Core_Model_Resource_Iterator
  • Mage_Core_Model_Resource_Language
  • Mage_Core_Model_Resource_Language_Collection
  • Mage_Core_Model_Resource_Layout
  • Mage_Core_Model_Resource_Resource
  • Mage_Core_Model_Resource_Session
  • Mage_Core_Model_Resource_Setup
  • Mage_Core_Model_Resource_Setup_Query_Modifier
  • Mage_Core_Model_Resource_Store
  • Mage_Core_Model_Resource_Store_Collection
  • Mage_Core_Model_Resource_Store_Group
  • Mage_Core_Model_Resource_Store_Group_Collection
  • Mage_Core_Model_Resource_Transaction
  • Mage_Core_Model_Resource_Translate
  • Mage_Core_Model_Resource_Translate_String
  • Mage_Core_Model_Resource_Type_Abstract
  • Mage_Core_Model_Resource_Type_Db
  • Mage_Core_Model_Resource_Type_Db_Mysqli
  • Mage_Core_Model_Resource_Type_Db_Mysqli_Setup
  • Mage_Core_Model_Resource_Type_Db_Pdo_Mysql
  • Mage_Core_Model_Resource_Url_Rewrite
  • Mage_Core_Model_Resource_Url_Rewrite_Collection
  • Mage_Core_Model_Resource_Variable
  • Mage_Core_Model_Resource_Variable_Collection
  • Mage_Core_Model_Resource_Website
  • Mage_Core_Model_Resource_Website_Collection
  • Mage_Core_Model_Session
  • Mage_Core_Model_Session_Abstract
  • Mage_Core_Model_Session_Abstract_Varien
  • Mage_Core_Model_Session_Abstract_Zend
  • Mage_Core_Model_Source_Email_Variables
  • Mage_Core_Model_Store
  • Mage_Core_Model_Store_Api
  • Mage_Core_Model_Store_Api_V2
  • Mage_Core_Model_Store_Group
  • Mage_Core_Model_Template
  • Mage_Core_Model_Translate
  • Mage_Core_Model_Translate_Expr
  • Mage_Core_Model_Translate_Inline
  • Mage_Core_Model_Translate_String
  • Mage_Core_Model_Url
  • Mage_Core_Model_Url_Rewrite
  • Mage_Core_Model_Url_Validator
  • Mage_Core_Model_Variable
  • Mage_Core_Model_Variable_Config
  • Mage_Core_Model_Variable_Observer
  • Mage_Core_Model_Website
  • Mage_Page_Block_Switch
  • Mage_Page_Block_Template_Container
  • Mage_Page_Block_Template_Links
  • Mage_Page_Block_Template_Links_Block
  • Mage_Sales_Model_Quote_Address_Total_Collector

Exceptions

  • Mage_Core_Controller_Varien_Exception
  • Mage_Core_Exception
  • Mage_Core_Model_Session_Exception
  • Mage_Core_Model_Store_Exception

Functions

  • destruct
  • is_dir_writeable
  • is_empty_date
  • mageCoreErrorHandler
  • mageDebugBacktrace
  • mageDelTree
  • mageFindClassFile
  • mageParseCsv
  • mageSendErrorFooter
  • mageSendErrorHeader
  • mageUndoMagicQuotes
  • now
  • sys_get_temp_dir
  • uc_words
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Magento
  4:  *
  5:  * NOTICE OF LICENSE
  6:  *
  7:  * This source file is subject to the Open Software License (OSL 3.0)
  8:  * that is bundled with this package in the file LICENSE.txt.
  9:  * It is also available through the world-wide-web at this URL:
 10:  * http://opensource.org/licenses/osl-3.0.php
 11:  * If you did not receive a copy of the license and are unable to
 12:  * obtain it through the world-wide-web, please send an email
 13:  * to license@magentocommerce.com so we can send you a copy immediately.
 14:  *
 15:  * DISCLAIMER
 16:  *
 17:  * Do not edit or add to this file if you wish to upgrade Magento to newer
 18:  * versions in the future. If you wish to customize Magento for your
 19:  * needs please refer to http://www.magentocommerce.com for more information.
 20:  *
 21:  * @category    Mage
 22:  * @package     Mage_Core
 23:  * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
 24:  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 25:  */
 26: 
 27: /**
 28:  * Database saving file helper
 29:  *
 30:  * @category    Mage
 31:  * @package     Mage_Core
 32:  * @author      Magento Core Team <core@magentocommerce.com>
 33:  */
 34: class Mage_Core_Helper_File_Storage_Database extends Mage_Core_Helper_Abstract
 35: {
 36:     /**
 37:      * Database storage model
 38:      * @var null|Mage_Core_Model_File_Storage_Database
 39:      */
 40:     protected $_databaseModel = null;
 41: 
 42:     /**
 43:      * Storage resource model
 44:      * @var null|Mage_Core_Model_Mysql4_File_Storage_Database
 45:      */
 46:     protected $_resourceModel = null;
 47: 
 48:     /**
 49:      * Db usage flag
 50:      *
 51:      * @var bool
 52:      */
 53:     protected $_useDb = null;
 54: 
 55:     /**
 56:      * Media dir
 57:      *
 58:      * @var string
 59:      */
 60:     protected $_mediaBaseDirectory;
 61: 
 62:     /**
 63:      * Check if we use DB storage
 64:      * Note: Disabled as not completed feature
 65:      *
 66:      * @return bool
 67:      */
 68:     public function checkDbUsage()
 69:     {
 70:         if (null === $this->_useDb) {
 71:             $currentStorage = (int) Mage::app()->getConfig()
 72:                 ->getNode(Mage_Core_Model_File_Storage::XML_PATH_STORAGE_MEDIA);
 73:             $this->_useDb = ($currentStorage == Mage_Core_Model_File_Storage::STORAGE_MEDIA_DATABASE);
 74:         }
 75: 
 76:         return $this->_useDb;
 77:     }
 78: 
 79:     /**
 80:      * Get database storage model
 81:      *
 82:      * @return Mage_Core_Model_File_Storage_Database
 83:      */
 84:     public function getStorageDatabaseModel()
 85:     {
 86:         if (is_null($this->_databaseModel)) {
 87:             $this->_databaseModel = Mage::getModel('core/file_storage_database');
 88:         }
 89: 
 90:         return $this->_databaseModel;
 91:     }
 92: 
 93:     /**
 94:      * Get file storage model
 95:      *
 96:      * @return Mage_Core_Model_File_Storage_File
 97:      */
 98:     public function getStorageFileModel()
 99:     {
100:         return Mage::getSingleton('core/file_storage_file');
101:     }
102: 
103:     /**
104:      * Get storage model
105:      *
106:      * @return Mage_Core_Model_Mysql4_File_Storage_Database
107:      */
108:     public function getResourceStorageModel()
109:     {
110:         if (is_null($this->_resourceModel)) {
111:             $this->_resourceModel = $this->getStorageDatabaseModel()->getResource();
112:         }
113:         return $this->_resourceModel;
114:     }
115: 
116:     /**
117:      * Save file in DB storage
118:      *
119:      * @param string $filename
120:      */
121:     public function saveFile($filename)
122:     {
123:         if ($this->checkDbUsage()) {
124:             $this->getStorageDatabaseModel()->saveFile($this->_removeAbsPathFromFileName($filename));
125:         }
126:     }
127: 
128:     /**
129:      * Rename file in DB storage
130:      *
131:      * @param string $oldName
132:      * @param string $newName
133:      */
134:     public function renameFile($oldName, $newName)
135:     {
136:         if ($this->checkDbUsage()) {
137:             $this->getStorageDatabaseModel()
138:                 ->renameFile($this->_removeAbsPathFromFileName($oldName), $this->_removeAbsPathFromFileName($newName));
139:         }
140:     }
141: 
142:     /**
143:      * Copy file in DB storage
144:      *
145:      * @param string $oldName
146:      * @param string $newName
147:      */
148:     public function copyFile($oldName, $newName) {
149:         if ($this->checkDbUsage()) {
150:             $this->getStorageDatabaseModel()
151:                 ->copyFile($this->_removeAbsPathFromFileName($oldName), $this->_removeAbsPathFromFileName($newName));
152:         }
153:     }
154: 
155:     /**
156:      * Check whether file exists in DB
157:      *
158:      * @param string $filename can be both full path or partial (like in DB)
159:      * @return bool|null
160:      */
161:     public function fileExists($filename)
162:     {
163:         if ($this->checkDbUsage()) {
164:             return $this->getStorageDatabaseModel()->fileExists($this->_removeAbsPathFromFileName($filename));
165:         } else {
166:             return null;
167:         }
168:     }
169: 
170:     /**
171:      * Get unique name for passed file in case this file already exists
172:      *
173:      * @param string $directory - can be both full path or partial (like in DB)
174:      * @param string $filename - not just a filename. Can have directory chunks. return will have this form
175:      * @return string
176:      */
177:     public function getUniqueFilename($directory, $filename)
178:     {
179:         if ($this->checkDbUsage()) {
180:            $directory = $this->_removeAbsPathFromFileName($directory);
181:             if($this->fileExists($directory . $filename)) {
182:                 $index = 1;
183:                 $extension = strrchr($filename, '.');
184:                 $filenameWoExtension = substr($filename, 0, -1 * strlen($extension));
185:                 while ($this->fileExists($directory . $filenameWoExtension . '_' . $index . $extension)) {
186:                     $index ++;
187:                 }
188:                 $filename = $filenameWoExtension . '_' . $index . $extension;
189:             }
190:         }
191:         return $filename;
192:     }
193: 
194:     /**
195:      * Save database file to file system
196:      *
197:      * @param string $filename
198:      * @return bool|int
199:      */
200:     public function saveFileToFilesystem($filename) {
201:         if ($this->checkDbUsage()) {
202:             /** @var $file Mage_Core_Model_File_Storage_Database */
203:             $file = Mage::getModel('core/file_storage_database')
204:                 ->loadByFilename($this->_removeAbsPathFromFileName($filename));
205:             if (!$file->getId()) {
206:                 return false;
207:             }
208: 
209:             return $this->getStorageFileModel()->saveFile($file, true);
210:         }
211:     }
212: 
213:     /**
214:      * Return relative uri for media content by full path
215:      *
216:      * @param string $fullPath
217:      * @return string
218:      */
219:     public function getMediaRelativePath($fullPath)
220:     {
221:         $relativePath = ltrim(str_replace($this->getMediaBaseDir(), '', $fullPath), '\\/');
222:         return str_replace(DS, '/', $relativePath);
223:     }
224: 
225:     /**
226:      * Deletes from DB files, which belong to one folder
227:      *
228:      * @param string $folderName
229:      */
230:     public function deleteFolder($folderName)
231:     {
232:         if ($this->checkDbUsage()) {
233:             $this->getResourceStorageModel()->deleteFolder($this->_removeAbsPathFromFileName($folderName));
234:         }
235:     }
236: 
237:     /**
238:      * Deletes from DB files, which belong to one folder
239:      *
240:      * @param string $filename
241:      */
242:     public function deleteFile($filename)
243:     {
244:         if ($this->checkDbUsage()) {
245:             $this->getStorageDatabaseModel()->deleteFile($this->_removeAbsPathFromFileName($filename));
246:         }
247:     }
248: 
249:     /**
250:      * Saves uploaded by Mage_Core_Model_File_Uploader file to DB with existence tests
251:      *
252:      * param $result should be result from Mage_Core_Model_File_Uploader::save() method
253:      * Checks in DB, whether uploaded file exists ($result['file'])
254:      * If yes, renames file on FS (!!!!!)
255:      * Saves file with unique name into DB
256:      * If passed file exists returns new name, file was renamed to (in the same context)
257:      * Otherwise returns $result['file']
258:      *
259:      * @param array $result
260:      * @return string
261:      */
262:     public function saveUploadedFile($result = array())
263:     {
264:         if ($this->checkDbUsage()) {
265:             $path = rtrim(str_replace(array('\\', '/'), DS, $result['path']), DS);
266:             $file = '/' . ltrim($result['file'], '\\/');
267: 
268:             $uniqueResultFile = $this->getUniqueFilename($path, $file);
269: 
270:             if ($uniqueResultFile !== $file) {
271:                 $ioFile = new Varien_Io_File();
272:                 $ioFile->open(array('path' => $path));
273:                 $ioFile->mv($path . $file, $path . $uniqueResultFile);
274:             }
275:             $this->saveFile($path . $uniqueResultFile);
276: 
277:             return $uniqueResultFile;
278:         } else {
279:             return $result['file'];
280:         }
281:     }
282: 
283:     /**
284:      * Convert full file path to local (as used by model)
285:      * If not - returns just a filename
286:      *
287:      * @param string $filename
288:      * @return string
289:      */
290:     protected function _removeAbsPathFromFileName($filename)
291:     {
292:         return $this->getMediaRelativePath($filename);
293:     }
294: 
295:     /**
296:      * Return Media base dir
297:      *
298:      * @return string
299:      */
300:     public function getMediaBaseDir()
301:     {
302:         if (null === $this->_mediaBaseDirectory) {
303:             $this->_mediaBaseDirectory = rtrim(Mage::getBaseDir('media'), '\\/');
304:         }
305:         return $this->_mediaBaseDirectory;
306:     }
307: }
308: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0