<?php
/**
* @author Joel Wan & Mark Slemko. Designs by Jonathan Easton
* @link http://www.phpobjectgenerator.com
* @copyright Offered under the BSD license
*
* This upgrade file does the following:
* 1. Checks if there is a new version of POG
* 2. If there is, it reads generates newer versions of all objects in the object directory,
* zip then and present them to the user to 'download'
*/
include "../../configuration.php";
include "class.zipfile.php";
include "nusoap.php";
/**
* Connects to POG SOAP server defined in configuration.php and
* generates new versions of all objects detected in /objects/ dir.
* All upgraded objects are then zipped and presented to user.
*
* @param string $path
*/
function UpdateAllObjects($path)
{
$dir = opendir($path);
$objects = array();
while(($file = readdir($dir)) !== false)
{
if(strlen($file) > 4 && substr(strtolower($file), strlen($file) - 4) === '.php' && !is_dir($file) && $file != "class.database.php" && $file != "configuration.php" && $file != "setup.php")
{
$objects[] = $file;
}
}
closedir($dir);
$i = 0;
foreach($objects as $object)
{
$content = file_get_contents($path."/".$object);
$contentParts = split("<b>",$content);
if (isset($contentParts[1]))
{
$contentParts2 = split("</b>",$contentParts[1]);
}
if (isset($contentParts2[0]))
{
$className = trim($contentParts2[0]);
}
if (isset($className))
{
$objectNameList[] = $className;
$linkParts1 = split("\*\/", $contentParts[1]);
$linkParts2 = split("\@link", $linkParts1[0]);
$link = $linkParts2[1];
$client = new soapclient($GLOBALS['configuration']['soap'], true);
$params = array('link' => $link);
if ($i == 0)
{
$package = unserialize($client->call('GeneratePackageFromLink', $params));
}
else
{
$objectString = $client->call('GenerateObjectFromLink', $params);
$package["objects"]["class.".strtolower($className).".php"] = $objectString;
}
}
$i++;
}
$zipfile = new createZip();
$zipfile -> addPOGPackage($package);
$zipfile -> forceDownload("pog.".time().".zip");
}
/**
* Checks if POG generator has been updated
*
* @return unknown
*/
function UpdateAvailable()
{
$client = new soapclient($GLOBALS['configuration']['soap'], true);
$params = array();
$generatorVersion = base64_decode($client->call('GetGeneratorVersion'));
if ($generatorVersion != $GLOBALS['configuration']['versionNumber'].$GLOBALS['configuration']['revisionNumber'])
{
return true;
}
else
{
return false;
}
}
if (UpdateAvailable())
{
UpdateAllObjects("../../objects/");
}
else
{
echo "<script>
alert('All POG objects are already up to date');
window.close();
</script>";
}
?>
|