From fde9696ee705e915095852f8398e2fbacfcb2f0f Mon Sep 17 00:00:00 2001 From: Anthony Talarico Date: Mon, 23 May 2016 15:20:17 -0400 Subject: [PATCH] added ability to change page name and id in mgmt section --- classes/glmPluginSupport.php | 4 + models/admin/management/index.php | 147 +++++++++++++----------------- views/admin/management/index.html | 4 +- 3 files changed, 67 insertions(+), 88 deletions(-) diff --git a/classes/glmPluginSupport.php b/classes/glmPluginSupport.php index 5fe414ed..56cc5276 100644 --- a/classes/glmPluginSupport.php +++ b/classes/glmPluginSupport.php @@ -534,7 +534,11 @@ return; // Off for now ** Need to make this switchable in management $newSlug = sanitize_title($requiredPageInfo['title']); $existingSlug = $this->verify_post_slug($newSlug); +<<<<<<< Updated upstream // But only run this if it is the first time this plugin is activated +======= + // But only run this if it is the first time this plugin is activated +>>>>>>> Stashed changes if (get_option(GLM_MEMBERS_PLUGIN_OPTION_FIRST_ACTIVATION) == 'true') { if ($newSlug == $existingSlug) { $existingID = $this->get_post_id_by_slug($newSlug); diff --git a/models/admin/management/index.php b/models/admin/management/index.php index 611b1216..5e4e3e42 100644 --- a/models/admin/management/index.php +++ b/models/admin/management/index.php @@ -23,7 +23,8 @@ require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/settings/dataSettingsGeneral.p */ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral { - + public $prefixSlugs = array(); + public $requiredPages = array(); /** * WordPress Database Object * @@ -61,6 +62,21 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral parent::__construct(false, false); } + public function updateRequiredPages(){ + $this->requiredPages = array(); + foreach ($this->config['addOns'] as $a) { + if (isset($a['requiredPages'])) { + foreach($a['requiredPages'] as $pageName => $pageData) { + $pageID = get_option(GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title']); + $this->prefixSlugs[] = GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title']; + $this->requiredPages[$a['underscored_name']][$pageName]['id'] = $pageID; + $page = get_post($pageID); + $this->requiredPages[$a['underscored_name']][$pageName]['slug'] = $page->post_name; + $this->requiredPages[$a['underscored_name']][$pageName]['title'] = $page->post_title; + } + } + } + } /* * Perform Model Action @@ -101,7 +117,6 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral $settingsUpdated = false; $settingsUpdateError = false; $requiredPagesUpdateError = false; - // General settings are always stored in a record with ID=1. $id = 1; @@ -117,30 +132,57 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral ) ); } - + // Check for submission option $option = ''; if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') { $option = $_REQUEST['option']; } - - foreach ($this->config['addOns'] as $a) { - - if (isset($a['requiredPages'])) { - foreach($a['requiredPages'] as $pageName => &$pageData) { - $pageID = get_option(GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title']); - $pageData['id'] = $pageID; - $pageData['slug'] = sanitize_title($pageData['title']);; - } - $requiredPages[$a['underscored_name']] = $a['requiredPages']; - } - } - + + $this->updateRequiredPages(); switch($option) { // Update General Settings and redisplay the form case 'submit': + + // get all of the IDs from the form + $requiredPagesIDs = array_intersect_key($_REQUEST, array_flip(preg_grep('/^glm_members_database_id/', array_keys($_REQUEST)))); + + foreach($requiredPagesIDs as $id){ + $page = get_post($id); + $pageTitle = $page->post_title; + $pageSlug= $page->post_name; + $slug = 'glm_members_database_option_' . $pageSlug; + $postValueTitle = filter_var($_POST[$slug], FILTER_SANITIZE_STRING); + if($pageTitle != $postValueTitle && !empty($postValueTitle)){ + $args = array ( + 'ID' => $id, + 'post_title' => $postValueTitle + ); + wp_update_post($args); + } else { + echo $pageTitle; + } + } + foreach($this->prefixSlugs as $slug){ + $id = get_option($slug); + $pageTitle = $page->post_title; + $page = get_post($id); + $pageSlug = $page->post_name; + $titleSlug = 'glm_members_database_option_' . $pageSlug; + $pageSlug = 'glm_members_database_id_' . $pageSlug; + $formID = filter_var($_POST[$pageSlug], FILTER_SANITIZE_STRING); + $formTitle = filter_var($_POST[$titleSlug], FILTER_SANITIZE_STRING); + if($id != $formID && !empty($formTitle) && get_post_status($formID) != false && is_int($formID)){ + update_option($slug, $formID); + } else { + update_option($slug, $id); + } + } + + $this->updateRequiredPages(); + // Required Pages $requiredPagesUpdateError = false; if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_LIST_ID]) ){ @@ -159,73 +201,8 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral } else { $requiredPagesUpdateError .= "\n Page ID $newMembersListId must be numeric."; } - - // Members Only - if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID]) ){ - $membersOnlyIdOption = GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_ONLY_ID; - $newMembersOnlyId = $_REQUEST[$membersOnlyIdOption]; - } - $results = $this->wpdb->get_results( "SELECT ID FROM ".$this->wpdb->posts." WHERE ID = ".$newMembersOnlyId); - if (get_option($membersOnlyIdOption) == $newMembersOnlyId) { - $requiredPagesUpdateError = false; - } else if (is_numeric($newMembersOnlyId)) { - if ($results) { - $requiredPagesUpdateError = false; - } else { - $requiredPagesUpdateError .= "\n Page ID $newMembersOnlyId does not exist. "; - } - } else { - $requiredPagesUpdateError .= "\n Page ID $newMembersOnlyId must be numeric."; - } - - // Events - if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_EVENT_LIST_ID]) ){ - $eventListIdOption = GLM_MEMBERS_PLUGIN_OPTION_EVENT_LIST_ID; - $newEventListId = $_REQUEST[$eventListIdOption]; - } - $results = $this->wpdb->get_results( "SELECT ID FROM ".$this->wpdb->posts." WHERE ID = ".$newEventListId); - if (get_option($eventListIdOption) == $newEventListId) { - $requiredPagesUpdateError = false; - } else if (is_numeric($newEventListId)) { - if ($results) { - $requiredPagesUpdateError = false; - } else { - $requiredPagesUpdateError .= "\n Page ID $newEventListId does not exist. "; - } - } else { - $requiredPagesUpdateError .= "\n Page ID $newEventListId must be numeric."; - } - - // Packaging - if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_PACKAGING_LIST_ID]) ){ - $packagingListIdOption = GLM_MEMBERS_PLUGIN_OPTION_PACKAGING_LIST_ID; - $newPackagingListId = $_REQUEST[$packagingListIdOption]; - } - $results = $this->wpdb->get_results( "SELECT ID FROM ".$this->wpdb->posts." WHERE ID = ".$newPackagingListId); - if (get_option($packagingListIdOption) == $newPackagingListId) { - $requiredPagesUpdateError = false; - } else if (is_numeric($newPackagingListId)) { - if ($results) { - $requiredPagesUpdateError = false; - } else { - $requiredPagesUpdateError .= "\n Page ID $newPackagingListId does not exist. "; - } - } else { - $requiredPagesUpdateError .= "\n Page ID $newPackagingListId must be numeric."; - } - - if (!$requiredPagesUpdateError) { - update_option($membersListIdOption, $newMembersListId); - $requiredPages['members_list']['id'] = $newMembersListId; - update_option($membersOnlyIdOption, $newMembersOnlyId); - $requiredPages['members_only']['id'] = $newMembersOnlyId; - update_option($eventListIdOption, $newEventListId); - $requiredPages['event_list']['id'] = $newEventListId; - update_option($packagingListIdOption, $newPackagingListId); - $requiredPages['packaging_list']['id'] = $newPackagingListId; - } - - // Update all general setttings + + // Update all general setttings $generalSettings = $this->updateEntry(1); if ($generalSettings['status']) { $settingsUpdated = true; @@ -250,9 +227,7 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral } break; - } - // Compile template data $templateData = array( 'reason' => '', @@ -260,7 +235,7 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral 'timezones' => DateTimeZone::listIdentifiers(), 'settingsUpdated' => $settingsUpdated, 'settingsUpdateError' => $settingsUpdateError, - 'requiredPages' => $requiredPages, + 'requiredPages' => $this->requiredPages, 'requiredPagesUpdateError' => $requiredPagesUpdateError ); diff --git a/views/admin/management/index.html b/views/admin/management/index.html index 349f9fcf..187b1be2 100644 --- a/views/admin/management/index.html +++ b/views/admin/management/index.html @@ -29,13 +29,13 @@ Page Name - + Page ID - + -- 2.17.1