Fixed problems with div organization in package listings
authorChuck Scott <cscott@gaslightmedia.com>
Mon, 4 Jan 2016 20:24:13 +0000 (15:24 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Mon, 4 Jan 2016 20:24:13 +0000 (15:24 -0500)
classes/data/dataPackages.php
glm-member-db-packaging.php
models/front/packaging/list.php
views/front/packaging/list.html

index 6328ebc..e0d48d7 100644 (file)
@@ -272,7 +272,7 @@ class GlmDataPackages extends GlmDataAbstract
             $memberInfoData = $this->MemberInfo->getActiveInfoSimplified($r['ref_dest']);
 
             if ($memberInfoData) {
-                $r = array_merge($r, $memberInfoData);
+                $r['member'] = $memberInfoData;
             }
 
         }
index 373f60a..919c860 100644 (file)
@@ -3,7 +3,7 @@
  * Plugin Name: GLM Members Database Packaging
  * Plugin URI: http://www.gaslightmedia.com/
  * Description: Gaslight Media Members Database.
- * Version: 1.0.5
+ * Version: 1.0.11
  * Author: Chuck Scott
  * Author URI: http://www.gaslightmedia.com/
  * License: GPL2
@@ -33,7 +33,7 @@
  *  version when there's a change in the database!! Use the
  *  version nunmber of that release for the DB version.
  */
-define('GLM_MEMBERS_PACKAGING_PLUGIN_VERSION', '1.0.5');
+define('GLM_MEMBERS_PACKAGING_PLUGIN_VERSION', '1.0.11');
 define('GLM_MEMBERS_PACKAGING_PLUGIN_DB_VERSION', '0.0.2');
 
 // This is the minimum version of the GLM Members DB plugin require for this plugin.
index 4134d7d..654f27e 100644 (file)
@@ -97,6 +97,8 @@ class GlmMembersFront_packaging_list extends GlmDataPackages
     {
 
         $havePackages = false;
+        $packages = false;      // Used if sorting by package
+        $members = false;       // Used if sorting by member then package
         $settings = array();
         $status = false;
         $orderBy = '';
@@ -184,32 +186,47 @@ class GlmMembersFront_packaging_list extends GlmDataPackages
             $status = true;
         }
 
