function simplenews_count_spool in Simplenews 7.2
Same name and namespace in other branches
- 6.2 includes/simplenews.mail.inc \simplenews_count_spool()
- 6 simplenews.module \simplenews_count_spool()
- 7 includes/simplenews.mail.inc \simplenews_count_spool()
Count data in mail spool table.
Parameters
$conditions: (Optional) Array of conditions which are applied to the query. Defaults
Return value
Count of mail spool elements of the passed in arguments.
Related topics
6 calls to simplenews_count_spool()
- drush_simplenews_spool_count in ./
simplenews.drush.inc - Drush command to count the mail spool queue.
- drush_simplenews_spool_send in ./
simplenews.drush.inc - Drush command to send the mail spool queue.
- SimplenewsSendTestCase::testProgrammaticNewsletter in tests/
simplenews.test - Creates and sends a node using the API.
- simplenews_admin_issues in includes/
simplenews.admin.inc - Form builder: Builds a list of newsletters with operations.
- simplenews_mail_attempt_immediate_send in includes/
simplenews.mail.inc - Send mail spool immediatly if cron should not be used.
File
- includes/
simplenews.mail.inc, line 502 - Simplenews email send and spool handling
Code
function simplenews_count_spool(array $conditions = array()) {
// Continue to support 'nid' as a condition.
if (!empty($conditions['nid'])) {
$conditions['entity_type'] = 'node';
$conditions['entity_id'] = $conditions['nid'];
unset($conditions['nid']);
}
// Add default status condition if not set.
if (!isset($conditions['status'])) {
$conditions['status'] = array(
SIMPLENEWS_SPOOL_PENDING,
SIMPLENEWS_SPOOL_IN_PROGRESS,
);
}
$query = db_select('simplenews_mail_spool');
// Add conditions.
foreach ($conditions as $field => $value) {
if ($field == 'status') {
if (!is_array($value)) {
$value = array(
$value,
);
}
$status_or = db_or();
foreach ($value as $status) {
// Do not count pending entries unless they are expired.
if ($status == SIMPLENEWS_SPOOL_IN_PROGRESS) {
$status_or
->condition(db_and()
->condition('status', $status)
->condition('timestamp', simplenews_get_expiration_time(), '<'));
}
else {
$status_or
->condition('status', $status);
}
}
$query
->condition($status_or);
}
else {
$query
->condition($field, $value);
}
}
$query
->addExpression('COUNT(*)', 'count');
return (int) $query
->execute()
->fetchField();
}