Update site-map for member urls
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 3 Dec 2013 19:23:43 +0000 (19:23 +0000)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 3 Dec 2013 19:23:43 +0000 (19:23 +0000)
Bringing in the member profile urls into the site-map

Toolkit/Template/Page/SiteMap.php
css/siteMap.css
templates/siteMap.html

index bcf055f..bdea135 100644 (file)
@@ -108,12 +108,24 @@ class Toolkit_Template_Page_SiteMap
 //             }
 
         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',
@@ -129,10 +141,27 @@ class Toolkit_Template_Page_SiteMap
                         $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) {
@@ -142,5 +171,82 @@ class Toolkit_Template_Page_SiteMap
                        );
                }
     }
+
+    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;
+    }
 }
 ?>
index da338dc..8370f05 100644 (file)
@@ -38,7 +38,7 @@
 .row > ol {
        float: left;
        margin-right: 3%;
-       width: 30%
+       /* width: 30% */
        }
 .row > ol > li {
        margin: 5px;
@@ -46,4 +46,4 @@
        }
 .row > ol > li > ol > li {
        margin: 5px 0 5px 20px;
-       }
\ No newline at end of file
+       }
index fae4ba5..9e47f14 100644 (file)
               <ol>
                 <li flexy:foreach="chunk[subs],subs,sChunk">
                   <a href="{sChunk[url]:h}">{sChunk[label]:h}</a>
+
+                      {if:sChunk[subs]}
+                      <ol>
+                        <li flexy:foreach="sChunk[subs],subs2,sChunk2">
+                          <a href="{sChunk2[url]:h}">{sChunk2[label]:h}</a>
+                        </li>
+                      </ol>
+                      {end:}
                 </li>
               </ol>
               {end:}
@@ -23,4 +31,4 @@
       {end:}
     </li>
   </ol>
-</div>
\ No newline at end of file
+</div>