예제 #1
0
 /**
  * Returns Git info
  *
  * @return array
  */
 public static function getGitInfo()
 {
     $gitBinary = VP_GIT_BINARY;
     $info = [];
     $process = new Process(ProcessUtils::escapeshellarg($gitBinary) . " --version");
     $process->run();
     $info['git-binary-as-configured'] = $gitBinary;
     $info['git-available'] = $process->getErrorOutput() === null || !strlen($process->getErrorOutput());
     if ($info['git-available'] === false) {
         $info['output'] = ['stdout' => trim($process->getOutput()), 'stderr' => trim($process->getErrorOutput())];
         $info['env-path'] = getenv('PATH');
         return $info;
     }
     $output = trim($process->getOutput());
     $match = Strings::match($output, "~git version (\\d[\\d\\.]+\\d).*~");
     $version = $match[1];
     $gitPath = "unknown";
     if ($gitBinary == "git") {
         $osSpecificWhereCommand = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? "where" : "which";
         $process = new Process("{$osSpecificWhereCommand} git");
         $process->run();
         if ($process->isSuccessful()) {
             $gitPath = $process->getOutput();
         }
     } else {
         $gitPath = $gitBinary;
     }
     $info['git-version'] = $version;
     $info['git-binary-as-called-by-vp'] = $gitBinary;
     $info['git-full-path'] = $gitPath;
     $info['versionpress-min-required-version'] = RequirementsChecker::GIT_MINIMUM_REQUIRED_VERSION;
     $info['matches-min-required-version'] = RequirementsChecker::gitMatchesMinimumRequiredVersion($version);
     return $info;
 }
예제 #2
0
            VersionPress needs a one-time activation step that initializes its internal storage. <strong>This step is resource-intensive and might take a while</strong> if your site has many entities (posts, comments etc.). The site will be put in maintanenance mode until it finishes.
        </p>

        <div class="checks-and-warnings">

            <div class="left">
                <h4>System requirements check</h4>

                <ul class="vp-requirements-check">
                    <?php 
global $versionPressContainer;
/** @var GitRepository $repository */
$repository = $versionPressContainer->resolve(VersionPressServices::GIT_REPOSITORY);
$database = $versionPressContainer->resolve(VersionPressServices::DATABASE);
$schema = $versionPressContainer->resolve(VersionPressServices::DB_SCHEMA);
$requirementsChecker = new RequirementsChecker($database, $schema);
$report = $requirementsChecker->getRequirements();
foreach ($report as $requirement) {
    $iconClass = $requirement["fulfilled"] ? "vp-icon-checkmark" : "vp-icon-warning";
    ?>
                        <li>
                            <span class="icon <?php 
    echo esc_attr($iconClass);
    ?>
"></span>
                            <?php 
    echo esc_html($requirement["name"]);
    ?>
                            <p class="<?php 
    echo $requirement["fulfilled"] ? 'closed' : 'open';
    ?>
예제 #3
0
 /**
  * @param $assoc_args
  * @param $requirementsScope string of the requirements
  */
 private function checkVpRequirements($assoc_args, $requirementsScope)
 {
     require_once ABSPATH . WPINC . '/formatting.php';
     require_once ABSPATH . WPINC . '/theme.php';
     require_once ABSPATH . WPINC . '/link-template.php';
     global $versionPressContainer;
     $database = $versionPressContainer->resolve(VersionPressServices::WPDB);
     $schema = $requirementsScope === RequirementsChecker::ENVIRONMENT ? null : $versionPressContainer->resolve(VersionPressServices::DB_SCHEMA);
     $requirementsChecker = new RequirementsChecker($database, $schema, $requirementsScope);
     $report = $requirementsChecker->getRequirements();
     foreach ($report as $requirement) {
         if ($requirement['fulfilled']) {
             WP_CLI::success($requirement['name']);
         } else {
             if ($requirement['level'] === 'critical') {
                 WP_CLI::error($requirement['name'], false);
             } else {
                 VPCommandUtils::warning($requirement['name']);
             }
             WP_CLI::log('  ' . $requirement['help']);
         }
     }
     WP_CLI::line('');
     if (!$requirementsChecker->isWithoutCriticalErrors()) {
         WP_CLI::error('VersionPress cannot be fully activated.');
     }
     if (!$requirementsChecker->isEverythingFulfilled()) {
         WP_CLI::confirm('There are some warnings. Continue?', $assoc_args);
     }
 }
예제 #4
0
        <p class="about-description">VersionPress needs a one-time activation step that initializes its internal storage. <strong>This step is resource-intensive and might take a while</strong> if your site has many entities (posts, comments etc.). The site will be put in maintanenance mode until it finishes.</p>

        <div class="checks-and-warnings">

            <div class="left">
                <h4>System requirements check</h4>

                <ul class="vp-requirements-check">
                    <?php 
global $versionPressContainer;
/** @var GitRepository $repository */
$repository = $versionPressContainer->resolve(VersionPressServices::REPOSITORY);
$database = $versionPressContainer->resolve(VersionPressServices::WPDB);
$schema = $versionPressContainer->resolve(VersionPressServices::DB_SCHEMA);
$requirementsChecker = new RequirementsChecker($database, $schema);
$report = $requirementsChecker->getRequirements();
foreach ($report as $requirement) {
    $iconClass = $requirement["fulfilled"] ? "icon-checkmark" : "icon-warning";
    ?>
                        <li>
                            <span class="icon <?php 
    echo $iconClass;
    ?>
"></span>
                            <?php 
    echo $requirement["name"];
    ?>
                            <p class="<?php 
    echo $requirement["fulfilled"] ? 'closed' : 'open';
    ?>
 /**
  * @test
  */
 public function gitCheckPassesForGit220()
 {
     $this->assertTrue(RequirementsChecker::gitMatchesMinimumRequiredVersion("2.2.0", "1.9"));
 }