[Beeframework-svn] SF.net SVN: beeframework:[59] trunk
Brought to you by:
b_hartmann,
m_plomer
From: <m_p...@us...> - 2013-08-24 12:32:10
|
Revision: 59 http://sourceforge.net/p/beeframework/code/59 Author: m_plomer Date: 2013-08-24 12:32:07 +0000 (Sat, 24 Aug 2013) Log Message: ----------- - restructured libs - added Doctrine2 EnumType Modified Paths: -------------- trunk/framework/Bee/Persistence/Doctrine2/DaoBase.php Added Paths: ----------- trunk/framework/Bee/Persistence/Doctrine2/Types/ trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php Removed Paths: ------------- trunk/libs/addendum-0.4.0/ trunk/libs/addendum-0.4.1/ trunk/libs/apache-log4php-2.3.0/ Property Changed: ---------------- trunk/ Index: trunk =================================================================== --- trunk 2013-08-19 22:44:55 UTC (rev 58) +++ trunk 2013-08-24 12:32:07 UTC (rev 59) Property changes on: trunk ___________________________________________________________________ Modified: svn:ignore ## -1 +1,3 ## .idea +vendor/** +composer.lock Modified: trunk/framework/Bee/Persistence/Doctrine2/DaoBase.php =================================================================== --- trunk/framework/Bee/Persistence/Doctrine2/DaoBase.php 2013-08-19 22:44:55 UTC (rev 58) +++ trunk/framework/Bee/Persistence/Doctrine2/DaoBase.php 2013-08-24 12:32:07 UTC (rev 59) @@ -1,5 +1,7 @@ <?php namespace Bee\Persistence\Doctrine2; +use Doctrine\ORM\Query; +use Doctrine\ORM\QueryBuilder; /** * User: mp @@ -17,13 +19,21 @@ * @internal param \Doctrine\ORM\QueryBuilder $query * @return array */ - public function executeListQuery(\Doctrine\ORM\QueryBuilder $queryBuilder, \Bee_Persistence_IRestrictionHolder $restrictionHolder = null, \Bee_Persistence_IOrderAndLimitHolder $orderAndLimitHolder = null, array $defaultOrderMapping) { + public function executeListQuery(\Doctrine\ORM\QueryBuilder $queryBuilder, \Bee_Persistence_IRestrictionHolder $restrictionHolder = null, \Bee_Persistence_IOrderAndLimitHolder $orderAndLimitHolder = null, array $defaultOrderMapping, $hydrationMode = null) { $this->applyFilterRestrictions($queryBuilder, $restrictionHolder); $this->applyOrderAndLimit($queryBuilder, $orderAndLimitHolder, $defaultOrderMapping); - return $queryBuilder->getQuery()->execute(); + return $this->getQueryFromBuilder($queryBuilder)->execute(null, $hydrationMode); } /** + * @param QueryBuilder $qb + * @return Query + */ + protected function getQueryFromBuilder(QueryBuilder $qb) { + return $qb->getQuery(); + } + + /** * @param \Doctrine\ORM\QueryBuilder $queryBuilder * @param \Bee_Persistence_IRestrictionHolder $restrictionHolder * @internal param \Doctrine\ORM\QueryBuilder $query @@ -87,7 +97,7 @@ $queryBuilder->setMaxResults($orderAndLimitHolder->getPageSize()); // TODO: build a performant count-query! This is simply bullshit! - $pageCount = ceil(count($queryBuilder->getQuery()->execute()) / $orderAndLimitHolder->getPageSize()); + $pageCount = ceil(count($this->getQueryFromBuilder($queryBuilder)->execute()) / $orderAndLimitHolder->getPageSize()); $orderAndLimitHolder->setPageCount($pageCount); if ($orderAndLimitHolder->getCurrentPage() > $pageCount) { Added: trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php =================================================================== --- trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php (rev 0) +++ trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php 2013-08-24 12:32:07 UTC (rev 59) @@ -0,0 +1,39 @@ +<?php +namespace Bee\Persistence\Doctrine2\Types; +use Doctrine\DBAL\Platforms\AbstractPlatform; +use Doctrine\DBAL\Types\Type; + +/** + * Class EnumType + * @package Bee\Persistence\Doctrine2\Types + */ +abstract class EnumType extends Type +{ + protected $name; + protected $values = array(); + + public function getSqlDeclaration(array $fieldDeclaration, AbstractPlatform $platform) + { + $values = array_map(function($val) { return "'".$val."'"; }, $this->values); + + return "ENUM(".implode(", ", $values).") COMMENT '(DC2Type:".$this->name.")'"; + } + + public function convertToPHPValue($value, AbstractPlatform $platform) + { + return $value; + } + + public function convertToDatabaseValue($value, AbstractPlatform $platform) + { + if (!in_array($value, $this->values)) { + throw new \InvalidArgumentException("Invalid '".$this->name."' value."); + } + return $value; + } + + public function getName() + { + return $this->name; + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |