function campaignmonitor_admin_settings_lists in Campaign Monitor 7
Same name and namespace in other branches
- 8 includes/campaignmonitor_lists.admin.inc \campaignmonitor_admin_settings_lists()
Builds an overview table with basic information about the list.
Adds action links that can be used to update/delete lists.
Return value
string Rendered output.
1 string reference to 'campaignmonitor_admin_settings_lists'
- campaignmonitor_menu in ./
campaignmonitor.module - Implements hook_menu().
File
- includes/
campaignmonitor_lists.admin.inc, line 16 - Manage the different Campaign Monitor lists.
Code
function campaignmonitor_admin_settings_lists() {
$account = variable_get('campaignmonitor_account', FALSE);
if (!$account) {
drupal_set_message(t('You have not entered your account information yet, hence lists from Campaign Monitor can not be downloaded.'), 'error');
return '';
}
// Download list information from Campaign Monitor.
$cm = CampaignMonitor::getConnector();
$lists = $cm
->getLists();
$error = $cm
->getLatestError();
if ($error['code'] != 1) {
drupal_set_message($error['message'], 'error');
}
$header = [
[
'data' => t('Title'),
'field' => 'title',
'sort' => 'asc',
],
[
'data' => t('List ID'),
'field' => 'id',
],
[
'data' => t('Subscribed / Unsubscribed'),
'field' => 'status',
],
[
'data' => t('Operations'),
'field' => 'Operations',
],
];
$rows = [];
if ($lists) {
foreach ($lists as $id => $list) {
// Define supported operations.
$operations = [
'Edit' => l(t('Edit'), 'admin/config/services/campaignmonitor/lists/' . $id . '/edit', [
'query' => [
'token' => drupal_get_token(),
],
]),
'Delete' => l(t('Delete'), 'admin/config/services/campaignmonitor/lists/' . $id . '/delete', [
'query' => [
'token' => drupal_get_token(),
],
]),
];
// Load local list options.
$list_options = variable_get('campaignmonitor_list_' . $id, []);
if (isset($list_options['status']['enabled']) && !$list_options['status']['enabled']) {
// Add enable operation.
$class = 'campaignmonitor-list-disabled';
$operations['enable'] = l(t('Enable'), 'admin/config/services/campaignmonitor/lists/' . $id . '/enable', [
'query' => [
'token' => drupal_get_token(),
],
]);
}
else {
// Add disable operation.
$class = 'campaignmonitor-list-enabled';
$operations['disable'] = l(t('Disable'), 'admin/config/services/campaignmonitor/lists/' . $id . '/disable', [
'query' => [
'token' => drupal_get_token(),
],
]);
}
// Allow other modules to add more operations.
drupal_alter('campaignmonitor_operations', $operations);
$stats = $cm
->getListStats($id);
$rows[] = [
'data' => [
$list['name'],
$id,
$stats['TotalActiveSubscribers'] . ' / ' . $stats['TotalUnsubscribes'],
implode(' ', $operations),
],
'class' => [
'class' => $class,
],
];
}
}
// Theme the information as a table.
$html = theme('table', [
'header' => $header,
'rows' => $rows,
'sticky' => TRUE,
'empty' => t('Lists not found or not yet created...'),
]);
// Add a pager to the table, for sites that have a great many lists.
$html .= theme('pager', [
'tags' => [],
]);
// Give it some styling.
drupal_add_css(drupal_get_path('module', 'campaignmonitor') . '/css/campaignmonitor.admin.css');
return $html;
}