WordPressInspector::valid()   A
last analyzed

Complexity

Conditions 4
Paths 6

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 21
rs 9.584
c 0
b 0
f 0
cc 4
nc 6
nop 1
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