diff --git a/modules/simplenews_demo/config/install/block.block.simplenewssubscription.yml b/modules/simplenews_demo/config/install/block.block.simplenewssubscription.yml new file mode 100644 index 0000000..5c6e329 --- /dev/null +++ b/modules/simplenews_demo/config/install/block.block.simplenewssubscription.yml @@ -0,0 +1,26 @@ +langcode: en +status: true +dependencies: + module: + - simplenews + theme: + - bartik +id: simplenewssubscription +theme: bartik +region: sidebar_first +weight: -7 +provider: null +plugin: simplenews_subscription_block +settings: + id: simplenews_subscription_block + label: 'Simplenews subscription' + provider: simplenews + label_display: visible + cache: + max_age: 0 + contexts: { } + newsletters: + default: default + message: 'Stay informed - subscribe to our newsletter.' + unique_id: dbbcae7b-bb10-4cf8-8c3d-61e4990109b5 +visibility: { } diff --git a/modules/simplenews_demo/config/install/block.block.simplenewssubscription_all.yml b/modules/simplenews_demo/config/install/block.block.simplenewssubscription_all.yml new file mode 100644 index 0000000..1de5260 --- /dev/null +++ b/modules/simplenews_demo/config/install/block.block.simplenewssubscription_all.yml @@ -0,0 +1,29 @@ +langcode: en +status: true +dependencies: + module: + - simplenews + theme: + - bartik +id: simplenewssubscription_all +theme: bartik +region: sidebar_first +weight: -7 +provider: null +plugin: simplenews_subscription_block +settings: + id: simplenews_subscription_block + label: 'Simplenews multiple subscriptions' + provider: simplenews + label_display: visible + cache: + max_age: 0 + contexts: { } + newsletters: + wekly_content_update: wekly_content_update + special_offers: special_offers + press_releases: press_releases + default: default + message: 'Stay informed - subscribe to our newsletters.' + unique_id: d74b88af-9f36-4c5b-8122-34538c6b172c +visibility: { } diff --git a/modules/simplenews_demo/config/install/simplenews.newsletter.press_releases.yml b/modules/simplenews_demo/config/install/simplenews.newsletter.press_releases.yml new file mode 100644 index 0000000..9584d31 --- /dev/null +++ b/modules/simplenews_demo/config/install/simplenews.newsletter.press_releases.yml @@ -0,0 +1,16 @@ +id: press_releases +name: 'Press releases' +description: 'This is the press release.' +format: plain +priority: 0 +receipt: 0 +from_name: '' +subject: '[[simplenews-newsletter:name]] [node:title]' +from_address: 'replace@example.org' +hyperlinks: 1 +new_account: none +opt_inout: double +weight: 0 +status: true +langcode: en +dependencies: { } diff --git a/modules/simplenews_demo/config/install/simplenews.newsletter.special_offers.yml b/modules/simplenews_demo/config/install/simplenews.newsletter.special_offers.yml new file mode 100644 index 0000000..f05e7b4 --- /dev/null +++ b/modules/simplenews_demo/config/install/simplenews.newsletter.special_offers.yml @@ -0,0 +1,16 @@ +id: special_offers +name: 'Special offers' +description: 'Special offers newsletter.' +format: plain +priority: 0 +receipt: 0 +from_name: '' +subject: '[[simplenews-newsletter:name]] [node:title]' +from_address: 'replace@example.org' +hyperlinks: 1 +new_account: none +opt_inout: double +weight: 0 +status: true +langcode: en +dependencies: { } diff --git a/modules/simplenews_demo/config/install/simplenews.newsletter.weekly_content.yml b/modules/simplenews_demo/config/install/simplenews.newsletter.weekly_content.yml new file mode 100644 index 0000000..9080307 --- /dev/null +++ b/modules/simplenews_demo/config/install/simplenews.newsletter.weekly_content.yml @@ -0,0 +1,16 @@ +id: wekly_content_update +name: 'Weekly content update' +description: 'Weekly content update newsletter.' +format: plain +priority: 0 +receipt: 0 +from_name: '' +subject: '[[simplenews-newsletter:name]] [node:title]' +from_address: 'replace@example.org' +hyperlinks: 1 +new_account: none +opt_inout: double +weight: 0 +status: true +langcode: en +dependencies: { } diff --git a/modules/simplenews_demo/simplenews_demo.info.yml b/modules/simplenews_demo/simplenews_demo.info.yml new file mode 100644 index 0000000..80e2519 --- /dev/null +++ b/modules/simplenews_demo/simplenews_demo.info.yml @@ -0,0 +1,9 @@ +description: Demo module for simplenews. +core: 8.x +dependencies: + - simplenews + - simplenews_scheduler +hidden: false +name: Simplenews demo +package: Simplenews +type: module diff --git a/modules/simplenews_demo/simplenews_demo.install b/modules/simplenews_demo/simplenews_demo.install new file mode 100644 index 0000000..52595d3 --- /dev/null +++ b/modules/simplenews_demo/simplenews_demo.install @@ -0,0 +1,197 @@ +rebuild(); + module_load_include('inc', 'simplenews', 'includes/simplenews.mail'); + + // Set the default values for test_address, from_address and from_name. + $site_mail = \Drupal::config('system.site')->get('mail'); + $site_name = \Drupal::config('system.site')->get('name'); + + // Init the demo newsletter. + $newsletters = Newsletter::loadMultiple(); + foreach ($newsletters as $newsletter) { + $newsletter->from_name = $site_name; + $newsletter->from_address = $site_mail; + $newsletter->save(); + } + + // add subscriber fields to the form display. + entity_get_form_display('simplenews_subscriber', 'simplenews_subscriber', 'default') + ->setComponent('field_first_name', array( + 'type' => 'string_textfield', + 'weight' => '2', + 'settings' => array( + 'size' => 60, + 'placeholder' => '' + ), + 'third_party_settings' => array(), + )) + ->setComponent('field_last_name', array( + 'type' => 'string_textfield', + 'weight' => '3', + 'settings' => array( + 'size' => 60, + 'placeholder' => '' + ), + 'third_party_settings' => array(), + )) + ->setComponent('field_city', array( + 'type' => 'string_textfield', + 'weight' => '4', + 'settings' => array( + 'size' => 60, + 'placeholder' => '' + ), + 'third_party_settings' => array(), + )) + ->save(); + + // Create some subscribers. + // Subscriber subscribed to only one newsletter. + simplenews_subscribe('a@example.com', $newsletters['special_offers']->id(), FALSE); + // Subscriber subscribed to all newsletters. + simplenews_subscribe('b@example.com', $newsletters['special_offers']->id(), FALSE); + simplenews_subscribe('b@example.com', $newsletters['press_releases']->id(), FALSE); + simplenews_subscribe('b@example.com', $newsletters['wekly_content_update']->id(), FALSE); + // Unsubscribed subscriber. + simplenews_subscribe('c@example.com', $newsletters['press_releases']->id(), FALSE); + simplenews_unsubscribe('c@example.com', $newsletters['press_releases']->id(), FALSE); + + // Create a demo user. + $demo_user = User::create(array( + 'name' => 'demo user', + 'mail' => 'demouser@example.com', + 'status' => FALSE, + )); + $demo_user->save(); + // subscribe user to both newsletters. + simplenews_subscribe($demo_user->getEmail(), $newsletters['press_releases']->id(), FALSE); + simplenews_subscribe($demo_user->getEmail(), $newsletters['special_offers']->id(), FALSE); + + // Create an issue for scheduled sending. + $scheduled_issue = Node::create(array( + 'type' => 'simplenews_issue', + 'id' => 'simplenews_issue_scheduled', + 'title' => 'Scheduled weekly content newsletter issue', + 'body' => 'Scheduled weekly content newsletter issue will be sent to subscribers every week', + 'uid' => 0, + 'status' => 1, + 'simplenews_issue' => 'wekly_content_update', + )); + $scheduled_issue->save(); + // Write a record for the demo newsletter scheduler configuration. + $nid = $scheduled_issue->id(); + $record = array( + 'nid' => $nid, + 'next_run' => strtotime('yesterday, 8:00'), + 'activated' => 1, + 'send_interval' => 'day', + 'interval_frequency' => 1, + 'start_date' => strtotime('yesterday, 8:00'), + 'stop_type' => 0, + 'stop_date' => 0, + 'stop_edition' => 0, + 'title' => '[node:title] - [node:created]', + ); + + // Update scheduler record. + db_merge('simplenews_scheduler') + ->key(array( + 'nid' => $nid, + )) + ->fields($record) + ->execute(); + + // A newsletter to send. + $node = Node::create(array( + 'type' => 'simplenews_issue', + 'id' => 'simplenews_issue_sent', + 'title' => 'Sent press releases', + 'body' => 'This press release is already sent to subscribers!', + 'uid' => 0, + 'status' => 1, + 'simplenews_issue' => array( + 'target_id' => 'press_releases', + 'handler' => 'simplenews_all', + 'handler_settings' => array() + ), + )); + $node->save(); + // Send the node. + simplenews_add_node_to_spool($node); + $node->save(); + // Send mails. + simplenews_mail_spool(); + // Run cron. + simplenews_cron(); + // Update send status of newsletter issues. + simplenews_send_status_update(); + + // Create a newsletter issues with different send status. + // Published newsletter, not yet sent. + $node = Node::create(array( + 'type' => 'simplenews_issue', + 'id' => 'simplenews_issue_pending', + 'title' => 'Pending special offers', + 'body' => 'Grab them while you can, limited availability! These offers can often only be available for a short time, so take advantage of these special prices while you can.', + 'uid' => 0, + 'status' => 1, + 'simplenews_issue' => array( + 'target_id' => 'press_releases', + 'handler' => 'special_offers', + 'handler_settings' => array() + ), + )); + $node->save(); + simplenews_issue_update_sent_status($node, SIMPLENEWS_STATUS_SEND_PENDING); + + // Unpublished newsletter. + $node = Node::create(array( + 'type' => 'simplenews_issue', + 'id' => 'simplenews_issue_unpublished', + 'title' => 'Unpublished press releases', + 'body' => 'Unpublished press releases body', + 'uid' => 0, + 'status' => 0, + 'simplenews_issue' => array( + 'target_id' => 'press_releases', + 'handler' => 'simplenews_all', + 'handler_settings' => array() + ), + )); + $node->save(); + simplenews_issue_update_sent_status($node, SIMPLENEWS_STATUS_SEND_PUBLISH); + + // Newsletter that is stopped sending. + $node = Node::create(array( + 'type' => 'simplenews_issue', + 'id' => 'simplenews_issue_stopped', + 'title' => 'Stopped special offers', + 'body' => 'Expired special offers!', + 'uid' => 0, + 'status' => 1, + 'simplenews_issue' => array( + 'target_id' => 'press_releases', + 'handler' => 'special_offers', + 'handler_settings' => array() + ), + )); + $node->save(); + simplenews_issue_update_sent_status($node, SIMPLENEWS_STATUS_SEND_NOT); +}