From: Steve Sutton Date: Tue, 15 Mar 2016 13:45:42 +0000 (-0400) Subject: Import tab for event management X-Git-Tag: v1.0.0^2~164^2~5 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/index.cgi?a=commitdiff_plain;h=97a6e6e4a090085cfce988fbddb4d4021554a6c7;p=WP-Plugins%2Fglm-member-db-events.git Import tab for event management Adding Import event tab. --- diff --git a/models/admin/management/events.php b/models/admin/management/events.php index d50a800..78ed974 100644 --- a/models/admin/management/events.php +++ b/models/admin/management/events.php @@ -38,6 +38,34 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement * @access public */ public $wpdb; + /** + * dbh Postgres database connection + * + * @var mixed + * @access public + */ + public $dbh; + /** + * settings used for the schema and tablenames + * + * @var mixed + * @access public + */ + public $settings = array(); + /** + * categories + * + * @var bool + * @access public + */ + public $categories = array(); + /** + * events + * + * @var bool + * @access public + */ + public $events = array(); /** * Constructor @@ -123,7 +151,35 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement } switch ($import) { case 'true': - $importResult = '
' . print_r( $_REQUEST, true ) . '
'; + $importResult = '
$_REQUEST: ' . print_r( $_REQUEST, true ) . '
'; + $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); + + $this->settings = filter_var_array( + $_REQUEST, + array( + 'schema' => FILTER_SANITIZE_STRING, + 'cattablename' => FILTER_SANITIZE_STRING, + 'tablename' => FILTER_SANITIZE_STRING, + 'sdate' => array( + 'filter' => FILTER_VALIDATE_REGEXP, + 'options' => array( + 'regexp' => '%[0-9]{2}/[0-9]{2}/[0-9]{4}%' + ) + ) + + ) + ); + $importResult .= '
$this->settings: ' . print_r($this->settings, true) . '
'; + $this->addCategories(); + $importResult .= $this->addEvents(); + + $importResult .= '
$this->categories: ' . print_r($this->categories, true) . '
'; + + break; default: break; @@ -145,7 +201,7 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement 'modelRedirect' => 'index', 'view' => 'admin/error/index.html', 'data' => array( - 'reason' => 'User does not have rights to make configuration changes.' + 'reason' => 'User does not have rights to make configuration changes.' ) ); } @@ -215,6 +271,39 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement } + public function connectPostgresDb($db_host, $db_name, $db_user, $db_password) + { + $connStr = "pgsql:"; + if ( $db_host ) { + $connPart[] = "host={$db_host}"; + } + if ( $db_name ) { + $connPart[] = "dbname={$db_name}"; + } + if ( $db_user ) { + $connPart[] = "user={$db_user}"; + } + if ( $db_password ) { + $connPart[] = "password={$db_password}"; + } + if ( !empty($connPart) ) { + $connStr .= implode( " ", $connPart ); + } + $driverOptions = array( + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_BOTH, + ); + try { + $this->dbh = new PDO($connStr, null, null, $driverOptions); + $this->dbh->setAttribute( + PDO::ATTR_ERRMODE, + PDO::ERRMODE_EXCEPTION + ); + } catch(PDOException $e) { + echo '
$e: ' . print_r($e, true) . '
'; + wp_die(); + } + } + /** * Test Recurrance Calculation of Dates * @@ -298,10 +387,125 @@ class GlmMembersAdmin_management_events extends GlmDataEventsManagement } - - public function importEvents() + public function addCategories() { + $return = ''; + $sql = " + SELECT * + FROM {$this->settings['schema']}.{$this->settings['cattablename']} + ORDER BY id"; + $return .= '
$sql: ' . print_r($sql, true) . '
'; + try { + $categories = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); + $return .= '
$categories: ' . print_r($categories, true) . '
'; + foreach ( $categories as $category ) { + // first check to see if the category is already there + $sql = " + SELECT id + FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "categories + WHERE name = '" . esc_sql( trim($category['name']) ) . "'"; + $return .= '
$sql: ' . print_r($sql, true) . '
'; + $found = $this->wpdb->get_row($sql, ARRAY_A); + $return .= '
$found: ' . print_r($found, true) . '
'; + if ( !isset($found) ) { + $this->wpdb->insert( + GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'categories', + array( + 'name' => trim($category['name']), + 'parent' => 0 + ), + array( + '%s', + '%d' + ) + ); + $this->categories[$this->wpdb->insert_id] = trim($category['name']); + } else { + $this->categories[$found['id']] = trim($category['name']); + } + } + } catch(PDOException $e) { + echo '
$e: ' . print_r($e, true) . '
'; + die('end here'); + } + return $return; + } + public function addEvents() + { + $sql = " + SELECT * + FROM {$this->settings['schema']}.{$this->settings['tablename']} + WHERE edate >= '{$this->settings['sdate']}'::DATE"; + try { + $events = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); + $return .= '
$events: ' . print_r($events, true) . '
'; + foreach ( $events as $event ) { + // see if event is in there by old_event_id + $sql = " + SELECT id + FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "events + WHERE old_event_id = '" . esc_sql( trim($event['id']) ) . "'"; + $found = $this->wpdb->get_row($sql, ARRAY_A); + if ( isset($found) ) { + $this->wpdb->update( + GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'events', + array( + 'status' => (($event['visable'] == '1') + ? $this->config['status_numb']['active'] + : $this->config['status_numb']['Inactive']), + 'created' => $event['create_date'], + 'updated' => $event['create_date'], + 'approved' => $event['approved_date'], + 'name' => $event['header'], + 'descr' => $event['descr'], + 'image' => $event['image'], + ), + array( 'old_event_id' => $event['id'] ), + array( + '%d', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + ), + array( '%d' ) + ); + } else { + $this->wpdb->insert( + GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . 'events', + array( + 'status' => (($event['visable'] == '1') + ? $this->config['status_numb']['active'] + : $this->config['status_numb']['Inactive']), + 'created' => $event['create_date'], + 'updated' => $event['create_date'], + 'approved' => $event['approved_date'], + 'name' => $event['header'], + 'descr' => $event['descr'], + 'image' => $event['image'], + 'old_event_id' => $event['id'] + ), + array( + '%d', + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%d', + ) + ); + } + } + } catch(PDOException $e) { + echo '
$e: ' . print_r($e, true) . '
'; + die('end here'); + } + return $return; } } diff --git a/views/admin/events/list.html b/views/admin/events/list.html index 4960743..505fbd0 100644 --- a/views/admin/events/list.html +++ b/views/admin/events/list.html @@ -124,7 +124,7 @@ var availableTags = [ {foreach $events as $e} - { label: "{$e.name|unescape:'html'}", value: "{$e.name|unescape:'html'}", id: '{$e.id}' }, + { label: "{$e.name|escape:'html'}", value: "{$e.name|unescape:'html'}", id: '{$e.id}' }, {/foreach} ]; $( "#glmEventsSearch" ).autocomplete({ diff --git a/views/admin/management/events.html b/views/admin/management/events.html index 7547e81..0114dcf 100644 --- a/views/admin/management/events.html +++ b/views/admin/management/events.html @@ -76,15 +76,33 @@ -
- - - - - - - - +
+
+ Database Creds + + + + + + + + +
+
+
+
+ Settings + + + + + + + + +
+ +