You are here

public function SiteAuditCheckInsightsAnalyze::getResultPass in Site Audit 7

Implements \SiteAudit\Check\Abstract\getResultPass().

Overrides SiteAuditCheckAbstract::getResultPass

2 calls to SiteAuditCheckInsightsAnalyze::getResultPass()
SiteAuditCheckInsightsAnalyze::getResultFail in Check/Insights/Analyze.php
Implements \SiteAudit\Check\Abstract\getResultFail().
SiteAuditCheckInsightsAnalyze::getResultWarn in Check/Insights/Analyze.php
Implements \SiteAudit\Check\Abstract\getResultWarn().

File

Check/Insights/Analyze.php, line 50
Contains \SiteAudit\Check\Insights\Analyze.

Class

SiteAuditCheckInsightsAnalyze
Class SiteAuditCheckInsightsAnalyze.

Code

public function getResultPass() {
  if ($this->abort) {
    return;
  }
  $ret_val = '';
  if (drush_get_option('detail')) {

    // Page Stats.
    $stats = array();
    foreach ($this->registry['json_result']->pageStats as $stat_name => $count) {
      $formatted_stat_name = ucfirst(preg_replace('/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/', ' $1', $stat_name));
      if (stripos($stat_name, 'bytes') !== FALSE) {
        $stats[$formatted_stat_name] = round($count / 1024, 2) . 'kB';
      }
      else {
        $stats[$formatted_stat_name] = $count;
      }
    }
    if (drush_get_option('html')) {
      $ret_val .= '<h3>' . dt('Page stats') . '</h3>';
      $ret_val .= '<dl class="dl-horizontal">';
      foreach ($stats as $name => $count) {
        $ret_val .= '<dt>' . $name . '</dt>';
        $ret_val .= '<dd>' . $count . '</dd>';
      }
      $ret_val .= '</dl>';
    }
    else {
      $ret_val .= dt('Page stats');
      foreach ($stats as $name => $count) {
        $ret_val .= PHP_EOL;
        if (!drush_get_option('json')) {
          $ret_val .= str_repeat(' ', 6);
        }
        $ret_val .= '- ' . $name . ': ' . $count;
      }
    }
    $impact_filter = drush_get_option('impact');

    // Results.
    if (drush_get_option('html')) {
      $ret_val .= '<h3>' . dt('Detailed results') . '</h3>';
    }
    else {
      $ret_val .= PHP_EOL . str_repeat(' ', 6) . dt('Detailed results:');
    }
    $rendered_result_count = 0;

    // @codingStandardsIgnoreStart
    foreach ($this->registry['json_result']->formattedResults->ruleResults as $resultValues) {
      rtrim($ret_val);

      // Filter out based on impact threshold.
      if ($resultValues->ruleImpact < $impact_filter) {
        continue;
      }
      $rendered_result_count++;

      // Build impact label.
      $impact = '';
      if ($resultValues->ruleImpact >= 3) {
        $impact = dt('(HIGH impact: @ruleImpact)', array(
          '@ruleImpact' => $resultValues->ruleImpact,
        ));
      }
      elseif ($resultValues->ruleImpact > 0) {
        $impact = dt('(low impact: @ruleImpact)', array(
          '@ruleImpact' => $resultValues->ruleImpact,
        ));
      }

      // Render Rule, score and impact.
      $rule_score_impact = dt('@localizedRuleName: @ruleScore @impact', array(
        '@localizedRuleName' => $resultValues->localizedRuleName,
        '@ruleScore' => $resultValues->ruleScore,
        '@impact' => $impact,
      ));
      if (drush_get_option('html')) {
        $ret_val .= '<div class="alert alert-block ';
        if ($resultValues->ruleScore >= 80) {
          $ret_val .= 'alert-success';
        }
        elseif ($resultValues->ruleScore >= 60) {
          $ret_val .= 'alert-warning';
        }
        else {
          $ret_val .= 'alert-danger';
        }
        $ret_val .= '">' . $rule_score_impact . '</div>';
      }
      else {
        $ret_val .= PHP_EOL;
        if (!drush_get_option('json')) {
          $ret_val .= str_repeat(' ', 8);
        }
        $ret_val .= $rule_score_impact;
      }
      if (isset($resultValues->urlBlocks)) {
        foreach ($resultValues->urlBlocks as $block) {

          // @codingStandardsIgnoreEnd
          // Header.
          if (!isset($block->header->args)) {
            $header = google_json_text_replacement($block->header->format);
          }
          else {
            $header = google_json_text_replacement($block->header->format, $block->header->args);
          }
          $limit = drush_get_option('limit', 0);
          if ($limit > 0 && isset($block->urls) && $limit != count($block->urls) && $limit < count($block->urls)) {
            $header .= ' ' . dt('Showing @limit out of @total total:', array(
              '@limit' => $limit,
              '@total' => count($block->urls),
            ));
          }
          if (drush_get_option('html')) {
            $ret_val .= '<blockquote>' . $header;
          }
          else {
            $ret_val .= PHP_EOL;
            if (!drush_get_option('json')) {
              $ret_val .= str_repeat(' ', 10);
            }
            $ret_val .= $header;
          }
          if (isset($block->urls) && !empty($block->urls)) {
            $urls = array();
            $count = 0;
            foreach ($block->urls as $url) {
              if ($limit > 0) {
                if (++$count > $limit) {
                  continue;
                }
              }
              $urls[] = google_json_text_replacement($url->result->format, $url->result->args);
            }
            if (drush_get_option('html')) {
              $ret_val .= '<small>' . dt('URLs:');
              $ret_val .= '<ul><li>' . implode('</li><li>', $urls) . '</li></ul>';
              $ret_val .= '</small>';
            }
            else {
              foreach ($urls as $url) {
                $ret_val .= PHP_EOL;
                if (!drush_get_option('json')) {
                  $ret_val .= str_repeat(' ', 12);
                }
                $ret_val .= $url;
              }
            }
          }
          if (drush_get_option('html')) {
            $ret_val .= '</blockquote>';
          }
        }
      }
    }

    // Explain if there are no results so it doesn't look like its broken.
    if ($rendered_result_count == 0) {
      if ($impact_filter) {
        $ret_val .= dt('Nice, no problems to report!');
      }
      else {
        $ret_val .= dt('No results, which is unusual...');
      }
    }
  }
  return $ret_val;
}