From: Steve Sutton Date: Tue, 16 Aug 2016 17:11:40 +0000 (-0400) Subject: Setting up member packaging import script. X-Git-Tag: v1.1.14^2~8 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=3ec4ff5d68946f7610ef355116280af7e26db10a;p=WP-Plugins%2Fglm-member-db-packaging.git Setting up member packaging import script. This will pull all member packages from the old site and insert them. --- diff --git a/classes/data/dataPackages.php b/classes/data/dataPackages.php index 9eb0238..47f829c 100644 --- a/classes/data/dataPackages.php +++ b/classes/data/dataPackages.php @@ -208,7 +208,7 @@ class GlmDataPackages extends GlmDataAbstract 'pricing' => array ( 'field' => 'pricing', 'type' => 'text', - 'required' => true, + 'required' => false, 'use' => 'a' ), @@ -247,7 +247,7 @@ class GlmDataPackages extends GlmDataAbstract 'required' => true, 'use' => 'lged' ), - + // Title 'offsite_url' => array ( 'field' => 'offsite_url', @@ -352,4 +352,4 @@ class GlmDataPackages extends GlmDataAbstract } } -?> \ No newline at end of file +?> diff --git a/models/admin/management/packaging.php b/models/admin/management/packaging.php index 941fb24..a8c5577 100644 --- a/models/admin/management/packaging.php +++ b/models/admin/management/packaging.php @@ -14,7 +14,8 @@ */ // 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 @@ -39,7 +40,16 @@ class GlmMembersAdmin_management_packaging extends GlmDataPackagingManagement */ 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 @@ -78,84 +88,222 @@ class GlmMembersAdmin_management_packaging extends GlmDataPackagingManagement } + /** + * 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 = '
$_REQUEST: ' . print_r( $_REQUEST, true ) . '
'; + $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("  /models/admin/management/packaging.php: Unable to load packaging management settings.", 'Alert'); - } + if ( $packageSettings === false ) { + if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) { + glmMembersAdmin::addNotice( '  /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 '
$e: ' . print_r($e, true) . '
'; + 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 '

Adding ' . $package_count . ' packages

'; } } - -?> \ No newline at end of file diff --git a/views/admin/management/packaging.html b/views/admin/management/packaging.html index 900c3f6..cd325ec 100644 --- a/views/admin/management/packaging.html +++ b/views/admin/management/packaging.html @@ -1,20 +1,21 @@ {include file='admin/management/header.html'} - -
+ + - + - + - +
+
Package Detail Page Permalink Name: @@ -22,8 +23,9 @@ {if $packagingSettings.fieldFail.canonical_package_page}

{$packagingSettings.fieldFail.canonical_package_page}

{/if}
- + @@ -56,16 +58,16 @@ - - + @@ -91,10 +93,11 @@
Show Member Address:
Address Options: + - - - + + +
Show Member Street:
Show Member Second Address:
Show Member City, State and Zip
Show Member Country:
Show Member Region
Show Member City, State and Zip
Show Member Country:
Show Member Region
Show Member Phone Number:
Show Member Toll Free Number:
Show Member E-mail:
- + + - + @@ -105,15 +108,15 @@ - - + @@ -132,73 +135,118 @@
Show Member Address:
Address Options: + - - - + + +
Show Member Street:
Show Member City, State and Zip
Show Member Country:
Show Member Region
Show Member City, State and Zip
Show Member Country:
Show Member Region
Show Member Phone Number:
Show Member Toll Free Number:
Show Member E-mail:
- + + - - - + + +
- + +
+ + + + + {if $importResults} + + {else} + + + + + + + + + + + + + + + + + + + + + + {/if} +
{$importResults}
Database Server: + +
Database Name: + +
Database User: + +
Base Image URL: + +
Reset database Before Import: + +
+ +
+