display (); // output HTML which will automatically show file preview * @endcode * */ class BxDolFileHandler extends BxDolFactory implements iBxDolFactoryObject { protected $_sObject; protected $_aObject; /** * Constructor * @param $aObject array of file handler options */ protected function __construct($aObject) { parent::__construct(); $this->_sObject = $aObject['object']; $this->_aObject = $aObject; } /** * Get file handler object instance by object name * @param $sObject object name * @return object instance or false on error */ static public function getObjectInstance($sObject) { if (isset($GLOBALS['bxDolClasses'][__CLASS__.'!'.$sObject])) return $GLOBALS['bxDolClasses'][__CLASS__.'!'.$sObject]; $aObjects = BxDolFileHandlerQuery::getObjects(); if (!$aObjects || !isset($aObjects[$sObject])) return false; $aObject = $aObjects[$sObject]; if (empty($aObject['override_class_name'])) return false; $sClass = $aObject['override_class_name']; if (!empty($aObject['override_class_file'])) require_once(BX_DIRECTORY_PATH_ROOT . $aObject['override_class_file']); $o = new $sClass($aObject); if (!$o->isActive()) return false; return ($GLOBALS['bxDolClasses'][__CLASS__.'!'.$sObject] = $o); } /** * Get file handler object instance by file name * @param $sFileName file name * @return object instance or false on error */ static public function getObjectInstanceByFile($sFileName) { if (!($aObjects = BxDolFileHandlerQuery::getObjects())) return false; $sObject = false; foreach ($aObjects as $sObject => $aObject) if (preg_match($aObject['preg_ext'], $sFileName)) return self::getObjectInstance($sObject); return false; } /** * Display file preview */ public function display ($sFileUrl, $aFile) { // override this function in particular class } /** * Check if file preview is available */ public function isActive () { return $this->_aObject['active']; } } /** @} */