Index: admin_templates/mailing_lists/mailing_list_list.tpl =================================================================== --- admin_templates/mailing_lists/mailing_list_list.tpl (revision 15437) +++ admin_templates/mailing_lists/mailing_list_list.tpl (working copy) @@ -25,7 +25,7 @@ a_toolbar.AddButton( new ToolBarButton( - 'view_item', + 'edit', '::', edit ) @@ -74,6 +74,6 @@ \ No newline at end of file Index: install/install_schema.sql =================================================================== --- install/install_schema.sql (revision 15590) +++ install/install_schema.sql (working copy) @@ -1106,13 +1106,13 @@ MessageText longtext, MessageHtml longtext, `Status` tinyint(3) unsigned NOT NULL DEFAULT '1', - EmailsQueued int(10) unsigned NOT NULL DEFAULT '0', + EmailsQueuedTotal int(10) unsigned NOT NULL DEFAULT '0', EmailsSent int(10) unsigned NOT NULL DEFAULT '0', EmailsTotal int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (MailingId), KEY EmailsTotal (EmailsTotal), KEY EmailsSent (EmailsSent), - KEY EmailsQueued (EmailsQueued), + KEY EmailsQueued (EmailsQueuedTotal), KEY `Status` (`Status`), KEY PortalUserId (PortalUserId) ); Index: install/upgrades.sql =================================================================== --- install/upgrades.sql (revision 15593) +++ install/upgrades.sql (working copy) @@ -2861,3 +2861,5 @@ UPDATE Users SET PasswordHashingMethod = 1; INSERT INTO SystemSettings VALUES(DEFAULT, 'TypeKitId', '', 'In-Portal', 'in-portal:configure_advanced', 'la_section_Settings3rdPartyAPI', 'la_config_TypeKitId', 'text', NULL, NULL, 80.05, 0, 1, NULL); + +ALTER TABLE MailingLists CHANGE EmailsQueued EmailsQueuedTotal INT(10) UNSIGNED NOT NULL DEFAULT '0'; Index: units/mailing_lists/mailing_list_eh.php =================================================================== --- units/mailing_lists/mailing_list_eh.php (revision 15461) +++ units/mailing_lists/mailing_list_eh.php (working copy) @@ -263,12 +263,12 @@ function _ensureDefault($variable_name) { $value = $this->Application->ConfigValue($variable_name); - if ($value === false) { + if ( $value === false ) { // ensure default value, when configuration variable is missing return 10; } - if (!$value) { + if ( !$value ) { // configuration variable found, but it's value is empty or zero return false; } @@ -288,7 +288,7 @@ $where_clause = Array ( 'Status NOT IN (' . MailingList::CANCELLED . ',' . MailingList::PROCESSED . ')', - '(EmailsQueued < EmailsTotal) OR (EmailsTotal = 0)', + '(EmailsQueuedTotal < EmailsTotal) OR (EmailsTotal = 0)', '`To` <> ""', ); @@ -297,21 +297,23 @@ WHERE (' . implode(') AND (', $where_clause) . ') ORDER BY ' . $id_field . ' ASC'; $mailing_lists = $this->Conn->Query($sql, $id_field); - if (!$mailing_lists) { - return ; + + if ( !$mailing_lists ) { + return; } // queue 10 emails per step summary from all mailing lists (FIFO logic) $to_queue = $this->_ensureDefault('MailingListQueuePerStep'); - if ($to_queue === false) { - return ; + + if ( $to_queue === false ) { + return; } $mailing_list_helper = $this->Application->recallObject('MailingListHelper'); /* @var $mailing_list_helper MailingListHelper */ foreach ($mailing_lists as $mailing_id => $mailing_data) { - if ($mailing_data['EmailsTotal'] == 0) { + if ( $mailing_data['EmailsTotal'] == 0 ) { // no work performed on this mailing list -> calculate totals $updated_fields = $mailing_list_helper->generateRecipients($mailing_id, $mailing_data); $updated_fields['Status'] = MailingList::PARTIALLY_PROCESSED; @@ -320,8 +322,9 @@ $this->Conn->doUpdate($updated_fields, $table_name, $id_field . ' = ' . $mailing_id); } - $emails = unserialize( $mailing_data['ToParsed'] ); - if (!$emails) { + $emails = unserialize($mailing_data['ToParsed']); + + if ( !$emails ) { continue; } @@ -337,14 +340,15 @@ // remove processed emails from array $to_queue -= $process_count; // decrement available for processing email count array_splice($emails, 0, $process_count); + $updated_fields = Array ( 'ToParsed' => serialize($emails), - 'EmailsQueued' => $mailing_data['EmailsQueued'] + $process_count, + 'EmailsQueuedTotal' => $mailing_data['EmailsQueuedTotal'] + $process_count, ); - $mailing_data = array_merge($mailing_data, $updated_fields); + $this->Conn->doUpdate($updated_fields, $table_name, $id_field . ' = ' . $mailing_id); - if (!$to_queue) { + if ( !$to_queue ) { // emails to be queued per step reached -> leave break; } Index: units/mailing_lists/mailing_lists_config.php =================================================================== --- units/mailing_lists/mailing_lists_config.php (revision 15563) +++ units/mailing_lists/mailing_lists_config.php (working copy) @@ -48,7 +48,7 @@ 'mailing_list_list' => Array ( 'prefixes' => Array ('mailing-list_List'), 'format' => "!la_title_MailingLists!", - 'toolbar_buttons' => Array ('new_item', 'edit', 'delete', 'primary_theme', 'clone', 'view', 'dbl-click'), + 'toolbar_buttons' => Array ('new_item', 'edit', 'delete', 'cancel', 'view', 'dbl-click'), ), 'mailing_list_edit' => Array ( @@ -85,6 +85,12 @@ '' => ' SELECT %1$s.* %2$s FROM %1$s', ), + 'CalculatedFields' => Array ( + '' => Array ( + 'EmailsQueued' => 'CAST(%1$s.EmailsQueuedTotal AS SIGNED) - CAST(%1$s.EmailsSent AS SIGNED)', + ), + ), + 'ListSortings' => Array ( '' => Array ( 'Sorting' => Array ('MailingId' => 'desc'), @@ -123,11 +129,15 @@ 'not_null' => 1, 'required' => 1, 'default' => 1 ), - 'EmailsQueued' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), + 'EmailsQueuedTotal' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), 'EmailsSent' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), 'EmailsTotal' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), ), + 'VirtualFields' => Array ( + 'EmailsQueued' => Array ('type' => 'int', 'default' => 0), + ), + 'Grids' => Array ( 'Default' => Array ( 'Icons' => Array ('default' => 'icon16_item.png'),