summaryrefslogtreecommitdiff
path: root/www/InstallationChecker.php
diff options
context:
space:
mode:
authorroot2014-02-26 16:25:49 +0100
committerroot2014-02-26 16:25:49 +0100
commite2dfb7fd3f5da5fac7788ed8bcb146b29d87a8c2 (patch)
treea703653b90f1a1522cce4134a1aa5871eb32747d /www/InstallationChecker.php
parente9545de88cc1021d2b5f2a616bc9c472e65781e7 (diff)
downloadrandom-e2dfb7fd3f5da5fac7788ed8bcb146b29d87a8c2.tar.gz
mv
Diffstat (limited to 'www/InstallationChecker.php')
-rw-r--r--www/InstallationChecker.php390
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();