-
Notifications
You must be signed in to change notification settings - Fork 2
/
README.txt
executable file
·1255 lines (1064 loc) · 66.1 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=== Eighty/20 Results - Sequences ===
Contributors: eighty20results
Tags: sequence, drip feed, serial content, delayed, limited, memberships, paid memberships pro, sequences, pmpro series
Requires at least: 3.9
Tested up to: 5.0.3
Stable tag: 4.7
Create a drip feed "Sequence" which are groups of posts/pages/CPTs where the content is revealed to members over time.
Requires PHP 5.4 or later.
== Description ==
This plugin currently requires Paid Memberships Pro by Stranger Studios, LLC. It is replacement for the "drip feed
content" module for Paid Memberships Pro (pmpro-series).
I needed a drip-content plugin that supported different delay type options, paginated lists of series posts, a way
to let a user see an excerpt of the page/post, support a user defined custom post type, etc, etc, so I wound up
with something completely different from PMPro Series. At this point, there's really nothing left of the
original PMPro Series Add-on in this plugin.
== Features ==
* Configuration UI for the drip feed sequence (settings meta box)
* Add the post/page you're editing to a sequence without leaving the Post/Page editor.
* Extend support to other post types (CTPs) using filter
* The plugin is translatable (I18N support)
* [sequence_list] shortcode with attributes for paginated sequence list
* [e20r_available_on] shortcode to prevent visibility of the content placed between [e20r_available_on] and [/e20r_available_on], until a specific date, or until a certain number of days after the users membership started.
* [sequence_alert] shortcode to display opt-in form for user to receive new sequence content alert emails.
* Excerpt widget for current users's most recently available post (display post title & excerpt in widget).
* Multiple delay values for the one post ID (i.e. repeating alerts & display in sequence lists)
* Configurable sort order when listing sequence content
* Show or hide future (upcoming) posts in a drip-feed sequence listing
* ("show" means all post titles for the sequence will be visible to the user with a configurable view of date or day of membership for availability).
* Independent schedules (using WP-Cron) for sending new content alert emails to users.
* Default global schedule for sending new content alert emails to users.
* Use either absolute dates or "days since membership started" as delay value for post(s) in a sequence.
* Hide "You are on day XXX of your membership" notice when displaying sequence page.
* Show "delay time" as "days since membership started" or "calendar date" to end-user in sequence post lists.
* Admin configurable setting to show "post available on" as a "day of membership" or a date.
* Uses templates for email alerts for new content
* Allows 'preview' of upcoming posts in the sequence (Lets the admin/editor send alerts for "today" while letting the user read/view upcoming content in the sequence - used in coaching programs, for instance).
* Filters to simplify integration with other membership frameworks/content restriction frameworks
* Supports automatic conversion of existing PMPro Series to sequences on init (filter based)
* When deleting a sequence, it will clean up after itself (remove sequence related postmeta from member posts).
* Numerous filters and hooks. (See the table for overview of some of the available hooks)
See ./email/README.txt for information on templates for the email alerts.
[***] => Add the following line to your theme's functions.php file to support excerpts for WP pages as well:
add_post_type_support( 'page', 'excerpt' );
== Installation ==
1. Upload the `e20r-sequences` directory to the `/wp-content/plugins/` directory of your site.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Navigate to the Sequences menu in the WordPress dashboard to create a new sequence.
4. Add posts to sequence using the "Posts in this Sequences" meta box on the sequence editor page, or add it to the actual post/page via the metabox on the top right of that screen.
== TODO ==
* Add support for admin selected definition of when "Day 1" of content drip starts (i.e. "Immediately", "at midnight the date following the membership start", etc)
== Known Issues ==
* If you started with this plugin on one of the V2.x versions, you *must* deactivate and then activate this plugin to convert your sequences to the new metadata formats. (Won't fix)
* The conversion to the V3 metadata format disables the 'Send alerts' setting, so remember to re-enable it after you've re-enabled the plugin. (Won't fix)
* Format for "Posts in sequence" metabox only partially handles responsive screens well - Fix underway
For more, see the [Issues section](https://github.com/eighty20results/e20r-sequences/issues) for the plugin on Github.com
== DEBUG ==
To enable logging for this plugin, define WP_DEBUG as 'true' in wp-config.php (`define('WP_DEBUG', true);`)
A LOT of data/log info will be dumped into wp-content/uploads/e20r-sequences/debug_log.txt.
== About the email alert templates ==
These templates are standard HTML files and need to have .html as their extension. By default, we have included two template files, one template is for the scenario where you want to send one alert per new post available that day. The other is a digest approach where we include a link of posts that were made available for the sequence and user that day.
The alert templates support a few variables that it can substitute:
`!!name!!` - The First Name for the user as defined in their profile
`!!sitename!!` - A filtered variable containing the name of the site (default: is the option 'blogname' as defined in the Site settings).
`!!post_link!!` - Either an <a href> tag (if configured to send one message per new post) or an unordered list of <a href> entries for each of the posts made available that day (depending on settings).
`!!post_url!!` - The URL to the available post (only available when configured to send one alert per newly available post/page for the user).
`!!today!!` - The date for when the user is supposed to get access to the specified post/page in the sequence (i.e. membership startdate + delay value)
`!!excerpt!!` - The excerpt from the post/page containing the content we're sending a reminder about.
`!!ptitle!!` - The title of the post/page we're sending the alert about.
=== Adding new templates ===
The plugin will search the directory of the currently active theme for the `sequence-email-alerts` directory.
If found, it will load any .html files and add them to the Sequence Settings under the "Template" settings
drop-down (at the top of the list) for all new and defined sequences.
These template files support all standard HTML elements.
A template file _must_ end with the .html extension or it will not be located by the settings metabox.
Whether or not the template file contains any of the replaceable variables is entirely optional.
_Note_: *As of v4.3.x*, the admin can define any substitutions they would like in the template, and apply the 'e20r-sequence-email-substitution-fields' filter to do the "dirty work". The substitutions will be executed before the email gets sent to the user. Also new in 4.3 is the fact that all of the above listed substitution variables have filters (See the sources/table of hooks for information on the filters).
All field names need to be wrapped in dual "bang" characters ('!'). However, when specifying the substitution variable it's done without any '!!' characters. I.e. '!!post_url!! becomes `'post_url' => "http://example.com/my-post-name"` in the substitution array.
== Shortcode attributes
=== [sequence_links] ===
This shortcode can be placed on any page or post. It will load a paginated list of links to the available posts or
pages that are managed by the specified sequence. This list will respect the "what-to-show" settings in the back-end
definiton for the sequence.
The following attributes may be used, unless they have the "Required" keyword next to it. Then you _have_ to set it.
* id - The ID (page ID or Post ID) of the sequence to list links for. (Required)
* pagesize - The number of links to list per page in the paginated list. Default: 30
* title = Override the title for the list of links (i.e. what you've named the sequence in the back-end). Default: N/A
* button = Whether to display a button for the user to click in order to access the page/post. Default: 'false'
* highlight = Whether to highlight the most recent/current post or page in the list of links. Default: 'false'
* scrollbox = Whether to wrap the list in a scrollable <div> box. Default: 'false'
Example 1:
[sequence_links id="4" pagesize="20" title="My Sequence Links" button="true" highlight="true" scrollbox="true"]
=== [sequence_alert] ===
This shortcode can be placed on any page or post and will load a checkbox allowing the logged-in user to opt in, or
out of receiving email alerts about new content.
The following attribute is required:
* sequence_id - The ID of the sequence (post ID) to associate this opt-in with.
Example 1:
[sequence_alert sequence_id="4"]
=== [e20r_available_on] ===
This shortcode is designed to prevent visibility of the content between [e20r_available_on] and [/e20r_available_on]
until the specified "when" attribute value has been exceeded by the currently logged in user. If the "when" value is
specified as a number of days (i.e. purely numeric value like: 1, 100, 10, etc), users who are not logged in to your
site will not see the content between the shortcode blocks at all. If the "when" value is specified in a valid date
format, as defined by the PHP strtotime() function, any viewer of your site will be given access to the content between
the shortcode blocks unless you're using some other means to prevent access.
NOTE: This shortcode does *NOT* require a sequence to exist in order to function.
The following attribute can be used with the shortcode:
* when - A valid date format, or the number of days since the start date for membership level of the currently logged in user
Example 1:
[e20r_available_on when="01-01-2016"]
This content will be visible on January 1st, 2016. It does not matter whether the viewer is a member or not. They will see
this content on/after January 1st, 2016.
[/e20r_available_on]
Example 2:
[e20r_available_on when="10"]
This content will be visible 10 or more days after the start date of the current membership level for the logged in user.
If they are not members of your site, they will *not* see this content
[/e20r_available_on]
== Frequently Asked Questions ==
= I found a bug in your plugin. =
Please post it in the [issues section](https://github.com/eighty20results/e20r-sequences/issues) of GitHub and we'll fix it as soon as we can. Thanks for helping.
Or you can email [email protected]
== Changelog ==
== 4.7 ==
* ENHANCEMENT: Use Gutenberg editor for the Sequence Custom Post Type (when editing a sequence)
* BUG FIX: Didn't handle exceptions when adding a post/page/cpt to a sequence
* BUG FIX: Didn't handle exceptions when listing sequence content
* BUG FIX: Incorrect PHPDoc block for Controller::find_closest_post() and Controller::get_membership_level_for_user()
* BUG FIX: Didn't always load the associated files for the Select2 library version we're using
* BUG FIX: Update Select2 library to v4.0.5
* BUG FIX: Added 'Post/Page' to message returned when removing a post/page from the sequence
* BUG FIX: Add/Edit Posts metabox didn't size the post/page list correctly
* BUG FIX: JS error when updating/removing posts/pages from sequence in Sequence CPT editor
* BUG FIX: Accessibility update (color contrast) for Posts in Sequence metabox
== 4.6.14 ==
* BUG FIX: Revert Gutenberg support in sequences (broken)
* BUG FIX: Updated Copyright notices
== 4.6.13 ==
* BUG FIX: Adding basic support for Sequences in Gutenberg
* BUG FIX: Not escaping Subject properly
* BUG FIX: create_function() is deprecated. Using anonymous function instead (for now)
== 4.6.12 ==
* BUG FIX: PHP Notice when post ID isn't found
* BUG FIX: Ensure we're not actively looking for post ID 0 (we know there's no post, so nothing to find)
* BUG FIX: PHP Warning in Sequence_Updates class
== 4.6.11 ==
* BUG FIX: Didn't show Drip Feed Settings metabox for all post types it was configured for
* BUG FIX: PHP Notice when post ID isn't found
* ENHANCEMENT: Add support for using custom subject and links in notices
* ENHANCEMENT: Didn't apply the e20r-sequence-alert-message-post-title filter to the Email Subject
== 4.6.8 ==
* BUG FIX: Logic for testing metadata version was invalid
* BUG FIX: Didn't save the Preview offset value correctly
* BUG FIX: Element ID collision for offset value vs checkbox for Preview Offset setting
== 4.6.7 ==
* BUG FIX: Incorrectly assumed a new sequence had to be converted to v3 in v3+.
* BUG FIX: Would incorrectly request reactivation for metadata conversion
* BUG FIX: Didn't display the sequence preview offset value setting when configured
* ENHANCEMENT/FIX: Warning message for empty sequences on initial load
== 4.6.6 ==
* BUG FIX: Formatting for no-access messages
== 4.6.5 ==
* ENHANCEMENT/FIX: Only show info about when post can be accessed in certain situations
== 4.6.4 ==
* BUG FIX: Cache timeout fixes
* BUG FIX: find_by_id() method didn't always return the correct post(s)
* ENHANCEMENT/FIX: Didn't use cached data when loading the page view
* ENHANCEMENT: Simplified Cache handling
* ENHANCEMENT: Reduced timeout for cache
* ENHANCEMENT: Use Cache class to manage sequence post/page cache
* ENHANCEMENT: WP Style updates/formatting of Sequence_Controller class
* ENHANCEMENT: Simplified & improved post cache (adding Cache / Cache_Object class)
== 4.6.3 ==
* BUG FIX: PHP Warning in Post_Widget class
* BUG FIX: Restore access control filter
* BUG FIX: Restore access control filter for unprotected individual posts/pages that are in a sequence
* BUG FIX: Didn't provide link to checkout page for sequence protected posts in the 'required membership' section
* BUG FIX: Properly handle multiple sequences for a post/page in denied access text
* BUG FIX: PHP warning in membership access filter handler
* ENHANCEMENT: Can replace the 'members'/'membership(s)' text in Restricted content warning for Sequences with gettext filter magic
== 4.6.2 ==
* BUG FIX: Too many columns in current post listing table for sequence
== 4.6.1 ==
* BUG FIX: PHP Warnings from Sequence_Links class/shortcode
== 4.6.0 ==
* BUG FIX: Showing HTML for header in sequence listing
* BUG FIX: Didn't consistently adhere to the shortcode attributes for the Sequence Links
* BUG FIX: Start date calculation failed for some users
* BUG FIX: Access check for posts would sometimes yield unexpected result
* ENHANCEMENT/FIX: Entry row formatting for post in sequence on front-end
* ENHANCEMENT: Add support for using featured image of post/page as the thumbnail in the sequence specific post listing(s)
* ENHANCEMENT: Add 'show featured image in post list' setting for sequence
* ENHANCEMENT: More clearly highlighted 'closest post' in sequence post listing if it's a future post
* ENHANCEMENT: Update class name & loading methods for Available_On class
* ENHANCEMENT: Update Class name for E20R_Mail class
* ENHANCEMENT: Renamed Cron class file to class.cron.php
* ENHANCEMENT: Updated license text
* ENHANCEMENT: Clean up unused namespace definitions in Sequence_Alert class
* ENHANCEMENT: Refactor Sequence_Alert class for simplified class loader
* ENHANCEMENT: Support simplified auto_loader function (rename class file for Sequence_Updates)
* ENHANCEMENT: Simplified namespaces for Sequence_Updates class
* ENHANCEMENT: Move PMPro Series import to own class
* ENHANCEMENT: Simplified namespaces for 4.4.0 upgrade function
* ENHANCEMENT: Simplified namespaces for 4.4.11 upgrade function
* ENHANCEMENT: Support simplified auto_loader function (rename class file for Sequence_Views)
* ENHANCEMENT: Simplified namespaces for Sequence_Views
* ENHANCEMENT: WordPress code style improvements in Sequence_Views
* ENHANCEMENT: Renamed class from Views to Sequence_Views
* ENHANCEMENT: Add show/hide future posts for Administrators setting
* ENHANCEMENT: Clean up namespaces for Controller/Sequence_Controller class
* ENHANCEMENT: Relocate license text & update year in Controller/Sequence_Controller class
* ENHANCEMENT: Rename Controller class to Sequence_Controller
* ENHANCEMENT: Rename class-controller.php to class.sequence-controller.php
* ENHANCEMENT: WordPress style update
* ENHANCEMENT: Simplify namespace for E20R_Mail class
* ENHANCEMENT: Update code to better align w/WordPress style requirements in E20R_Mail class
* ENHANCEMENT: Remove unused loader file in build script
* ENHANCEMENT: Consolidate plugin load functionality
* ENHANCEMENT: Clean up namespace & constants
* ENHANCEMENT/FIX: Make all text translatable for PostWidget
* ENHANCEMENT: Rename class file for new auto-loader method for PostWidget class
* ENHANCEMENT: Make PostWidget class more WordPress code style compliant
* ENHANCEMENT: Add license info in Available_On class
* ENHANCEMENT: Simplify namespace for Available_On class/shortcode
* ENHANCEMENT: Update code to better align w/WordPress style requirements in Available_On class
* ENHANCEMENT: Add warning banner syles for front-end
* ENHANCEMENT: Add ability to display warning banner on front-end
* ENHANCEMENT: Rename view_sequence_id_required() to view_sequence_error() in Sequence_Views class
* ENHANCEMENT: Add support for warning banner if sequence ID isn't specified in shortcode in Sequence_Views
* ENHANCEMENT: WordPress Code Style enhancements in Upcoming_Content class
* ENHANCEMENT: Better translation support in Upcoming_Content class
* ENHANCEMENT: Better singleton handling in Upcoming_Content class
* ENHANCEMENT: Simplify namespace for DBG class
* ENHANCEMENT: Simplify namespace for E20R_Error class
* ENHANCEMENT: Update code to better align w/WordPress style requirements
* ENHANCEMENT: Add license to class.e20r-error.php file
* ENHANCEMENT: Renamed E20RError to E20R_Error for new auto loader
* ENHANCEMENT: Simplify namespace for PostWidget class
* ENHANCEMENT: Update code to better align w/WordPress style requirements in PostWidget class
* ENHANCEMENT: Renamed PostWidget class to Post_Widget in support of new auto loader
* ENHANCEMENT: Renamed class.postwidget.php file to class.post-widget.php in support of new auto loader
* ENHANCEMENT: Clean up and include (temporarily) License handling
* ENHANCEMENT: Simplify namespace for Membership_Module class
* ENHANCEMENT: Rename membership_module class to Membership_Module
* ENHANCEMENT: Move E20R_Async_Request to E20R\Sequences\Async_Notices namespace
* ENHANCEMENT: Rename file in support of new autoloader
* ENHANCEMENT: Move E20R_Background_Process to E20R\Sequences\Async_Notices namespace
* ENHANCEMENT: Rename to class.e20r-background-process.php in support of new autoloader
* ENHANCEMENT: Simplify namespace for Send_Sequence_Notices class
* ENHANCEMENT: Updated PostWidget widget_registration to match new name (Post_Widget)
* REFACTOR: Various file clean-up
* REFACTOR: Using simple DBG::log() (namespace simplification for Cron class)
* REFACTOR: Renamed License handler class
* REFACTOR: Renamed file for Send_Sequence_Notices class
* REFACTOR: Rename file for and E20R_Utils class
== 4.5.2 ==
* ENHANCEMENT/FIX: CSS for the Drip Feed Settings Metabox
== 4.5.1 ==
* BUG/FIX: Didn't load CSS & JS when editing Sequence or supported posts/pages
* ENH/FIX: Removed stub file
* BUG/FIX: Build script
== 4.5.0 ==
* ENHANCEMENT/FIX: WooCommerce conflict
* FIX: Disable license check
* ENHANCEMENT: Initial stub to support async processing of user notices
* ENHANCEMENT: Add background queue management for user notices
* ENHANCEMENT: Add Async Request Worker class
* ENHANCEMENT: Add support for async worker classes
* ENHANCEMENT: Upgraded to latest Plugin Updater library
* ENHANCEMENT: Upgraded Plugin Upgrade Checker library
== 4.4.21 ==
* ENHANCEMENT: Display sequence entries by delay value(s) in the Drip Feed Settings metabox
* REFACTOR: Removed stale code
== 4.4.20 ==
* FIX: Didn't load the Optin handler script correctly
* FIX: Avoid JS error if the sequence settings were missing
* FIX: Clean up HTML for post list in admin metabox
* FIX: Didn't allow translation of 'None' option in offset drop-down.
* ENHANCEMENT: Started work to make Sequence Post metabox (bottom) responsive
* ENHANCEMENT: Refactor & clean up
* ENHANCEMENT: Added user ID to e20r-sequence-add-startdate-offset filter
* ENHANCEMENT: Added 'e20r_sequences_load_membership_plugin_meta' action (future user)
* ENHANCEMENT: Clean up buffers & returns the content (warning / notice messages) for AJAX calls
* ENHANCEMENT: New filters to support per-sequence startdate functionality (including using usermeta) - e20r-sequence-use-membership-startdate, e20r-sequence-use-global-startdate
* REFACTOR: Make CSS file more readable
== 4.4.18 ==
* FIX: Didn't always mark 'future' posts as being 'future'.
== 4.4.17 ==
* FIX: Delay column formatting/layout
* FIX: Doesn't properly display the Meta-table for the Sequence members on the editor page
* FIX: Formatting for table of sequence posts on post-editor page
== 4.4.16 ==
* FIX: Clean up Navigation links
== 4.4.15 ==
* FIX: has_post_access() would sometimes return the incorrect access value for the post_id.
* FIX: [sequence_links] shortcode would sometimes show the sequence info for users who didn't have access to it.
* FIX: Various styling issues
* FIX: Make usertstyle URL filter more self-documenting in nature
* ENH: Load support for user created styles (loads after default Sequences styles)
* ENH: Filter & use member specific sequence 'access denied' message(s).
* ENH: Add Member Module specific access denied message(s).
* ENH: Hook for Member Module Specific access denied message(s)
* ENH: Added filterable 'Content is inaccessible' message.
== 4.4.14 ==
* FIX: Escape variables being loaded to the front-end listing of Sequence members.
* FIX: List upcoming posts if they're supposed to be visible
* FIX: The default shortcode settings weren't correct.
* FIX: Flag an update routine as having ran after executing the pre/update/post hooks.
* FIX: Didn't always find the cache key to use
* FIX: Didn't always load the sequence data for the user from cache when available
* FIX: Didn't always paginate sequence lists properly
* FIX: Would sometimes remove old metadata erroneously
* FIX: paginate_posts() didn't always return the correct list of posts
* FIX: Make the display_sequence_content() function behave a little 'better' when being executed by the 'the_content' filter
* FIX: Didn't always align the future & current availability info.
* FIX: Resolved a possible CSS element name conflict with themes
* FIX: Didn't always load the post title in the sequence list view
* ENH: Optimize the number of times we attempt to load sequence posts
* ENH: Use the Wordpress configured date format when listing future (unavailable) posts & the sequence is configured to show dates.
* ENH: Would sometimes run the update functionality more than once
* ENH: Clean up debug logging== 4.4.13 ==
* FIX: Didn't always return all of the configured sequences
== 4.4.12 ==
* FIX: Didn't always trigger upgrade activity for v4.4.11
* FIX: get_user_startdate() caused whitescreen due to method visibility.
== 4.4.11 ==
* FIX: Didn't always return all of the configured sequences
* FIX: Didn't return the right list of sequences protected by a specific membership level
* FIX: sequences_for_membership_level() didn't handle cases where there were no sequences configured yet
* FIX: Didn't consistently return valid SQL for sequence list belonging to a given membership level (PMPRO)
* ENH: Added update version history
* ENH: Automatically update active membership user records w/the right startdate for the sequence(s) in the system.
* ENH: Updated get_user_startdate() to support upgrade functionality
* ENH: Add sequence ID to filters for startdate
* ENH: Added PHPDoc for new function(s)
== 4.4.10 ==
* ENH: Refactor for readability
* ENH: Record startdates for a user's (new) sequences on membership module purchase action/activity
* ENH: Add infrastructure to support startdate management for any hookable membership module
* FIX: Didn't capture the correct startdate for the user with the sequence
== 4.4.9 ==
* FIX: Refactor for code readability
* FIX: Simplify error message(s) for non-converted sequences
* FIX: Didn't always handle start times for users
* FIX: Don't attempt to fix conversion during sequence load
* FIX: Didn't handle situations where the timezone for the server wasn't configured yet
* FIX: Only attempt to upgrade a sequence during activation.
* FIX: Renamed convert_sequence function to upgrade_sequence() and add $force variable.
* FIX: Make user notice config a per-sequence update event.
* FIX: Formatting for sequence configuration metabox
* ENH: Add more formatting for metaboxes
== 4.4.8 ==
* FIX: Didn't always handle checkbox settings correctly
== 4.4.7 ==
* DOC: More functions w/documentation
* FIX: Didn't always run the deactivation/activation functions
* FIX: Keep backwards compatibility for now (to old sequence versions)
* FIX: Didn't force a sequence load after conversion
* FIX: Didn't always trigger conversion to V3 format
* ENH: New constant for the main plugin file
* ENH: Refactor (a little) for code readability
* ENH: Add support for per-sequence start date (uses membership plugin startdate if there isn't any info in the users usermeta)
* ENH: Modified user_can_edit to support filter of required permissions (user settable)
* ENH: Simplified loading of front-end JavaScript & Styles (fewer hoops)
* ENH: Add update code for 4.4.7
== 4.4.6 ==
* FIX: Strict standards warning
* FIX: Better handling of new values
* ENH: Update version for upgrade history
== 4.4.5 ==
* FIX: Disable cleanup on delete
* ENH: Update version for upgrade history
* FIX: Debug cleanup
== 4.4.4 ==
* FIX: Didn't always trigger the cron jobs
* ENH: Update version for upgrade history
== 4.4.3 ==
* FIX: Didn't always update the plugin
* FIX: Update WP Compatibility
== 4.4.2 ==
* FIX: Update version number and link to plugin info
* FIX: Clean up update checker
* FIX: Run upgrade process for all versions after v4.4
* FIX: Duplicate DEBUG info
* FIX: Didn't always include the excerpt data for the notification message when sending one message per post
* ENH: Updated Translation files
* ENH: Update version history for updates
== 4.4.1 ==
* FIX: Intermittent problem changing sort order
* FIX: Didn't always display full sequence list for shortcode
* FIX: Sequence listing didn't always display correctly in sequence_list shortcode
* FIX: Pagination didn't always work after view/controller split
* FIX: Didn't always run upgrade actions as expected.
== 4.4.0 ==
* FIX: Would sometimes error during display of available posts for sequence (in post list metabox)
* FIX: Simplified security management
* FIX: Refactored CSS (out of .php & into dedicated CSS files)
* FIX: Error when attempting to load sequence info
* FIX: Would sometimes return too many sequences
* FIX: Would sometimes return incorrect number of sequences.
* FIX: Reflect new version number (4.4)
* FIX: Revert version fix
* FIX: Didn't account for pages < pagesize.
* FIX: Autoload the views class
* FIX: Conversion check didn't always return the correct status for a sequence
* FIX: Updated default options to match new, simpler settings management
* FIX: Load the appropriate upgrade logic (if present).
* FIX: Didn't always load the front-end scripts when loading the sequence page
* FIX: Don't send notification alerts for posts with a 0 delay
* FIX: Make compatible with new settings/option names & fields
* FIX: Instantiation of singleton class
* FIX: Numerous issues related to moving the view code out of the controller
* FIX: Simplify saving of sequence options/settings from backend
* FIX: Didn't always load the correct instance of the class
* FIX: Would sometimes loop too many times during update check
* ENH: Clean up Sequence meta from member posts/pages/CPTs if the sequence itself is deleted
* ENH: Convert settings to new (easier to manage) settings for the sequence. (initial commit)
* ENH: Add stub functions for update actions in e20rSequenceUpdates class
* ENH: Simplify up-front loading of classes
* ENH: Make 'add post to sequence' metabox responsive
* ENH: Remove some of the duplicate DEBUG info
* ENH: Support using separate view class
* ENH: Set option for update(d) version
* ENH: Simplify saving options/settings for the sequence
* ENH: Add debug to debug status of post/pages being loaded from DB
* ENH: Move view related code to own class
* ENH: Remove some of the duplicate DEBUG info
* ENH: Remove sequence meta from post(s) when sequence gets deleted.
* ENH: Add upgrade handling to hook system
* ENH: Simplify saving/loading options & settings in backend meta box
* ENH: Initial commit for refactoring view related functions
* ENH: Initial commit for update functionality tool
* ENH: Add debug output for is_after_opt_in()
* ENH: Whitespace clean-up
* ENH: Simplified security protocol (minimize probability for error while maximizing security)
* ENH: Add license information
* ENH: Updated Norwegian translation (Norsk/Bokmål)
* ENH: Add description on how to add new alert templates
* NIT: Updated fix version
* NIT: Refactored class
== 4.3.2 ==
* FIX: Add e20r-sequences loader file to build
* FIX: Incorrect path to loader file
== 4.3.1 ==
* FIX: Didn't always have a saved setting for the type of alert to send (digest or individual for each post).
* FIX: Verify correct PHP version before loading the plugin
* FIX: License header
* ENH: Fix I18N string for PHP warning
* ENH: Updated Norwegian translation files
* ENH: Update README.txt to highlight new substitution filter(s)
* ENH: Update README.md to highlight new substitution filter(s)
* ENH: Add set_option_by_name() function
== 4.3 ==
* FIX: Remove function name(s) in debug output for cron job(s).
* FIX: Clean up path management for template(s).
* ENH: Remove dependency on PMProMailer class and roll our own mailer class.
* ENH: Introduce use of own function for fetching Sequence option(s)
* ENH: Rename prepare_mailobj() function to prepare_mail_obj()
* ENH: Use get_option_by_name() in prepare_mail_obj()
* ENH: Remove dependency on PMPro mail class (roll our own, based on theirs)
* ENH: Add E20R\Sequences\Tools\e20rMail() class
* ENH: Use own email class
* ENH: Make all substitute codes filterable by default.
* ENH: Add filter to modify/set data to substitute
* ENH: Clean up how we handle directories and files for templates
== 4.2.12 ==
* FIX: Error while attempting to print debug output
== 4.2.11 ==
* FIX: e20r-sequence-email-alert-template-path shortcode requires array() of paths as argument
* FIX: Support for customized reminder templates (stored in 'sequence-email-alert' directory under active theme.
* FIX: Add login form redirect support to email notices
* ENH: Add !!post_url!! as valid substitution in email templates.
* ENH: Add filter to !!sitename!! variable for email alerts
== 4.2.10 ==
* FIX: Would sometimes trip on Singleton error
* FIX: Updated language files
* FIX: Removed old language files (didn't load)
== 4.2.9 ==
* FIX: Didn't always handle cases where post/page was given delay value of 0
* FIX: Make text translatable
* FIX: Update translation file to include latest updates
* FIX: Would show the calling function for the active function
* FIX: Returned warning if sequence was empty.
* FIX: Didn't use the correct opt-in string in shortcode.
* FIX: Didn't always load translation
* FIX: Didn't load translations correctly
* FIX: Update copyright notice
* FIX: Grammar update
* FIX: Clean up Change log
* FIX: Remove old PMPro functions
* FIX: Transition to DBG::log()
* FIX: Transition to DBG::log()
* FIX: Didn't use absolute path when loading the language files.
* FIX: Uninitialized variable warnings
* ENH: Refactor shortcodes to own class files
* ENH: Add new Norwegian translation files
* ENH: Adding example settigns for user_email & display_name in default settings.
* ENH: Add debug logging class
* ENH: Add excerpt support for CPT page
* ENH: Rename local datediff() function
* ENH: Use DBG::log() functions & configure for current plugin
* ENH: Autoloader needs to support new DBG:: class.
* ENH: Updated translation files for Norwegian/Bokmål
* ENH: Refactor debug functionality to own class & namespace
== 4.2.8 ==
* Fix: Whitescreened due to undefined function call
== 4.2.7 ==
* Fix: Roll back $seq_post_type static use
* Fix: Remove dependency on pmpro_getMemberStartdate() function
* Fix: Could fail with error during import of PMPro Series member posts
* Fix/Enh: Rely completely on autoloader
* Enh: New version of update-checker for plugin.
== 4.2.6 ==
* Fix: Various problems with calculating the correct time for the next cron run.
* Fix: Plugin info Fix: Copyright notice
* Fix: Version number bump
* Fix: Update copyright notice
* Fix: Would sometimes load zero sequence members (posts) due to caching issues
* Fix: Confirm that there is a live cache entry for the user/sequence in is_cache_valid()
* Fix: Wouldn't load sequence posts if running as a cron job
* Fix: Simplify timestamp management/creation
* Fix: Bump minimum required PHP version to 5.4
* Fix: Path to CDN for select2 library
* Fix: Enqueue select2 CSS
* Maint: Escape backslash for JSON
* Maint: Updated .gitignore
* Enh: Initial commit of membership module base class
* Enh: Use constant for select2 library versions
* Enh: Add modules namespace (preparation for dedicated content protection modules)
* Enh: Loading list of sequence(s) and its consumers (users) in dedicated & filtered function
* Enh: No longer depends on PMPro to process cron jobs, but has default reliance on it (Upcoming: Decouple PMPro requirement)
* Enh: Better error recovery in cache management
* Enh: Use standard method for obtaining the cache identifier for the user/sequence
* Enh: Decouple most of the PMPro dependencies & use filters instead
* Enh: Enforce singleton behavior for sequence class
* Enh: Use static variable - self::$seq_post_type - to identify the sequence post type
* Enh: New filter for default sender email for a sequence: e20r-sequence-default-sender-email (returns email address, uses admin email as default)
* Enh: New filter for default sender name for a sequence: e20r-sequence-default-sender-name (returns a string, uses admin's display_name as default)
* Enh: New filter for user's startdate: 'e20r-sequence-user-startdate' (accepts startdate, user_id variables, returns a UNIX timestamp/seconds since start of epoch)
* Enh: New filter for days as member calculation: 'e20r-sequence-days-as-member' (accepts $user_id & $level_id, returns #of days (float or int))
* Enh: New filter to get the membership level for a user: 'e20r-sequence-membership-level-for-user' (Accepts a user_id and a boolean 'force' variable to indicate whether to read from DB or cache if applicable. Returns the user's membership level ID or false if not a member)
* Enh: New filter to check membership levels for a user id: 'e20r-sequence-has-membership-level' (Accepts an integer or array representing level id(s) and a user Id to check. Returns true/false)
* Enh: New filter to check membership access to a post id for a user id: 'e20r-sequence-membership-access' (Accepts optional post id, optional user_id and a boolean flag to determine whether to force a read from any DB table (if it exists).
== 4.2.5 ==
* Fix: Would attempt to load sequence posts for users not logged in.
* Fix: Didn't include the title for the new content in alert(s)
== 4.2.4 ==
* Fix: Didn't always allow access to a post that was supposed to be available
* Fix: The subject of email alerts used the incorrect date for the post alert
* Enh: Didn't have a default notification type (single post per alert)
* Enh: Use WP's time constants (DAY|WEEK|etc_IN_SECONDS)
* Enh: The replaceable value !!today!! didn't use the delay value of the post to calculate the date.
== 4.2.3 ==
* Fix: Avoid using reserved variable names
* Fix: Extend WP_Error with E20RError class
== 4.2.2 ==
* Fix: Didn't include all 'unalerted' content prior to the specified delay value when sending alerts to users
== 4.2.1 ==
* Fix: Didn't always load the correct font while in backend
== 4.2.0 ==
* Fix: Load template (or exit if template can't be found)
* Fix: Didn't respect settings for individual alerts for new content (not digest)
* Fix: Remove hidden/inactive code
* Fix: Correctly handle digests and single notification per post scenarios
* Fix: Add support for multiple or single notification message to user.
* Fix: Use actual sequence objects when processing notices/alerts
* Fix: Typo in template example
* Enh/Fix: Allow more than one post to be returned if there are multiple posts with the same delay value in the sequence
* Enh: Include post excerpt(s) when loading post(s) for/to a sequence
* Enh: Remove unused code from closest post logic Fix: Didn't always respect the notice type (as a digest of links or individual posts) for notices/alerts.
* Enh: Add support for sending one or more notices to user for a single day's worth of content.
* Enh: Add new_content_list template (Improved formatting for list of new content in the sequence).
== 4.1.3 ==
* Fix: Didn't always select the correct key for the sequence cache
* Fix: Didn't always load new sequence data
== 4.1.2 ==
* Fix: Generating warning message while processing delay configuration for sequence(s)
* Fix: Didn't always ignore unpublished/unavailable sequences
== 4.1.1 ==
* Fix: Adding/Removing posts to sequence could result in JavaScript error
* Fix: Would sometimes attempt to process auto-drafts
== 4.1.0 ==
* Fix: Searchable select box would sometimes stop working in backend
* Fix: More reliable detection of origination of add/remove post/page
* Fix: More robust error handling during remove post/page operation
* Fix: More robust error handling during add post/page operation
* Fix: More robust error handling during clear cache operation
* Fix: Display any warning messages after add post/page operation
* Fix: Avoid confusion when checking user access rights to a post/delay/sequence combination
* Fix: Extra training slashes for the autoloader paths
* Fix: opacity setting when fading the post as we hover in sequence history list
* Fix/Enh: Include warning messages resulting from add/remove operation
* Fix/Enh: Make add/remove operations more robust
* Enh: Add error handling as class: E20RError
* Enh: Add styling for 'clear cache' button position in back-end
* Enh: Add & load Error message class (E20RError)
* Enh: Force a sequence cache clean-up from wp-admin
* Nit: Refactor Controller class
== 4.0.6 ==
* Fix: Format check for 'when' attribute didn't always return the correct result.
* Fix: Sometimes generates an undefined offset notice while running cron job
* Fix: Test actual parameter that should be configured unless options haven't been defined yet
* Enh: Use \\WP_Query() and leverage cache while deactivating the plugin & removing cron jobs.
* Enh: Add link to issues section on GitHub.com
== 4.0.5 ==
* Fix: Email alert sent on days where no new/repeating post is released
* Enh: Load fontawesome fonts from local server (not CDN)
== 4.0.4 ==
* Fix: Error when loading e20r_available_on shortcode.
== 4.0.3 ==
* Fix: Namespace for functions to import PMPro Series and PMProSequences data
== 4.0.2 ==
* Set namespace for main plugin file
* Define namespaces used by main plugin file
* Fix autoloader
* Use renamed Controller() class for Sequence
* Escape global namespace entities
* Renamed class & class file Fix namespace issues
* Fixed typo in Namespace alias
* Fixed Namespace issues
* Fixed PHP Warning message while processing cron jobs
== 4.0.1 ==
* Fix: Namespace for Tools/Cron
* Fix: Use singleton model for sequence object
* Fix: Renamed Job() class to Cron() for autoloader purposes
* Fix: Renamed class to simplify autoload
* Fix: Behave different if the user isn't logged in
* Fix: Only remove old pmpro sequences cron jobs if PMPro Sequences is no longer loaded/active
* Fix: Didn't correctly identify the privilege level of the user
* Fix: Transmit sequence to process in do_action for cron hook when manually requesting notices to be sent
* Fix: Properly identify the sequence to process alert notices for (when specified)
* Fix: Manual send of post notices (with argument).
* Fix/Enh: e20r_available_on shortcode now only needs 'when' attribute. Can be a date, or days since the currently logged in user's start of membership
* Enh: Move all cron job management to E20R\Sequences\Tools\Cron\Job class
* Enh: Adding debug info
* Enh: Add call to import/convert existing PMPro Sequences metadata as needed.
* Enh: Refactor cron management and move to Cron\Job class
* Enh: Use singleton pattern with hook for instance
* Enh: Refactor class-tools-cron.php
* Enh: Refactored class-sequence.php file
* Enh: Update README.* files
* Enh: Add PMPro Sequences conversion function (incomplete)
* Enh: Update version number (4.0.1)
* Enh: Add Shortcode namespace
* Enh: Skip unneeded code traversal in convert_date_to_days when receiving a day number as our argument
* Enh: Add e20r_available_on shortcode - Let admin wrap content/text that won't be visible to the user until the specified day of membership, or date.
* Enh: Initial commit for available_on shortcode class
* Enh: Renamed Job() class to Cron() and renamed the source file for autoloader simplicity
* Enh: Moved PostWidget class definition into widgets directory for autoloader/namespace reasons.
* Enh: Add autoloader support for classes
* Enh: Remove static load of classes
== 4.0.0 ==
* Fix: Namespace declaration for Sequences class(es)
* Fix: Move namespace declaration to Sequence class
* Fix: PHPDoc for some of the classes (apply namespace)
* Fix: Namespaces for Sequence class
* Fix: Set global namespace for standard PHP classes (DateTime, DateTimezone, stdClass, WP_Query, etc)
* Fix: Loading Fontawesome from local resource for Sequence icon(s)
* Enh: Use wp_enqueue_* rather than wp_register_* functions
* Fix: Use namespace in register_widget()
* Update namespace for WP_Widget parent class
* Add FontAwesome as local resource
* Add fonts directory to build script
* Replace pmpro_ and pmpro- instances with e20r_ and e20r- instances respectively
* Rename all instances of pmpro-sequence to e20r-sequence
* Rename plugin to e20r-sequences Use namespaces for classes
* Move all classes under PLUGIN_DIR/classes and PLUGIN_DIR/classes/tools
* Create Tools\Cron class & move worker function to its own class & namespace
* Rename widget class to PostWidget
* Rename the sequences controller class to Sequence
* Remove sequence icon images (using fontawesome instead)
* Rename all pmpro_ files to e20r_
* Update README & .json files
== 3.0.4 ==
* Conditional return triggered fatal error in certain situations
* Use absolute URL for fontawesome
* Respect theme settings for fonts/text in widgets
* Respect theme settings for fonts/text in other text
* Fix error if is_managed() is called while PHP is outputting data
* Stop forcing access check for posts that aren't managed by any sequences.
* Fix formatting problem
* Initial update of version number to 3.0.4
* Update template file for vpt_reminder.html
== 3.0.3 ==
* On the edit.php page, add a 'Clear alerts' button for a specific post/sequence/delay combination
* Allow admin to clear notification flags for a specific post/delay/sequence id from the posts edit page
* Make language tag consistent
== 3.0.2 ==
* Would sometimes trigger warning message while searching for a specific post ID
* Only grant blanket access to post in sequence if admin is logged in on dashboard and we're not in an ajax operation
* Comment out incomplete Google Analytics tracking support
* Add debug output for send_notice() to help troubleshoot.
* Make opt-in form full-width
== 3.0.1 ==
* Would sometimes issue warning in find_by_id()
* Updated to direct user to dashboard
* v3.0.1
== 3.0-beta-13 ==
* Would sometimes return all posts in the sequence while deleting one post.
* Fix undefined variable warning in load_sequence_post()
* Didn't include sequence members (posts) in DRAFT state when displaying list of sequences in metabox(es)
* Can specify post_status values to include in load_sequence_post() (array() or string)
* Prefix any post in draft status with 'DRAFT' (or translated equivalent) in metabox list of posts for sequence
* Run wp_reset_query() before returning all sequences in get_all_sequences().
== 3.0-beta-12 ==
* Load Font Awesome fonts as part of script/style load.
* Update path to Font Awesome fonts (CDN)
== 3.0-beta-11 ==
* Update version number and change log
* find_by_id() would sometimes load unneeded posts (and not honor cache)
* When loading a specific post_id for the sequence, don't ignore drafts (May cause duplication in DB)
* Fix typo in debug output for remove_post()
* Log the specific post being removed from the post list in remove_post()
* Only overwrite belongs_to array if the array is empty first
* Include sequence ID when loading the sequence specific meta data for $post_id in rm_sequence_from_post() callback function
* Update translations
* Update text in email opt-in checkbox
== 3.0-beta-10 ==
* Add all_sequences() static function
* Add post_details() static function
* Update change log & version numbers
* Allow calling PMProSequence::sequences_for_post() to return array of sequence IDs for the post_id specified
* Add static function to fetch all sequence IDs that a post_id is associated with
== 3.0-beta-9 ==
* Didn't always display the delay input box in the post editor metabox.
* Make opt-in checkbox responsive
* Update change log & version numbers
== 3.0-beta-8 ==
* Didn't always set the optin_at timestamp correctly in the default user alert settings
* Removed redundant option management
* Don't show a checkmark if the user has opted-out of receiving alert notices/emails
* Fixed typo in send_notices variable for the opt-in callback
* Prevent user from being overwhelmed by old alert messages when opting back in
* Didn't always handle situations where the alert notice timestamp for a user was reset
* Use post->id and the normalized delay value for the notified flag in user alert settings
* Allowed saving of user alert settings when there was no sequence ID specified
* Force load (refresh cache) of sequence members on start of convert_alert_setting()
* Fix fix_user_alert_settings() so it correctly identified valid & invalid alert notices.
* Refactor load of metadata version matrix
* Add check of validity of post cache
* Use cached data to locate specific post ID in find_by_id (faster loop rather than DB lookup)
* Add debug for load_sequence_post() variables
* Refactor load_sequence_post()
* Improve search for delay values (correctly identify date or numeric format)
* Load options rather than posts & options in load_sequence_meta()
* Refactor get_sequences_for_post()
* Remove impossible option load in sort_posts_by_delay()
* Refactor function order in class
* Use normalized delay values in convert_alert_setting()
* Add function to fix user alert settings
* Add function ro remove old user alert settings
* Fix is_after_opt_in() to support new user alert setting format
== 3.0-beta-7 ==
* Wouldn't always honor the refresh value when loading the sequence
* Refactor conversion for user's new-post notice settings
* Clean up erroneous notification settings for user
* Didn't save the 'Allow email notification' setting
== 3.0-beta-6 ==
* Primarily convert to V3 as part of plugin activation or if the user attempts to load the sequence.
* Would sometimes get into a load/convert loop Flag conversion attempt as 'forced' if no posts are found with V3 format and the sequence is NOT previously converted.
* Add padding to opt-in checkbox
* Could loop indefinitely during conversion of user opt-in settings for certain users.
* Would sometimes hide the opt-in check-box
* Don't print settings to debug log.
* New and empty sequences would incorrectly be flagged as needing conversion.
* Updated translations (Norwegian & English/US)
== 3.0-beta-5 ==
* Fix error handling in add post to sequence operation
* Add class function to configure & time out error message in /wp-admin/
* Fix $_POST variables in add_entry()
* Clean up error & success functions for jQuery.ajax() call in add_entry()
* Handle error messages returned from back-end
* Correct warning for (future) Google Analytics ID variable in configuration
* Rename (make consistent) filter for the type of posts that can be managed by this plugin
* is_present() will loop through the $this->posts array looking for the post_id & delay value specified. Returns false if not found & the array key value if found.
* Ensure the error <div> is present in the sequence metabox
* Remove 'draft' as a valide default post status to list.
* Clean up variable names in $_POST for the add operation
* Return error message/warning to back-end if post_id/delay combination is present in system.
* Refactor add_post_callback()
== 3.0-beta-4 ==
* Update the TODO section in README.txt
* Clean up TODO items class.PMProSequence.php
* Would loop indefinitely if there were no sequence posts and the sequence was attempted viewed from the front-end.
* Allow users with admin privileges to have access to any sequence & posts.
* Didn't always save the opt-in settings for the user(s).
* Typo in opt-in setting.
* Force user id when looking for closest post.
* Didn't always allow administrators to see posts in sequence
* Correctly sanitize date values as delays
* Re-enable the wipe functionality when changing the type of sequence from day # based to date based (or vice versa)
== 3.0-beta-3 ==
* Renamed 'Add' button to 'New Sequence'
* Would sometimes add an extra sequence/delay input field when the 'Add' button was clicked in edit.php
== 3.0-beta-2 ==
* Track conversion to v3 metadata based on sequence ID in options table
* If option value isn't configured, double-check that the V3 metadata isn't there in is_converted()
* Reduce the number of error messages on back-end
* Wouldn't always reload posts when changing sequence ID to manage
* Load delay type for each sequence to front-end (JavaScript)
* Add test for old-style metadata use if a sequence is found to be empty.
* Convert if needed. Warn admin/editor/user if a sequence hasn't been converted yet.
* Didn't always save the sequence ID when a post was added to a new sequence in edit.php
* Removed redundant saving of sequence ID for a post_id during add_post()
* Load all instances of a sequence/delay combination in edit.php
* Refactor edit.php metabox rendering
* Avoid warning message when no posts are found in get_delay_for_post()
* Remove unused code paths
* Simplify addition of new sequence/delay values to a post in edit.php
* No longer calling back-end when adding new sequence ID to post/page in edit.php
* Simplify removal of sequence/delay pair from a post in edit.php
* Support removing one of multiple sequence entries from a post/page in edit.php
== 3.0-beta-1 ==
* Check whether V3 postmeta is the current format on admin_init.
* Skip sending notices for sequences that haven't been converted yet.
* Add error message if the meta data for the sequence members isn't in V3 format.
* Ensure all posts in the sequence gets loaded when an admin/editor is processing the sequence CPT.
* Correctly identify sequence members that haven't been converted to V3 format yet.
* Add consistent error check (and error message) for init() of sequences
* Fix issue where type of edit operation in sequence editor window wasn't working.
* Didn't always save the repeat post setting for the sequence
* Add conversion to V3 post meta_data to activate() function
* Didn't always set the checkbox value for the sequence settings
* Differentiate between cron processing and normal (admin) processing
* Didn't always correctly indicate the most current post for the requested user_id
* Simplify cache check for $this->posts content
* Avoid perma-loop while in post loop
* Would sometimes add posts the user_id didn't actually have access to yet
* Removed duplicate processing for delay values.
* Didn't correctly convert user alert (notice) settings to V3 format
* Fixes to help user notice processing handle new v3 formats (and simplify post processing)
* Consistently use post_id + post_delay values for alert keys
* Adds support for multiple delay values for a single post_ID within the same sequence (i.e. repeating posts without duplication of content).
* Add support for 'upcoming' specific post array
* Record metadata as individual post entries (simplifies search/load of sequence info)
* Renamed all active functions to 'WordPress friendly' naming (i.e. lower case and underscores)
* Started work to allow tracking using google analytics. (Possible future feature, ETA is TBD if at all)
* Simplify loading of sequence member post(s).
* Simplified post/sequence member lookup.
* Commented out duplicate or unnecessary code
* Removed some unneeded code.
* Updated path to login page in a template
* Support V3 functions & post management
* Use new user notification settings (per sequence rather than global)
* Use new debug logger function
* Renamed Debug logging function
* Use new user notification settings (per sequence rather than global)
* Support V3 functions & post management
* Would generate undefined variable error in certain situations
* Remove superfluous load of font-awesome css file
* Use FontAwesome for admin page icon(s)
* Fix getPostKey() function to support post_id/delay combinations (for repeating post IDs in sequence)
* Add debug output for get_users_of_sequence() function
* Fix convertNotification() function (works)