added ability to change page name and id in mgmt section
authorAnthony Talarico <talarico@gaslightmedia.com>
Mon, 23 May 2016 19:20:17 +0000 (15:20 -0400)
committerAnthony Talarico <talarico@gaslightmedia.com>
Mon, 23 May 2016 19:20:17 +0000 (15:20 -0400)
classes/glmPluginSupport.php
models/admin/management/index.php
views/admin/management/index.html

index 5fe414e..56cc527 100644 (file)
@@ -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);
index 611b121..5e4e3e4 100644 (file)
@@ -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
         );
 
index 349f9fc..187b1be 100644 (file)
                             <tr>
                                 <th>Page Name</th>
                                 <td>
-                                    <input type="text" name="glm_members_database_option_{$requiredPageData.title}" value="{$requiredPageData.title}">
+                                    <input type="text" name="glm_members_database_option_{$requiredPageData.slug}" value="{$requiredPageData.title}">
                                 </td>
                             </tr>
                             <tr>
                                 <th>Page ID</th>
                                 <td>
-                                    <input type="text" readonly value="{$requiredPageData.id}">
+                                    <input name="glm_members_database_id_{$requiredPageData.slug}" type="text" value="{$requiredPageData.id}">
                                 </td>
                             </tr>
                             <tr>