diff --git a/yii/requirements/YiiRequirementChecker.php b/yii/requirements/YiiRequirementChecker.php index 26cb041..9b931d6 100644 --- a/yii/requirements/YiiRequirementChecker.php +++ b/yii/requirements/YiiRequirementChecker.php @@ -78,10 +78,43 @@ class YiiRequirementChecker */ function render() { - if (isset($this->result)) { + if (!isset($this->result)) { $this->usageError('Nothing to render!'); } - // @todo render + $baseViewFilePath = dirname(__FILE__).DIRECTORY_SEPARATOR.'views'; + if (array_key_exists('argv', $_SERVER)) { + $viewFileName = $baseViewFilePath.DIRECTORY_SEPARATOR.'console'.DIRECTORY_SEPARATOR.'index.php'; + } else { + $viewFileName = $baseViewFilePath.DIRECTORY_SEPARATOR.'web'.DIRECTORY_SEPARATOR.'index.php'; + } + $this->renderViewFile($viewFileName, $this->result); + } + + /** + * Renders a view file. + * This method includes the view file as a PHP script + * and captures the display result if required. + * @param string $_viewFile_ view file + * @param array $_data_ data to be extracted and made available to the view file + * @param boolean $_return_ whether the rendering result should be returned as a string + * @return string the rendering result. Null if the rendering result is not required. + */ + function renderViewFile($_viewFile_, $_data_=null, $_return_=false) + { + // we use special variable names here to avoid conflict when extracting data + if (is_array($_data_)) { + extract($_data_, EXTR_PREFIX_SAME, 'data'); + } else { + $data = $_data_; + } + if ($_return_) { + ob_start(); + ob_implicit_flush(false); + require($_viewFile_); + return ob_get_clean(); + } else { + require($_viewFile_); + } } /** diff --git a/yii/requirements/views/console/index.php b/yii/requirements/views/console/index.php new file mode 100644 index 0000000..b6122fc --- /dev/null +++ b/yii/requirements/views/console/index.php @@ -0,0 +1,56 @@ + 25, + 'condition' => 10, + 'by' => 30, + 'memo' => 50, +); + +// Headers: +$tableLength = count($columnSizes)+1; +foreach ($columnSizes as $columnSize) { + $tableLength += $columnSize; +} +echo str_pad('', $tableLength, '-'); +echo "\n"; +echo '|'.str_pad('Name', $columnSizes['name'], ' ', STR_PAD_BOTH).'|'; +echo str_pad('Result', $columnSizes['condition'], ' ', STR_PAD_BOTH).'|'; +echo str_pad('Required By', $columnSizes['by'], ' ', STR_PAD_BOTH).'|'; +echo str_pad('Memo', $columnSizes['memo'], ' ', STR_PAD_BOTH).'|'; +echo "\n"; +echo str_pad('', $tableLength, '-'); +echo "\n"; + +// Rows: +foreach ($requirements as $requirement) { + $name = $requirement['name']; + echo '|'.str_pad(' '.$name, $columnSizes['name'], ' ', STR_PAD_RIGHT).'|'; + $condition = $requirement['condition'] ? 'Passed' : ($requirement['mandatory'] ? 'FAILED' : 'WARNING'); + echo str_pad($condition, $columnSizes['condition'], ' ', STR_PAD_BOTH).'|'; + $by = strip_tags($requirement['by']); + echo str_pad($by, $columnSizes['by'], ' ', STR_PAD_BOTH).'|'; + $memo = strip_tags($requirement['memo']); + echo str_pad(' '.$memo, $columnSizes['memo'], ' ', STR_PAD_RIGHT).'|'; + echo "\n"; +} +echo str_pad('', $tableLength, '-'); +echo "\n"; + +// Summary +$summaryString = 'Errors: '.$summary['errors'].' Warnings: '.$summary['warnings'].' Total checks: '.$summary['total']; +echo $summaryString; + +echo "\n\n"; \ No newline at end of file