Prepare for viewing versions using objectManager

This commit is contained in:
Alexander Nicolaysen Sørnes
2007-09-18 12:28:37 +02:00
committed by Chris Morgan
parent 43e3e6bebc
commit 93d71f630a
4 changed files with 52 additions and 9 deletions

View File

@@ -80,7 +80,9 @@ if( isset($aClean['iAppId']) )
{
$oVersion = new Version($aClean['iVersionId']);
$iTestingId = isset($aClean['iTestingId']) ? $aClean['iTestingId'] : null;
$oVersion->display($iTestingId);
// header
apidb_header("Viewing App: ".version::fullName($oVersion->iVersionId));
$oVersion->display($aClean);
} else
{
// Oops! Called with no params, bad llamah!

View File

@@ -699,14 +699,42 @@ class ObjectManager
}
}
/* Gets the custom variables, if any, from a class depending on
the action which is being taken, such as viewing an entry,
editing one etc.
Returns null if there are no custom vars, or a labelled array
with the variable contents otherwise */
function get_custom_vars($aClean, $sAction)
{
$oObject = new $this->sClass($this->iId);
if(!method_exists($oObject, "objectGetCustomVars"))
return null; /* No vars */
$aVars = array();
foreach($oObject->objectGetCustomVars($aClean, $sAction) as $sVar)
$aVars[$sVar] = $aClean[$sVar];
if(!sizeof($aVars))
return null; /* No vars */
else
return $aVars;
}
/* View an entry */
function view($sBackLink)
function view($sBackLink, $aClean)
{
$this->checkMethods(array("display"));
$oObject = new $this->sClass($this->iId);
$aVars = $this->get_custom_vars($aClean, "display");
if(!$aVars)
$oObject->display();
else
$oObject->display($aVars);
// display the move children entry
$this->displayMoveChildren($oObject);

View File

@@ -12,6 +12,7 @@ require_once(BASE."include/util.php");
require_once(BASE."include/testData.php");
require_once(BASE."include/downloadurl.php");
require_once(BASE."include/monitor.php");
require_once(BASE."include/vote.php");
define("LICENSE_OPENSOURCE", "Open Source");
define("LICENSE_FREEWARE", "Freeware");
@@ -718,12 +719,28 @@ class version {
$this->iObsoleteBy = 0;
}
function display($iTestingId)
function objectGetCustomVars($aClean, $sAction)
{
switch($sAction)
{
case "display":
/* Allow the user to select which test report is
shown in the version view */
return array("iTestingId");
default:
return null;
}
}
function display($aVars)
{
/* is this user supposed to view this version? */
if(!$_SESSION['current']->canViewVersion($this))
util_show_error_page_and_exit("Something went wrong with the application or version id");
$iTestingId = $aVars['iTestingId'];
$oApp = new Application($this->iAppId);
// Oops! application not found or other error. do something
@@ -738,10 +755,6 @@ class version {
if($_SESSION['current']->isLoggedIn())
apidb_sidebar_add("vote_menu");
// header
apidb_header("Viewing App- ".$oApp->sName." Version - ".$this->sName);
// cat
$oCategory = new Category($oApp->iCatId);
$oCategory->display($oApp->iAppId, $this->iVersionId);

View File

@@ -103,7 +103,7 @@ if($oObject->iId)
break;
default:
$oObject->view($_SERVER['REQUEST_URI']);
$oObject->view($_SERVER['REQUEST_URI'], $aClean);
break;
}
} else if (isset($aClean['sAction']) && $aClean['sAction'] == "add")