/** * Returns the storage mechanism for the given storage type. * @param string $storage * @return I2CE_FormStorage_Mechanism or false on failure */ public static function getMechanismByStorage($storage) { if (!is_array(self::$storageMechs)) { self::$storageMechs = array(); } if (!array_key_exists($storage, self::$storageMechs) || !self::$storageMechs[$storage] instanceof I2CE_FormStorage_Mechanism) { $mechanism = 'I2CE_FormStorage_' . $storage; if (!class_exists($mechanism)) { I2CE::raiseError("Form storage mechanism {$mechanism} does not exist"); return false; } if (!is_subclass_of($mechanism, 'I2CE_FormStorage_Mechanism')) { I2CE::raiseError("Form storage mechanism " . $mechanism . " does not subclass I2CE_FormStorage_Mechanism"); return false; } $options = array(); I2CE::getConfig()->setIfIsSet($options, "/modules/forms/storage_options/{$storage}", true); self::$storageMechs[$storage] = new $mechanism($storage, $options); } return self::$storageMechs[$storage]; }