Как программно создать рассылку и отправить ее подписчикам с помощью модуля simplenews
11 сентября 2020
<?php $desc='На сайте доступен новый материал: <a href="'.$GLOBALS['base_url'].'/node/'.$node->nid.'">'.$node->title.'</a>'; $edit = new stdClass(); /* Создаём объект node */ $edit->type = 'simplenews'; /* Указываем тип материала */ node_object_prepare($edit); /* Подготавливаем объект ноды */ $edit->title = 'Новый материал: '.$node->title; /* Заголовок */ $edit->language = LANGUAGE_NONE; $edit->body[$edit->language][0]['value'] = $desc; $edit->body[$edit->language][0]['summary'] = ''; $edit->body[$edit->language][0]['format'] = 'full_html'; $tag=taxonomy_term_load(15); /* tid рассылки */ if($tag){ $edit->field_simplenews_term[$edit->language][0] = (array)$tag; } if($nd = node_submit($edit)) { node_save($nd); if($nd->nid){ // simplenews_issue_send(array($nd->nid)); // simplenews_add_node_to_spool($nd); $select = db_select('simplenews_subscriber', 's'); $select->innerJoin('simplenews_subscription', 't', 's.snid = t.snid'); $select->addField('s', 'mail'); $select->addField('s', 'snid'); $select->addField('t', 'tid'); $select->addExpression($nd->nid, 'nid'); $select->addExpression(SIMPLENEWS_SUBSCRIPTION_STATUS_SUBSCRIBED, 'status'); $select->addExpression(REQUEST_TIME, 'timestamp'); $select->condition('t.tid', $nd->simplenews->tid); $select->condition('t.status', SIMPLENEWS_SUBSCRIPTION_STATUS_SUBSCRIBED); $select->condition('s.activated', SIMPLENEWS_SUBSCRIPTION_ACTIVE); db_insert('simplenews_mail_spool')->from($select)->execute(); // Update simplenews newsletter status to send pending. simplenews_newsletter_update_sent_status($nd); } }?>