diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index cb33a96eab..0000000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,34 +0,0 @@ -vesion: '2' - -exclude_patterns: - # Ignore dot directories. - - .changelogs/ - - .config/ - - .github/ - - .source/ - - .wordpress-org - - ._private/ - # Misc non-code directories. - - dist/ - - docs/ - - gulpfile.js/ - - gulpfile.js - - i18n/ - - languages/ - - libraries/ - - tests/ - - tmp/ - # Included vendor packages. - - '**/vendor/' - - '**/node_modules/' - # Minified scripts. - - '**/*.min.js' - - '**/index.php' - - '**/*.asset.php' - - assets/js/llms.js - - assets/js/llms-admin-addons.js - - assets/js/llms-builder.js - - assets/js/llms-components.js - - assets/js/llms-icons.js - - assets/js/llms-metaboxes.js - - assets/js/llms-utils.js diff --git a/.config/travis/add-on.yml b/.config/travis/add-on.yml deleted file mode 100644 index 74e475dd46..0000000000 --- a/.config/travis/add-on.yml +++ /dev/null @@ -1,25 +0,0 @@ -# -# This travis config file is intended to be used by LifterLMS Add-ons. -# -# Example usage in .travis.yml: -# -# import: -# - gocodebox/lifterlms:.config/travis/add-on.yml -# - -# Import main configs. -import: - - gocodebox/lifterlms:.config/travis/main.yml - -# If $LLMS_BRANCH is specified, install the plugin from git. -install: - - | - if [ ! -z "$LLMS_BRANCH" ]; then - ./vendor/bin/llms-tests plugin https://github.com/gocodebox/lifterlms.git@${LLMS_BRANCH} - fi - -# Test against the "nightly" dev branch of the the LifterLMS core. -jobs: - include: - - php: "8.0" - env: LLMS_BRANCH=dev WP_VERSION=latest diff --git a/.config/travis/e2e.yml b/.config/travis/e2e.yml deleted file mode 100644 index 39e269b8cb..0000000000 --- a/.config/travis/e2e.yml +++ /dev/null @@ -1,20 +0,0 @@ -addons: - artifacts: - paths: - - ./tmp/e2e-screenshots - -services: - - xvfb - - docker - -jobs: - allow_failures: - - php: "8.0" - env: WP_VERSION=nightly LLMS_TRAVIS_TESTS=E2E - - include: - - php: "8.0" - env: WP_VERSION=latest LLMS_TRAVIS_TESTS=E2E - - php: "8.0" - env: WP_VERSION=nightly LLMS_TRAVIS_TESTS=E2E - diff --git a/.config/travis/eslint.yml b/.config/travis/eslint.yml deleted file mode 100644 index 1fbeaf66da..0000000000 --- a/.config/travis/eslint.yml +++ /dev/null @@ -1,23 +0,0 @@ -# -# TravisCI config file partial for running an eslint job -# -# This partial is intended to be used alongside the main.yml config found within this same directory. -# -# Example usage in .travis.yml: -# -# import: -# - gocodebox/lifterlms:.config/travis/main.yml -# - gocodebox/lifterlms:.config/travis/eslint.yml -# - -jobs: - include: - - env: ESLINT=1 - language: node_js - node_js: lts/* - before_install: - install: - - npm ci - script: - - npm run lint:js - after_script: diff --git a/.config/travis/main.yml b/.config/travis/main.yml deleted file mode 100644 index 55acdeae12..0000000000 --- a/.config/travis/main.yml +++ /dev/null @@ -1,129 +0,0 @@ -os: linux -dist: bionic -language: php - -services: - - mysql - -cache: - directories: - - node_modules - - vendor - - $HOME/.composer/cache - -env: - global: - - TESTS_DB_HOST=localhost - - TESTS_DB_NAME=llms_tests - - TESTS_DB_PASS="" - jobs: - - WP_VERSION=latest # 5.8 - - WP_VERSION="5.7" - - WP_VERSION="5.6" - - WP_VERSION="5.5" - - WP_VERSION="5.4" - -php: - - "8.0" - - "7.4" - - "7.3" - -jobs: - fast_finish: true - - allow_failures: - - env: WP_VERSION=nightly - - env: WP_VERSION=latest RUN_CODE_COVERAGE=1 - - php: nightly - - exclude: - # These WP Versions don't work on PHP 8.0 - - php: "8.0" - env: WP_VERSION="5.5" - - php: "8.0" - env: WP_VERSION="5.4" - - include: - - php: "8.0" - env: PHPCS=1 - - php: nightly - env: WP_VERSION=latest - - php: "8.0" - env: WP_VERSION=nightly - - php: "7.4" - env: WP_VERSION=latest RUN_CODE_COVERAGE=1 - before_script: - # Download CodeClimate Test Reporter - - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - - chmod +x ./cc-test-reporter - script: - - ./cc-test-reporter before-build - - composer run-script tests-run -- --coverage-clover clover.xml - after_script: - - ./cc-test-reporter after-build --coverage-input-type clover --exit-code $TRAVIS_TEST_RESULT - -before_install: - # Disable xDebug for faster builds - - | - if [ "1" != $RUN_CODE_COVERAGE ] && [ -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ]; then - phpenv config-rm xdebug.ini - fi - # Raise PHP memory limit to 2048MB - - echo 'memory_limit = 2048M' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini - # Install composer deps. - - | - if [ "8" != $( php -r "echo PHP_MAJOR_VERSION;" ) ]; then - composer install - else - composer run install-php8 - fi - -install: - - | - if [ "E2E" = "$LLMS_TRAVIS_TESTS" ]; then - sudo rm /usr/local/bin/docker-compose - curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > docker-compose - chmod +x docker-compose - sudo mv docker-compose /usr/local/bin - nvm install --lts - npm ci - [[ -n $DOCKER_USERNAME ]] && [[ -n $DOCKER_PASSWORD ]] && echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - composer run env up - composer run env:setup - if [ "latest" != $WP_VERSION ]; then - ./vendor/bin/llms-env version $WP_VERSION - fi; - WP_VERSION_REAL=$( ./vendor/bin/llms-env wp core version ) - echo $WP_VERSION_REAL - elif [ "1" = "$PHPCS" ]; then - echo "Nothing to install" - else - composer run tests-install - fi - -script: - - | - if [ "E2E" = "$LLMS_TRAVIS_TESTS" ]; then - WP_VERSION=$WP_VERSION_REAL npm run test - elif [ "1" = "$PHPCS" ]; then - if [ "trunk" = "$TRAVIS_BRANCH" ]; then - composer run-script check-cs-errors - else - composer run-script check-cs-errors -- $( git diff --name-only --diff-filter=ACMR $TRAVIS_COMMIT_RANGE ) - fi - else - composer run-script tests-run - fi - -after_script: - - | - if [ "E2E" = "$LLMS_TRAVIS_TESTS" ]; then - ./vendor/bin/llms-env down - fi - -notifications: - slack: - on_success: change - on_failure: always - rooms: - - secure: VzwXDPjuNCrKed9ACY7dwzyIjcnt6G1iC1LnKAOIx9fyPZ7TARLIf5bSa9M7P5w4uQHK7kpm5yFNtPHKGwaazZnCZxH8jcDMc4M8y3w6j9uNlbidOgfrCpp07lY6kpd8ViR7ANZ4V5Noz+ts8/gSA0yUib6vGP87s6RKHTyVTfNuFmHui7t6vF3S1VCXm4JmOrqmZbY9DlN+8JcyE0Ao3KOk/UDSCZICqo7cYnMci2oHGfb+2VRu49B61tASnV0r/dRu7gjEQTtqwElIJfuP0hGeAYc6bee5vFLA4EIdz2TMgr/Fm1El5eIg+1ZB4bOVEHzUlonLLGaUlqcYfKtmmYiV8BBnte1xBlEflLxYj92ethTUtTvkicVmtK50IlyL8kpb4WBwhXMEjSoKGLmdfaeNGKZ0vS/BnyDA0eWmt4EQ5ZVQL50ukhvmOAXhMB5T+K6Bg6T3yJzXIxej0MrSSNVygpeIwl5RqleXOKJJtJe3TsrsQfdqidXVrKAGSrwlwDRSMLC7JN3l99+5PEXzgb106TE0TBgrMOEClTVyH4gAjplqQ70diw9SAp0rnU518dTDj9HMvZ7KcGQgnAzKI82iB1LaWsWrMjqHtPbn/h+2vRDQNRnx8umnCmC8ezRr4l+xZ8Cb9KgrhvJW+bed3pQFmD/LerSuW6ZgHFsN/KI= diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index b63cf5c1e0..0000000000 --- a/.editorconfig +++ /dev/null @@ -1,36 +0,0 @@ -### -# -# This file is deployed into this repository via the "Sync Organization Files" workflow. -# -# Direct edits to this file are at risk of being overwritten by the next sync. All edits should be made -# to the source file. -# -# @see Sync workflow {@link https://github.com/gocodebox/.github/blob/trunk/.github/workflows/workflow-sync.yml} -# @see Workflow template {@link https://github.com/gocodebox/.github/blob/trunk/.github/workflow-templates/.editorconfig} -# -### - -# This file is for unifying the coding style for different editors and IDEs -# editorconfig.org - -# WordPress Coding Standards -# https://developer.wordpress.org/coding-standards/wordpress-coding-standards/ - -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 4 -tab_width = 4 -indent_style = tab -insert_final_newline = true -trim_trailing_whitespace = true - -[*.{md,txt}] -insert_final_newline = false -trim_trailing_whitespace = false - -[*.{md,json,yml,yml.template}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index f64ba5c34e..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * ESlint config - * - * @package LifterLMS/Scripts/Dev - * - * @since Unknown - * @version Unknown - */ - -const config = require( '@lifterlms/scripts/config/.eslintrc.js' ); - -module.exports = config; diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 93638cef72..0000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,4 +0,0 @@ -* @ideadude - -# Full Site Editing. -includes/class-llms-block-templates.php @ideadude diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index daf526178c..0000000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,67 +0,0 @@ -Contributing to LifterLMS -========================= - -We welcome and encourage contributions from the community. If you'd like to contribute to LifterLMS there are a few ways to do so. Here's our guidelines for contributions: - -*Please Note GitHub is for bug reports and contributions only! If you have a support question or a request for a customization this is not the right place to post it. Please refer to [LifterLMS Support](https://lifterlms.com/my-account/my-tickets) or the [community forums](https://wordpress.org/support/plugin/lifterlms). If you're looking for help customizing LifterLMS, please consider hiring a [LifterLMS Expert](https://lifterlms.com/docs/do-you-have-any-recommended-developers-who-can-modifycustomize-lifterlms/).* - - -### Ways to Contribute - -+ [Submit bug and issues reports](#reporting-a-bug-or-issue) -+ [Contribute new features](#contributing-new-features) -+ [Contribute new code or bug fixes / patches](#contributing-code) -+ [Translate and localize LifterLMS](#contribute-translations) - - -### Reporting a Bug or Issue - -Bugs and issues can be reported at [https://github.com/gocodebox/lifterlms/issues/new/choose](https://github.com/gocodebox/lifterlms/issues/new). - -Before reporting a bug, [search existing issues](https://github.com/gocodebox/lifterlms/issues) and ensure you're not creating a duplicate. If the issue already exists you can add your information to the existing report. - -Also check our [known issues and conflicts](https://lifterlms.com/doc-category/lifterlms/known-conflicts/) for possible resolutions. - -### Contributing New Features - -When contributing new features please communicate with us to ensure this is a feature we're interested in having added to LifterLMS before you start coding it. - -First check if we already have a feature request or proposal for the feature you're interested in developing. Take a look at our existing feature requests here in [GitHub](https://github.com/gocodebox/lifterlms/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22type%3A+feature+request%22) and on our [Feature Request voting board](https://trello.com/b/egC72ZZS/lifterlms-road-map-and-feature-voting). - -If you can't find an existing feature request you should propose it by opening a new [feature request issue](https://github.com/gocodebox/lifterlms/issues/new?template=Feature_Request.md). In the issue we'll discuss your feature before you start working on it. - -LifterLMS is a project that services a great many users. A feature which is attractive to a small number of users may create confusion for other users. These features may be better offered as a feature plugin instead of code in the core. In this scenario we'd be happy to help advise you on how to best develop and launch your feature as a plugin on WordPress.org! We'll even help market your add-on after you launch. - -### Contributing Code - -+ Fork the repository on GitHub. -+ [Install LifterLMS for development](../docs/installing.md). -+ Create a new branch from the 'trunk' branch. -+ Make the changes to your forked repository. -+ Ensure you stick to our [coding standards](https://github.com/gocodebox/lifterlms/blob/trunk/docs/coding-standards.md) and have properly documented new and updated functions, methods, actions, and filters following our [documentation standards](https://github.com/gocodebox/lifterlms/blob/trunk/docs/documentation-standards.md). -+ Run PHPCS and ensure the output has no errors. We **will** reject pull requests if they fail codesniffing. -+ Ensure new code doesn't break existing tests and add new code should aim to have 100% code coverage. See the [testing guide](https://github.com/gocodebox/lifterlms/blob/trunk/tests/phpunit/README.md) to get started with testing and let us know if you want help writing tests, we're happy to help! -+ When making changes to (S)CSS and Javascript files, you should only modify the source files. The compiled and minified files *should not be committed* or included in your PR. -+ When committing, reference your issue (if present) and include a note about the fix. Use [GitHub auto-references](https://help.github.com/en/articles/autolinked-references-and-urls). -+ Push the changes to your fork -+ Submit a pull request to the 'dev' branch of the LifterLMS repo. -+ We'll review all pull requests, and make suggestions and changes if necessary. We're newly open source and supporting users and customers and our own internal pull requests and releases will take priority over pull requests from the community. Please be patient! - - -### Contribute Translations - -All translations to LifterLMS can be made via our GlotPress project at [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/lifterlms). - -Anyone can contribute translations. All you need is to login to your wordpress.org account. If you have questions about how to submit translations please refer to the [Translator's Handbook](https://make.wordpress.org/polyglots/handbook/). - -We're always seeking Translation Editors who can manage and approve translations for their locale. If you're interested in becoming a translation editor for your locale please [review the documentation about translations here](https://lifterlms.com/docs/how-can-i-contribute-translations-to-lifterlms/). - - -### Need Help Getting Started as a Contributor? - -A number of resources are available for first time contributors: - -+ Join our [LifterLMS Community Slack Channel](https://lifterlms.com/slack) and hop into the `#developers` channel. Our core contributors and maintainers are there to help out and answer questions. -+ Check out the [LifterLMS Community Events Calendar](https://lifterlms.com/community-events/) for opportunities to interact with other contributors. -+ Check out [this tutorial](https://www.digitalocean.com/community/tutorials/how-to-create-a-pull-request-on-github) on how to submit pull requests on GitHub. -+ Grab an issue marked tagged as a [`good first issue`](https://github.com/gocodebox/lifterlms/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) diff --git a/.github/ISSUE_TEMPLATE/Bug_Report.md b/.github/ISSUE_TEMPLATE/Bug_Report.md deleted file mode 100644 index d4e16ce6f4..0000000000 --- a/.github/ISSUE_TEMPLATE/Bug_Report.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -name: Bug Report -about: Report a bug or issue - ---- - -### Reproduction Steps - -+ Include clear and detailed step by step instructions on how the issue can be reliably reproduced -+ Include screenshots where applicable -+ Record a video if possible (if you post a video please still include a text version of your recreation steps!) - - -### Expected Behavior - -+ Include a concise description of what you expected to happen (but didn't) - - -### Actual Behavior - -+ Include a concise description of what actually happens (but isn't supposed to) - - -### Error Messages / Logs - -+ Include any relevant error messages or log files -``` - - -``` - -### System and Environment Information - -
-System Report - - -``` - - -``` - -
- - -This issue has be recreated: -+ [ ] Locally -+ [ ] On a staging site -+ [ ] On a production website -+ [ ] With only LifterLMS and a default theme - -### Browser, Device, and Operating System Information - -+ Browser name and version -+ Operating System name and version -+ Device name and version (if applicable) diff --git a/.github/ISSUE_TEMPLATE/Feature_Request.md b/.github/ISSUE_TEMPLATE/Feature_Request.md deleted file mode 100644 index 747c6694f2..0000000000 --- a/.github/ISSUE_TEMPLATE/Feature_Request.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Feature request -about: Suggest an idea or new feature for LifterLMS - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. diff --git a/.github/ISSUE_TEMPLATE/Question.md b/.github/ISSUE_TEMPLATE/Question.md deleted file mode 100644 index 364675a501..0000000000 --- a/.github/ISSUE_TEMPLATE/Question.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Question -about: Questions or 'how to' about LifterLMS - ---- - -Remember that GitHub is NOT a support form! If you require user support with LifterLMS you will have more success in one of the following places: - -- Support Forums: https://wordpress.org/support/plugin/lifterlms -- Official Support Tickets: https://lifterlms.com/my-account/my-tickets -- LifterLMS Community Slack Channel: https://lifterlms.com/slack - -You may also wish to peruse our documentation at https://lifterlms.com/docs - -If none of these places seem appropriate ask away here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index af46f1ff90..0000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,29 +0,0 @@ - - -## Description - - -Fixes # - -## How has this been tested? - - - - -## Screenshots - -## Types of changes - - - - - -## Checklist: -- [ ] This PR requires and contains at least one changelog file. -- [ ] My code has been tested. -- [ ] My code passes all existing automated tests. -- [ ] My code follows the LifterLMS Coding & Documentation Standards. - diff --git a/.github/SECURITY.md b/.github/SECURITY.md deleted file mode 100644 index 3d180165c4..0000000000 --- a/.github/SECURITY.md +++ /dev/null @@ -1,20 +0,0 @@ -Security Policy ---------------- - -## Supported Versions - -LifterLMS 3.x is the only supported branch of LifterLMS. If you're using an unsupported version of LifterLMS we strongly recommend you upgrade to the latest version as soon as possible. - -| Version | Supported | -| ------- | ------------------ | -| 4.x | :white_check_mark: | -| 3.x | :x: | -| 2.x | :x: | -| 1.x | :x: | - - -## Reporting a Vulnerability - -The LifterLMS team takes security issues and vulnerabilities very seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions. - -To report a vulnerability, please see our guidelines at https://lifterlms.com/security/ diff --git a/.github/lifterlms-logo.png b/.github/lifterlms-logo.png deleted file mode 100644 index c5e921a77a..0000000000 Binary files a/.github/lifterlms-logo.png and /dev/null differ diff --git a/.github/sponsors/browserstack-logo.png b/.github/sponsors/browserstack-logo.png deleted file mode 100644 index d420b92984..0000000000 Binary files a/.github/sponsors/browserstack-logo.png and /dev/null differ diff --git a/.github/workflow-matrix.yml b/.github/workflow-matrix.yml deleted file mode 100644 index ed945b9659..0000000000 --- a/.github/workflow-matrix.yml +++ /dev/null @@ -1,11 +0,0 @@ -### -# -# Custom workflow matrix configurations -# -# @link https://github.com/gocodebox/.github/tree/trunk/.github/actions/setup-matrix -# -### -Test PHPUnit: - __delete: - # Remove the LLMS Nightly job (intended for add-ons). - - include[1] diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 719d869e56..0000000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: "CodeQL" - -on: - pull_request: - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - # Override automatic language detection by changing the below list - # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] - language: ['javascript'] - # Learn more... - # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml deleted file mode 100644 index f67dc40dbf..0000000000 --- a/.github/workflows/contributors.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Contributors - -on: - workflow_dispatch: - push: - branches: - - trunk - -concurrency: - group: ${{ github.workflow }}-${{ 'pull_request' == github.event_name && github.head_ref || github.sha }} - cancel-in-progress: true - -jobs: - - build: - name: Update contributors - runs-on: ubuntu-latest - - steps: - - - name: Checkout - uses: actions/checkout@v2 - with: - token: ${{ secrets.ORG_WORKFLOWS }} - - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: '16' - cache: 'npm' - - - name: Install dependencies - run: npm install contributor-faces - - - name: Update README.md - run: ./node_modules/.bin/contributor-faces -e '*\[bot\]' -l 100 - - - name: Commit Updates - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Update contributors list - branch: trunk - file_pattern: README.md - commit_user_name: contributors-workflow[bot] - commit_user_email: 41898282+github-actions[bot]@users.noreply.github.com diff --git a/.github/workflows/keep-alive.yml b/.github/workflows/keep-alive.yml deleted file mode 100644 index ad19299512..0000000000 --- a/.github/workflows/keep-alive.yml +++ /dev/null @@ -1,53 +0,0 @@ -### -# -# This workflow file is deployed into this repository via the "Sync Organization Files" workflow. -# -# Direct edits to this file are at risk of being overwritten by the next sync. All edits should be made -# to the source file. -# -# @see Sync workflow {@link https://github.com/gocodebox/.github/actions/workflows/workflow-sync.yml} -# @see Workflow template {@link https://github.com/gocodebox/.github/blob/trunk/.github/workflow-templates/keep-alive.yml} -# -# Keep Repo Alive -# -# This workflow ensures that cronjob workflows are not automatically disabled after 60 days of repo inactivity. -# The workflow will automatically add an empty commit if the repo's latest commitwas made more than 50 days ago. This empty commit will prevent GitHub from automatically disabling this (and other) -# cronjob actions in the repo. -# -### -name: Keep Repo Alive - -on: - # Once daily at 00:00 UTC. - schedule: - - cron: '0 0 * * *' - -jobs: - - keep-alive: - name: Keep Repo Alive - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - token: ${{ secrets.ORG_WORKFLOWS }} - fetch-depth: 0 - - name: Add keep-alive commit - run: | - LAST_COMMIT_TIME=$( git --no-pager log -1 --format=%ct ) - NOW=$( date +%s ) - DIFF_IN_DAYS=$(( ( NOW - LAST_COMMIT_TIME ) / 86400 )) - - echo "Days since last commit: $DIFF_IN_DAYS" - - if (( $DIFF_IN_DAYS > 50 )); then - echo "Adding a keep-alive commit." - - git config --global user.name "keepalive[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - - git commit --allow-empty -m "Automated commit from the Keep Repo Alive workflow" - git push origin HEAD - else - echo "No keep-alive commit required." - fi \ No newline at end of file diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml deleted file mode 100644 index 8cce3503b6..0000000000 --- a/.github/workflows/lint-js.yml +++ /dev/null @@ -1,44 +0,0 @@ -### -# -# This workflow file is deployed into this repository via the "Sync Organization Files" workflow -# -# Direct edits to this file are at risk of being overwritten by the next sync. All edits should be made -# to the source file. -# -# @see Sync workflow {@link https://github.com/gocodebox/.github/actions/workflows/workflow-sync.yml} -# @see Workflow template {@link https://github.com/gocodebox/.github/blob/trunk/.github/workflow-templates/lint-js.yml} -# -### -name: Lint JavaScript - -on: - workflow_dispatch: - pull_request: - # Once daily at 00:00 UTC. - # schedule: - # - cron: '0 0 * * *' - -concurrency: - group: ${{ github.workflow }}-${{ 'pull_request' == github.event_name && github.head_ref || github.sha }} - cancel-in-progress: true - -jobs: - lint: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Setup Node - uses: actions/setup-node@v1 - with: - node-version: '16' - cache: 'npm' - - - name: Install npm dependencies - run: npm ci - - - name: Run linter - continue-on-error: true - run: npm run lint:js diff --git a/.github/workflows/ossar-analysis.yml b/.github/workflows/ossar-analysis.yml deleted file mode 100644 index 451c8f7602..0000000000 --- a/.github/workflows/ossar-analysis.yml +++ /dev/null @@ -1,22 +0,0 @@ -# This workflow integrates a collection of open source static analysis tools -# with GitHub code scanning. For documentation, or to provide feedback, visit -# https://github.com/github/ossar-action -name: OSSAR - -on: - pull_request: - -jobs: - OSSAR-Scan: - runs-on: windows-latest - steps: - - uses: actions/checkout@v2 - - - name: Run OSSAR - uses: github/ossar-action@v1 - id: ossar - - - name: Upload results to Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: ${{ steps.ossar.outputs.sarifFile }} diff --git a/.github/workflows/packages-test-and-lint.yml b/.github/workflows/packages-test-and-lint.yml deleted file mode 100644 index 2712d375ef..0000000000 --- a/.github/workflows/packages-test-and-lint.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Packages Lint & Test - -on: - workflow_dispatch: - pull_request: - paths: - - 'packages/**' - -concurrency: - group: ${{ github.workflow }}-${{ 'pull_request' == github.event_name && github.head_ref || github.sha }} - cancel-in-progress: true - -jobs: - - lint: - name: Lint - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: '16' - - - name: Cache node_modules - uses: actions/cache@v2 - id: npm-cache - with: - path: node_modules - key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} - - - name: Install NPM Dependencies - if: steps.npm-cache.outputs.cache-hit != 'true' - run: npm ci - - - name: Run linter - continue-on-error: true - run: npm run pkg:lint:js - - test: - name: Test - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v2 - - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: '16' - - - name: Cache node_modules - uses: actions/cache@v2 - id: npm-cache - with: - path: node_modules - key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} - - - name: Install NPM Dependencies - if: steps.npm-cache.outputs.cache-hit != 'true' - run: npm ci - - - name: Run test suite - uses: artiomtr/jest-coverage-report-action@v2 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - skip-step: install - threshold: 50 - test-script: npm run pkg:test -- --coverageReporters="text" --coverageReporters="text-summary" diff --git a/.github/workflows/project-automation.yml b/.github/workflows/project-automation.yml deleted file mode 100644 index 959ad94963..0000000000 --- a/.github/workflows/project-automation.yml +++ /dev/null @@ -1,94 +0,0 @@ -name: Issue & PR Automation - -on: - issues: - types: - - opened - - reopened - pull_request_target: - types: - - opened - - reopened - - review_requested - -env: - PRIMARY_CODEOWNER: '@ideadude' - PROJECT_ORG: gocodebox - PROJECT_ID: 18 - -jobs: - - ####################################### - # Add issue to the Development project. - ####################################### - issue-to-project: - name: Move Issue to Project Board - runs-on: ubuntu-latest - if: ( 'issues' == github.event_name && ( 'opened' == github.event.action || 'reopened' == github.event.action ) ) - steps: - - name: Add Issue to Project - uses: leonsteinhaeuser/project-beta-automations@v2.1.0 - with: - gh_token: ${{ secrets.ORG_WORKFLOWS }} - organization: ${{ env.PROJECT_ORG }} - project_id: ${{ env.PROJECT_ID }} - resource_node_id: ${{ github.event.issue.node_id }} - status_value: "Awaiting Triage" - - # - uses: hmarr/debug-action@v2 - - #################################### - # Assign to the project's CODEOWNER. - #################################### - issue-assig: - name: Assign Issue to the Primary CODEOWNER - runs-on: ubuntu-latest - if: ( 'issues' == github.event_name && ( 'opened' == github.event.action || 'reopened' == github.event.action ) && ( null == github.event.issue.assignee ) ) - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Check CODEOWNERS file existence - id: codeowners_file_exists - uses: andstor/file-existence-action@v2 - with: - files: .github/CODEOWNERS - - - name: Parse CODEOWNERS file - id: codeowner - if: steps.codeowners_file_exists.outputs.files_exists == 'true' - uses: SvanBoxel/codeowners-action@v1 - with: - path: .github/CODEOWNERS - - - name: Update PRIMARY_CODEOWNER env var - if: steps.codeowners_file_exists.outputs.files_exists == 'true' - run: | - echo PRIMARY_CODEOWNER=$( echo '${{ steps.codeowner.outputs.codeowners }}' | jq -r '."*"[0]' ) >> $GITHUB_ENV - - - name: Strip @ from username - run: | - echo "PRIMARY_CODEOWNER=${PRIMARY_CODEOWNER#?}" >> $GITHUB_ENV - - - name: Assign issue - uses: pozil/auto-assign-issue@v1 - with: - repo-token: ${{ secrets.ORG_WORKFLOWS }} - assignees: ${{ env.PRIMARY_CODEOWNER }} - - ##################################### - # Add PRs to the Development project. - ##################################### - pr-to-board: - name: Move Pull Request to the Project Board - runs-on: ubuntu-latest - if: ( 'pull_request_target' == github.event_name && ( 'opened' == github.event.action || 'reopened' == github.event.action || 'review_requested' == github.event.action ) ) - steps: - - name: Mark PR as Awaiting Review - uses: leonsteinhaeuser/project-beta-automations@v2.1.0 - with: - gh_token: ${{ secrets.ORG_WORKFLOWS }} - organization: ${{ env.PROJECT_ORG }} - project_id: ${{ env.PROJECT_ID }} - resource_node_id: ${{ github.event.pull_request.node_id }} - status_value: "Awaiting Review" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index 7dbbede56f..0000000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Release Publication and Distribution - -on: - workflow_dispatch: - push: - branches: - - trunk - paths: - - 'CHANGELOG.md' - -jobs: - - check-secrets: - name: "Check for required secrets" - runs-on: ubuntu-latest - outputs: - has-secrets: ${{ steps.check-secrets.outputs.has-secrets }} - steps: - - name: Test secrets - id: check-secrets - run: | - if [ ! -z "${{ secrets.LLMS_COM_API_URL }}" ] && [ ! -z "${{ secrets.LLMS_COM_API_KEY }}" ]; then - echo "::set-output name=has-secrets::true" - fi - - update-metadata: - name: "Update product metadata at LifterLMS.com" - runs-on: ubuntu-latest - - needs: check-secrets - if: ${{ 'true' == needs.check-secrets.outputs.has-secrets }} - - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: '16' - cache: 'npm' - - - name: Install Node dependencies - run: npm i @lifterlms/dev - - - name: Get metadata - run: | - __LLMS_METADATA=$( ./node_modules/.bin/llms-dev meta parse -f json ) - echo __LLMS_PKG_VERSION=$( echo $__LLMS_METADATA | jq --raw-output '.["Version"]' ) >> $GITHUB_ENV - echo __LLMS_WP_VERSION=$( echo $__LLMS_METADATA | jq --raw-output '.["Requires at least"]' ) >> $GITHUB_ENV - echo __LLMS_PHP_VERSION=$( echo $__LLMS_METADATA | jq --raw-output '.["Requires PHP"]' ) >> $GITHUB_ENV - echo __LLMS_LLMS_VERSION=$( echo $__LLMS_METADATA | jq --raw-output '.["LLMS Requires at least"]' ) >> $GITHUB_ENV - - - name: Test metadata - run: | - echo "Package version: $__LLMS_PKG_VERSION" - echo "Min WP Version: $__LLMS_WP_VERSION" - echo "Min PHP Version: $__LLMS_PHP_VERSION" - echo "Min LLMS Version: $__LLMS_LLMS_VERSION" - - - name: Update metadata - run: | - curl --location --request PATCH "${{ secrets.LLMS_COM_API_URL }}v3/products/${{ github.event.repository.name }}" \ - --header "X-API-KEY: ${{ secrets.LLMS_COM_API_KEY }}" \ - --header 'Content-Type: application/x-www-form-urlencoded' \ - --data-urlencode "version=$__LLMS_PKG_VERSION" \ - --data-urlencode "wp_version=$__LLMS_WP_VERSION" \ - --data-urlencode "php_version=$__LLMS_PHP_VERSION" \ - --data-urlencode "llms_version=$__LLMS_LLMS_VERSION" diff --git a/.github/workflows/sync-branches.yml b/.github/workflows/sync-branches.yml deleted file mode 100644 index 2a7ad7be03..0000000000 --- a/.github/workflows/sync-branches.yml +++ /dev/null @@ -1,35 +0,0 @@ -### -# -# This workflow file is deployed into this repository via the "Sync Organization Files" workflow -# -# Direct edits to this file are at risk of being overwritten by the next sync. All edits should be made -# to the source file. -# -# @see Sync workflow {@link https://github.com/gocodebox/.github/actions/workflows/workflow-sync.yml} -# @see Workflow template {@link https://github.com/gocodebox/.github/blob/trunk/.github/workflow-templates/sync-branches.yml} -# -### -name: Sync Branches -on: - push: - branches: - - trunk - workflow_dispatch: - -jobs: - sync: - name: trunk -> dev - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - token: ${{ secrets.ORG_WORKFLOWS }} - fetch-depth: 0 - - name: Perform sync - run: | - git config --global user.name "branch-sync[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - git checkout dev - git pull origin trunk --no-ff - git status - git push origin dev diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml deleted file mode 100644 index bdc6ad8bc3..0000000000 --- a/.github/workflows/test-e2e.yml +++ /dev/null @@ -1,98 +0,0 @@ -### -# -# This workflow file is deployed into this repository via the "Sync Organization Files" workflow -# -# Direct edits to this file are at risk of being overwritten by the next sync. All edits should be made -# to the source file. -# -# @see Sync workflow {@link https://github.com/gocodebox/.github/actions/workflows/workflow-sync.yml} -# @see Workflow template {@link https://github.com/gocodebox/.github/blob/trunk/.github/workflow-templates/test-e2e.yml} -# -### -name: Test E2E - -on: - workflow_dispatch: - pull_request: - # Once daily at 00:00 UTC. -# schedule: -# - cron: '0 0 * * *' - -concurrency: - group: ${{ github.workflow }}-${{ 'pull_request' == github.event_name && github.head_ref || github.sha }} - cancel-in-progress: true - -jobs: - ### - # - # Setup the test matrix. - # - ### - set-matrix: - name: Setup Matrix - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.setup.outputs.matrix }} - steps: - - uses: actions/checkout@v2 - - id: setup - uses: gocodebox/.github/.github/actions/setup-matrix@trunk - - ### - # - # Run tests. - # - ### - test: - name: "WP ${{ matrix.WP }}" - needs: set-matrix - runs-on: ubuntu-latest - continue-on-error: ${{ matrix.allow-failure }} - - strategy: - fail-fast: false - matrix: ${{ fromJSON( needs.set-matrix.outputs.matrix ) }} - - steps: - - - name: Checkout - uses: actions/checkout@v2 - - - name: Setup Environment - uses: gocodebox/.github/.github/actions/setup-e2e@trunk - with: - wp-version: ${{ matrix.WP }} - docker-user: ${{ secrets.DOCKER_USERNAME }} - docker-pass: ${{ secrets.DOCKER_PASSWORD }} - node-version: '16' - - - name: Run test suite - run: npm run test -- --verbose - - - name: Upload artifacts - uses: actions/upload-artifact@v4 - if: failure() - with: - name: error-artifacts-wp-${{ matrix.WP }} - path: tmp/artifacts - - ### - # - # Check the status of the entire test matrix. - # - # This will succeed if all jobs from the `test` job's matrix succeed. It allows jobs marked with `allow-failure` - # to fail. - # - # This job can be used as a single status check for branch protection rules. Without this - # we would need to require every job in the above build matrix. - # - ### - status: - name: Test E2E Status - runs-on: ubuntu-latest - if: always() - needs: test - steps: - - name: Check overall matrix status - if: ${{ 'success' != needs.test.result }} - run: exit 1 diff --git a/.github/workflows/test-js-unit.yml b/.github/workflows/test-js-unit.yml deleted file mode 100644 index 1673d978a0..0000000000 --- a/.github/workflows/test-js-unit.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Test JS Unit - -on: - workflow_dispatch: - pull_request: - paths: - - src/js/** - # Once daily at 00:00 UTC. - # schedule: - # - cron: '0 0 * * *' - -concurrency: - group: ${{ github.workflow }}-${{ 'pull_request' == github.event_name && github.head_ref || github.sha }} - cancel-in-progress: true - -jobs: - test: - name: "Run JS Unit Tests" - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Setup Node - uses: actions/setup-node@v2 - with: - node-version: '16' - cache: 'npm' - - - name: Install Node dependencies - run: npm ci - - - name: Run test suite - run: npm run test:unit diff --git a/.github/workflows/test-phpunit.yml b/.github/workflows/test-phpunit.yml deleted file mode 100644 index 3818a754b4..0000000000 --- a/.github/workflows/test-phpunit.yml +++ /dev/null @@ -1,103 +0,0 @@ -### -# -# This workflow file is deployed into this repository via the "Sync Organization Files" workflow -# -# Direct edits to this file are at risk of being overwritten by the next sync. All edits should be made -# to the source file. -# -# @see Sync workflow {@link https://github.com/gocodebox/.github/actions/workflows/workflow-sync.yml} -# @see Workflow template {@link https://github.com/gocodebox/.github/blob/trunk/.github/workflow-templates/test-phpunit.yml} -# -### -name: Test PHPUnit - -on: - workflow_dispatch: - inputs: - cache-suffix: - description: Cache suffix - type: string - pull_request: - # Once daily at 01:00 UTC. - # schedule: - # - cron: '0 1 * * *' - -concurrency: - group: ${{ github.workflow }}-${{ 'pull_request' == github.event_name && github.head_ref || github.sha }} - cancel-in-progress: true - -jobs: - - ### - # - # Setup the test matrix. - # - ### - set-matrix: - name: Setup Matrix - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.setup.outputs.matrix }} - steps: - - uses: actions/checkout@v2 - - id: setup - uses: gocodebox/.github/.github/actions/setup-matrix@trunk - - ### - # - # Run tests. - # - ### - test: - name: WP ${{ matrix.WP }} on PHP ${{ matrix.PHP }}${{ matrix.name-append }} - - needs: set-matrix - runs-on: ubuntu-latest - continue-on-error: ${{ matrix.allow-failure }} - - strategy: - fail-fast: false - matrix: ${{ fromJSON( needs.set-matrix.outputs.matrix ) }} - - steps: - - - name: Checkout - uses: actions/checkout@v2 - - - name: Setup Environment - uses: gocodebox/.github/.github/actions/setup-phpunit@trunk - with: - php-version: ${{ matrix.PHP }} - wp-version: ${{ matrix.WP }} - llms-branch: ${{ matrix.LLMS }} - env-file: ".github/.env.test-phpunit" - deploy-key: ${{ secrets.LLMS_DEPLOY_KEY }} - secrets: ${{ toJSON( secrets ) }} - cache-suffix: ${{ inputs.cache-suffix }} - - - name: Install NPM Dependencies - run: npm ci && npm run build - - - name: Run Tests - run: composer run tests - - ### - # - # Check the status of the entire test matrix. - # - # This will succeed if all jobs from the `test` job's matrix succeed. It allows jobs marked with `allow-failure` - # to fail. - # - # This job can be used as a single status check for branch protection rules. Without this - # we would need to require every job in the above build matrix. - # - ### - status: - name: Test PHPUnit Status - runs-on: ubuntu-latest - if: ${{ always() }} - needs: test - steps: - - name: Check overall matrix status - if: ${{ 'success' != needs.test.result }} - run: exit 1 diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 53ecdb94fd..0000000000 --- a/.gitignore +++ /dev/null @@ -1,62 +0,0 @@ -# Package managers. -node_modules/ -/vendor/ - -# Lock file intentionally excluded to allow easier testing against multiple php versions -# This follows the precedent put forth by the WordPress core {@link https://github.com/WordPress/wordpress-develop/commit/0e442c4615bdcdc1c2e4f8db6f88f57e6859c2ff} -composer.lock - -# Ignore built files -/readme.txt -assets/css/admin.css -assets/css/admin.min.css -assets/css/admin-rtl.css -assets/css/admin-rtl.min.css -assets/css/admin-wizard-rtl.css -assets/css/admin-wizard-rtl.min.css -assets/css/admin-wizard.css -assets/css/admin-wizard.min.css -assets/css/builder.css -assets/css/builder.min.css -assets/css/builder-rtl.css -assets/css/builder-rtl.min.css -assets/css/admin-importer* -assets/css/editor* -assets/css/certificates* -assets/css/lifterlms-rtl.css -assets/css/lifterlms-rtl.min.css -assets/css/lifterlms.css -assets/css/lifterlms.min.css -assets/js/llms-builder.js -assets/js/llms-builder.min.js -assets/js/llms-admin-elementor-editor.js -assets/js/llms-admin-elementor-editor.asset.php -assets/js/*.min.js -assets/js/llms-metaboxes.js -blocks/certificate-title/* -blocks/my-account/* -includes/class.llms.l10n.js.php -languages/lifterlms.pot - -# Ignore composer-installed libs. -/libraries/* -!/libraries/index.php -!/libraries/README.md - -# Exclude maps. -/blocks/**/*.js.map -/assets/css/*.map -/assets/js/*.map -/assets/maps/* - -# Misc. -*.log -.DS_Store - -# Release distribution directory. -/dist/ -/tmp/ - -# Non-distributable configs. -phpunit.xml -.llmsenv diff --git a/.llmsconfig b/.llmsconfig deleted file mode 100644 index 65d93fa292..0000000000 --- a/.llmsconfig +++ /dev/null @@ -1,81 +0,0 @@ -{ - "build": { - "custom": [ "js-additional", "js-builder" ] - }, - "docs": { - "package": "LifterLMS" - }, - "pot": { - "bugReport": "https://github.com/gocodebox/lifterlms/issues", - "domain": "lifterlms", - "dest": "languages/", - "jsClassname": "LLMS_L10n_JS", - "jsFilename": "class.llms.l10n.js.php", - "jsSince": "3.17.8", - "jsSrc": [ "assets/js/**/*.js", "!assets/js/**/*.min.js", "!assets/js/**/*.js.map" ], - "lastTranslator": "Thomas Patrick Levy ", - "team": "LifterLMS ", - "package": "lifterlms", - "phpSrc": [ - "./*.php", "./**/*.php", - "!vendor/*", "!vendor/**/*.php", "!tmp/**", "!tests/**", "!wordpress/**", - "./vendor/lifterlms/lifterlms-blocks/*.php", "./vendor/lifterlms/lifterlms-blocks/**/*.php", - "./vendor/lifterlms/lifterlms-rest/*.php", "./vendor/lifterlms/lifterlms-rest/**/*.php" - ] - }, - "publish": { - "title": "LifterLMS", - "lifterlms": { - "make": { - "tags": [ 6 ] - }, - "pot": false - } - }, - "scripts": { - "src": [ - "assets/js/**/*.js", - "!assets/js/llms-admin-addons.js", - "!assets/js/llms-admin-award-certificate.js", - "!assets/js/llms-admin-certificate-editor.js", - - "!assets/js/**/*.min.js", - "!assets/js/llms-builder*.js", - "!assets/js/app/**/*.js", - "!assets/js/builder/**/*.js", - "!assets/js/partials/**/*.js", - "!assets/js/private/**/*.js", - - - "!assets/js/llms-components.js", - "!assets/js/llms-icons.js", - "!assets/js/llms-quill-wordcount.js", - "!assets/js/llms-spinner.js", - "!assets/js/llms-utils.js" - ], - "dest": "assets/js/" - }, - "watch": { - "custom": [ { - "glob": [ "assets/js/builder/**/*.js", "assets/js/private/**/*.js", "assets/js/app/*.js" ], - "tasks": [ "js-additional", "js-builder" ] - } ] - }, - "zip": { - "composer": true, - "src": { - "custom": [ - "!./**/CHANGELOG.md", - "!./**/README.md", - "!./_private/**", - "!./_readme/**", - "!./docs/**", - "!./packages/**", - "!./wordpress/**", - "!lerna.json", - "!babel.config.js", - "!docker-compose.override.yml.template" - ] - } - } -} diff --git a/.llmsdev.yml b/.llmsdev.yml deleted file mode 100644 index c1076aad17..0000000000 --- a/.llmsdev.yml +++ /dev/null @@ -1,2 +0,0 @@ -pot: - dir: languages diff --git a/.llmsdevrc b/.llmsdevrc deleted file mode 100644 index 5b45e52bda..0000000000 --- a/.llmsdevrc +++ /dev/null @@ -1,24 +0,0 @@ -{ - "readme": { - "title": "LMS by LifterLMS - Online Course, Membership & Learning Management System Plugin for WordPress", - "shortDescription": "LifterLMS is a powerful WordPress learning management system plugin that makes it easy to create, sell, and protect engaging online courses and training based membership websites.", - "meta": { - "Tags": "learning management system, LMS, membership, elearning, online courses, quizzes, sell courses, badges, gamification, learning, Lifter, LifterLMS", - "Requires at least": "5.4", - "Tested up to": "5.8", - "Requires PHP": "7.3" - }, - "changelog": { - "link": "https://make.lifterlms.com/tag/lifterlms/" - }, - "sections": { - "Description": "file:./.wordpress-org/readme/description.md", - "Installation": "file:./.wordpress-org/readme/installation.md", - "Frequently Asked Questions": "file:./.wordpress-org/readme/faqs.md", - "Screenshots": "file:./.wordpress-org/readme/screenshots.md" - } - }, - "i18n": { - "dir": "./languages/" - } -} diff --git a/.llmsenv.dist b/.llmsenv.dist deleted file mode 100644 index 9a229cc9ba..0000000000 --- a/.llmsenv.dist +++ /dev/null @@ -1,2 +0,0 @@ -WORDPRESS_PORT=8080 -WORDPRESS_TITLE=LifterLMS Core e2e diff --git a/.source/README.md b/.source/README.md deleted file mode 100644 index 7593865519..0000000000 --- a/.source/README.md +++ /dev/null @@ -1,4 +0,0 @@ -LifterLMS Source Images -======================= - -This directory contains source images (.svg, .ai, .psd, etc...) for any image assets used in the LifterLMS core. diff --git a/.source/svg/default-achievement.svg b/.source/svg/default-achievement.svg deleted file mode 100644 index ad84803615..0000000000 --- a/.source/svg/default-achievement.svg +++ /dev/null @@ -1,65 +0,0 @@ - -image/svg+xml - - - - - \ No newline at end of file diff --git a/.source/svg/default-certificate.svg b/.source/svg/default-certificate.svg deleted file mode 100644 index e45e87340f..0000000000 --- a/.source/svg/default-certificate.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/.source/svg/default-thumbnail.svg b/.source/svg/default-thumbnail.svg deleted file mode 100644 index 32e9b60d4c..0000000000 --- a/.source/svg/default-thumbnail.svg +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.wordpress-org/README.md b/.wordpress-org/README.md deleted file mode 100644 index 3464eda463..0000000000 --- a/.wordpress-org/README.md +++ /dev/null @@ -1,35 +0,0 @@ -WordPress.org Plugin Repository Content and Assets -================================================== - -This directory contains the text content and assets used on the LifterLMS plugin listing on [WordPress.org Plugin Repository](https://wordpress.org/plugins/lifterlms/). - -## README - -The [readme](./readme) directory contains the markdown files representing the sections (and tabs) used on the listing. - -These files are combined during a build step prior distribution and output as the [readme.txt](../readme.txt) file distributed with the LifterLMS plugin. Generally we do not ship updates for changes to the readme directory. These changes will be included in the next release which contains code changes. - -The files are prepended with numbers to preserve their order when programmatically combined. - -The command to build the readme file is `npm run dev readme`. See full documentation of the command in the [@lifterlms/dev package reference](https://github.com/gocodebox/lifterlms/tree/trunk/packages/dev#readme). - -### File Parts - -+ [01-header.md](./readme/01-header.md): The readme header containing the listing's display title, meta data, and a short description. -+ [05-description.md](./readme/05-description.md): The main listing "Details" tab. -+ [10-installation.md](./readme/10-installation.md): The contents of the "Installation" tab -+ [15-faqs.md](./readme/15-faqs.md): A list of frequently asked questions. This is listed at the bottom of the "Details" tab on the listing page. -+ [20-screenshots.md](./readme/15-faqs.md): An ordered list of screenshot captions. Each caption should correspond with a screenshot in the [assets directory](./assets). A screenshot with the filename `screenshot-5.png` corresponds to the item 5 in the screenshot list. -+ [25-changelog.md](./readme/25-changelog.md): an auto-generated changelog containing the latest 10 changelog entries from the main [CHANGELOG.md](../CHANGELOG.md) file. - -### Merge Codes - -Various merge codes are available for use in the readme file parts. See the [@lifterlms/dev package reference](https://github.com/gocodebox/lifterlms/tree/trunk/packages/dev#readme) for merge code documentation. - -## Assets - -The [assets](./assets) directory contains the images used in the listing: banners, icons, and screenshots. - -See also: [How Your Plugin Assets Work](https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/). - -Assets are manually synced to WordPress.org via SVN @thomasplevy and will be updated in conjunction with the next release following their update in this directory. \ No newline at end of file diff --git a/.wordpress-org/assets/banner-1544x500.png b/.wordpress-org/assets/banner-1544x500.png deleted file mode 100644 index 64304e8463..0000000000 Binary files a/.wordpress-org/assets/banner-1544x500.png and /dev/null differ diff --git a/.wordpress-org/assets/banner-772x250.png b/.wordpress-org/assets/banner-772x250.png deleted file mode 100644 index bf652804e4..0000000000 Binary files a/.wordpress-org/assets/banner-772x250.png and /dev/null differ diff --git a/.wordpress-org/assets/icon-128x128.png b/.wordpress-org/assets/icon-128x128.png deleted file mode 100644 index 2d2345e018..0000000000 Binary files a/.wordpress-org/assets/icon-128x128.png and /dev/null differ diff --git a/.wordpress-org/assets/icon-256x256.png b/.wordpress-org/assets/icon-256x256.png deleted file mode 100644 index 5f43e48053..0000000000 Binary files a/.wordpress-org/assets/icon-256x256.png and /dev/null differ diff --git a/.wordpress-org/assets/icon.svg b/.wordpress-org/assets/icon.svg deleted file mode 100755 index a6a0a9be5e..0000000000 --- a/.wordpress-org/assets/icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.wordpress-org/assets/screenshot-1.jpg b/.wordpress-org/assets/screenshot-1.jpg deleted file mode 100644 index ca6eef886c..0000000000 Binary files a/.wordpress-org/assets/screenshot-1.jpg and /dev/null differ diff --git a/.wordpress-org/assets/screenshot-2.jpg b/.wordpress-org/assets/screenshot-2.jpg deleted file mode 100644 index ab54435b89..0000000000 Binary files a/.wordpress-org/assets/screenshot-2.jpg and /dev/null differ diff --git a/.wordpress-org/assets/screenshot-3.png b/.wordpress-org/assets/screenshot-3.png deleted file mode 100644 index 850173f88b..0000000000 Binary files a/.wordpress-org/assets/screenshot-3.png and /dev/null differ diff --git a/.wordpress-org/assets/screenshot-4.png b/.wordpress-org/assets/screenshot-4.png deleted file mode 100644 index 7fcc03ed9b..0000000000 Binary files a/.wordpress-org/assets/screenshot-4.png and /dev/null differ diff --git a/.wordpress-org/assets/screenshot-5.png b/.wordpress-org/assets/screenshot-5.png deleted file mode 100644 index 7515904e6e..0000000000 Binary files a/.wordpress-org/assets/screenshot-5.png and /dev/null differ diff --git a/.wordpress-org/assets/screenshot-6.png b/.wordpress-org/assets/screenshot-6.png deleted file mode 100644 index efe6abd51f..0000000000 Binary files a/.wordpress-org/assets/screenshot-6.png and /dev/null differ diff --git a/.wordpress-org/assets/screenshot-7.png b/.wordpress-org/assets/screenshot-7.png deleted file mode 100644 index c5e91404bf..0000000000 Binary files a/.wordpress-org/assets/screenshot-7.png and /dev/null differ diff --git a/.wordpress-org/assets/screenshot-8.png b/.wordpress-org/assets/screenshot-8.png deleted file mode 100644 index a061060bf4..0000000000 Binary files a/.wordpress-org/assets/screenshot-8.png and /dev/null differ diff --git a/.wordpress-org/assets/screenshot-9.png b/.wordpress-org/assets/screenshot-9.png deleted file mode 100644 index a55a833c64..0000000000 Binary files a/.wordpress-org/assets/screenshot-9.png and /dev/null differ diff --git a/.wordpress-org/readme/01-header.md b/.wordpress-org/readme/01-header.md deleted file mode 100644 index 4bf364ec2d..0000000000 --- a/.wordpress-org/readme/01-header.md +++ /dev/null @@ -1,12 +0,0 @@ -=== LifterLMS - WP LMS for eLearning, Online Courses, & Quizzes === -Contributors: chrisbadgett, strangerstudios, kimannwall, d4z_c0nf, actuallyakash, codeboxllc, brianhogg -Donate link: {{__PROJECT_URI__}} -Tags: lms, course, elearning, learning management system, quiz -License: {{__LICENSE__}} -License URI: {{__LICENSE_URI__}} -Requires at least: {{__MIN_WP_VERSION__}} -Tested up to: {{__TESTED_WP_VERSION__}} -Requires PHP: {{__MIN_PHP_VERSION__}} -Stable tag: {{__VERSION__}} - -{{__SHORT_DESCRIPTION__}} diff --git a/.wordpress-org/readme/05-description.md b/.wordpress-org/readme/05-description.md deleted file mode 100644 index 0d00ec3d6d..0000000000 --- a/.wordpress-org/readme/05-description.md +++ /dev/null @@ -1,375 +0,0 @@ -== Description == -LifterLMS is a secure easy-to-use WordPress LMS plugin packed with features to easily create & sell courses online. - -**[Download the LifterLMS plugin for free here](https://lifterlms.com/free/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale)** directly from our website so you get instant access to all our valuable resources to help you get started quickly and easily for free. - -Turn your WordPress website into a professional eLearning platform with every customizable feature you could possibly need from your LMS. - -+ **Intuitive LMS Course Builder:** Create Courses, Sections, and Interactive Lessons with multimedia content. -+ **Track Student Progress:** In-Depth Reporting, Create Timed or Open Quizzes, Drip Content, Add Prerequisites, Analyze Progress, and Award Certificates -+ **Complete Ecommerce Platform:** Built-in Gateway Integration for Stripe and PayPal With Memberships and Subscriptions -+ **Community and Social Learning:** Integrate a Community Forum or Discussion Area, Add Multiple Instructors, and Display Course Reviews - -[Explore All LMS Features](https://lifterlms.com/features/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) - -LifterLMS makes it easy to create, sell, and protect engaging online courses and training-based membership websites. - -https://www.youtube.com/watch?v=N72Zw2EBm4A - -### Integrate LifterLMS With Any Theme, Page Builder, & Block Editor - -LifterLMS works with any modern WordPress theme/FSE, the Block Editor (Gutenberg), and every popular WordPress page builder including Elementor, Beaver Builder, and Divi. - -**With over 10 years development,** our team is deeply engaged with the WordPress community. We encourage our integration partners to create the extensions you need most, like Affiliate WP, Monster Insights, WP Fusion, popular form plugins, GamiPress, Astra Pro, and more. - - -### Open Source, Free Core Plugin - -LifterLMS gives back to the open-source community. The core LifterLMS plugin is a totally FREE forever LMS - no limits on your courses, memberships, enrollments, or earnings. - -We believe in free, distributed learning for all. **LifterLMS exists to democratize education in the digital classroom.** - -### Premium Add-ons and Bundles - -Get to know our team and product. by signing up for a **[$1 temporary _30 Day_ website](https://lifterlms.com/try/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale)**. You'll get instant access to a private demo site hosted on our servers pre-installed with: - -+ the core LifterLMS plugin, AND -+ every premium LMS add-on - -See why so many people start with or switch from another WordPress LMS or hosted platform to [LifterLMS](https://lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) for online courses, membership sites, and remote schools. - -https://www.youtube.com/watch?v=RnZflrWG5YQ - -### LifterLMS is Perfect For: - -**Builders** -We’re the favorite LMS plugin for WordPress developers, designers and IT pros who **build LMS websites and training portals** for clients, employers, and themselves - -**DIY** -Do-it-yourself innovators love that LifterLMS helps them easily **create high-value online courses, coaching or training-based membership websites,** right on WordPress. - -**Switchers** -Have you outgrown a hosted LMS platform or an incomplete WordPress LMS stack? Choose LifterLMS if you are looking for **more power, control, and better support**. - -### Meet The LifterLMS Team - - -The LifterLMS team is a **diverse group of talented course creators, developers, designers, marketers, and entrepreneurs**. - -Before developing LifterLMS, we consulted and built custom WordPress-based online learning and membership sites for clients worldwide. LifterLMS was born through this deep hands-on experience building high-end, custom WordPress LMS websites from scratch. - -Learn more about [the people behind LifterLMS](https://lifterlms.com/about-us/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale#h-meet-the-team). - -### LifterLMS By The Numbers - -+ 8,377,042 Course Enrollments powered by LifterLMS -+ 12,570,881 Course and lesson completions powered by LifterLMS -+ 186,997 Achievement badges awarded by LifterLMS -+ 310,728 Certificates awarded by LifterLMS -+ Over 10,000 active installs of the WordPress LMS plugin -+ [308 5-star reviews](https://wordpress.org/support/plugin/lifterlms/reviews/?filter=5) - -### [Features](https://lifterlms.com/features/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) - -Start with the free LMS plugin and [scale-up](https://lifterlms.com/pricing/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) as you grow. - -https://www.youtube.com/watch?v=ZNwo5inRSdM - -**Make Money Teaching Online** -Set up LifterLMS, activate built-in payments with [Stripe](https://lifterlms.com/product/stripe-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) or [PayPal](https://lifterlms.com/product/paypal-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). That's all you need to get started. - -When you need more features and to expand your online learning business, we're here for you. We have several free and premium add-ons to help you create more value for your users, and scale your business revenue. - -+ Credit card payments -+ One-time payments -+ Recurring payments -+ Payment plans -+ Unlimited course and membership pricing models -+ PayPal -+ Subscriptions -+ Checkout -+ Free courses -+ Course bundles -+ Private coaching upsells -+ Course and membership Coupons -+ Bulk course and membership sales -+ Affiliate ready -+ Native course and membership sales pages -+ Offline course and membership sales -+ Customizable course and membership enrollment -+ Country and currency -+ E-commerce dashboard -+ Credit card management -+ Subscription switching -+ Payment switching -+ Native Zapier integration - -**Create Courses on Your WordPress LMS Website** - - -+ Course multimedia lessons -+ Course quizzes -+ Quiz question banks -+ Course builder -+ Course cohorts -+ Drip Content -+ Course and lesson prerequisites -+ Course tracks -+ Course assignments -+ Quiz time limits -+ Student dashboard -+ Student note-taking -+ Multi-instructor courses -+ Lesson downloads -+ Course import & export -+ Discussion areas -+ Instructional design -+ Forum integrations -+ Graphics pack -+ Course reviews -+ Group enrollments for courses and memberships - -**Engage Your Students** - - -+ Achievement badges -+ Certificates -+ Personalized email -+ Social learning -+ Private coaching -+ Text messaging - -**Offer Memberships** - -+ Sitewide membership -+ Course bundles -+ Traditional memberships -+ Automatic course enrollment -+ Bulk course enrollment -+ Content restrictions outside of a course -+ Members-only payment plans -+ Private group discussions -+ Members-only forums - -**Integrate your WordPress LMS with the Tools You Need** - -+ Payment gateways -+ Email marketing -+ Forums -+ Mobile friendly -+ Use any theme or page builder -+ Built for compatibility -+ CRMs -+ E-learning authoring tools -+ Tin Can API (xAPI) - -**Secure and Protect Your Content** - -+ Course protection -+ User account management and registration -+ Members only content -+ Course only content -+ Restricted access -+ Password management -+ Self-hosted - -**Own and Manage Your WordPress LMS Platform** - -+ Detailed course, membership, ecommerce, and student reporting -+ Course gradebook -+ Email notifications -+ Bulk course and membership enrollments -+ Student management -+ Course and membership access management -+ Web design management -+ Branding & typography -+ WordPress LMS User Roles -+ Security -+ Require terms -+ Scalable -+ Layout -+ Testing tools - -**Get Support For Your WordPress LMS Project** - -+ Technical support -+ 30 Days of live weekly onboarding calls called [Liftoff Sessions](https://lifterlms.com/blog/liftoff/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) -+ [Live office hours](https://lifterlms.com/product/office-hours/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [Free training courses](https://academy.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) -+ [Free training webinars](https://lifterlms.com/lifterlms-webinars/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) -+ Setup wizard -+ [Detailed documentation](https://lifterlms.com/docs/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ Dynamic resources -+ Demo course -+ System analyzer -+ User community -+ [REST API](https://developer.lifterlms.com/rest-api/) -+ [Developer ecosystem](https://make.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) -+ [Recommended Resources](https://lifterlms.com/recommended-resources/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) for course creators - -**More Resources** - -+ The [LifterLMS Official Homepage](https://lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ The [LifterLMS Knowledge base](https://lifterlms.com/docs/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ The [LifterLMS Blog](https://lifterlms.com/blog/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ The [LifterLMS Podcast](https://podcast.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ The [LifterLMS Academy](https://academy.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) -+ The [LifterLMS Developer Blog](https://make.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) - - -### Enhance Your LMS With LifterLMS Add-Ons - -**Advanced** - -Increase your LMS website and it's training program's value with these add-ons: - -+ [LifterLMS Advanced Quizzes](https://lifterlms.com/product/advanced-quizzes//?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Assignments](https://lifterlms.com/product/lifterlms-assignments/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Private Areas](https://lifterlms.com/product/private-areas/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Social Learning](https://lifterlms.com/product/social-learning/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Advanced Video](https://lifterlms.com/product/advanced-video/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Custom Fields](https://lifterlms.com/product/custom-fields/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Groups](https://lifterlms.com/product/groups/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS PDFs](https://lifterlms.com/product/lifterlms-pdfs/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Private Site](https://lifterlms.com/product/private-site/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Course Cohorts](https://lifterlms.com/product/course-cohorts/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Advanced Coupons](https://lifterlms.com/product/lifterlms-advanced-coupons/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Notes](https://lifterlms.com/product/lifterlms-notes/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) - -**Integrations** - -Integrate your LMS with the tools you use: - -+ [LifterLMS Stripe](https://lifterlms.com/product/stripe-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS PayPal](https://lifterlms.com/product/paypal-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Authorize.Net](https://lifterlms.com/product/authorize-net/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS WooCommerce](https://lifterlms.com/product/woocommerce-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS ConvertKit](https://lifterlms.com/product/lifterlms-convertkit/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS MailChimp](https://lifterlms.com/product/mailchimp-extension/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) - -### LMS Website and User Experience Design Tools - -Use LifterLMS with the modern LifterLMS [Sky Pilot Theme](https://lifterlms.com/product/sky-pilot/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) for even more beautiful results. LifterLMS works with any well-coded WordPress theme, but check out [Sky Pilot](https://lifterlms.com/product/sky-pilot/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) if you want to start with a modern, beautiful, full-site editing block-based theme. And consider using our [Aircraft page builder plugin](https://lifterlms.com/product/aircraft/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale), to make building beautiful web pages fast using our design template library. - -+ [LifterLMS Sky Pilot Theme](https://lifterlms.com/product/sky-pilot/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Aircraft](https://lifterlms.com/product/aircraft/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) -+ [LifterLMS Powerpack](https://lifterlms.com/product/lifterlms-pro/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) - -https://www.youtube.com/watch?v=tE1K1FHiYDM - -### Why Do People Switch to LifterLMS From Other LMS Plugins? - -There are several other LMS plugins like: - -+ Sensei LMS -+ Tutor LMS -+ WP Courseware -+ LearnDash -+ Masterstudy LMS -+ Academy LMS -+ Namaste LMS -+ LearnPress - -There are some membership plugins with some course features like: - -+ Paid Memberships Pro (Membership plugin that also integrates with LifterLMS) -+ MemberPress - -The main reasons we hear from users who switched to LifterLMS after trying out the [best WordPress LMS plugins](https://lifterlms.com/blog/best-wordpress-lms-plugins/) is that LifterLMS has: - -+ The best most feature-complete customizable well-coded features -+ Outstanding customer support including live calls -+ The free LifterLMS plugin is amazing making the project affordable -+ Memberships, ecommerce, and gamification included in LifterLMS without the need for 3rd party plugins - -### Other Plugins and Themes Commonly Used with LifterLMS - -The most common plugins and themes used with LifterLMS include Elementor, WooCommerce, Contact Form 7, Yoast SEO, WP Forms Lite, Akismet Anti-Spam, Elementor, Jetpack by WordPress.com, Classic Editor, Updrafts Plus Backup/Restore, Realy Simple SSL, All-in-One WP Migration, WordPress Importer, Starter Templates, Wordfence Security, Google Analytics for WordPress by MonsterInsights, Loco Translate, Slider Revolution, Astra Pro, Essential Addons for Elementor, WP Mail SMTP, WooCommerce Stripe Gateway, LiteSpeed Cache, Jetpack, Gravity Forms, MailChimp for WooCommerce, BuddyPress, BuddyBoss, Divi, Kadnece, Beaver Builder, bbpress, The Events Calendar, Ultmate Member, and more. - -Connect LifterLMS to over 7,000 other apps like Facebook, Google Sheets, Zoom, Shopify, etc. using the [LifterLMS Zapier app](https://lifterlms.com/blog/zapier/). - - -### Support From LifterLMS - -**All of our paid products include priority private support. - -+ LifterLMS Support Ticket System, ready for any question you have about your LMS -+ Liftoff Sessions access with live screen-sharing to help you get started with the LMS software -+ [LifterLMS Office Hours](https://lifterlms.com/product/office-hours/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) is a weekly Mastermind group hosted by LifterLMS CEO Chris Badgett and special guests - -### Save on LifterLMS With A Bundle - -Save money and get more features. - -+ [Free LifterLMS plan](https://lifterlms.com/free/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) gives you everything you need to start with all the essential LMS features from unlimited courses, memberships, students, teachers, and more. -+ [Earth Bundle](https://lifterlms.com/product/earth-bundle/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) gives you all the essentials you need to get your online learning website up and running so it's collecting money today with the most powerful secure learning management system software. -+ Level up your online course LMS website with our ecommerce, design, marketing technology, and automation tools with the [Universe Bundle](https://lifterlms.com/product/universe-bundle/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). -+ Add more engagement and student transformation potential to your immersive training programs with our entire suite of products including advanced features used by the best teachers, experts, and coaches with the [Infinity Bundle](https://lifterlms.com/product/infinity-bundle/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). - -### Try the Best LMS Plugin - -+ [Install the free core LifterLMS plugin right now](https://lifterlms.com/free/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). See how extensive and customizable our free core plugin is. -+ Get a temporary _30 Day_ website on our servers with the core LifterLMS plugin AND all the premium add-ons installed. This demo website allows you to test drive all the LMS add-ons before you invest. Practice creating courses, test out the learner experience, and see how easy it will be to manage your course with WordPress. Install your favorite plugins & themes to test compatibility. **[Try LifterLMS for $1](https://lifterlms.com/try/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale)** now. -+ Test LifterLMS as a student. Take a **free** course on how to build a LifterLMS website in 20 minutes. [Take a Free Course](https://academy.lifterlms.com/course/how-to-build-a-learning-management-system-with-lifterlms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) now. - -### Scaling LifterLMS - -LifterLMS is incredibly flexible, customizable, and scalable. Use it for a simple one course website. Use it as a course marketplace or multi-instructor online school. - -LifterLMS is lightweight enough to handle small niche sites, while also powering huge universities and employee training in Fortune 500 corporations. We've even worked with a site that has 4,470,829 course enrollments. - -Unlike hosted LMS software where you would pay increasing monthly fees for access and growth, LifterLMS does not charge you more per course, per instructor, per student, or based on your revenue. - -Whether you are going big or keeping it small, LifterLMS scales to meet your needs. - -### LifterLMS in Action -+ [Success Stories](https://lifterlms.com/success/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) — Discover these amazing stories and accomplishments from our community of course creators. -+ [Showcase](https://lifterlms.com/showcase/?utm_source=LifterLMS%20Plugin&utm_medium=Readme&utm_campaign=Readme%20to%20Sale) — Check out these websites using LifterLMS - -### What Others Are Saying About LifterLMS - -> _"I've used many LMS platforms over the years. And they were all fine… right up to the day when they weren't. The trouble is, they all want you to package and manage your course the way THEY think you should do it. THEIR feature set. THEIR way to do it. **Now I host all my courses on LifterLMS. TOTALLY different experience. I'm free to do things MY way. I've never yet hit a wall where LifterLMS didn't enable me to do things the way I wanted.** Love it! Great support and community too."_ - -> _**Nick Usborne**, Teacher, Entrepreneur_ - -*** - -> _"As a former School Teacher, professional User Experience Designer, and current online course creator – I can honestly attribute much of our success to LifterLMS and it’s consideration for multiple learning modalities, the LMS UI/UX out of the box, and natural student Engagement opportunities. **In less than 10 months we’ve gone from $0 to $300K in revenue with LifterLMS** playing a huge part in that!!"_ - -> _**Sarah Lorenzen**, Teacher, Entrepreneur_ - -*** - - -### Join Our Growing Community - -When you download LifterLMS, you **join a thriving community** of education entrepreneurs, course creators, developers, LMS professionals, and WordPress enthusiasts. - -We’re a fast growing open source eLearning community, and everyone seeking to build a sustainable online course business is welcome. - -Join the [LifterLMS VIP Facebook group](https://www.facebook.com/groups/lifterlmsvip/) to: - -+ check out what other LifterLMS users are creating -+ ask questions and support fellow course creators - -Join the [LifterLMS Slack community](https://join.slack.com/t/lifterlms/shared_invite/enQtMzk3ODczNjc4Mjc3LTBlMmEzMWYyOTIwMDU3NDc2MmRhNGIxNGE0Nzc1OWIxZjg1OGVhM2E5YTkwYzZmMmM1ZTU4MDQxYjVlZDYyZTE) if you’d prefer to connect in Slack. - -### Contribute - -Are you a developer interested in contributing to LifterLMS? Visit the [LifterLMS GitHub Repository](https://github.com/gocodebox/lifterlms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) to find out how to support this open source WordPress LMS software. - -Want to add a new language to LifterLMS? Contribute language translations at [translate.wordpress.org](https://translate.lifterlms.com/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). - - -### What Should You Do Next? - -**[Install the free LifterLMS plugin on your website](https://lifterlms.com/free/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale)**, - -then ... - -**[Try out all the premium add-ons for $1 by signing up >>HERE<<](https://lifterlms.com/try/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale)** - -🚀 - - - diff --git a/.wordpress-org/readme/10-installation.md b/.wordpress-org/readme/10-installation.md deleted file mode 100644 index d0571ef2c2..0000000000 --- a/.wordpress-org/readme/10-installation.md +++ /dev/null @@ -1,37 +0,0 @@ -== Installation == - -#### Minimum System Requirements - -LifterLMS Requires - -+ PHP 7.4 or later -+ WordPress 5.6 or later -+ MySQL 5.6 or later - -Visit our [full system requirements](https://lifterlms.com/docs/minimum-system-requirements-lifterlms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) for additional information. - -#### Automatic Installation - -The simplest way to install LifterLMS is through your existing WordPress site’s admin. Let WordPress handle file transfers for you - you’ll never need to leave the web browser or admin panel. - -1. Log in to your WordPress dashboard -2. Navigate to Plugins -> Add New -3. In the search field, type "LifterLMS" and click "Search Plugins" -4. Once you've located LifterLMS, click "Install Now" -5. Once installation is complete, click "Activate" - -#### Manual Installation - -To manually install LifterLMS, you'll need to download the zip file using the "Download" link on this screen. Then, use FTP to manually upload the unzipped plugin folder to the proper plugins directory on your webserver. - -Please see this [WordPress Codex document](https://wordpress.org/documentation/article/manage-plugins/#manual-plugin-installation-1) for full instructions on Manual Plugin Installation. - -#### Setup Wizard - -After installation, LifterLMS launches a friendly (and super quick) Setup Wizard. - -This wizard helps you configure LifterLMS so you can get to the fun stuff - like creating your courses - as quickly as possible. - -The wizard includes a few sample courses you can import if you want to see some examples before you start creating your own content. - -You can return to the setup wizard at any time by following [these steps](https://lifterlms.com/docs/rerun-lifterlms-setup-wizard/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). diff --git a/.wordpress-org/readme/15-faqs.md b/.wordpress-org/readme/15-faqs.md deleted file mode 100644 index e1912c2117..0000000000 --- a/.wordpress-org/readme/15-faqs.md +++ /dev/null @@ -1,62 +0,0 @@ -== Frequently Asked Questions == - -#### Where do I buy add-ons or bundles for my LifterLMS eLearning Website? - -You can explore the individual learning management system add-ons [here](https://lifterlms.com/store/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) or save BIG with a [bundle](https://lifterlms.com/product-category/bundles/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) - - -#### How do I troubleshoot issues with my LMS website? - -First, make sure that you're running the latest version of LifterLMS. And if you've got any other LifterLMS plugins active on your site, 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 [Knowledge Base](https://lifterlms.com/docs/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). - - -#### How do I ask a question about my online course website? - -Users of the free LifterLMS should post their questions here in our WordPress.org support area. If you find you're not getting support in as timely a fashion as you wish, you might want to consider [purchasing a product from LifterLMS](https://lifterlms.com/pricing/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) so you can access the LifterLMS support team. - -If you're already a LifterLMS customer, you can simply log into your account and contact the support team directly on the [LifterLMS website](https://lifterlms.com/my-account/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). We can provide a deeper level of support in there 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 up my online course site for me? - -LifterLMS offers technical support, but we do not offer custom website development services. However, we do recommend third party LifterLMS Experts who can help with web design, web development, instructional design or marketing for a fee. Click here to visit the [LifterLMS Experts page](https://lifterlms.com/experts/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). - - -#### I'm interested in purchasing add-ons for my WordPress LMS website, but I have a few questions first. - -If you're not finding your questions answered here or on our website, you can ask your presales questions through this [contact form](https://lifterlms.com/contact/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). You can also connect live with a member of our team [here](https://lifterlms.com/contact/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). - - -#### What add-ons are available for LifterLMS, and where can I read more about them? - -You can find a full list of official LifterLMS Add-ons [here](https://lifterlms.com/store/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale) - - -#### 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](https://lifterlms.com/contact/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale), [vote on existing feature requests](?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale), and checkout the [product roadmap](https://lifterlms.com/roadmap/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). - - -#### Do you have any training for building an online course website? - -Be sure you’ve taken the free tutorial training video course: [How to Create an Online Course with LifterLMS](https://academy.lifterlms.com/course/how-to-build-a-learning-management-system-with-lifterlms/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale). We also encourage you to get to know us by signing up for a $1 temporary _30 Day_ website on our servers which comes with the core LifterLMS plugin all our add-ons intalled. This demo allows you to test drive all the add-ons before you invest. Check it out here: **[Try LifterLMS for $1](https://lifterlms.com/try/?utm_source=LifterLMS%20Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale)**. - - -#### I'm interested in contributing to LifterLMS, how can I start? - -LifterLMS is an open source project. We manage our team, developers, issues, and code on [GitHub](https://github.com/gocodebox/lifterlms/). - -We welcome contributions of all kinds, anyone can contribute even if you don't write code! Check out our [Contributor's Guidelines](https://github.com/gocodebox/lifterlms/blob/master/.github/CONTRIBUTING.md) to get started. - - -#### I found a security vulnerability or issue, how can I report it to the team? - -The LifterLMS team takes security issues and vulnerabilities very seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions. - -Please contact team@lifterlms.com to report a security vulnerability. - -You can review our full security policy at [https://lifterlms.com/security-policy](https://lifterlms.com/security-policy). diff --git a/.wordpress-org/readme/20-screenshots.md b/.wordpress-org/readme/20-screenshots.md deleted file mode 100644 index 7385aa1cba..0000000000 --- a/.wordpress-org/readme/20-screenshots.md +++ /dev/null @@ -1,11 +0,0 @@ -== Screenshots == - -1. Infinitely customizable course catalog layouts: shown with course title, featured image, and instructor information. -2. View a single course with customizable content including access plans, difficulty, instructor, and lesson syllabus. -3. Edit courses in the WordPress block editor to add pricing tables, progress, outline, and more content. -4. Use the interactive Course Builder to structure your course, sections, lessons, quizzes, assignments and more. -5. Dashboard for course creators in the WordPress admin: an overview of recent statistics and quick links to common admin screens. -6. Advanced reporting for every learner so admins can track an individual students's course progress, membership, engagements, and achievements. -7. Clean and organized plugin settings to help you quickly and easily set up your course or membership site. -8. Detailed sales and enrollment reporting with built-in time periods or custom fields to filter by term, student, course, and membership. -9. Setup Wizard to help you install and configure your new online course website with LifterLMS in 5 simple steps. \ No newline at end of file diff --git a/.wordpress-org/readme/25-changelog.md b/.wordpress-org/readme/25-changelog.md deleted file mode 100644 index d38283f06a..0000000000 --- a/.wordpress-org/readme/25-changelog.md +++ /dev/null @@ -1,6 +0,0 @@ -== Changelog == - -{{__CHANGELOG_ENTRIES__}} - - -[Read the full changelog]({{__READ_MORE_LINK__}}) diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index ef9b9789b3..0000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,8942 +0,0 @@ -LifterLMS Changelog -=================== - -v7.8.1 - 2024-10-29 -------------------- - -##### Bug Fixes - -+ Fixing migration to allow SKUs to be entered in access plans if one already exists. - - -v7.8.0 - 2024-10-29 -------------------- - -##### New Features - -+ Added attribute 'layout' to My Account block and shortcode to display content as columns or stacked. -+ Changes styling in the Course Syllabus block for the current lesson, when used on a single lesson page. [#2777](https://github.com/gocodebox/lifterlms/issues/2777) -+ Added new feature: Quiz Resume. [#2783](https://github.com/gocodebox/lifterlms/issues/2783) - -##### Updates and Enhancements - -+ Improved UI of the Access Plans UI for better usability. -+ Improved accessibility of the Access Plans metaboxes to use proper labels and screen reader text where needed. -+ Added Launch Course Builder to the WP Admin Bar when viewing a course. -+ Added Launch Course Builder button when using the Classic Editor, beside “Add Course” button. -+ Added “Clear Reporting Cache” button on admin reporting page. -+ Improved help messaging on the Course Builder, and the Account and Checkout tabs of the LifterLMS settings. -+ Added support for image upload in Result Clarifications box for quizzes. -+ Removes spacing before or after answers for conditional quiz questions. - -##### Bug Fixes - -+ Fixed reference in `LLMS_Ajax_Handler::quiz_start()` to `LLMS_Quiz_Attempt::get_status()` method removed since LifterLMS 4.0.0. -+ Fix for notifications no longer auto-dismissing. [#2772](https://github.com/gocodebox/lifterlms/issues/2772) -+ Fix for the lifterlms_registration shortcode not working on certain themes on a separate page. [#2779](https://github.com/gocodebox/lifterlms/issues/2779) -+ Using a more reliable method of keeping LifterLMS notices dismissed. [#2767](https://github.com/gocodebox/lifterlms/issues/2767) - -##### Breaking Changes - -+ Hiding the Plan SKU field for access plans if not in use. Set the `llms_access_plans_allow_skus` option to get this field back. - -##### Developer Notes - -+ Adds current-lesson CSS class for the current Lesson in the Course Syllabus block. [#2777](https://github.com/gocodebox/lifterlms/issues/2777) -+ Adds new llms_before_registration_validation filter for 3rd party open registration validation. -+ Added filter `llms_quiz_attempt_resume_time_period` for updating quiz resume allowed time period. - -##### Updated Templates - -+ [templates/admin/reporting/tabs/quizzes/attempt.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/admin/reporting/tabs/quizzes/attempt.php) -+ [templates/checkout/form-checkout.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/checkout/form-checkout.php) -+ [templates/checkout/form-summary.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/checkout/form-summary.php) -+ [templates/content-single-question.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/content-single-question.php) -+ [templates/myaccount/form-redeem-voucher.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/myaccount/form-redeem-voucher.php) -+ [templates/myaccount/header.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/myaccount/header.php) -+ [templates/notifications/basic.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/notifications/basic.php) -+ [templates/quiz/questions/content-choice.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/quiz/questions/content-choice.php) -+ [templates/quiz/questions/content-picture_choice.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/quiz/questions/content-picture_choice.php) -+ [templates/quiz/results-attempt-questions-list.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/quiz/results-attempt-questions-list.php) -+ [templates/quiz/results-attempt.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/quiz/results-attempt.php) -+ [templates/quiz/results.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/quiz/results.php) -+ [templates/quiz/start-button.php](https://github.com/gocodebox/lifterlms/blob/7.8.0/templates/quiz/start-button.php) - - -v7.7.8 - 2024-09-17 -------------------- - -##### Bug Fixes - -+ Update version of the Blocks library to avoid having an unsaved changes prompt appear after updating an access plan on a course. -+ Fix for pricing display with additional formatting. [#2762](https://github.com/gocodebox/lifterlms/issues/2762) - - -v7.7.7 - 2024-09-12 -------------------- - -##### Bug Fixes - -+ Avoid modifying non-LifterLMS block component styling in the editor. [#2752](https://github.com/gocodebox/lifterlms/issues/2752) -+ Use student email for the student login merge code in notification emails if usernames are not used. [#2755](https://github.com/gocodebox/lifterlms/issues/2755) -+ Show video or audio embed URLs in lessons which are valid but contain special characters. [#2749](https://github.com/gocodebox/lifterlms/issues/2749) - - -v7.7.6 - 2024-08-22 -------------------- - -##### Bug Fixes - -+ Avoid modifying the Lost Password link if no LifterLMS Dashboard page is set. [#2741](https://github.com/gocodebox/lifterlms/issues/2741) -+ Fixes placeholder label on the Dashboard Page selection dropdown. [#2708](https://github.com/gocodebox/lifterlms/issues/2708) -+ Avoid outputting lifterlms_membership_link content if the membership is not published. [#2724](https://github.com/gocodebox/lifterlms/issues/2724) -+ Fix display of quiz question when viewing the quiz results if it contains formatting. [#2734](https://github.com/gocodebox/lifterlms/issues/2734) -+ Fixes sanitization as reported by FKSEC. -+ Fixes warning when trying to get the contents of a media protection file that does not exist. [#2735](https://github.com/gocodebox/lifterlms/issues/2735) - -##### Updated Templates - -+ [templates/quiz/results-attempt-questions-list.php](https://github.com/gocodebox/lifterlms/blob/7.7.6/templates/quiz/results-attempt-questions-list.php) - - -v7.7.5 - 2024-08-15 -------------------- - -##### Bug Fixes - -+ Show video tiles for courses on the Dashboard and My Courses pages when enabled. [#2728](https://github.com/gocodebox/lifterlms/issues/2728) - -##### Updated Templates - -+ [templates/myaccount/dashboard-section.php](https://github.com/gocodebox/lifterlms/blob/7.7.5/templates/myaccount/dashboard-section.php) - - -v7.7.4 - 2024-08-13 -------------------- - -##### Bug Fixes - -+ Reverts changes to restricting pages by membership functionality to avoid conflicts with certain themes and plugins. [#2714](https://github.com/gocodebox/lifterlms/issues/2714) - - -v7.7.3 - 2024-08-12 -------------------- - -##### Bug Fixes - -+ Fixes revenue display in the Orders table. [#2719](https://github.com/gocodebox/lifterlms/issues/2719) - - -v7.7.2 - 2024-08-12 -------------------- - -##### Bug Fixes - -+ Fixes fatal error when updating from an old version. Thanks [@verygoodplugins](https://github.com/verygoodplugins)! [#2716](https://github.com/gocodebox/lifterlms/issues/2716) -+ Avoid errors on pages restricted by one or more memberships. [#2714](https://github.com/gocodebox/lifterlms/issues/2714) - - -v7.7.1 - 2024-08-09 -------------------- - -##### Updates and Enhancements - -+ Removes placeholder image functionality with protected media files. Modify cache value for wordpress.com hosting. - -##### Bug Fixes - -+ Fixing the Award Certificate button appearing at the top of the Reporting > Students, Certificate tab. [#2709](https://github.com/gocodebox/lifterlms/issues/2709) -+ Fixed warnings from running `wp_kses_post()` on empty `paginate_links()` calls. - -##### Updated Templates - -+ [templates/myaccount/my-notifications.php](https://github.com/gocodebox/lifterlms/blob/7.7.1/templates/myaccount/my-notifications.php) - - -v7.7.0 - 2024-07-19 -------------------- - -##### New Features - -+ Adding read-only input for easier sharing of a certificate. Thanks [@imknight](https://github.com/imknight)! [#1379](https://github.com/gocodebox/lifterlms/issues/1379) -+ Adds additional protection for media files uploaded to quiz questions in the Course Builder. -+ Adds native Elementor support for Courses, with a default Course template and several basic widgets. - -##### Updates and Enhancements - -+ Removes the Visibility setting for Vouchers and Coupons. [#2640](https://github.com/gocodebox/lifterlms/issues/2640) -+ Updating internal libraries to their latest versions. -+ Added support for mutliple membership restriction warning. [#2523](https://github.com/gocodebox/lifterlms/issues/2523) - -##### Bug Fixes - -+ Prevent backslashes from being removed from Result Clarifications. [#2675](https://github.com/gocodebox/lifterlms/issues/2675) -+ Avoids JS error on the front-end. [#2678](https://github.com/gocodebox/lifterlms/issues/2678) -+ Exclude hidden courses when toggled off in the Courses block. [#2690](https://github.com/gocodebox/lifterlms/issues/2690) -+ Avoids saving review meta information for non-courses. Thanks [@bsetiawan88](https://github.com/bsetiawan88)! [#887](https://github.com/gocodebox/lifterlms/issues/887) -+ Improvements to the frontend styling of LifterLMS screens for design, accessibility, and better compatibility with dark mode themes. -+ Allow private VideoPress videos to play when the URL is pasted on Video Embed URL. [#2533](https://github.com/gocodebox/lifterlms/issues/2533) -+ Fixes the Certificate Title block when creating a new certificate template. [#2696] (https://github.com/gocodebox/lifterlms/issues/2696) - -##### Security Fixes - -+ Adds various security improvements, e.g. better escaping of output, as suggested by the Plugin Checker Plugin. - -##### Performance Improvements - -+ Caching get_transaction_total queries to improve performance of the - orders table in the admin dashboard. - -##### Updated Templates - -+ [templates/achievements/loop.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/achievements/loop.php) -+ [templates/achievements/template.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/achievements/template.php) -+ [templates/admin/analytics/analytics.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/analytics/analytics.php) -+ [templates/admin/notices/staging.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/notices/staging.php) -+ [templates/admin/post-types/order-transactions.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/post-types/order-transactions.php) -+ [templates/admin/post-types/students.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/post-types/students.php) -+ [templates/admin/reporting/nav-filters.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/nav-filters.php) -+ [templates/admin/reporting/reporting.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/reporting.php) -+ [templates/admin/reporting/tabs/courses/course.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/courses/course.php) -+ [templates/admin/reporting/tabs/courses/overview.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/courses/overview.php) -+ [templates/admin/reporting/tabs/courses/students.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/courses/students.php) -+ [templates/admin/reporting/tabs/memberships/membership.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/memberships/membership.php) -+ [templates/admin/reporting/tabs/memberships/overview.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/memberships/overview.php) -+ [templates/admin/reporting/tabs/memberships/students.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/memberships/students.php) -+ [templates/admin/reporting/tabs/quizzes/attempt.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/quizzes/attempt.php) -+ [templates/admin/reporting/tabs/quizzes/attempts.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/quizzes/attempts.php) -+ [templates/admin/reporting/tabs/quizzes/overview.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/quizzes/overview.php) -+ [templates/admin/reporting/tabs/quizzes/quiz.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/quizzes/quiz.php) -+ [templates/admin/reporting/tabs/students/achievements.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/students/achievements.php) -+ [templates/admin/reporting/tabs/students/certificates.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/students/certificates.php) -+ [templates/admin/reporting/tabs/students/courses-course.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/students/courses-course.php) -+ [templates/admin/reporting/tabs/students/courses.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/students/courses.php) -+ [templates/admin/reporting/tabs/students/information.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/students/information.php) -+ [templates/admin/reporting/tabs/students/memberships.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/students/memberships.php) -+ [templates/admin/reporting/tabs/students/student.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/students/student.php) -+ [templates/admin/reporting/tabs/students/students.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/reporting/tabs/students/students.php) -+ [templates/admin/user-edit.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/admin/user-edit.php) -+ [templates/certificates/actions.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/certificates/actions.php) -+ [templates/certificates/content-legacy.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/certificates/content-legacy.php) -+ [templates/certificates/content.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/certificates/content.php) -+ [templates/certificates/dynamic-styles.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/certificates/dynamic-styles.php) -+ [templates/certificates/header.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/certificates/header.php) -+ [templates/certificates/loop.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/certificates/loop.php) -+ [templates/certificates/preview.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/certificates/preview.php) -+ [templates/certificates/template.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/certificates/template.php) -+ [templates/checkout/form-checkout.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/checkout/form-checkout.php) -+ [templates/checkout/form-confirm-payment.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/checkout/form-confirm-payment.php) -+ [templates/checkout/form-coupon.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/checkout/form-coupon.php) -+ [templates/checkout/form-gateways.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/checkout/form-gateways.php) -+ [templates/checkout/form-summary.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/checkout/form-summary.php) -+ [templates/checkout/form-switch-source.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/checkout/form-switch-source.php) -+ [templates/content-single-question.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/content-single-question.php) -+ [templates/course/audio.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/audio.php) -+ [templates/course/categories.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/categories.php) -+ [templates/course/complete-lesson-link.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/complete-lesson-link.php) -+ [templates/course/difficulty.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/difficulty.php) -+ [templates/course/favorite.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/favorite.php) -+ [templates/course/full-description.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/full-description.php) -+ [templates/course/length.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/length.php) -+ [templates/course/lesson-count.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/lesson-count.php) -+ [templates/course/lesson-navigation.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/lesson-navigation.php) -+ [templates/course/lesson-preview.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/lesson-preview.php) -+ [templates/course/meta-wrapper-start.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/meta-wrapper-start.php) -+ [templates/course/outline-list-small.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/outline-list-small.php) -+ [templates/course/parent-course.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/parent-course.php) -+ [templates/course/short-description.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/short-description.php) -+ [templates/course/syllabus.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/syllabus.php) -+ [templates/course/tags.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/tags.php) -+ [templates/course/tracks.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/tracks.php) -+ [templates/course/video.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/course/video.php) -+ [templates/emails/footer.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/emails/footer.php) -+ [templates/emails/header.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/emails/header.php) -+ [templates/emails/reset-password.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/emails/reset-password.php) -+ [templates/global/form-login.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/global/form-login.php) -+ [templates/global/form-registration.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/global/form-registration.php) -+ [templates/lesson/audio.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/lesson/audio.php) -+ [templates/lesson/video.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/lesson/video.php) -+ [templates/loop/author.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/loop/author.php) -+ [templates/loop/enroll-date.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/loop/enroll-date.php) -+ [templates/loop/enroll-status.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/loop/enroll-status.php) -+ [templates/loop/featured-image.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/loop/featured-image.php) -+ [templates/loop/loop-start.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/loop/loop-start.php) -+ [templates/loop/none-found.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/loop/none-found.php) -+ [templates/loop/pagination.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/loop/pagination.php) -+ [templates/membership/full-description.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/membership/full-description.php) -+ [templates/membership/price.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/membership/price.php) -+ [templates/myaccount/dashboard-section.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/dashboard-section.php) -+ [templates/myaccount/form-edit-account.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/form-edit-account.php) -+ [templates/myaccount/form-redeem-voucher.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/form-redeem-voucher.php) -+ [templates/myaccount/my-favorites.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/my-favorites.php) -+ [templates/myaccount/my-grades-single-table.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/my-grades-single-table.php) -+ [templates/myaccount/my-grades-single.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/my-grades-single.php) -+ [templates/myaccount/my-grades.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/my-grades.php) -+ [templates/myaccount/my-notifications.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/my-notifications.php) -+ [templates/myaccount/my-orders.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/my-orders.php) -+ [templates/myaccount/navigation.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/navigation.php) -+ [templates/myaccount/view-order-actions.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/view-order-actions.php) -+ [templates/myaccount/view-order-information.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/view-order-information.php) -+ [templates/myaccount/view-order-transactions.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/view-order-transactions.php) -+ [templates/myaccount/view-order.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/myaccount/view-order.php) -+ [templates/notifications/basic.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/notifications/basic.php) -+ [templates/product/access-plan-button.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/access-plan-button.php) -+ [templates/product/access-plan-description.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/access-plan-description.php) -+ [templates/product/access-plan-feature.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/access-plan-feature.php) -+ [templates/product/access-plan-pricing.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/access-plan-pricing.php) -+ [templates/product/access-plan-restrictions.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/access-plan-restrictions.php) -+ [templates/product/access-plan-title.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/access-plan-title.php) -+ [templates/product/access-plan-trial.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/access-plan-trial.php) -+ [templates/product/access-plan.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/access-plan.php) -+ [templates/product/free-enroll-form.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/free-enroll-form.php) -+ [templates/product/pricing-table.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/product/pricing-table.php) -+ [templates/quiz/meta-information.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/meta-information.php) -+ [templates/quiz/questions/content-choice.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/questions/content-choice.php) -+ [templates/quiz/questions/content-picture_choice.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/questions/content-picture_choice.php) -+ [templates/quiz/questions/description.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/questions/description.php) -+ [templates/quiz/questions/video.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/questions/video.php) -+ [templates/quiz/questions/wrapper-start.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/questions/wrapper-start.php) -+ [templates/quiz/results-attempt-questions-list.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/results-attempt-questions-list.php) -+ [templates/quiz/results-attempt.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/results-attempt.php) -+ [templates/quiz/results.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/results.php) -+ [templates/quiz/return-to-lesson.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/return-to-lesson.php) -+ [templates/quiz/start-button.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/quiz/start-button.php) -+ [templates/shared/instructors.php](https://github.com/gocodebox/lifterlms/blob/7.7.0/templates/shared/instructors.php) - - -v7.6.3 - 2024-05-31 -------------------- - -##### Bug Fixes - -+ Adds additional filtering when using the lifterlms_favorites shortcode. Thanks, Peter Thaleikis. - -##### Updated Templates - -+ [templates/admin/reporting/nav-filters.php](https://github.com/gocodebox/lifterlms/blob/7.6.3/templates/admin/reporting/nav-filters.php) - - -v7.6.2 - 2024-05-28 -------------------- - -##### New Features - -+ Added functionality to disable quiz retake after a passed attempt. - -##### Updates and Enhancements - -+ Adds ability to search by an order ID number in the Orders table. Thanks [@bsetiawan88](https://github.com/bsetiawan88)! [#1583](https://github.com/gocodebox/lifterlms/issues/1583) -+ Added support for showing Private, Drafts and Pending Courses/Memberships in Reporting > Sales Page. [#2490](https://github.com/gocodebox/lifterlms/issues/2490) - -##### Bug Fixes - -+ Fixes issue of not being able to save an imported or cloned course using Divi or the Classic Editor plugin. [#2649](https://github.com/gocodebox/lifterlms/issues/2649) -+ Fixes broken View link after creating a new lesson using the Course Builder. [#2662](https://github.com/gocodebox/lifterlms/issues/2662) -+ Upgrading Quill text editor version. [#2655](https://github.com/gocodebox/lifterlms/issues/2655) - -##### Developer Notes - -+ Added logic to delete vouchers data from table when vouchers are deleted. Thanks [@bsetiawan88](https://github.com/bsetiawan88)! [#1087](https://github.com/gocodebox/lifterlms/issues/1087) - -##### Updated Templates - -+ [templates/admin/reporting/nav-filters.php](https://github.com/gocodebox/lifterlms/blob/7.6.2/templates/admin/reporting/nav-filters.php) - - -v7.6.1 - 2024-05-02 -------------------- - -##### Bug Fixes - -+ Fix error when trying to add a new lesson outside the course builder. [#2636](https://github.com/gocodebox/lifterlms/issues/2636) -+ Show correct course title when launching Course Builder immediately after creating a new course. [#2606](https://github.com/gocodebox/lifterlms/issues/2606) -+ Updating lifter blocks version for the Launch Course Builder button to appear on the Course edit page. - - -v7.6.0 - 2024-04-18 -------------------- - -##### New Features - -+ Adds course-level lesson drip settings. -+ Loads translation files later for compatibility with plugins like Loco Translate. [#2429](https://github.com/gocodebox/lifterlms/issues/2429), [#2525](https://github.com/gocodebox/lifterlms/issues/2525) -+ Adds settings in the Permalinks page to edit the custom post type and taxonomy slugs. Slugs are saved in the site language on install on update. -+ Adds `llms_switch_to_site_locale` and `llms_restore_locale` to help LifterLMS add-ons switch to the site language when getting translation strings. - -##### Updates and Enhancements - -+ Improved the Course Builder UI. -+ Updating the Blocks and Helpers libraries to the latest version. - -##### Bug Fixes - -+ Allows the style tag when embedding content (iframe), in order to support more services. [#2610](https://github.com/gocodebox/lifterlms/issues/2610) -+ Removes non-working editing of course title in the Course Builder. [#2607](https://github.com/gocodebox/lifterlms/issues/2607) -+ Avoid issue with lost content when the course builder is launched immediately after creating a new course. [#2606](https://github.com/gocodebox/lifterlms/issues/2606) -+ LifterLMS block editor strings now appear in the user's language. [#2525](https://github.com/gocodebox/lifterlms/issues/2525) -+ Fixed user's language setting not honored on backend. [#2324](https://github.com/gocodebox/lifterlms/issues/2324) -+ Fixes XSS, sanitization, and other security issues reported by Signal Labs. -+ Fixes typo with CHF currency. - -##### Updated Templates - -+ [templates/myaccount/my-orders.php](https://github.com/gocodebox/lifterlms/blob/7.6.0/templates/myaccount/my-orders.php) - - -v7.5.3 - 2024-02-22 -------------------- - -##### Bug Fixes - -+ Fix fatal error when rendering single course page with reviews enabled. [#2604](https://github.com/gocodebox/lifterlms/issues/2604) - - -v7.5.2 - 2024-02-16 -------------------- - -##### Updates and Enhancements - -+ Added product images for Aircraft and Memberlite. -+ Updates LifterLMS Rest to [v1.0.0](https://make.lifterlms.com/2024/01/22/lifterlms-rest-api-version-1-0-0/). - -##### Bug Fixes - -+ Adds error handling when taking a quiz in case of temporary server error or internet issue. - -##### Security Fixes - -+ Reviews handler now checks nonces and user limits. Thanks, Francesco Carlucci at Wordfence. - -##### Updated Templates - -+ [templates/emails/footer.php](https://github.com/gocodebox/lifterlms/blob/7.5.2/templates/emails/footer.php) - - -v7.5.1 - 2024-01-24 -------------------- - -##### Updates and Enhancements - -+ Added action and description links to the plugins page. - -##### Bug Fixes - -+ Style updates for buttons in editor. -+ Fixed logic to validate that the terms page exists before adding to email footer. -+ Removed .clear styles since WordPress already sets them by default. [#2573](https://github.com/gocodebox/lifterlms/issues/2573) -+ Improved image appearance in quiz multiple choice and image choice question types. [#2588](https://github.com/gocodebox/lifterlms/issues/2588) - -##### Security Fixes - -+ Added nonce for course clone link. Thanks, Dhabaleshwar Das. - -##### Updated Templates - -+ [templates/emails/footer.php](https://github.com/gocodebox/lifterlms/blob/7.5.1/templates/emails/footer.php) - - -v7.5.0 - 2023-11-05 -------------------- - -##### New Features - -+ Added `LLMS_Add_On::get_image()` method to get the addon and author image. [#2511](https://github.com/gocodebox/lifterlms/issues/2511) -+ Added a paragraph to show Number of lessons in a course at Course Catalog and My Courses. [#2434](https://github.com/gocodebox/lifterlms/issues/2434) - -##### Updates and Enhancements - -+ Updates LifterLMS Blocks to [v2.5.2](https://make.lifterlms.com/2023/11/01/lifterlms-blocks-version-2-5-2/). -+ Bundled Add-ons & More Banners/Author Images in Core LifterLMS. [#2511](https://github.com/gocodebox/lifterlms/issues/2511) -+ Updates LifterLMS Rest to [v1.0.0-beta.29](https://make.lifterlms.com/2023/10/24/lifterlms-rest-api-version-1-0-0-beta-29/). -+ Update Action Scheduler to version 3.5.4. To improve compatibility with PHP 8.2. - -##### Bug Fixes - -+ Fixed checking for the wrong function name when defining the pluggable function `lifterlms_student_dashboard`. [#2550](https://github.com/gocodebox/lifterlms/issues/2550) -+ Only show LifterLMS-authored Addons in All section. -+ Improved compatibility with WordPress 6.4 by using `traverse_and_serialize_blocks` in place of the deprecated `_inject_theme_attribute_in_block_template_content`. -+ PHP 8.2 compatibility fix: Fixed creation of dynamic property `LLMS_Meta_Box_Access::$_saved`. - -##### Developer Notes - -+ Added `LLMS_Payment_Gateway::can_process_access_plan()` method to determine if an access plan can be processed by the gateway. Also added the filter hook `llms_can_gateway_process_access_plan` to filter its result. -+ Added a check on whether the gateway can process a specific plan when purchasing a plan, or switching the payment gateway of a recurring payment. -+ Added action hook `llms_checkout_form_gateway_cant_process_plan` fired on the checkout form gateways section, when a gateway cannot process a specific plan. -+ Added new filter hook `llms_unschedule_recurring_payment_on_access_pan_expiration` to control whether or not the recurring payments fo an order need to be unscheduled when the related access plan expires (`true` by default). -+ Added 'favorites' in User postmeta for getting all user's favorites. -+ Added filter `llms_course_syllabus_lesson_favorite_visibility` for disabling favorites in syllabus view. -+ Added filter `llms_is_$object_type_favorite` to change object's (lesson, student, course) favorite boolean value. -+ Added `llms_lesson_preview_before_title` and `llms_lesson_preview_after_title` action hooks. -+ Added function `llms_template_syllabus_favorite_lesson_preview`. -+ Added filter `llms_favorites_enabled` to enable/disable Favorites feature. -+ Removed references to the unused quiz's property `random_answers`. Thanks [@AlexVCS](https://github.com/AlexVCS)! [#2552](https://github.com/gocodebox/lifterlms/issues/2552) -+ Improved some unit tests compatibility with PHP 8.2. - -##### Security Fixes - -+ Improved security when exporting a reporting table: make sure to avoid path traversals. Thanks [Huseyin Tintas (stif)](https://linkedin.com/in/huseyintintas)! - -##### Updated Templates - -+ [templates/checkout/form-gateways.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/checkout/form-gateways.php) -+ [templates/checkout/form-switch-source.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/checkout/form-switch-source.php) -+ [templates/content-single-lesson-before.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/content-single-lesson-before.php) -+ [templates/course/favorite.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/course/favorite.php) -+ [templates/course/length.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/course/length.php) -+ [templates/course/lesson-count.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/course/lesson-count.php) -+ [templates/course/lesson-preview.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/course/lesson-preview.php) -+ [templates/loop/content.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/loop/content.php) -+ [templates/myaccount/dashboard.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/myaccount/dashboard.php) -+ [templates/myaccount/my-favorites.php](https://github.com/gocodebox/lifterlms/blob/7.5.0/templates/myaccount/my-favorites.php) - - -v7.4.2 - 2023-10-06 -------------------- - -##### Developer Notes - -+ Fixing issues in the 7.4.1 release. - - -v7.4.1 - 2023-10-06 -------------------- - -##### New Features - -+ Added new admin Resources page. - -##### Bug Fixes - -+ Fixed possible issues when cloning a course containing a quiz built with the Advanced Quizzes addon, after disabling it. - -##### Developer Notes - -+ Moved attempt randomization logic into the new static method `LLMS_Quiz_Attempt::randomize_attempt_questions()`. -+ Added filter hook `llms_quiz_attempt_questions_array` to allow filtering the quiz attempt's question arrays. - - -v7.4.0 - 2023-10-03 -------------------- - -##### New Features - -+ Added method `LLMS_Quiz::get_questions_count()` for getting count of questions. -+ Added support for the upcoming "Question Bank" feature of the LifterLMS Advanced Quizzes add-on. - -##### Updates and Enhancements - -+ Added `nocache_headers()` to prevent browser caching for temporary redirects. - -##### Bug Fixes - -+ Added "Chaiyaphum" province for the Thailand. [#2527](https://github.com/gocodebox/lifterlms/issues/2527) - -##### Developer Notes - -+ Course Builder: Correctly get/set (and track changes of) Backbone's model properties which are objects. -+ Added filter hook `llms_admin_show_header` to allow 3rd parties filtering whether or not to show the branded header in the admin. -+ Added filter `llms_generator_new_post_data`, to allow third parties to filter the data used when creating a new post while cloning/exporting a course or lesson. -+ Abstracted the `LLMS_Admin_Setup_Wizard` class, added the class `LLMS_Abstract_Admin_Wizard`. -+ Added filter `llms_quiz_attempt_questions_randomize` to enable/disable questions randomize. -+ Added filter `llms_quiz_attempt_questions` to modify the questions array for the quiz. -+ Added filter `llms_quiz_questions_count` to filter the quiz's question count. - -##### Updated Templates - -+ [templates/quiz/meta-information.php](https://github.com/gocodebox/lifterlms/blob/7.4.0/templates/quiz/meta-information.php) - - -v7.3.0 - 2023-08-08 -------------------- - -##### Updates and Enhancements - -+ When a notice is shown for an access plan on the course edit screen (e.g. When using the WooCommerce integration and no product has been associated to the access plan.) Also display a warning icon next to the access plan title. -+ Made sure only who can `view_others_lifterlms_reports` will be able to see the analytics widget content in the WordPress admin. -+ Better rounding of float values on some reporting screens. -+ Avoid creating a post revision when cloning a course/lesson. -+ When creating pages via `llms_create_pages()`: strip all tags from the page title and slash the page data prior to inserting the page in the db via `wp_insert_post()` to prevent slashes from being stripped from the page title. -+ Updated the WordPress tested version up to 6.3. -+ Improved compatibility with the Divi theme by fixing an issue with the quiz attempt result clarifications not being visible when the Divi option `Defer jQuery And jQuery Migrate` was enabled. [#2470](https://github.com/gocodebox/lifterlms/issues/2470) - -##### Bug Fixes - -+ Fix spacer block when creating new certificate templates in WP 6.3. -+ Fixed PHP Warning when no course/membership catalog page was set or if the selected page doesn't exist anymore. [#2496](https://github.com/gocodebox/lifterlms/issues/2496) -+ Don't include WordPress default sidebar.php template when using a block theme. [#2488](https://github.com/gocodebox/lifterlms/issues/2488) -+ Updated Kazakhstani Tenge's currency symbol. [#2475](https://github.com/gocodebox/lifterlms/issues/2475) -+ Make the dashboard widget visible only if the current user has LMS Manager capabilities. [#2500](https://github.com/gocodebox/lifterlms/issues/2500) -+ Fixed issue with LifterLMS Navigation Link block and block visibility settings. [#2474](https://github.com/gocodebox/lifterlms/issues/2474) -+ Use student dashboard as default value for navigation link block. [#2465](https://github.com/gocodebox/lifterlms/issues/2465) -+ Fixed typo in a function name that could potentially produce a fatal. Thanks [@kamalahmed](https://github.com/kamalahmed)! - -##### Developer Notes - -+ Added the parameter `$tab` (ID/slug of the tab) to the `lifterlms_reporting_tab_cap` filter hook. Thanks [@sapayth](https://github.com/sapayth)! [#2468](https://github.com/gocodebox/lifterlms/issues/2468) -+ Added new filter hook `llms_can_analytics_widget_be_processed` that will allow to filter whether or not an analytics widget can be processed/displayed. -+ Added new filter `llms_install_get_pages`. -+ Added new public static method `LLMS_Admin_Dashboard_Widget::get_dashboard_widget_data()`. -+ Added `llms_dashboard_checklist` and `llms_dashboard_widget_data` filters to adjust dashboard content. [#2491](https://github.com/gocodebox/lifterlms/issues/2491) - -##### Updated Templates - -+ [templates/admin/reporting/tabs/widgets.php](https://github.com/gocodebox/lifterlms/blob/7.3.0/templates/admin/reporting/tabs/widgets.php) -+ [templates/global/sidebar.php](https://github.com/gocodebox/lifterlms/blob/7.3.0/templates/global/sidebar.php) -+ [templates/quiz/results-attempt-questions-list.php](https://github.com/gocodebox/lifterlms/blob/7.3.0/templates/quiz/results-attempt-questions-list.php) - - -v7.2.1 - 2023-06-13 -------------------- - -##### Updates and Enhancements - -+ Updated LifterLMS Blocks to [2.5.1](https://make.lifterlms.com/2023/06/13/lifterlms-blocks-version-2-5-1/). [#2461](https://github.com/gocodebox/lifterlms/issues/2461) - - -v7.2.0 - 2023-06-07 -------------------- - -##### New Features - -+ Added `LLMS_ASSETS_VERSION` constant for cache busting. -+ Add course builder explainer video and lesson IDs. -+ Add new dashboard widget. -+ Added query to remove order comments on plugin uninstall when the constant `LLMS_REMOVE_ALL_DATA` is set to `true`. [#2322](https://github.com/gocodebox/lifterlms/issues/2322) -+ Added support for showing multiple difficulties when using Gutenberg Editor. [#2433](https://github.com/gocodebox/lifterlms/issues/2433) -+ Add shortcode wrapper blocks. -+ Added new navigation link block. -+ Added `llms_is_editor_block_rendering` helper function. -+ Added `llms_is_block_editor` helper function. - -##### Updates and Enhancements - -+ Adjusted `llms_modify_dashboard_pagination_links_disable` filter to return false only on Dashboard page. -+ Updates LifterLMS REST to [v1.0.0-beta.27](https://make.lifterlms.com/2023/05/31/lifterlms-rest-api-version-1-0-0-beta-27). -+ Raised the minimum support WordPress core version to 5.9. -+ Updates LifterLMS Blocks to [2.5.0](https://make.lifterlms.com/2023/06/06/lifterlms-blocks-version-2-5-0/). - -##### Bug Fixes - -+ Fixed LifterLMS specific block templates not correctly working on Windows file system. -+ Added `function_exists` check for `llms_blocks_is_post_migrated()`. -+ Update so dismissed notifications don't remain on viewport top layer. -+ Made sure to always enqueue iziModal assets when rendering achievements cards. - -##### Developer Notes - -+ Added new filter hook `llms_builder_settings` to filter the settings passed to the course builder. - -##### Updated Templates - -+ [templates/admin/reporting/tabs/widgets.php](https://github.com/gocodebox/lifterlms/blob/7.2.0/templates/admin/reporting/tabs/widgets.php) -+ [templates/course/syllabus.php](https://github.com/gocodebox/lifterlms/blob/7.2.0/templates/course/syllabus.php) - - -v7.1.4 - 2023-04-28 -------------------- - -##### Bug Fixes - -+ Fixed an issue that prevented the correct saving of the course length when using the block editor. [#2426](https://github.com/gocodebox/lifterlms/issues/2426) - -##### Developer Notes - -+ Fixed an issue running unit tests on PHP 7.4 and WordPress 6.2 expecting `render_block()` returning a string while we were applying a filter that returned the boolean `true`. - - -v7.1.3 - 2023-04-25 -------------------- - -##### Updates and Enhancements - -+ Wrapped some elements in HTML for better styling. -+ In Course and Lesson settings, replaced outdated URLs to WordPress' documentation about the list of sites you can embed from. -+ Updated few Italian province names. [#2256](https://github.com/gocodebox/lifterlms/issues/2256) -+ Avoid use of inline styles in course reviews. [#410](https://github.com/gocodebox/lifterlms/issues/410) - -##### Bug Fixes - -+ Fixed "Unsaved Data" warning when adding vouchers. [#2394](https://github.com/gocodebox/lifterlms/issues/2394) -+ Fixed "Course Length" and "Difficulty" fields visible in the Block Editor which is meant for Classic Editor. [#2174](https://github.com/gocodebox/lifterlms/issues/2174) -+ Added missing `$post_id` parameter to the `the_title` filter hook when retrieving a form title. [#2332](https://github.com/gocodebox/lifterlms/issues/2332) -+ Added missing Armed Forces options to the US States dropdown in the Billing information form. [#2325](https://github.com/gocodebox/lifterlms/issues/2325) -+ Using `strpos()` instead of `str_starts_with()` for compatibility. [#2415](https://github.com/gocodebox/lifterlms/issues/2415) - -##### Developer Notes - -+ Added helper function `llms_get_floats_rounding_precision()` to return precision for rounding off floating values and filter hook `lifterlms_floats_rounding_precision` to filter precision value in reporting. [#2237](https://github.com/gocodebox/lifterlms/issues/2237) -+ Added `lifterlms_dashboard_memberships_not_enrolled_text` filter hook to allow altering the message displaying on the student dashboard when the current user is not enrolled in any memberships. [#2396](https://github.com/gocodebox/lifterlms/issues/2396) -+ Added `lifterlms_dashboard_courses_not_enrolled_text` filter hook to allow altering the message displaying on the student dashboard when the current user is not enrolled in any courses. [#2396](https://github.com/gocodebox/lifterlms/issues/2396) - -##### Updated Templates - -+ [templates/course/syllabus.php](https://github.com/gocodebox/lifterlms/blob/7.1.3/templates/course/syllabus.php) - - -v7.1.2 - 2023-03-27 -------------------- - -##### Updates and Enhancements - -+ Making the LifterLMS logo link to the LifterLMS.com site. - -##### Bug Fixes - -+ Fix bug in `llms_featured_img` function when featured image file is not available. [#2381](https://github.com/gocodebox/lifterlms/issues/2381) -+ Fixed manual certificates awarding broken when using the block editor. [#2386](https://github.com/gocodebox/lifterlms/issues/2386) - - -v7.1.1 - 2023-03-13 -------------------- - -##### Bug Fixes - -+ Fixed notice display on WooCommerce dashboard pages. -+ Fixed View button URL when using WP in subdirectory. -+ Fixed blank System Report's copy for Support. - - -v7.1.0 - 2023-03-02 -------------------- - -##### New Features - -+ Added lessons count column on the Courses post list table. -+ Added a new Dashboard page under the LifterLMS menu in the admin, whicih includes recent activity widgets and links to useful resources. -+ Added link to the course builder for each lesson on the Lessons post list table. Also added a link to either edit or add a quiz. - -##### Updates and Enhancements - -+ Updates LifterLMS Helper to [v3.5.0](https://make.lifterlms.com/2023/02/28/lifterlms-helper-version-3-5-0/). -+ Make the LifterLMS menu meta box initially available on Appearance -> Menus. -+ Updates LifterLMS REST to [v1.0.0-beta.26](https://make.lifterlms.com/2023/02/28/lifterlms-rest-api-version-1-0-0-beta-26/). - -##### Bug Fixes - -+ Catch possible fatal when trying to display a "broken" basic notification and set its status to 'error' so that it'll be excluded from the next fetches. -+ Catch possible fatal when sending notification emails and in that case remove from the queue the item that produced it. -+ Fix cloned course retaining original course's ID in some restriction messages. -+ Fixed possible admin notices duplication when activating/deactivating or installing add-ons from the page Add-ons & more. -+ Avoided setting the `llms-tracking` cookie when there are no events to track. -+ Updated styles across the entire plugin. -+ Updated Add-ons & more list to hide old (uncategorized) products. - -##### Deprecations - -+ Deprecated methods `LLMS_Admin_Notices_Core::sidebar_support()` and `LLMS_Admin_Notices_Core::clear_sidebar_notice()`. -+ Removed notice for theme sidebar support. - -##### Developer Notes - -+ The function `llms_is_user_enrolled()` will always return `false` for non existing users. While, before, it could return `true` if a now removed user was enrolled into a the given course or membership. -+ Added new `LLMS_Course::get_lessons_count()` method. It can be used in place of `count( LLMS_Course::get_lessons() )` to improve performance. -+ Fixed compatibility with PHP 8.1 by using an empty string as menu parent page for the course builder submenu page in place of NULL. -+ Avoid passing null values to `urlencode()` and `urldecode()` that would produce PHP warnings on PHP 8.1+. -+ Added `$autoload` parameter to the function `llms_get_student`. - -##### Performance Improvements - -+ Improve performance when querying notifications via the LLMS_Notifications_Query and there's no need to count the total notifications found, or for pagination information. -+ Immediately return false when running `llms_is_user_enrolled()` on logged out or no longer existing users, avoiding running additional DB queries e.g. when displaying course or membership catalogs for visitors. -+ Skip counting the total transactions found when retrieving the last or the first transaction for an order. - -##### Updated Templates - -+ templates/admin/reporting/nav-filters.php -+ templates/admin/reporting/reporting.php -+ templates/admin/reporting/tabs/courses/course.php -+ templates/admin/reporting/tabs/memberships/membership.php -+ templates/admin/reporting/tabs/quizzes/quiz.php -+ templates/admin/reporting/tabs/students/student.php -+ templates/admin/reporting/tabs/widgets.php -+ templates/checkout/form-confirm-payment.php - - -v7.0.1 - 2022-11-14 -------------------- - -##### Bug Fixes - -+ Fixed a fatal error encountered on the payment confirmation screen when attempting to confirm a non-existent order. [#2093](https://github.com/gocodebox/lifterlms/issues/2093) -+ Use `sanitize_file_name()` in favor of `sanitize_title()` for generating the file name of reporting table export files. [#1540](https://github.com/gocodebox/lifterlms/issues/1540) -+ Resolved conflict encountered on post edit screens when using LifterLMS, Yoast SEO, and the Classic Editor plugin. [#2298](https://github.com/gocodebox/lifterlms/issues/2298) - -##### Developer Notes - -+ A stub method, `get_title()` has been added to the `LLMS_Abstract_Exportable_Admin_Table` abstract class. This method should be defined by any extending classes and will throw a `_doing_it_wrong()` error when undefined. -+ Added new filter to allow customizing which user roles are affected by the `LLMS_Admin_Menus::instructor_menu_hack` function. - - -v7.0.0 - 2022-10-04 -------------------- - -##### New Features - -+ Added handling for admin settings options that store their option values in a nested array. -+ Added new AJAX checkout and payment source switching endpoints for payment gateways to utilize instead of the preexisting synchronous form submission methods. -+ On purchase completed retrieve the redirection URL from the INPUT_POST 'redirect' variable, if no 'redirect' variable is passed via INPUT_GET. The INPUT_POST 'redirect' variable comes from the new checkout form's hidden field 'redirect' populated with LLMS_Access_Plan::get_redirection_url(). [#2229](https://github.com/gocodebox/lifterlms/issues/2229) - -##### Updates and Enhancements - -+ Full Site Editing: **[BREAKING]** The wrappers in the custom header and footer templates have been changed to the semantic HTML tags `
` and `