. */ namespace Volkszaehler\Controller; /** * Group controller * * @author Steffen Vogel (info@steffenvogel.de) * @package default */ use Volkszaehler\Model; class GroupController extends Controller { /** * Get groups by filter * * @todo filter to root groups when using recursion */ public function get() { $dql = 'SELECT g, c, d, p FROM Volkszaehler\Model\Aggregator g LEFT JOIN g.children c LEFT JOIN g.channels d LEFT JOIN g.properties p'; // TODO fix this (depending on DDC-719) if ($recursion = $this->view->request->getParameter('recursive')) { //$dql .= ' WHERE g.parents IS EMPTY'; } $q = $this->em->createQuery($dql); $groups = $q->getResult(); foreach ($groups as $group) { $this->view->addAggregator($group, $recursion); } } /** * Add new group as child of a parent group * * @todo add parent validation to model? */ public function add() { $ugid = $this->view->request->getParameter('ugid'); $parent = $this->em->getRepository('Volkszaehler\Model\Aggregator')->findOneBy(array('uuid' => $ugid)); if ($parent == FALSE) { throw new \Exception('every group needs a parent'); } $group = new Model\Aggregator(); $group->setName($this->view->request->getParameter('name')); $group->setDescription($this->view->request->getParameter('description')); $this->em->persist($group); $parent->addAggregator($group); $this->em->flush(); $this->view->add($group); } /** * @todo authentification/indentification */ public function delete() { $ugid = $this->view->request->getParameter('ugid'); $group = $this->em->getRepository('Volkszaehler\Model\Aggregator')->findOneBy(array('uuid' => $ugid)); $this->em->remove($group); $this->em->flush(); } /** * edit group properties * * @todo implement Controller\Aggregator::edit() */ public function edit() { } } ?>