mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2025-04-27 14:55:38 +00:00
109 lines
2.8 KiB
PHP
109 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace RedBeanPHP\Util;
|
|
use RedBeanPHP\Facade as R;
|
|
use RedBeanPHP\OODBBean;
|
|
|
|
/**
|
|
* Feature Utility
|
|
*
|
|
* The Feature Utility class provides an easy way to turn
|
|
* on or off features. This allows us to introduce new features
|
|
* without accidentally breaking backward compatibility.
|
|
*
|
|
* @file RedBeanPHP/Util/Feature.php
|
|
* @author Gabor de Mooij and the RedBeanPHP Community
|
|
* @license BSD/GPLv2
|
|
*
|
|
* @copyright
|
|
* copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community
|
|
* This source file is subject to the BSD/GPLv2 License that is bundled
|
|
* with this source code in the file license.txt.
|
|
*/
|
|
class Feature
|
|
{
|
|
/* Feature set constants */
|
|
const C_FEATURE_NOVICE_LATEST = 'novice/latest';
|
|
const C_FEATURE_LATEST = 'latest';
|
|
const C_FEATURE_NOVICE_5_5 = 'novice/5.5';
|
|
const C_FEATURE_5_5 = '5.5';
|
|
const C_FEATURE_NOVICE_5_4 = 'novice/5.4';
|
|
const C_FEATURE_5_4 = '5.4';
|
|
const C_FEATURE_NOVICE_5_3 = 'novice/5.3';
|
|
const C_FEATURE_5_3 = '5.3';
|
|
const C_FEATURE_ORIGINAL = 'original';
|
|
|
|
/**
|
|
* Selects the feature set you want as specified by
|
|
* the label.
|
|
*
|
|
* Available labels:
|
|
*
|
|
* novice/latest:
|
|
* - forbid R::nuke()
|
|
* - enable automatic relation resolver based on foreign keys
|
|
* - forbid R::store(All)( $bean, TRUE ) (Hybrid mode)
|
|
* - use IS-NULL conditions in findLike() etc
|
|
*
|
|
* latest:
|
|
* - allow R::nuke()
|
|
* - enable auto resolve
|
|
* - allow hybrid mode
|
|
* - use IS-NULL conditions in findLike() etc
|
|
*
|
|
* novice/X or X:
|
|
* - keep everything as it was in version X
|
|
*
|
|
* Usage:
|
|
*
|
|
* <code>
|
|
* R::useFeatureSet( 'novice/latest' );
|
|
* </code>
|
|
*
|
|
* @param string $label label
|
|
*
|
|
* @return void
|
|
*/
|
|
public static function feature( $label ) {
|
|
switch( $label ) {
|
|
case self::C_FEATURE_NOVICE_LATEST:
|
|
case self::C_FEATURE_NOVICE_5_4:
|
|
case self::C_FEATURE_NOVICE_5_5:
|
|
OODBBean::useFluidCount( FALSE );
|
|
R::noNuke( TRUE );
|
|
R::setAllowHybridMode( FALSE );
|
|
R::useISNULLConditions( TRUE );
|
|
break;
|
|
case self::C_FEATURE_LATEST:
|
|
case self::C_FEATURE_5_4:
|
|
case self::C_FEATURE_5_5:
|
|
OODBBean::useFluidCount( FALSE );
|
|
R::noNuke( FALSE );
|
|
R::setAllowHybridMode( TRUE );
|
|
R::useISNULLConditions( TRUE );
|
|
break;
|
|
case self::C_FEATURE_NOVICE_5_3:
|
|
OODBBean::useFluidCount( TRUE );
|
|
R::noNuke( TRUE );
|
|
R::setAllowHybridMode( FALSE );
|
|
R::useISNULLConditions( FALSE );
|
|
break;
|
|
case self::C_FEATURE_5_3:
|
|
OODBBean::useFluidCount( TRUE );
|
|
R::noNuke( FALSE );
|
|
R::setAllowHybridMode( FALSE );
|
|
R::useISNULLConditions( FALSE );
|
|
break;
|
|
case self::C_FEATURE_ORIGINAL:
|
|
OODBBean::useFluidCount( TRUE );
|
|
R::noNuke( FALSE );
|
|
R::setAllowHybridMode( FALSE );
|
|
R::useISNULLConditions( FALSE );
|
|
break;
|
|
default:
|
|
throw new \Exception("Unknown feature set label.");
|
|
break;
|
|
}
|
|
}
|
|
}
|