diff options
| author | root | 2014-02-26 16:25:49 +0100 |
|---|---|---|
| committer | root | 2014-02-26 16:25:49 +0100 |
| commit | e2dfb7fd3f5da5fac7788ed8bcb146b29d87a8c2 (patch) | |
| tree | a703653b90f1a1522cce4134a1aa5871eb32747d /www/InstallationChecker.php | |
| parent | e9545de88cc1021d2b5f2a616bc9c472e65781e7 (diff) | |
| download | random-e2dfb7fd3f5da5fac7788ed8bcb146b29d87a8c2.tar.gz | |
mv
Diffstat (limited to 'www/InstallationChecker.php')
| -rw-r--r-- | www/InstallationChecker.php | 390 |
1 files changed, 0 insertions, 390 deletions
diff --git a/www/InstallationChecker.php b/www/InstallationChecker.php deleted file mode 100644 index c5d90dd..0000000 --- a/www/InstallationChecker.php +++ /dev/null @@ -1,390 +0,0 @@ -<?php -/** - * Zend Framework - * - * LICENSE - * - * This source file is subject to the new BSD license that is bundled - * with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://framework.zend.com/license/new-bsd - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@zend.com so we can send you a copy immediately. - * - * @category Zend - * @package Zend_Gdata - * @subpackage Demos - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) - * @license http://framework.zend.com/license/new-bsd New BSD License - */ - -/** - * Simple class to verify that the server that this is run on has a correct - * installation of the Zend Framework Gdata component. - */ - -$clientLibraryPath = "../zend/library"; -$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath); - -class InstallationChecker { - - const CSS_WARNING = '.warning { color: #fff; background-color: #AF0007;}'; - const CSS_SUCCESS = '.success { color: #000; background-color: #69FF4F;}'; - const CSS_ERROR = '.error { color: #fff; background-color: #FF9FA3;}'; - const PHP_EXTENSION_ERRORS = 'PHP Extension Errors'; - const PHP_MANUAL_LINK_FRAGMENT = 'http://us.php.net/manual/en/book.'; - const PHP_REQUIREMENT_CHECKER_ID = 'PHP Requirement checker v0.1'; - const SSL_CAPABILITIES_ERRORS = 'SSL Capabilities Errors'; - const YOUTUBE_API_CONNECTIVITY_ERRORS = 'YouTube API Connectivity Errors'; - const ZEND_GDATA_INSTALL_ERRORS = 'Zend Framework Installation Errors'; - const ZEND_SUBVERSION_URI = 'http://framework.zend.com/download/subversion'; - - private static $REQUIRED_EXTENSIONS = array( - 'ctype', 'dom', 'libxml', 'spl', 'standard', 'openssl'); - - private $_allErrors = array( - self::PHP_EXTENSION_ERRORS => array( - 'tested' => false, 'errors' => null), - self::ZEND_GDATA_INSTALL_ERRORS => array( - 'tested' => false, 'errors' => null), - self::SSL_CAPABILITIES_ERRORS => array( - 'tested' => false, 'errors' => null), - self::YOUTUBE_API_CONNECTIVITY_ERRORS => array( - 'tested' => false, 'errors' => null) - ); - - private $_sapiModeCLI = null; - - /** - * Create a new InstallationChecker object and run verifications. - * @return void - */ - public function __construct() - { - $this->determineIfInCLIMode(); - $this->runAllVerifications(); - $this->outputResults(); - } - - /** - * Set the sapiModeCLI variable to true if we are running CLI mode. - * - * @return void - */ - private function determineIfInCLIMode() - { - if (php_sapi_name() == 'cli') { - $this->_sapiModeCLI = true; - } - } - - /** - * Getter for sapiModeCLI variable. - * - * @return boolean True if we are running in CLI mode. - */ - public function runningInCLIMode() - { - if ($this->_sapiModeCLI) { - return true; - } else { - return false; - } - } - - /** - * Run verifications, stopping at each step if there is a failure. - * - * @return void - */ - public function runAllVerifications() - { - if (!$this->validatePHPExtensions()) { - return; - } - if (!$this->validateZendFrameworkInstallation()) { - return; - } - if (!$this->testSSLCapabilities()) { - return; - } - if (!$this->validateYouTubeAPIConnectivity()) { - return; - } - } - - /** - * Validate that the required PHP Extensions are installed and available. - * - * @return boolean False if there were errors. - */ - private function validatePHPExtensions() - { - $phpExtensionErrors = array(); - foreach (self::$REQUIRED_EXTENSIONS as $requiredExtension) { - if (!extension_loaded($requiredExtension)) { - $requiredExtensionError = $requiredExtension . - ' extension missing'; - $documentationLink = null; - if ($requiredExtension != 'standard') { - $documentationLink = self::PHP_MANUAL_LINK_FRAGMENT . - $requiredExtension . '.php'; - $documentationLink = - $this->checkAndAddHTMLLink($documentationLink); - } else { - $documentationLink = self::PHP_MANUAL_LINK_FRAGMENT . - 'spl.php'; - $documentationLink = - $this->checkAndAddHTMLLink($documentationLink); - } - - if ($documentationLink) { - $phpExtensionErrors[] = $requiredExtensionError . - ' - refer to ' . $documentationLink; - } - } - } - $this->_allErrors[self::PHP_EXTENSION_ERRORS]['tested'] = true; - if (count($phpExtensionErrors) > 0) { - $this->_allErrors[self::PHP_EXTENSION_ERRORS]['errors'] = - $phpExtensionErrors; - return false; - } - return true; - } - - /** - * Validate that the Gdata component of Zend Framework is installed - * properly. Also checks that the required YouTube API helper methods are - * found. - * - * @return boolean False if there were errors. - */ - private function validateZendFrameworkInstallation() - { - $zendFrameworkInstallationErrors = array(); - $zendLoaderPresent = false; - try { - $zendLoaderPresent = @fopen('Zend/Loader.php', 'r', true); - } catch (Exception $e) { - $zendFrameworkInstallationErrors[] = 'Exception thrown trying to ' . - 'access Zend/Loader.php using \'use_include_path\' = true ' . - 'Make sure you include the Zend Framework in your ' . - 'include_path which currently contains: "' . - ini_get('include_path') . '"'; - } - - if ($zendLoaderPresent) { - @fclose($zendLoaderPresent); - require_once('Zend/Loader.php'); - require_once('Zend/Version.php'); - Zend_Loader::loadClass('Zend_Gdata_YouTube'); - Zend_Loader::loadClass('Zend_Gdata_YouTube_VideoEntry'); - $yt = new Zend_Gdata_YouTube(); - $videoEntry = $yt->newVideoEntry(); - if (!method_exists($videoEntry, 'setVideoTitle')) { - $zendFrameworkMessage = 'Your version of the ' . - 'Zend Framework ' . Zend_Version::VERSION . ' is too old' . - ' to run the YouTube demo application and does not' . - ' contain the new helper methods. Please check out a' . - ' newer version from Zend\'s repository: ' . - checkAndAddHTMLLink(self::ZEND_SUBVERSION_URI); - $zendFrameworkInstallationErrors[] = $zendFrameworkMessage; - } - } else { - if (count($zendFrameworkInstallationErrors) < 1) { - $zendFrameworkInstallationErrors[] = 'Exception thrown trying' . - ' to access Zend/Loader.php using \'use_include_path\' =' . - ' true. Make sure you include Zend Framework in your' . - ' include_path which currently contains: ' . - ini_get('include_path'); - } - } - - $this->_allErrors[self::ZEND_GDATA_INSTALL_ERRORS]['tested'] = true; - - if (count($zendFrameworkInstallationErrors) > 0) { - $this->_allErrors[self::ZEND_GDATA_INSTALL_ERRORS]['errors'] = - $zendFrameworkInstallationErrors; - return false; - } - return true; - } - - /** - * Create HTML link from an input string if not in CLI mode. - * - * @param string The error message to be converted to a link. - * @return string Either the original error message or an HTML version. - */ - private function checkAndAddHTMLLink($inputString) { - if (!$this->runningInCLIMode()) { - return $this->makeHTMLLink($inputString); - } else { - return $inputString; - } - } - - /** - * Create an HTML link from a string. - * - * @param string The string to be made into link text and anchor target. - * @return string HTML link. - */ - private function makeHTMLLink($inputString) - { - return '<a href="'. $inputString . '" target="_blank">' . - $inputString . '</a>'; - } - - /** - * Validate that SSL Capabilities are available. - * - * @return boolean False if there were errors. - */ - private function testSSLCapabilities() - { - $sslCapabilitiesErrors = array(); - require_once 'Zend/Loader.php'; - Zend_Loader::loadClass('Zend_Http_Client'); - - $httpClient = new Zend_Http_Client( - 'https://www.google.com/accounts/AuthSubRequest'); - $response = $httpClient->request(); - $this->_allErrors[self::SSL_CAPABILITIES_ERRORS]['tested'] = true; - - if ($response->isError()) { - $sslCapabilitiesErrors[] = 'Response from trying to access' . - ' \'https://www.google.com/accounts/AuthSubRequest\' ' . - $response->getStatus() . ' - ' . $response->getMessage(); - } - - if (count($sslCapabilitiesErrors) > 0) { - $this->_allErrors[self::SSL_CAPABILITIES_ERRORS]['errors'] = - $sslCapabilitiesErrors; - return false; - } - return true; - } - - /** - * Validate that we can connect to the YouTube API. - * - * @return boolean False if there were errors. - */ - private function validateYouTubeAPIConnectivity() - { - $connectivityErrors = array(); - require_once 'Zend/Loader.php'; - Zend_Loader::loadClass('Zend_Gdata_YouTube'); - $yt = new Zend_Gdata_YouTube(); - $topRatedFeed = $yt->getTopRatedVideoFeed(); - if ($topRatedFeed instanceof Zend_Gdata_YouTube_VideoFeed) { - if ($topRatedFeed->getTotalResults()->getText() < 1) { - $connectivityErrors[] = 'There was less than 1 video entry' . - ' in the \'Top Rated Video Feed\''; - } - } else { - $connectivityErrors[] = 'The call to \'getTopRatedVideoFeed()\' ' . - 'did not result in a Zend_Gdata_YouTube_VideoFeed object'; - } - - $this->_allErrors[self::YOUTUBE_API_CONNECTIVITY_ERRORS]['tested'] = - true; - if (count($connectivityErrors) > 0) { - $this->_allErrors[self::YOUTUBE_API_CONNECTIVITY_ERRORS]['tested'] = - $connectivityErrors; - return false; - } - return true; - } - - /** - * Dispatch a call to outputResultsInHTML or outputResultsInText pending - * the current SAPI mode. - * - * @return void - */ - public function outputResults() - { - if ($this->_sapiModeCLI) { - print $this->getResultsInText(); - } else { - print $this->getResultsInHTML(); - } - } - - - /** - * Return a string representing the results of the verifications. - * - * @return string A string representing the results. - */ - private function getResultsInText() - { - $output = "== Ran PHP Installation Checker using CLI ==\n"; - - $error_count = 0; - foreach($this->_allErrors as $key => $value) { - $output .= $key . ' -- '; - if (($value['tested'] == true) && (count($value['errors']) == 0)) { - $output .= "No errors found\n"; - } elseif ($value['tested'] == true) { - $output .= "Tested\n"; - $error_count = 0; - foreach ($value['errors'] as $error) { - $output .= "Error number: " . $error_count . "\n--" . - $error . "\n"; - } - } else { - $output .= "Not tested\n"; - } - $error_count++; - } - return $output; - } - - /** - * Return an HTML table representing the results of the verifications. - * - * @return string An HTML string representing the results. - */ - private function getResultsInHTML() - { - $html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" " . - "\"http://www.w3.org/TR/html4/strict.dtd\">\n". - "<html><head>\n<title>PHP Installation Checker</title>\n" . - "<style type=\"text/css\">\n" . - self::CSS_WARNING . "\n" . - self::CSS_SUCCESS . "\n" . - self::CSS_ERROR . "\n" . - "</style></head>\n" . - "<body>\n<table class=\"verification_table\">" . - "<caption>Ran PHP Installation Checker on " . - gmdate('c') . "</caption>\n"; - - $error_count = 0; - foreach($this->_allErrors as $key => $value) { - $html .= "<tr><td class=\"verification_type\">" . $key . "</td>"; - if (($value['tested'] == true) && (count($value['errors']) == 0)) { - $html .= "<td class=\"success\">Tested</td></tr>\n" . - "<tr><td colspan=\"2\">No errors found</td></tr>\n"; - } elseif ($value['tested'] == true) { - $html .= "<td class=\"warning\">Tested</td></tr>\n"; - $error_count = 0; - foreach ($value['errors'] as $error) { - $html .= "<tr><td class=\"error\">" . $error_count . "</td>" . - "<td class=\"error\">" . $error . "</td></tr>\n"; - } - } else { - $html .= "<td class=\"warning\">Not tested</td></tr>\n"; - } - $error_count++; - } - $html .= "</body></html>"; - return $html; - } -} - -$installationChecker = new InstallationChecker(); |
