summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
authorroot2014-02-24 18:54:40 +0100
committerroot2014-02-24 18:54:40 +0100
commit6d0a5d7096e0aee3dcb1a41a0f6c57a38876c821 (patch)
tree04aeaeae6274332b2b755c5c2a91185eefd62955 /www
parent8d0d04245732fcadb04ccdcba8244ca78f825435 (diff)
downloadrandom-6d0a5d7096e0aee3dcb1a41a0f6c57a38876c821.tar.gz
.
Diffstat (limited to 'www')
-rw-r--r--www/InstallationChecker.php390
-rw-r--r--www/youtube.php70
-rw-r--r--www/zend_init.php10
3 files changed, 462 insertions, 8 deletions
diff --git a/www/InstallationChecker.php b/www/InstallationChecker.php
new file mode 100644
index 0000000..c5d90dd
--- /dev/null
+++ b/www/InstallationChecker.php
@@ -0,0 +1,390 @@
+<?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();
diff --git a/www/youtube.php b/www/youtube.php
index ee2cc02..13829fa 100644
--- a/www/youtube.php
+++ b/www/youtube.php
@@ -1,12 +1,65 @@
<?php
-/*
-*This generates a Youtube-ID and checks if available. This is the most stupid way I can think of.
-*NO, THIS SHIT DOESN'T WORK!! You will get 404's everytime.
-*/
+include("zend_init.php");
+
+function getAndPrintVideoFeed($location = Zend_Gdata_YouTube::VIDEO_URI)
+{
+$yt = new Zend_Gdata_YouTube();
+$yt->setMajorProtocolVersion(2);
+
+$videoFeed = $yt->getVideoFeed($location);
+ printVideoFeed($videoFeed);
+}
+
+function printVideoFeed($videoFeed)
+{
+ $count = 1;
+ foreach ($videoFeed as $videoEntry) {
+ echo "Entry # " . $count . "\n";
+ printVideoEntry($videoEntry);
+ echo "\n";
+ $count++;
+ }
+}
+
+function printVideoEntry($videoEntry)
+{
+ // the videoEntry object contains many helper functions
+ // that access the underlying mediaGroup object
+ echo 'Video: ' . $videoEntry->getVideoTitle() . "\n <br>";
+/* echo 'Video ID: ' . $videoEntry->getVideoId() . "\n";
+ echo 'Updated: ' . $videoEntry->getUpdated() . "\n";
+ echo 'Description: ' . $videoEntry->getVideoDescription() . "\n";
+ echo 'Category: ' . $videoEntry->getVideoCategory() . "\n";
+ echo 'Tags: ' . implode(", ", $videoEntry->getVideoTags()) . "\n";
+ echo 'Watch page: ' . $videoEntry->getVideoWatchPageUrl() . "\n";
+ echo 'Flash Player Url: ' . $videoEntry->getFlashPlayerUrl() . "\n";
+ echo 'Duration: ' . $videoEntry->getVideoDuration() . "\n";
+ echo 'View count: ' . $videoEntry->getVideoViewCount() . "\n";
+ echo 'Rating: ' . $videoEntry->getVideoRatingInfo() . "\n";
+ echo 'Geo Location: ' . $videoEntry->getVideoGeoLocation() . "\n";
+ echo 'Recorded on: ' . $videoEntry->getVideoRecorded() . "\n";
+ */
-$clientLibraryPath = "../zend/library";
-$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);
+ // see the paragraph above this function for more information on the
+ // 'mediaGroup' object. in the following code, we use the mediaGroup
+ // object directly to retrieve its 'Mobile RSTP link' child
+/* foreach ($videoEntry->mediaGroup->content as $content) {
+ if ($content->type === "video/3gpp") {
+ echo 'Mobile RTSP link: ' . $content->url . "\n";
+ }
+ }
+
+ echo "Thumbnails:\n";
+ $videoThumbnails = $videoEntry->getVideoThumbnails();
+
+ foreach($videoThumbnails as $videoThumbnail) {
+ echo $videoThumbnail['time'] . ' - ' . $videoThumbnail['url'];
+ echo ' height=' . $videoThumbnail['height'];
+ echo ' width=' . $videoThumbnail['width'] . "\n";
+ }
+*/
+}
function get_video(){
@@ -24,12 +77,13 @@ function get_video(){
$string = "$string".$youtube_array[$index];
}
return $string;
- }
}
+getAndPrintVideoFeed();
+
$searchstring = get_video();
-echo $searchstring;
+echo "<br>Searchstring: " . $searchstring;
// <iframe width="560" height="315" src="//www.youtube.com/embed/" frameborder="0" allowfullscreen></iframe>
diff --git a/www/zend_init.php b/www/zend_init.php
new file mode 100644
index 0000000..3089906
--- /dev/null
+++ b/www/zend_init.php
@@ -0,0 +1,10 @@
+<?
+$clientLibraryPath = "../zend/library";
+$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);
+
+require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path
+Zend_Loader::loadClass('Zend_Gdata_YouTube');
+$yt = new Zend_Gdata_YouTube();
+$yt->setMajorProtocolVersion(2);
+
+return $yt;