-        /*
-         * Sort by Member
-         */
+        // Member sort function
         function packageMemberCmp($a, $b) {
-            if ($a['ref_dest_name'] == $b['ref_dest_name']) {
+            if ($a['member_name'] == $b['member_name']) {
                 return 0;
             }
-            return ($a['ref_dest_name'] < $b['ref_dest_name']) ? -1 : 1;
+            return ($a['member_name'] < $b['member_name']) ? -1 : 1;
         }
+
+        /*
+         * Sort by Member
+         */
         if ($actionData['request']['order'] == 'member') {
 
-            // Sort by member name
-            reset($packages);
-            uasort($packages, 'packageMemberCmp');
-
-            // Mark first entry for each member
-            reset($packages);
-            $memb = '';
-            while (list($key, $val) = each($packages)) {
-                $packages[$key]['firstForMember'] = false;
-                if ($memb != $val['ref_dest_name']) {
-                    $packages[$key]['firstForMember'] = true;
-                    $memb = $val['ref_dest_name'];
+            // Create empty array that will take all the data by member
+            $members = array();
+
+            // For each package
+            foreach ($packages as $p) {
+
+                $membID = $p['member']['member_pointer'];
+
+                // If member has not been created, do that now.
+                if (!isset($members[$membID])) {
+                    $members[$membID] = $p['member'];
+                    $members[$membID]['packages'] = array();
                 }
+
+                // Add package to this member
+                $members[$membID]['packages'][$p['id']] = $p;
+
+                // Drop member data from the package
+                unset($members[$membID]['packages'][$p['id']]['member']);
             }
 
+            // Drop the data organized by packages
+            $packages = false;
+
+            // Sort by member name
+            reset($members);
+            uasort($members, 'packageMemberCmp');
+
             $byMember = true;
         }
 
@@ -218,6 +235,7 @@ class GlmMembersFront_packaging_list extends GlmDataPackages
             'siteBaseUrl' => GLM_MEMBERS_SITE_BASE_URL,
             'havePackages' => $havePackages,
             'packages' => $packages,
+            'members' => $members,
             'byMember' => $byMember
         );
 
index 402071a..a470868 100644 (file)
 <div class="glm-member-package-wrapper">
     
 {if $havePackages}
+  
+  <!-- If pacakges are listed by member, use this block -->
    
-  {foreach $packages as $p}
-  <div class="glm-member-package-container">
-    {if $byMember && $p.firstForMember}
-        <!-- Container for member information if multiple packages are listed under one member. - Only shows before first package for this member -->
-        <div class="member">
-            {if $p.logo}
-            <img src="{$glmPluginMediaURL}/images/medium/{$p.logo}">
-          {/if}
-            <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$p.member_slug}/">{$p.ref_dest_name}</a></h2>
-            <div class="address">
-                <div class="addr1">{$p.addr1}</div>
-              {if $p.addr2}
-                <div class="addr2">{$p.addr2}</div>
-              {/if}
-                <div class="citystatezip">{if $p.city}{$p.city}, {/if}{if $p.state.name}{$p.state.name} {/if}{if $p.zip}{$p.zip}{/if}</div>
-              {if $p.country.name}
-                <div class="country">{$p.country.name}</div>
-              {/if}
-              {if $p.toll_free}
-                <div class="phone">{$p.toll_free}</div>
-              {/if}
-              {if $p.phone}
-                <div class="phone">{$p.phone}</div>
-              {/if}
-              {if $p.url}
-                <div><a class="url" title="url" href={$p.url}>{$p.url}</a></div>
-              {/if}
-              {if $p.email}
-                <div><a class="email" title="Email" href={$p.email}>Email</a></div>
+  {if $byMember}
+      {foreach $members as $m}
+        <div class="glm-member-package-container">
+
+            <!-- Container for member information if multiple packages are listed under one member. - Only shows before first package for this member -->
+            <div class="member">
+                {if $m.logo}
+                <img src="{$glmPluginMediaURL}/images/medium/{$m.logo}">
               {/if}
+                <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member_name}</a></h2>
+                <div class="address">
+                    <div class="addr1">{$m.addr1}</div>
+                  {if $m.addr2}
+                    <div class="addr2">{$m.addr2}</div>
+                  {/if}
+                    <div class="citystatezip">{if $m.city}{$m.city}, {/if}{if $m.state.name}{$m.state.name} {/if}{if $m.zip}{$m.zip}{/if}</div>
+                  {if $m.country.name}
+                    <div class="country">{$m.country.name}</div>
+                  {/if}
+                  {if $m.toll_free}
+                    <div class="phone">{$m.toll_free}</div>
+                  {/if}
+                  {if $m.phone}
+                    <div class="phone">{$m.phone}</div>
+                  {/if}
+                  {if $m.url}
+                    <div><a class="url" title="url" href={$m.url}>{$m.url}</a></div>
+                  {/if}
+                  {if $m.email}
+                    <div><a class="email" title="Email" href={$m.email}>Email</a></div>
+                  {/if}
+                </div>
             </div>
-        </div>
-    {/if}
+        
+        {foreach $m.packages as $p}
+            <!-- Container for each package -->
+            <div class="package">
     
-        <!-- Container for each package -->
-        <div class="package">
+                <!-- Container for package information -->
+                <div class="package-info">
+                    
+                  {if $p.image}
+                    <img src="{$glmPluginMediaURL}/images/medium/{$p.image}">
+                  {/if}
+                    <h3 class="package-title"><a href="{$thisURL}?glm_action=detail&packageID={$p.id}">{$p.title}</a></h3>
+                  {if $p.descr}
+                    {$p.descr}
+                  {else if $p.short_descr}
+                    {$p.short_descr}
+                  {/if}
+                    <div class="details">
+                        <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} <!-- /package -->
+        
+        </div> <!-- /member -->
+      {/foreach}
+  
+  <!-- If packages are listed by package, use this block -->
+  {else}
+  
+    {foreach $packages as $p}
+    
+        <div class="glm-member-package-container">
 
