/**
  * 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];
 }