From bba6bb04dc85034c870364e682c6d3bc9f7011e7 Mon Sep 17 00:00:00 2001 From: Chuck Scott Date: Wed, 16 Sep 2015 12:34:58 -0400 Subject: [PATCH] Various fixes and updates to handling of member info categories and amenities --- classes/data/dataCategoryMemberInfo.php | 2 + classes/data/dataMemberInfo.php | 2 +- lib/GlmDataAbstract/DataAbstract.php | 1 - misc/notes.txt | 3 + models/admin/member/memberInfo.php | 671 +++++++++++++++--------- views/admin/member/header.html | 12 +- views/admin/member/memberInfo.html | 44 +- 7 files changed, 448 insertions(+), 287 deletions(-) diff --git a/classes/data/dataCategoryMemberInfo.php b/classes/data/dataCategoryMemberInfo.php index 10f5c198..0f814136 100644 --- a/classes/data/dataCategoryMemberInfo.php +++ b/classes/data/dataCategoryMemberInfo.php @@ -314,6 +314,8 @@ class GlmDataCategoryMemberInfo extends GlmDataAbstract ;"; $this->wpdb->query($sql); + // Returns false to indicate there are no categories selected + return false; } } diff --git a/classes/data/dataMemberInfo.php b/classes/data/dataMemberInfo.php index f9f1fced..c1cadecd 100644 --- a/classes/data/dataMemberInfo.php +++ b/classes/data/dataMemberInfo.php @@ -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; } diff --git a/lib/GlmDataAbstract/DataAbstract.php b/lib/GlmDataAbstract/DataAbstract.php index bb23efe5..69ec86fb 100755 --- a/lib/GlmDataAbstract/DataAbstract.php +++ b/lib/GlmDataAbstract/DataAbstract.php @@ -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, diff --git a/misc/notes.txt b/misc/notes.txt index 1595498e..e248ef94 100644 --- a/misc/notes.txt +++ b/misc/notes.txt @@ -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 diff --git a/models/admin/member/memberInfo.php b/models/admin/member/memberInfo.php index 7b44cc54..ccfae2f6 100644 --- a/models/admin/member/memberInfo.php +++ b/models/admin/member/memberInfo.php @@ -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("  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("  Specified Member Information Record ID is invalid: $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("  Specified Member Information Record ID is invalid: $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); + } + + } + } ?> diff --git a/views/admin/member/header.html b/views/admin/member/header.html index c66e9407..18427bfc 100644 --- a/views/admin/member/header.html +++ b/views/admin/member/header.html @@ -4,11 +4,13 @@
diff --git a/views/admin/member/memberInfo.html b/views/admin/member/memberInfo.html index 9319bc57..87ce81a0 100644 --- a/views/admin/member/memberInfo.html +++ b/views/admin/member/memberInfo.html @@ -6,7 +6,7 @@ - {if $haveMemberInfo} + {if $memberInfo}
Archive this Member Information
@@ -29,7 +29,7 @@
- {if $haveMemberInfo} + {if $memberInfo} @@ -47,7 +47,7 @@ Member Type: {$member.member_type.name} - {if $haveMemberInfo} + {if $memberInfo} Access: {$member.access.name} @@ -58,7 +58,7 @@ {/if}   - {if $haveMemberInfo} + {if $memberInfo} Created: {$memberInfo.fieldData.create_time.datetime} @@ -236,8 +236,8 @@ Parent Category: + {if $availableCategories} - {foreach from=$categories item=v} + {foreach from=$availableCategories item=v} - {/foreach} + {/foreach} + {else} + + {/if}    Select a category to add to box below.
- {if $categoryMemberInfo} - {foreach from=$categoryMemberInfo item=c} -
- {if $c.category_parent}{$c.parent_name}: {/if}{$c.category_name} - X - + {if $memberInfo.fieldData.categories} + {foreach from=$memberInfo.fieldData.categories item=c} +
+ {if $c.parent_name != ''}{$c.parent_name}: {/if}{$c.name} + X +
{/foreach} {/if} @@ -281,16 +285,20 @@    Select an amenity to add to box below.
- {if $haveMemberAmenities} - {foreach from=$memberAmenities item=c} + {if $memberInfo.fieldData.amenities} + {foreach from=$memberInfo.fieldData.amenities item=c}
{$c.name} X @@ -760,7 +768,7 @@ $( "#largeLogoDialog" ).dialog( "option", "width", newWidth ); }); - {if $haveMemberInfo} + {if $memberInfo} // Delete Member Info dialog $("#deleteMemberInfoDialog").dialog({ autoOpen: false, -- 2.17.1