-        {if !$byMember}
+    
             <!-- Container for member information if displayed with each package -->
             <div class="member">
-                {if $p.logo}
-                <img src="{$glmPluginMediaURL}/images/medium/{$p.logo}">
+                {if $p.member.logo}
+                <img src="{$glmPluginMediaURL}/images/medium/{$p.member.logo}">
               {/if}
-                <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$p.member_slug}/">{$p.ref_dest_name}</a></h2>
+                <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$p.member.member_slug}/">{$p.member.member_name}</a></h2>
                 <div class="address">
-                    <div class="addr1">{$p.addr1}</div>
-                  {if $p.addr2}
-                    <div class="addr2">{$p.addr2}</div>
+                    <div class="addr1">{$p.member.addr1}</div>
+                  {if $p.member.addr2}
+                    <div class="addr2">{$p.member.addr2}</div>
                   {/if}
-                    <div class="citystatezip">{if $p.city}{$p.city}, {/if}{if $p.state.name}{$p.state.name} {/if}{if $p.zip}{$p.zip}{/if}</div>
-                  {if $p.country.name}
-                    <div class="country">{$p.country.name}</div>
+                    <div class="citystatezip">{if $p.member.city}{$p.member.city}, {/if}{if $p.member.state.name}{$p.member.state.name} {/if}{if $p.member.zip}{$p.member.zip}{/if}</div>
+                  {if $p.member.country.name}
+                    <div class="country">{$p.member.country.name}</div>
                   {/if}
-                  {if $p.toll_free}
-                    <div class="phone">{$p.toll_free}</div>
+                  {if $p.member.toll_free}
+                    <div class="phone">{$p.member.toll_free}</div>
                   {/if}
-                  {if $p.phone}
-                    <div class="phone">{$p.phone}</div>
+                  {if $p.member.phone}
+                    <div class="phone">{$p.member.phone}</div>
                   {/if}
-                  {if $p.url}
-                  <a class="url" title="url" href={$p.url}>{$p.url}</a>
+                  {if $p.member.url}
+                  <a class="url" title="url" href={$p.member.url}>{$p.member.url}</a>
                   {/if}
-                  {if $p.email}
-                    <a class="email" title="Email" href={$p.email}>Email</a>
+                  {if $p.member.email}
+                    <a class="email" title="Email" href={$p.member.email}>Email</a>
                   {/if}
                 </div>
             </div>
-        {/if}
         
             <!-- Container for package information -->
-            <div class="package-info">
-                
-              {if $p.image}
-                <img src="{$glmPluginMediaURL}/images/medium/{$p.image}">
-              {/if}
-                <h3 class="package-title"><a href="{$thisURL}?glm_action=detail&packageID={$p.id}">{$p.title}</a></h3>
-              {if $p.descr}
-                {$p.descr}
-              {else if $p.short_descr}
-                {$p.short_descr}
-              {/if}
-                <div class="details">
-                    <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 class="package">
+                <div class="package-info">
+                    
+                  {if $p.image}
+                    <img src="{$glmPluginMediaURL}/images/medium/{$p.image}">
+                  {/if}
+                    <h3 class="package-title"><a href="{$thisURL}?glm_action=detail&packageID={$p.id}">{$p.title}</a></h3>
+                  {if $p.descr}
+                    {$p.descr}
+                  {else if $p.short_descr}
+                    {$p.short_descr}
+                  {/if}
+                    <div class="details">
+                        <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>
+        </div>
         
-        </div> <!-- /package -->
-
-  </div> <!-- /package container -->
-  {/foreach}                          
+    {/foreach}
+  
+  {/if} <!-- if by member -->
+  
   
 {else}
     (Sorry, no packages currently listed.)