Update banner code
authorSteve Sutton <steve@gaslightmedia.com>
Wed, 4 Sep 2013 14:26:03 +0000 (14:26 +0000)
committerSteve Sutton <steve@gaslightmedia.com>
Wed, 4 Sep 2013 14:26:03 +0000 (14:26 +0000)
Taken from demo update to banners to work with both Side and Bottom
banners.

Toolkit/Banners/Banner.php
Toolkit/Banners/Database/tables/banners.sql
Toolkit/Banners/HorizontalDecorator.php
Toolkit/Banners/Impression.php
Toolkit/Banners/StaticBannersDecorator.php
Toolkit/Banners/config.ini

index c4117ea..bef0010 100644 (file)
@@ -443,7 +443,7 @@ class Toolkit_Banners_Banner
        }
 
     //  }}}
-    // {{ getEmbedcode
+    // {{{ getEmbedcode
     /**
      * Get if the banner has embed code
      *
index 84c9fab..507ab5d 100644 (file)
@@ -4,8 +4,7 @@ CREATE TABLE banners.banners
 (id SERIAL,
  active BOOLEAN NOT NULL
        DEFAULT FALSE,
- embedcode BOOLEAN NOT NULL
-       DEFAULT FALSE,
+ embedcode BOOLEAN DEFAULT FALSE,
  business TEXT,
  campaign INTEGER NOT NULL
        REFERENCES banners.banner_campaigns (id)
@@ -14,9 +13,9 @@ CREATE TABLE banners.banners
  description TEXT,
  external BOOLEAN NOT NULL
        DEFAULT FALSE,
- image TEXT NOT NULL,
+ image TEXT,
  position TEXT NOT NULL,
- url TEXT NOT NULL,
+ url TEXT,
  PRIMARY KEY (id));
 
 GRANT ALL ON banners.banners_id_seq TO nobody;
index 4d774a8..868a681 100644 (file)
@@ -117,4 +117,3 @@ class Toolkit_Banners_HorizontalDecorator
 
     //  }}}
 }
-?>
index a119042..bcaf7fd 100644 (file)
@@ -97,4 +97,3 @@ class Toolkit_Banners_Impression extends Toolkit_Banners_ActionNode
 
        //      }}}
 }
-?>
index cd61427..bb968d4 100644 (file)
@@ -158,7 +158,8 @@ class Toolkit_Banners_StaticBannersDecorator implements IteratorAggregate
                PDO $pdo,
                Toolkit_Image_Server $is,
                Toolkit_Banners_Notifier $notifier,
-               $catid
+               $catid,
+        $type
        ) {
                if (!ctype_digit((string)$catid)) {
                        throw new InvalidArgumentException(
@@ -180,31 +181,31 @@ class Toolkit_Banners_StaticBannersDecorator implements IteratorAggregate
                $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;
                                        }
                                }
                        }
@@ -218,29 +219,29 @@ class Toolkit_Banners_StaticBannersDecorator implements IteratorAggregate
                //      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();
@@ -260,9 +261,9 @@ class Toolkit_Banners_StaticBannersDecorator implements IteratorAggregate
                //      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>";
index 0152cdb..9aa0748 100644 (file)
@@ -3,7 +3,7 @@
 applicationName = "Banners"
 ; Site has member database
 hasMemberDb = MEMBERS_DB
-minYear = 2007
+minYear = 2013
 ; When there are this many impressions remaining,
 ; we should send out an email notification.
 notifyAt = 5