Completed
Push — develop ( da1ae8...af9759 )
by Mathias
21s queued 14s
created

UserCreatorFactory::createDocumentManager()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
/**
3
 * YAWIK
4
 *
5
 * @filesource
6
 * @license MIT
7
 * @copyright  2013 - 2016 Cross Solution <http://cross-solution.de>
8
 */
9
  
10
/** */
11
namespace Install\Factory\Controller\Plugin;
12
13
use Auth\Entity\Filter\CredentialFilter;
14
use Doctrine\ODM\MongoDB\Configuration;
15
16
use Doctrine\MongoDB\Connection;
17
use Doctrine\ODM\MongoDB\DocumentManager;
18
use Install\Controller\Plugin\UserCreator;
19
use Install\Filter\DbNameExtractor;
20
use Interop\Container\ContainerInterface;
21
use Zend\Filter\FilterPluginManager;
22
use Zend\InputFilter\InputFilterPluginManager;
23
use Zend\ServiceManager\Factory\FactoryInterface;
24
use Zend\ServiceManager\ServiceLocatorInterface;
25
26
/**
27
 * Factory for an UserCreator plugin instance
28
 *
29
 * @author Mathias Gelhausen <[email protected]>
30
 * @since 0.20
31
 */
32
class UserCreatorFactory implements FactoryInterface
33
{
34
    /**
35
     * Create a UserCreator controller plugin
36
     *
37
     * @param  ContainerInterface $container
38
     * @param  string             $requestedName
39
     * @param  null|array         $options
40
     *
41
     * @return UserCreator
42
     */
43
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
44
    {
45
        $filters = $container->get('FilterManager');
46
47
        $dbNameExtractor = $filters->get(DbNameExtractor::class);
48
        $credentialFilter = $filters->get(CredentialFilter::class);
49
        $database = $dbNameExtractor->filter($options['connection']);
50
51
        $config = $container->get('doctrine.documentmanager.odm_default')->getConfiguration();
52
        $config->setDefaultDB($database);
53
        $dm = $this->createDocumentManager($options['connection'],$config);
54
55
        $plugin = new UserCreator($credentialFilter,$dm);
56
        return $plugin;
57
    }
58
59
    /**
60
     * Create a document manager
61
     *
62
     * @param $connection
63
     * @param $config
64
     * @return DocumentManager
65
     * @codeCoverageIgnore
66
     */
67
    public function createDocumentManager($connection,$config)
68
    {
69
        $dbConn = new Connection($connection);
70
        $dm = DocumentManager::create($dbConn,$config);
71
        return $dm;
72
    }
73
}
74