Add import groups and interests
authorSteve Sutton <steve@gaslightmedia.com>
Wed, 12 Dec 2018 16:16:20 +0000 (11:16 -0500)
committerSteve Sutton <steve@gaslightmedia.com>
Wed, 12 Dec 2018 16:16:20 +0000 (11:16 -0500)
Adding import option for fetching old database groups and intrests
interests and discovery ones included for uptravel.

models/admin/management/leads.php
views/admin/management/leads.html

index 4fe3ac3..b4427bf 100644 (file)
@@ -240,6 +240,10 @@ class GlmMembersAdmin_management_leads // extends GlmDataLeadsManagement
             $result .= $this->importLeads();
             break;
 
+        case 'setupInterests':
+            $result .= $this->importInterests();
+            break;
+
         case 'import':
             $total_imported_leads = 0;
             $result = '';
@@ -762,6 +766,68 @@ class GlmMembersAdmin_management_leads // extends GlmDataLeadsManagement
             Updated Leads: ' . $updated_leads . '</pre>';
     }
 
+    public function importInterests()
+    {
+        // Connect to the postgresql database
+        $db_host     = filter_var( $_REQUEST['db_host'], FILTER_SANITIZE_STRING );
+        $db_name     = filter_var( $_REQUEST['db_name'], FILTER_SANITIZE_STRING );
+        $db_user     = filter_var( $_REQUEST['db_user'], FILTER_SANITIZE_STRING );
+        $db_password = filter_var( $_REQUEST['db_password'], FILTER_SANITIZE_STRING );
+        $this->connectPostgresDb( $db_host, $db_name, $db_user, $db_password );
+
+        // Get list of interest groups
+        // From old database
+        $sql = "
+          SELECT *
+            FROM contacts.inq_group
+        ORDER BY id";
+
+        $results = $this->dbh->query( $sql )->fetchAll( PDO::FETCH_ASSOC );
+
+        foreach ( $results as $row ) {
+            $this->addGroup( $row['name'] );
+        }
+
+        // Get list of discovery groups
+        $sql = "
+          SELECT *
+            FROM contacts.discovery_groups
+        ORDER BY id";
+
+        $results = $this->dbh->query( $sql )->fetchAll( PDO::FETCH_ASSOC );
+
+        foreach ( $results as $row ) {
+            $this->addGroup( $row['name'] );
+        }
+
+        // Get all interests
+        $sql = "
+        SELECT CI.header AS name,IG.name AS group
+          FROM contacts.contact_inq CI
+               LEFT OUTER JOIN contacts.inq_group IG ON (IG.id = CI.groupid)
+        ORDER BY IG.name;
+        ";
+
+        $results = $this->dbh->query( $sql )->fetchAll( PDO::FETCH_ASSOC );
+        echo '<pre>$results: ' . print_r( $results, true ) . '</pre>';
+        foreach ( $results as $row ) {
+            $this->addInterestForGroup( $row['name'], $row['group'] );
+        }
+        // Get all discovery
+        $sql = "
+        SELECT CI.name,IG.name AS group
+          FROM contacts.contact_disc CI
+               LEFT OUTER JOIN contacts.discovery_groups IG ON (IG.id = CI.groupid)
+        ORDER BY IG.name;
+        ";
+
+        $results = $this->dbh->query( $sql )->fetchAll( PDO::FETCH_ASSOC );
+        echo '<pre>$results: ' . print_r( $results, true ) . '</pre>';
+        foreach ( $results as $row ) {
+            $this->addInterestForGroup( $row['name'], $row['group'] );
+        }
+
+    }
     /**
      * addInterestGroup
      *
@@ -846,6 +912,43 @@ class GlmMembersAdmin_management_leads // extends GlmDataLeadsManagement
         }
     }
 
+    public function addInterestForGroup( $name, $group )
+    {
+        // Get group id
+        $group_id = $this->addGroup( $group );
+        if ( !$group_id ) {
+            return false;
+        }
+
+        // check for this interest first.
+        $interest_id = $this->wpdb->get_var(
+            $this->wpdb->prepare(
+                "SELECT id
+                   FROM " . GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . "interests
+                  WHERE title = %s
+                    AND group_id = %d",
+                $name,
+                $group_id
+            )
+        );
+
+        if ( $interest_id ) {
+            return $interest_id;
+        } else {
+            // It is not in the db so add it.
+            $this->wpdb->insert(
+                GLM_MEMBERS_LEADS_PLUGIN_DB_PREFIX . 'interests',
+                array(
+                    'title'    => $name,
+                    'group_id' => $group_id
+                ),
+                array( '%s', '%d' )
+            );
+            $interest_id = $this->wpdb->insert_id;
+            return $interest_id;
+        }
+    }
+
     /**
      * addInterest
      *
index d6faba1..7ff4706 100644 (file)
@@ -5,9 +5,10 @@
 <h2 class="nav-tab-wrapper" style="margin-bottom: 1em;">
     <a id="glm-leads-sources" data-show-table="glm-table-sources" class="glm-settings-tab nav-tab {if $option2 == ''} nav-tab-active{/if}">Settings / Source List</a>
     <a id="glm-leads-import" data-show-table="glm-table-import" class="glm-settings-tab nav-tab">Gravity Forms</a>
+    <a id="glm-leads-importleads" data-show-table="glm-table-setupInterests" class="glm-settings-tab nav-tab{if $result && $option2 == 'setupInterests'} nav-tab-active{/if}">Setup Interests</a>
     <a id="glm-leads-importleads" data-show-table="glm-table-importleads" class="glm-settings-tab nav-tab{if $result && $option2 == 'importleads'} nav-tab-active{/if}">Import Leads</a>
-    <a id="glm-leads-importmemberleads" data-show-table="glm-table-importmemberleads" class="glm-settings-tab nav-tab{if $result && $option2 == 'importmemberleads'} nav-tab-active{/if}">Import Member Leads</a>
-    <a id="glm-leads-redozip" data-show-table="glm-table-redozip" class="glm-settings-tab nav-tab{if $option2 == 'redozip'} nav-tab-active{/if}">Redo Zip</a>
+    {* <a id="glm-leads-importmemberleads" data-show-table="glm-table-importmemberleads" class="glm-settings-tab nav-tab{if $result && $option2 == 'importmemberleads'} nav-tab-active{/if}">Import Member Leads</a> *}
+    {* <a id="glm-leads-redozip" data-show-table="glm-table-redozip" class="glm-settings-tab nav-tab{if $option2 == 'redozip'} nav-tab-active{/if}">Redo Zip</a> *}
 </h2>
 
 <table id="glm-table-sources" class="glm-admin-table glm-settings-table{if $option2 != ''} glm-hidden{/if}">
     </table>
 </form>
 
+<form action="{$thisUrl}?page={$thisPage}&glm_action=leads&option=import&option2=setupInterests" method="post">
+    <input type="hidden" name="glm_action" value="leads" />
+    <input type="hidden" name="option" value="import" />
+    <input type="hidden" name="option2" value="setupInterests" />
+    <table id="glm-table-setupInterests" class="glm-admin-table glm-settings-table{if $option2 != 'setupInterests'} glm-hidden{/if}">
+        {if !$result}
+            <tr>
+                <th>Database Host:</th>
+                <td><input type="text" name="db_host" /></td>
+            </tr>
+            <tr>
+                <th>Database Name:</th>
+                <td><input type="text" name="db_name" /></td>
+            </tr>
+            <tr>
+                <th>Database User:</th>
+                <td><input type="text" name="db_user" /></td>
+            </tr>
+            <tr>
+                <th>Database Password:</th>
+                <td><input type="text" name="db_password" /></td>
+            </tr>
+            <tr>
+                <td colspan="2"><input type="submit" value="Setup Interests" /></td>
+            </tr>
+        {else}
+            <tr>
+                <td>{$result}</td>
+            </tr>
+        {/if}
+    </table>
+</form>
+
 <form action="{$thisUrl}?page={$thisPage}&glm_action=leads&option=import&option2=importleads" method="post">
     <input type="hidden" name="glm_action" value="leads" />
     <input type="hidden" name="option" value="import" />