use regionId
authorSteve Sutton <steve@gaslightmedia.com>
Thu, 20 Mar 2014 15:47:58 +0000 (15:47 +0000)
committerSteve Sutton <steve@gaslightmedia.com>
Thu, 20 Mar 2014 15:47:58 +0000 (15:47 +0000)
Toolkit/Members/SearchQueryGenerator.php

index ba5197e..db7c6aa 100644 (file)
  */
 class Toolkit_Members_SearchQueryGenerator
 {
-       //      {{{     properties
+    //  {{{ properties
 
     /**
      * Description of $_includeSubCats
      * @var unknown
      * @access private
      */
-       private $_includeSubCats;
+    private $_includeSubCats;
 
     /**
      * Description of $_config
      * @var Config_Container
      * @access private
      */
-       private $_config;
+    private $_config;
 
-       //      }}}
+    //  }}}
 
-       //      {{{ __construct()
+    //  {{{ __construct()
 
     /**
      * Class constructor
@@ -51,15 +51,15 @@ class Toolkit_Members_SearchQueryGenerator
      *
      * @access public
      */
-       public function __construct($includeSubCats, Config_Container $root)
-       {
-               $this->_includeSubCats = $includeSubCats;
-               $this->_config = $root;
-       }
+    public function __construct($includeSubCats, Config_Container $root)
+    {
+        $this->_includeSubCats = $includeSubCats;
+        $this->_config = $root;
+    }
 
-       //      }}}
+    //  }}}
 
-       //      {{{     _getMemberCategoriesForPage()
+    //  {{{ _getMemberCategoriesForPage()
 
     /**
      * Gets the member categories that are assigned to the page
@@ -69,32 +69,32 @@ class Toolkit_Members_SearchQueryGenerator
      * @return mixed false if not categories, else array of cats
      * @access private
      */
-       private function _getMemberCategoriesForPage(PDO $dbh)
-       {
-               try {
-                       $memberCategories = array();
-                       $sql =  "
+    private function _getMemberCategoriesForPage(PDO $dbh)
+    {
+        try {
+            $memberCategories = array();
+            $sql =  "
                 SELECT category
                   FROM member_categories2toolbox_pages
                  WHERE page = :catid";
 
-                       $stmt = $dbh->prepare($sql);
-                       $stmt->bindParam(':catid', $_REQUEST['catid'], PDO::PARAM_INT);
-                       $stmt->execute();
-                       $stmt->bindColumn('category', $category);
-
-                       while ($row = $stmt->fetch()) {
-                               $memberCategories[] = $category;
-                       }
-
-                       //      If we should include all the sub categories beneath a category.
-                       if ($this->_includeSubCats) {
-                               //      For each of the categories assigned to the page,
-                               //      we need to get all sub-categories.  This way the user
-                               //      can assign a top level category as a balloon to cover all the
-                               //      subcategories w/out individually assigning them as well.
-                               foreach ($memberCategories as $v) {
-                                       $catTree = Toolkit_Common::getHierarchicalTreeStructure(
+            $stmt = $dbh->prepare($sql);
+            $stmt->bindParam(':catid', $_REQUEST['catid'], PDO::PARAM_INT);
+            $stmt->execute();
+            $stmt->bindColumn('category', $category);
+
+            while ($row = $stmt->fetch()) {
+                $memberCategories[] = $category;
+            }
+
+            //  If we should include all the sub categories beneath a category.
+            if ($this->_includeSubCats) {
+                //  For each of the categories assigned to the page,
+                //  we need to get all sub-categories.  This way the user
+                //  can assign a top level category as a balloon to cover all the
+                //  subcategories w/out individually assigning them as well.
+                foreach ($memberCategories as $v) {
+                    $catTree = Toolkit_Common::getHierarchicalTreeStructure(
                         $dbh,
                         'category',
                         'category_id',
@@ -103,20 +103,20 @@ class Toolkit_Members_SearchQueryGenerator
                         $v
                     );
 
-                                       foreach ($catTree as $i => $j) {
-                                               $memberCategories[] = $i;
-                                       }
-                               }
-                       }
+                    foreach ($catTree as $i => $j) {
+                        $memberCategories[] = $i;
+                    }
+                }
+            }
 
-                       return empty($memberCategories) ? false : $memberCategories;
-               } catch (PDOException $e) {
-                       return Toolkit_Common::handleError($e);
-               }
-       }
+            return empty($memberCategories) ? false : $memberCategories;
+        } catch (PDOException $e) {
+            return Toolkit_Common::handleError($e);
+        }
+    }
 
-       //      }}}
-       //      {{{     _getMemberRegionsForPage()
+    //  }}}
+    //  {{{ _getMemberRegionsForPage()
 
     /**
      * Gets the member regions that are assigned to the page
@@ -126,31 +126,31 @@ class Toolkit_Members_SearchQueryGenerator
      * @return mixed false if not regions, else array of regions
      * @access private
      */
-       private function _getMemberRegionsForPage(PDO $dbh)
-       {
-               try {
-                       $memberRegions = array();
-                       $sql =  "
+    private function _getMemberRegionsForPage(PDO $dbh)
+    {
+        try {
+            $memberRegions = array();
+            $sql =  "
                 SELECT region
                   FROM member_regions2toolbox_pages
                  WHERE page = :catid";
 
-                       $stmt = $dbh->prepare($sql);
-                       $stmt->bindParam(':catid', $_REQUEST['catid'], PDO::PARAM_INT);
-                       $stmt->execute();
-                       $stmt->bindColumn('region', $region);
+            $stmt = $dbh->prepare($sql);
+            $stmt->bindParam(':catid', $_REQUEST['catid'], PDO::PARAM_INT);
+            $stmt->execute();
+            $stmt->bindColumn('region', $region);
 
-                       while ($row = $stmt->fetch()) {
-                               $memberRegions[] = $region;
-                       }
+            while ($row = $stmt->fetch()) {
+                $memberRegions[] = $region;
+            }
 
-                       return empty($memberRegions) ? false : $memberRegions;
-               } catch (PDOException $e) {
-                       return Toolkit_Common::handleError($e);
-               }
-       }
+            return empty($memberRegions) ? false : $memberRegions;
+        } catch (PDOException $e) {
+            return Toolkit_Common::handleError($e);
+        }
+    }
 
-       //      }}}
+    //  }}}
 
     public function getSearchTerms(PDO $dbh)
     {
@@ -164,15 +164,15 @@ class Toolkit_Members_SearchQueryGenerator
     /**
      * Gets the query to use to fetch the datagrid results
      *
-        * @param PDO   $dbh      Database handler
+     * @param PDO   $dbh      Database handler
      * @param array $sections Sections array
-        *
+     *
      * @return void
      * @access public
      */
     public function getQuery(PDO $dbh, array $sections = null)
     {
-               $sql = "
+        $sql = "
         SELECT distinct m.*, c.city_name, s.state_name AS state, s.state_abb
                AS state_abbr
           FROM member m
@@ -181,43 +181,43 @@ class Toolkit_Members_SearchQueryGenerator
           exploded_members_name emn";
 
         $params = array(
-                       "new_member <> '1'",
-                       "active = '1'",
-                       'emn.mid = m.member_id');
+            "new_member <> '1'",
+            "active = '1'",
+            'emn.mid = m.member_id');
         //  Limit to members whose first letter starts with the letter
         //  a user clicked in the narrow alphabetically list.
-               if (isset($_REQUEST['alpha']) && $_REQUEST['alpha'] == '0-9') {
-                       $params[] = "substr(m.member_name, 1, 1) ~ '[0-9]'";
+        if (isset($_REQUEST['alpha']) && $_REQUEST['alpha'] == '0-9') {
+            $params[] = "substr(m.member_name, 1, 1) ~ '[0-9]'";
         } elseif (isset($_REQUEST['alpha']) && ctype_alpha($_REQUEST['alpha'])) {
-                       $letter = $_REQUEST['alpha'][0];
+            $letter = $_REQUEST['alpha'][0];
             $params[] = "upper(substr(m.member_name, 1, 1)) = upper(" .
-                               $dbh->quote($letter) . ')';
-               }
+                $dbh->quote($letter) . ')';
+        }
         $memberName = filter_var($_REQUEST['member_name'], FILTER_SANITIZE_STRING);
         //  Limit to members whose name contains the string a user
         //  entered into the member name box. + Phonetics search matches.
         if (isset($memberName) && !empty($memberName)) {
-                       $noSpaceName = preg_replace(
-                               '/\W/',
-                               '',
-                               urldecode($memberName)
-                       );
-                       $spaceName = urldecode($memberName);
-                       $sanitizedNoSpaceName = $dbh->quote($noSpaceName);
-                       $sanitizedSpaceName = $dbh->quote($spaceName);
-                       $params[] = "member_name ilike " . $dbh->quote('%'.$memberName.'%');
+            $noSpaceName = preg_replace(
+                '/\W/',
+                '',
+                urldecode($memberName)
+            );
+            $spaceName = urldecode($memberName);
+            $sanitizedNoSpaceName = $dbh->quote($noSpaceName);
+            $sanitizedSpaceName = $dbh->quote($spaceName);
+            $params[] = "member_name ilike " . $dbh->quote('%'.$memberName.'%');
         }
 
         //  Using controlled cities and a search was performed on a city
         //  get reference to [conf] section of config file
         $ctrlCtyD =& $this->_config
-                       ->getItem('section', 'conf')
-                       ->getItem('directive', 'controlledCities');
+            ->getItem('section', 'conf')
+            ->getItem('directive', 'controlledCities');
         $hasRegions =& $this->_config
-                       ->getItem('section', 'conf')
-                       ->getItem('directive', 'regions')
-                       ->getContent();
-        $regionId = filter_var($_REQUEST['region'], FILTER_VALIDATE_INT);
+            ->getItem('section', 'conf')
+            ->getItem('directive', 'regions')
+            ->getContent();
+        $regionId = filter_var($_REQUEST['regionId'], FILTER_VALIDATE_INT);
         if ($regionId) {
             $params[] = " (m.region = " . $dbh->quote($regionId) .")";
         } elseif ($hasRegions
@@ -305,7 +305,7 @@ class Toolkit_Members_SearchQueryGenerator
                     SELECT member_id
                       FROM member_category
                      WHERE category_id = " .
-                                       $dbh->quote($sub_category_id) . ')';
+                    $dbh->quote($sub_category_id) . ')';
         } elseif ($category_id) {
             unset($subCats);
             if ($this->_includeSubCats) {
@@ -357,50 +357,50 @@ class Toolkit_Members_SearchQueryGenerator
                      WHERE category_id in ('.implode(', ', $categories).'))';
         }
 
-               //      Limit to members who have the amenities that a user
-               //      checked off.
-               if (isset($_REQUEST['amenities']) && !empty($_REQUEST['amenities'])) {
-                       if (   isset($_REQUEST['search_all_amenity'])
-                               && isset($_REQUEST['amenities'])
-                               && is_array($_REQUEST['amenities'])
-                               && !empty($_REQUEST['amenities'])
-                       ) {
-                               //      Member must have ALL of the selected amenities.
-                               $innerSql = array();
-                               foreach ($_REQUEST['amenities'] as $k => $v) {
-                                       if (ctype_digit((string)$k)) {
-                                               $innerSql[] = "
-                                                       SELECT member_id
-                                                         FROM member_amenity
-                                                        WHERE amenity_id = $k";
-                                       }
-                               }
-
-                               $innerSql = implode(' INTERSECT ', $innerSql);
-                               $innerSql = "m.member_id in ($innerSql)";
-
-                               $params[] = $innerSql;
-                       } elseif (is_array($_REQUEST['amenities'])) {
-                               $addParam = true;
-                               foreach ($_REQUEST['amenities'] as $key => $value) {
-                                       if (!filter_var($key, FILTER_VALIDATE_INT)) {
-                                               $addParam = false;
-                                       }
-                               }
-                               if ($addParam) {
-                                       //      Member can have ANY of the selected amenities
-                                       $params[] = "
-                                               member_id in (
-                                                       SELECT member_id
-                                                         FROM member_amenity
-                                                        WHERE amenity_id in(".implode(', ', array_keys($_REQUEST['amenities']))."))";
-                               }
-                       }
-               }
-
-               if (!empty($params)) {
-                       $sql .= ' WHERE ' . implode(' AND ', $params);
-               }
+        //  Limit to members who have the amenities that a user
+        //  checked off.
+        if (isset($_REQUEST['amenities']) && !empty($_REQUEST['amenities'])) {
+            if (   isset($_REQUEST['search_all_amenity'])
+                && isset($_REQUEST['amenities'])
+                && is_array($_REQUEST['amenities'])
+                && !empty($_REQUEST['amenities'])
+            ) {
+                //  Member must have ALL of the selected amenities.
+                $innerSql = array();
+                foreach ($_REQUEST['amenities'] as $k => $v) {
+                    if (ctype_digit((string)$k)) {
+                        $innerSql[] = "
+                            SELECT member_id
+                              FROM member_amenity
+                             WHERE amenity_id = $k";
+                    }
+                }
+
+                $innerSql = implode(' INTERSECT ', $innerSql);
+                $innerSql = "m.member_id in ($innerSql)";
+
+                $params[] = $innerSql;
+            } elseif (is_array($_REQUEST['amenities'])) {
+                $addParam = true;
+                foreach ($_REQUEST['amenities'] as $key => $value) {
+                    if (!filter_var($key, FILTER_VALIDATE_INT)) {
+                        $addParam = false;
+                    }
+                }
+                if ($addParam) {
+                    //  Member can have ANY of the selected amenities
+                    $params[] = "
+                        member_id in (
+                            SELECT member_id
+                              FROM member_amenity
+                             WHERE amenity_id in(".implode(', ', array_keys($_REQUEST['amenities']))."))";
+                }
+            }
+        }
+
+        if (!empty($params)) {
+            $sql .= ' WHERE ' . implode(' AND ', $params);
+        }
         return $sql;
     }