Fixed events/packages for member detail
authorChuck Scott <cscott@gaslightmedia.com>
Mon, 9 May 2016 21:07:13 +0000 (17:07 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Mon, 9 May 2016 21:07:13 +0000 (17:07 -0400)
models/admin/events/list.php
models/front/events/baseAction.php
models/front/events/list.php
setup/frontHooks.php
views/front/events/eventsLinkForMemberDetail.html [new file with mode: 0644]
views/front/events/eventsSidemenuForMemberDetail.html [new file with mode: 0644]
views/front/events/listForMemberDetail.html [new file with mode: 0644]
views/front/events/listForMemberListing.html [new file with mode: 0644]

index add2d0a..688313e 100644 (file)
@@ -145,7 +145,7 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
                 // Get member data
                 require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberInfo.php');
                 $MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config);
-                $memberData = $MemberInfo->getEntry($memberID);
+                $memberData = $MemberInfo->getActiveInfoIdForMember($memberID);
 
                 if (!$memberData) {
                     return array(
index 21304c9..a6405ed 100644 (file)
@@ -68,20 +68,31 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents
      *
      * Return the array of events.
      *
-     * @param bool $categoryId Id of the category for filtering events (optional)
-     * @param bool $limit      Number of events to return (optional)
+     * @param integer $categoryId Id of the category for filtering events (optional)
+     * @param integer $limit      Number of events to return (optional)
+     * @param integer $memberID Member ID if filtering by member
      *
      * @access public
      * @return array events
      */
-    public function getModelEventsData($categoryId = null, $limit = null)
+    public function getModelEventsData($categoryId = null, $limit = null, $memberId = null)
     {
+
         $this->postAddTimes = true;
+        $where = '';
+
+        if ($memberId = filter_var( $memberId, FILTER_VALIDATE_INT )) {
+            $where .= "T.ref_type = ".$this->config['ref_type_numb']['Member']." and T.ref_dest = $memberId AND ";
+        }
+
+        // If a catgegory ID is supplied
         if ($catId = filter_var( $categoryId, FILTER_VALIDATE_INT )) {
             $events = $this->getEventsByCategory( $catId, $limit );
+
+        // Else if a category name is supplied
         } else if ($term = filter_var( $categoryId, FILTER_SANITIZE_STRING )) {
             $searchTerm = $this->wpdb->esc_like( $term );
-            $where = "T.name like '%" . $searchTerm . "%' 
+            $where .= "T.name like '%" . $searchTerm . "%'
                 AND T.status = " . $this->config['status_numb']['Active'] . "
                 AND T.id IN (
                         SELECT event
@@ -93,8 +104,11 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents
             $order  = "T.id";
             $order .= " LIMIT 2 OFFSET 0";
             $events = $this->getList($where, $order);
+
+        // Otherwise get all categories
         } else {
-            $where = "T.status = " . $this->config['status_numb']['Active'] . "
+
+            $where .= "T.status = " . $this->config['status_numb']['Active'] . "
                 AND T.id IN (
                         SELECT event
                           FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times AS ET
@@ -104,6 +118,7 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents
                 ";
             $events = $this->getList($where);
         }
+
         //echo '<pre>$events: ' . print_r($events, true) . '</pre>';
         if ( !empty($events) ) {
             foreach ( $events as &$event ) {
index de1c2f7..5a19a95 100644 (file)
@@ -44,10 +44,17 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
      */
     public function modelAction($actionData = false)
     {
-        //$allEvents = $this->getList();
+
         $status   = $categoryId = null;
         $action   = '';
         $settings = $events = $event = $categoryEvents = array();
+
+        // If a memberID has been specified, limit to that member
+        $memberId = $actionData['request']['member'] - 0;
+        if ($memberId == 0) {
+            $memberId = null;
+        }
+
         if (isset($_REQUEST['eventId']) && $eventId = filter_var($_REQUEST['eventId'], FILTER_VALIDATE_INT)) {
             $search = true;
             $action = 'event-detail';
@@ -316,8 +323,8 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
                         $location->setText(implode(', ', $address));
                         $location->draw($page->getCanvas(), self::PDF_LFT_COL_X, $pdfY);
                         $pdfY -= self::LINE_HEIGHT;
-                    } else if (isset($event['use_member_location']['value']) 
-                        && $event['use_member_location']['value'] 
+                    } else if (isset($event['use_member_location']['value'])
+                        && $event['use_member_location']['value']
                         && $event['hide_address']['name'] == 'No'
                     ) {
                         $address   = array();
@@ -439,7 +446,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
             break;
         default:
             $view = 'agenda.html';
-            $events = $this->getModelEventsData($categoryId);
+            $events = $this->getModelEventsData($categoryId, null, $memberId);
             break;
         }
 
@@ -487,6 +494,25 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction
             $eventsByDate = $mainEvents;
         }
 
+            // Check for alternate template requests
+        switch($actionData['request']['template']) {
+            case 'member-list':
+                $view = 'listForMemberListing.html';
+                break;
+            case 'events-link':
+                $view = 'eventsLinkForMemberDetail.html';
+                break;
+            case 'detail-sidemenu';
+                $view = 'eventsSidemenuForMemberDetail.html';
+                break;
+            case 'member-detail':
+                $view = 'listForMemberDetail.html';
+                break;
+            default:
+                $view = 'list.html';
+                break;
+        }
+
         // Compile template data
         $templateData = array(
             'siteBaseUrl'  => GLM_MEMBERS_EVENTS_SITE_BASE_URL,
index 0941ee0..7ff3ca6 100644 (file)
@@ -48,14 +48,45 @@ add_filter('init', function() {
     }
 });
 
-//add_action('query_vars', function($vars){
-    //array_push($vars, 'glm-event-pdf');
-    //return $vars;
-//});
-//add_action('wp', function($wp){
-    //if ( array_key_exists( 'glm-event-pdf', $wp->query_vars ) && $wp->query_vars['glm-event-pdf'] == '1' ) {
-        ////echo '<pre>$this: ' . print_r($this, true) . '</pre>';
-        //echo '<pre>$_REQUEST: ' . print_r($_REQUEST, true) . '</pre>';
-        //die('here it is!');
-    //}
-//});
+if (isset($this->config['addOns']['glm-member-db'])) {
+
+    // Add content to member listing page - Get it from the existing package listing shortcode
+    add_filter('glm-member-db-front-members-list-memberDataBelow', function($content, $id) {
+            $eventData = do_shortcode('[glm-members-event-list member='.$id.' template="member-list" order="title"]');
+            $content .= $eventData;
+            return $content;
+        },
+        10,
+        2
+    );
+
+    // Add internal page content links to member detail page
+    add_filter('glm-member-db-front-members-detail-linksBottom', function($content, $id) {
+            $eventData = do_shortcode('[glm-members-event-list member='.$id.', template="events-link" order="title"]');
+            $content .= $eventData;
+            return $content;
+        },
+        10,
+        2
+    );
+
+    // Add content to member detail page - Get it from the existing package listing shortcode
+    add_filter('glm-member-db-front-members-detail-dataBottom', function($content, $id) {
+            $eventData = do_shortcode('[glm-members-event-list member='.$id.', template="member-detail" order="title"]');
+            $content .= $eventData;
+            return $content;
+        },
+        10,
+        2
+    );
+
+    add_filter('glm-member-db-front-members-detail-sidemenuBottom', function($content, $id) {
+            $eventData = do_shortcode('[glm-members-event-list member='.$id.', template="detail-sidemenu" order="title"]');
+            $content .= $eventData;
+            return $content;
+        },
+        10,
+        2
+    );
+
+}
diff --git a/views/front/events/eventsLinkForMemberDetail.html b/views/front/events/eventsLinkForMemberDetail.html
new file mode 100644 (file)
index 0000000..f31f0ec
--- /dev/null
@@ -0,0 +1,3 @@
+{if $eventsByDate}
+    <a href="#glm-member-detail-events">Events</a>
+{/if}
diff --git a/views/front/events/eventsSidemenuForMemberDetail.html b/views/front/events/eventsSidemenuForMemberDetail.html
new file mode 100644 (file)
index 0000000..cee62ad
--- /dev/null
@@ -0,0 +1,3 @@
+{if $eventsByDate}
+    <tr><td id="glm-member-detail-events-button">Events</td></tr>
+{/if}
\ No newline at end of file
diff --git a/views/front/events/listForMemberDetail.html b/views/front/events/listForMemberDetail.html
new file mode 100644 (file)
index 0000000..ad9d694
--- /dev/null
@@ -0,0 +1,40 @@
+{if $eventsByDate}
+
+<div id="glm-member-detail-events-container" class="small-12">
+    <a name="glm-member-detail-events"></a>
+    <h2>Events</h2>
+
+    <div class="glm-member-events-container">
+    {foreach $eventsByDate as $d}
+      {foreach $d as $x} <!-- don't know what this part of the array is -->
+        {foreach $x as $e}
+
+            <!-- Container for each event -->
+            <div class="event">
+
+                <!-- Container for event information -->
+                <div class="event-info">
+
+                  {if $e.image}
+                   <div class="glm-event-img-wrap">
+                    <img src="{$glmPluginMediaUrl}/images/medium/{$e.image}"> {$e.image}
+                   </div> 
+                  {/if}
+                    <h3 class="event-title"><a href="{$siteBaseUrl}{$settings.canonical_events_page}/{$p.event_slug}/">{$e.name}</a></h3>
+                    {$e.intro}
+                    <div class="details">
+                        Template data needs to be filled in here
+                        <!-- 
+                        <div><span class="title">Expires: </span><span class="data">{$p.expire_date.date}</span></div>
+                        <div><span class="title">Pricing: </span><span class="data">{$p.pricing}</span></div>
+                        -->
+                    </div>
+                </div>
+
+            </div>
+        {/foreach} <!-- /event -->
+      {/foreach}
+    {/foreach}
+    </div>
+</div>
+{/if}
diff --git a/views/front/events/listForMemberListing.html b/views/front/events/listForMemberListing.html
new file mode 100644 (file)
index 0000000..c3c7a8f
--- /dev/null
@@ -0,0 +1,35 @@
+{if $eventsByDate}
+<h2>Events</h2>
+
+<div class="glm-member-events-container">
+  {foreach $eventsByDate as $d}
+   {foreach $d as $x}
+    {foreach $x as $e}
+        <!-- Container for each event -->
+        <div class="event">
+
+            <!-- Container for event information -->
+            <div class="event-info">
+                
+              {if $e.image}
+               <div class="glm-event-img-wrap">
+                <img src="{$glmPluginMediaUrl}/images/medium/{$e.image}">
+               </div> 
+              {/if}
+                <h3 class="event-title"><a href="{$siteBaseUrl}{$settings.canonical_event_page}/{$e.event_slug}/">{$e.name}</a></h3>
+                {$e.intro}
+                <div class="details">
+                    Event data needs to be filled in here
+                    <!-- 
+                    <div><span class="title">Expires: </span><span class="data">{$p.expire_date.date}</span></div>
+                    <div><span class="title">Pricing: </span><span class="data">{$p.pricing}</span></div>
+                    -->
+                </div>
+            </div>
+        
+        </div>
+    {/foreach} <!-- /events -->
+   {/foreach}
+  {/foreach}
+</div>
+{/if}