*/
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
*
* @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
* @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',
$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
* @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)
{
/**
* 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
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
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) {
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;
}