PHP Classes

File: vendor/gabordemooij/redbean/RedBeanPHP/Util/Feature.php

Recommend this page to a friend!
  Classes of Adrian M   upMVC   vendor/gabordemooij/redbean/RedBeanPHP/Util/Feature.php   Download  
File: vendor/gabordemooij/redbean/RedBeanPHP/Util/Feature.php
Role: Class source
Content type: text/plain
Description: Class source
Class: upMVC
Pure PHP web development without other frameworks
Author: By
Last change:
Date: 25 days ago
Size: 2,905 bytes
 

Contents

Class file image Download
<?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( TRUE );
               
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( TRUE );
               
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;
        }
    }
}