WordPressInspector   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 2
dl 0
loc 42
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A valid() 0 21 4
A isWordPressRoot() 0 10 3
1
<?php
2
3
namespace VersionTool\Inspectors;
4
5
use VersionTool\Info\VersionInfo;
6
use VersionTool\Util\ComposerInfo;
7
8
class WordPressInspector implements InspectorInterface
9
{
10
    /**
11
     * @inheritdoc
12
     */
13
    public function valid(ComposerInfo $composer_info)
14
    {
15
        $candidates = [];
16
        $project_root = $composer_info->projectRoot();
17
18
        // Determine if there is a relocated drupal root.
19
        $pluginsDir = $composer_info->pathForType('type:wordpress-plugin');
20
        if ($pluginsDir) {
21
            $candidates[] = dirname(dirname(dirname("$project_root/$pluginsDir")));
22
        }
23
24
        $candidates[] = $project_root;
25
26
        foreach ($candidates as $document_root) {
27
            $info = $this->isWordPressRoot($composer_info, $document_root);
28
            if ($info) {
29
                return $info;
30
            }
31
        }
32
        return false;
33
    }
34
35
    /**
36
     * Create an info object if there is a valid drupal root at the
37
     * specified path.
38
     */
39
    protected function isWordPressRoot(ComposerInfo $composer_info, $document_root)
40
    {
41
        foreach (['/', '/wp/'] as $dir) {
42
            $version_file = $dir . 'wp-includes/version.php';
43
            if (file_exists("$document_root/$version_file")) {
44
                return new VersionInfo('WordPress', $composer_info, $document_root, $version_file, "#wp_version = '([0-9.a-z-]*)';#m");
45
            }
46
        }
47
        return false;
48
    }
49
}
50