Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions classes/cjwnewslettercsvparser.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,27 @@ function __construct( $csvFileName, $delimiter = ';' , $firstRowIsLabel = true,
{
$firstRowTmp = fgetcsv( $fp, 1000, $delimiter );
$c++;
$firstRow = array();
foreach ( $csvFieldMappingArray as $key => $item )
{
$firstRow[array_search($item, $firstRowTmp)] = $item;
}
}

// Loop file
while ( ( $row = fgetcsv( $fp, 1000, $delimiter )) !== FALSE )
{
for ( $i=0; $i < count( $firstRow ); $i++ )
foreach ( $firstRow as $key => $item )
{
if ( array_key_exists( $i, $row ) )
if ( array_key_exists( $key, $row ) )
{
if ( $utf8Encode !== FALSE )
{
$rowArray[ $c ] [ $firstRow[$i] ] = utf8_encode( $row[ $i ] );
$rowArray[ $c ] [ $item ] = utf8_encode( $row[ $key ] );
}
else
{
$rowArray[ $c ] [ $firstRow[$i] ] = $row[ $i ];
$rowArray[ $c ] [ $item ] = $row[ $key ];
}
}
}
Expand Down
9 changes: 9 additions & 0 deletions design/admin2/templates/cjw_newsletter_list_children.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,15 @@
edition_node_list_count = $children_count
show_actions_colum = true()}

<div class="context-toolbar subitems-context-toolbar">
{include name = 'Navigator'
uri = 'design:navigator/google.tpl'
page_uri = $node.url_alias
item_count = $children_count
view_parameters = $view_parameters
item_limit = $number_of_items}
</div>

{def $viewmode_newsletter=true()}

{* Else: there are no children. *}
Expand Down
2 changes: 1 addition & 1 deletion design/standard/templates/newsletter/subscription_list.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@
<input class="button" type="submit" name="importcsv" value="{'Import CSV'|i18n( 'cjw_newsletter/subscription_list' )}" title="{'Import contact from CSV file.'|i18n( 'cjw_newsletter/newsletter_list_subscription' )}" />
</form>

<form name="CsvExport" method="post" action={$uri_csv_export|ezurl} style="display:inline">
<form name="CsvExport" method="post" action={if $status}{concat($uri_csv_export,'/(status)/',$status)|ezurl}{else}{$uri_csv_export|ezurl}{/if} style="display:inline">
<input class="button" type="submit" name="importcsv" value="{'Export CSV'|i18n( 'cjw_newsletter/subscription_list' )}" title="{'Export to CSV file.'|i18n( 'cjw_newsletter/newsletter_list_subscription' )}" />
</form>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<div class="newsletter newsletter-subscription_list_csvexport">

<form enctype="multipart/form-data" name="subscription_csvexport" method="post" action={$base_uri|ezurl}>
<form enctype="multipart/form-data" name="subscription_csvexport" method="post" action={if $status|ne('')}{concat($base_uri,'/(status)/',$status)|ezurl}{else}{$base_uri|ezurl}{/if}>

<div class="context-block">
{* DESIGN: Header START *}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,9 @@ list all blacklist items
<th class="tight">
{'Email ok'|i18n( 'cjw_newsletter/subscription_list_csvimport' )}
</th>
<th class='tight'>
{'Statut'|i18n( 'cjw_newsletter/subscription_list_csvimport' )}
</th>
<th class="tight">
{'Nl user created'|i18n( 'cjw_newsletter/subscription_list_csvimport' )}
</th>
Expand Down Expand Up @@ -367,6 +370,23 @@ list all blacklist items
{$email_ok|wash()}
{/if}
</td>
<td title="status {$user_status_old|wash()} -new: {$user_status_new|wash()}">
{if $data_set.s_status|eq( '1' )}
<b>{'Created'|i18n( 'cjw_newsletter/subscription_list_csvimport' )}</b>
{elseif $data_set.s_status|eq( '2' )}
<b>{'Updated'|i18n( 'cjw_newsletter/subscription_list_csvimport' )}</b>
{elseif $data_set.s_status|eq( '0' )}
<b>{'Pending'|i18n( 'cjw_newsletter/subscription_list_csvimport' )}</b>
{elseif $data_set.s_status|eq( 3 )}
<b>{'Removed by user'|i18n( 'cjw_newsletter/subscription/status' )}</b>
{elseif $data_set.s_status|eq( 4 )}
<b>{'Removed by admin'|i18n( 'cjw_newsletter/subscription/status' )}</b>
{elseif $data_set.s_status|eq( 8 )}
<b>{'Blacklisted'|i18n( 'cjw_newsletter/subscription/status' )</b>
{else}
{$user_created|wash()}
{/if}
</td>
<td title="status old: {$user_status_old|wash()} -new: {$user_status_new|wash()}">
{if $user_created|eq( '1' )}
<b>{'created'|i18n( 'cjw_newsletter/subscription_list_csvimport' )}</b>
Expand Down Expand Up @@ -461,4 +481,4 @@ list all blacklist items
</div>
</form>

</div>
</div>
1 change: 1 addition & 0 deletions modules/newsletter/module.php
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@
'script' => 'subscription_list_csvexport.php',
'functions' => array( 'subscription_list_csvexport' ),
'default_navigation_part' => 'eznewsletternavigationpart',
'unordered_params' => array( 'status' => "Status" ),
'params' => array( 'NodeId' ) );


Expand Down
92 changes: 85 additions & 7 deletions modules/newsletter/subscription_list_csvexport.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
include_once( 'kernel/common/template.php' );

$module = $Params['Module'];
$Status = getStatusFromString($Params['Status']);

$http = eZHTTPTool::instance();
$nodeId = (int) $Params['NodeId'];

Expand Down Expand Up @@ -73,7 +75,7 @@
* CSV Preview
*/
// preview for csv data export, fetch data with limit
$arrPreviewCsvData = getDataForCsv( $listContentObjectId, 10, $module );
$arrPreviewCsvData = getDataForCsv( $listContentObjectId, 10, $module, $Status );

// create csv string for preview

Expand Down Expand Up @@ -110,7 +112,7 @@
* Export
*/
// fetch data
$arrCsvData = getDataForCsv( $listContentObjectId, 0, $module );
$arrCsvData = getDataForCsv( $listContentObjectId, 0, $module, $Status );

if ( $arrCsvData !== FALSE )
{
Expand Down Expand Up @@ -142,6 +144,7 @@

$tpl = eZTemplate::factory();
$tpl->setVariable( 'view_parameters', $viewParameters );
$tpl->setVariable( 'status', getStatusFromInt($Status) );
$tpl->setVariable( 'list_node', $listNode );
$tpl->setVariable( 'csv_delimiter', $delimiter );
$tpl->setVariable( 'arr_tables', $arrTables );
Expand Down Expand Up @@ -175,7 +178,7 @@
* @param integer $listContentObjectId
* @return array with data
*/
function getDataForCsv( $listContentObjectId, $limit = 0, $module = false )
function getDataForCsv( $listContentObjectId, $limit = 0, $module = false, $Status = -1 )
{
if ( isset( $listContentObjectId ) )
{
Expand Down Expand Up @@ -210,10 +213,15 @@ function getDataForCsv( $listContentObjectId, $limit = 0, $module = false )
s.output_format_array_string

FROM cjwnl_subscription s, cjwnl_user u
WHERE s.list_contentobject_id=$listContentObjectId
AND s.newsletter_user_id=u.id
$qryLimit";
WHERE s.list_contentobject_id=$listContentObjectId";

if($Status != -1)
{
$qryGetData .= " AND s.status=$Status";
}

$qryGetData .= " AND s.newsletter_user_id=u.id
$qryLimit";
// execute query
$resQryGetData = $db->arrayQuery( $qryGetData );

Expand All @@ -235,4 +243,74 @@ function getDataForCsv( $listContentObjectId, $limit = 0, $module = false )
}
}
}
?>

/**
* get status code from string
*
* @param string
* @return int
*/
function getStatusFromString($Status)
{
if(!empty($Status)) {
switch ($Status) {
case 'pending':
return CjwNewsletterSubscription::STATUS_PENDING;
break;
case 'confirmed':
return CjwNewsletterSubscription::STATUS_CONFIRMED;
break;
case 'approved':
return CjwNewsletterSubscription::STATUS_APPROVED;
break;
case 'bounced':
return CjwNewsletterSubscription::STATUS_BOUNCED_HARD;
break;
case 'removed':
return CjwNewsletterSubscription::STATUS_REMOVED_SELF;
break;
case 'blacklisted':
return CjwNewsletterSubscription::STATUS_BLACKLISTED;
break;
default:
return null;
break;
}
}
}

/**
* get string from status code
*
* @param integer
* @return string
*/
function getStatusFromInt($Status)
{
if($Status>=0) {
switch ($Status) {
case CjwNewsletterSubscription::STATUS_PENDING:
return 'pending';
break;
case CjwNewsletterSubscription::STATUS_CONFIRMED:
return 'confirmed';
break;
case CjwNewsletterSubscription::STATUS_APPROVED:
return 'approved';
break;
case CjwNewsletterSubscription::STATUS_BOUNCED_HARD:
return 'bounced';
break;
case CjwNewsletterSubscription::STATUS_REMOVED_SELF:
return 'removed';
break;
case CjwNewsletterSubscription::STATUS_BLACKLISTED:
return 'blacklisted';
break;
default:
return "";
break;
}
}
}
?>
33 changes: 29 additions & 4 deletions modules/newsletter/subscription_list_csvimport.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@
$csvFieldMappingArray = array( 'email' => '',
'first_name' => '',
'last_name' => '',
'salutation' => '' );
'salutation' => '',
's_status' => '');

