Completed
Push — master ( 7381e1...0d723c )
by Korvin
02:16
created

LegacyAdapter   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
dl 0
loc 50
c 0
b 0
f 0
wmc 3
lcom 1
cbo 4
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
B attach() 0 30 2
1
<?php
2
namespace Buttress\Concrete\Client\Adapter;
3
4
use Buttress\Concrete\Client\Connection\LegacyConnection;
5
use Buttress\Concrete\Console\Console;
6
use Buttress\Concrete\Exception\VersionMismatchException;
7
use Buttress\Concrete\Locator\Site;
8
9
/**
10
 * An adapter that connects to legacy concrete5 sites
11
 * @todo Determine the lowest version of c5 we support
12
 */
13
class LegacyAdapter implements Adapter
14
{
15
16
    /** @var \Buttress\Concrete\Locator\Site $site */
17
    protected $site;
18
19
    /** @var \Buttress\Concrete\Console\Console */
20
    protected $console;
21
22
    public function __construct(Site $site, Console $console)
23
    {
24
        $this->site = $site;
25
        $this->console = $console;
26
    }
27
28
    /**
29
     * Attach to legacy concrete5
30
     * @throws \Buttress\Concrete\Exception\VersionMismatchException
31
     */
32
    public function attach()
33
    {
34
        // If the version number is more than 5.6.999, we have the wrong version.
35
        if (version_compare(PHP_VERSION, '5.6.999') > 0) {
36
            throw new VersionMismatchException('Legacy versions of concrete5 do not support PHP 7!', PHP_VERSION);
37
        }
38
39
        // Get the site path
40
        $path = $this->site->getPath();
41
42
        // Change the cwd to the site path
43
        chdir($path);
44
45
        // Define a couple things concrete5 expects
46
        define('DIR_BASE', $path);
47
        define('C5_ENVIRONMENT_ONLY', true);
48
49
        // Set the error reporting low
50
        error_reporting(E_ALL | ~E_NOTICE | ~E_WARNING | ~E_STRICT);
51
52
        // Include Adodb first, not sure why this was needed
53
        require_once $path . '/concrete/libraries/3rdparty/adodb/adodb.inc.php';
54
55
        // Load in legacy dispatcher
56
        require_once $path . '/concrete/dispatcher.php';
57
58
        $this->console->registerErrorHandler();
59
60
        return new LegacyConnection();
61
    }
62
}
63