123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
- /*
- * This file is part of the Sonata package.
- *
- * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Sonata\AdminBundle\Admin;
- use Symfony\Component\DependencyInjection\ContainerInterface;
- class Pool
- {
- protected $container = null;
- protected $adminServiceIds = array();
- protected $adminGroups = array();
- protected $adminClasses = array();
- public function __construct(ContainerInterface $container)
- {
- $this->container = $container;
- }
- public function getGroups()
- {
- $groups = $this->adminGroups;
- foreach ($this->adminGroups as $name => $adminGroup) {
- foreach ($adminGroup as $id => $options) {
- $groups[$name][$id] = $this->getInstance($id);
- }
- }
- return $groups;
- }
- public function getDashboardGroups()
- {
- $groups = $this->adminGroups;
- foreach ($this->adminGroups as $name => $adminGroup) {
- foreach ($adminGroup['items'] as $key => $id) {
- $groups[$name]['items'][$key] = $this->container->get($id);
- }
- if (empty($groups[$name])) {
- unset($groups[$name]);
- }
- }
- return $groups;
- }
- /**
- * return the admin related to the given $class
- *
- * @param string $class
- * @return \Sonata\AdminBundle\Admin\AdminInterface|null
- */
- public function getAdminByClass($class)
- {
- if (!isset($this->adminClasses[$class])) {
- return null;
- }
- return $this->getInstance($this->adminClasses[$class]);
- }
- /**
- * Returns an admin class by its Admin code
- * ie : sonata.news.admin.post|sonata.news.admin.comment => return the child class of post
- *
- * @param string $adminCode
- * @return \Sonata\AdminBundle\Admin\AdminInterface|null
- */
- public function getAdminByAdminCode($adminCode)
- {
- $codes = explode('|', $adminCode);
- $admin = false;
- foreach ($codes as $code) {
- if ($admin == false) {
- $admin = $this->getInstance($code);
- } else if ($admin->hasChild($code)) {
- $admin = $admin->getChild($code);
- }
- }
- return $admin;
- }
- /**
- * Returns a new admin instance depends on the given code
- *
- * @param $id
- * @return \Sonata\AdminBundle\Admin\AdminInterface
- */
- public function getInstance($id)
- {
- return $this->container->get($id);
- }
- public function getContainer()
- {
- return $this->container;
- }
- public function setAdminGroups($adminGroups)
- {
- $this->adminGroups = $adminGroups;
- }
- public function getAdminGroups()
- {
- return $this->adminGroups;
- }
- public function setAdminServiceIds($adminServiceIds)
- {
- $this->adminServiceIds = $adminServiceIds;
- }
- public function getAdminServiceIds()
- {
- return $this->adminServiceIds;
- }
- public function setAdminClasses($adminClasses)
- {
- $this->adminClasses = $adminClasses;
- }
- public function getAdminClasses()
- {
- return $this->adminClasses;
- }
- }
|