PDO $pdo,
Toolkit_Image_Server $is,
Toolkit_Banners_Notifier $notifier,
- $catid
+ $catid,
+ $type
) {
if (!ctype_digit((string)$catid)) {
throw new InvalidArgumentException(
$switchArrays = false;
// if we haven't already made the available pool, do so now.
- if ( !isset($_SESSION['banners'])
- || !is_array($_SESSION['banners']['availablePool'])
- || !is_array($_SESSION['banners']['usedPool'])
+ if ( !isset($_SESSION['banners' . $type])
+ || !is_array($_SESSION['banners' . $type]['availablePool'])
+ || !is_array($_SESSION['banners' . $type]['usedPool'])
) {
- $_SESSION['banners']['availablePool'] = array_keys($this->_decorators);
- $_SESSION['banners']['usedPool'] = array();
+ $_SESSION['banners' . $type]['availablePool'] = array_keys($this->_decorators);
+ $_SESSION['banners' . $type]['usedPool'] = array();
} else {
$this->_checkPoolForExpiredDecorators(
- $_SESSION['banners']['availablePool']
+ $_SESSION['banners' . $type]['availablePool']
);
$this->_checkPoolForExpiredDecorators(
- $_SESSION['banners']['usedPool']
+ $_SESSION['banners' . $type]['usedPool']
);
// new banner is now available in the _decorators array. Make sure
// this banner gets added into the availablePool array so it can be
// displayed on the front end.
- $availPoolCount = count($_SESSION['banners']['availablePool']);
- $usedPoolCount = count($_SESSION['banners']['usedPool']);
+ $availPoolCount = count($_SESSION['banners' . $type]['availablePool']);
+ $usedPoolCount = count($_SESSION['banners' . $type]['usedPool']);
if (count($this->_decorators) > ($availPoolCount + $usedPoolCount)) {
foreach ($this->_decorators as $i => $j) {
- if ( !in_array($i, $_SESSION['banners']['availablePool'])
- && !in_array($i, $_SESSION['banners']['usedPool'])
+ if ( !in_array($i, $_SESSION['banners' . $type]['availablePool'])
+ && !in_array($i, $_SESSION['banners' . $type]['usedPool'])
) {
- $_SESSION['banners']['availablePool'][$i] = $i;
+ $_SESSION['banners' . $type]['availablePool'][$i] = $i;
}
}
}
// If there is only one decorator in the array, make sure
// array_rand returns an array so we don't have an error
// the usedPool array and set flag to switch arrays
- $totAvail = count($_SESSION['banners']['availablePool']);
+ $totAvail = count($_SESSION['banners' . $type]['availablePool']);
if ($totAvail < $numReq) {
$numToFetch = $numReq - $totAvail;
$rand = (array) array_rand(
- $_SESSION['banners']['usedPool'],
+ $_SESSION['banners' . $type]['usedPool'],
$numToFetch
);
foreach ($rand as $i) {
- $_SESSION['banners']['availablePool'][$i] = $i;
- unset($_SESSION['banners']['usedPool'][$i]);
+ $_SESSION['banners' . $type]['availablePool'][$i] = $i;
+ unset($_SESSION['banners' . $type]['usedPool'][$i]);
}
$switchArrays = true;
}
// If there is only one decorator in the array, make sure
// array_rand returns an array so we don't have an error
- $rand = (array) array_rand($_SESSION['banners']['availablePool'], $numReq);
+ $rand = (array) array_rand($_SESSION['banners' . $type]['availablePool'], $numReq);
foreach ($rand as $i) {
// if we won't be switching the arrays, then mark the used banner
// in the usedPool and remove it from the availablePool array.
if (!$switchArrays) {
- $_SESSION['banners']['usedPool'][$i] = $i;
- unset($_SESSION['banners']['availablePool'][$i]);
+ $_SESSION['banners' . $type]['usedPool'][$i] = $i;
+ unset($_SESSION['banners' . $type]['availablePool'][$i]);
}
$banner = $this->_decorators[$i]->getBanner();
// if we need to switch arrays, then we've exhausted the entire resource
// of available banners and can starting reusing banners from the usedPool.
if ($switchArrays) {
- $used = $_SESSION['banners']['usedPool'];
- $_SESSION['banners']['usedPool'] = $_SESSION['banners']['availablePool'];
- $_SESSION['banners']['availablePool'] = $used;
+ $used = $_SESSION['banners' . $type]['usedPool'];
+ $_SESSION['banners' . $type]['usedPool'] = array();
+ $_SESSION['banners' . $type]['availablePool'] = $used;
}
return "<div id=\"staticBanners\">$banners</div>";