forked from gocodebox/lifterlms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadme.txt
1187 lines (871 loc) · 71.9 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
=== LifterLMS ===
Contributors: therealmarknelson, thomasplevy, psmolic, chrisbadgett, kathy11, lifterlms, codeboxllc, jackyliao888
Donate link: https://lifterlms.com
Tags: learning management system, LMS, membership, elearning, online courses, quizzes, sell courses, badges, gamification, learning, Lifter, LifterLMS
Requires at least: 4.0
Tested up to: 4.5.3
Stable tag: 2.7.6
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
LifterLMS, the #1 WordPress LMS solution, makes it easy to create, sell, and protect engaging online courses.
== Description ==
LifterLMS is a powerful WordPress LMS plugin that makes it easy to create, sell, and protect engaging online courses. The mission of LifterLMS is to democratize education in the digital classroom.
>**LifterLMS Pro, LaunchPad theme, Boost and More**
>
>Users looking for more timely/in-depth support are encouraged to check out LifterLMS Pro. One-on-one LifterLMS Pro support is responded to within 12 business hours.
>
>6 achievement badge packs and 6 premium certificate backgrounds graphic assets also come with [LifterLMS Pro](https://lifterlms.com/product/lifterlms-pro/).
>
>If you are looking for the best WordPress theme to pair with LifterLMS, check out the [LifterLMS LaunchPad Theme](https://lifterlms.com/product/launchpad/).
>
>You should also check out the [LifterLMS Stripe](https://lifterlms.com/product/stripe-extension/), [LifterLMS ConvertKit](https://lifterlms.com/product/lifterlms-convertkit/), and [LifterLMS MailChimp](https://lifterlms.com/product/mailchimp-extension/) extensions to LifterLMS.
>
>If you'd like to be up and running with a beautiful and professional WordPress LMS website in just 5 days, you can also explore our signature "done for you" white glove service called [Boost](https://lifterlms.com/boost/).
Take a look at the explanation videos of LifterLMS. These 17 tutorial videos are included in the [free LifterLMS demo course](http://demo.lifterlms.com).
https://www.youtube.com/watch?v=CY1u-elqudg
More information at [LifterLMS.com](https://lifterlms.com).
#### Features
Whether you're an entrepreneur delivering your own courses, a school with lots of users, a player in the business-to-business corporate training space, or using online courses for marketing purposes, LifterLMS has your back.
LifterLMS works great for health and fitness courses, music courses, real estate courses, language learning courses, and much, much more.
**Learning Management System Features**
+ Intuitive course builder
+ Use text, video, audio, images, or any combination in your lessons
+ Quizzing
+ Prerequisites
+ Student dashboards
+ Student analytics
+ Student management
**Ecommerce Features**
+ Accept one-time and/or recurring payments for your courses and memberships
+ Works with PayPal out of the box
+ Coupon system
+ A voucher code system so you can grant access to large groups of people
+ Accept credit cards directly on your site with the LifterLMS Stripe Extension
+ Ecommerce analytics
+ Create degree programs or course tracks by grouping courses together that can be taken in any order
**Membership Site Features**
+ Group courses together inside a membership level so you can sell many courses at once
+ Protect non-LMS content, like regular WordPress pages, posts, bbPress forums, and more
**Engagement and Gamification Features**
+ Personalized email system triggered on user events in the system that you define
+ Personalized achievement and badge system triggered on user events in the system that you define
+ Personalized certificate system
**Further Reading**
+ The [LifterLMS plugin](https://lifterlms.com/) official homepage
+ The [LifterLMS documentation](https://lifterlms.readme.io/)
+ The [LifterLMS knowledgebase](https://lifterlms.com/docs)
+ The [LifterLMS blog](http://blog.lifterlms.com/)
+ The [LifterLMS podcast](http://podcast.lifterlms.com/)
#### Join Our Growing Community
When you download LifterLMS, you join a thriving community of education entrepreneurs, developers, and WordPress enthusiasts. We’re one of the fastest growing open source eLearning communities online, and you are welcome here.
If you’re interested in contributing to LifterLMS, head over to the [LifterLMS GitHub Repository](https://github.com/gocodebox/lifterlms/) to find out how you can pitch in.
Want to add a new language to LifterLMS? Swell! You can contribute via [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/lifterlms).
== Installation ==
Installing the plugin is easy. Just follow these steps:
1. From the dashboard of your site, navigate to Plugins > Add New.
2. Select the Upload option and hit "Choose File."
3. When the popup appears, select the lifterlms-x.x.zip file from your desktop. (The 'x.x' will change depending on the current version number).
4. Follow the on-screen instructions and wait as the upload completes.
5. When it's finished, activate the plugin via the prompt. A message will show confirming activation was successful.
6. Click on Courses > Add Course, and you’re ready to build your first course!
That's it! Just configure your settings as you see fit, and you're on your way to creating online courses in style. Need help getting things started? Check out our [Getting Started Guide and Documentation](https://lifterlms.readme.io/docs/getting-started).
== Frequently Asked Questions ==
#### Are there any troubleshooting steps you'd suggest I try that might resolve my issue before I post a new thread?
First, make sure that you're running the latest version of LifterLMS. And if you've got any other LifterLMS extensions or themes, make sure those are running the most current version as well.
The most common issues we see are either plugin conflicts, theme conflicts, or outdated servers. You can test if a plugin or theme is conflicting by manually deactivating other plugins until just LifterLMS is running on your site. If the issue persists from there, revert to the default Twenty Fifteen theme. If the issue is resolved after deactivating a specific plugin or your theme, you'll know that is the source of the conflict. If it is a hosting issue, contact your web host and make sure they’re running the most current version of PHP.
Also be sure to check out the official LifterLMS [documentation](https://lifterlms.readme.io/) and [knowledgebase](https://lifterlms.com/docs/).
#### I'm still stuck. Where do I go to file a bug or ask a question?
Users of the free LifterLMS should post their questions in the plugin's WordPress.org forum. If you find you're not getting support in as timely a fashion as you wish, you might want to consider purchasing a [LifterLMS Pro license](https://lifterlms.com/product/lifterlms-pro).
If you're already a LifterLMS Pro user or you have purchased one of the LifterLMS themes or extensions, you're entitled to log into your account and contact the support team directly on the [LifterLMS website](https://lifterlms.com/my-account/). We can provide a deeper level of support here and address your needs on a daily basis during the work week. Generally, except in times of increased support loads, we reply to all comments within 12 business hours.
#### LifterLMS is awesome! Can you set it all up for me?
Yes. You can get an instant quote for the team at LifterLMS to set everything up for you through our signature Boost service. Get an instant quote through our automated quote generation tool on the [LifterLMS website services page](https://lifterlms.com/done-for-you-lms/).
#### I'm interested in LifterLMS Pro, another LifterLMS extension, or a LifterLMS theme, but there are a few questions I've got before making the purchase. Can you help me get those addressed?
Absolutely. If you're not finding your questions answered on the product pages, you can ask your presales questions through this [contact form](https://lifterlms.com/contact/). You can also connect live with a member of our team [here](https://lifterlms.com/contact/).
#### What add-ons are available for LifterLMS, and where can I read more about them?
Currently, the following add-ons are available for LifterLMS:
+ [LifterLMS Stripe Payment Gateway](https://lifterlms.com/product/stripe-extension/), for accepting credit card payments directly on your website and passing the money through Stripe to your bank account.
+ [LifterLMS MailChimp](https://lifterlms.com/product/mailchimp-extension/), for adding your users to a MailChimp email list and organizing them into groups or adding to separate email lists based on the courses they’ve enrolled in.
#### I have a feature idea. What's the best way to tell you about it?
We care about your feature ideas and what you have to say. You can request a feature [here](https://lifterlms.com/contact/). Also be sure to checkout the [LifterLMS product roadmap and changelog](https://lifterlms.com/roadmap/) to see how far we’ve come.
#### I still have questions. Where can I find answers?
Be sure you’ve taken the free tutorial training video course: [How to Create an Online Course with LifterLMS](http://demo.lifterlms.com/course/how-to-build-a-learning-management-system-with-lifterlms/).
== Screenshots ==
1. LifterLMS Course Settings
2. LifterLMS Course Builder
3. LifterLMS Course
4. LifterLMS Achievements
5. LifterLMS Sidebar Widgets
6. LifterLMS Course Tiles
7. LifterLMS Sales Analytics
8. LifterLMS Lesson Completion Analytics
9. LifterLMS Membership Settings
10. LifterLMS Lesson
11. LifterLMS Certificate
12. LifterLMS Student Analytics
13. LifterLMS Creating and Engagement
14. LifterLMS Student Dashboard
15. LifterLMS Course Analytics
== Changelog ==
= v2.7.5 - 2016/06/28 =
-----------------------
+ Students manually removed by Memberships by using the "Students" tab of a LifterLMS Membership will now be fully removed from the membership.
+ Updated a few time-related strings to be l18n friendly. These items were all around Quiz time reporting and quiz time limits.
+ Updated testing information, tested up to WP 4.5.3
+ Fixed date of last release on changelog. It had the wrong date. Does that really matter?
+ Updated readme.txt description area, we have a new youtube video! Yassss.
= v2.7.5 - 2016/06/13 =
-----------------------
##### New features
+ Added an "id" parameter to both LifterLMS Courses and LifterLMS Memberships shortcodes
##### i18n
+ Allow date translation on quiz results screen by using `date_i18n()` instead of `date()`
+ Allow date translation on my courses screen by using `date_i18n()` instead of `date()`
+ Ensure course status "Enrolled" is translatable on my courses screen
##### Fixes
+ Thanks to [@kjohnson](https://github.com/kjohnson) who fixed undefined index warnings & errors which occurred when viewing the last lesson in a section when the next section contained no lessons.
+ Resolved an issue where formatting for "Restricted Access Description" course content would not display proper formatting.
+ Fixed an issue with the "FREE" stamp for a free lesson caused layout issues.
+ Removed the "is-complete" css class from incorrectly being added to lesson preview tiles for free lessons
+ Fix an escaping issue when rendering Course titles inside LifterLMS notices. Prevents "\'s" from displaying when "'s" should be displaying (and similar issues).
= v2.7.4 - 2016/05/26 =
-----------------------
+ Fixed a bug with the new localization methods from 2.7.3
+ Removed bundled it_IT translation files in favor of official language pack available at [https://translate.wordpress.org/projects/wp-plugins/lifterlms/language-packs](https://translate.wordpress.org/projects/wp-plugins/lifterlms/language-packs).
+ Removed bundled en_US translation files because LifterLMS is in English so the files are unnecessary.
+ Fixed a few mis-labled filters applied when registering LifterLMS Custom Post Types
+ Adjusted the default supported features of LifterLMS Quizzes and Questions
+ Quizzes now support custom fields as per user request
+ Commenting, thumbnails, and excerpts are no longer "supported" as they were never intended to be and were never correctly implemented.
+ If you are relying on any of these features for your quizzes or questions please use the following filters to re-implement these features: `lifterlms_register_post_type_quiz` or `lifterlms_register_post_type_question`. These will allow you filter the default arguments LifterLMS passes to the WordPress function `register_post_type()`
= v2.7.3 - 2016/05/23 =
-----------------------
+ Added a separate filter for login redirects `lifterlms_login_redirect` and added the user_id as a second parameter available to the filter
+ Added second parameter to `lifterlms_registration_redirect` to allow access to the registered users's user_id
+ Fixed a timestamp conversion issue on Course sale price checks that caused indefinite sales (those with no date restrictions) to appear not on sale during certain periods of time. The period would differe depending on the server's timezone settings and the time of visit.
+ Added a "Pointer" when hovering quiz summary accordion to allow for a slightly more obvious user experience that the elements are expandable.
+ Added some new localization methods to ensure strings that only appear in Javascript files will be translator friendly. This initially fixes a few issues on the Quiz Summary page and during quiz taking where strings only appeared in Javascript and were, therefore, completely inaccessible to translators.
= v2.7.2 - 2016/05/19 =
-----------------------
+ In course syllabus widget & shortcodes free lessons will now be clickable links.
+ Record `llms_last_login` timestamp in usermeta when a user registers.
= v2.7.1 - 2016/05/09 =
-----------------------
##### Enrollment & Voucher Checks
+ Enrollment functions will now automatically check to ensure that users are not already enrolled in a course or membership before enrolling. This addresses an issue which would create double enrollment for user redeeming a voucher for a product they were already enrolled in.
+ Vouchers will now automatically check to see if the user has already redeemed this voucher before allowing the user to redeem it. This would have caused multiple enrollments and would allow one user to eat up an entire voucher by using it over and over again for funsies. A voucher can now *only* be redeemed once by a user as intended.
+ `llms_is_user_enrolled()` now allows developers to check membership enrollment. Previously this function would only check enrollemnt of Courses despite what the documentation stated.
##### Translation
+ 3 strings have had translation functions added to them. This makes LifterLMS voucher reemptions translatable!
##### Bugs & Fixes
+ Fix javascript dependency & enqueueing issue on admin panel which prevented LifterLMS settings from saving correctly in various places
+ Removed inline CSS from "next lesson button" on quiz completion / summary screen. This was overriding some default styles and making the button very thin and gross.
= v2.7.0 - 2016/05/05 =
-----------------------
##### LifterLMS Custom User Fields Exposed
+ Custom fields added during registration via LifterLMS account settings are now exposed on the admin panel via the student's WordPress user profile
+ All custom fields that are available (billing and phone) are editable on the WordPress user profile by anyone with profile edit access regardless of LifterLMS settings. If the settings are disabled (eg not required for registration) you can still add this information manually to a user's profile. This is useful if you require the information and then disable it later, you would still be able to access the information on the admin panel but would no longer be required for user's during registration.
+ A few new filters added to help developers customize the experience here. Check out the documentation at [https://lifterlms.com/docs/lifterlms-filters/#admin-user-custom-fields](https://lifterlms.com/docs/lifterlms-filters/#admin-user-custom-fields)
##### Membership Manual Add & Remove Student Functions
+ Duplicated "Students" tab from the Course admin screen to Memberships
+ Students can be manually added to a membership by an admin
+ Students can be removed manually from a membership by an admin
##### Updates
+ Added the ability for students to edit their phone number via their account settings page if the phone number registration option is enabled on the site.
##### Fixes
+ Fixed a few spelling errors on LifterLMS admin panel order screens
+ Fixed a typo on meta data for LifterLMS admin created (manual) orders
= v2.6.3 - 2016/05/02 =
-----------------------
+ Removed redirecting action from WooCommerce integration that was causing issues on mutliple product purchase checkouts with larger databases.
+ Added a new payment action `lifterlms_order_complete` which runs at the same time as some previous actions during payment processing but servers a different purpose. This is mostly in preparation for a forthcoming AffiliateWP integration.
+ Fixed an issue with LifterLMS certificate background image that caused the wrong dimensions to be returned when outputing a LifterLMS certificate background image
= v2.6.2 - 2016/04/27 =
-----------------------
+ Fix class conflict in collapsible course outline widget template which caused some UX issues.
+ Added new filters run during course & lesson sidebar registration to allow customization of LifterLMS sidebars
+ `lifterlms_register_course_sidebar`
+ `lifterlms_register_lesson_sidebar`
+ Removed a stray logging function.
+ Cleaned up some undefined variable warnings & notices on the quiz summary template
+ Fixed an issue appearing when registering users did not submit the optional phone number which caused a PHP notice
+ LifterLMS Orders generated by WooCommerce will now have a payment method of "WooCommerce". This also addresses an undefined notice produced during WooCommerce order completion because a LifterLMS Payment Method wasn't being defined.
= v2.6.1 - 2016/04/26 =
-----------------------
+ Fix class conflict in collapsible course outline widget template which caused some UX issues.
= v2.6.0 - 2016/04/25 =
-----------------------
##### Collapsible Course Outline Widget
+ By request we've added an option to make your course outline widgets collapsible!
+ View feature [Documentation](https://lifterlms.com/docs/course-syllabus-widget/)
+ New translations available related to feature. I think it's 4 strings.
##### Bug Fixes
+ Removed an unused CSS selector that caused some issues on the admin panel. This resolves an issue identified with the Page Builder by SiteOrigin plugin. The selector was very generic (`.title`) and may have caused issues with other themes or plugins using that class.
+ Resolved an issue that prevented post update, save, and publishing messages for core post types (posts, pages) from displaying properly.
= v2.5.1 - 2016/04/22 =
-----------------------
+ Fixed session handler initilization as it was being initialized prior to user data availability.
+ Staged `LLMS_Language` class for deprecation in favor of WordPress translation functions `__()`, `_e()`, etc... **If you're a developer you'll start seeing warning's on screen or in your logs if you're using this function, it will be completely removed in the next MAJOR release (3.0.0)**
+ Added a new function to handle the deprecation warning above (`llms_deprecated_function`) and now that we have this function we'll start deprecating all the things. Just kidding, or am I?
+ This gives translators access to 69 new strings that were previously untranslatable! However, this number might be innacurate +/- 5 strings. I only counted it once and I don't feel like the exact number is important enough for a recount to ensure accuracy. /shrug
= v2.5.0 - 2016/04/15 =
-----------------------
**Admin Panel Order Table Updates**
+ Several visual improvements to the table
+ Exposed the following fields on the table
+ Order number
+ Customer name (with a link to their WP profile)
+ Customer email (mailto link)
+ Payment gateway used (this is filterable per gateway as well so gateways can improve the functionality here in the future)
+ Added a link to the product edit page from the product column
+ Free orders will now display as "Free" as opposed to {currency}0.00
+ Removed the not-so-useful "Order" column which was a long ugly string of data that was displayed in other columns already
+ Removed the "Password Protected" flag since *all* orders are always automatically password protected for added security. This flag distracts from the interface so we've removed it. Orders _are_ still password protected though.
+ Numerous strings that were previously not translatable have been made translatable on this screen
+ A few new strings that previously didn't exist are now available for translation
**Fixes and other small changes**
+ Fixed a translation issue on the LifterLMS menu that we thought we fixed in the last release but have now really fixed (probably).
+ Fixed a few small issues with engagements as they related to external engagements triggered by other plugins and LifterLMS extensions.
+ Tired of seeing a banner for a plugin you've already installed? We have your back! The general settings area will now only display banners for plugins that aren't installed.
+ Fixed various javascript issues, mostly removed `console.log()` statements.
+ Fixed a spelling error on the membership admin panel settings screen
= v2.4.1 - 2016/04/07 =
-----------------------
+ Tested and compatible with WordPress 4.5 Release Candidate.
+ Fixed a pagination issue related to updates to the quiz builder from 2.4.0 which would cause results to return incorrect results on the last page of paginated results in the "Add Question" dropdown.
+ Added translation functions to LifterLMS Menu Items. Resolves an issue where translated LifterLMS installations might not see all the menu items under the LifterLMS Icon.
+ Italian translation updates curtosey of [@AndreaBarghigiani](https://github.com/AndreaBarghigiani)
+ On some themes the "Next Lesson" button was displayed while quizzes were being taken. We now *always* hide the next lesson button when a quiz is being taken.
+ Adjusted some static functions to be non static in `class.llms.post-types.php`
+ Added a function to ensure support for post thumbnails on LifterLMS custom post types
+ If a user views a course that is available to them because it belongs to a membership level they are a member of, course pricing information will no longer be visible. This addresses a confusing user experience issue. Previously it _appeared_ like payment for a course was still required even though it really wasn't.
+ Fixed undefined variable warning on quiz summary screen
+ Resolve an issue with quiz timer that caused issues on time display if the time limit was set to a fraction of a minute (eg 1.5 minutes)
+ resolved an undefined variable warning resulting from courses still holding a reference to a membership after the membership has been deleted or trashed
= v2.4.0 - 2016/03/29 =
-----------------------
##### Performance Improvements on the LifterLMS Quiz Builder
+ Completely rewrote Javascript associated with building a LifterLMS Quiz. Our users have been identifying some performance issues and slowness when working with larger databases. We've refactored the Javascript and our related database queries to allow faster quiz building and fewer timeouts when working in the quiz builder.
+ Fixed a bunch of undefined variables that would produce PHP warnings in various quiz templates
+ Added validation to quiz questions on the admin panel to prevent the same question from being added to a quiz multiple times.
+ Fixed an issue that prevented quizzes from correctly marking the lesson as completed when the quiz was passed.
+ Added three new actions now available for developers to hook into.
+ `lifterlms_quiz_completed` called upon completion of a quiz (regardless of grade)
+ `lifterlms_quiz_passed` called when a quiz is completed with a passing grade
+ `lifterlms_quiz_failed` called when a quiz is completed with a failing grade
+ Course Progress and Course Syllabus shortcodes (and widgets) now work on Quiz pages
+ Completed Metabox refactor for the LifterLMS Quiz post type and removed `LLMS_Meta_Box_Quiz_General` class. All functions now exist in `LLMS_Meta_Box_Quiz`
+ Added validation to the Quiz general settings
+ Cannot only enter numbers in attempts, percentage, and time limit fields
+ Cannot enter a negative number or a number greater than 100 in the percentage field
+ Removed the membership restriction metabox from quiz admin and question admin screens
##### Other fixes
+ Fixed an issue that caused multiple certificates awarded for the same Course or Lesson to not properly display on the My Account page.
+ Removed an event bound to the publishing of a LifterLMS Question that called a function that didn't exist and caused a Javascript error on the console (but didn't actually cause any problems)
+ Removed a warning message that would display on sidebars when a shortcode was being displayed in a place that it couldn't function. We now simply don't display any content if the shortcode can't function.
+ Resolved an issue that prevent users from "purchasing" products when using a 100% coupon and the Stripe payment gateway. Users experiencing this issue should also update to Stripe 3.0.1.
+ Fixed an AJAX related issue that was incompatible with PHP7
+ Added the ability to have a "max" value on LifterLMS Admin Metabox number fields
= v2.3.0 - 2016/03/24 =
-----------------------
##### Engagements Refactoring (lots of bugfixes, performance improvements, more hook & filter friendly)
+ We've completely rewritten the LifterLMS Engagement Handler methods (`class LLMS_Engagements`) and added some new engagement actions.
+ The rewrite unifies engagement handling into one function that can be easily hooked into by plugin and theme developers.
+ We've moved any engagment related data out of the main `LifterLMS` class
+ Fixed the broken engagement delay functionality which now runs of `wp_schedule_single_event`. This makes the function more reliable and also keeps it within the traditional WordPress architecture.
+ Added an additional check before sending emails or triggering any engagments that will prevent the achievement from being awarded or the email from being sent if the post is in not published. This fixes an issue that caused emails in the trash from still being emailed.
+ Removed the unused `LLMS_Engagements` class and file
+ Added two new engagment trigger events "Membership Purchased" and "Course Purchased"
+ Deprecated actions -- Removes some redundancy because the triggering actions (`lifterlms_course_completed` triggered the notification action, instead `lifterlms_course_completed` simply triggers the engagement now).
+ `lifterlms_lesson_completed_notification`
+ `lifterlms_section_completed_notification`
+ `lifterlms_course_completed_notification`
+ `lifterlms_course_track_completed_notification`
+ `lifterlms_course_completed_notification`
+ `lifterlms_user_purchased_product_notification`
+ `lifterlms_created_person_notification`
##### Bug and Issue fixes
+ Adjusted the size of the LifterLMS Admin Menu Icon. It was super big because of, perhaps, some overcompensation. It caused an issue on Gravity Forms admin pages for some reason (we didn't ever determine why) but we've resolved it by using an appropriately sized icon.
+ Fixed a CSS issue that caused some weirdness on the course archive page on mobile devices
+ Fixed an issue with automated membership expirations
+ Fixed a function that should have been called statically in `LLMS_Ajax` class
+ Fixed a ton of issues related to the triggering of engagements and cleaned up a lot of classes and functions associated with them.
+ Properly instatiate `LifterLMS` singleton via LLMS() function and prevent direct instantiation of the class via `new LifterLMS()`.
+ Removed the deprecated 'class.llms.email.person.new.php' file as it was rendered useless a long time ago and caused some duplicate emails.
= v2.2.3 - 2016/03/15 =
-----------------------
##### Translations
+ Added translation functions around quite a few untranslated strings. Thanks to the team at [Netzstrategen](http://netzstrategen.com)
+ Added German translation .mo and .po files again thanks to the team at [Netzstrategen](http://netzstrategen.com)
##### Student Enrollment Functions
We've refactored a bit of our code related to how to programmatically enroll a student in a course or membership during registration and purchase.
A new class `LLMS_Student` makes working with a LifterLMS student (user) a bit easier. We'll begin exposing user meta data through this class as we continue to improve the usability of the codebase for other developers.
We've also created a simple enrollment function `llms_enroll_student()` which enables programmatic enrollment to LifterLMS courses or memberships. This was previously handled in a pretty schizophrenic manner and this unifies various ways of enrollment into one clean function. All enrollment moving forward will use this functions.
The enrollment function calls a new action as well as calling existing enrollment-related actions:
+ `before_llms_user_enrollment` - called immediately prior to begining the user enrollment function
+ `llms_user_enrolled_in_course` (previously existing)
+ `llms_user_added_to_membership_level` (previously existing)
This also addresses an issue that prevented the `llms_user_enrolled_in_course` action from being called when a user was auto-enrolled in a course because they joined a membership level that included auto-enrollment in one or more courses.
##### Bug and Issue fixes
+ Fixed an inconsistency in the way membership IDs were being saved to the postmeta table that would cause courses to not *appear* restricted on the Membership Enrollment tab, even though they were actually restricted and functioning correctly.
+ New lines are now preserved in the quiz question clarification text areas, thanks to @atimmer
+ Escape HTML in the quiz question description fields on the admin panel to allow outputting html without rendering it, thanks @atimmer
+ Fixed an issue related to the outputting of restricted course and membership content which caused errors on certain themes
+ added a clearfix to the `.llms-lesson-preview` element on the course syllabus template
+ Removed the `class.llms.person.handler.php` file as it wasn't actually being used by anything anywhere and contained no functions
+ Removed some unused and depreacted class functions from the LLMS Student Metabox class
+ Fixed an undefined javascript error resulting from code cleanup in 2.2.2. This issue prevented Vouchers from being published. The code has been further cleaned.
= v2.2.2 - 2016/03/15 =
-----------------------
##### One step closer to a public GitHub repository
We've made a assive syntatical update to almost every file in the codebase for a (finally) unified and clearly defined coding standard. This puts us one step closer to beginning to open our GitHub repo publicly and accepting pull requests and contributions from developers everywhere.
Okay, we haven't exactly _clearly_ defined it yet. We're working off a modified version of the [WordPress Coding Standards](https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/).
Notable exceptions are related to file names because Thomas Levy didn't have the energy to rename a bunch of files as well as ignoring the Yoda Conditions standards. We'll be fixing these deviations in the future.
##### Quizzes
+ Created new time calculation and humanizing functions related to the display of quiz time on quiz results pages
+ Quizzes will now display hours, minutes, and seconds depending on the time it took to take the quiz
+ Timing calculations are more accurate and quizzes that are completed in less than 60 seconds will not bug out and display incredibly long lengths
+ Resolved an issue that occassionally prevented quiz data from saving during the last question causing the quiz to hang in an uncompletable state
+ Quiz questions now have a default point value of 1, thanks @atimmer
+ Quiz question answers now accept valid HTML as per `wp_kses_post`, thanks again to @atimmer
##### Translations
+ Thanks to @AndreaBarghigiani and the team at [codeat](http://codeat.co/) LifterLMS now ships with Italian language files!
##### Issue and bug resolutions
+ Fixed a restriction issue that would happen when individual lessons were restricted to a membership level
+ Fixed an issue with the `[lifterlms_my_account]` shortcode that was preventing the shortcode from working on the Divi theme.
+ Engagements will now only be triggered if they are "Published". Resolves an issue where draft or trashed engagements were still firing.
+ Fixed CSS overflow on LifterLMS Meta boxes. Fixes an issue where select boxes would be hidden inside a metabox.
+ Changed the ConvertKit extension banner image on the LifterLMS general settings page and replaced added a link to the extension now that it's available.
+ Added a link to the new ConvertKit extension to the .org readme
+ When restricting an entire site to a membership level the page selected as the "Terms and Conditions" page in LifterLMS settings will automatically bypass Membership restriction settings. This will allow your unregistered users to actually read the T&C that they're confirming during registration.
+ CSS fix for `has-icon` class on course syllabus
+ Fixed a PHP warning that displayed when purchasing a membership with no auto-enrollment courses
+ Fixed an undefined variable warning in the WooCommerce integration class
+ Fixed a few templating issues related to certificates
+ Added a few new CSS rules that should make certificates more compatible across various themes
+ Added a css class to LifterLMS Next Lesson buttons, `llms-next-lesson`
+ Updated the scheduled event name for cleaning up LifterLMS session data from the WP database. It had a conflicting name with the scheduled event for expiring LifterLMS memberships.
= v2.2.1 - 2016/03/07 =
-----------------------
+ Added a few actions to the `class.llms.voucher.php` class.
= v2.2.0 - 2016/03/04 =
-----------------------
##### Translations
+ We've updated our .pot file for the first time in quite a while. We're really sorry for de-emphasizing translation. An updated .pot file will now accompany each version of LifterLMS whenever a translatable string is adjusted or when a new string is added.
+ We've also made it easier to include custom translations. Read our [Translation Guide](https://lifterlms.readme.io/docs/getting-started-with-translation).
##### Certificate Background Images
_We've completely rewritten the certificates template (but it's all backwards compatible)._
+ New filters are available to make customizing the certificate template easier for developers. All new filters are documented at [https://lifterlms.readme.io/docs/functions-certificates](https://lifterlms.readme.io/docs/functions-certificates).
+ A new WordPress Image Size is now available and will be used for generating the image used by default when uploading certificates to the media library. Fore more information on these new settings visit [https://lifterlms.com/docs/certificate-background-image-sizes/](https://lifterlms.com/docs/certificate-background-image-sizes/).
##### Course and Membership Pricing & Sales
+ Sale price start and end date are now completely optional.
+ Provide neither a start date nor an end date to have a sale run indefinetly
+ Provide a start date with no end date to have a sale start at a pre-determined time with no pre-determined ending
+ Provide an end date with no start date to have a sale end a a pre-determined date but start immediately
+ Provide a start date and an end date to have a sale run for a pre-determined period of time
+ Optimized the `LLMS_Product` class to provide more reliable and extenable use of the class
+ The templates related to pricing functions have been refactored. Affected templates include: "templates/course/price.php", "templates/loop/price.php", "templates/membership/price.php"
+ Many people complained about the size of the `.llms-price` element on course and membership tiles on loop pages. We removed the inflated size and will now default to your theme for sizing. You selector remains the same if you wish to customize the size of the price text.
##### Coupon Updates
+ Coupons can (finally) be removed after being applied!
+ Coupons can now be restricted to specific courses and/or memberships
+ Percentage based coupons can no longer be created with a value larger than 100%
+ Added numeric restrictions to usage and coupon amount fieds on the admin panel
+ Fixed a programmatic error that prevented product restrictions from being entirely removed
+ Fixed a few instances where hardcoded a US Dollar symbol ($) where a dynamic currency symbol should have been displayed.
##### Wow Bad Syntax, Very Typo, Such Grammar, So Undefined
+ Fixed a typo in filter associated with modifying the registration of the lesson post type (`lifterlms_register_post_type_lesson`)
+ Fixed a grammatical error in a Membership restriction message
+ Fixed a syntax error in "/templates/course/outline-list-small.php" that prevented the `done` CSS class from being properly applied to completed lessons
+ Fixed a few typos and grammatical errors on the Course and Membership settings metaboxes
+ Fixed an undefined variable in "templates/course/syllabus.php"
+ Fixed an issue on the system report that prevented the "Courses Page" from being reported properly
+ Fixed an issue that caused PHP warnings on the admin panel for students or WP users with no LifterLMS menu permissions
+ Fixed an installation warning caused by a reference to an undefined class variable
+ Fixed an HTML character encoding issue that caused `–` to display on the admin panel when viewing LifterLMS Orders
+ Fixed an undefined variable found during engagment triggering for non-email engagements.
##### Additional, less exciting updates
+ Added input type restrictions to course & membership price fields.
+ The "Emails" LifterLMS Settings Tab has been renamed "Engagements." All Email settings are found under this tab as well as some new settings related to other kinds of LifterLMS engagements.
+ Added `the_content` filter to the content of emails sent by LifterLMS
+ Fixed some CSS issues on Voucher screens
+ Updated Courses settings retrieval function to retrieve the correct "shop" page id
+ Added translation functions to voucher export meta box class
+ Vouchers Export metabox will only allow export after a voucher has been published. This prevent's an issue caused by attempting to export voucher codes before they were saved in the database via the publish / save action.
+ Vouchers can no longer be saved with a use of "0"
+ added a CSS class for various syllabus outputs that notes that the lesson has an icon. Previously CSS relied on "is-complete" to output styles for having an icon but with the addition of placeholders the "is-complete" is used only to note that the lesson is completed and "has-icon" is a more semantic class that applies to both complete and incomplete lessons with an icon.
+ Removed the membership restriction metabox from some post types where it shouldn't have been displaying.
+ admin select fields now have an option `allow_null` (default to "true") which can be set to `false` in order to prevent the output of the default "None" option
= v2.1.1 - 2016/02/15 =
-----------------------
##### System Report
+ A new LifterLMS Admin Page is available which reports information about various server, WordPress, and LifterLMS settings that will help expedite support requests.
+ More information about the system report is available at [https://lifterlms.com/docs/how-to-use-the-lifterlms-system-report/](https://lifterlms.com/docs/how-to-use-the-lifterlms-system-report/)
##### Additional Updates
+ Fixed a javascript issue which prevented users from saving vouchers
+ Cleaned up formatting in a large number of included PHP files
= v2.0.5 - 2016/02/15 =
-----------------------
+ PayPal requests now using HTTP Version 1.1 in preparation for June 2016 [TLS 1.2 and HTTP/1.1 Updates](https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1914&viewlocale=en_US). This resolves user's inability to begin PayPal checkout when using Sandbox mode.
+ Updated deprecated function opt out to run off a constant that can be defined in `wp-config.php` instead of using a filter that is hard to use in the way that it is intended.
= v2.0.4 - 2016/02/15 =
-----------------------
+ Fixed a typo on the `class_exists` check in the deprecated functions file
+ added a filter so that progressive users can opt out of loading the deprecated functions file
= v2.0.3 - 2016/02/12 =
-----------------------
+ Removed an unsed quiz stub
= v2.0.2 - 2016/02/11 =
-----------------------
+ Bugfix: removed a progressive syntax array that caused fatal errors on older versions of PHP
= v2.0.1 - 2016/02/11 =
-----------------------
##### Updated General Settings Screen
+ Improved the general settings interface to be more visually appealing and to provide some ad space to alert customers to other LifterLMS products and information.
+ Moved Currency options to the Checkout settings screen
##### Bug Fixes
+ Properly initialized jQuery on the vouchers metabox admin scripts
+ removed some php shortcut echos (`<?= $var; ?>`)
+ Resolve issue where courses that are available with a membership or on it's own outside of the membership would prevent users from accessing content if they were not a member.
+ Fixed a few files where undefined variables were being referenced and generating php notices
+ removed an call to a WordPress core function that has never existed. Not sure what we were thinking there...
###### Enhancements
+ Updated CSS to provide better course syllabus layout on smaller screens
+ Added validation to prevent against duplicate voucher code creation
= v2.0.0 - 2016/02/04 =
-----------------------
##### Auto-advancing lessons
+ We've heard your feedback and added a new global course option which will auto-advance a student to the next lesson upon lesson completion.
##### Bug Fixes
+ Added spaces between numbers and "of" on the counter for course syllabus templates
+ Removed a template hook that was creating duplicate lesson thumbnails on quite a few themes
##### Membership Admin Improvements
Visit the "Enrollment" tab on any membership to see some new additions to make managing your memberships easier.
+ You can now add courses to and remove courses from a Membership from the Membership itself
+ You can now opt to automatically enroll students in a course (or multiple courses) when they sign up for a membership by checking "Auto Enroll" next to the course on the Membership enrollment tab
##### Student Enrollment & Removal on Courses Admin Screen
We've updated the Students tab interface for performance and usability!
+ AJAX enabled searching by student name and or email
+ Increased performance for course page load by only calling student information when needed. This resolves a bug identified by users with large user databases and/or low-powered servers.
+ Allow for addition or removal of several students at a time.
##### Syllabus Template
+ Added a Course setting to optionally enable Lesson Thumbnails on the Course Syllabus
+ Added a Course setting Display greyed out lesson completion checkmark icons on lessons not competed in the course syllabus
+ Rewored CSS on the course syllabus to rely on floats rather than absolute positioning, should allow for more robust custimization with less frustration
+ Refactored the syllabus template at "templates/course/syllabus.php" for better performance and readability
##### Updates and enhancements
+ User email is now displayed on the "Students" table on student analytics screens
+ Membership now has it's own admin menu
+ Reordered the LifterLMS admin menu and submenu items
+ Removed membership specific taxonomies from courses
+ Removed course specific taxonomies from memberships
+ Coupon code is now a required field when creating a coupon
+ "Humbled" the metabox on all post types that restricts the post to a membership. The metabox would previously gain priority over the WordPress publishing actions metabox. The priority has been reduced to "default" and will to fall into line with all other metaboxes on the screen and appear based on registration priority. If you can't find the metabox, SCROLL DOWN! If you want to put it back up on the top, you can simply drag it up there and WordPress will save your preference.
##### Deprecated Classes
We've added a "deprecated" file which holds a few stubs for classes and functions deprecated below as to prevent fatal errors. The functions and classes in the deprecated class are classes which we know are being utilized by approved LifterLMS extensions and will allow users to upgrade LifterLMS without upgrade extensions without breaking their websites!
+ `LLMS_Activate` which as previously used to activate the plugin for updates via the LifterLMS Update Server and is no longer required.
+ PUC (plugin update checker) Library has been completely removed as it is no longer required for plugin updates.
+ `LLMS_Analytics_Dashboard` was removed as it was a stub that was never used and shouldn't have ever been released as a part of the LifterLMS codebase. I can't believe no one reported this bug!
##### Deprecated Functions
+ `lifterlms_template_section_syllabus()`
**The following are officiallby deprecated and removed to prevent WooCommerce compatibility conflicts**
+ `is_shop()` replaced by `is_llms_shop()`
+ `is_account_page()` replaced by `is_llms_account_page()`
+ `is_checkout()` replaced by `is_llms_checkot()`
##### Deprecated Templates
+ templates/course/section_syllabus.php
##### New Account Dashboard Filters
*[View documentation for more information](https://lifterlms.readme.io/docs/filters-account)*
+ `lifterlms_account_greeting`
+ `lifterlms_my_courses_title`
+ `lifterlms_my_courses_enrollment_status_html`
+ `lifterlms_my_courses_start_date_html`
+ `lifterlms_my_courses_course_button_text`
+ `lifterlms_my_certificates_title`
##### New Checkout Page Filters:
*[View documentation for more information](https://lifterlms.readme.io/docs/filters-checkout)*
+ `lifterlms_checkout_user_logged_in_output`
+ `lifterlms_checkout_user_not_logged_in_output`
##### New Course Filters:
*[View documentation for more information](https://lifterlms.readme.io/docs/filters-course)*
+ `lifterlms_product_purchase_account_redirect`
+ `lifterlms_product_purchase_redirect_membership_required`
+ `lifterlms_product_purchase_checkout_redirect`
+ `lifterlms_product_purchase_membership_redirect`
+ `lifterlms_lesson_complete_icon`
= v1.5.0 - 2016/01/22 =
-----------------------
##### WooCommerce Integration Enhancements
__NOTE: The following enhancements only apply when the WooCommerce Integration is enabled__
**Always redirect to the WooCommerce Cart when a SKU Matched Product can be found**
+ LifterLMS Products (courses and memberships) which are SKU matched to a WooCommerce product will now automatically add the related WooCommerce product to the WooCommerce shopping cart and then automatically redirect the visitor to the WooCommerce cart when the visitor attempts to enroll in a course or membership from the LifterLMS course or membership page.
+ If no WooCommerce product is found via a SKU match, the user will proceed to the LifterLMS checkout.
+ This will enable you to determine which Cart you want a user to use on a product by product basis. You may sell certain courses via WooCommerce and others via LifterLMS (should you choose to do so).
**Multiple Item Checkout**
+ When a WooCommerce order is complete user's will now be automatically enrolled in **all** courses and/or memberships in the WooCommerce order. This improves upon a previously limitation that would only allow WooCommerce checkout with one LifterLMS product at a time.
+ The products in the order will be intelligently SKU matched to LifterLMS Courses or Memberships.
+ You may also mix and match between WooCommerce products matched to LifterLMS products and those which are not matched to LifterLMS products. For example, your customers may now buy a Course via SKU matching as well as a T-Shirt that is not matched to a LifterLMS course via a SKU.
##### Other Fixes and improvements
+ Fixed a bug that caused quiz results to display for users who had never taken the quiz.
+ Added Wistia as an oEmbed provider to fix an issue related to default oembed handling in WordPress 4.4.
+ added a `.cc_cvv` class that mimics the existing `#cc_cvv` styles to allow gateway extensions to change the ID of the field in their credit card forms
+ Added support for new 1.4.5 capability fixes to be also be reflected under the "+New" menu item in the WP Admin Bar. There are no changes to the filters, the capability filters will simply also remove restricted post types from the admin bar now (as they should).
+ Tested and compatible up to WordPress 4.4.1
##### Deprecations
**The following functions have been staged for deprecation in LifterLMS 2.0!**
+ Setup the `is_account_page()` function to be replaced by `is_llms_account_page()` function. The original causes conflicts when WooCommerce is installed as WooCommerce includes a core function by the same name. All references to `is_account_page()` in LifterLMS have been removed and the original has been left to prevent issues with developers currently relying on the LifterLMS version of thefunction.
+ Setup the `is_checkout()` function to be replaced by `is_llms_checkout()` function. The original causes conflicts when WooCommerce is installed as WooCommerce includes a core function by the same name. All references to `is_checkout()` in LifterLMS have been removed and the original has been left to prevent issues with developers currently relying on the LifterLMS version of thefunction.
= v1.4.5 - 2016/01/13 =
-----------------------
+ Significant improvements to LifterLMS admin permissions as well as a hardening of permissions. Previously LifterLMS admin screens and menus were available to any users with `edit_posts` capabilities. This has been changed to `manage_options`. Filters for all screens and menus have been added with this release. If you're site currently relies on users with `edit_posts` to be able to access LifterLMS settings and analytics screens you must utilize these new filters in order to maintain their access. Please see full documentation on the new filters at [https://lifterlms.readme.io/docs/filters-admin-menu-and-screen-permissions](https://lifterlms.readme.io/docs/filters-admin-menu-and-screen-permissions). **Please consider testing your changes outside of production before updating to LifterLMS 1.4.5 in production.**
+ Allow "Payment Method" to be translated on the "Confirm Payment" screen
+ Allow the name of the payment gateway to be filtered on the "Confirm Payment" screen
+ Added pagination support to lifterlms membership archive pages
+ Fixed a bug related to some required global variables for quizzes and lessons being incorrectly set on certain hosts
+ updated readme file to remove incomplete documentation
+ Added Chosen multi-select options to admin panel metaboxes (settings and posts)
+ Added two new actions that developers can hook into:
+ `llms_user_enrolled_in_course`, called when users are enrolled in a course. Usage details available [here](https://lifterlms.readme.io/docs/actions-user#llms_user_enrolled_in_course).
+ `llms_user_added_to_membership_level`, called when users are added to a membership level. Usage details available [here](https://lifterlms.readme.io/docs/actions-user#llms_user_added_to_membership_level).
= v1.4.4 - 2015/12/21 =
-----------------------
##### Updates
+ My account page can now (optionally) display a list of memberships a student is currently enrolled in
+ Student analytics on the admin panel display student's Memberships
+ Student analytics on the admin panel will now display student's progress through courses in addition to their current enrollment status.
+ Custom taxonomy archive templates for Course tags, categories, tracks, and difficulties now exist and properly function.
+ Custom taxonomy archive templates for Membership categories and tags now exist and properly function.
+ Added the `[lifterlms_memberships]` shortcode which was documented but never implemented. Details on usage available at [https://lifterlms.readme.io/docs/short-codes#memberships-lifterlms_memberships](https://lifterlms.readme.io/docs/short-codes#memberships-lifterlms_memberships)
+ Added basic styles to LifterLMS pagination HTML elements (elements with class `.llms-pagination`) which formerly had no associated CSS.
##### Deprecations
+ Setup the `is_shop()` function to be replaced by `is_llms_shop()` function. The original causes conflicts when WooCommerce is installed as WooCommerce includes a core function by the same name. All references to `is_shop()` in LifterLMS have been removed and the original has been left to prevent issues with developers currently relying on the LifterLMS version of thefunction. It *will* be removed in the next major update (2.0) and will be noted as an officially deprecated feature at that time.
##### Bug fixes
+ Fixed pagination issues when using the `[lifterlms_courses]` shortcode
+ Fixed an issue with the `is_shop()` function that prevented courses per page option from functioning properly on the default course archive page
+ Student analytics profile on admin panel will display the correct number of memberships the student is enrolled in.
+ Fixed a small CSS issue that caused extra white space to be displayed above Course or Membership tiles on archive pages when using the WordPress Twentyfifteen default theme
##### Miscellaneus
+ Account settings screen displays the correct title ("Account Settings" it previously said "Archive Settings")
+ Made language changes to the LifterLMS settings intro screen copy
+ Added link to CourseClinic on settings intro screen
+ Added link to LifterLMS documentation on the settings intro screen
= v1.4.3 - 2015/12/11 =
-----------------------
+ Fixed an issue that could prevent some older servers from being able to run LifterLMS
= v1.4.2 - 2015/12/10 =
-----------------------
+ Tested and compatible with WordPress version 4.4
+ BugFixes: fixed issue in `llms_featured_img()` that was preventing the `$size` variable from being passed to the WP core function being utilized.
+ BugFixes: correctly handling conflicts with Plugin Update library
= v1.4.1 - 2015/12/02 =
-----------------------
+ Feature: Custom single price text - Display custom text for the single price on the courses and course page. Custom field does not require a single payment price be set. IE: Free!
+ Feature: Custom Purchase Course Button Text Option. Change the text of the Take This Course button in Settings->Courses.
+ Feature: New Become A Member button on courses that are restricted to memberships.
+ Feature: Custom Become A Member Text Option. Change the text of the become a member button in Settings->Courses.
+ Feature: Paypal Debug Mode. Enable debug mode in Settings->Gateways to view responses from Paypal API when errors occur.
+ Updates: Updated support links in Settings->General.
+ Updates: added minor styling to course page to increase margin and padding for some themes.
+ Updates: Achievement content now available to pull into custom templates. The Achievement content is not by default displayed but can now be used in custom templates.
+ BugFixes: Resolved issue with no default price selected at checkout when only recurring option existed.
+ BugFixes: Lesson prerequisite now alert the user and provide a link to redirect the user to the next required lesson in the course.
+ BugFixes: Paypal errors now return error message instead of white screen when Paypal API fails.
+ BugFixes: Corrected JavaScript error with modals on course edit page in Internet Explorer 11.
= v1.4.0 - 2015/10/29 =
-----------------------
+ Feature: Free lessons - demo lessons that can be taken at any time by any user
+ Feature: Guest lessons - demo lessons that can be taken by a non-logged in user
+ Feature: Random quiz question - quiz questions can now be set to be in user set order or random order
+ Updates: Automatically registers appropriate sidebars for Genesis theme
+ Updates: Backend file cleanup
+ Updates: Text cleanup
+ Updates: Adds greater localization support (more strings to translate! yay!)
+ Updates: Cleans up some unneccessary console.log() calls
+ Updates: Removes mass of commented out code (cleaner reading)
+ Updates: 'Next Lesson' button added after successful completion of quiz
+ Updates: 'Next Lesson' button at bottom of lesson properly gets starting lesson of next section at the end of the previous section
+ Updates: 'Previous Lesson' button at bottom of lesson will now properly get last lesson of previous section (if applicable)
+ Updates: Move Registration Form to global templates to allow users to disable registration on login page but use registration form on custom page.
+ BugFixes: WordPress pages are now properly restricted by memberships
+ BugFixes: Fixes bug that caused order screen to act up if user was deleted
+ BugFixes: Resolves nastly little bug that caused syllabus numbers to be out of whack
+ BugFixes: Resolved error with WooCommerce integration where courses would not always register the user
+ BugFixes: Corrected CSS conflict with Bridge theme settings page
= v1.3.10 - 2015/10/15 =
-----------------------
+ Updates: Clarifies some prerequisite text
+ Updates: Quiz questions are now randomized!
+ Updates: Fixes small CSS issue
+ BugFixes: Resolves fatal errors with a small subset of premium themes
= v1.3.9 - 2015/10/5 =
-----------------------
+ BugFixes: Removes conflict with Yoast SEO
+ BugFixes: Fixes CSS issues with box-sizing takeover
+ Feature: New Settings Tile: Session Management. Found at LifterLMS->Settings->General.
+ Feature: Clear User Session Tool. You can now clear all LifterLMS user session data from your site in LifterLMS->Settings->General
+ Updates: Backend code cleanup
= v1.3.8 - 2015/10/02 =
-----------------------
+ BugFixes: Fixes Random error notices
+ Updates: Updates email template handler
= v1.3.7 - 2015/09/25 =
-----------------------
+ Updates: Adds Spanish translation
+ Updates: Adds new filter 'lifterlms_single_payment_text' to customize single payment string on checkout
+ Updates: Student analytics now indicate which courses a student has completed
+ BugFixes: Resolved security issue with WordPress searches and lessons
+ BugFixes: Fixes analytics bug that potentially arises after a course is deleted
= v1.3.6 - 2015/09/18 =
-----------------------
+ BugFixes: Fixes pesky Zend Error that plagued some unfortunate victims
+ BugFixes: Students can now be properly deleted from the course
+ BugFixes: Fixes random class redeclaration error messages
+ Updates: Adds new filter 'lifterlms_quiz_passed' to customize 'Passed' text after quiz
+ Updates: Adds new filter 'lifterlms_quiz_failed' to customize 'Failed' text after quiz
= v1.3.5 - 2015/09/11 =
-----------------------
+ Revisions: Fixes typos
+ Updates: Adds sidebar functionality to various themes
= v1.3.4 - 2015/09/04 =
-----------------------
+ BugFixes: Fixes bug with featured image on course page
+ BugFixes: Fixes issue with lesson completed percentage on analytics page
= v1.3.3 - 2015/09/01 =
-----------------------
+ Updates: Removes depricated plugin updater
+ Updates: Adds Course Track prerequisite
+ Updates: Various text fixes
+ BugFixes: Fixes lesson name on prerequisite notification
+ BugFixes: Fixes critical error with WordPress customizer
= v1.3.2 - 2015/08/30 =
-----------------------
+ Hotfix: resolves issues with sidebar shortcodes
+ Updates: Text clarifications
= v1.3.1 - 2015/08/28 =
-----------------------
+ Hotfix: resolves issue with ajax url
= v1.3.0 - 2015/08/28 =
-----------------------
+ Improved popopver behavior in course creation.
+ BugFixnig. Prevent multiple lesson and section form submition
+ Fixed typos at backend quiz page
+ Fixed check for update bug when plugin isn't properly activated.
+ BugFixing, quiz post type should show author metabox
+ Added course category filter to lifter_lms shortcode
+ BugFixing, typo in [lifterlms_course_progess shortcode]
+ BugFixing, Analytics shouldn't fetch students meta info from users were deleted.
+ Adds in basic review functionality
+ Updates plugin-updater to remedy PHP conflicts
+ Fixes date bug in Analytics
+ Cleans up jQuery console messages
+ Adds in course tracks
= v1.2.8 - 2015-07-17 =
-----------------------
+ Updated Portuguese translation file
+ Fixed issue where quiz score could not be equal to required grade.
+ New Feature: Quiz Results Summary. Display the quiz results to the user on quiz completion.
+ New feature: Clarification. Display information about correct and incorrect answers to users
+ New Feature: Display correct answers to user on quiz completion
+ Removed ability to add negative time limit to quiz
+ New Membership feature: Make membership archive links go directly to checkout. Setting allows you to skip membership sales page and send users directly to registration and checkout.
+ Sidebar support for prototype theme
+ Sidebar support for X theme
+ Sidebar support for WooCanvas
+ New Shortcode: [lifterlms_hide_content]: Use to restrict content on a page, course or lesson to a specific membership. Pass the post id of the membership you want to restrict the content to. Example: [lifterlms_hide_content membership="5"]
+ New updates to gulp build process
+ Class autoloading and LLMS namespace introduced for more efficient coding.
= v1.2.7 - 2015-06-05 =
-----------------------
+ Minor bug fix with lesson redirect to quiz
+ Minor change to global Course object instantiation.
+ Bug Fix: Remove student from course
+ Bug Fix: Appearance Menus missing select field (THANKS ANDREA!)
+ New Course Setting: Hide Course Outline on course page
+ New Shortcode: [lifterlms_course_outline] - displays course outline with settings (see documentation)
+ Membership metabox design update
+ Certificate metabox design update
+ Achievement metabox design update
+ Lesson metabox design update
+ Emails metabox design update
+ Coupons metabox design update
+ Update to certificate design (better alignment and theme functionality)
+ Better theme sidebar support
+ More awesome control for devlopers building new settings for LifterLMS
+ Advanced filter system for metabox fields with finite control for 3rd party developers.
+ Woocommerce confict correction to archive templates
+ Style updates to allow themes better control on design
= v1.2.6 - 2015-04-28 =
-----------------------
+ Corrected issue with lesson re-order on save
+ corrected html formatting issue on purchase page
+ corrected html formatting issue on course page
= v1.2.5 - 2015-04-23 =
-----------------------
+ Corrected excerpt to not pull in lesson navigation
+ Modified metabox api for better extension integration
+ Corrected issue with order not displaying all information if coupon was not applied to order
= v1.2.4 - 2015-04-22 =
-----------------------
+ Moved All Course metaboxes to global Course Options Metabox
+ Move Enrolled and Non-Enrolled user wysiwyg post editors to Options Metabox
+ Removed Course Syllabus metabox, Added Course Outline Metabox
+ Set priority of Course Outline and Course Options Metabox to top
+ Added ability to Create new section to Course Outline
+ Added abiliyt to Create new lesson to Course Outline
+ Added ability to add existing Lesson to Course Outline
+ Added Lesson duplicate functionality when adding lesson previously assigned to another course.
+ Added ability to drag lessons between sections in Course Outline