Difference between revisions of "VbzCart/archive/code/globals/clsVbzTitle"
Jump to navigation
Jump to search
(Created page with "<hide> [[file::VbzCart/code/files/base.cat.php]] </hide> {| style="float:right;" |- |__TOC__ |} ==References== * created by: {{l/same|clsVbzTitles}} ==Code== class clsVbzTitle...") |
(more obsessive archival tidying) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==References== | ==References== | ||
− | * created by: {{l/same|clsVbzTitles}} | + | * '''created by''': {{l/same|clsVbzTitles}} |
==Code== | ==Code== | ||
+ | <syntaxhighlight lang=php> | ||
class clsVbzTitle extends clsDataSet { | class clsVbzTitle extends clsDataSet { | ||
− | |||
// object cache | // object cache | ||
private $objDept; | private $objDept; | ||
Line 16: | Line 9: | ||
// options | // options | ||
public $hideImgs; | public $hideImgs; | ||
− | |||
− | |||
− | |||
public function Dept() { | public function Dept() { | ||
$doLoad = FALSE; | $doLoad = FALSE; | ||
Line 42: | Line 32: | ||
return $this->objDept; | return $this->objDept; | ||
} | } | ||
− | |||
− | |||
− | |||
/*---- | /*---- | ||
RETURNS: ID of this title's supplier | RETURNS: ID of this title's supplier | ||
Line 59: | Line 46: | ||
return $idSupp; | return $idSupp; | ||
} | } | ||
− | |||
− | |||
− | |||
// DEPRECATED -- use SuppObj() | // DEPRECATED -- use SuppObj() | ||
public function Supplier() { | public function Supplier() { | ||
return $this->SuppObj(); | return $this->SuppObj(); | ||
} | } | ||
− | |||
− | |||
− | |||
public function SuppObj() { | public function SuppObj() { | ||
$doLoad = FALSE; | $doLoad = FALSE; | ||
Line 92: | Line 73: | ||
return $this->objSupp; | return $this->objSupp; | ||
} | } | ||
− | |||
− | |||
− | |||
public function Items() { | public function Items() { | ||
$sqlFilt = 'ID_Title='.$this->ID; | $sqlFilt = 'ID_Title='.$this->ID; | ||
Line 101: | Line 79: | ||
return $objRows; | return $objRows; | ||
} | } | ||
− | |||
− | |||
− | |||
public function Topics() { | public function Topics() { | ||
$objTbl = $this->Engine()->TitleTopic_Topics(); | $objTbl = $this->Engine()->TitleTopic_Topics(); | ||
Line 109: | Line 84: | ||
return $objRows; | return $objRows; | ||
} | } | ||
− | |||
− | |||
− | |||
/*---- | /*---- | ||
RETURNS: Array containing summary information about this title | RETURNS: Array containing summary information about this title | ||
Line 146: | Line 118: | ||
return $arOut; | return $arOut; | ||
} | } | ||
− | |||
− | |||
− | |||
/*---- | /*---- | ||
RETURNS: Array containing summaries of ItTyps in which this Title is available | RETURNS: Array containing summaries of ItTyps in which this Title is available | ||
Line 195: | Line 164: | ||
return $arOut; | return $arOut; | ||
} | } | ||
− | |||
− | |||
− | |||
// LATER: change name to DataSet_Images() to clarify that this returns a dataset, not a text list or array | // LATER: change name to DataSet_Images() to clarify that this returns a dataset, not a text list or array | ||
public function ListImages($iSize) { | public function ListImages($iSize) { | ||
Line 204: | Line 170: | ||
return $objImgs; | return $objImgs; | ||
} | } | ||
− | |||
− | |||
− | |||
/*---- | /*---- | ||
RETURNS: dataset of item types for this title | RETURNS: dataset of item types for this title | ||
Line 218: | Line 181: | ||
return $obj; | return $obj; | ||
} | } | ||
− | |||
− | |||
− | |||
/*---- | /*---- | ||
HISTORY: | HISTORY: | ||
Line 252: | Line 212: | ||
return strtoupper($strOut); | return strtoupper($strOut); | ||
} | } | ||
− | |||
− | |||
− | |||
public function URL_part() { | public function URL_part() { | ||
return strtolower($this->CatNum('/')); | return strtolower($this->CatNum('/')); | ||
} | } | ||
− | |||
− | |||
− | |||
public function URL($iBase=KWP_CAT_REL) { | public function URL($iBase=KWP_CAT_REL) { | ||
return $iBase.$this->URL_part(); | return $iBase.$this->URL_part(); | ||
} | } | ||
− | |||
− | |||
− | |||
public function Link(array $iarAttr=NULL) { | public function Link(array $iarAttr=NULL) { | ||
$strURL = $this->URL(); | $strURL = $this->URL(); | ||
Line 272: | Line 223: | ||
return '<a'.$htAttr.' href="'.$strURL.'">'; | return '<a'.$htAttr.' href="'.$strURL.'">'; | ||
} | } | ||
− | |||
− | |||
− | |||
public function LinkAbs() { | public function LinkAbs() { | ||
$strURL = $this->URL(KWP_CAT); | $strURL = $this->URL(KWP_CAT); | ||
return '<a href="'.$strURL.'">'; | return '<a href="'.$strURL.'">'; | ||
} | } | ||
− | |||
− | |||
− | |||
public function LinkName() { | public function LinkName() { | ||
return $this->Link().$this->Name.'</a>'; | return $this->Link().$this->Name.'</a>'; | ||
} | } | ||
− | |||
} | } | ||
+ | </syntaxhighlight> |
Latest revision as of 13:31, 14 October 2022
References
- created by: clsVbzTitles
Code
class clsVbzTitle extends clsDataSet {
// object cache
private $objDept;
private $objSupp;
// options
public $hideImgs;
public function Dept() {
$doLoad = FALSE;
if (empty($this->objDept)) {
$doLoad = TRUE;
} else if (is_object($this->objDept)) {
if ($this->ID_Dept != $this->objDept->ID) {
$doLoad = TRUE;
}
} else {
$doLoad = TRUE;
}
if ($doLoad) {
$idDept = $this->ID_Dept;
if (empty($idDept)) {
$objDept = NULL;
} else {
$objDept = $this->objDB->Depts()->GetItem($idDept);
assert('is_object($objDept)');
}
$this->objDept = $objDept;
}
return $this->objDept;
}
/*----
RETURNS: ID of this title's supplier
HISTORY:
2011-09-28 revised to get ID directly from the new ID_Supp field
instead of having to look up the Dept and get it from there.
*/
public function Supplier_ID() {
/*
$objDept = $this->Dept();
$idSupp = $objDept->ID_Supplier;
*/
$idSupp = $this->Value('ID_Supp');
return $idSupp;
}
// DEPRECATED -- use SuppObj()
public function Supplier() {
return $this->SuppObj();
}
public function SuppObj() {
$doLoad = FALSE;
if (empty($this->objSupp)) {
$doLoad = TRUE;
} else if (is_object($this->objSupp)) {
if ($this->ID_Supplier != $this->objSupp->ID) {
$doLoad = TRUE;
}
} else {
$doLoad = TRUE;
}
if ($doLoad) {
$idSupp = $this->Supplier_ID();
if (empty($idSupp)) {
$objSupp = NULL;
} else {
$objSupp = $this->objDB->Suppliers()->GetItem($idSupp);
assert('is_object($objSupp)');
}
$this->objSupp = $objSupp;
}
return $this->objSupp;
}
public function Items() {
$sqlFilt = 'ID_Title='.$this->ID;
$objTbl = $this->objDB->Items();
$objRows = $objTbl->GetData($sqlFilt);
return $objRows;
}
public function Topics() {
$objTbl = $this->Engine()->TitleTopic_Topics();
$objRows = $objTbl->GetTitle($this->KeyValue());
return $objRows;
}
/*----
RETURNS: Array containing summary information about this title
*/
public function Indicia(array $iarAttr=NULL) {
$objItems = $this->Items();
$intActive = 0;
$intRetired = 0;
if ($objItems->HasRows()) {
while ($objItems->NextRow()) {
if ($objItems->isForSale) {
$intActive++;
} else {
$intRetired++;
}
}
}
// "dark-bg" brings up link colors for a dark background
$arLink = array('class'=>'dark-bg');
// merge in any overrides or additions from iarAttr:
if (is_array($iarAttr)) {
$arLink = array_merge($arLink,$iarAttr);
}
$htLink = $this->Link($arLink);
$txtCatNum = $this->CatNum();
$txtName = $this->Name;
$arOut['cnt.active'] = $intActive;
$arOut['cnt.retired'] = $intRetired;
$arOut['txt.cat.num'] = $txtCatNum;
$arOut['ht.link.open'] = $htLink;
$arOut['ht.cat.line'] = $htLink.$txtCatNum.'</a> '.$txtName;
return $arOut;
}
/*----
RETURNS: Array containing summaries of ItTyps in which this Title is available
array['text.!num'] = plaintext version with no numbers (types only)
array['text.cnt'] = plaintext version with line counts
array['html.cnt'] = HTML version with line counts
array['html.qty'] = HTML version with stock quantities
HISTORY:
2011-01-23 written
*/
public function Summary_ItTyps($iSep=', ') {
$dsRows = $this->DataSet_ItTyps();
$outTextNoQ = $outTextType = $outTextCnt = $outHTMLCnt = $outHTMLQty = NULL;
if ($dsRows->HasRows()) {
$isFirst = TRUE;
while ($dsRows->NextRow()) {
$cntType = $dsRows->Value('cntForSale');
if ($cntType > 0) {
$qtyStk = $dsRows->Value('qtyInStock');
$txtSng = $dsRows->Value('ItTypNameSng');
$txtPlr = $dsRows->Value('ItTypNamePlr');
$strType = Pluralize($cntType,$txtSng,$txtPlr);
if ($isFirst) {
$isFirst = FALSE;
} else {
$outTextType .= $iSep;
$outTextCnt .= $iSep;
$outHTMLCnt .= $iSep;
if (!is_null($outHTMLQty)) {
$outHTMLQty .= $iSep;
}
}
$outTextType .= $txtSng;
$outTextCnt .= $cntType.' '.$strType;
$outHTMLCnt .= '<b>'.$cntType.'</b> '.$strType;
if (!empty($qtyStk)) {
$outHTMLQty .= '<b>'.$qtyStk.'</b> '.Pluralize($qtyStk,$txtSng,$txtPlr);
}
}
}
}
$arOut['text.!num'] = $outTextType;
$arOut['text.cnt'] = $outTextCnt;
$arOut['html.cnt'] = $outHTMLCnt;
$arOut['html.qty'] = $outHTMLQty;
return $arOut;
}
// LATER: change name to DataSet_Images() to clarify that this returns a dataset, not a text list or array
public function ListImages($iSize) {
$sqlFilt = '(ID_Title='.$this->ID.') AND (Ab_Size="'.$iSize.'") AND isActive';
$objImgs = $this->objDB->Images()->GetData($sqlFilt,'clsImage','AttrSort');
return $objImgs;
}
/*----
RETURNS: dataset of item types for this title
USES: _title_ittyps (cached table)
HISTORY:
2011-01-19 written
*/
public function DataSet_ItTyps() {
$sql = 'SELECT * FROM _title_ittyps WHERE ID_Title='.$this->KeyValue();
$obj = $this->Engine()->DataSet($sql,'clsTitleIttyp');
return $obj;
}
/*----
HISTORY:
2010-10-19 added optimization to fetch answer from CatKey field if it exists.
This may cause future problems. Remove $iSep field and create individual functions
if so.
2012-02-02 allowed bypass of Dept if it isn't set
*/
public function CatNum($iSep='-') {
if (empty($this->Row['CatNum'])) {
$objDept = $this->Dept();
$objSupp = $this->SuppObj();
if (is_object($objDept)) {
$strDeptKey = $objDept->CatKey;
$strOut = $objSupp->CatKey;
if ($strDeptKey) {
$strOut .= $iSep.$strDeptKey;
}
} else {
if (is_object($objSupp)) {
$strOut = $objSupp->CatKey;
} else {
$strOut = '?';
}
}
$strOut .= $iSep.$this->CatKey;
} else {
$strOut = $this->CatNum;
}
return strtoupper($strOut);
}
public function URL_part() {
return strtolower($this->CatNum('/'));
}
public function URL($iBase=KWP_CAT_REL) {
return $iBase.$this->URL_part();
}
public function Link(array $iarAttr=NULL) {
$strURL = $this->URL();
$htAttr = ArrayToAttrs($iarAttr);
return '<a'.$htAttr.' href="'.$strURL.'">';
}
public function LinkAbs() {
$strURL = $this->URL(KWP_CAT);
return '<a href="'.$strURL.'">';
}
public function LinkName() {
return $this->Link().$this->Name.'</a>';
}
}