Переглянути джерело

Adding db.lib.php (should use Doctrine ORM) + user entitie + metadata (just for tests)

Julio Montoya 13 роки тому
батько
коміт
5335f890df

+ 3 - 1
main/inc/global.inc.php

@@ -116,7 +116,9 @@ require_once $lib_path.'tracking.lib.php';
 require_once $lib_path.'formvalidator/FormValidator.class.php';
 require_once $lib_path.'online.inc.php';
 
-
+//Here we load the new Doctrine class (just for tests)
+//require_once $lib_path.'db.lib.php';
+//$db = new db();
 
 /*  DATABASE CONNECTION  */
 

+ 78 - 0
main/inc/lib/db.lib.php

@@ -0,0 +1,78 @@
+<?php
+/**
+ * This is a draft 
+ *  
+ */
+require_once api_get_path(LIBRARY_PATH).'symfony/symfony/Component/ClassLoader/UniversalClassLoader.php';
+use Doctrine\Common\ClassLoader;
+use Doctrine\DBAL\DriverManager;
+use Doctrine\ORM\Tools\Setup;
+
+require_once api_get_path(LIBRARY_PATH).'symfony/Doctrine/Common/ClassLoader.php';
+require_once api_get_path(LIBRARY_PATH).'symfony/Doctrine/ORM/Tools/Setup.php';
+
+use Doctrine\ORM\EntityManager,
+    Doctrine\ORM\Configuration;
+
+
+class db {
+    
+    function __construct() {
+        global $_configuration;
+        $connectionParams = array(
+            'dbname'    => $_configuration['main_database'],
+            'user'      => $_configuration['db_user'],
+            'password'  => $_configuration['db_password'],
+            'host'      => $_configuration['db_host'],
+            'driver'    => 'pdo_mysql',
+        );
+        
+  /*      $classLoader = new ClassLoader('Doctrine', api_get_path(LIBRARY_PATH).'symfony');
+        $classLoader->register();*/
+       /* $config = new Doctrine\DBAL\Configuration();                
+        
+        $conn = DriverManager::getConnection($connectionParams, $config);
+        
+        $sql = "SELECT * FROM user";
+        $stmt = $conn->query($sql); // Simple, but has several drawbacks        
+        */       
+             
+        $lib = api_get_path(LIBRARY_PATH).'symfony';
+        Doctrine\ORM\Tools\Setup::registerAutoloadDirectory($lib);
+        
+        $config = new Configuration;
+        $applicationMode = 'development';
+        
+        if ($applicationMode == "development") {
+            $cache = new \Doctrine\Common\Cache\ArrayCache;
+        } else {
+            $cache = new \Doctrine\Common\Cache\ApcCache;
+        }
+        $config->setMetadataCacheImpl($cache);
+        $driverImpl = $config->newDefaultAnnotationDriver(api_get_path(LIBRARY_PATH).'symfony/app_obj/entities');
+        $config->setMetadataDriverImpl($driverImpl);
+        $config->setQueryCacheImpl($cache);
+        $config->setProxyDir(api_get_path(LIBRARY_PATH).'proxies');
+        $config->setProxyNamespace('App\Proxies');        
+        
+        if ($applicationMode == "development") {
+            $config->setAutoGenerateProxyClasses(true);
+        } else {
+            $config->setAutoGenerateProxyClasses(false);
+        }
+        
+        $config = Setup::createYAMLMetadataConfiguration(array(api_get_path(LIBRARY_PATH).'symfony/app_obj/metadata'), true);
+                
+        $em = EntityManager::create($connectionParams, $config);
+        
+        require_once api_get_path(LIBRARY_PATH).'symfony/app_obj/entities/user.php';
+        
+        $user = new User();
+        $user->setUsername('salut');
+        $em->persist($user);
+        $em->flush();
+        echo "Created User with ID " . $user->getId() . "\n";
+    }
+}
+
+

+ 25 - 0
main/inc/lib/symfony/app_obj/entities/user.php

@@ -0,0 +1,25 @@
+<?php
+// entities/Product.php
+/**
+ * @Entity @Table(name="products")
+ **/
+class User
+{    
+    protected $id;    
+    public $username;
+    
+     public function getId()
+    {
+        return $this->id;
+    }
+    
+    public function getUsername()
+    {
+        return $this->name;
+    }
+
+    public function setUsername($name)
+    {
+        $this->username = $name;
+    }
+}

+ 11 - 0
main/inc/lib/symfony/app_obj/metadata/User.dcm.yml

@@ -0,0 +1,11 @@
+User:
+  type: entity
+  table: user
+  id:
+    id:
+      type: integer
+      generator:
+        strategy: AUTO
+  fields:
+    username:
+      type: string