* @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
}
switch ($import) {
case 'true':
- $importResult = '<pre>' . print_r( $_REQUEST, true ) . '</pre>';
+ $importResult = '<pre>$_REQUEST: ' . print_r( $_REQUEST, true ) . '</pre>';
+ $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 .= '<pre>$this->settings: ' . print_r($this->settings, true) . '</pre>';
+ $this->addCategories();
+ $importResult .= $this->addEvents();
+
+ $importResult .= '<pre>$this->categories: ' . print_r($this->categories, true) . '</pre>';
+
+
break;
default:
break;
'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.'
)
);
}
}
+ 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 '<pre>$e: ' . print_r($e, true) . '</pre>';
+ wp_die();
+ }
+ }
+
/**
* Test Recurrance Calculation of Dates
*
}
-
- public function importEvents()
+ public function addCategories()
{
+ $return = '';
+ $sql = "
+ SELECT *
+ FROM {$this->settings['schema']}.{$this->settings['cattablename']}
+ ORDER BY id";
+ $return .= '<pre>$sql: ' . print_r($sql, true) . '</pre>';
+ try {
+ $categories = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
+ $return .= '<pre>$categories: ' . print_r($categories, true) . '</pre>';
+ 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 .= '<pre>$sql: ' . print_r($sql, true) . '</pre>';
+ $found = $this->wpdb->get_row($sql, ARRAY_A);
+ $return .= '<pre>$found: ' . print_r($found, true) . '</pre>';
+ 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 '<pre>$e: ' . print_r($e, true) . '</pre>';
+ 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 .= '<pre>$events: ' . print_r($events, true) . '</pre>';
+ 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 '<pre>$e: ' . print_r($e, true) . '</pre>';
+ die('end here');
+ }
+ return $return;
}
}
<input type="hidden" name="glm_action" value="events">
<input type="hidden" name="option" value="eventimport">
<input type="hidden" name="import" value="true">
- <div style="width: 200px;">
- <label for="db_host">DB Host</label>
- <input id="db_host" name="db_host" />
- <label for="db_name">DB Name</label>
- <input id="db_name" name="db_name" />
- <label for="db_user">DB User</label>
- <input id="db_user" name="db_user" />
- <label for="db_password">DB Password</label>
- <input id="db_password" name="db_password" />
+ <div style="float:left;width: 200px;">
+ <fieldset>
+ <legend>Database Creds</legend>
+ <label for="db_host">DB Host</label>
+ <input id="db_host" name="db_host" />
+ <label for="db_name">DB Name</label>
+ <input id="db_name" name="db_name" />
+ <label for="db_user">DB User</label>
+ <input id="db_user" name="db_user" />
+ <label for="db_password">DB Password</label>
+ <input id="db_password" name="db_password" />
+ <fieldset>
+ </div>
+ <div style="float:left;width: 200px;">
+ <fieldset>
+ <legend>Settings</legend>
+ <label for="schema">Schema</label>
+ <input id="schema" name="schema" />
+ <label for="cattablename">Category Table Name</label>
+ <input id="cattablename" name="cattablename" />
+ <label for="tablename">Event Table Name</label>
+ <input id="tablename" name="tablename" />
+ <label for="sdate">Start Date</label>
+ <input id="sdate" name="sdate" />
+ </fieldset>
+
+ <input type="submit" value="Import Events" />
</div>
</form>
</td>