// }
try {
- $sql = "
- SELECT id, navigation_name, parent
- FROM pages
- WHERE parent = :parent
- $where
- ORDER BY parent, pos";
+ if ( defined('MEMBERS_CATEGORY')
+ && defined('MEMBERS_DB')
+ && MEMBERS_DB
+ ) {
+ $sql = "
+ SELECT id, navigation_name, parent,include_members
+ FROM pages
+ WHERE parent = :parent
+ $where
+ ORDER BY parent, pos";
+ } else {
+ $sql = "
+ SELECT id, navigation_name, parent
+ FROM pages
+ WHERE parent = :parent
+ $where
+ ORDER BY parent, pos";
+ }
$stmt = $this->_dbh->prepare($sql);
$stmt->bindParam(
':parent',
$row['id']
)
);
- $subs = $this->getNavArray($row['id']);
+ $subs = array();
+ if ($row['include_members']) {
+ $subs = $this->_getMembersForPage($row['id']);
+ }
+ if ($row['id'] == 42) {
+ //echo '<pre>'.print_r($subs, true).'</pre>';
+ }
+ $subs2 = $this->getNavArray($row['id']);
+ if ($subs2) {
+ foreach ($subs2 as $subsub) {
+ $subs[] = $subsub;
+ }
+ }
if ($subs) {
$nav[$row['id']]['subs'] = $subs;
}
+ if ($row['id'] == 42) {
+ //echo '<pre>'.print_r($nav, true).'</pre>';
+ //exit;
+ }
+
}
return $nav;
} catch (PDOException $e) {
);
}
}
+
+ private function _getMembersForPage($pageId)
+ {
+ $members = array();
+ $memberCats = array();
+ $memberRegs = array();
+ try {
+ // get member categories for the page
+ $sql = "
+ SELECT *
+ FROM toolbox.member_categories2toolbox_pages
+ WHERE page = :page";
+ $stmt = $this->_dbh->prepare($sql);
+ $stmt->bindParam(":page", $pageId, PDO::PARAM_INT);
+ $stmt->execute();
+ while ($memberCategory = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ $memberCats[] = $memberCategory['category'];
+ }
+ // get member regions for the page
+ $sql = "
+ SELECT *
+ FROM toolbox.member_regions2toolbox_pages
+ WHERE page = :page";
+ $stmt = $this->_dbh->prepare($sql);
+ $stmt->bindParam(":page", $pageId, PDO::PARAM_INT);
+ $stmt->execute();
+ while ($memberRegions = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ $memberRegs[] = $memberRegions['region'];
+ }
+ // if they're both empty then get list of all members
+ $where = array();
+ if (!empty($memberCats)) {
+ $where[] = "member_id IN (
+ SELECT member_id
+ FROM member_category
+ WHERE category_id IN (" . implode(',', $memberCats) . "))";
+ }
+ if (!empty($memberRegs)) {
+ $where[] = "(
+ region IN (" . implode(',', $memberRegs) . ")
+ OR
+ region IS NULL)";
+
+ }
+ $sql = "
+ SELECT member_id,member_name
+ FROM member";
+ if (!empty($where)) {
+ $sql .= " WHERE " . implode(' OR ', $where);
+ }
+ $sql .= " ORDER BY member_name";
+ $stmt = $this->_dbh->query($sql);
+ while ($member = $stmt->fetch(PDO::FETCH_ASSOC)) {
+ $members[$member['member_id']] = array(
+ 'label' => $member['member_name'],
+ 'url' => BASE_URL . 'member-profile/'
+ . $pageId . '/'
+ . $member['member_id'] . '/'
+ );
+ }
+ /*
+ if ($pageId == 42) {
+ echo '<pre>'.$sql.'</pre>';
+ echo '<pre>'.print_r($members, true).'</pre>';
+ echo '<pre>'.print_r($memberCats, true).'</pre>';
+ echo '<pre>'.print_r($memberRegs, true).'</pre>';
+ die('here');
+ }
+ */
+ } catch (PDOException $e) {
+ Toolkit_Logger::logException('DB Error', $e);
+ throw new Toolkit_Template_Exception(
+ 'Unable to fetch members for sitemap page'
+ );
+ }
+ return $members;
+ }
}
?>