*/
// Load Management Packaging data abstract
-require_once(GLM_MEMBERS_PACKAGING_PLUGIN_CLASS_PATH.'/data/dataManagement.php');
+require_once GLM_MEMBERS_PACKAGING_PLUGIN_CLASS_PATH . '/data/dataManagement.php';
+require_once GLM_MEMBERS_PACKAGING_PLUGIN_CLASS_PATH . '/data/dataPackages.php';
/**
* GlmMembersAdmin_management_packaging
*/
public $wpdb;
- /*
+ /**
+ * dbh Postgres DB Object PDO
+ *
+ * @var mixed
+ * @access public
+ */
+ public $dbh;
+ public $imageUrl;
+
+ /**
* Constructor
*
* This contructor performs the work for this model. This model returns
}
+ /**
+ * modelAction
+ *
+ * @param bool $actionData
+ *
+ * @access public
+ * @return void
+ */
public function modelAction($actionData = false)
{
- $packageSettings = false;
- $settingsUpdated = false;
+ $packageSettings = false;
+ $settingsUpdated = false;
$settingsUpdateError = false;
+ $import_results = false;
// Determine if current user can edit configurations
- if (!current_user_can('glm_members_management')) {
+ if ( !current_user_can( 'glm_members_management' ) ) {
return array(
- 'status' => false,
- 'menuItemRedirect' => 'error',
- 'modelRedirect' => 'index',
- 'view' => 'admin/error/index.html',
- 'data' => array(
- 'reason' => 'User does not have rights to make configuration changes.'
- )
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'User does not have rights to make configuration changes.'
+ )
);
}
// Check for submission option
$option = '';
- if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
+ if ( isset( $_REQUEST['option'] ) && ( $_REQUEST['option'] === 'submit' || $_REQUEST['option'] === 'import' ) ) {
$option = $_REQUEST['option'];
}
- switch($option) {
-
- // Update the settings and redisplay the form
- case 'submit':
-
- // Update the package management settings
- $packageSettings = $this->updateEntry(1);
- if ($packageSettings['status']) {
- $settingsUpdated = true;
- } else {
- $settingsUpdateError = true;
- }
-
- break;
+ switch( $option ) {
+ // Import of old member packages
+ case 'import':
+ $import_results = '<pre>$_REQUEST: ' . print_r( $_REQUEST, true ) . '</pre>';
+ $this->connect_db(
+ filter_var( $_REQUEST['db_host'], FILTER_SANITIZE_STRING ),
+ filter_var( $_REQUEST['db_name'], FILTER_SANITIZE_STRING ),
+ filter_var( $_REQUEST['db_user'], FILTER_SANITIZE_STRING ),
+ ''
+ );
+ $this->imageUrl = filter_var( $_REQUEST['image_url'], FILTER_VALIDATE_URL);
+ $import_results = $this->import_member_packaging();
+ break;
- // Default is to get the current settings and display the form
- default:
+ // Update the settings and redisplay the form
+ case 'submit':
+ // Update the package management settings
+ $packageSettings = $this->updateEntry(1);
+ if ($packageSettings['status']) {
+ $settingsUpdated = true;
+ } else {
+ $settingsUpdateError = true;
+ }
+ break;
- // Try to get the first (should be only) entry for general settings.
- $packageSettings = $this->editEntry(1);
+ // Default is to get the current settings and display the form
+ default:
+ // Try to get the first (should be only) entry for general settings.
+ $packageSettings = $this->editEntry( 1 );
- if ($packageSettings === false) {
-
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
- glmMembersAdmin::addNotice("<b> /models/admin/management/packaging.php: Unable to load packaging management settings.", 'Alert');
- }
+ if ( $packageSettings === false ) {
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice( '<b> /models/admin/management/packaging.php: Unable to load packaging management settings.', 'Alert' );
}
- break;
+ }
+ break;
}
// Compile template data
$templateData = array(
- 'reason' => '',
- 'packagingSettings' => $packageSettings,
- 'settingsUpdated' => $settingsUpdated,
- 'settingsUpdateError' => $settingsUpdateError
+ 'reason' => '',
+ 'option' => $option,
+ 'packagingSettings' => $packageSettings,
+ 'settingsUpdated' => $settingsUpdated,
+ 'settingsUpdateError' => $settingsUpdateError,
+ 'importResults' => $import_results,
);
// Return status, suggested view, and data to controller
return array(
- 'status' => true,
+ 'status' => true,
'menuItemRedirect' => false,
- 'modelRedirect' => false,
- 'view' => 'admin/management/packaging.html',
- 'data' => $templateData
+ 'modelRedirect' => false,
+ 'view' => 'admin/management/packaging.html',
+ 'data' => $templateData
);
+ }
+ /**
+ * connect_db
+ *
+ * Make a connection to the given database for the site. (postgres)
+ * Sets the $this->dbh with the postgers database connection
+ *
+ * @param mixed $db_host
+ * @param mixed $db_name
+ * @param mixed $db_user
+ * @param mixed $db_password
+ * @access public
+ * @return void
+ */
+ public function connect_db($db_host, $db_name, $db_user, $db_password)
+ {
+ $conn_str = "pgsql:";
+ if ( $db_host ) {
+ $conn_part[] = "host={$db_host}";
+ }
+ if ( $db_name ) {
+ $conn_part[] = "dbname={$db_name}";
+ }
+ if ( $db_user ) {
+ $conn_part[] = "user={$db_user}";
+ }
+ if ( $db_password ) {
+ $conn_part[] = "password={$db_password}";
+ }
+ if ( !empty($conn_part) ) {
+ $conn_str .= implode( " ", $conn_part );
+ }
+ $driver_options = array(
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_BOTH,
+ );
+ try {
+ $this->dbh = new PDO($conn_str, null, null, $driver_options);
+ $this->dbh->setAttribute(
+ PDO::ATTR_ERRMODE,
+ PDO::ERRMODE_EXCEPTION
+ );
+ } catch(PDOException $e) {
+ echo '<pre>$e: ' . print_r($e, true) . '</pre>';
+ wp_die();
+ }
+ }
+
+ public function import_member_packaging()
+ {
+ $package_count = 0;
+ require_once GLM_MEMBERS_PLUGIN_PATH.'/models/admin/ajax/imageUpload.php';
+ $image_upload = new GlmMembersAdmin_ajax_imageUpload( $this->wpdb, $this->config );
+ $package_abstract = new GlmDataPackages( $this->wpdb, $this->config );
+ $sql = "
+ SELECT *
+ FROM members.member_packages";
+ $results = $this->dbh->query( $sql )->fetchAll( PDO::FETCH_ASSOC );
+ if ( $results ) {
+ foreach ( $results as $package ) {
+ // get the new member id
+ $member_id = $this->wpdb->get_var(
+ $this->wpdb->prepare(
+ "SELECT id
+ FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members
+ WHERE old_member_id = %d",
+ $package['member_id']
+ )
+ );
+ $intro = mb_substr( strip_tags( $package['description'] ), 0, 80 );
+ $image = '';
+ if ( $package['image'] ) {
+ $res = $image_upload->storeImage( $this->imageUrl . $package['image'] );
+ if ( $res['newFileName'] ) {
+ $image = $res['newFileName'];
+ }
+ }
+ $package_data = array(
+ 'active' => (($package['pending'] ) ? 0: 1),
+ 'title' => $package['title'],
+ 'package_slug' => $package['title'],
+ 'descr' => $package['description'],
+ 'short_descr' => $package['intro'],
+ 'image' => $image,
+ 'start_date' => $package['sdate'],
+ 'end_date' => $package['edate'],
+ 'expire_date' => $package['edate'],
+ 'position' => $package['pos'],
+ 'pricing' => '',
+ 'ref_type' => 10,
+ 'ref_dest' => $member_id,
+ 'offsite_url' => '',
+ );
+ $this->wpdb->insert(
+ GLM_MEMBERS_PACKAGING_PLUGIN_DB_PREFIX . 'packages',
+ $package_data,
+ array(
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%s',
+ '%d',
+ '%s',
+ '%d',
+ '%s',
+ '%s',
+ )
+ );
+ $package_id = $this->wpdb->insert_id;
+
+ // Update the package name slug after the insert
+ $package_abstract->updateSlug( $package_id );
+ ++$package_count;
+ }
+ }
+
+ return '<p>Adding ' . $package_count . ' packages</p>';
}
}
-
-?>
\ No newline at end of file
{include file='admin/management/header.html'}
-
- <form action="{$thisUrl}?page={$thisPage}" method="post" enctype="multipart/form-data">
+
+ <form id="package-setting-form" action="{$thisUrl}?page={$thisPage}" method="post" enctype="multipart/form-data">
<input type="hidden" name="glm_action" value="packaging">
<input type="hidden" name="option" value="submit">
-
+
<h2 class="nav-tab-wrapper" style="margin-bottom: 1em;">
- <a id="glm-settings-general" data-show-table="glm-table-packaging-general" class="glm-settings-tab nav-tab nav-tab-active">Packaging General</a>
+ <a id="glm-settings-general" data-show-table="glm-table-packaging-general" class="glm-settings-tab nav-tab{if $option==''} nav-tab-active{/if}">Packaging General</a>
<a id="glm-settings-list" data-show-table="glm-table-packaging-list" class="glm-settings-tab nav-tab">Package List</a>
<a id="glm-settings-detail" data-show-table="glm-table-packaging-detail" class="glm-settings-tab nav-tab">Package Detail</a>
+ <a id="glm-packaging-import" data-show-table="glm-table-packaging-import" class="glm-settings-tab nav-tab{if $option=='import'} nav-tab-active{/if}">Import Packages</a>
{if $settingsUpdated}<span class="glm-notice glm-flash-updated glm-right">Settings Updated</span>{/if}
{if $settingsUpdateError}<span class="glm-error glm-flash-updated glm-right">Settings Update Error</span>{/if}
</h2>
-
+
<!-- General Packaging Settings -->
- <table id="glm-table-packaging-general" class="glm-admin-table glm-settings-table">
+ <table id="glm-table-packaging-general" class="glm-admin-table glm-settings-table{if $option=='import'} glm-hidden{/if}">
<tr>
<th {if $packagingSettings.fieldRequired.canonical_package_page}class="glm-required"{/if}>Package Detail Page Permalink Name:</th>
<td {if $packagingSettings.fieldFail.canonical_package_page}class="glm-form-bad-input glm-form-bad-input-misc"{/if}>
{if $packagingSettings.fieldFail.canonical_package_page}<p>{$packagingSettings.fieldFail.canonical_package_page}</p>{/if}
</td>
</tr>
+ <tr><td><input class="updateSettings button" type="submit" value="Update Settings" /></td></tr>
</table>
-
+
<!-- Package List Settings -->
<table id="glm-table-packaging-list" class="glm-admin-table glm-settings-table glm-hidden">
<tr>
<tr><th>Show Member Address:</th><td><input type="checkbox" name="package_list_show_member_address"{if $packagingSettings.fieldData.package_list_show_member_address.value} checked="checked"{/if}></td></tr>
<tr>
<th>Address Options:</th>
- <td>
+ <td>
<table class="glm-admin-table">
<tr><th>Show Member Street:</th><td><input type="checkbox" name="package_list_show_member_street"{if $packagingSettings.fieldData.package_list_show_member_street.value} checked="checked"{/if}></td></tr>
<tr><th>Show Member Second Address:</th><td><input type="checkbox" name="package_list_show_member_second_address"{if $packagingSettings.fieldData.package_list_show_member_second_address.value} checked="checked"{/if}></td></tr>
- <tr><th>Show Member City, State and Zip</th><td><input type="checkbox" name="package_list_show_member_citystatezip"{if $packagingSettings.fieldData.package_list_show_member_citystatezip.value} checked="checked"{/if}></td></tr>
- <tr><th>Show Member Country:</th><td><input type="checkbox" name="package_list_show_member_country"{if $packagingSettings.fieldData.package_list_show_member_country.value} checked="checked"{/if}></td></tr>
- <tr><th>Show Member Region</th><td><input type="checkbox" name="package_list_show_member_region"{if $packagingSettings.fieldData.package_list_show_member_region.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Member City, State and Zip</th><td><input type="checkbox" name="package_list_show_member_citystatezip"{if $packagingSettings.fieldData.package_list_show_member_citystatezip.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Member Country:</th><td><input type="checkbox" name="package_list_show_member_country"{if $packagingSettings.fieldData.package_list_show_member_country.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Member Region</th><td><input type="checkbox" name="package_list_show_member_region"{if $packagingSettings.fieldData.package_list_show_member_region.value} checked="checked"{/if}></td></tr>
</table>
</td>
- </tr>
+ </tr>
<tr><th>Show Member Phone Number:</th><td><input type="checkbox" name="package_list_show_member_phone"{if $packagingSettings.fieldData.package_list_show_member_phone.value} checked="checked"{/if}></td></tr>
<tr><th>Show Member Toll Free Number:</th><td><input type="checkbox" name="package_list_show_member_tollfree"{if $packagingSettings.fieldData.package_list_show_member_tollfree.value} checked="checked"{/if}></td></tr>
<tr>
</tr>
<tr><th>Show Member E-mail:</th><td><input type="checkbox" name="package_list_show_member_email"{if $packagingSettings.fieldData.package_list_show_member_email.value} checked="checked"{/if}></td></tr>
</table>
- </td>
+ </td>
</tr>
+ <tr><td><input class="updateSettings button" type="submit" value="Update Settings" /></td></tr>
</table>
-
+
<!-- Package Detail Settings -->
<table id="glm-table-packaging-detail" class="glm-admin-table glm-settings-table glm-hidden">
<tr>
<tr><th>Show Member Address:</th><td><input type="checkbox" name="package_detail_show_member_address"{if $packagingSettings.fieldData.package_detail_show_member_address.value} checked="checked"{/if}></td></tr>
<tr>
<th>Address Options:</th>
- <td>
+ <td>
<table class="glm-admin-table">
<tr><th>Show Member Street:</th><td><input type="checkbox" name="package_detail_show_member_street"{if $packagingSettings.fieldData.package_detail_show_member_street.value} checked="checked"{/if}></td></tr>
- <tr><th>Show Member City, State and Zip</th><td><input type="checkbox" name="package_detail_show_member_citystatezip"{if $packagingSettings.fieldData.package_detail_show_member_citystatezip.value} checked="checked"{/if}></td></tr>
- <tr><th>Show Member Country:</th><td><input type="checkbox" name="package_detail_show_member_country"{if $packagingSettings.fieldData.package_detail_show_member_country.value} checked="checked"{/if}></td></tr>
- <tr><th>Show Member Region</th><td><input type="checkbox" name="package_detail_show_member_region"{if $packagingSettings.fieldData.package_detail_show_member_region.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Member City, State and Zip</th><td><input type="checkbox" name="package_detail_show_member_citystatezip"{if $packagingSettings.fieldData.package_detail_show_member_citystatezip.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Member Country:</th><td><input type="checkbox" name="package_detail_show_member_country"{if $packagingSettings.fieldData.package_detail_show_member_country.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Member Region</th><td><input type="checkbox" name="package_detail_show_member_region"{if $packagingSettings.fieldData.package_detail_show_member_region.value} checked="checked"{/if}></td></tr>
</table>
</td>
- </tr>
+ </tr>
<tr><th>Show Member Phone Number:</th><td><input type="checkbox" name="package_detail_show_member_phone"{if $packagingSettings.fieldData.package_detail_show_member_phone.value} checked="checked"{/if}></td></tr>
<tr><th>Show Member Toll Free Number:</th><td><input type="checkbox" name="package_detail_show_member_tollfree"{if $packagingSettings.fieldData.package_detail_show_member_tollfree.value} checked="checked"{/if}></td></tr>
<tr>
</tr>
<tr><th>Show Member E-mail:</th><td><input type="checkbox" name="package_detail_show_member_email"{if $packagingSettings.fieldData.package_detail_show_member_email.value} checked="checked"{/if}></td></tr>
</table>
- </td>
+ </td>
</tr>
+ <tr><td><input class="updateSettings button" type="submit" value="Update Settings" /></td></tr>
</table>
-
-
- <input id="updateSettings" type="submit" value="Update Settings" class="">
+
+
+
</form>
-
+
+ <form action="{$thisUrl}?page={$thisPage}" method="post" enctype="multipart/form-data">
+ <input type="hidden" name="glm_action" value="packaging">
+ <input type="hidden" name="option" value="import">
+
+ <table id="glm-table-packaging-import" class="glm-admin-table glm-settings-table{if $option!='import'} glm-hidden{/if}">
+ {if $importResults}
+ <tr><td>{$importResults}</td></tr>
+ {else}
+ <tr>
+ <th>Database Server:</th>
+ <td>
+ <input class="glm-form-text-input-medium" type="text" name="db_host" value="" placeholder="(host name or IP address)" />
+ </td>
+ </tr>
+ <tr>
+ <th>Database Name:</th>
+ <td>
+ <input class="glm-form-text-input-medium" type="text" name="db_name" value="" placeholder="(name of database)" />
+ </td>
+ </tr>
+ <tr>
+ <th>Database User:</th>
+ <td>
+ <input class="glm-form-text-input-medium" type="text" name="db_user" value="" placeholder="(user with read access to database)" />
+ </td>
+ </tr>
+ <tr>
+ <th>Base Image URL:</th>
+ <td>
+ <input class="glm-form-text-input-medium-long" type="text" name="image_url" value="" placeholder="(i.e. http://is0.gaslightmedia.com/mountpleasantwow/CKImage/" />
+ </td>
+ </tr>
+ <tr>
+ <th>Reset database Before Import:</th>
+ <td>
+ <input type="checkbox" name="db_reset" value="" />
+ </td>
+ </tr>
+ <tr><td><input id="ImportPackages" type="submit" value="Import Packages" class="button" /></td></tr>
+ {/if}
+ </table>
+
+ </form>
+
<script type="text/javascript">
-
+
jQuery(document).ready(function($) {
-
+
/*
* Edit area tabs
*/
$('.glm-settings-tab').click( function() {
- // Clear tabl highlights and hide all tables
+ // Clear table highlights and hide all tables
$('.glm-settings-tab').removeClass('nav-tab-active');
$('.glm-settings-table').addClass('glm-hidden');
-
+
// Highlight selected tab
$(this).addClass('nav-tab-active');
-
+
// Show selected table
var table = $(this).attr('data-show-table');
$('#' + table).removeClass('glm-hidden');
-
+
if (table == 'glm-table-address') {
initMap();
}
-
+
});
-
- // Flash certain elements for a short time after display
+
+ // 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);
-
+
/*
* Check for bad input or input changes
*/
-
+
// Check for any field errors and if found change related tab to error color.
if ($('.glm-form-bad-input-general').length) {
$('#glm-settings-general').addClass('glm-bad-input-area');
}
-
+
// Check for most input changes
- $('input, textarea, select, checkbox').on( 'change', function() {
+ $('#package-setting-form').find('input, textarea, select, checkbox').on( 'change', function() {
glmPageUpdateRequired();
- });
+ });
/*
* Checks for leaving the page
*/
var glmSubmitRequired = false;
-
+
// Flag submit button when updates are required.
function glmPageUpdateRequired() {
- $('#updateSettings').addClass('glm-bad-input-area');
+ $('.updateSettings').addClass('glm-bad-input-area');
glmSubmitRequired = true;
}
- // When submit button is clicked, disable the beforeunload message
- $('#updateSettings').on('click', function() {
+ // When submit button is clicked, disable the before unload message
+ $('.updateSettings').on('click', function() {
glmSubmitRequired = false;
return true;
});
-
+
// If submit is required and we're leaving the page, alert the user
$(window).bind('beforeunload', function() {
if (glmSubmitRequired) {