Version 1
[yaffs-website] / vendor / gabordemooij / redbean / RedBeanPHP / BeanHelper / SimpleFacadeBeanHelper.php
diff --git a/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper/SimpleFacadeBeanHelper.php b/vendor/gabordemooij/redbean/RedBeanPHP/BeanHelper/SimpleFacadeBeanHelper.php
new file mode 100755 (executable)
index 0000000..d054307
--- /dev/null
@@ -0,0 +1,115 @@
+<?php
+
+namespace RedBeanPHP\BeanHelper;
+
+use RedBeanPHP\BeanHelper as BeanHelper;
+use RedBeanPHP\Facade as Facade;
+use RedBeanPHP\OODBBean as OODBBean;
+use RedBeanPHP\SimpleModelHelper as SimpleModelHelper;
+
+/**
+ * Bean Helper.
+ *
+ * The Bean helper helps beans to access access the toolbox and
+ * FUSE models. This Bean Helper makes use of the facade to obtain a
+ * reference to the toolbox.
+ *
+ * @file    RedBeanPHP/BeanHelperFacade.php
+ * @author  Gabor de Mooij and the RedBeanPHP Community
+ * @license BSD/GPLv2
+ *
+ * @copyright
+ * (c) copyright 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 SimpleFacadeBeanHelper implements BeanHelper
+{
+       /**
+        * Factory function to create instance of Simple Model, if any.
+        *
+        * @var \Closure
+        */
+       private static $factory = null;
+
+       /**
+        * Factory method using a customizable factory function to create
+        * the instance of the Simple Model.
+        *
+        * @param string $modelClassName name of the class
+        *
+        * @return SimpleModel
+        */
+       public static function factory( $modelClassName )
+       {
+               $factory = self::$factory;
+               return ( $factory ) ? $factory( $modelClassName ) : new $modelClassName();
+       }
+
+       /**
+        * Sets the factory function to create the model when using FUSE
+        * to connect a bean to a model.
+        *
+        * @param \Closure $factory factory function
+        *
+        * @return void
+        */
+       public static function setFactoryFunction( $factory )
+       {
+               self::$factory = $factory;
+       }
+
+       /**
+        * @see BeanHelper::getToolbox
+        */
+       public function getToolbox()
+       {
+               return Facade::getToolBox();
+       }
+
+       /**
+        * @see BeanHelper::getModelForBean
+        */
+       public function getModelForBean( OODBBean $bean )
+       {
+               $model     = $bean->getMeta( 'type' );
+               $prefix    = defined( 'REDBEAN_MODEL_PREFIX' ) ? REDBEAN_MODEL_PREFIX : '\\Model_';
+
+               if ( strpos( $model, '_' ) !== FALSE ) {
+                       $modelParts = explode( '_', $model );
+                       $modelName = '';
+                       foreach( $modelParts as $part ) {
+                               $modelName .= ucfirst( $part );
+                       }
+                       $modelName = $prefix . $modelName;
+
+                       if ( !class_exists( $modelName ) ) {
+                               //second try
+                               $modelName = $prefix . ucfirst( $model );
+
+                               if ( !class_exists( $modelName ) ) {
+                                       return NULL;
+                               }
+                       }
+
+               } else {
+
+                       $modelName = $prefix . ucfirst( $model );
+                       if ( !class_exists( $modelName ) ) {
+                               return NULL;
+                       }
+               }
+               $obj = self::factory( $modelName );
+               $obj->loadBean( $bean );
+
+               return $obj;
+       }
+
+       /**
+        * @see BeanHelper::getExtractedToolbox
+        */
+       public function getExtractedToolbox()
+       {
+               return Facade::getExtractedToolbox();
+       }
+}