if ( $cjwNewsletterIni->hasVariable( 'NewsletterCsvImportSettings', 'CsvFieldMappingArray' ) )
{
Expand Down Expand Up @@ -266,6 +267,10 @@
$customDataText4 = '';
if( isset( $item[ 'custom_data_text_4' ] ) )
$customDataText4 = $item[ 'custom_data_text_4' ];

$s_status = '';
if ( isset( $item[ 's_status' ] ) )
$s_status = $item[ 's_status' ];

$eZUserId = false;
$newsletterUserId = 0;
Expand Down Expand Up @@ -377,7 +382,14 @@
if ( $customDataText4 != '' )
$userObject->setAttribute( 'custom_data_text_4', $customDataText4 );

$userObject->setAttribute( 'status', CjwNewsletterUser::STATUS_CONFIRMED );
if ( $s_status == '4' )
{
$userObject->setAttribute( 'status', CjwNewsletterUser::STATUS_REMOVED_ADMIN);
} else
{
$userObject->setAttribute( 'status', CjwNewsletterUser::STATUS_CONFIRMED);
}

$userObject->setAttribute( 'import_id', $importId );

// set new remote_id
Expand Down Expand Up @@ -443,8 +455,15 @@
// 2 - update
$createNewSubscription = 2;
$subscriptionObject = $existingSubscription;

$subscriptionObject->setAttribute( 'status', CjwNewsletterSubscription::STATUS_APPROVED );

if ( $s_status == '4' )
{
$subscriptionObject->setAttribute( 'status', CjwNewsletterSubscription::STATUS_REMOVED_ADMIN );
}
else
{
$subscriptionObject->setAttribute( 'status', CjwNewsletterSubscription::STATUS_APPROVED );
}
$subscriptionObject->setAttribute( 'import_id', $importId );
// set new remote_id
$subscriptionObject->setAttribute( 'remote_id', 'cjwnl:csvimport:'. CjwNewsletterUtils::generateUniqueMd5Hash( $newsletterUserId . $importId ) );
Expand All @@ -460,6 +479,12 @@
$newsletterUserId,
$outputFormatArray,
CjwNewsletterSubscription::STATUS_APPROVED );

if ( $s_status == '4' )
{
$newListSubscription->setAttribute( 'status', CjwNewsletterSubscription::STATUS_REMOVED_ADMIN );
}

$newListSubscription->setAttribute( 'import_id', $importId );
// set new remote_id
$newListSubscription->setAttribute( 'remote_id', 'cjwnl:csvimport:'. CjwNewsletterUtils::generateUniqueMd5Hash( $newsletterUserId . $importId ) );
Expand Down
2 changes: 1 addition & 1 deletion settings/cjw_newsletter.ini
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ AvailableFilterTypeClassArray[]=CjwNewsletterFilterTypeEmail
# , ; \t |
DefaultCsvDelimiter=;
# true or false
DefaultFirstRowIsLabel=false
DefaultFirstRowIsLabel=true
# true or false
DefaultUtf8Encode=true

Expand Down