Various fixes and updates to handling of member info categories and amenities
authorChuck Scott <cscott@gaslightmedia.com>
Wed, 16 Sep 2015 16:34:58 +0000 (12:34 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Wed, 16 Sep 2015 16:34:58 +0000 (12:34 -0400)
classes/data/dataCategoryMemberInfo.php
classes/data/dataMemberInfo.php
lib/GlmDataAbstract/DataAbstract.php
misc/notes.txt
models/admin/member/memberInfo.php
views/admin/member/header.html
views/admin/member/memberInfo.html

index 10f5c19..0f81413 100644 (file)
@@ -314,6 +314,8 @@ class GlmDataCategoryMemberInfo extends GlmDataAbstract
         ;";
         $this->wpdb->query($sql);
 
+        // Returns false to indicate there are no categories selected
+        return false;
 
     }
 }
index f9f1fce..c1cadec 100644 (file)
@@ -372,7 +372,7 @@ class GlmDataMemberInfo extends GlmDataAbstract
        {
 
            // Only run these tests for 'l' (getList) or 'g' (getEntry)
-           if ($a != 'l' && $a != 'g') {
+           if ($a != 'l' && $a != 'g' && $a != 'e') {
                return $r;
            }
 
index bb23efe..69ec86f 100755 (executable)
@@ -2795,7 +2795,6 @@ abstract class GlmDataAbstract
         // Check if there's a function to do other checks
         $data = $this->entryPostProcessing($data, $op);
 
-
         if ($forEdit) {
             $r = array(
                 'status' => true,
index 1595498..e248ef9 100644 (file)
@@ -1,6 +1,9 @@
 Development Notes
 -----------------
 
+
+**** NEED TO SOLVE ISSUES WITH AMENITIES NOT UPDATING CORRECTLY WHEN YOU ADD/DELETE THEM IN MEMBER INFO PAGE ****
+
 Database Updates
 
 * Added table settings_general
index 7b44cc5..ccfae2f 100644 (file)
@@ -38,6 +38,125 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
      * @access public
      */
     public $config;
+    /**
+     * Have a Member
+     *
+     * @var $haveMember
+     * @access public
+     */
+    public $haveMember = false;
+    /**
+     * Member ID
+     *
+     * @var $memberID
+     * @access public
+     */
+    public $memberID = false;
+    /**
+     * Member Data
+     *
+     * @var $memberData
+     * @access public
+     */
+    public $memberData = false;
+    /**
+     * Member Info Record ID
+     *
+     * @var $memberInfoID
+     * @access public
+     */
+    public $memberInfoID = false;
+    /**
+     * Have member Info
+     *
+     * @var $haveMemberInfo
+     * @access public
+     */
+    public $haveMemberInfo = false;
+    /**
+     * Member Info
+     *
+     * @var $memberInfo
+     * @access public
+     */
+    public $memberInfo = false;
+    /**
+     * Member Info Record is the Active Record
+     *
+     * @var $isActive
+     * @access public
+     */
+    public $isActive = false;
+    /**
+     * Category data for current member info record
+     *
+     * @var $categoryMemberInfo
+     * @access public
+     */
+    public $categoryMemberInfo = false;
+    /**
+     * Full list of categories
+     *
+     * @var $categories
+     * @access public
+     */
+    public $categories = false;
+    /**
+     * Have categories?
+     *
+     * @var $haveCategories
+     * @access public
+     */
+    public $haveCategories = false;
+    /**
+     * Have image gallery contents
+     *
+     * @var $haveImageGallery
+     * @access public
+     */
+    public $haveImageGallery = false;
+    /**
+     * Image Gallery
+     *
+     * @var $imageGallery
+     * @access public
+     */
+    public $imageGallery = false;
+    /**
+     * Amenities
+     *
+     * @var $amenities
+     * @access public
+     */
+    public $amenities = false;
+    /**
+     * Member Amenities
+     *
+     * @var $memberAmenities
+     * @access public
+     */
+    public $memberAmenities = false;
+    /**
+     * Regions
+     *
+     * @var $regions
+     * @access public
+     */
+    public $regions = false;
+    /**
+     * Have Regions Flag
+     *
+     * @var $haveRegions
+     * @access public
+     */
+    public $haveRegions = false;
+    /**
+     * Error Flag
+     *
+     * @var $error
+     * @access public
+     */
+    public $error = false;
 
     /*
      * Constructor
@@ -98,24 +217,6 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
      */
     public function modelAction ($actionData = false)
     {
-        // Set some default values
-        $success = true;
-        $memberID = 0;
-        $haveMember = false;
-        $memberInfoID = 0;
-        $haveMemberInfo = false;
-        $haveImageGallery = false;
-        $isActive = false;
-        $noActive = false;
-        $categories = false;
-        $haveCategories = false;
-        $amenities = false;
-        $haveAmenities = false;
-        $memberAmenities = false;
-        $haveMemberAmenities = false;
-        $regions = false;
-        $haveRegions = false;
-        $error = false;
 
         // Check for action option - Should be one of the values in the "switch" statement below
         $option = false;
@@ -127,33 +228,33 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
         if ($actionData) {
 
             if (!isset($actionData['member'])) {
-                $memberID = $actionData['member']-0;
+                $this->memberID = $actionData['member']-0;
             }
 
-            $memberID = $actionData['member']-0;
+            $this->memberID = $actionData['member']-0;
             $option = 'create';
 
         // Otherwise it should be a user submission
         } elseif (isset($_REQUEST['member'])) {
-            $memberID = $_REQUEST['member']-0;
+            $this->memberID = $_REQUEST['member']-0;
 
             // If a member info record ID is supplied, get that and make sure it's an integer
             if (isset($_REQUEST['id'])) {
-                $memberInfoID = $_REQUEST['id']-0;
-                $haveMemberInfo = true;
+                $this->memberInfoID = $_REQUEST['id']-0;
+                $this->haveMemberInfo = true;
 
             }
         }
 
         // If member ID not supplied - we shouldn't be here, so redirect to an error page
-        if ($memberID <= 0) {
+        if ($this->memberID <= 0) {
 
             if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
                 glmMembersAdmin::addNotice("<b>&nbsp;&nbsp;Member ID expected but no ID was supplied.", 'Alert');
             }
 
             return array(
-                    'status' => $success,
+                    'status' => true,
                     'menuItemRedirect' => 'error',
                     'modelRedirect' => 'index',
                     'view' => 'admin/error/index.html',
@@ -162,33 +263,21 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
 
         }
 
-        // If we have a member info record, check if it's active
-        if ($haveMemberInfo) {
+        // Determine if the current member info record active?
+        $this->isActive = $this->isActive();
 
-            // Determine if this is the active record
-            $sql = "
-            SELECT status
-              FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info
-                          WHERE id = $memberInfoID
-                          ;";
-            $activeTest = $this->wpdb->get_row($sql, ARRAY_A);
-
-            // If it is, then save that
-            if ($activeTest['status'] == $this->config['status_numb']['Active']) {
-                $isActive = true;
-            }
-
-        }
+        // Check for new cities being submitted
+        $this->checkNewCities();
 
         // Get member base data
         require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMembers.php');
         $Members = new GlmDataMembers($this->wpdb, $this->config);
-        $memberData = $Members->getEntry($memberID);
-        $this->fields['logo']['i_prefix'] = 'memb_'.$memberID.'_';
-        $haveMember = true;
+        $this->memberData = $Members->getEntry($this->memberID);
+        $this->fields['logo']['i_prefix'] = 'memb_'.$this->memberID.'_';
+        $this->haveMember = true;
 
         // If no member info record, assume that we need to create a new one
-        if ($memberInfoID <= 0 && $option != 'addNew') {
+        if ($this->memberInfoID <= 0 && $option != 'addNew') {
             $option = 'create';
         }
 
@@ -204,24 +293,30 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
             // Setup to input a new member information record
             case 'create':
 
-                $memberInfo = $this->newEntry();
+                $this->memberInfo = $this->newEntry();
 
                 break;
 
             // Process submission of a member information record update
             case 'submit':
 
+                // Update submitted categories
+                $this->updateCategories();
+
+                // Update submitted amenities
+                $this->updateAmenities();
+
                 require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataImages.php');
                 $Images = new GlmDataImages($this->wpdb, $this->config);
 
                 // Update image gallery titles, descriptions, and image positions then return current image gallery
-                $imageGallery = $Images->galleryImageDataUpdate($this->config['ref_type_numb']['MemberInfo'], $memberInfoID, 'galleryPositionOrder');
-                $haveImageGallery = ($imageGallery != false);
+                $this->imageGallery = $Images->galleryImageDataUpdate($this->config['ref_type_numb']['MemberInfo'], $this->memberInfoID, 'galleryPositionOrder');
+                $this->haveImageGallery = ($this->imageGallery != false);
 
-                if ($haveMemberInfo) {
+                if ($this->haveMemberInfo) {
 
                     // Update the member Info data
-                    $memberInfo = $this->updateEntry($memberInfoID);
+                    $this->memberInfo = $this->updateEntry($this->memberInfoID);
 
                     break;
                 } else {
@@ -238,18 +333,24 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
             case 'addNew':
 
                 // Insert the new member info into the database
-                $this->memberName = $memberData['name'];
-                $memberInfo = $this->insertEntry();
-                if ($memberInfo['status']) {
+                $this->memberName = $this->memberData['name'];
+                $this->memberInfo = $this->insertEntry();
+                if ($this->memberInfo['status']) {
+
+                    $this->memberInfoID = $this->memberInfo['fieldData']['id'];
+                    $this->haveMemberInfo = true;
+
+                    // Update submitted categories
+                    $this->updateCategories();
 
-                    $memberInfoID = $memberInfo['fieldData']['id'];
-                    $haveMemberInfo = true;
+                    // Update submitted amenities
+                    $this->updateAmenities();
 
                     // Also store member name for reference and sorting
                     $sql = "
                         UPDATE ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info
-                           SET member_name = '".addslashes($memberData['name'])."'
-                         WHERE id = $memberInfoID
+                           SET member_name = '".addslashes($this->memberData['name'])."'
+                         WHERE id = ".$this->memberInfoID."
                     ;";
                     $this->wpdb->query($sql);
 
@@ -265,75 +366,24 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
                 $CloneMemberInfo = new GlmMemberInfoClone($this->wpdb, $this->config);
 
                 // Clone the current member info
-                $memberInfoID = $CloneMemberInfo->cloneMemberInfo($memberInfoID);
+                $this->memberInfoID = $CloneMemberInfo->cloneMemberInfo($this->memberInfoID);
 
-//               $memberInfo = $this->editEntry($memberInfoID);
+                break;
 
             // Default is to display the currently selected member information record in a form for updates
             default:
 
                 // Edit the existing member
-                $memberInfo = $this->editEntry($memberInfoID);
-
-                // If we have member data
-                if (is_array($memberInfo) && $memberInfo['status']) {
-
-                    // Say we do
-                    $haveMemberInfo = true;
-
-                    // Also get any image gallery images
-                    require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataImages.php');
-                    $Images = new GlmDataImages($this->wpdb, $this->config);
-                    $imageGallery = $Images->getGallery($this->config['ref_type_numb']['MemberInfo'], $memberInfoID);
-                    $haveImageGallery = ($imageGallery != false);
-
-                // Otherwise
-                } else {
-
-                    if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
-                        glmMembersAdmin::addNotice("<b>&nbsp;&nbsp;Specified Member Information Record ID is invalid:</b> $memberInfoID", 'Alert');
-                    }
-
-                    $error = true;
-
-                }
+                $this->memberInfo = $this->editEntry($this->memberInfoID);
 
                 break;
 
         }
 
-        // If we have a member ID and this was a submission with a new city (id < 0)
-        if ($memberInfoID && isset($_REQUEST['city']) && $_REQUEST['city'] == -1 && isset($_REQUEST['newCityName']) && trim($_REQUEST['newCityName']) != '') {
-
-            // Clean up city name
-            $cName = trim(filter_var($_REQUEST['newCityName']));
-
-            // Try to add the city
-            require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCities.php');
-            $Cities = new GlmDataCities($this->wpdb, $this->config);
-            $cID = $Cities->addCity($cName);
-
-            // If we got a city id back
-            if (is_int($cID) && $cID > 0) {
-
-                // Update the city selected for this memberInfo record
-                $sql = "
-                    UPDATE ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info
-                       SET city = $cID
-                     WHERE id = $memberInfoID
-                ;";
-                $this->wpdb->query($sql);
-
-                // Get updated member information for editing.
-                $memberInfo = $this->editEntry($memberInfoID);
-            }
-
-        }
-
         // If we had a fatal error, redirect to the error page
-        if ($error) {
+        if ($this->error) {
             return array(
-                    'status' => $success,
+                    'status' => true,
                     'menuItemRedirect' => 'error',
                     'modelRedirect' => 'index',
                     'view' => 'admin/error/index.html',
@@ -342,230 +392,327 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
         }
 
         /*
-         * Get a sorted list of categories.
+         * Get a sorted list of categories to use for picklists.
          * These will be sorted so sub-categories fall under their
          * respective category.
          */
         require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCategories.php');
         $Categories = new GlmDataCategories($this->wpdb, $this->config);
-        $categories = $Categories->getListSortedParentChild();
-        if (is_array($categories) && count($categories) > 0) {
-            $haveCategories = true;
-        }
+        $this->categories = $Categories->getListSortedParentChild();
 
-        // Get list of Available Member Amenities
+        // Get list of Available Member Amenities to use for picklists
         require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataAmenities.php');
         $Amenities = new GlmDataAmenities($this->wpdb, $this->config);
-        $amenities = $Amenities->getList("T.ref_type = ".$this->config['ref_type_numb']['MemberInfo']);
-        if (is_array($amenities) && count($amenities) > 0) {
-            $haveAmenities = true;
-        }
+        $this->amenities = $Amenities->getList("T.ref_type = ".$this->config['ref_type_numb']['MemberInfo']);
 
         // Get list of Amenities selected for this Member
-        $memberAmenities = $Amenities->getAmenityRef($this->config['ref_type_numb']['MemberInfo'], $memberID);
-        if (is_array($memberAmenities) && count($memberAmenities) > 0) {
-            $haveMemberAmenities = true;
-        }
+        $this->memberAmenities = $Amenities->getAmenityRef($this->config['ref_type_numb']['MemberInfo'], $this->memberID);
 
         // Lastly, if we have member info, and if this record is active, we need to check for other active records and other things
-        $categoryMemberInfo = false;
-        if ($haveMemberInfo) {
+        if ($this->haveMemberInfo) {
 
-// *** Need to Modularize this
-
-            // Determine if this is the active record
-            $sql = "
-                SELECT status
-                  FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info
-                 WHERE id = $memberInfoID
-            ;";
-            $activeTest = $this->wpdb->get_row($sql, ARRAY_A);
+            // Check if the updated info record was set to active
+            $activeTest = $this->isActive();
 
             // If the current record is now active and wasn't before
-            if ($activeTest['status'] == $this->config['status_numb']['Active'] && !$isActive) {
+            if ($activeTest == $this->config['status_numb']['Active'] && !$this->isActive) {
 
                 // Change any others for this member to inactive
                 $sql = "
                     UPDATE ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info
                        SET status = ".$this->config['status_numb']['Inactive']."
-                     WHERE member = $memberID
+                     WHERE member = ".$this->memberID."
                        AND status = ".$this->config['status_numb']['Active']."
-                       AND id != $memberInfoID
+                       AND id != ".$this->memberInfoID."
                 ;";
                 $this->wpdb->query($sql);
 
             }
 
-            // Instatiate categoryMemberInfo class
-            require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCategoryMemberInfo.php');
-            $CategoryMemberInfo = new GlmDataCategoryMemberInfo($this->wpdb, $this->config);
+        } // Have member info
 
-            // Get any selected categories
-            $selectedCategories = array();
-            $newCategory = false;
-            if (isset($_REQUEST['category']) && is_array($_REQUEST['category']) && count($_REQUEST['category']) > 0) {
+        // If we have member data
+        if (is_array($this->memberInfo) && $this->memberInfo['status']) {
 
-                /*
-                 *  For each selected category
-                 *
-                 *  Note that categories are submitted with either a positive key, which indicates
-                 *  that it represents an existing category, or a negative key, which indicates
-                 *  that the user is trying to add it to the list of categories.
-                 *
-                 */
-                foreach ($_REQUEST['category'] as $key) {
+            // Say we do
+            $this->haveMemberInfo = true;
 
-                    // Make sure key is an integer
-                    $key = intval($key -0);
+            // Also get any image gallery images
+            require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataImages.php');
+            $Images = new GlmDataImages($this->wpdb, $this->config);
+            $this->imageGallery = $Images->getGallery($this->config['ref_type_numb']['MemberInfo'], $this->memberInfoID);
+            $this->haveImageGallery = ($this->imageGallery != false);
 
-                    // If negative, this is a new category that needs to be added to the category table
-                    if ($key < 0) {
+            // Otherwise
+        } else {
 
-                        $newCategory = true;
+            if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+                glmMembersAdmin::addNotice("<b>&nbsp;&nbsp;Specified Member Information Record ID is invalid:</b> $this->memberInfoID", 'Alert');
+            }
 
-                        // Check if a parent is specified
-                        $parent = 0;
-                        if ($_REQUEST['newCatParent'][$key] != '') {
-                            $parent = $_REQUEST['newCatParent'][$key] -0;
-                        } elseif ($_REQUEST['newCatParentName'][$key]) {
-                            $parent = $_REQUEST['newCatParentName'][$key];
-                        }
+            $this->error = true;
 
-                        // Clean up the category name
-                        $category = filter_var($_REQUEST['newCategory'][$key]);
+        }
 
-                        // Add it to the category table and get the new category ID
-                        $categoryID = $Categories->addCategory($category, $parent);
 
-                        // If we got a new category ID, ad it to the array of currently selected categoryMemberInfo records
-                        if ($categoryID) {
-                            $selectedCategories[$categoryID] = $categoryID;
-                        }
 
-                    // Otherwise if it's positive, the category is an existing one
-                    } else if ($key > 0) {
+        if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+            glmMembersAdmin::addNotice($this->memberInfo, 'DataBlock', 'Member Data');
+        }
 
-                        $selectedCategories[$key] = $key;
+        // Compile template data
+        $templateData = array(
+            'memberID' => $this->memberID,
+            'member' => $this->memberData,
+            'memberInfoID' => $this->memberInfoID,
+            'memberInfo' => $this->memberInfo,
+            'availableCategories' => $this->categories,
+            'availableAmenities' => $this->amenities,
+            'haveImageGallery' => $this->haveImageGallery,
+            'imageGallery' => $this->imageGallery,
+            'noActive' => $this->noActiveInfoRecord(),
+            'time' => time()
+        );
 
-                    }
+        // Return status, suggested view, and data to controller
+        return array(
+            'status' => true,
+            'menuItemRedirect' => false,
+            'modelRedirect' => false,
+            'view' => 'admin/member/memberInfo.html',
+            'data' => $templateData
+        );
 
-                    // A zero index should never happen, but we ignore them anyway
+    }
 
-                    // If there's selected categories
-                    if (count($selectedCategories) > 0) {
 
-                        // Update the selected categories for this member information record, returns new list
-                        $categoryMemberInfo = $CategoryMemberInfo->setMemberInfoCategories($memberInfoID, $selectedCategories);
+    /*
+     * Check for new Cities being submitted
+     *
+     * @return void
+     */
+    public function checkNewCities()
+    {
 
-                    }
+        // If we have a member ID and this was a submission with a new city (id < 0)
+        if ($this->memberInfoID && isset($_REQUEST['city']) && $_REQUEST['city'] == -1 && isset($_REQUEST['newCityName']) && trim($_REQUEST['newCityName']) != '') {
+
+            // Clean up city name
+            $cName = trim(filter_var($_REQUEST['newCityName']));
 
-                    // If there's been a new category
-                    if ($newCategory) {
+            // Try to add the city
+            require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCities.php');
+            $Cities = new GlmDataCities($this->wpdb, $this->config);
+            $cID = $Cities->addCity($cName);
 
-                        // Get the full category list again
-                        $categories = $Categories->getListSortedParentChild();
+            // If we got a city id back
+            if (is_int($cID) && $cID > 0) {
 
-                    }
+                // Update the city selected for this memberInfo record
+                $sql = "
+                        UPDATE ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info
+                            SET city = $cID
+                            WHERE id = ".$this->memberInfoID."
+                            ;";
+                $this->wpdb->query($sql);
 
-                } // For each category being submitted
+                // Update submitted city value to use the new ID
+                $_REQUEST['city'] = $cID;
 
-            // Otherwise if this is a submission and there's no categories submitted, so make sure there's none stored
-            } elseif (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
-                $CategoryMemberInfo->clearMemberInfoCategories($memberInfoID);
             }
 
-            // Now get the (possibly updated) category list for this member info record
-            $categoryMemberInfo = $CategoryMemberInfo->getListWithParents($memberInfoID);
+        }
 
+    }
 
-            /*
-             *  Get and store any selected amenities
-             *
-             *  Makes an array of amenities IDs then stores that
-             */
-            $selectedAmenities = array();
-            $newAmenity = false;
-            if (isset($_REQUEST['amenity']) && is_array($_REQUEST['amenity']) && count($_REQUEST['amenity']) > 0) {
+    /*
+     * Check it there's no active information record
+     *
+     * @return boolean
+     */
+    public function noActiveInfoRecord()
+    {
 
-                // For each selected amenity
-                foreach ($_REQUEST['amenity'] as $key) {
+        // If we have a member record
+        if ($this->haveMember) {
 
-                    // Make sure key is an integer
-                    $key = intval($key -0);
+            // Determine if there are any active info records for this member
+            $sql = "
+                    SELECT count(id) as numbActive
+                      FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info
+                     WHERE status = ".$this->config['status_numb']['Active']."
+                ;";
+            $activeTest = $this->wpdb->get_row($sql, ARRAY_A);
 
-                    // Add to selected amenities list
-                    $selectedAmenities[$key] = $key;
+            // If count is 0 then there are no active info records
+            if ($activeTest['numbActive'] == 0) {
+                return true;
+            }
 
-                } // For each amityy being submitted
+        }
 
-                // Update the selected amenities for this member information record, returns new list
-                $memberAmenities = $Amenities->updateAmenityRef($this->config['ref_type_numb']['MemberInfo'], $memberID, $selectedAmenities);
+        return false;
 
-            // Otherwise if this is a submission and there's no categories submitted, so make sure there's none stored
-            } elseif (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
-                $memberAmenities = $Amenities->updateAmenityRef($this->config['ref_type_numb']['MemberInfo'], $memberID);
-            }
+    }
 
-        } // Have member info
 
-        // If we have a member record
-        if ($haveMember) {
+    /*
+     * Check if current member information record is active
+     *
+     * @return boolean
+     */
+    public function isActive()
+    {
 
-            // Determine if there are any active info records for this member
+        // If we have a member info record, check if it's active
+        if ($this->memberInfoID) {
+
+            // Determine if this is the active record
             $sql = "
-                SELECT count(id) as numbActive
+                SELECT status
                   FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info
-                 WHERE status = ".$this->config['status_numb']['Active']."
-            ;";
+                              WHERE id = ".$this->memberInfoID."
+                              ;";
             $activeTest = $this->wpdb->get_row($sql, ARRAY_A);
 
-            // If count is 0 then there are no active info records
-            if ($activeTest['numbActive'] == 0) {
-                $noActive = true;
+            // If it is, then save that
+            if ($activeTest['status'] == $this->config['status_numb']['Active']) {
+                return true;
             }
 
+            return false;
         }
 
-        // Reload member data to make sure it's up to date (might put some logic in this some day)
-        $memberData = $Members->getEntry($memberID);
+    }
 
 
-        if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
-            glmMembersAdmin::addNotice($memberInfo, 'DataBlock', 'Member Data');
-        }
+    /*
+     * Update categories for the current submission
+     *
+     * @return void
+     */
+    public function updateCategories()
+    {
 
-        // Compile template data
-        $templateData = array(
-            'haveMember' => $haveMember,
-            'memberID' => $memberID,
-            'member' => $memberData,
-            'haveMemberInfo' => $haveMemberInfo,
-            'memberInfoID' => $memberInfoID,
-            'memberInfo' => $memberInfo,
-            'haveCategories' => $haveCategories,
-            'categories' => $categories,
-            'categoryMemberInfo' => $categoryMemberInfo,
-            'haveAmeenities' => $haveAmenities,
-            'amenities' => $amenities,
-            'haveMemberAmenities' => $haveMemberAmenities,
-            'memberAmenities' => $memberAmenities,
-            'haveImageGallery' => $haveImageGallery,
-            'imageGallery' => $imageGallery,
-            'noActive' => $noActive,
-            'time' => time()
-        );
+        // Instatiate the dataCategories class
+        require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCategories.php');
+        $Categories = new GlmDataCategories($this->wpdb, $this->config);
 
-        // Return status, suggested view, and data to controller
-        return array(
-            'status' => $success,
-            'menuItemRedirect' => false,
-            'modelRedirect' => false,
-            'view' => 'admin/member/memberInfo.html',
-            'data' => $templateData
-        );
+        // Instatiate categoryMemberInfo class
+        require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCategoryMemberInfo.php');
+        $CategoryMemberInfo = new GlmDataCategoryMemberInfo($this->wpdb, $this->config);
+
+        // Get any selected categories
+        $selectedCategories = array();
+        $newCategory = false;
+        if (isset($_REQUEST['category']) && is_array($_REQUEST['category']) && count($_REQUEST['category']) > 0) {
+
+            /*
+             *  For each selected category
+             *
+             *  Note that categories are submitted with either a positive key, which indicates
+             *  that it represents an existing category, or a negative key, which indicates
+             *  that the user is trying to add it to the list of categories.
+             *
+             */
+            foreach ($_REQUEST['category'] as $key) {
+
+                // Make sure key is an integer
+                $key = intval($key -0);
+
+                // If negative, this is a new category that needs to be added to the category table
+                if ($key < 0) {
+
+                    $newCategory = true;
+
+                    // Check if a parent is specified
+                    $parent = 0;
+                    if ($_REQUEST['newCatParent'][$key] != '') {
+                        $parent = $_REQUEST['newCatParent'][$key] -0;
+                    } elseif ($_REQUEST['newCatParentName'][$key]) {
+                        $parent = $_REQUEST['newCatParentName'][$key];
+                    }
+
+                    // Clean up the category name
+                    $category = filter_var($_REQUEST['newCategory'][$key]);
+
+                    // Add it to the category table and get the new category ID
+                    $categoryID = $Categories->addCategory($category, $parent);
+
+                    // If we got a new category ID, add it to the array of currently selected categoryMemberInfo records
+                    if ($categoryID) {
+                        $selectedCategories[$categoryID] = $categoryID;
+                    }
+
+                    // Otherwise if it's positive, the category is an existing one
+                } else if ($key > 0) {
+
+                    $selectedCategories[$key] = $key;
+
+                }
+
+                // If there's selected categories
+                if (count($selectedCategories) > 0) {
+
+                    // Update the selected categories for this member information record, returns new list
+                    $CategoryMemberInfo->setMemberInfoCategories($this->memberInfoID, $selectedCategories);
+
+                }
+
+                // If there's been a new category
+                if ($newCategory) {
+
+                    // Get the full category list again
+                    $this->categories = $Categories->getListSortedParentChild();
+
+                }
+
+            } // For each category being submitted
+
+            // Otherwise if this is a submission and there's no categories submitted, so make sure there's none stored
+        } elseif (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
+            $CategoryMemberInfo->clearMemberInfoCategories($this->memberInfoID);
+        }
 
     }
 
 
+    /*
+     * Update amenities for the current submission
+     *
+     * @return void
+     */
+    public function updateAmenities()
+    {
+
+        // Instantiate Amenities data class
+        require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataAmenities.php');
+        $Amenities = new GlmDataAmenities($this->wpdb, $this->config);
+
+        $selectedAmenities = array();
+        $newAmenity = false;
+        if (isset($_REQUEST['amenity']) && is_array($_REQUEST['amenity']) && count($_REQUEST['amenity']) > 0) {
+
+            // For each selected amenity
+            foreach ($_REQUEST['amenity'] as $key) {
+
+                // Make sure key is an integer
+                $key = intval($key -0);
+
+                // Add to selected amenities list
+                $selectedAmenities[$key] = $key;
+
+            } // For each amityy being submitted
+
+            // Update the selected amenities for this member information record, returns new list
+            $this->memberAmenities = $Amenities->updateAmenityRef($this->config['ref_type_numb']['MemberInfo'], $this->memberID, $selectedAmenities);
+
+        // Otherwise if this is a submission and there's no categories submitted, make sure there's none stored
+        } elseif (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
+            $this->memberAmenities = $Amenities->updateAmenityRef($this->config['ref_type_numb']['MemberInfo'], $this->memberID);
+        }
+
+    }
+
 }
 ?>
index c66e940..18427bf 100644 (file)
@@ -4,11 +4,13 @@
     
     <h2 class="nav-tab-wrapper">
         <a href="{$thisURL}?page={$thisPage}&glm_action=index&member={$memberID}" class="nav-tab{if $thisAction==index}-active{/if}">Member Dashboard</a>
-        <a href="{$thisURL}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&id={$memberInfoID}" class="nav-tab{if $thisAction==memberInfo}-active{/if} {if !$haveMember || !$haveMemberInfo}disabled{/if}">Member Info</a>
-        <a href="{$thisURL}?page={$thisPage}&glm_action=locations&member={$memberID}" class="nav-tab{if $thisAction==locations}-active{/if} {if !$haveMember || !$haveMemberInfo}disabled{/if}">Locations</a>
-        <a href="{$thisURL}?page={$thisPage}&glm_action=facilities&member={$memberID}" class="nav-tab{if $thisAction==facilities}-active{/if} {if !$haveMember || !$haveMemberInfo}disabled{/if}">Facilities</a>
-        <a href="{$thisURL}?page={$thisPage}&glm_action=attractions&member={$memberID}" class="nav-tab{if $thisAction==attractions}-active{/if} {if !$haveMember || !$haveMemberInfo}disabled{/if}">Attractions</a>
-        <a href="{$thisURL}?page={$thisPage}&glm_action=contacts&member={$memberID}" class="nav-tab{if $thisAction==contacts}-active{/if} {if !$haveMember || !$haveMemberInfo}disabled{/if}">Contacts</a>
+        <a href="{$thisURL}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&id={$memberInfoID}" class="nav-tab{if $thisAction==memberInfo}-active{/if} {if !$member || !$memberInfo}disabled{/if}">Member Info</a>
+<!-- 
+        <a href="{$thisURL}?page={$thisPage}&glm_action=locations&member={$memberID}" class="nav-tab{if $thisAction==locations}-active{/if} {if !$member || !$memberInfo}disabled{/if}">Locations</a>
+        <a href="{$thisURL}?page={$thisPage}&glm_action=facilities&member={$memberID}" class="nav-tab{if $thisAction==facilities}-active{/if} {if !$member || !$memberInfo}disabled{/if}">Facilities</a>
+        <a href="{$thisURL}?page={$thisPage}&glm_action=attractions&member={$memberID}" class="nav-tab{if $thisAction==attractions}-active{/if} {if !$member || !$memberInfo}disabled{/if}">Attractions</a>
+        <a href="{$thisURL}?page={$thisPage}&glm_action=contacts&member={$memberID}" class="nav-tab{if $thisAction==contacts}-active{/if} {if !$member || !$memberInfo}disabled{/if}">Contacts</a>
+-->        
     </h2>
     <div id="glm-admin-content-container">
     
index 9319bc5..87ce81a 100644 (file)
@@ -6,7 +6,7 @@
       <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
     <![endif]-->
     
-    {if $haveMemberInfo}
+    {if $memberInfo}
         <!--  Delete Member Information dialog -->
         <div id="deleteMemberInfoButton" class="button-primary glm-right">Archive this Member Information</div>
         <div id="deleteMemberInfoDialog" class="glm-dialog-box" title="Delete Member Information">
@@ -29,7 +29,7 @@
     <form action="{$thisURL}?page={$thisPage}" method="post" enctype="multipart/form-data">
         <input type="hidden" name="glm_action" value="memberInfo">
         <input type="hidden" name="member" value="{$member.id}">
-      {if $haveMemberInfo}
+      {if $memberInfo}
         <input type="hidden" name="option" value="submit">
         <input type="hidden" name="id" value="{$memberInfo.fieldData.id}">
         <input type="hidden" name="modify_time" value="now">
@@ -47,7 +47,7 @@
                 <th>Member Type:</th>
                 <td>{$member.member_type.name}</td>
             </tr>            
-      {if $haveMemberInfo}
+      {if $memberInfo}
             <tr>
                 <th>Access:</th>
                 <td>{$member.access.name}</td>
@@ -58,7 +58,7 @@
     {/if}
             <tr><td colspan="2">&nbsp;</td></tr>
             <tr>
-      {if $haveMemberInfo}
+      {if $memberInfo}
             <tr>
                 <th>Created:</th>
                 <td>{$memberInfo.fieldData.create_time.datetime}</td>
                                     <th>Parent Category:</th>
                                     <td>
                                         <select id="newCatParent" name="newCatParent">
+                            {if $categories}
                                             <option value=""></option>
-                            {if $haveCategories}
                                 {foreach $categories as $t}
                                     {if !$t.parent.value} <!-- don't show child categories -->
                                             <option value="{$t.id}" data-parent="{$t.name}">{$t.name}</option>
                     </div>
                     <!-- Category Selection -->
                     <select name="categorySelect" id="categorySelect">
+        {if $availableCategories}
                         <option id="categoryNone" value=""></option>
-        {foreach from=$categories item=v}
+            {foreach from=$availableCategories item=v}
                         <option value="{$v.id}" data-parent="{$v.parent.name}">
                             {if $v.parent.value}&nbsp;&nbsp;&nbsp;&nbsp;{/if}{$v.name}
                         </option>
-        {/foreach}
+            {/foreach}
+        {else}
+                        <option id="" value="">(No Categories Listed - Select "Add a new Category" to the right. )</option>  
+        {/if}
                     </select>&nbsp;&nbsp; Select a category to add to box below.<br>
                     <div id="activeCategories" class="glm-dynSelect-box">
-        {if $categoryMemberInfo}
-            {foreach from=$categoryMemberInfo item=c}
-                        <div data-id="{$c.category}" class="glm-dynSelect-item glm-members-catgegory"> 
-                            {if $c.category_parent}{$c.parent_name}: {/if}{$c.category_name} 
-                            <span data-id="{$c.category}" class="glm-dynSelect-delete catDelete">X</span>
-                            <input type="hidden" name="category[{$c.category}]" value="{$c.category}">
+        {if $memberInfo.fieldData.categories}
+            {foreach from=$memberInfo.fieldData.categories item=c}
+                        <div data-id="{$c.id}" class="glm-dynSelect-item glm-members-catgegory"> 
+                            {if $c.parent_name != ''}{$c.parent_name}: {/if}{$c.name} 
+                            <span data-id="{$c.id}" class="glm-dynSelect-delete catDelete">X</span>
+                            <input type="hidden" name="category[{$c.id}]" value="{$c.id}">
                        </div>                    
             {/foreach}
         {/if}                    
                 <td class="glm-item-container">
                     <!-- Amenity Selection -->
                     <select name="amenitySelect" id="amenitySelect">
+        {if $availableAmenities}
                         <option id="amenityNone" value=""></option>
-        {foreach from=$amenities item=v}
+            {foreach from=$availableAmenities item=v}
                         <option value="{$v.id}">
                             {$v.name}
                         </option>
-        {/foreach}
+            {/foreach}
+        {else}
+                        <option id="" value="">(No Amenities Listed - See "Configure" > "Amenities")</option>  
+        {/if}
                     </select>&nbsp;&nbsp; Select an amenity to add to box below.<br>
                     <div id="activeAmenities" class="glm-dynSelect-box">
-        {if $haveMemberAmenities}
-            {foreach from=$memberAmenities item=c}
+        {if $memberInfo.fieldData.amenities}
+            {foreach from=$memberInfo.fieldData.amenities item=c}
                         <div data-id="{$c.id}" class="glm-dynSelect-item glm-members-amenity"> 
                             {$c.name} 
                             <span data-id="{$c.id}" class="glm-dynSelect-delete amenityDelete">X</span>
                 $( "#largeLogoDialog" ).dialog( "option", "width", newWidth );
             });
 
-    {if $haveMemberInfo}            
+    {if $memberInfo}            
             // Delete Member Info dialog
             $("#deleteMemberInfoDialog").dialog({
                 autoOpen: false,