This repository has been archived on 2025-05-24. You can view files and clone it, but cannot push or open issues or pull requests.
Files
qemudb/include/vendor.php
Alexander Nicolaysen Sørnes 11ecfa230b Add allowAnonymousSubmissions(). objectManager checks the return value of this new function and
exists with an error during certain actions if the user is not logged in and the function returns
false
2007-04-29 23:00:01 +00:00

319 lines
8.7 KiB
PHP

<?php
/**********************************/
/* this class represents a vendor */
/**********************************/
/**
* Vendor class for handling vendors.
*/
class Vendor {
var $iVendorId;
var $sName;
var $sWebpage;
var $sQueued;
var $aApplicationsIds; // an array that contains the appId of every application linked to this vendor
/**
* constructor, fetches the data.
*/
function Vendor($iVendorId = null, $oRow = null)
{
// we are working on an existing vendor
if(is_numeric($iVendorId))
{
if(!$oRow)
{
/*
* We fetch the data related to this vendor.
*/
$sQuery = "SELECT *
FROM vendor
WHERE vendorId = '?'";
if($hResult = query_parameters($sQuery, $iVendorId))
$oRow = mysql_fetch_object($hResult);
}
if($oRow)
{
$this->iVendorId = $iVendorId;
$this->sName = $oRow->vendorName;
$this->sWebpage = $oRow->vendorURL;
$this->sQueued = $oRow->queued;
}
/*
* We fetch applicationsIds.
*/
$sQuery = "SELECT appId
FROM appFamily
WHERE vendorId = '?'";
if($hResult = query_parameters($sQuery, $iVendorId))
{
while($oRow = mysql_fetch_object($hResult))
{
$this->aApplicationsIds[] = $oRow->appId;
}
}
}
}
/**
* Creates a new vendor.
*/
function create()
{
$hResult = query_parameters("INSERT INTO vendor (vendorName, vendorURL, queued) ".
"VALUES ('?', '?', '?')",
$this->sName, $this->sWebpage,
$this->mustBeQueued() ? "true" : "false");
if($hResult)
{
$this->iVendorId = mysql_insert_id();
$this->vendor($this->iVendorId);
return true;
}
else
{
addmsg("Error while creating a new vendor.", "red");
return false;
}
}
/**
* Un-queue vendor
* Returns TRUE or FALSE
*/
function unQueue()
{
if(!$this->canEdit())
return FALSE;
$hResult = query_parameters("UPDATE vendor SET queued = '?' WHERE vendorId = '?'",
'false', $this->iVendorId);
if(!$hResult)
return FALSE;
return TRUE;
}
/**
* Update vendor.
* Returns true on success and false on failure.
*/
function update()
{
if(!$this->iVendorId)
return $this->create();
if($this->sName)
{
if (!query_parameters("UPDATE vendor SET vendorName = '?' WHERE vendorId = '?'",
$this->sName, $this->iVendorId))
return false;
$this->sName = $sName;
}
if($this->sWebpage)
{
if (!query_parameters("UPDATE vendor SET vendorURL = '?' WHERE vendorId = '?'",
$this->sWebpage, $this->iVendorId))
return false;
$this->sWebpage = $sWebpage;
}
return true;
}
/**
* Deletes the vendor from the database.
*/
function delete($bSilent=false)
{
if(sizeof($this->aApplicationsIds)>0)
{
addmsg("The vendor has not been deleted because there are still applications linked to it.", "red");
} else
{
$sQuery = "DELETE FROM vendor
WHERE vendorId = '?'
LIMIT 1";
if(query_parameters($sQuery, $this->iVendorId))
{
addmsg("The vendor has been deleted.", "green");
return TRUE;
}
return FALSE;
}
}
function outputEditor()
{
echo "<table width='100%' border=0 cellpadding=2 cellspacing=0>\n";
// Name
echo '<tr valign=top><td class="color1" width="20%"><b>Vendor Name</b></td>',"\n";
echo '<td class="color0"><input type=text name="sVendorName" value="'.$this->sName.'" size="50"></td></tr>',"\n";
// Url
echo '<tr valign=top><td class="color1"><b>Vendor Url</b></td>',"\n";
echo '<td class="color0"><input type=text name="sVendorWebpage" value="'.$this->sWebpage.'" size="50"></td></tr>',"\n";
echo '<input type="hidden" name="iVendorId" value="'.$this->iVendorId.'">',"\n";
echo "</table>\n";
}
function objectGetEntries($bQueued, $bRejected, $iRows = 0, $iStart = 0)
{
/* Vendor queueing is not implemented yet */
if($bQueued)
return FALSE;
/* Not implemented */
if($bRejected)
return FALSE;
if(!$iRows)
$iRows = Vendor::objectGetEntriesCount($bQueued, $bRejected);
$hResult = query_parameters("SELECT * FROM vendor
ORDER BY vendorName LIMIT ?,?",
$iStart, $iRows);
if(!$hResult)
return FALSE;
return $hResult;
}
function objectGetHeader()
{
$aCells = array(
"Name",
"Website",
array("Linked apps", "align=\"right\""));
return $aCells;
}
function objectGetInstanceFromRow($oRow)
{
return new vendor($oRow->vendorId, $oRow);
}
/* arg1 = OM object, arg2 = CSS style, arg3 = text for edit link */
function objectOutputTableRow($oObject, $sClass = "", $sEditLinkLabel)
{
$aCells = array(
"<a href=\"".$oObject->makeUrl("view", $this->iVendorId,
"View Vendor")."\">$this->sName</a>",
"<a href=\"$this->sWebpage\">$this->sWebpage</a>",
array(sizeof($this->aApplicationsIds), "align=\"right\""));
if($this->canEdit())
{
if(!sizeof($this->aApplicationsIds))
$shDeleteLink = " &nbsp; [<a href=\"".$oObject->makeUrl("delete",
$this->iVendorId, "View Vendors")."\">".
"delete</a>]";
$aCells[sizeof($aCells)] = "[<a href=\"".$oObject->makeUrl("edit",
$this->iVendorId, "Edit Vendor")."\">$sEditLinkLabel</a>]$shDeleteLink";
}
echo html_tr($aCells, $sClass);
}
function canEdit()
{
if($_SESSION['current']->hasPriv("admin"))
return TRUE;
else
return FALSE;
}
function mustBeQueued()
{
if($_SESSION['current']->hasPriv("admin"))
return FALSE;
else
return TRUE;
}
function getOutputEditorValues($aClean)
{
$this->sName = $aClean['sVendorName'];
$this->sWebpage = $aClean['sVendorWebpage'];
}
function display()
{
echo 'Vendor Name: '.$this->sName,"\n";
if($this->canEdit())
{
echo "[<a href=\"".$_SERVER['PHP_SELF']."?sClass=vendor&sAction=edit&".
"iId=$this->iVendorId&sTitle=Edit%20Vendor\">edit</a>]";
}
echo '<br />',"\n";
if ($this->sWebpage)
echo 'Vendor URL: <a href="'.$this->sWebpage.'">'.
$this->sWebpage.'</a> <br />',"\n";
if($this->aApplicationsIds)
{
echo '<br />Applications by '.$this->sName.'<br /><ol>',"\n";
foreach($this->aApplicationsIds as $iAppId)
{
$oApp = new Application($iAppId);
echo '<li>'.$oApp->objectMakeLink().'</li>',"\n";
}
echo '</ol>',"\n";
}
}
/* Make a URL for viewing the specified vendor */
function objectMakeUrl()
{
$oManager = new objectManager("vendor", "View Vendor");
return $oManager->makeUrl("view", $this->iVendorId);
}
/* Make a HTML link for viewing the specified vendor */
function objectMakeLink()
{
return "<a href=\"".$this->objectMakeUrl()."\">$this->sName</a>";
}
function objectGetEntriesCount($bQueued, $bRejected)
{
/* Not implemented */
if($bQueued)
return FALSE;
/* Not implemented */
if($bRejected)
return FALSE;
$hResult = query_parameters("SELECT COUNT(vendorId) as count FROM vendor");
if(!$hResult)
return FALSE;
if(!$oRow = mysql_fetch_object($hResult))
return FALSE;
return $oRow->count;
}
function allowAnonymousSubmissions()
{
return FALSE;
}
}
?>