Adding, removing, updating URLs functional. Documentation
authorLaury GvR <laury@gaslightmedia.com>
Sat, 27 Feb 2016 00:13:51 +0000 (19:13 -0500)
committerLaury GvR <laury@gaslightmedia.com>
Sat, 27 Feb 2016 00:13:51 +0000 (19:13 -0500)
models/admin/member/social.php
models/admin/social/index.php
setup/databaseScripts/create_database_V0.0.1.sql
views/admin/member/social.html

index 415bfe0..2dc8ccf 100644 (file)
@@ -18,7 +18,7 @@ require_once(GLM_MEMBERS_SOCIAL_PLUGIN_CLASS_PATH.'/data/dataSocial.php');
 
 class GlmMembersAdmin_member_social extends GlmDataSocial
 {
-
+    
     /**
      * WordPress Database Object
      *
@@ -54,7 +54,7 @@ class GlmMembersAdmin_member_social extends GlmDataSocial
      * @access public
      */
     public $contactID = false;
-
+    
 
     /*
      * Constructor
@@ -101,6 +101,26 @@ class GlmMembersAdmin_member_social extends GlmDataSocial
 
     }
 
+    
+    
+    public function updateUrlList(&$existingUrls) {        
+        $getExistingUrls = "
+            SELECT * 
+            FROM ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."media_urls
+            ;";
+        $existingUrls = $this->wpdb->get_results($getExistingUrls, ARRAY_A);
+//        $existingUrls = $queryUrls[0];
+        return;
+    }
+    
+    public function printSocialList(&$array,$name="Array list") {
+        echo "<hr />$name:<table>";
+        foreach($array[0] as $key=>$value) {
+            echo("<tr><td>$key</td><td>$value</td></tr>");
+        }
+        echo "</table>";
+    }
+    
     public function modelAction($actionData = false)
     {
         $displayData = 'Hello, World! This is the Social Add-On "social" model talking to you from inside WordPress.';
@@ -111,7 +131,8 @@ class GlmMembersAdmin_member_social extends GlmDataSocial
         $socialError = false;
         $newSocial = false;
         $option = false;
-        
+        $debug = true;
+
         $socialArray = array(
             'facebook' => array(
                 'name' => 'Facebook',
@@ -132,7 +153,7 @@ class GlmMembersAdmin_member_social extends GlmDataSocial
                 'baseurl' => 'www.pinterest.com'
             ),
             'googleplus' => array(
-                'name' => 'Google Plus',
+                'name' => 'GooglePlus',
                 'xpos' => -124,
                 'ypos' => -5,
                 'baseurl' => 'www.google.com'
@@ -179,67 +200,43 @@ class GlmMembersAdmin_member_social extends GlmDataSocial
                 'ypos' => -45,
                 'baseurl' => 'www.photobucket.com'
             ),
+            'rss' => array(
+                'name' => 'RSS',
+                'xpos' => -282,
+                'ypos' => -5,
+                'baseurl' => '#'
+            )
         );
-
+        // The above array needs to be inserted into the Database
+        
+        $getExistingUrls = "
+            SELECT * 
+            FROM ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."media_urls
+            ;";
+        $existingUrls = $this->wpdb->get_results($getExistingUrls, ARRAY_A);
         // If there's an action option
         if (isset($_REQUEST['option'])) {
             $option = trim(filter_var($_REQUEST['option'],FILTER_SANITIZE_STRING));
         } else {
             $option = "default";
         }
-        if (isset($_REQUEST['socialname-facebook'])) {
-            $socialUrl = trim(filter_var($_REQUEST['socialname-facebook'],FILTER_SANITIZE_STRING));
-        } else {
-            echo "FAIL socialUrl REQUEST";
-        }
+
         echo "<hr />Request:<table>";
         foreach($_REQUEST as $key=>$value) {
             echo("<tr><td>$key</td><td>$value</td></tr>");
         }
         echo "</table>";
-        $socialarray = array_filter($_REQUEST, function($k) {
-            return preg_match('/^socialname-/',$k);
-        }, ARRAY_FILTER_USE_KEY);
-        echo "<hr />SocialArray:<table>";
-        echo "<pre>";print_r($socialarray,true);echo "</pre>";
-        foreach($socialarray as $key=>$value) {
-            echo("<tr><td>$key</td><td>$value</td></tr>");
-        }
-        echo "</table><hr />";
-        
         
+//        $formUrls = array_filter($_REQUEST, function($k) {
+//            return preg_match('/^socialname-/',$k);
+//        }, ARRAY_FILTER_USE_KEY);
 
-        // this causes ALERT: Empty Fields List in data abstract buildFieldsList()! Likely programming error.
-        // $socialData = $this->editEntry($memberID);
-        
-//        if (!$socialData) {
-//            $socialData = $this->newEntry($memberID);
-//            $newSocial = true;
-//        }
-
-        
-        
-        
-//        switch($option) {
-//            case 'update':
-//            default:
-//                $this->updateEntry($memberID);
-//                if ($socialData) {
-//                    $socialUpdated = true;
-//                } else {
-//                    $socialError = true;
-//                }
-//                
-//                $option = 'update';
-//                break;
-//        }
-                
+        // Get the Member ID
         $memberID = 0;
         if (isset($_REQUEST['member']) && ($_REQUEST['member']-0) > 0) {
             $memberID = $_REQUEST['member'] - 0;
         }
         if ($memberID == 0) {
-
             // There should have been a member ID - So failure
             return array(
                 'status' => false,
@@ -251,76 +248,87 @@ class GlmMembersAdmin_member_social extends GlmDataSocial
 
         }
         
-        
         switch ($option) {
             case "submit":
-    //        if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
-
-                $socialData = $this->updateEntry($memberID);
-
                 if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
                     glmMembersAdmin::addNotice("<b>&nbsp;&nbsp;Social Update:</b> $memberID", 'Process');
                 }
-    //            echo $option;
-    //            echo $socialUrl;
-    //            echo $memberID;
-                // If update was successful then use editEntry() to setup for the edit again.
-                if ($socialData) {
-                    $social = 'facebook';
-                    $socialData = $this->editEntry($memberID);
-                    $socialUpdated = true;
-
-                    // Also update all member info records with any possible name change
-                      $sql = "
-                    INSERT INTO ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."socialURL
-                       (member_id,".$social."_url)
-                     VALUES (".$memberID.", '".$socialUrl."')
-                ;";
-                    echo "<div>".$sql."</div>";  
-                    $sql2 = "
-                        UPDATE ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."socialURL
-                           SET ".$social."_url = '".$socialUrl."'
-                         WHERE member_id = $memberID
-                    ;";
-                    echo "<div>".$sql2."</div>";
-                    $this->wpdb->query($sql);
-                    $this->wpdb->query($sql2);
-
-                }       
+                
+                // Refresh the list of URLs based on the Database values
+                $this->updateUrlList($existingUrls);
+                if ($debug) {
+                    $this->printSocialList($existingUrls,"Existing Urls Pre Submit");
+                }
+                $socialUpdated = false;
+                $statusMessage="";
+                
+                foreach($existingUrls[0] as $social=>$socialUrl) {
+                    // Reset the query
+                    $sql = "";
+                    
+                    // Grab the URL for the current Social Media from the form
+                    if (isset($_REQUEST['socialname-'.$social])) {
+                        $formUrl = trim(filter_var($_REQUEST['socialname-'.$social],FILTER_SANITIZE_STRING));
+                    } else {
+                        $formUrl = 1;
+                        if ($debug) {
+                            echo "<div>FAILED socialUrl REQUEST for ".$social."</div>";
+                        }
+                    }
+                    if ($socialUrl == 1 || $formUrl == $socialUrl || $formUrl == 1) {
+                        // If it encounters the Member ID from the DB, the error code for the form, 
+                        // or the form does not differ from the database: skip this iteration
+                        continue;
+                    } else {
+                        $sql = "
+                            UPDATE ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."media_urls
+                               SET ".$social." = '".$formUrl."'
+                             WHERE member_id = $memberID
+                        ;";
+                        $statusMessage = "The selected social links have been updated.";
+                        $socialUpdated = true;
+                        $this->wpdb->query($sql);
+                    }
+                    if ($socialUpdated) {
+                        echo "<hr><div>".$statusMessage."</div>";
+                        if ($debug){
+                            echo "<div>Social:".$social."</div>";
+                            echo "<div>Social url:".$socialUrl."</div>";
+                            echo "<div>statement:".$sql."</div>";
+                        } 
+                    }
+                }               
+                if ($debug) {
+                    $this->updateUrlList($existingUrls);
+                    $this->printSocialList($existingUrls,"Existing Urls Post Submit");
+                }
                 break;
+            case "social";    
             default:
-                $sql = "
-                    SELECT * 
-                    FROM ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."socialURL
-                ;";
-                $existingUrls = $this->wpdb->get_results($sql, ARRAY_A);
-                echo "<table>";
-                foreach($existingUrls[0] as $key=>$value) {
-                    echo("<tr><td>$key</td><td>$value</td></tr>");
+                if ($debug) {
+                    $this->updateUrlList($existingUrls);
+                    $this->printSocialList($existingUrls,"Existing Urls Default:");
                 }
-                echo "</table>";
-                echo "<pre>";
-                var_dump($existingUrls);
-                echo "</pre>";
                 break;
         }
         
         // If we had a fatal error, redirect to the error page
         if ($socialError) {
             return array(
-                    'status' => $success,
-                    'option' => $option,
-                    'menuItemRedirect' => 'error',
-                    'modelRedirect' => 'index',
-                    'view' => 'admin/error/index.html',
-                    'data' => false
+                'status' => $success,
+                'option' => $option,
+                'menuItemRedirect' => 'error',
+                'modelRedirect' => 'index',
+                'view' => 'admin/error/index.html',
+                'data' => false
             );
         }
 
         if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
             glmMembersAdmin::addNotice($memberTypes, 'DataBlock', 'Member Types Data');
         }
-        
+        // Refresh the URL list before sending it to the front
+        $this->updateUrlList($existingUrls);
         // Compile template data
         $templateData = array(
             'displayData' => $displayData,
@@ -331,15 +339,17 @@ class GlmMembersAdmin_member_social extends GlmDataSocial
             'socialError' => $socialError,
             'haveMember' => $haveMember,
             'memberID' => $memberID,
-            'option' => $option
+            'option' => $option,
+            'existingUrls' => $existingUrls[0],
+            'statusMessage' => $statusMessage
         );
 
         // Return status, any suggested view, and any data to controller
         return array(
-                'status' => true,
-                'modelRedirect' => false,
-                'view' => 'admin/member/social.html',
-                'data' => $templateData
+            'status' => true,
+            'modelRedirect' => false,
+            'view' => 'admin/member/social.html',
+            'data' => $templateData
         );
     }
 }
index de6e9d5..6679d73 100644 (file)
@@ -244,12 +244,12 @@ class GlmMembersAdmin_social_index // extends GlmDataContacts
 
                 // Also update all member info records with any possible name change
                 $sql = "
-                    UPDATE ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."socialURL
+                    UPDATE ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."media_urls
                        SET facebook_url = www.testval.com
                      WHERE member_id = 1
                 ;";
 //                $sql = "
-//                    UPDATE ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."socialURL
+//                    UPDATE ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX."media_urls
 //                       SET facebook_url = '".addslashes($socialData['fieldData']['name'])."'
 //                     WHERE member_id = $memberID
 //                ;";
index ebc048e..241d872 100644 (file)
 -- To permit each query below to be executed separately,
 -- all queries must be separated by a line with four dashes
 
-CREATE TABLE {prefix}socialURL (
+CREATE TABLE {prefix}media_urls (
   member_id INT NULL,
-  facebook_url TEXT NULL,
-  twitter_url TEXT NULL,
-  pinterest_url TEXT NULL,
-  googleplus_url TEXT NULL,
-  digg_url TEXT NULL,
-  linkedin_url TEXT NULL,
-  instagram_url TEXT NULL,
-  rss_url TEXT NULL,
-  youtube_url TEXT NULL,
-  flickr_url TEXT NULL,
-  blog_url TEXT NULL,
-  photobucket_url TEXT NULL,
+  facebook TEXT NULL,
+  twitter TEXT NULL,
+  pinterest TEXT NULL,
+  googleplus TEXT NULL,
+  digg TEXT NULL,
+  linkedin TEXT NULL,
+  instagram TEXT NULL,
+  rss TEXT NULL,
+  youtube TEXT NULL,
+  flickr TEXT NULL,
+  blog TEXT NULL,
+  photobucket TEXT NULL,
   PRIMARY KEY (member_id),
   INDEX(member_id)
 );
 
 ----
 
-CREATE TABLE {prefix}socialMEDIA (
+CREATE TABLE {prefix}media_record (
   id INT NOT NULL AUTO_INCREMENT,
   social_name TINYTEXT NULL,
   social_xpos int NULL,
index 667cdf7..ecdc32e 100644 (file)
@@ -1,11 +1,8 @@
 {include file='admin/members/header.html'}
-    
-    <h3>Members Social Tab</h3>
+<h2>{if $socialUpdated}<span class="glm-notice glm-flash-updated glm-right">{$statusMessage}</span>{/if}</h2>
+    <h3>Member Social Tab</h3>
     <p>{$displayData}</p>
-    <div class="wrap">
     <div id="glm-admin-content-container">
-        <h3>Social Model</h3>
-        <p>{$displayData}</p>
         <a href="{$thisURL}?page={$thisPage}&glm_action=more">Click me to see more!</a>
         <form action="{$thisURL}?page={$thisPage}&glm_action=social&member=1" method="post" enctype="multipart/form-data">
             <input type="submit" class="button glm-button submit" value="submit" name='submit'>
@@ -13,6 +10,7 @@
             <div class="button glm-button right">Update</div>
             <table class="glm-admin-table">
             {foreach from=$socialArray key=k item=socialItem}
+                {$socialField = $socialItem.name|lower}
                 <tr>
                     <th>
                         <div id="glm-member-db-admin-social-{$socialItem.name|lower}" title="{$socialItem.name}" class="glm-member-db-social-icon" style="background: url('{$assetsUrl}/social-few-full-sprite.jpg') repeat scroll {$socialItem.xpos}px {$socialItem.ypos}px;height:33px;width:33px;display:block;">
@@ -20,7 +18,7 @@
                         {$socialItem.name}
                     </th>
                     <td>
-                        <input type="text" placeholder="{$socialItem.name} URL" name="socialname-{$socialItem.name|lower}" class="glm-form-text-input">
+                        <input type="text" placeholder="{$socialItem.name} URL" name="socialname-{$socialItem.name|lower}" class="glm-form-text-input" value="{$existingUrls.$socialField}">
                     </td>
                 </tr>
             {/foreach}
             <input type="submit" class="button glm-button submit" value="submit" name='submit'>
         </form>
     </div>
-</div>
+    
+
+    <script type="text/javascript">
+        jQuery(document).ready(function($) {
+            // Flash certain elements for a short time after display      
+            $(".glm-flash-updated").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
+        });
+</script>
 {include file='admin/footer.html'}
\ No newline at end of file