7d85ec18 by Jeff Balicki

learndash update

Signed-off-by: Jeff <jeff@gotenzing.com>
1 parent 16e31a9e
Showing 632 changed files with 1141 additions and 530 deletions
......@@ -554,6 +554,10 @@
.learndash-hub .col-span-2 {
grid-column: span 2/span 2;
}
.learndash-hub .mx-auto {
margin-left: auto;
margin-right: auto;
}
.learndash-hub .mt-8 {
margin-top: 2rem;
}
......@@ -647,6 +651,9 @@
.learndash-hub .h-2 {
height: 0.5rem;
}
.learndash-hub .h-auto {
height: auto;
}
.learndash-hub .h-8 {
height: 2rem;
}
......@@ -680,6 +687,9 @@
.learndash-hub .w-450 {
width: 450px;
}
.learndash-hub .w-5\/12 {
width: 41.666667%;
}
.learndash-hub .w-8 {
width: 2rem;
}
......@@ -807,6 +817,9 @@
.learndash-hub .rounded {
border-radius: 0.25rem;
}
.learndash-hub .rounded-3xl {
border-radius: 1.5rem;
}
.learndash-hub .rounded-full {
border-radius: 9999px;
}
......@@ -857,6 +870,10 @@
--tw-border-opacity: 1;
border-color: rgb(161 98 7/var(--tw-border-opacity));
}
.learndash-hub .border-white {
--tw-border-opacity: 1;
border-color: rgb(255 255 255/var(--tw-border-opacity));
}
.learndash-hub .bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255/var(--tw-bg-opacity));
......@@ -877,6 +894,10 @@
--tw-bg-opacity: 1;
background-color: rgb(240 249 255/var(--tw-bg-opacity));
}
.learndash-hub .bg-royal-blue {
--tw-bg-opacity: 1;
background-color: rgb(35 90 243/var(--tw-bg-opacity));
}
.learndash-hub .bg-gray-300 {
--tw-bg-opacity: 1;
background-color: rgb(209 213 219/var(--tw-bg-opacity));
......@@ -919,6 +940,10 @@
padding-top: 1.25rem;
padding-bottom: 1.25rem;
}
.learndash-hub .px-8 {
padding-left: 2rem;
padding-right: 2rem;
}
.learndash-hub .pt-0\.5 {
padding-top: 0.125rem;
}
......@@ -940,8 +965,14 @@
.learndash-hub .pl-4 {
padding-left: 1rem;
}
.learndash-hub .pr-4 {
padding-right: 1rem;
.learndash-hub .pt-6 {
padding-top: 1.5rem;
}
.learndash-hub .pb-6 {
padding-bottom: 1.5rem;
}
.learndash-hub .pt-10 {
padding-top: 2.5rem;
}
.learndash-hub .pb-1 {
padding-bottom: 0.25rem;
......@@ -1038,6 +1069,10 @@
--tw-text-opacity: 1;
color: rgb(255 255 255/var(--tw-text-opacity));
}
.learndash-hub .text-blue-700 {
--tw-text-opacity: 1;
color: rgb(29 78 216/var(--tw-text-opacity));
}
.learndash-hub .text-gray-700 {
--tw-text-opacity: 1;
color: rgb(55 65 81/var(--tw-text-opacity));
......@@ -1046,6 +1081,13 @@
--tw-text-opacity: 1;
color: rgb(79 70 229/var(--tw-text-opacity));
}
.learndash-hub .underline {
-webkit-text-decoration-line: underline;
text-decoration-line: underline;
}
.learndash-hub .underline-offset-2 {
text-underline-offset: 2px;
}
.learndash-hub .opacity-0 {
opacity: 0;
}
......@@ -1550,12 +1592,21 @@
.learndash-hub .lg\:block {
display: block;
}
.learndash-hub .lg\:grid {
display: grid;
}
.learndash-hub .lg\:w-4\/12 {
width: 33.333333%;
}
.learndash-hub .lg\:w-2\/12 {
width: 16.666667%;
}
.learndash-hub .lg\:grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.learndash-hub .lg\:gap-x-8 {
column-gap: 2rem;
}
}
@media (min-width: 1280px) {
.learndash-hub .xl\:block {
......@@ -1579,6 +1630,13 @@
width: 16.666667%;
}
}
.learndash-hub #upsale-notification {
background-image: url("../img/add-ons-graphic.png");
background-repeat: no-repeat;
background-position-y: bottom;
background-position-x: 99%;
background-size: 62px auto;
}
.learndash-hub .hub-button i.fa-spin {
display: none;
}
......
......@@ -43,6 +43,7 @@ class Base {
'method' => $method,
'headers' => $this->get_auth_headers(),
'body' => $args,
'timeout' => 30
)
);
......
......@@ -5,13 +5,13 @@
* Description: LearnDash Licensing & Management allows you to connect your license and handles all updates related to the LearnDash family of products.
* Author: LearnDash
* Author URI: https://learndash.com
* Version: 1.1.6
* Version: 1.2
* Text Domain: learndash-hub
* Domain Path: includes/languages/
* Network: true
*/
const HUB_VERSION = '1.1.6';
const HUB_VERSION = '1.2';
const HUB_DB_VERSION = '1.0';
const HUB_SLUG = 'learndash-hub/learndash-hub.php';
define( 'HUB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
......
......@@ -25,7 +25,7 @@ class API extends Base {
/**
* Trigger a license verification.
*
* @param string $email The email that registered with LearnDash.
* @param string $email The email that registered with LearnDash.
* @param string $license_key The license key provided when registered.
* @param bool $force_check Force check the license status.
*
......
......@@ -243,6 +243,38 @@ class Projects extends Base {
}
/**
* @param array $api_data The get_projects API data.
*
* @return array
*/
public function get_premium_projects( array $api_data ): array {
$installed_projects = $this->get_installed_projects( $api_data );
foreach ( $api_data as $slug => $item ) {
if ( $item['product_type'] !== 'premium' ) {
unset( $api_data[ $slug ] );
continue;
}
// now check if the plugins is installed.
$api_data[ $slug ]['is_installed'] = isset( $installed_projects[ $slug ] );
}
return $api_data;
}
/**
* @return array
*/
public function get_aff_projects() {
$projects = $this->do_api_request( '/repo/aff_plugins' );
if ( ! is_array( $projects ) ) {
return array();
}
return $projects;
}
/**
* Return the projects that has not installed.
*
* @param array $api_data The get_projects API data.
......@@ -253,6 +285,11 @@ class Projects extends Base {
$installed_projects = $this->get_installed_projects( $api_data );
foreach ( $api_data as $slug => $item ) {
if ( $item['product_type'] !== 'standard' ) {
unset( $api_data[ $slug ] );
continue;
}
if ( isset( $installed_projects[ $slug ] ) ) {
unset( $api_data[ $slug ] );
}
......@@ -264,8 +301,8 @@ class Projects extends Base {
/**
* Look up a project object, this is use when pulling the plugin info.
*
* @param string $slug The project slug, eg: sfwd-lms.
* @param array $api_data The plugins data, pulling from the api.
* @param string $slug The project slug, eg: sfwd-lms.
* @param array $api_data The plugins data, pulling from the api.
*
* @return false|array Return the project data as an array, or false if nothing found.
*/
......@@ -277,14 +314,20 @@ class Projects extends Base {
$projects = $this->get_projects( $api_data );
return $projects[ $slug ] ?? false;
$project = $projects[ $slug ] ?? false;
if ( false === $project ) {
$premiums = $this->get_premium_projects( $api_data );
$project = $premiums[ $slug ] ?? false;
}
return $project;
}
/**
* Install a project
*
* @param string $slug The plugin folder name.
* @param bool $is_update Update instead of install.
* @param string $slug The plugin folder name.
* @param bool $is_update Update instead of install.
*
* @return bool|\WP_Error
*/
......@@ -396,7 +439,7 @@ class Projects extends Base {
/**
* Get the plugin slug from folder name.
*
* @param string $slug The plugin folder.
* @param string $slug The plugin folder.
* @param string $plugin_name The plugin name.
*
* @return string|bool
......
......@@ -16,7 +16,6 @@ class Main_Controller extends Controller {
*/
public function __construct() {
parent::__construct();
$this->register_page(
__( 'Add-ons', 'learndash_hub' ),
'learndash-hub',
......
......@@ -99,8 +99,8 @@ class Projects_Controller extends Controller {
/**
* When we download a project, the auth header should be added.
*
* @param array $parsed_args An array of HTTP request arguments.
* @param string $url The request URL.
* @param array $parsed_args An array of HTTP request arguments.
* @param string $url The request URL.
*
* @return array
*/
......@@ -225,18 +225,18 @@ class Projects_Controller extends Controller {
public function process_plugin_update( $upgrader_object, $options ) {
if (
! isset( $options['action'] ) || 'update' !== $options['action'] ||
! isset( $options['type'] ) || 'plugin' !== $options['type'] ||
! isset( $options['plugins'] ) || ! is_array( $options['plugins'] )
! isset( $options['action'] ) || 'update' !== $options['action'] ||
! isset( $options['type'] ) || 'plugin' !== $options['type'] ||
! isset( $options['plugins'] ) || ! is_array( $options['plugins'] )
) {
return;
return;
}
foreach ( $options['plugins'] as $plugin ) {
if (
strpos( $plugin, 'learndash' ) !== false ||
strpos( $plugin, 'ld' ) !== false ||
strpos( $plugin, 'sfwd-lms' ) !== false
strpos( $plugin, 'learndash' ) !== false ||
strpos( $plugin, 'ld' ) !== false ||
strpos( $plugin, 'sfwd-lms' ) !== false
) {
delete_site_option( 'learndash_hub_fetch_projects' );
delete_site_option( 'learndash_hub_update_plugins_cache' );
......@@ -248,9 +248,9 @@ class Projects_Controller extends Controller {
/**
* Add our plugin information so it can be retrieved via the function plugins_api
*
* @param object $res Default update-info provided by WordPress.
* @param object $res Default update-info provided by WordPress.
* @param string $action What action was requested (theme or plugin?).
* @param object $args Details used to build default update-info.
* @param object $args Details used to build default update-info.
*
* @return object
*/
......@@ -261,9 +261,9 @@ class Projects_Controller extends Controller {
$slug = $args->slug;
if (
stristr( $slug, 'learndash' ) === false &&
stristr( $slug, 'ld' ) === false &&
'sfwd-lms' !== $slug
stristr( $slug, 'learndash' ) === false &&
stristr( $slug, 'ld' ) === false &&
'sfwd-lms' !== $slug
) {
return $res;
}
......@@ -333,12 +333,14 @@ class Projects_Controller extends Controller {
'projects' => $this->get_service()->get_projects( $api_data ),
'installedProjects' => $this->get_service()->get_installed_projects( $api_data ),
'categories' => $this->get_service()->get_projects_category( $api_data ),
'premiumProjects' => $this->get_service()->get_premium_projects( $api_data ),
'affProjects' => $this->get_service()->get_aff_projects(),
'nonces' => array(
'handle_plugin' => wp_create_nonce( 'ld_hub_plugin_handle' ),
'refresh_repo' => wp_create_nonce( 'ld_hub_refresh_repo' ),
'bulk_action' => wp_create_nonce( 'ld_hub_bulk_action' ),
),
'adminUrl' => admin_url( 'admin.php?page=learndash-hub-projects' ),
'adminUrl' => admin_url( 'admin.php?page=learndash-hub' ),
'externalUrl' => admin_url( 'plugin-install.php?s=learndash&tab=search&type=tag' ),
);
}
......
......@@ -13,7 +13,7 @@ use LearnDash\Hub\Traits\Permission;
*/
class Settings_Controller extends Controller {
use Permission;
use License;
use License;
/**
* Constructor.
......
......@@ -11,7 +11,7 @@ use LearnDash\Hub\Traits\Permission;
*/
class Signin_Controller extends Controller {
use Permission;
use License;
use License;
/**
* Constructor.
......
......@@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94::getLoader();
return ComposerAutoloaderInit616ffd2a8b5ef609b9d408d9c3795d9b::getLoader();
......
......@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94
class ComposerAutoloaderInit616ffd2a8b5ef609b9d408d9c3795d9b
{
private static $loader;
......@@ -22,12 +22,12 @@ class ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit616ffd2a8b5ef609b9d408d9c3795d9b', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit616ffd2a8b5ef609b9d408d9c3795d9b', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit616ffd2a8b5ef609b9d408d9c3795d9b::getInitializer($loader));
$loader->register(true);
......
......@@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94
class ComposerStaticInit616ffd2a8b5ef609b9d408d9c3795d9b
{
public static $classMap = array (
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
......@@ -35,7 +35,7 @@ class ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->classMap = ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94::$classMap;
$loader->classMap = ComposerStaticInit616ffd2a8b5ef609b9d408d9c3795d9b::$classMap;
}, null, ClassLoader::class);
}
......
......@@ -3,7 +3,7 @@
'name' => 'learndash/supports',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => 'd977bbbdc8e24c3d6cd1f49a84af90ff8fcc4373',
'reference' => '07b8d1408e2e5fcf09992c148fac5a4950a4769c',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
......@@ -13,7 +13,7 @@
'learndash/supports' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => 'd977bbbdc8e24c3d6cd1f49a84af90ff8fcc4373',
'reference' => '07b8d1408e2e5fcf09992c148fac5a4950a4769c',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
......
.sfwd_module .error{text-align:center}.content_article_style{min-width:600px}.post2pdf_conv_image_align_center{text-align:center}.slickQuizWrapper .button{background-color:#008b8b;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;color:#fff;float:right;padding:5px 15px;text-decoration:none;width:auto}.slickQuizWrapper .button:hover{background-color:#2f4f4f}.startQuiz{margin-top:20px}.quizArea,.quizResults{zoom:1;margin-bottom:40px}.quizArea:after,.quizArea:before,.quizResults:after,.quizResults:before{content:"\0020";display:block;font-size:0;height:0;visibility:hidden}.quizArea:after,.quizResults:after{clear:both}.questionCount{font-size:14px;font-style:italic}.questionCount span{font-weight:700}ol.questions{margin-top:20px}ol.questions,ol.questions li{margin-right:0}ul.answers{margin-bottom:20px;margin-right:20px}ul.responses li{margin:10px 20px 20px}ul.responses li p span{display:block;font-size:18px;font-weight:700}ul.responses li.correct p span{color:#6c9f2e}ul.responses li.incorrect p span{color:#b5121b}.quizResults h3{margin:0}.quizResults h3 span{font-style:italic;font-weight:400}.quizResultsCopy{margin-top:20px}.ppalholder{display:none}.ppalbtn{border:0!important}.user_has_no_access #learndash_quizzes a,.user_has_no_access .is_not_sample a,.user_has_no_access .is_not_sample a span{color:gray!important;text-decoration:none!important}.widget .list-count{display:none}dd.course_progress{background-color:#fff;border:1px solid #000;display:block;height:16px;margin:0 0 2px;padding:0;position:relative;width:100%}dd.course_progress div.course_progress_blue{background-color:blue;display:block;height:16px;position:relative;text-align:left;width:75%}.wpProQuiz_cloze>input[type=text]{max-width:99%}.checkout-dropdown-button button,.checkout-dropdown-button input[type=submit]{border-radius:0!important;font-size:16px!important;margin:0;text-align:center;width:100%}.checkout-dropdown-button ul{padding:0!important}.checkout-dropdown-button ul,.checkout-dropdown-button ul.jq-dropdown-menu li{line-height:auto!important;list-style:none!important;list-style-type:none!important}.checkout-dropdown-button ul.jq-dropdown-menu li{margin:none!important;padding:none!important}.jq-dropdown .jq-dropdown-menu li{list-style:none!important;list-style-type:none!important;margin:0!important;padding:0!important}.checkout-dropdown-button #btn-join,.checkout-dropdown-button .btn-join,.checkout-dropdown-button form input[type=submit]{background-color:#fff!important;color:#333!important}.checkout-dropdown-button #btn-join:hover,.checkout-dropdown-button .btn-join:hover,.checkout-dropdown-button form input[type=submit]:hover{background-color:#f5f5f5!important;color:#000!important}body .jq-dropdown.jq-dropdown-tip:before{border-bottom:7px solid #ddd;border-top-color:transparent;top:-7px}body .jq-dropdown.jq-dropdown-tip:after,body .jq-dropdown.jq-dropdown-tip:before{border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;position:absolute;right:9px;z-index:99}body .jq-dropdown.jq-dropdown-tip:after{border-bottom:7px solid #fff;border-top-color:transparent;top:-5px}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{border-radius:0}.jq-dropdown .jq-dropdown-menu form{margin:0}
\ No newline at end of file
.sfwd_module .error{text-align:center}.content_article_style{min-width:600px}.post2pdf_conv_image_align_center{text-align:center}.slickQuizWrapper .button{background-color:#008b8b;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;color:#fff;float:right;padding:5px 15px;text-decoration:none;width:auto}.slickQuizWrapper .button:hover{background-color:#2f4f4f}.startQuiz{margin-top:20px}.quizArea,.quizResults{zoom:1;margin-bottom:40px}.quizArea:after,.quizArea:before,.quizResults:after,.quizResults:before{content:"\0020";display:block;font-size:0;height:0;visibility:hidden}.quizArea:after,.quizResults:after{clear:both}.questionCount{font-size:14px;font-style:italic}.questionCount span{font-weight:700}ol.questions{margin-top:20px}ol.questions,ol.questions li{margin-right:0}ul.answers{margin-bottom:20px;margin-right:20px}ul.responses li{margin:10px 20px 20px}ul.responses li p span{display:block;font-size:18px;font-weight:700}ul.responses li.correct p span{color:#6c9f2e}ul.responses li.incorrect p span{color:#b5121b}.quizResults h3{margin:0}.quizResults h3 span{font-style:italic;font-weight:400}.quizResultsCopy{margin-top:20px}.ppalholder{display:none}.ppalbtn{border:0!important}.user_has_no_access #learndash_quizzes a,.user_has_no_access .is_not_sample a,.user_has_no_access .is_not_sample a span{color:gray!important;text-decoration:none!important}.widget .list-count{display:none}dd.course_progress{background-color:#fff;border:1px solid #000;display:block;height:16px;margin:0 0 2px;padding:0;position:relative;width:100%}dd.course_progress div.course_progress_blue{background-color:blue;display:block;height:16px;position:relative;text-align:left;width:75%}.wpProQuiz_cloze>input[type=text]{max-width:99%}.checkout-dropdown-button button,.checkout-dropdown-button input[type=submit]{border-radius:0!important;font-size:16px!important;margin:0;text-align:center;width:100%}.checkout-dropdown-button ul{padding:0!important}.checkout-dropdown-button ul,.checkout-dropdown-button ul.jq-dropdown-menu li{line-height:auto!important;list-style:none!important;list-style-type:none!important}.checkout-dropdown-button ul.jq-dropdown-menu li{margin:none!important;padding:none!important}.jq-dropdown .jq-dropdown-menu li{list-style:none!important;list-style-type:none!important;margin:0!important;padding:0!important}.checkout-dropdown-button #btn-join,.checkout-dropdown-button .btn-join,.checkout-dropdown-button form input[type=submit]{background-color:#fff!important;color:#333!important}.checkout-dropdown-button #btn-join:hover,.checkout-dropdown-button .btn-join:hover,.checkout-dropdown-button form input[type=submit]:hover{background-color:#f5f5f5!important;color:#000!important}body .jq-dropdown.jq-dropdown-tip:before{border-bottom:7px solid #ddd;border-top-color:#0000;top:-7px}body .jq-dropdown.jq-dropdown-tip:after,body .jq-dropdown.jq-dropdown-tip:before{border-left:7px solid #0000;border-right:7px solid #0000;content:"";display:inline-block;position:absolute;right:9px;z-index:99}body .jq-dropdown.jq-dropdown-tip:after{border-bottom:7px solid #fff;border-top-color:#0000;top:-5px}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{border-radius:0}.jq-dropdown .jq-dropdown-menu form{margin:0}
\ No newline at end of file
......
.sfwd_module .error{text-align:center}.content_article_style{min-width:600px}.post2pdf_conv_image_align_center{text-align:center}.slickQuizWrapper .button{background-color:#008b8b;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;color:#fff;float:left;padding:5px 15px;text-decoration:none;width:auto}.slickQuizWrapper .button:hover{background-color:#2f4f4f}.startQuiz{margin-top:20px}.quizArea,.quizResults{zoom:1;margin-bottom:40px}.quizArea:after,.quizArea:before,.quizResults:after,.quizResults:before{content:"\0020";display:block;font-size:0;height:0;visibility:hidden}.quizArea:after,.quizResults:after{clear:both}.questionCount{font-size:14px;font-style:italic}.questionCount span{font-weight:700}ol.questions{margin-top:20px}ol.questions,ol.questions li{margin-left:0}ul.answers{margin-bottom:20px;margin-left:20px}ul.responses li{margin:10px 20px 20px}ul.responses li p span{display:block;font-size:18px;font-weight:700}ul.responses li.correct p span{color:#6c9f2e}ul.responses li.incorrect p span{color:#b5121b}.quizResults h3{margin:0}.quizResults h3 span{font-style:italic;font-weight:400}.quizResultsCopy{margin-top:20px}.ppalholder{display:none}.ppalbtn{border:0!important}.user_has_no_access #learndash_quizzes a,.user_has_no_access .is_not_sample a,.user_has_no_access .is_not_sample a span{color:gray!important;text-decoration:none!important}.widget .list-count{display:none}dd.course_progress{background-color:#fff;border:1px solid #000;display:block;height:16px;margin:0 0 2px;padding:0;position:relative;width:100%}dd.course_progress div.course_progress_blue{background-color:blue;display:block;height:16px;position:relative;text-align:right;width:75%}.wpProQuiz_cloze>input[type=text]{max-width:99%}.checkout-dropdown-button button,.checkout-dropdown-button input[type=submit]{border-radius:0!important;font-size:16px!important;margin:0;text-align:center;width:100%}.checkout-dropdown-button ul{padding:0!important}.checkout-dropdown-button ul,.checkout-dropdown-button ul.jq-dropdown-menu li{line-height:auto!important;list-style:none!important;list-style-type:none!important}.checkout-dropdown-button ul.jq-dropdown-menu li{margin:none!important;padding:none!important}.jq-dropdown .jq-dropdown-menu li{list-style:none!important;list-style-type:none!important;margin:0!important;padding:0!important}.checkout-dropdown-button #btn-join,.checkout-dropdown-button .btn-join,.checkout-dropdown-button form input[type=submit]{background-color:#fff!important;color:#333!important}.checkout-dropdown-button #btn-join:hover,.checkout-dropdown-button .btn-join:hover,.checkout-dropdown-button form input[type=submit]:hover{background-color:#f5f5f5!important;color:#000!important}body .jq-dropdown.jq-dropdown-tip:before{border-bottom:7px solid #ddd;border-top-color:transparent;top:-7px}body .jq-dropdown.jq-dropdown-tip:after,body .jq-dropdown.jq-dropdown-tip:before{border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;left:9px;position:absolute;z-index:99}body .jq-dropdown.jq-dropdown-tip:after{border-bottom:7px solid #fff;border-top-color:transparent;top:-5px}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{border-radius:0}.jq-dropdown .jq-dropdown-menu form{margin:0}
\ No newline at end of file
.sfwd_module .error{text-align:center}.content_article_style{min-width:600px}.post2pdf_conv_image_align_center{text-align:center}.slickQuizWrapper .button{background-color:#008b8b;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;color:#fff;float:left;padding:5px 15px;text-decoration:none;width:auto}.slickQuizWrapper .button:hover{background-color:#2f4f4f}.startQuiz{margin-top:20px}.quizArea,.quizResults{zoom:1;margin-bottom:40px}.quizArea:after,.quizArea:before,.quizResults:after,.quizResults:before{content:"\0020";display:block;font-size:0;height:0;visibility:hidden}.quizArea:after,.quizResults:after{clear:both}.questionCount{font-size:14px;font-style:italic}.questionCount span{font-weight:700}ol.questions{margin-top:20px}ol.questions,ol.questions li{margin-left:0}ul.answers{margin-bottom:20px;margin-left:20px}ul.responses li{margin:10px 20px 20px}ul.responses li p span{display:block;font-size:18px;font-weight:700}ul.responses li.correct p span{color:#6c9f2e}ul.responses li.incorrect p span{color:#b5121b}.quizResults h3{margin:0}.quizResults h3 span{font-style:italic;font-weight:400}.quizResultsCopy{margin-top:20px}.ppalholder{display:none}.ppalbtn{border:0!important}.user_has_no_access #learndash_quizzes a,.user_has_no_access .is_not_sample a,.user_has_no_access .is_not_sample a span{color:gray!important;text-decoration:none!important}.widget .list-count{display:none}dd.course_progress{background-color:#fff;border:1px solid #000;display:block;height:16px;margin:0 0 2px;padding:0;position:relative;width:100%}dd.course_progress div.course_progress_blue{background-color:blue;display:block;height:16px;position:relative;text-align:right;width:75%}.wpProQuiz_cloze>input[type=text]{max-width:99%}.checkout-dropdown-button button,.checkout-dropdown-button input[type=submit]{border-radius:0!important;font-size:16px!important;margin:0;text-align:center;width:100%}.checkout-dropdown-button ul{padding:0!important}.checkout-dropdown-button ul,.checkout-dropdown-button ul.jq-dropdown-menu li{line-height:auto!important;list-style:none!important;list-style-type:none!important}.checkout-dropdown-button ul.jq-dropdown-menu li{margin:none!important;padding:none!important}.jq-dropdown .jq-dropdown-menu li{list-style:none!important;list-style-type:none!important;margin:0!important;padding:0!important}.checkout-dropdown-button #btn-join,.checkout-dropdown-button .btn-join,.checkout-dropdown-button form input[type=submit]{background-color:#fff!important;color:#333!important}.checkout-dropdown-button #btn-join:hover,.checkout-dropdown-button .btn-join:hover,.checkout-dropdown-button form input[type=submit]:hover{background-color:#f5f5f5!important;color:#000!important}body .jq-dropdown.jq-dropdown-tip:before{border-bottom:7px solid #ddd;border-top-color:#0000;top:-7px}body .jq-dropdown.jq-dropdown-tip:after,body .jq-dropdown.jq-dropdown-tip:before{border-left:7px solid #0000;border-right:7px solid #0000;content:"";display:inline-block;left:9px;position:absolute;z-index:99}body .jq-dropdown.jq-dropdown-tip:after{border-bottom:7px solid #fff;border-top-color:#0000;top:-5px}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{border-radius:0}.jq-dropdown .jq-dropdown-menu form{margin:0}
\ No newline at end of file
......
/*! This file is part of the LearnDash plugin and was generated automatically */
#wpcontent{background:#fff;padding-right:0}.wrap.learndash-support{background-image:url(../../assets/images/background.svg);background-position:0% 0;background-repeat:no-repeat;margin:0;min-height:100vh}.wrap.learndash-support *{margin:0;padding:0}.wrap.learndash-support .logo{height:auto;padding:33px 53px;width:145px}.wrap.learndash-support .box,.wrap.learndash-support .hero{margin:0 auto;max-width:870px}.wrap.learndash-support .button{background-color:#235af3;color:#fff;padding:8px 22px}.wrap.learndash-support .grid{display:flex;flex-direction:row;flex-wrap:wrap;gap:20px}.wrap.learndash-support .grid .item{background:rgba(0,0,0,.04);border-radius:4px;cursor:pointer;flex:1 0 calc(31% - 50px);padding:27px 23px}.wrap.learndash-support .grid .item:hover{background-color:#235af3;color:#fff}.wrap.learndash-support .grid .item:hover *{color:#fff}.wrap.learndash-support .grid .item:hover .label-wrapper .icon-external{visibility:visible}.wrap.learndash-support .grid .item>:nth-child(2){margin-top:16px}.wrap.learndash-support .grid .item .label-wrapper{align-items:center;display:flex;gap:8px}.wrap.learndash-support .grid .item .label-wrapper .icon{align-items:center;display:flex}.wrap.learndash-support .grid .item .label-wrapper .icon-external{margin-right:auto;visibility:hidden}.wrap.learndash-support .grid .item p.description{font-size:12px}.wrap.learndash-support .hero{margin-bottom:40px;padding:22px;text-align:center}.wrap.learndash-support .hero h1{font-size:32px;margin-bottom:20px}.wrap.learndash-support .hero .tagline{font-size:18px}.wrap.learndash-support .box{background-color:#fff;margin-bottom:58px}.wrap.learndash-support .box h2{font-size:24px;line-height:29px;margin-bottom:16px}.wrap.learndash-support .box .description,.wrap.learndash-support .box input{font-size:16px}.wrap.learndash-support .box .button{font-size:15px}.wrap.learndash-support .box.search .fields .form-wrapper{position:relative;width:100%}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button{background:none;border:none;cursor:pointer;margin:0;padding:0;position:absolute;left:15px;top:45%;transform:translate(50%,-50%)}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button .submit{color:#235af3;font-size:30px}.wrap.learndash-support .box.search .fields input[type=text]{padding:16px 16px 16px 50px;width:100%}.wrap.learndash-support .box .headline-wrapper{display:flex;margin-bottom:40px}.wrap.learndash-support .box .headline-wrapper .headline{width:60%}.wrap.learndash-support .box .headline-wrapper .buttons{margin-right:58px}.wrap.learndash-support .box .headline-wrapper .buttons p{font-size:14px;margin-bottom:9px;margin-top:12px}.Beacon .BeaconContainer{height:calc(100% - 170px)!important;right:50%!important;left:50%!important;top:47px!important;transform:translateX(50%)!important;width:95%!important}.beacon-open .beacon-background{background:#000;height:100%;right:0;opacity:.8;position:fixed;top:0;width:100%;z-index:999990}.beacon-open #beacon-container{z-index:999991!important}.beacon-open .Beacon,.beacon-open .Beacon #BeaconInlineArticlesFrame,.beacon-open .Beacon .BeaconContainer,.beacon-open .Beacon .BeaconFabButtonFrame{z-index:999995!important}
#wpcontent{background:#fff;padding-right:0}.wrap.learndash-support{background-image:url(../../assets/images/background.svg);background-position:0% 0;background-repeat:no-repeat;margin:0;min-height:100vh}.wrap.learndash-support *{margin:0;padding:0}.wrap.learndash-support .logo{height:auto;padding:33px 53px;width:145px}.wrap.learndash-support .box,.wrap.learndash-support .hero{margin:0 auto;max-width:870px}.wrap.learndash-support .button{background-color:#235af3;color:#fff;padding:8px 22px}.wrap.learndash-support .grid{display:flex;flex-direction:row;flex-wrap:wrap;gap:20px}.wrap.learndash-support .grid .item{background:#000000100%a;border-radius:4px;cursor:pointer;flex:1 0 calc(31% - 50px);padding:27px 23px}.wrap.learndash-support .grid .item:hover{background-color:#235af3;color:#fff}.wrap.learndash-support .grid .item:hover *{color:#fff}.wrap.learndash-support .grid .item:hover .label-wrapper .icon-external{visibility:visible}.wrap.learndash-support .grid .item>:nth-child(2){margin-top:16px}.wrap.learndash-support .grid .item .label-wrapper{align-items:center;display:flex;gap:8px}.wrap.learndash-support .grid .item .label-wrapper .icon{align-items:center;display:flex}.wrap.learndash-support .grid .item .label-wrapper .icon-external{margin-right:auto;visibility:hidden}.wrap.learndash-support .grid .item p.description{font-size:12px}.wrap.learndash-support .hero{margin-bottom:40px;padding:22px;text-align:center}.wrap.learndash-support .hero h1{font-size:32px;margin-bottom:20px}.wrap.learndash-support .hero .tagline{font-size:18px}.wrap.learndash-support .box{background-color:#fff;margin-bottom:58px}.wrap.learndash-support .box h2{font-size:24px;line-height:29px;margin-bottom:16px}.wrap.learndash-support .box .description,.wrap.learndash-support .box input{font-size:16px}.wrap.learndash-support .box .button{font-size:15px}.wrap.learndash-support .box.search .fields .form-wrapper{position:relative;width:100%}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button{background:none;border:none;cursor:pointer;margin:0;padding:0;position:absolute;left:15px;top:45%;transform:translate(50%,-50%)}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button .submit{color:#235af3;font-size:30px}.wrap.learndash-support .box.search .fields input[type=text]{padding:16px 16px 16px 50px;width:100%}.wrap.learndash-support .box .headline-wrapper{display:flex;margin-bottom:40px}.wrap.learndash-support .box .headline-wrapper .headline{width:60%}.wrap.learndash-support .box .headline-wrapper .buttons{margin-right:58px}.wrap.learndash-support .box .headline-wrapper .buttons p{font-size:14px;margin-bottom:9px;margin-top:12px}.Beacon .BeaconContainer{height:calc(100% - 170px)!important;right:50%!important;left:50%!important;top:47px!important;transform:translateX(50%)!important;width:95%!important}.beacon-open .beacon-background{background:#000;height:100%;right:0;opacity:.8;position:fixed;top:0;width:100%;z-index:999990}.beacon-open #beacon-container{z-index:999991!important}.beacon-open .Beacon,.beacon-open .Beacon #BeaconInlineArticlesFrame,.beacon-open .Beacon .BeaconContainer,.beacon-open .Beacon .BeaconFabButtonFrame{z-index:999995!important}
......
/*! This file is part of the LearnDash plugin and was generated automatically */
#wpcontent{background:#fff;padding-left:0}.wrap.learndash-support{background-image:url(../../assets/images/background.svg);background-position:100% 0;background-repeat:no-repeat;margin:0;min-height:100vh}.wrap.learndash-support *{margin:0;padding:0}.wrap.learndash-support .logo{height:auto;padding:33px 53px;width:145px}.wrap.learndash-support .box,.wrap.learndash-support .hero{margin:0 auto;max-width:870px}.wrap.learndash-support .button{background-color:#235af3;color:#fff;padding:8px 22px}.wrap.learndash-support .grid{display:flex;flex-direction:row;flex-wrap:wrap;gap:20px}.wrap.learndash-support .grid .item{background:rgba(0,0,0,.04);border-radius:4px;cursor:pointer;flex:1 0 calc(31% - 50px);padding:27px 23px}.wrap.learndash-support .grid .item:hover{background-color:#235af3;color:#fff}.wrap.learndash-support .grid .item:hover *{color:#fff}.wrap.learndash-support .grid .item:hover .label-wrapper .icon-external{visibility:visible}.wrap.learndash-support .grid .item>:nth-child(2){margin-top:16px}.wrap.learndash-support .grid .item .label-wrapper{align-items:center;display:flex;gap:8px}.wrap.learndash-support .grid .item .label-wrapper .icon{align-items:center;display:flex}.wrap.learndash-support .grid .item .label-wrapper .icon-external{margin-left:auto;visibility:hidden}.wrap.learndash-support .grid .item p.description{font-size:12px}.wrap.learndash-support .hero{margin-bottom:40px;padding:22px;text-align:center}.wrap.learndash-support .hero h1{font-size:32px;margin-bottom:20px}.wrap.learndash-support .hero .tagline{font-size:18px}.wrap.learndash-support .box{background-color:#fff;margin-bottom:58px}.wrap.learndash-support .box h2{font-size:24px;line-height:29px;margin-bottom:16px}.wrap.learndash-support .box .description,.wrap.learndash-support .box input{font-size:16px}.wrap.learndash-support .box .button{font-size:15px}.wrap.learndash-support .box.search .fields .form-wrapper{position:relative;width:100%}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button{background:none;border:none;cursor:pointer;margin:0;padding:0;position:absolute;right:15px;top:45%;transform:translate(-50%,-50%)}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button .submit{color:#235af3;font-size:30px}.wrap.learndash-support .box.search .fields input[type=text]{padding:16px 50px 16px 16px;width:100%}.wrap.learndash-support .box .headline-wrapper{display:flex;margin-bottom:40px}.wrap.learndash-support .box .headline-wrapper .headline{width:60%}.wrap.learndash-support .box .headline-wrapper .buttons{margin-left:58px}.wrap.learndash-support .box .headline-wrapper .buttons p{font-size:14px;margin-bottom:9px;margin-top:12px}.Beacon .BeaconContainer{height:calc(100% - 170px)!important;left:50%!important;right:50%!important;top:47px!important;transform:translateX(-50%)!important;width:95%!important}.beacon-open .beacon-background{background:#000;height:100%;left:0;opacity:.8;position:fixed;top:0;width:100%;z-index:999990}.beacon-open #beacon-container{z-index:999991!important}.beacon-open .Beacon,.beacon-open .Beacon #BeaconInlineArticlesFrame,.beacon-open .Beacon .BeaconContainer,.beacon-open .Beacon .BeaconFabButtonFrame{z-index:999995!important}
#wpcontent{background:#fff;padding-left:0}.wrap.learndash-support{background-image:url(../../assets/images/background.svg);background-position:100% 0;background-repeat:no-repeat;margin:0;min-height:100vh}.wrap.learndash-support *{margin:0;padding:0}.wrap.learndash-support .logo{height:auto;padding:33px 53px;width:145px}.wrap.learndash-support .box,.wrap.learndash-support .hero{margin:0 auto;max-width:870px}.wrap.learndash-support .button{background-color:#235af3;color:#fff;padding:8px 22px}.wrap.learndash-support .grid{display:flex;flex-direction:row;flex-wrap:wrap;gap:20px}.wrap.learndash-support .grid .item{background:#0000000a;border-radius:4px;cursor:pointer;flex:1 0 calc(31% - 50px);padding:27px 23px}.wrap.learndash-support .grid .item:hover{background-color:#235af3;color:#fff}.wrap.learndash-support .grid .item:hover *{color:#fff}.wrap.learndash-support .grid .item:hover .label-wrapper .icon-external{visibility:visible}.wrap.learndash-support .grid .item>:nth-child(2){margin-top:16px}.wrap.learndash-support .grid .item .label-wrapper{align-items:center;display:flex;gap:8px}.wrap.learndash-support .grid .item .label-wrapper .icon{align-items:center;display:flex}.wrap.learndash-support .grid .item .label-wrapper .icon-external{margin-left:auto;visibility:hidden}.wrap.learndash-support .grid .item p.description{font-size:12px}.wrap.learndash-support .hero{margin-bottom:40px;padding:22px;text-align:center}.wrap.learndash-support .hero h1{font-size:32px;margin-bottom:20px}.wrap.learndash-support .hero .tagline{font-size:18px}.wrap.learndash-support .box{background-color:#fff;margin-bottom:58px}.wrap.learndash-support .box h2{font-size:24px;line-height:29px;margin-bottom:16px}.wrap.learndash-support .box .description,.wrap.learndash-support .box input{font-size:16px}.wrap.learndash-support .box .button{font-size:15px}.wrap.learndash-support .box.search .fields .form-wrapper{position:relative;width:100%}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button{background:none;border:none;cursor:pointer;margin:0;padding:0;position:absolute;right:15px;top:45%;transform:translate(-50%,-50%)}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button .submit{color:#235af3;font-size:30px}.wrap.learndash-support .box.search .fields input[type=text]{padding:16px 50px 16px 16px;width:100%}.wrap.learndash-support .box .headline-wrapper{display:flex;margin-bottom:40px}.wrap.learndash-support .box .headline-wrapper .headline{width:60%}.wrap.learndash-support .box .headline-wrapper .buttons{margin-left:58px}.wrap.learndash-support .box .headline-wrapper .buttons p{font-size:14px;margin-bottom:9px;margin-top:12px}.Beacon .BeaconContainer{height:calc(100% - 170px)!important;left:50%!important;right:50%!important;top:47px!important;transform:translateX(-50%)!important;width:95%!important}.beacon-open .beacon-background{background:#000;height:100%;left:0;opacity:.8;position:fixed;top:0;width:100%;z-index:999990}.beacon-open #beacon-container{z-index:999991!important}.beacon-open .Beacon,.beacon-open .Beacon #BeaconInlineArticlesFrame,.beacon-open .Beacon .BeaconContainer,.beacon-open .Beacon .BeaconFabButtonFrame{z-index:999995!important}
......
/*! This file is part of the LearnDash plugin and was generated automatically */#wpcontent{background:#fff;padding-right:0}.wrap.learndash-support{background-image:url(../../assets/images/background.svg);background-position:0 0;background-repeat:no-repeat;margin:0;min-height:100vh}.wrap.learndash-support *{margin:0;padding:0}.wrap.learndash-support .logo{height:auto;padding:33px 53px;width:145px}.wrap.learndash-support .box,.wrap.learndash-support .hero{margin:0 auto;max-width:870px}.wrap.learndash-support .button{background-color:#235af3;color:#fff;padding:8px 22px}.wrap.learndash-support .grid{display:flex;flex-direction:row;flex-wrap:wrap;gap:20px}.wrap.learndash-support .grid .item{background:rgba(0,0,0,.04);border-radius:4px;cursor:pointer;flex:1 0 calc(31% - 50px);padding:27px 23px}.wrap.learndash-support .grid .item:hover{background-color:#235af3;color:#fff}.wrap.learndash-support .grid .item:hover *{color:#fff}.wrap.learndash-support .grid .item:hover .label-wrapper .icon-external{visibility:visible}.wrap.learndash-support .grid .item>:nth-child(2){margin-top:16px}.wrap.learndash-support .grid .item .label-wrapper{align-items:center;display:flex;gap:8px}.wrap.learndash-support .grid .item .label-wrapper .icon{align-items:center;display:flex}.wrap.learndash-support .grid .item .label-wrapper .icon-external{margin-right:auto;visibility:hidden}.wrap.learndash-support .grid .item p.description{font-size:12px}.wrap.learndash-support .hero{margin-bottom:40px;padding:22px;text-align:center}.wrap.learndash-support .hero h1{font-size:32px;margin-bottom:20px}.wrap.learndash-support .hero .tagline{font-size:18px}.wrap.learndash-support .box{background-color:#fff;margin-bottom:58px}.wrap.learndash-support .box h2{font-size:24px;line-height:29px;margin-bottom:16px}.wrap.learndash-support .box .description,.wrap.learndash-support .box input{font-size:16px}.wrap.learndash-support .box .button{font-size:15px}.wrap.learndash-support .box.search .fields .form-wrapper{position:relative;width:100%}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button{background:none;border:none;cursor:pointer;left:15px;margin:0;padding:0;position:absolute;top:45%;transform:translate(50%,-50%)}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button .submit{color:#235af3;font-size:30px}.wrap.learndash-support .box.search .fields input[type=text]{padding:16px 16px 16px 50px;width:100%}.wrap.learndash-support .box .headline-wrapper{display:flex;margin-bottom:40px}.wrap.learndash-support .box .headline-wrapper .headline{width:60%}.wrap.learndash-support .box .headline-wrapper .buttons{margin-right:58px}.wrap.learndash-support .box .headline-wrapper .buttons p{font-size:14px;margin-bottom:9px;margin-top:12px}.Beacon .BeaconContainer{height:calc(100% - 170px)!important;left:50%!important;right:50%!important;top:47px!important;transform:translateX(50%)!important;width:95%!important}.beacon-open .beacon-background{background:#000;height:100%;opacity:.8;position:fixed;right:0;top:0;width:100%;z-index:999990}.beacon-open #beacon-container{z-index:999991!important}.beacon-open .Beacon,.beacon-open .Beacon #BeaconInlineArticlesFrame,.beacon-open .Beacon .BeaconContainer,.beacon-open .Beacon .BeaconFabButtonFrame{z-index:999995!important}
\ No newline at end of file
/*! This file is part of the LearnDash plugin and was generated automatically */#wpcontent{background:#fff;padding-right:0}.wrap.learndash-support{background-image:url(../../assets/images/background.svg);background-position:0 0;background-repeat:no-repeat;margin:0;min-height:100vh}.wrap.learndash-support *{margin:0;padding:0}.wrap.learndash-support .logo{height:auto;padding:33px 53px;width:145px}.wrap.learndash-support .box,.wrap.learndash-support .hero{margin:0 auto;max-width:870px}.wrap.learndash-support .button{background-color:#235af3;color:#fff;padding:8px 22px}.wrap.learndash-support .grid{display:flex;flex-direction:row;flex-wrap:wrap;gap:20px}.wrap.learndash-support .grid .item{background:#000000100%a;border-radius:4px;cursor:pointer;flex:1 0 calc(31% - 50px);padding:27px 23px}.wrap.learndash-support .grid .item:hover{background-color:#235af3;color:#fff}.wrap.learndash-support .grid .item:hover *{color:#fff}.wrap.learndash-support .grid .item:hover .label-wrapper .icon-external{visibility:visible}.wrap.learndash-support .grid .item>:nth-child(2){margin-top:16px}.wrap.learndash-support .grid .item .label-wrapper{align-items:center;display:flex;gap:8px}.wrap.learndash-support .grid .item .label-wrapper .icon{align-items:center;display:flex}.wrap.learndash-support .grid .item .label-wrapper .icon-external{margin-right:auto;visibility:hidden}.wrap.learndash-support .grid .item p.description{font-size:12px}.wrap.learndash-support .hero{margin-bottom:40px;padding:22px;text-align:center}.wrap.learndash-support .hero h1{font-size:32px;margin-bottom:20px}.wrap.learndash-support .hero .tagline{font-size:18px}.wrap.learndash-support .box{background-color:#fff;margin-bottom:58px}.wrap.learndash-support .box h2{font-size:24px;line-height:29px;margin-bottom:16px}.wrap.learndash-support .box .description,.wrap.learndash-support .box input{font-size:16px}.wrap.learndash-support .box .button{font-size:15px}.wrap.learndash-support .box.search .fields .form-wrapper{position:relative;width:100%}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button{background:none;border:none;cursor:pointer;left:15px;margin:0;padding:0;position:absolute;top:45%;transform:translate(50%,-50%)}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button .submit{color:#235af3;font-size:30px}.wrap.learndash-support .box.search .fields input[type=text]{padding:16px 16px 16px 50px;width:100%}.wrap.learndash-support .box .headline-wrapper{display:flex;margin-bottom:40px}.wrap.learndash-support .box .headline-wrapper .headline{width:60%}.wrap.learndash-support .box .headline-wrapper .buttons{margin-right:58px}.wrap.learndash-support .box .headline-wrapper .buttons p{font-size:14px;margin-bottom:9px;margin-top:12px}.Beacon .BeaconContainer{height:calc(100% - 170px)!important;left:50%!important;right:50%!important;top:47px!important;transform:translateX(50%)!important;width:95%!important}.beacon-open .beacon-background{background:#000;height:100%;opacity:.8;position:fixed;right:0;top:0;width:100%;z-index:999990}.beacon-open #beacon-container{z-index:999991!important}.beacon-open .Beacon,.beacon-open .Beacon #BeaconInlineArticlesFrame,.beacon-open .Beacon .BeaconContainer,.beacon-open .Beacon .BeaconFabButtonFrame{z-index:999995!important}
\ No newline at end of file
......
/*! This file is part of the LearnDash plugin and was generated automatically */#wpcontent{background:#fff;padding-left:0}.wrap.learndash-support{background-image:url(../../assets/images/background.svg);background-position:100% 0;background-repeat:no-repeat;margin:0;min-height:100vh}.wrap.learndash-support *{margin:0;padding:0}.wrap.learndash-support .logo{height:auto;padding:33px 53px;width:145px}.wrap.learndash-support .box,.wrap.learndash-support .hero{margin:0 auto;max-width:870px}.wrap.learndash-support .button{background-color:#235af3;color:#fff;padding:8px 22px}.wrap.learndash-support .grid{display:flex;flex-direction:row;flex-wrap:wrap;gap:20px}.wrap.learndash-support .grid .item{background:rgba(0,0,0,.04);border-radius:4px;cursor:pointer;flex:1 0 calc(31% - 50px);padding:27px 23px}.wrap.learndash-support .grid .item:hover{background-color:#235af3;color:#fff}.wrap.learndash-support .grid .item:hover *{color:#fff}.wrap.learndash-support .grid .item:hover .label-wrapper .icon-external{visibility:visible}.wrap.learndash-support .grid .item>:nth-child(2){margin-top:16px}.wrap.learndash-support .grid .item .label-wrapper{align-items:center;display:flex;gap:8px}.wrap.learndash-support .grid .item .label-wrapper .icon{align-items:center;display:flex}.wrap.learndash-support .grid .item .label-wrapper .icon-external{margin-left:auto;visibility:hidden}.wrap.learndash-support .grid .item p.description{font-size:12px}.wrap.learndash-support .hero{margin-bottom:40px;padding:22px;text-align:center}.wrap.learndash-support .hero h1{font-size:32px;margin-bottom:20px}.wrap.learndash-support .hero .tagline{font-size:18px}.wrap.learndash-support .box{background-color:#fff;margin-bottom:58px}.wrap.learndash-support .box h2{font-size:24px;line-height:29px;margin-bottom:16px}.wrap.learndash-support .box .description,.wrap.learndash-support .box input{font-size:16px}.wrap.learndash-support .box .button{font-size:15px}.wrap.learndash-support .box.search .fields .form-wrapper{position:relative;width:100%}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button{background:none;border:none;cursor:pointer;margin:0;padding:0;position:absolute;right:15px;top:45%;transform:translate(-50%,-50%)}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button .submit{color:#235af3;font-size:30px}.wrap.learndash-support .box.search .fields input[type=text]{padding:16px 50px 16px 16px;width:100%}.wrap.learndash-support .box .headline-wrapper{display:flex;margin-bottom:40px}.wrap.learndash-support .box .headline-wrapper .headline{width:60%}.wrap.learndash-support .box .headline-wrapper .buttons{margin-left:58px}.wrap.learndash-support .box .headline-wrapper .buttons p{font-size:14px;margin-bottom:9px;margin-top:12px}.Beacon .BeaconContainer{height:calc(100% - 170px)!important;left:50%!important;right:50%!important;top:47px!important;transform:translateX(-50%)!important;width:95%!important}.beacon-open .beacon-background{background:#000;height:100%;left:0;opacity:.8;position:fixed;top:0;width:100%;z-index:999990}.beacon-open #beacon-container{z-index:999991!important}.beacon-open .Beacon,.beacon-open .Beacon #BeaconInlineArticlesFrame,.beacon-open .Beacon .BeaconContainer,.beacon-open .Beacon .BeaconFabButtonFrame{z-index:999995!important}
\ No newline at end of file
/*! This file is part of the LearnDash plugin and was generated automatically */#wpcontent{background:#fff;padding-left:0}.wrap.learndash-support{background-image:url(../../assets/images/background.svg);background-position:100% 0;background-repeat:no-repeat;margin:0;min-height:100vh}.wrap.learndash-support *{margin:0;padding:0}.wrap.learndash-support .logo{height:auto;padding:33px 53px;width:145px}.wrap.learndash-support .box,.wrap.learndash-support .hero{margin:0 auto;max-width:870px}.wrap.learndash-support .button{background-color:#235af3;color:#fff;padding:8px 22px}.wrap.learndash-support .grid{display:flex;flex-direction:row;flex-wrap:wrap;gap:20px}.wrap.learndash-support .grid .item{background:#0000000a;border-radius:4px;cursor:pointer;flex:1 0 calc(31% - 50px);padding:27px 23px}.wrap.learndash-support .grid .item:hover{background-color:#235af3;color:#fff}.wrap.learndash-support .grid .item:hover *{color:#fff}.wrap.learndash-support .grid .item:hover .label-wrapper .icon-external{visibility:visible}.wrap.learndash-support .grid .item>:nth-child(2){margin-top:16px}.wrap.learndash-support .grid .item .label-wrapper{align-items:center;display:flex;gap:8px}.wrap.learndash-support .grid .item .label-wrapper .icon{align-items:center;display:flex}.wrap.learndash-support .grid .item .label-wrapper .icon-external{margin-left:auto;visibility:hidden}.wrap.learndash-support .grid .item p.description{font-size:12px}.wrap.learndash-support .hero{margin-bottom:40px;padding:22px;text-align:center}.wrap.learndash-support .hero h1{font-size:32px;margin-bottom:20px}.wrap.learndash-support .hero .tagline{font-size:18px}.wrap.learndash-support .box{background-color:#fff;margin-bottom:58px}.wrap.learndash-support .box h2{font-size:24px;line-height:29px;margin-bottom:16px}.wrap.learndash-support .box .description,.wrap.learndash-support .box input{font-size:16px}.wrap.learndash-support .box .button{font-size:15px}.wrap.learndash-support .box.search .fields .form-wrapper{position:relative;width:100%}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button{background:none;border:none;cursor:pointer;margin:0;padding:0;position:absolute;right:15px;top:45%;transform:translate(-50%,-50%)}.wrap.learndash-support .box.search .fields .form-wrapper .submit-button .submit{color:#235af3;font-size:30px}.wrap.learndash-support .box.search .fields input[type=text]{padding:16px 50px 16px 16px;width:100%}.wrap.learndash-support .box .headline-wrapper{display:flex;margin-bottom:40px}.wrap.learndash-support .box .headline-wrapper .headline{width:60%}.wrap.learndash-support .box .headline-wrapper .buttons{margin-left:58px}.wrap.learndash-support .box .headline-wrapper .buttons p{font-size:14px;margin-bottom:9px;margin-top:12px}.Beacon .BeaconContainer{height:calc(100% - 170px)!important;left:50%!important;right:50%!important;top:47px!important;transform:translateX(-50%)!important;width:95%!important}.beacon-open .beacon-background{background:#000;height:100%;left:0;opacity:.8;position:fixed;top:0;width:100%;z-index:999990}.beacon-open #beacon-container{z-index:999991!important}.beacon-open .Beacon,.beacon-open .Beacon #BeaconInlineArticlesFrame,.beacon-open .Beacon .BeaconContainer,.beacon-open .Beacon .BeaconFabButtonFrame{z-index:999995!important}
\ No newline at end of file
......
.jq-dropdown{display:none;position:absolute;z-index:1039}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 5px 10px rgba(0,0,0,.2);list-style:none;margin:0;max-width:360px;min-width:160px;overflow:visible;padding:4px 0}.jq-dropdown .jq-dropdown-panel{padding:10px}.jq-dropdown.jq-dropdown-tip{margin-top:8px}.jq-dropdown.jq-dropdown-tip:before{border-bottom:7px solid #ddd;border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;position:absolute;right:9px;top:-6px}.jq-dropdown.jq-dropdown-tip:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;position:absolute;right:10px;top:-5px}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:before{left:9px;right:auto}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:after{left:10px;right:auto}.jq-dropdown.jq-dropdown-scroll .jq-dropdown-menu,.jq-dropdown.jq-dropdown-scroll .jq-dropdown-panel{max-height:180px;overflow:auto}.jq-dropdown .jq-dropdown-menu li{line-height:18px;list-style:none;margin:0;padding:0}.jq-dropdown .jq-dropdown-menu label,.jq-dropdown .jq-dropdown-menu li>a{color:inherit;display:block;line-height:18px;margin:0;padding:3px 15px;text-decoration:none;white-space:nowrap}.jq-dropdown .jq-dropdown-menu label:hover,.jq-dropdown .jq-dropdown-menu li>a:hover{background-color:#f2f2f2;color:inherit;cursor:pointer}.jq-dropdown .jq-dropdown-menu .jq-dropdown-divider{border-top:1px solid #e5e5e5;font-size:1px;margin:5px 0;padding:0}
\ No newline at end of file
.jq-dropdown{display:none;position:absolute;z-index:1039}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 5px 10px #0003;list-style:none;margin:0;max-width:360px;min-width:160px;overflow:visible;padding:4px 0}.jq-dropdown .jq-dropdown-panel{padding:10px}.jq-dropdown.jq-dropdown-tip{margin-top:8px}.jq-dropdown.jq-dropdown-tip:before{border-bottom:7px solid #ddd;border-left:7px solid #0000;border-right:7px solid #0000;content:"";display:inline-block;position:absolute;right:9px;top:-6px}.jq-dropdown.jq-dropdown-tip:after{border-bottom:6px solid #fff;border-left:6px solid #0000;border-right:6px solid #0000;content:"";display:inline-block;position:absolute;right:10px;top:-5px}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:before{left:9px;right:auto}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:after{left:10px;right:auto}.jq-dropdown.jq-dropdown-scroll .jq-dropdown-menu,.jq-dropdown.jq-dropdown-scroll .jq-dropdown-panel{max-height:180px;overflow:auto}.jq-dropdown .jq-dropdown-menu li{line-height:18px;list-style:none;margin:0;padding:0}.jq-dropdown .jq-dropdown-menu label,.jq-dropdown .jq-dropdown-menu li>a{color:inherit;display:block;line-height:18px;margin:0;padding:3px 15px;text-decoration:none;white-space:nowrap}.jq-dropdown .jq-dropdown-menu label:hover,.jq-dropdown .jq-dropdown-menu li>a:hover{background-color:#f2f2f2;color:inherit;cursor:pointer}.jq-dropdown .jq-dropdown-menu .jq-dropdown-divider{border-top:1px solid #e5e5e5;font-size:1px;margin:5px 0;padding:0}
\ No newline at end of file
......
.jq-dropdown{display:none;position:absolute;z-index:1039}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 5px 10px rgba(0,0,0,.2);list-style:none;margin:0;max-width:360px;min-width:160px;overflow:visible;padding:4px 0}.jq-dropdown .jq-dropdown-panel{padding:10px}.jq-dropdown.jq-dropdown-tip{margin-top:8px}.jq-dropdown.jq-dropdown-tip:before{border-bottom:7px solid #ddd;border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;left:9px;position:absolute;top:-6px}.jq-dropdown.jq-dropdown-tip:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;left:10px;position:absolute;top:-5px}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:before{left:auto;right:9px}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:after{left:auto;right:10px}.jq-dropdown.jq-dropdown-scroll .jq-dropdown-menu,.jq-dropdown.jq-dropdown-scroll .jq-dropdown-panel{max-height:180px;overflow:auto}.jq-dropdown .jq-dropdown-menu li{line-height:18px;list-style:none;margin:0;padding:0}.jq-dropdown .jq-dropdown-menu label,.jq-dropdown .jq-dropdown-menu li>a{color:inherit;display:block;line-height:18px;margin:0;padding:3px 15px;text-decoration:none;white-space:nowrap}.jq-dropdown .jq-dropdown-menu label:hover,.jq-dropdown .jq-dropdown-menu li>a:hover{background-color:#f2f2f2;color:inherit;cursor:pointer}.jq-dropdown .jq-dropdown-menu .jq-dropdown-divider{border-top:1px solid #e5e5e5;font-size:1px;margin:5px 0;padding:0}
\ No newline at end of file
.jq-dropdown{display:none;position:absolute;z-index:1039}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 5px 10px #0003;list-style:none;margin:0;max-width:360px;min-width:160px;overflow:visible;padding:4px 0}.jq-dropdown .jq-dropdown-panel{padding:10px}.jq-dropdown.jq-dropdown-tip{margin-top:8px}.jq-dropdown.jq-dropdown-tip:before{border-bottom:7px solid #ddd;border-left:7px solid #0000;border-right:7px solid #0000;content:"";display:inline-block;left:9px;position:absolute;top:-6px}.jq-dropdown.jq-dropdown-tip:after{border-bottom:6px solid #fff;border-left:6px solid #0000;border-right:6px solid #0000;content:"";display:inline-block;left:10px;position:absolute;top:-5px}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:before{left:auto;right:9px}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:after{left:auto;right:10px}.jq-dropdown.jq-dropdown-scroll .jq-dropdown-menu,.jq-dropdown.jq-dropdown-scroll .jq-dropdown-panel{max-height:180px;overflow:auto}.jq-dropdown .jq-dropdown-menu li{line-height:18px;list-style:none;margin:0;padding:0}.jq-dropdown .jq-dropdown-menu label,.jq-dropdown .jq-dropdown-menu li>a{color:inherit;display:block;line-height:18px;margin:0;padding:3px 15px;text-decoration:none;white-space:nowrap}.jq-dropdown .jq-dropdown-menu label:hover,.jq-dropdown .jq-dropdown-menu li>a:hover{background-color:#f2f2f2;color:inherit;cursor:pointer}.jq-dropdown .jq-dropdown-menu .jq-dropdown-divider{border-top:1px solid #e5e5e5;font-size:1px;margin:5px 0;padding:0}
\ No newline at end of file
......
/*
! tailwindcss v3.1.5 | MIT License | https://tailwindcss.com
! tailwindcss v3.3.0 | MIT License | https://tailwindcss.com
*/
/*
......@@ -30,6 +30,8 @@
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
*/
html {
......@@ -38,11 +40,14 @@ html {
-webkit-text-size-adjust: 100%;
/* 2 */
/* 3 */
-o-tab-size: 4;
tab-size: 4;
tab-size: 4;
/* 3 */
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
/* 4 */
font-feature-settings: normal;
/* 5 */
font-variation-settings: normal;
/* 6 */
}
/*
......@@ -402,6 +407,12 @@ video {
height: auto;
}
/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden] {
display: none;
}
*, ::before, ::after {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
......@@ -535,68 +546,84 @@ video {
margin-left: auto;
}
.ld-mr-1 {
margin-left: 0.25rem;
}
.ld-mt-6 {
margin-top: 1.5rem;
}
.ld-mt-2 {
margin-top: 0.5rem;
}
.ld-mt-10 {
margin-top: 2.5rem;
.\!ld-ml-auto {
margin-right: auto !important;
}
.ld-mt-8 {
margin-top: 2rem;
.ld-mb-1 {
margin-bottom: 0.25rem;
}
.ld-mr-3 {
margin-left: 0.75rem;
.ld-mb-3 {
margin-bottom: 0.75rem;
}
.ld-mb-4 {
margin-bottom: 1rem;
}
.ld-mb-3 {
margin-bottom: 0.75rem;
.ld-ml-2 {
margin-right: 0.5rem;
}
.ld-ml-6 {
margin-right: 1.5rem;
}
.ld-ml-2 {
margin-right: 0.5rem;
.ld-mr-1 {
margin-left: 0.25rem;
}
.ld-mr-10 {
margin-left: 2.5rem;
}
.ld-mr-3 {
margin-left: 0.75rem;
}
.ld-mt-10 {
margin-top: 2.5rem;
}
.ld-mt-2 {
margin-top: 0.5rem;
}
.ld-mt-4 {
margin-top: 1rem;
}
.ld-mt-6 {
margin-top: 1.5rem;
}
.ld-mt-8 {
margin-top: 2rem;
}
.ld-box-content {
box-sizing: content-box;
}
.ld-block {
display: block;
}
.ld-inline {
display: inline;
}
.\!ld-flex {
display: flex !important;
}
.ld-flex {
display: flex;
}
.ld-w-8 {
width: 2rem;
.ld-w-1\/2 {
width: 50%;
}
.ld-w-6 {
......@@ -607,12 +634,16 @@ video {
width: 1.75rem;
}
.ld-w-8 {
width: 2rem;
}
.ld-w-full {
width: 100%;
}
.ld-w-1\/2 {
width: 50%;
.\!ld-max-w-full {
max-width: 100% !important;
}
.ld-flex-col {
......@@ -627,10 +658,22 @@ video {
align-items: center;
}
.ld-justify-center {
justify-content: center;
}
.ld-rounded {
border-radius: 0.25rem;
}
.ld-rounded-md {
border-radius: 0.375rem;
}
.ld-border {
border-width: 1px;
}
.ld-border-4 {
border-width: 4px;
}
......@@ -639,9 +682,18 @@ video {
border-right-width: 4px;
}
.ld-bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
.ld-border-solid {
border-style: solid;
}
.ld-border-green-500 {
--tw-border-opacity: 1;
border-color: rgb(34 197 94 / var(--tw-border-opacity));
}
.ld-border-red-500 {
--tw-border-opacity: 1;
border-color: rgb(239 68 68 / var(--tw-border-opacity));
}
.ld-bg-blue-600 {
......@@ -649,23 +701,42 @@ video {
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
}
.ld-bg-green-100 {
--tw-bg-opacity: 1;
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
}
.ld-bg-green-50 {
--tw-bg-opacity: 1;
background-color: rgb(240 253 244 / var(--tw-bg-opacity));
}
.ld-bg-red-100 {
--tw-bg-opacity: 1;
background-color: rgb(254 226 226 / var(--tw-bg-opacity));
}
.ld-bg-green-100 {
.ld-bg-red-50 {
--tw-bg-opacity: 1;
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
background-color: rgb(254 242 242 / var(--tw-bg-opacity));
}
.ld-bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.ld-p-2 {
padding: 0.5rem;
}
.ld-p-8 {
padding: 2rem;
}
.ld-py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
.ld-px-1 {
padding-right: 0.25rem;
padding-left: 0.25rem;
}
.ld-px-4 {
......@@ -673,52 +744,75 @@ video {
padding-left: 1rem;
}
.ld-py-5 {
padding-top: 1.25rem;
padding-bottom: 1.25rem;
}
.ld-px-6 {
padding-right: 1.5rem;
padding-left: 1.5rem;
}
.ld-py-1 {
padding-top: 0.25rem;
padding-bottom: 0.25rem;
}
.ld-py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
}
.ld-py-4 {
padding-top: 1rem;
padding-bottom: 1rem;
}
.ld-py-5 {
padding-top: 1.25rem;
padding-bottom: 1.25rem;
}
.ld-text-4xl {
font-size: 2.25rem;
line-height: 2.5rem;
}
.ld-text-base {
font-size: 1rem;
line-height: 1.5rem;
}
.ld-text-sm {
font-size: 0.875rem;
line-height: 1.25rem;
}
.ld-text-xl {
font-size: 1.25rem;
line-height: 1.75rem;
}
.ld-text-base {
font-size: 1rem;
line-height: 1.5rem;
.ld-font-bold {
font-weight: 700;
}
.ld-font-medium {
font-weight: 500;
}
.ld-font-bold {
font-weight: 700;
.ld-font-semibold {
font-weight: 600;
}
.ld-text-white {
.ld-italic {
font-style: italic;
}
.ld-text-\[\#2271b1\] {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
color: rgb(34 113 177 / var(--tw-text-opacity));
}
.ld-text-red-700 {
.ld-text-gray-700 {
--tw-text-opacity: 1;
color: rgb(185 28 28 / var(--tw-text-opacity));
color: rgb(55 65 81 / var(--tw-text-opacity));
}
.ld-text-green-700 {
......@@ -726,6 +820,30 @@ video {
color: rgb(21 128 61 / var(--tw-text-opacity));
}
.ld-text-green-800 {
--tw-text-opacity: 1;
color: rgb(22 101 52 / var(--tw-text-opacity));
}
.ld-text-red-700 {
--tw-text-opacity: 1;
color: rgb(185 28 28 / var(--tw-text-opacity));
}
.ld-text-red-800 {
--tw-text-opacity: 1;
color: rgb(153 27 27 / var(--tw-text-opacity));
}
.ld-text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
.ld-underline {
text-decoration-line: underline;
}
.ld-shadow-lg {
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
......
/*
! tailwindcss v3.1.5 | MIT License | https://tailwindcss.com
! tailwindcss v3.3.0 | MIT License | https://tailwindcss.com
*/
/*
......@@ -30,6 +30,8 @@
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
*/
html {
......@@ -38,11 +40,14 @@ html {
-webkit-text-size-adjust: 100%;
/* 2 */
/* 3 */
-o-tab-size: 4;
tab-size: 4;
tab-size: 4;
/* 3 */
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
/* 4 */
font-feature-settings: normal;
/* 5 */
font-variation-settings: normal;
/* 6 */
}
/*
......@@ -402,6 +407,12 @@ video {
height: auto;
}
/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden] {
display: none;
}
*, ::before, ::after {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
......@@ -535,68 +546,84 @@ video {
margin-right: auto;
}
.ld-mr-1 {
margin-right: 0.25rem;
}
.ld-mt-6 {
margin-top: 1.5rem;
}
.ld-mt-2 {
margin-top: 0.5rem;
}
.ld-mt-10 {
margin-top: 2.5rem;
.\!ld-ml-auto {
margin-left: auto !important;
}
.ld-mt-8 {
margin-top: 2rem;
.ld-mb-1 {
margin-bottom: 0.25rem;
}
.ld-mr-3 {
margin-right: 0.75rem;
.ld-mb-3 {
margin-bottom: 0.75rem;
}
.ld-mb-4 {
margin-bottom: 1rem;
}
.ld-mb-3 {
margin-bottom: 0.75rem;
.ld-ml-2 {
margin-left: 0.5rem;
}
.ld-ml-6 {
margin-left: 1.5rem;
}
.ld-ml-2 {
margin-left: 0.5rem;
.ld-mr-1 {
margin-right: 0.25rem;
}
.ld-mr-10 {
margin-right: 2.5rem;
}
.ld-mr-3 {
margin-right: 0.75rem;
}
.ld-mt-10 {
margin-top: 2.5rem;
}
.ld-mt-2 {
margin-top: 0.5rem;
}
.ld-mt-4 {
margin-top: 1rem;
}
.ld-mt-6 {
margin-top: 1.5rem;
}
.ld-mt-8 {
margin-top: 2rem;
}
.ld-box-content {
box-sizing: content-box;
}
.ld-block {
display: block;
}
.ld-inline {
display: inline;
}
.\!ld-flex {
display: flex !important;
}
.ld-flex {
display: flex;
}
.ld-w-8 {
width: 2rem;
.ld-w-1\/2 {
width: 50%;
}
.ld-w-6 {
......@@ -607,12 +634,16 @@ video {
width: 1.75rem;
}
.ld-w-8 {
width: 2rem;
}
.ld-w-full {
width: 100%;
}
.ld-w-1\/2 {
width: 50%;
.\!ld-max-w-full {
max-width: 100% !important;
}
.ld-flex-col {
......@@ -627,10 +658,22 @@ video {
align-items: center;
}
.ld-justify-center {
justify-content: center;
}
.ld-rounded {
border-radius: 0.25rem;
}
.ld-rounded-md {
border-radius: 0.375rem;
}
.ld-border {
border-width: 1px;
}
.ld-border-4 {
border-width: 4px;
}
......@@ -639,9 +682,18 @@ video {
border-left-width: 4px;
}
.ld-bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
.ld-border-solid {
border-style: solid;
}
.ld-border-green-500 {
--tw-border-opacity: 1;
border-color: rgb(34 197 94 / var(--tw-border-opacity));
}
.ld-border-red-500 {
--tw-border-opacity: 1;
border-color: rgb(239 68 68 / var(--tw-border-opacity));
}
.ld-bg-blue-600 {
......@@ -649,23 +701,42 @@ video {
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
}
.ld-bg-green-100 {
--tw-bg-opacity: 1;
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
}
.ld-bg-green-50 {
--tw-bg-opacity: 1;
background-color: rgb(240 253 244 / var(--tw-bg-opacity));
}
.ld-bg-red-100 {
--tw-bg-opacity: 1;
background-color: rgb(254 226 226 / var(--tw-bg-opacity));
}
.ld-bg-green-100 {
.ld-bg-red-50 {
--tw-bg-opacity: 1;
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
background-color: rgb(254 242 242 / var(--tw-bg-opacity));
}
.ld-bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.ld-p-2 {
padding: 0.5rem;
}
.ld-p-8 {
padding: 2rem;
}
.ld-py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
.ld-px-1 {
padding-left: 0.25rem;
padding-right: 0.25rem;
}
.ld-px-4 {
......@@ -673,52 +744,75 @@ video {
padding-right: 1rem;
}
.ld-py-5 {
padding-top: 1.25rem;
padding-bottom: 1.25rem;
}
.ld-px-6 {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.ld-py-1 {
padding-top: 0.25rem;
padding-bottom: 0.25rem;
}
.ld-py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
}
.ld-py-4 {
padding-top: 1rem;
padding-bottom: 1rem;
}
.ld-py-5 {
padding-top: 1.25rem;
padding-bottom: 1.25rem;
}
.ld-text-4xl {
font-size: 2.25rem;
line-height: 2.5rem;
}
.ld-text-base {
font-size: 1rem;
line-height: 1.5rem;
}
.ld-text-sm {
font-size: 0.875rem;
line-height: 1.25rem;
}
.ld-text-xl {
font-size: 1.25rem;
line-height: 1.75rem;
}
.ld-text-base {
font-size: 1rem;
line-height: 1.5rem;
.ld-font-bold {
font-weight: 700;
}
.ld-font-medium {
font-weight: 500;
}
.ld-font-bold {
font-weight: 700;
.ld-font-semibold {
font-weight: 600;
}
.ld-text-white {
.ld-italic {
font-style: italic;
}
.ld-text-\[\#2271b1\] {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
color: rgb(34 113 177 / var(--tw-text-opacity));
}
.ld-text-red-700 {
.ld-text-gray-700 {
--tw-text-opacity: 1;
color: rgb(185 28 28 / var(--tw-text-opacity));
color: rgb(55 65 81 / var(--tw-text-opacity));
}
.ld-text-green-700 {
......@@ -726,6 +820,30 @@ video {
color: rgb(21 128 61 / var(--tw-text-opacity));
}
.ld-text-green-800 {
--tw-text-opacity: 1;
color: rgb(22 101 52 / var(--tw-text-opacity));
}
.ld-text-red-700 {
--tw-text-opacity: 1;
color: rgb(185 28 28 / var(--tw-text-opacity));
}
.ld-text-red-800 {
--tw-text-opacity: 1;
color: rgb(153 27 27 / var(--tw-text-opacity));
}
.ld-text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
.ld-underline {
text-decoration-line: underline;
}
.ld-shadow-lg {
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
......
......@@ -346,7 +346,8 @@ span.learndash-description {
}
/* Text Input CSS */
.sfwd_options .learndash-section-field-text {
.sfwd_options .learndash-section-field-text,
.sfwd_options .learndash-section-field-password {
border-radius: 2px;
border: 1px solid #ddd;
box-shadow: none;
......
......@@ -346,7 +346,8 @@ span.learndash-description {
}
/* Text Input CSS */
.sfwd_options .learndash-section-field-text {
.sfwd_options .learndash-section-field-text,
.sfwd_options .learndash-section-field-password {
border-radius: 2px;
border: 1px solid #ddd;
box-shadow: none;
......
table.learndash-support-settings{clear:both;width:100%}table.learndash-support-settings>tbody>tr:nth-child(odd){background-color:#f9f9f9}table.learndash-support-settings body th,table.learndash-support-settings thead th{border-bottom:1px solid #000;margin:0;text-align:right}table.learndash-support-settings tbody td{margin:0;padding:5px}table.learndash-support-settings .learndash-support-settings-left{width:40%}table.learndash-support-settings .learndash-support-settings-right{width:60%}table.learndash-support-settings tbody tr.settings-sub-section{background-color:transparent!important}table.learndash-support-settings tbody th.settings-sub-section{border-bottom:1px solid #000;border-top:1px solid #000;padding-right:0;padding-top:20px}
\ No newline at end of file
table.learndash-support-settings{clear:both;width:100%}table.learndash-support-settings>tbody>tr:nth-child(odd){background-color:#f9f9f9}table.learndash-support-settings body th,table.learndash-support-settings thead th{border-bottom:1px solid #000;margin:0;text-align:right}table.learndash-support-settings tbody td{margin:0;padding:5px}table.learndash-support-settings .learndash-support-settings-left{width:40%}table.learndash-support-settings .learndash-support-settings-right{width:60%}table.learndash-support-settings tbody tr.settings-sub-section{background-color:initial!important}table.learndash-support-settings tbody th.settings-sub-section{border-bottom:1px solid #000;border-top:1px solid #000;padding-right:0;padding-top:20px}
\ No newline at end of file
......
table.learndash-support-settings{clear:both;width:100%}table.learndash-support-settings>tbody>tr:nth-child(odd){background-color:#f9f9f9}table.learndash-support-settings body th,table.learndash-support-settings thead th{border-bottom:1px solid #000;margin:0;text-align:left}table.learndash-support-settings tbody td{margin:0;padding:5px}table.learndash-support-settings .learndash-support-settings-left{width:40%}table.learndash-support-settings .learndash-support-settings-right{width:60%}table.learndash-support-settings tbody tr.settings-sub-section{background-color:transparent!important}table.learndash-support-settings tbody th.settings-sub-section{border-bottom:1px solid #000;border-top:1px solid #000;padding-left:0;padding-top:20px}
\ No newline at end of file
table.learndash-support-settings{clear:both;width:100%}table.learndash-support-settings>tbody>tr:nth-child(odd){background-color:#f9f9f9}table.learndash-support-settings body th,table.learndash-support-settings thead th{border-bottom:1px solid #000;margin:0;text-align:left}table.learndash-support-settings tbody td{margin:0;padding:5px}table.learndash-support-settings .learndash-support-settings-left{width:40%}table.learndash-support-settings .learndash-support-settings-right{width:60%}table.learndash-support-settings tbody tr.settings-sub-section{background-color:initial!important}table.learndash-support-settings tbody th.settings-sub-section{border-bottom:1px solid #000;border-top:1px solid #000;padding-left:0;padding-top:20px}
\ No newline at end of file
......
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -37,8 +37,8 @@
@media (min-width: 600px) {
.branch-5-1.block-editor-page #sfwd-header,
.branch-5-2.block-editor-page #sfwd-header,
.branch-5-3.block-editor-page #sfwd-header {
.branch-5-2.block-editor-page #sfwd-header,
.branch-5-3.block-editor-page #sfwd-header {
top: 0;
}
}
......@@ -232,7 +232,7 @@ body:not(.block-editor-page) .learndash-settings-page-wrap #sfwd-header {
}
@media (min-width: 782px) {
.ld-header-has-tabs.is-fullscreen-mode .edit-post-sidebar,
.ld-header-has-tabs .edit-post-sidebar {
.ld-header-has-tabs .edit-post-sidebar {
top: 214px;
}
}
......
......@@ -37,8 +37,8 @@
@media (min-width: 600px) {
.branch-5-1.block-editor-page #sfwd-header,
.branch-5-2.block-editor-page #sfwd-header,
.branch-5-3.block-editor-page #sfwd-header {
.branch-5-2.block-editor-page #sfwd-header,
.branch-5-3.block-editor-page #sfwd-header {
top: 0;
}
}
......@@ -232,7 +232,7 @@ body:not(.block-editor-page) .learndash-settings-page-wrap #sfwd-header {
}
@media (min-width: 782px) {
.ld-header-has-tabs.is-fullscreen-mode .edit-post-sidebar,
.ld-header-has-tabs .edit-post-sidebar {
.ld-header-has-tabs .edit-post-sidebar {
top: 214px;
}
}
......
This diff could not be displayed because it is too large.
......@@ -7,15 +7,18 @@ if ('block' === window.learndash_builder_metaboxes.editor) {
// If Gutenberg is used, make sure some metaboxes can't be toggled off
wp.data.subscribe(() => {
// "Always On" panels.
const alwaysOn = ['meta-box-learndash-course-access-settings', 'meta-box-learndash-course-display-content-settings', 'meta-box-learndash-course-navigation-settings', 'meta-box-learndash_course_builder', 'meta-box-learndash_course_groups', 'meta-box-learndash_quiz_builder', 'meta-box-sfwd-course-lessons', 'meta-box-sfwd-course-quizzes', 'meta-box-sfwd-course-topics', 'meta-box-sfwd-quiz']; // WordPress Data Store information.
const alwaysOn = ['meta-box-learndash-course-access-settings', 'meta-box-learndash-course-display-content-settings', 'meta-box-learndash-course-navigation-settings', 'meta-box-learndash_course_builder', 'meta-box-learndash_course_groups', 'meta-box-learndash_quiz_builder', 'meta-box-sfwd-course-lessons', 'meta-box-sfwd-course-quizzes', 'meta-box-sfwd-course-topics', 'meta-box-sfwd-quiz'];
// WordPress Data Store information.
const store = wp.data.select('core/edit-post');
const panels = store.getPreference('panels'); // Loop over the panels object, but only those panels listed as "Always ON".
const panels = store.getPreference('panels');
// Loop over the panels object, but only those panels listed as "Always ON".
for (const id in panels) {
if (panels.hasOwnProperty(id) && alwaysOn.includes(id)) {
const panel = panels[id]; // Only perform the actions with panels with enabled property.
const panel = panels[id];
// Only perform the actions with panels with enabled property.
if (panel.hasOwnProperty('enabled')) {
if (!panel.enabled) {
wp.data.dispatch('core/edit-post').toggleEditorPanelEnabled(id);
......@@ -26,13 +29,15 @@ if ('block' === window.learndash_builder_metaboxes.editor) {
});
} else {
// Metaboxes IDs
const alwaysOn = ['learndash-course-access-settings', 'learndash-course-display-content-settings', 'learndash-course-navigation-settings', 'learndash_course_builder', 'learndash_course_groups', 'learndash_quiz_builder', 'sfwd-course-lessons', 'sfwd-course-quizzes', 'sfwd-course-topics', 'sfwd-quiz']; // We need to follow the core postbox.js to bind the events
const alwaysOn = ['learndash-course-access-settings', 'learndash-course-display-content-settings', 'learndash-course-navigation-settings', 'learndash_course_builder', 'learndash_course_groups', 'learndash_quiz_builder', 'sfwd-course-lessons', 'sfwd-course-quizzes', 'sfwd-course-topics', 'sfwd-quiz'];
// We need to follow the core postbox.js to bind the events
jQuery('.hide-postbox-tog').on('click.postboxes', function (e) {
const $el = jQuery(this),
boxId = $el.val(),
$postbox = jQuery('#' + boxId); // Check if the metabox is in "always on"
boxId = $el.val(),
$postbox = jQuery('#' + boxId);
// Check if the metabox is in "always on"
if (-1 < alwaysOn.indexOf(boxId)) {
if (!$el.prop('checked')) {
// Prevent unchecking and force visibility
......
This diff could not be displayed because it is too large.
......@@ -1241,7 +1241,12 @@ jQuery(function () {
'.sfwd_options select#learndash_settings_courses_themes_active_theme'
).each(function (idx, item) {
jQuery(item).on('change', function (e) {
const select_theme_val = jQuery(e.currentTarget).val();
let select_theme_val = jQuery(e.currentTarget).val();
// If a theme inherits settings from another theme then we need to change the select value to the parent theme.
if ( learndash_admin_settings_data.themes_inheriting_settings[ select_theme_val ] !== undefined ) {
select_theme_val = learndash_admin_settings_data.themes_inheriting_settings[ select_theme_val ];
}
jQuery(
'.sfwd_options .ld-theme-settings-section-state-open'
......@@ -2584,4 +2589,64 @@ jQuery(function ($) {
button.attr('disabled', false).text(defaultButtonLabel);
});
});
function learndashValidateStripeWebhook(callIndex = 1) {
const $button = $('#learndash-validate-stripe-webhook');
$button.attr('disabled', true);
$button.find('.learndash-validate-stripe-webhook-text-default').hide();
$button.find('.learndash-validate-stripe-webhook-text-loading').show();
$.ajax({
type: 'POST',
url: ajaxurl,
dataType: 'json',
data: {
action: 'learndash_validate_stripe_webhook',
nonce: $button.data('nonce'),
call_index: callIndex,
},
}).done(function (response) {
if (response.success) {
if (response.data.success) {
$button.attr('disabled', false);
$button
.find('.learndash-validate-stripe-webhook-text-loading')
.hide();
$button
.find('.learndash-validate-stripe-webhook-text-default')
.show();
$('#learndash-stripe-webhook-validation-success').show();
} else if (response.data.fail) {
$button.attr('disabled', false);
$button
.find('.learndash-validate-stripe-webhook-text-loading')
.hide();
$button
.find('.learndash-validate-stripe-webhook-text-default')
.show();
$('#learndash-stripe-webhook-validation-error').show();
} else if (response.data.progress) {
callIndex++;
setTimeout(function () {
learndashValidateStripeWebhook(callIndex);
}, 5000);
}
} else {
alert(response.data.message);
}
});
}
$('#learndash-validate-stripe-webhook').on('click', function (e) {
e.preventDefault();
$('#learndash-stripe-webhook-validation-success').hide();
$('#learndash-stripe-webhook-validation-error').hide();
learndashValidateStripeWebhook();
});
});
......
/** This file is part of the LearnDash plugin and was generated automatically */
!function(){var e,t={120:function(){jQuery((function(e){e(document).on("click",".box .content",(function(t){var n=e(this).closest(".box"),o=n.data("url"),a=1===n.data("completed");o&&o.length>0&&!a&&(t.preventDefault(),window.location.href=o)})),e(document).on("click",'a[data-type="article"], a[data-type="overview_article"]',(function(t){t.preventDefault(),Beacon("article",e(this).data("helpscout_id"),{type:"modal"})})),e(document).on("click",'a[data-type="helpscout_action"]',(function(t){var n,o;switch(t.preventDefault(),e(this).data("action")){case"open_doc":(n=e(this).data("keyword")).length>0?Beacon("navigate","/docs/search?query="+n):(Beacon("suggest",[]),Beacon("navigate","/answers/")),Beacon("open");break;case"open_chat":Beacon("navigate","/ask/"),Beacon("open");break;case"suggest_articles":o=e(this).data("articles").split(","),Beacon("suggest",o),Beacon("navigate","/answers/"),Beacon("open")}})),e(document).on("click",'[data-type="youtube_video"]',(function(t){t.preventDefault();var n="https://www.youtube.com/embed/"+e(this).data("youtube_id")+"?autoplay=1&controls=1";e(".video-wrapper .video-iframe").attr("src",n),e(".video-wrapper").show()})),e(document).on("click",'[data-type="vimeo_video"]',(function(t){t.preventDefault();var n="https://player.vimeo.com/video/"+e(this).data("vimeo_id");e(".video-wrapper .video-iframe").attr("src",n),e(".video-wrapper").show()})),e(document).on("click",".video-wrapper .close",(function(t){t.preventDefault(),e(".video-wrapper .video-iframe").removeAttr("src"),e(".video-wrapper").hide()}))}))},431:function(){},128:function(){},832:function(){}},n={};function o(e){var a=n[e];if(void 0!==a)return a.exports;var r=n[e]={exports:{}};return t[e](r,r.exports,o),r.exports}o.m=t,e=[],o.O=function(t,n,a,r){if(!n){var i=1/0;for(d=0;d<e.length;d++){n=e[d][0],a=e[d][1],r=e[d][2];for(var c=!0,u=0;u<n.length;u++)(!1&r||i>=r)&&Object.keys(o.O).every((function(e){return o.O[e](n[u])}))?n.splice(u--,1):(c=!1,r<i&&(i=r));if(c){e.splice(d--,1);var s=a();void 0!==s&&(t=s)}}return t}r=r||0;for(var d=e.length;d>0&&e[d-1][2]>r;d--)e[d]=e[d-1];e[d]=[n,a,r]},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={891:0,587:0,65:0,249:0};o.O.j=function(t){return 0===e[t]};var t=function(t,n){var a,r,i=n[0],c=n[1],u=n[2],s=0;if(i.some((function(t){return 0!==e[t]}))){for(a in c)o.o(c,a)&&(o.m[a]=c[a]);if(u)var d=u(o)}for(t&&t(n);s<i.length;s++)r=i[s],o.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return o.O(d)},n=self.webpackChunklearndash=self.webpackChunklearndash||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),o.O(void 0,[587,65,249],(function(){return o(120)})),o.O(void 0,[587,65,249],(function(){return o(431)})),o.O(void 0,[587,65,249],(function(){return o(128)}));var a=o.O(void 0,[587,65,249],(function(){return o(832)}));a=o.O(a)}();
\ No newline at end of file
(()=>{var e,a={120:()=>{jQuery((function(e){e(document).on("click",".box .content",(function(a){var t=e(this).closest(".box"),o=t.data("url"),r=1===t.data("completed");o&&o.length>0&&!r&&(a.preventDefault(),window.location.href=o)})),e(document).on("click",'a[data-type="article"], a[data-type="overview_article"]',(function(a){a.preventDefault(),Beacon("article",e(this).data("helpscout_id"),{type:"modal"})})),e(document).on("click",'a[data-type="helpscout_action"]',(function(a){var t,o;switch(a.preventDefault(),e(this).data("action")){case"open_doc":(t=e(this).data("keyword")).length>0?Beacon("navigate","/docs/search?query="+t):(Beacon("suggest",[]),Beacon("navigate","/answers/")),Beacon("open");break;case"open_chat":Beacon("navigate","/ask/"),Beacon("open");break;case"suggest_articles":o=e(this).data("articles").split(","),Beacon("suggest",o),Beacon("navigate","/answers/"),Beacon("open")}})),e(document).on("click",'[data-type="youtube_video"]',(function(a){a.preventDefault();var t="https://www.youtube.com/embed/"+e(this).data("youtube_id")+"?autoplay=1&controls=1";e(".video-wrapper .video-iframe").attr("src",t),e(".video-wrapper").show()})),e(document).on("click",'[data-type="vimeo_video"]',(function(a){a.preventDefault();var t="https://player.vimeo.com/video/"+e(this).data("vimeo_id");e(".video-wrapper .video-iframe").attr("src",t),e(".video-wrapper").show()})),e(document).on("click",".video-wrapper .close",(function(a){a.preventDefault(),e(".video-wrapper .video-iframe").removeAttr("src"),e(".video-wrapper").hide()}))}))},431:()=>{},128:()=>{},832:()=>{}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var n=t[e]={exports:{}};return a[e](n,n.exports,o),n.exports}o.m=a,e=[],o.O=(a,t,r,n)=>{if(!t){var i=1/0;for(p=0;p<e.length;p++){for(var[t,r,n]=e[p],c=!0,s=0;s<t.length;s++)(!1&n||i>=n)&&Object.keys(o.O).every((e=>o.O[e](t[s])))?t.splice(s--,1):(c=!1,n<i&&(i=n));if(c){e.splice(p--,1);var d=r();void 0!==d&&(a=d)}}return a}n=n||0;for(var p=e.length;p>0&&e[p-1][2]>n;p--)e[p]=e[p-1];e[p]=[t,r,n]},o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),(()=>{var e={891:0,587:0,65:0,249:0};o.O.j=a=>0===e[a];var a=(a,t)=>{var r,n,[i,c,s]=t,d=0;if(i.some((a=>0!==e[a]))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(s)var p=s(o)}for(a&&a(t);d<i.length;d++)n=i[d],o.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return o.O(p)},t=globalThis.webpackChunklearndash=globalThis.webpackChunklearndash||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})(),o.O(void 0,[587,65,249],(()=>o(120))),o.O(void 0,[587,65,249],(()=>o(431))),o.O(void 0,[587,65,249],(()=>o(128)));var r=o.O(void 0,[587,65,249],(()=>o(832)));r=o.O(r)})();
\ No newline at end of file
......
!function(){var e,t={120:function(){jQuery((function(e){e(document).on("click",".box .content",(function(t){var n=e(this).closest(".box"),o=n.data("url"),a=1===n.data("completed");o&&o.length>0&&!a&&(t.preventDefault(),window.location.href=o)})),e(document).on("click",'a[data-type="article"], a[data-type="overview_article"]',(function(t){t.preventDefault(),Beacon("article",e(this).data("helpscout_id"),{type:"modal"})})),e(document).on("click",'a[data-type="helpscout_action"]',(function(t){var n,o;switch(t.preventDefault(),e(this).data("action")){case"open_doc":(n=e(this).data("keyword")).length>0?Beacon("navigate","/docs/search?query="+n):(Beacon("suggest",[]),Beacon("navigate","/answers/")),Beacon("open");break;case"open_chat":Beacon("navigate","/ask/"),Beacon("open");break;case"suggest_articles":o=e(this).data("articles").split(","),Beacon("suggest",o),Beacon("navigate","/answers/"),Beacon("open")}})),e(document).on("click",'[data-type="youtube_video"]',(function(t){t.preventDefault();var n="https://www.youtube.com/embed/"+e(this).data("youtube_id")+"?autoplay=1&controls=1";e(".video-wrapper .video-iframe").attr("src",n),e(".video-wrapper").show()})),e(document).on("click",'[data-type="vimeo_video"]',(function(t){t.preventDefault();var n="https://player.vimeo.com/video/"+e(this).data("vimeo_id");e(".video-wrapper .video-iframe").attr("src",n),e(".video-wrapper").show()})),e(document).on("click",".video-wrapper .close",(function(t){t.preventDefault(),e(".video-wrapper .video-iframe").removeAttr("src"),e(".video-wrapper").hide()}))}))},431:function(){},128:function(){},832:function(){}},n={};function o(e){var a=n[e];if(void 0!==a)return a.exports;var r=n[e]={exports:{}};return t[e](r,r.exports,o),r.exports}o.m=t,e=[],o.O=function(t,n,a,r){if(!n){var i=1/0;for(d=0;d<e.length;d++){n=e[d][0],a=e[d][1],r=e[d][2];for(var c=!0,u=0;u<n.length;u++)(!1&r||i>=r)&&Object.keys(o.O).every((function(e){return o.O[e](n[u])}))?n.splice(u--,1):(c=!1,r<i&&(i=r));if(c){e.splice(d--,1);var s=a();void 0!==s&&(t=s)}}return t}r=r||0;for(var d=e.length;d>0&&e[d-1][2]>r;d--)e[d]=e[d-1];e[d]=[n,a,r]},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={891:0,587:0,65:0,249:0};o.O.j=function(t){return 0===e[t]};var t=function(t,n){var a,r,i=n[0],c=n[1],u=n[2],s=0;if(i.some((function(t){return 0!==e[t]}))){for(a in c)o.o(c,a)&&(o.m[a]=c[a]);if(u)var d=u(o)}for(t&&t(n);s<i.length;s++)r=i[s],o.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return o.O(d)},n=self.webpackChunklearndash=self.webpackChunklearndash||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),o.O(void 0,[587,65,249],(function(){return o(120)})),o.O(void 0,[587,65,249],(function(){return o(431)})),o.O(void 0,[587,65,249],(function(){return o(128)}));var a=o.O(void 0,[587,65,249],(function(){return o(832)}));a=o.O(a)}();
\ No newline at end of file
(()=>{var e,a={120:()=>{jQuery((function(e){e(document).on("click",".box .content",(function(a){var t=e(this).closest(".box"),o=t.data("url"),r=1===t.data("completed");o&&o.length>0&&!r&&(a.preventDefault(),window.location.href=o)})),e(document).on("click",'a[data-type="article"], a[data-type="overview_article"]',(function(a){a.preventDefault(),Beacon("article",e(this).data("helpscout_id"),{type:"modal"})})),e(document).on("click",'a[data-type="helpscout_action"]',(function(a){var t,o;switch(a.preventDefault(),e(this).data("action")){case"open_doc":(t=e(this).data("keyword")).length>0?Beacon("navigate","/docs/search?query="+t):(Beacon("suggest",[]),Beacon("navigate","/answers/")),Beacon("open");break;case"open_chat":Beacon("navigate","/ask/"),Beacon("open");break;case"suggest_articles":o=e(this).data("articles").split(","),Beacon("suggest",o),Beacon("navigate","/answers/"),Beacon("open")}})),e(document).on("click",'[data-type="youtube_video"]',(function(a){a.preventDefault();var t="https://www.youtube.com/embed/"+e(this).data("youtube_id")+"?autoplay=1&controls=1";e(".video-wrapper .video-iframe").attr("src",t),e(".video-wrapper").show()})),e(document).on("click",'[data-type="vimeo_video"]',(function(a){a.preventDefault();var t="https://player.vimeo.com/video/"+e(this).data("vimeo_id");e(".video-wrapper .video-iframe").attr("src",t),e(".video-wrapper").show()})),e(document).on("click",".video-wrapper .close",(function(a){a.preventDefault(),e(".video-wrapper .video-iframe").removeAttr("src"),e(".video-wrapper").hide()}))}))},431:()=>{},128:()=>{},832:()=>{}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var n=t[e]={exports:{}};return a[e](n,n.exports,o),n.exports}o.m=a,e=[],o.O=(a,t,r,n)=>{if(!t){var i=1/0;for(p=0;p<e.length;p++){for(var[t,r,n]=e[p],c=!0,s=0;s<t.length;s++)(!1&n||i>=n)&&Object.keys(o.O).every((e=>o.O[e](t[s])))?t.splice(s--,1):(c=!1,n<i&&(i=n));if(c){e.splice(p--,1);var d=r();void 0!==d&&(a=d)}}return a}n=n||0;for(var p=e.length;p>0&&e[p-1][2]>n;p--)e[p]=e[p-1];e[p]=[t,r,n]},o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),(()=>{var e={891:0,587:0,65:0,249:0};o.O.j=a=>0===e[a];var a=(a,t)=>{var r,n,[i,c,s]=t,d=0;if(i.some((a=>0!==e[a]))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(s)var p=s(o)}for(a&&a(t);d<i.length;d++)n=i[d],o.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return o.O(p)},t=globalThis.webpackChunklearndash=globalThis.webpackChunklearndash||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})(),o.O(void 0,[587,65,249],(()=>o(120))),o.O(void 0,[587,65,249],(()=>o(431))),o.O(void 0,[587,65,249],(()=>o(128)));var r=o.O(void 0,[587,65,249],(()=>o(832)));r=o.O(r)})();
\ No newline at end of file
......
/* global Beacon */
// Start Helpscout Beacon
/* eslint-disable */
!function(e,t,n){function a(){var e=t.getElementsByTagName("script")[0],n=t.createElement("script");n.type="text/javascript",n.async=!0,n.src="https://beacon-v2.helpscout.net",e.parentNode.insertBefore(n,e)}if(e.Beacon=n=function(t,n,a){e.Beacon.readyQueue.push({method:t,options:n,data:a})},n.readyQueue=[],"complete"===t.readyState)return a();e.attachEvent?e.attachEvent("onload",a):e.addEventListener("load",a,!1)}(window,document,window.Beacon||function(){});
/* eslint-enable */
window.Beacon('init', '1418fe60-cd03-4691-a765-66e6166f1695');
// End Helpscout Beacon
(function () {
jQuery(function ($) {
$(document).on('submit', '#search-form', function (e) {
e.preventDefault();
const inputs = {};
$.each($(this).serializeArray(), function (key, field) {
inputs[field.name] = field.value;
});
if (inputs.keyword.length > 0) {
Beacon('open');
Beacon('search', inputs.keyword);
}
});
$(document).on('click', '.answers .item', function (e) {
e.preventDefault();
const id = $(this).data('id');
Beacon('open');
Beacon('navigate', '/docs/search?query=category:' + id);
});
Beacon('on', 'ready', function () {
$('body').append('<div class="beacon-background"></div>');
});
Beacon('on', 'article-viewed', function () {
$('body').addClass('beacon-open');
setTimeout(function () {
const intervalId = setInterval(function () {
const frame = $(
'.beacon-open .Beacon #BeaconInlineArticlesFrame, .Beacon .BeaconContainer-enter-done'
);
if (frame.length < 1) {
$('body').removeClass('beacon-open');
clearInterval(intervalId);
} else {
$('body').addClass('beacon-open');
}
}, 200);
}, 300);
});
Beacon('on', 'open', function () {
$('body').addClass('beacon-open');
});
Beacon('on', 'close', function () {
$('body').removeClass('beacon-open');
});
});
})();
/* global Beacon */
jQuery(function ($) {
$(document).on('click', '.box .content', function (e) {
const $box = $(this).closest('.box'),
url = $box.data('url'),
completed = $box.data('completed') === 1;
if (url && url.length > 0 && !completed) {
e.preventDefault();
window.location.href = url;
}
});
$(document).on(
'click',
'a[data-type="article"], a[data-type="overview_article"]',
function (e) {
e.preventDefault();
Beacon('article', $(this).data('helpscout_id'), { type: 'modal' });
}
);
$(document).on('click', 'a[data-type="helpscout_action"]', function (e) {
e.preventDefault();
const action = $(this).data('action');
let keyword, articles;
switch (action) {
case 'open_doc':
keyword = $(this).data('keyword');
if (keyword.length > 0) {
Beacon('navigate', '/docs/search?query=' + keyword);
} else {
Beacon('suggest', []);
Beacon('navigate', '/answers/');
}
Beacon('open');
break;
case 'open_chat':
Beacon('navigate', '/ask/');
Beacon('open');
break;
case 'suggest_articles':
articles = $(this).data('articles').split(',');
Beacon('suggest', articles);
Beacon('navigate', '/answers/');
Beacon('open');
break;
}
});
$(document).on('click', '[data-type="youtube_video"]', function (e) {
e.preventDefault();
const youtubeId = $(this).data('youtube_id'),
src =
'https://www.youtube.com/embed/' +
youtubeId +
'?autoplay=1&controls=1';
$('.video-wrapper .video-iframe').attr('src', src);
$('.video-wrapper').show();
});
$(document).on('click', '[data-type="vimeo_video"]', function (e) {
e.preventDefault();
const vimeoId = $(this).data('vimeo_id'),
src = 'https://player.vimeo.com/video/' + vimeoId;
$('.video-wrapper .video-iframe').attr('src', src);
$('.video-wrapper').show();
});
$(document).on('click', '.video-wrapper .close', function (e) {
e.preventDefault();
$('.video-wrapper .video-iframe').removeAttr('src');
$('.video-wrapper').hide();
});
});
= [4.6.0.1] =
* Fix - Duplicate status bubbles when using the `learndash_status_bubble` function.
* Security - Tightened security around the reset password shortcode.
= [4.6.0] =
* Feature - Course Outline AI module.
* Fix - Display free trial in course/group infobar if trial price set to 0 or empty.
* Fix - learndash_process_user_course_progress_update function was not processing the progress correctly in some cases.
* Fix - Prevent duplicate password reset email after password reset.
* Fix - Set product name as description for Stripe Connect buy now products.
* Fix - Undefined FS_CHMOD_FILE error.
* Fix - Updated method to required files in helpers.php file.
* Tweak - Added actions: `learndash_files_included`.
* Tweak - Added filters: `learndash_payment_button_classes`, `learndash_model_product_display_price`, `learndash_model_product_display_trial_price`, `learndash_service_chatgpt_send_command_data`.
* Tweak - Added functions: `learndash_register_provider`, `learndash_extra_autoloading`.
* Tweak - AI Integrations settings page under advanced settings tab.
* Tweak - Deprecated functions: `learndash_the_breadcrumbs`.
* Tweak - Deprecated models classes (replaced with LearnDash\Core\Models): `Learndash_Model`, `Learndash_Product_Model`, `Learndash_Transaction_Model`.
= [4.5.3.2] =
* Fix - learndash_reports_get_activity function did not return correct results in some cases (which has been affected by a fix in 4.5.3.1).
= [4.5.3.1] =
* Security - Tightened security around the courseinfo shortcode.
= [4.5.3] =
* Fix - The default color is not displayed in the theme settings color picker.
* Update - RazorPay library to 2.8.5.
= [4.5.2.1] =
* Fix - Location of /lang directory in TCPDF library
* Fix - Location of /lang directory in TCPDF library.
= [4.5.2] =
* Added - Show deprecation notice if using Stripe addon plugin.
* Update - TCPDF to version 6.6.2.
* Update - Change documentation in LearnDash LMS > Setup page.
* Fix - 'Click here to visit' translatable text on checkout form.
* Fix - Display correct pricing interval values in purchase invoice.
* Fix - learndash_reports_get_activity() returns results outside of date range if activity status combination is set.
* Fix - Incorrect decimal pricing on Stripe & Razorpay checkout.
* Fix - 'Click here to visit' translatable text on checkout form.
* Fix - learndash_reports_get_activity() returns results outside of date range if activity status combination is set.
* Tweak - Show deprecation notice if using Stripe addon plugin.
* Update - Change documentation in LearnDash LMS > Setup page.
* Update - TCPDF to version 6.6.2.
= [4.5.1.2] =
......@@ -23,23 +57,23 @@
= [4.5.1] =
* Added - Confirm dialog when setting up template in Design Wizard.
* Fix - Posts and authors were not connected on import when users were being imported.
* Fix - learndash_user_get_course_completed_date function did not calculate the correct date in some cases.
* Fix - Process shortcode placeholders in purchase invoice email message.
* Fix - Hide continue button on failed quiz shortcode unless filtered
* Fix - Keep the old slugs for imported posts where possible.
* Fix - Display Telemetry modal on LD admin pages.
* Fix - Add ; to Content-Type email header.
* Fix - Display Telemetry modal on LD admin pages.
* Fix - Hide continue button on failed quiz shortcode unless filtered
* Fix - Issues with pagination, minimum global pagination value is 1 now.
* Tweak - Add validation error to the course access period field, when the value is less than 1.
* Fix - Keep the old slugs for imported posts where possible.
* Fix - learndash_user_get_course_completed_date function did not calculate the correct date in some cases.
* Fix - Posts and authors were not connected on import when users were being imported.
* Fix - Process shortcode placeholders in purchase invoice email message.
* Tweak - Add better validation messages on import.
* Tweak - Add validation error to the course access period field, when the value is less than 1.
* Tweak - Confirm dialog when setting up template in Design Wizard.
= [4.5.0.3] =
* Fix - Stripe Connect does not allow purchase for a logged-out user if Registration page not set.
* Fix - Increase timeout period for Action Scheduler
* Fix - Prices containing commas were not being passed to payment gateways correctly.
* Fix - Stripe Connect does not allow purchase for a logged-out user if Registration page not set.
* Tweak - Removed a non-circulating currency CLF.
= [4.5.0.2] =
......@@ -48,10 +82,10 @@
= [4.5.0.1] =
* Fix - Compatibility with PHP 7.2, 7.3.
* Fix - Conflict with a list of plugins.
* Fix - Mobile sidebar menu and materials tab not opening.
* Fix - Move scalar constants out of the `plugins_loaded` hook.
* Fix - Conflict with a list of plugins.
* Fix - Compatibility with PHP 7.2, 7.3.
= [4.5.0] =
......
......@@ -2379,7 +2379,7 @@ if ( ! class_exists( 'Learndash_Admin_Posts_Listing' ) ) {
$course_lessons_ids = array();
$course_lessons = learndash_get_lesson_list( $course_selector['selected'] );
if ( ! empty( $course_lessons ) ) {
$course_lessons_ids = wp_list_pluck( $course_lessons, 'ID' );
$course_lessons_ids = wp_list_pluck( (array) $course_lessons, 'ID' );
}
if ( ( ! empty( $course_lessons_ids ) ) && ( in_array( $selector['selected'], $course_lessons_ids, true ) ) ) {
......
......@@ -6,6 +6,8 @@
* @package LearnDash\Transactions\Listing
*/
use LearnDash\Core\Models\Transaction;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
......@@ -171,12 +173,12 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
if ( Learndash_Paypal_IPN_Gateway::get_name() === $selector['selected'] ) {
$q_vars['meta_query']['relation'] = 'OR';
$q_vars['meta_query'][] = array(
'key' => Learndash_Transaction_Model::$meta_key_gateway_name,
'key' => Transaction::$meta_key_gateway_name,
'compare' => '=',
'value' => $selector['selected'],
);
$q_vars['meta_query'][] = array(
'key' => Learndash_Transaction_Model::$meta_key_gateway_name,
'key' => Transaction::$meta_key_gateway_name,
'compare' => '=',
'value' => 'paypal',
);
......@@ -187,7 +189,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
} elseif ( Learndash_Stripe_Gateway::get_name() === $selector['selected'] ) {
$q_vars['meta_query']['relation'] = 'OR';
$q_vars['meta_query'][] = array(
'key' => Learndash_Transaction_Model::$meta_key_gateway_name,
'key' => Transaction::$meta_key_gateway_name,
'compare' => '=',
'value' => $selector['selected'],
);
......@@ -198,7 +200,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
);
} elseif ( Learndash_Razorpay_Gateway::get_name() === $selector['selected'] ) {
$q_vars['meta_query'][] = array(
'key' => Learndash_Transaction_Model::$meta_key_gateway_name,
'key' => Transaction::$meta_key_gateway_name,
'compare' => '=',
'value' => $selector['selected'],
);
......@@ -269,7 +271,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
} elseif ( 'razorpay_paynow' === $selector['selected'] ) {
$q_vars['meta_query'][] = array(
array(
'key' => Learndash_Transaction_Model::$meta_key_gateway_name,
'key' => Transaction::$meta_key_gateway_name,
'value' => Learndash_Razorpay_Gateway::get_name(),
),
array(
......@@ -280,15 +282,15 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
} elseif ( 'razorpay_subscribe' === $selector['selected'] ) {
$q_vars['meta_query'][] = array(
array(
'key' => Learndash_Transaction_Model::$meta_key_gateway_name,
'key' => Transaction::$meta_key_gateway_name,
'value' => Learndash_Razorpay_Gateway::get_name(),
),
array(
'key' => Learndash_Transaction_Model::$meta_key_price_type,
'key' => Transaction::$meta_key_price_type,
'value' => LEARNDASH_PRICE_TYPE_SUBSCRIBE,
),
array(
'key' => Learndash_Transaction_Model::$meta_key_has_trial,
'key' => Transaction::$meta_key_has_trial,
'compare' => '!=',
'value' => 1,
),
......@@ -296,26 +298,26 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
} elseif ( 'razorpay_subscribe_paid_trial' === $selector['selected'] ) {
$q_vars['meta_query'][] = array(
array(
'key' => Learndash_Transaction_Model::$meta_key_gateway_name,
'key' => Transaction::$meta_key_gateway_name,
'value' => Learndash_Razorpay_Gateway::get_name(),
),
array(
'key' => Learndash_Transaction_Model::$meta_key_has_trial,
'key' => Transaction::$meta_key_has_trial,
'value' => 1,
),
array(
'key' => Learndash_Transaction_Model::$meta_key_has_free_trial,
'key' => Transaction::$meta_key_has_free_trial,
'value' => 0,
),
);
} elseif ( 'razorpay_subscribe_free_trial' === $selector['selected'] ) {
$q_vars['meta_query'][] = array(
array(
'key' => Learndash_Transaction_Model::$meta_key_gateway_name,
'key' => Transaction::$meta_key_gateway_name,
'value' => Learndash_Razorpay_Gateway::get_name(),
),
array(
'key' => Learndash_Transaction_Model::$meta_key_has_free_trial,
'key' => Transaction::$meta_key_has_free_trial,
'value' => 1,
),
);
......@@ -344,7 +346,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
}
$q_vars['meta_query']['relation'] = 'OR';
foreach ( Learndash_Transaction_Model::$product_id_meta_keys as $meta_key ) {
foreach ( Transaction::$product_id_meta_keys as $meta_key ) {
$q_vars['meta_query'][] = array(
'key' => $meta_key,
'value' => (int) $selector['selected'],
......@@ -364,7 +366,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
* @return void
*/
protected function show_column_gateway( int $post_id ): void {
$transaction = Learndash_Transaction_Model::find( $post_id );
$transaction = Transaction::find( $post_id );
if ( ! $transaction ) {
return;
......@@ -403,7 +405,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
* @return void
*/
protected function show_column_info( int $post_id ): void {
$transaction = Learndash_Transaction_Model::find( $post_id );
$transaction = Transaction::find( $post_id );
if ( ! $transaction ) {
return;
......@@ -512,7 +514,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
* @return void
*/
protected function show_column_coupon( int $post_id ): void {
$transaction = Learndash_Transaction_Model::find( $post_id );
$transaction = Transaction::find( $post_id );
if ( ! $transaction || $transaction->is_parent() ) {
return;
......@@ -571,7 +573,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
* @return void
*/
protected function show_column_product( int $post_id ): void {
$transaction = Learndash_Transaction_Model::find( $post_id );
$transaction = Transaction::find( $post_id );
if ( ! $transaction ) {
return;
......@@ -661,7 +663,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
* @return void
*/
protected function show_column_access( int $post_id ): void {
$transaction = Learndash_Transaction_Model::find( $post_id );
$transaction = Transaction::find( $post_id );
if ( ! $transaction ) {
return;
......@@ -745,7 +747,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
* @return void
*/
protected function show_column_user( int $post_id ): void {
$transaction = Learndash_Transaction_Model::find( $post_id );
$transaction = Transaction::find( $post_id );
if ( ! $transaction ) {
return;
......@@ -850,7 +852,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
return;
}
$transactions = Learndash_Transaction_Model::find_many(
$transactions = Transaction::find_many(
wp_parse_id_list( wp_unslash( $_REQUEST['post'] ) )
);
......
......@@ -13,6 +13,10 @@ if ( ! defined( 'ABSPATH' ) ) {
// cspell:ignore i18nize .
use LearnDash\Core\App;
use LearnDash\Core\Provider;
if ( ! class_exists( 'SFWD_LMS' ) ) {
/**
......@@ -218,9 +222,15 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
}
}
add_action( 'wp_ajax_select_a_lesson', array( $this, 'select_a_lesson_ajax' ) );
add_action( 'wp_ajax_select_a_lesson_or_topic', array( $this, 'select_a_lesson_or_topic_ajax' ) );
add_action( 'wp_ajax_select_a_quiz', array( $this, 'select_a_quiz_ajax' ) );
add_action( 'wp_ajax_select_a_lesson', [ $this, 'select_a_lesson_ajax' ] );
add_action( 'wp_ajax_select_a_lesson_or_topic', [ $this, 'select_a_lesson_or_topic_ajax' ] );
add_action( 'wp_ajax_select_a_quiz', [ $this, 'select_a_quiz_ajax' ] );
add_action(
'learndash_files_included',
function() {
App::register( Provider::class );
}
);
}
/**
......@@ -3019,7 +3029,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
} elseif ( ! is_null( $atts['quiz_filter_quiz'] ) ) {
$quiz_ids = $atts['quiz_filter_quiz'];
} else {
$quiz_ids = wp_list_pluck( $quizzes, 'quiz' );
$quiz_ids = wp_list_pluck( (array) $quizzes, 'quiz' );
}
if ( ! empty( $quiz_ids ) ) {
......@@ -4710,6 +4720,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
$template_paths = array();
$active_template_key = LearnDash_Theme_Register::get_active_theme_key();
$active_template_dir = LearnDash_Theme_Register::get_active_theme_template_dir();
$file_pathinfo = pathinfo( $filename );
if ( ! isset( $file_pathinfo['dirname'] ) ) {
......@@ -4737,7 +4748,16 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
$template_filenames[] = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.min.' . $file_pathinfo['extension'];
} else {
$template_filenames[] = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.' . $file_pathinfo['extension'];
// add index suffix to filename.
$template_file_name = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.' . $file_pathinfo['extension'];
if ( ! is_file( trailingslashit( $active_template_dir ) . $template_file_name ) ) {
$template_file_dir = $file_pathinfo['dirname'] . $file_pathinfo['filename'];
if ( is_dir( trailingslashit( $active_template_dir ) . $template_file_dir ) ) {
$template_file_name = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '/index.' . $file_pathinfo['extension'];
}
}
$template_filenames[] = $template_file_name;
}
$template_paths['theme'] = array();
......@@ -4745,7 +4765,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
$template_paths['theme'][] = 'learndash/' . $active_template_key . '/' . $template_filename;
}
if ( 'legacy' === $active_template_key ) {
if ( LEARNDASH_LEGACY_THEME === $active_template_key ) {
foreach ( $template_filenames as $template_filename ) {
$template_paths['theme'][] = 'learndash/' . $template_filename;
}
......@@ -4764,7 +4784,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
if ( 'learndash_template_functions.php' === $file_pathinfo['filename'] ) {
$template_paths['templates'][] = $template_dir . $active_template_key . '/functions.php';
}
if ( 'legacy' === $active_template_key ) {
if ( LEARNDASH_LEGACY_THEME === $active_template_key ) {
foreach ( $template_filenames as $template_filename ) {
$template_paths['templates'][] = $template_dir . $template_filename;
}
......@@ -4774,22 +4794,26 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
}
}
$active_template_dir = LearnDash_Theme_Register::get_active_theme_template_dir();
if ( ! empty( $active_template_dir ) ) {
foreach ( $template_filenames as $template_filename ) {
$template_paths['templates'][] = $active_template_dir . '/' . $template_filename;
$template_paths['templates'][] = trailingslashit( $active_template_dir ) . $template_filename;
}
}
if ( LEARNDASH_LEGACY_THEME !== $active_template_key ) {
$legacy_theme_instance = LearnDash_Theme_Register::get_theme_instance( LEARNDASH_LEGACY_THEME );
$legacy_theme_dir = $legacy_theme_instance->get_theme_template_dir();
if ( ! empty( $legacy_theme_dir ) ) {
foreach ( $template_filenames as $template_filename ) {
$template_paths['templates'][] = $legacy_theme_dir . '/' . $template_filename;
if ( ! empty( $legacy_theme_instance ) ) {
$legacy_theme_dir = $legacy_theme_instance->get_theme_template_dir();
if ( ! empty( $legacy_theme_dir ) ) {
foreach ( $template_filenames as $template_filename ) {
$template_paths['templates'][] = $legacy_theme_dir . '/' . $template_filename;
}
}
}
}
return $template_paths;
}
......@@ -4801,10 +4825,10 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
*
* @since 2.1.0
*
* @param string $name template name.
* @param array|null $args data for template.
* @param boolean|null $echo echo or return.
* @param boolean $return_file_path return just file path instead of output.
* @param string $name Template name.
* @param array|null $args Data for template.
* @param bool|null $echo echo or return.
* @param bool $return_file_path Return just file path instead of output.
*/
public static function get_template( $name, $args, $echo = false, $return_file_path = false ) {
$template_paths = array();
......@@ -4822,11 +4846,11 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
*
* @since 3.0.0
*
* @param string $template_filename Template file name.
* @param string $name Template name.
* @param array $args Template data.
* @param boolean $echo Whether to echo the template output or not.
* @param boolean $return_file_path Whether to return file or path or not.
* @param string $template_filename Template file name.
* @param string $name Template name.
* @param array|null $args Template data.
* @param bool|null $echo Whether to echo the template output or not.
* @param bool $return_file_path Whether to return file or path or not.
*/
$template_filename = apply_filters( 'learndash_template_filename', $template_filename, $name, $args, $echo, $return_file_path );
......@@ -4858,11 +4882,11 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
* @since 2.1.0
* @since 3.0.3 - Allow override of empty or other checks.
*
* @param string $filepath Template file path.
* @param string $name Template name.
* @param array $args Template data.
* @param boolean $echo Whether to echo the template output or not.
* @param boolean $return_file_path Whether to return file or path or not.
* @param string $filepath Template file path.
* @param string $name Template name.
* @param array|null $args Template data.
* @param bool|null $echo Whether to echo the template output or not.
* @param bool $return_file_path Whether to return file or path or not.
*/
$filepath = apply_filters( 'learndash_template', $filepath, $name, $args, $echo, $return_file_path );
if ( ! $filepath ) {
......@@ -4881,9 +4905,9 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
*
* The dynamic part of the hook refers to the name of the template.
*
* @param array $args Template data.
* @param string $filepath Template file path.
* @param boolean $echo Whether to echo the template output or not.
* @param array|null $args Template data.
* @param string $filepath Template file path.
* @param bool|null $echo Whether to echo the template output or not.
*/
$args = apply_filters( 'ld_template_args_' . $name, $args, $filepath, $echo );
if ( ( ! empty( $args ) ) && ( is_array( $args ) ) ) {
......@@ -4898,7 +4922,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
return $contents;
}
echo $contents;
echo $contents; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped in template.
}
}
......@@ -4915,6 +4939,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
*/
public static function get_view( string $name, array $args = array(), bool $echo = false ) {
extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract -- Bad idea, but better keep it for now.
$template = LEARNDASH_LMS_PLUGIN_DIR . '/includes/views/' . $name . '.php';
if ( file_exists( $template ) ) {
......
......@@ -590,6 +590,52 @@ if ( ! class_exists( 'LDLMS_DB' ) ) {
return array();
}
/**
* Escape an array, supposed to be a numeric array, to be used in a SQL IN() clause.
*
* @since 4.5.3.1
*
* @param array<mixed> $array Array of items to process.
*
* @return array<int>
*/
public static function escape_numeric_array( $array ): array {
if ( empty( $array ) ) {
return [];
}
return array_map(
function( $item ) {
$item = trim( strval( $item ), "'\"" );
return intval( $item );
},
$array
);
}
/**
* Escape a string array to be used in a SQL IN() clause.
*
* @since 4.5.3.1
*
* @param array<mixed> $array Array of items to process.
*
* @return array<string>
*/
public static function escape_string_array( $array ): array {
if ( empty( $array ) ) {
return [];
}
return array_map(
function( $item ) {
return sanitize_text_field( strval( $item ) );
},
$array
);
}
// End of functions.
}
}
......
......@@ -753,6 +753,8 @@ function learndash_user_progress_get_previous_incomplete_step( $user_id = 0, $co
}
}
}
return false;
}
/**
......
......@@ -7,6 +7,9 @@
* @package LearnDash\Coupons
*/
use LearnDash\Core\Models\Product;
use LearnDash\Core\Models\Transaction;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
......@@ -496,7 +499,7 @@ function learndash_apply_coupon(): void {
);
}
$product = Learndash_Product_Model::find( (int) $_POST['post_id'] );
$product = Product::find( (int) $_POST['post_id'] );
if ( ! $product ) {
wp_send_json_error(
......@@ -520,9 +523,9 @@ function learndash_apply_coupon(): void {
);
}
// Check if we are processing the "buy now" pricing.
// Check if we are processing the "subscribe" pricing.
if ( LEARNDASH_PRICE_TYPE_PAYNOW !== $product->get_pricing_type() ) {
if ( $product->is_price_type_subscribe() ) {
wp_send_json_error(
array(
'message' => __( 'Subscriptions are not supported for now.', 'learndash' ),
......@@ -593,7 +596,7 @@ function learndash_remove_coupon(): void {
// Check if we are processing a course/group.
$product = Learndash_Product_Model::find( (int) $_POST['post_id'] );
$product = Product::find( (int) $_POST['post_id'] );
if ( ! $product ) {
wp_send_json_error(
......@@ -645,7 +648,7 @@ function learndash_remove_coupon(): void {
* @return void
*/
function learndash_process_coupon_after_transaction( int $transaction_id ): void {
$transaction = Learndash_Transaction_Model::find( $transaction_id );
$transaction = Transaction::find( $transaction_id );
if ( ! $transaction ) {
return;
......@@ -677,7 +680,7 @@ function learndash_process_coupon_after_transaction( int $transaction_id ): void
update_post_meta(
$transaction_id,
Learndash_Transaction_Model::$meta_key_pricing_info,
Transaction::$meta_key_pricing_info,
Learndash_Pricing_DTO::create( $coupon_data->to_array() )->to_array()
);
} catch ( Learndash_DTO_Validation_Exception $e ) {
......@@ -746,7 +749,7 @@ function learndash_enroll_with_zero_price(): void {
// Check if we are processing a course/group.
$product = Learndash_Product_Model::find( (int) $_POST['post_id'] );
$product = Product::find( (int) $_POST['post_id'] );
if ( ! $product ) {
wp_send_json_error(
......@@ -797,13 +800,13 @@ function learndash_enroll_with_zero_price(): void {
$transaction_id = learndash_transaction_create(
array(
Learndash_Transaction_Model::$meta_key_is_free => true,
Transaction::$meta_key_is_free => true,
),
$product->get_post(),
$user
);
$transaction = Learndash_Transaction_Model::find( $transaction_id );
$transaction = Transaction::find( $transaction_id );
if ( ! $transaction ) {
wp_send_json_error(
......
......@@ -91,6 +91,10 @@ function learndash_get_course_id( $id = null, $bypass_cb = false ) {
}
}
if ( learndash_get_post_type_slug( LDLMS_Post_Types::EXAM ) === $p->post_type ) {
return (int) get_post_meta( intval( $id ), 'exam_challenge_course_show', true );
}
return (int) get_post_meta( $id, 'course_id', true );
}
......@@ -1172,7 +1176,7 @@ function learndash_get_course_topics_per_page( $course_id = 0, $lesson_id = 0 )
$course_topics_per_page = 0;
// From the WP > Settings > Reading > Posts per page.
$course_topics_per_page = (int) get_option( 'posts_per_page' );
$course_topics_per_page = intval( get_option( 'posts_per_page' ) );
// From the LearnDash > Settings > General > Global Pagination Settings > Shortcodes & Widgets per page.
$course_topics_per_page = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'per_page', $course_topics_per_page );
......
......@@ -382,7 +382,7 @@ function learndash_course_get_single_parent_step( $course_id = 0, $step_id = 0,
}
}
return $parent_step_id;
return intval( $parent_step_id );
}
/**
......
<?php
/**
* Deprecated functions from LD 4.6.0.
* The functions will be removed in a later version.
*
* @since 4.6.0
*
* @package LearnDash\Deprecated
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! function_exists( 'learndash_the_breadcrumbs' ) ) {
/**
* Prints breadcrumbs output.
*
* Sames as learndash_get_breadcrumbs only it actually outputs escaped markup.
*
* @since 3.0.0
* @deprecated 4.6.0
*
* @global WP_Post $post Global post object.
*
* @param int|WP_Post|null $post `WP_Post` object. Default to global $post.
*
* @return void
*/
function learndash_the_breadcrumbs( $post = null ): void {
_deprecated_function( __FUNCTION__, '4.6.0', 'learndash_get_breadcrumbs' );
// Do nothing. It never worked properly according to the code inside it, and it was not used at the deprecation time.
}
}
......@@ -11,6 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
exit;
}
require_once __DIR__ . '/4.6.0/functions.php';
require_once __DIR__ . '/4.5.0/functions.php';
require_once __DIR__ . '/4.1.0/functions.php';
require_once __DIR__ . '/3.6.0/functions.php';
......
......@@ -80,7 +80,6 @@ if ( ! class_exists( 'Learndash_DTO' ) ) {
$property_type = $this->cast[ $property->getName() ];
if (
is_string( $this->cast[ $property->getName() ] ) &&
in_array(
$property_type,
array( 'bool', 'boolean', 'int', 'integer', 'float', 'double', 'string', 'array', 'object', 'null' ),
......
......@@ -1142,4 +1142,3 @@ function learndash_set_post_group_membership_groups( $post_id = 0, $groups_new =
}
}
}
......
.edit-post-visual-editor .wp-block span.learndash-inner-header{display:none}.edit-post-visual-editor .wp-block.has-child-selected span.learndash-inner-header,.edit-post-visual-editor .wp-block.is-selected span.learndash-inner-header{border-bottom:1px solid rgba(66,88,99,.4);display:block;font-size:.65em;opacity:.65}.edit-post-visual-editor div[data-type="learndash/ld-course-list"],.edit-post-visual-editor div[data-type="learndash/ld-lesson-list"],.edit-post-visual-editor div[data-type="learndash/ld-quiz-list"],.edit-post-visual-editor div[data-type="learndash/ld-topic-list"]{padding-top:10px}.edit-post-visual-editor div[data-type="learndash/ld-course-list"] .ld-course-list-items h2.ld-entry-title{clear:both;margin-bottom:0;margin-top:0;width:100%}#learndash_shortcodes_sections .learndash-block-error-message,.block-editor-block-inspector .learndash-block-error-message,.edit-post-visual-editor .learndash-block-error-message{color:red;display:block}.components-panel .learndash-block-controls-panel select[multiple]{height:max-content!important}.learndash-exam-question{background-color:transparent}.learndash-exam-question-empty-answers,.learndash-exam-question-empty-correct,.learndash-exam-question-empty-title{color:#ff2b2b;display:none;font-size:.8em;font-weight:700}.is-selected .learndash-exam-question-empty-title{display:inline-block;left:0;position:absolute}.is-selected .learndash-exam-question-empty-answers,.is-selected .learndash-exam-question-empty-correct{bottom:100%;display:inline-block;left:0;position:absolute}.learndash-exam-question-flexbox{display:flex;flex-direction:column-reverse;justify-content:flex-start;padding-bottom:30px}div.learndash-exam-question-answers-list{display:flex;flex-direction:column;gap:10px;justify-content:flex-start}div.learndash-exam-question-single-answer{display:flex;gap:5px}.ld_exam .learndash-exam-question-single-answer span{vertical-align:middle}div.learndash-exam-question-single-answer .learndash-exam-question-single-answer-delete{min-width:36px;visibility:hidden}.wp-block[data-type="learndash/ld-question-answers-block"].is-selected .learndash-exam-question-single-answer-delete{visibility:initial}span.learndash-exam-question-answer-toggle{margin-right:auto}span.learndash-exam-question-answer-input{display:inline-block;width:100%}button.learndash-exam-question-answer-toggle-button{justify-content:center;width:80px}div.wp-block[data-type="learndash/ld-exam-question"].has-child-selected div.wp-block[data-type="learndash/ld-correct-answer-message-block"],div.wp-block[data-type="learndash/ld-exam-question"].has-child-selected div.wp-block[data-type="learndash/ld-incorrect-answer-message-block"]{display:inherit;margin-top:1em}div.wp-block[data-type="learndash/ld-correct-answer-message-block"],div.wp-block[data-type="learndash/ld-incorrect-answer-message-block"]{display:none}div.wp-block[data-type="learndash/ld-exam"] .block-editor-block-list__layout .block-list-appender{display:flex;left:calc(50% - 24px);position:absolute}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-empty-answers,div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-empty-title{display:none}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-allow-validations.learndash-exam-question-empty-title{display:inline-block;left:0;position:absolute}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-allow-validations .learndash-exam-question-empty-answers{bottom:45px;display:inline-block;left:90px;position:absolute}
\ No newline at end of file
.edit-post-visual-editor .wp-block span.learndash-inner-header{display:none}.edit-post-visual-editor .wp-block.has-child-selected span.learndash-inner-header,.edit-post-visual-editor .wp-block.is-selected span.learndash-inner-header{border-bottom:1px solid #42586366;display:block;font-size:.65em;opacity:.65}.edit-post-visual-editor div[data-type="learndash/ld-course-list"],.edit-post-visual-editor div[data-type="learndash/ld-lesson-list"],.edit-post-visual-editor div[data-type="learndash/ld-quiz-list"],.edit-post-visual-editor div[data-type="learndash/ld-topic-list"]{padding-top:10px}.edit-post-visual-editor div[data-type="learndash/ld-course-list"] .ld-course-list-items h2.ld-entry-title{clear:both;margin-bottom:0;margin-top:0;width:100%}#learndash_shortcodes_sections .learndash-block-error-message,.block-editor-block-inspector .learndash-block-error-message,.edit-post-visual-editor .learndash-block-error-message{color:red;display:block}.components-panel .learndash-block-controls-panel select[multiple]{height:max-content!important}.learndash-exam-question{background-color:initial}.learndash-exam-question-empty-answers,.learndash-exam-question-empty-correct,.learndash-exam-question-empty-title{color:#ff2b2b;display:none;font-size:.8em;font-weight:700}.is-selected .learndash-exam-question-empty-title{display:inline-block;left:0;position:absolute}.is-selected .learndash-exam-question-empty-answers,.is-selected .learndash-exam-question-empty-correct{bottom:100%;display:inline-block;left:0;position:absolute}.learndash-exam-question-flexbox{display:flex;flex-direction:column-reverse;justify-content:flex-start;padding-bottom:30px}div.learndash-exam-question-answers-list{display:flex;flex-direction:column;gap:10px;justify-content:flex-start}div.learndash-exam-question-single-answer{display:flex;gap:5px}.ld_exam .learndash-exam-question-single-answer span{vertical-align:middle}div.learndash-exam-question-single-answer .learndash-exam-question-single-answer-delete{min-width:36px;visibility:hidden}.wp-block[data-type="learndash/ld-question-answers-block"].is-selected .learndash-exam-question-single-answer-delete{visibility:initial}span.learndash-exam-question-answer-toggle{margin-right:auto}span.learndash-exam-question-answer-input{display:inline-block;width:100%}button.learndash-exam-question-answer-toggle-button{justify-content:center;width:80px}div.wp-block[data-type="learndash/ld-exam-question"].has-child-selected div.wp-block[data-type="learndash/ld-correct-answer-message-block"],div.wp-block[data-type="learndash/ld-exam-question"].has-child-selected div.wp-block[data-type="learndash/ld-incorrect-answer-message-block"]{display:inherit;margin-top:1em}div.wp-block[data-type="learndash/ld-correct-answer-message-block"],div.wp-block[data-type="learndash/ld-incorrect-answer-message-block"]{display:none}div.wp-block[data-type="learndash/ld-exam"] .block-editor-block-list__layout .block-list-appender{display:flex;left:calc(50% - 24px);position:absolute}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-empty-answers,div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-empty-title{display:none}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-allow-validations.learndash-exam-question-empty-title{display:inline-block;left:0;position:absolute}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-allow-validations .learndash-exam-question-empty-answers{bottom:45px;display:inline-block;left:90px;position:absolute}
\ No newline at end of file
......
.edit-post-visual-editor .wp-block span.learndash-inner-header{display:none}.edit-post-visual-editor .wp-block.has-child-selected span.learndash-inner-header,.edit-post-visual-editor .wp-block.is-selected span.learndash-inner-header{border-bottom:1px solid rgba(66,88,99,.4);display:block;font-size:.65em;opacity:.65}.edit-post-visual-editor div[data-type="learndash/ld-course-list"],.edit-post-visual-editor div[data-type="learndash/ld-lesson-list"],.edit-post-visual-editor div[data-type="learndash/ld-quiz-list"],.edit-post-visual-editor div[data-type="learndash/ld-topic-list"]{padding-top:10px}.edit-post-visual-editor div[data-type="learndash/ld-course-list"] .ld-course-list-items h2.ld-entry-title{clear:both;margin-bottom:0;margin-top:0;width:100%}#learndash_shortcodes_sections .learndash-block-error-message,.block-editor-block-inspector .learndash-block-error-message,.edit-post-visual-editor .learndash-block-error-message{color:red;display:block}.components-panel .learndash-block-controls-panel select[multiple]{height:max-content!important}.learndash-exam-question{background-color:transparent}.learndash-exam-question-empty-answers,.learndash-exam-question-empty-correct,.learndash-exam-question-empty-title{color:#ff2b2b;display:none;font-size:.8em;font-weight:700}.is-selected .learndash-exam-question-empty-title{display:inline-block;position:absolute;right:0}.is-selected .learndash-exam-question-empty-answers,.is-selected .learndash-exam-question-empty-correct{bottom:100%;display:inline-block;position:absolute;right:0}.learndash-exam-question-flexbox{display:flex;flex-direction:column-reverse;justify-content:flex-start;padding-bottom:30px}div.learndash-exam-question-answers-list{display:flex;flex-direction:column;gap:10px;justify-content:flex-start}div.learndash-exam-question-single-answer{display:flex;gap:5px}.ld_exam .learndash-exam-question-single-answer span{vertical-align:middle}div.learndash-exam-question-single-answer .learndash-exam-question-single-answer-delete{min-width:36px;visibility:hidden}.wp-block[data-type="learndash/ld-question-answers-block"].is-selected .learndash-exam-question-single-answer-delete{visibility:initial}span.learndash-exam-question-answer-toggle{margin-left:auto}span.learndash-exam-question-answer-input{display:inline-block;width:100%}button.learndash-exam-question-answer-toggle-button{justify-content:center;width:80px}div.wp-block[data-type="learndash/ld-exam-question"].has-child-selected div.wp-block[data-type="learndash/ld-correct-answer-message-block"],div.wp-block[data-type="learndash/ld-exam-question"].has-child-selected div.wp-block[data-type="learndash/ld-incorrect-answer-message-block"]{display:inherit;margin-top:1em}div.wp-block[data-type="learndash/ld-correct-answer-message-block"],div.wp-block[data-type="learndash/ld-incorrect-answer-message-block"]{display:none}div.wp-block[data-type="learndash/ld-exam"] .block-editor-block-list__layout .block-list-appender{display:flex;position:absolute;right:calc(50% - 24px)}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-empty-answers,div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-empty-title{display:none}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-allow-validations.learndash-exam-question-empty-title{display:inline-block;position:absolute;right:0}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-allow-validations .learndash-exam-question-empty-answers{bottom:45px;display:inline-block;position:absolute;right:90px}
\ No newline at end of file
.edit-post-visual-editor .wp-block span.learndash-inner-header{display:none}.edit-post-visual-editor .wp-block.has-child-selected span.learndash-inner-header,.edit-post-visual-editor .wp-block.is-selected span.learndash-inner-header{border-bottom:1px solid #42586366;display:block;font-size:.65em;opacity:.65}.edit-post-visual-editor div[data-type="learndash/ld-course-list"],.edit-post-visual-editor div[data-type="learndash/ld-lesson-list"],.edit-post-visual-editor div[data-type="learndash/ld-quiz-list"],.edit-post-visual-editor div[data-type="learndash/ld-topic-list"]{padding-top:10px}.edit-post-visual-editor div[data-type="learndash/ld-course-list"] .ld-course-list-items h2.ld-entry-title{clear:both;margin-bottom:0;margin-top:0;width:100%}#learndash_shortcodes_sections .learndash-block-error-message,.block-editor-block-inspector .learndash-block-error-message,.edit-post-visual-editor .learndash-block-error-message{color:red;display:block}.components-panel .learndash-block-controls-panel select[multiple]{height:max-content!important}.learndash-exam-question{background-color:initial}.learndash-exam-question-empty-answers,.learndash-exam-question-empty-correct,.learndash-exam-question-empty-title{color:#ff2b2b;display:none;font-size:.8em;font-weight:700}.is-selected .learndash-exam-question-empty-title{display:inline-block;position:absolute;right:0}.is-selected .learndash-exam-question-empty-answers,.is-selected .learndash-exam-question-empty-correct{bottom:100%;display:inline-block;position:absolute;right:0}.learndash-exam-question-flexbox{display:flex;flex-direction:column-reverse;justify-content:flex-start;padding-bottom:30px}div.learndash-exam-question-answers-list{display:flex;flex-direction:column;gap:10px;justify-content:flex-start}div.learndash-exam-question-single-answer{display:flex;gap:5px}.ld_exam .learndash-exam-question-single-answer span{vertical-align:middle}div.learndash-exam-question-single-answer .learndash-exam-question-single-answer-delete{min-width:36px;visibility:hidden}.wp-block[data-type="learndash/ld-question-answers-block"].is-selected .learndash-exam-question-single-answer-delete{visibility:initial}span.learndash-exam-question-answer-toggle{margin-left:auto}span.learndash-exam-question-answer-input{display:inline-block;width:100%}button.learndash-exam-question-answer-toggle-button{justify-content:center;width:80px}div.wp-block[data-type="learndash/ld-exam-question"].has-child-selected div.wp-block[data-type="learndash/ld-correct-answer-message-block"],div.wp-block[data-type="learndash/ld-exam-question"].has-child-selected div.wp-block[data-type="learndash/ld-incorrect-answer-message-block"]{display:inherit;margin-top:1em}div.wp-block[data-type="learndash/ld-correct-answer-message-block"],div.wp-block[data-type="learndash/ld-incorrect-answer-message-block"]{display:none}div.wp-block[data-type="learndash/ld-exam"] .block-editor-block-list__layout .block-list-appender{display:flex;position:absolute;right:calc(50% - 24px)}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-empty-answers,div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-empty-title{display:none}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-allow-validations.learndash-exam-question-empty-title{display:inline-block;position:absolute;right:0}div.wp-block[data-type="learndash/ld-exam-question"] .learndash-exam-question-allow-validations .learndash-exam-question-empty-answers{bottom:45px;display:inline-block;position:absolute;right:90px}
\ No newline at end of file
......
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-server-side-render'), 'version' => 'a0a4378deacb323388da');
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-server-side-render'), 'version' => '14824272d727d345cb0c');
......
This diff could not be displayed because it is too large.
......@@ -2341,7 +2341,7 @@ function learndash_validate_groups( $group_ids = array() ) {
*
* @param int $group_id Optional. The ID of the group. Default 0.
*
* @return int The number of lessons per page or 0.
* @return int The number of courses per page or 0.
*/
function learndash_get_group_courses_per_page( $group_id = 0 ) {
$group_courses_per_page = 0;
......@@ -2445,7 +2445,7 @@ function learndash_get_group_courses_order( $group_id = 0 ) {
function learndash_get_group_courses_list( $group_id = 0, $query_args = array() ) {
global $course_pager_results;
$courses_ids = array();
$course_ids = array();
$group_id = absint( $group_id );
if ( ! empty( $group_id ) ) {
......@@ -2474,6 +2474,8 @@ function learndash_get_group_courses_list( $group_id = 0, $query_args = array()
}
$group_courses_order_args = learndash_get_group_courses_order( $group_id );
$offset = $query_args['offset'] ?? null;
$query_args = array(
'post_type' => learndash_get_post_type_slug( 'course' ),
'fields' => 'ids',
......@@ -2486,6 +2488,11 @@ function learndash_get_group_courses_list( $group_id = 0, $query_args = array()
),
),
);
if ( ! is_null( $offset ) ) {
$query_args['offset'] = $offset;
}
$query_args = array_merge( $query_args, $group_courses_order_args );
$query = new WP_Query( $query_args );
......
......@@ -1885,15 +1885,7 @@ function learndash_use_select2_lib_ajax_fetch() {
*/
function learndash_put_directory_index_file( $index_filename = '' ) {
if ( ! empty( $index_filename ) ) {
global $wp_filesystem;
// Initialize the WP filesystem, no more using 'file-put-contents' function.
if ( empty( $wp_filesystem ) ) {
require_once ABSPATH . '/wp-admin/includes/file.php';
WP_Filesystem();
}
$wp_filesystem->put_contents( $index_filename, '//LearnDash is THE Best LMS', FS_CHMOD_FILE );
file_put_contents( $index_filename, '//LearnDash is THE Best LMS' );
}
}
......@@ -2061,17 +2053,15 @@ add_filter( 'the_title', 'learndash_get_post_title_filter', 99, 2 );
*/
function learndash_stripe_addon_deprecation_notice() {
$class = 'notice notice-warning is-dismissible';
$title = 'LearnDash Stripe Addon Deprecation';
$title = __( 'LearnDash Stripe Addon Deprecation', 'learndash' );
$message = __( 'As of June 13, 2023 the Stripe plugin will no longer receive feature updates. We encourage you to switch over to Stripe Connect, however you can continue to utilize the plugin without upgrading. ', 'learndash' );
$links = __( '<a href="admin.php?page=learndash_lms_payments&section-payment=settings_stripe_connection">Setup Stripe Connect</a> - <a href="https://www.learndash.com/support/docs/core/settings/stripe-add-on-deprecation-faq/">Stripe Deprecation FAQ</a>', 'learndash' );
$user = wp_get_current_user();
if ( ! function_exists( 'is_plugin_active' ) ) {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if ( is_plugin_active( 'learndash-stripe/learndash-stripe.php' ) && in_array( 'administrator', $user->roles ) ) {
if ( is_plugin_active( 'learndash-stripe/learndash-stripe.php' ) && current_user_can( 'administrator' ) ) {
printf(
'<div class="%1$s">
<p><strong>%2$s</strong></p>
......@@ -2087,3 +2077,33 @@ function learndash_stripe_addon_deprecation_notice() {
}
add_action( 'admin_notices', 'learndash_stripe_addon_deprecation_notice' );
/**
* Shows admin notice warning if Licensing & Management plugin is not activated.
*
* @since 4.6.0
*
* @return void
*/
function learndash_hub_deactivated_notice() {
$class = 'notice notice-warning is-dismissible';
$title = __( 'LearnDash Licensing & Management', 'learndash' );
$message = __( 'Important! The LearnDash Licensing & Management plugin is missing. Please install and/or activate the plugin to ensure your LearnDash license works correctly. ', 'learndash' );
$links = __( '<a href="https://www.learndash.com/support/docs/core/learndash-licensing-and-management/">LearnDash Licensing Guide</a>', 'learndash' );
if ( ! learndash_is_learndash_hub_active() && current_user_can( 'administrator' ) ) {
printf(
'<div class="%1$s">
<p><strong>%2$s</strong></p>
<p>%3$s</p>
<p>%4$s</p>
</div>',
esc_attr( $class ),
esc_html( $title ),
esc_html( $message ),
wp_kses_post( $links )
);
}
}
add_action( 'admin_notices', 'learndash_hub_deactivated_notice' );
......
......@@ -664,6 +664,7 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
'activity_types' => '',
// An array of activity_status values to filter. Possible values 'NOT_STARTED' , 'IN_PROGRESS', 'COMPLETED'.
// This field is converted into a boolean value later (line 796).
'activity_status' => '',
// controls number of items to return for request. Pass 0 for ALL items.
......@@ -721,31 +722,37 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
$query_args_org = $query_args;
// Clean the group_ids arg.
if ( '' != $query_args['group_ids'] ) {
if ( '' !== $query_args['group_ids'] ) {
if ( ! is_array( $query_args['group_ids'] ) ) {
$query_args['group_ids'] = explode( ',', $query_args['group_ids'] );
}
$query_args['group_ids'] = array_map( 'trim', $query_args['group_ids'] );
} else {
$query_args['group_ids'] = array();
}
// Clean the course_ids arg.
if ( '' != $query_args['course_ids'] ) {
if ( '' !== $query_args['course_ids'] ) {
if ( ! is_array( $query_args['course_ids'] ) ) {
$query_args['course_ids'] = explode( ',', $query_args['course_ids'] );
}
$query_args['course_ids'] = array_map( 'trim', $query_args['course_ids'] );
} else {
$query_args['course_ids'] = array();
}
// Clean the post_ids arg.
if ( '' != $query_args['post_ids'] ) {
if ( '' !== $query_args['post_ids'] ) {
if ( ! is_array( $query_args['post_ids'] ) ) {
$query_args['post_ids'] = explode( ',', $query_args['post_ids'] );
}
$query_args['post_ids'] = array_map( 'trim', $query_args['post_ids'] );
} else {
$query_args['post_ids'] = array();
}
// Clean the post_types arg.
if ( '' != $query_args['post_types'] ) {
if ( '' !== $query_args['post_types'] ) {
if ( is_string( $query_args['post_types'] ) ) {
$query_args['post_types'] = explode( ',', $query_args['post_types'] );
}
......@@ -763,24 +770,30 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
$query_args['post_status'] = explode( ',', $query_args['post_status'] );
}
$query_args['post_status'] = array_map( 'trim', $query_args['post_status'] );
} else {
$query_args['post_status'] = array();
}
// Clean the user_ids arg.
if ( '' != $query_args['user_ids'] ) {
if ( '' !== $query_args['user_ids'] ) {
if ( ! is_array( $query_args['user_ids'] ) ) {
$query_args['user_ids'] = explode( ',', $query_args['user_ids'] );
}
$query_args['user_ids'] = array_map( 'trim', $query_args['user_ids'] );
} else {
$query_args['user_ids'] = array();
}
if ( '' != $query_args['activity_types'] ) {
if ( '' !== $query_args['activity_types'] ) {
if ( is_string( $query_args['activity_types'] ) ) {
$query_args['activity_types'] = explode( ',', $query_args['activity_types'] );
}
$query_args['activity_types'] = array_map( 'trim', $query_args['activity_types'] );
} else {
$query_args['activity_types'] = array();
}
if ( '' != $query_args['activity_status'] ) {
if ( '' !== $query_args['activity_status'] ) {
if ( is_string( $query_args['activity_status'] ) ) {
$query_args['activity_status'] = explode( ',', $query_args['activity_status'] );
}
......@@ -799,9 +812,22 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
$query_args['activity_status'][ $idx ] = '0';
}
}
} else {
$query_args['activity_status'] = array();
}
if ( ( '' == $query_args['group_ids'] ) && ( '' == $query_args['post_ids'] ) && ( '' == $query_args['user_ids'] ) ) {
// Sanitize values.
$query_args['user_ids'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['user_ids'] ) );
$query_args['post_ids'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['post_ids'] ) );
$query_args['group_ids'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['group_ids'] ) );
$query_args['course_ids'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['course_ids'] ) );
$query_args['post_status'] = array_unique( LDLMS_DB::escape_string_array( $query_args['post_status'] ) );
$query_args['post_types'] = array_unique( LDLMS_DB::escape_string_array( $query_args['post_types'] ) );
$query_args['activity_status'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['activity_status'] ) );
$query_args['activity_types'] = array_unique( LDLMS_DB::escape_string_array( $query_args['activity_types'] ) );
if ( empty( $query_args['group_ids'] ) && empty( $query_args['post_ids'] ) && empty( $query_args['user_ids'] ) ) {
// If no filters were provided.
// If the view user is a group leader we just return all the activity for all the managed users.
if ( learndash_is_group_leader_user( $current_user_id ) ) {
......@@ -811,7 +837,7 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
if ( ! learndash_is_group_leader_user( $current_user_id ) ) {
if ( learndash_is_admin_user( $current_user_id ) ) {
// If the group_ids parameter is passed in we need to determine the course_ids contains in the group_ids.
if ( '' != $query_args['group_ids'] ) {
if ( ! empty( $query_args['group_ids'] ) ) {
$query_args['post_ids'] = learndash_get_groups_courses_ids( $current_user_id, $query_args['group_ids'] );
}
} else {
......@@ -932,7 +958,6 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
}
if ( true !== $activity_status_has_null ) {
if ( ! empty( $query_args['activity_types'] ) ) {
$sql_str_where .= ' AND ld_user_activity.activity_type IN (' . "'" . implode( "','", $query_args['activity_types'] ) . "'" . ') ';
}
......@@ -941,7 +966,6 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
$sql_str_where .= ' AND ld_user_activity.activity_status IN (' . implode( ',', $query_args['activity_status'] ) . ') ';
}
} else {
if ( ! empty( $query_args['activity_status'] ) ) {
$sql_str_where .= ' AND (ld_user_activity.activity_status IS NULL OR ld_user_activity.activity_status IN (' . "'" . implode( "','", $query_args['activity_status'] ) . "'" . ') ) ';
} else {
......@@ -956,6 +980,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
if ( ( isset( $query_args['time_start_gmt_timestamp'] ) ) && ( ! empty( $query_args['time_start_gmt_timestamp'] ) ) && ( isset( $query_args['time_end_gmt_timestamp'] ) ) && ( ! empty( $query_args['time_end_gmt_timestamp'] ) ) ) {
$sql_str_where .= ' AND ( ';
// This is an old code. We will never get here. activity_status is converted to boolean before this. See line 795.
if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) {
$sql_str_where .= '(ld_user_activity.activity_started BETWEEN ' . $query_args['time_start_gmt_timestamp'] . ' AND ' . $query_args['time_end_gmt_timestamp'] . ') ';
$sql_str_where .= ' OR ';
......@@ -974,6 +1000,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
} elseif ( ( isset( $query_args['time_start_gmt_timestamp'] ) ) && ( ! empty( $query_args['time_start_gmt_timestamp'] ) ) ) {
$sql_str_where .= ' AND ( ';
// This is an old code. We will never get here. activity_status is converted to boolean before this. See line 795.
if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) {
$sql_str_where .= 'ld_user_activity.activity_started >= ' . $query_args['time_start_gmt_timestamp'] . ' OR ld_user_activity.activity_updated >= ' . $query_args['time_start_gmt_timestamp'];
}
......@@ -990,6 +1018,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
} elseif ( ( isset( $query_args['time_end_gmt_timestamp'] ) ) && ( ! empty( $query_args['time_end_gmt_timestamp'] ) ) ) {
$sql_str_where .= ' AND ( ';
// This is an old code. We will never get here. activity_status is converted to boolean before this. See line 795.
if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) {
$sql_str_where .= '(ld_user_activity.activity_started > 0 AND ld_user_activity.activity_started <= ' . $query_args['time_end_gmt_timestamp'] . ') OR ( ld_user_activity.activity_updated > 0 AND ld_user_activity.activity_updated <= ' . $query_args['time_end_gmt_timestamp'] . ')';
}
......
......@@ -597,7 +597,7 @@ function learndash_process_user_course_progress_update( $user_id = 0, $user_prog
if ( ! empty( $quiz_progress ) ) {
foreach ( $quiz_progress as $quiz_idx => $quiz_item ) {
if ( ( $quiz_item['quiz'] == $quiz_id ) && ( true === $quiz_item['pass'] ) ) {
if ( $quiz_item['quiz'] == $quiz_id && true === (bool) $quiz_item['pass'] ) {
$quiz_progress[ $quiz_idx ]['pass'] = false;
// We need to update the activity database records for this quiz_id.
......
......@@ -4,6 +4,23 @@ Changelog for Razorpay-PHP SDK. Follows [keepachangelog.com](https://keepachange
## Unreleased
## [2.8.5] - 2022-10-19
### Added
- Update [Request](https://github.com/WordPress/Requests/tree/v2.0.4) library to v2.0.4
## [2.8.4] - 2022-06-28
- New APIs for Third party validation (createUpi, validateVpa, fetchPaymentMethods)
- Update documentation
## [2.8.3] - 2022-04-29
- PHP v8.1 is officially supported
- Update [Request](https://github.com/WordPress/Requests/tree/v2.0.0) library to v2.0
- Improve documentation
- Add PHPUnit v9
## [2.8.2] - 2022-03-08
- Change name convention to standard in Unit test
......
<?php
/**
* Backwards compatibility layer for Requests.
*
* Allows for Composer to autoload the old PSR-0 classes via the custom autoloader.
* This prevents issues with _extending final classes_ (which was the previous solution).
*
* Please see the Changelog for the 2.0.4 release for upgrade notes.
*
* @package Requests
*
* @deprecated 2.0.4 Use the PSR-4 class names instead.
*/
define("REQUESTS_SILENCE_PSR0_DEPRECATIONS",true);
if (class_exists('WpOrg\Requests\Autoload') === false) {
require_once __DIR__. 'libs/Requests-2.0.4/src/Autoload.php';
}
WpOrg\Requests\Autoload::register();
\ No newline at end of file
<?php
// Include Requests only if not already defined
if (class_exists('Requests') === false)
if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS'))
{
require_once __DIR__.'/libs/Requests-1.8.0/library/Requests.php';
define('REQUESTS_SILENCE_PSR0_DEPRECATIONS', true);
}
if (class_exists('WpOrg\Requests\Autoload') === false)
{
require_once __DIR__.'/libs/Requests-2.0.4/src/Autoload.php';
}
try
{
Requests::register_autoloader();
WpOrg\Requests\Autoload::register();
if (version_compare(Requests::VERSION, '1.6.0') === -1)
{
......
......@@ -3,7 +3,7 @@
### Create an addon
```php
$api->subscription->fetch($subscriptionId)->createAddon(array('item' => array('name' => 'Extra Chair', 'amount' => 30000, 'currency' => 'INR'), 'quantity' => 2))
$api->subscription->fetch($subscriptionId)->createAddon(array('item' => array('name' => 'Extra Chair', 'amount' => 30000, 'currency' => 'INR'), 'quantity' => 2));
```
**Parameters:**
......@@ -11,8 +11,8 @@ $api->subscription->fetch($subscriptionId)->createAddon(array('item' => array('n
| Name | Type | Description |
|-------|-----------|--------------------------------------------------|
| subscriptionId* | boolean | The subscription ID to which the add-on is being added. |
| items* | array | Details of the add-on you want to create. |
| quantity* | integer | This specifies the number of units of the add-on to be charged to the customer. |
| items | array | All parameters listed [here](https://razorpay.com/docs/api/payments/subscriptions/#create-an-add-on) |
| quantity | integer | This specifies the number of units of the add-on to be charged to the customer. |
**Response:**
```json
......@@ -56,10 +56,10 @@ $api->addon->all($options);
| Name | Type | Description |
|-------|-----------|--------------------------------------------------|
| from | timestamp | timestamp after which the payments were created |
| to | timestamp | timestamp before which the payments were created |
| count | integer | number of payments to fetch (default: 10) |
| skip | integer | number of payments to be skipped (default: 0) |
| from | timestamp | timestamp after which the addons were created |
| to | timestamp | timestamp before which the addons were created |
| count | integer | number of addons to fetch (default: 10) |
| skip | integer | number of addons to be skipped (default: 0) |
**Response:**
```json
......@@ -110,6 +110,7 @@ $api->addon->fetch($addonId);
| Name | Type | Description |
|-----------------|---------|------------------------------------------------------------------------------|
| addonId* | string | addon id to be fetched |
**Response:**
```json
{
......@@ -150,9 +151,9 @@ $api->addon->fetch($addonId)->delete();
**Parameters:**
| Name | Type | Description |
|-----------------|---------|------------------------------------------------------------------------------|
| addonId* | string | addon id to be deleted |
| Name | Type | Description |
|-----------------|---------|--------------|
| addonId* | string | addon id to be deleted |
**Response:**
```json
......
......@@ -2,7 +2,7 @@
### Create customer
```php
$api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@razorpay.com','contact'=>'9123456780', 'fail_existing'=> '0', 'notes'=> array('notes_key_1'=> 'Tea, Earl Grey, Hot','notes_key_2'=> 'Tea, Earl Grey… decaf'));
$api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@razorpay.com','contact'=>'9123456780', 'fail_existing'=> '0', 'notes'=> array('notes_key_1'=> 'Tea, Earl Grey, Hot','notes_key_2'=> 'Tea, Earl Grey… decaf')));
```
**Parameters:**
......@@ -47,7 +47,7 @@ $api->order->create(array('amount' => 100, 'currency' => 'INR', 'receipt' => '1
| currency* | string | The currency of the payment (defaults to INR) |
| customerId* | string | The id of the customer to be fetched |
| receipt | string | Your system order reference id. |
| method* | string | Payment method used to make the registration transaction. Possible value is `card`. |
| method | string | Payment method used to make the registration transaction. Possible value is `card`. |
| token | array | All keys listed [here](https://razorpay.com/docs/api/recurring-payments/cards/authorization-transaction/#112-create-an-order) are supported |
| notes | array | A key-value pair |
......@@ -91,7 +91,7 @@ $api->subscription->createSubscriptionRegistration(array('customer'=>array('name
| Name | Type | Description |
|-----------------|---------|------------------------------------------------------------------------------|
| customer | array | Details of the customer to whom the registration link will be sent. |
| customer | array | All parameters listed [here](https://razorpay.com/docs/api/payments/recurring-payments/cards/create-authorization-transaction/#121-create-a-registration-link) are supported |
| type* | array | the value is `link`. |
| amount* | integer | The amount to be captured (should be equal to the authorized amount, in paise) |
| currency* | string | The currency of the payment (defaults to INR) |
......@@ -175,7 +175,7 @@ $api->order->create(array('amount' => '100', 'currency' => 'INR', 'customer_id'=
| amount* | integer | The amount to be captured (should be equal to the authorized amount, in paise) |
| currency* | string | The currency of the payment (defaults to INR) |
| customerId* | string | The id of the customer to be fetched |
| method* | string | Payment method used to make the registration transaction. Possible value is `card`. |
| method | string | Payment method used to make the registration transaction. Possible value is `card`. |
| receipt | string | Your system order reference id. |
| token | array | All keys listed [here](https://razorpay.com/docs/api/recurring-payments/cards/subsequent-payments/#31-create-an-order-to-charge-the-customer) are supported |
| notes | array | A key-value pair |
......@@ -213,7 +213,7 @@ $api->order->create(array('amount' => '100', 'currency' => 'INR', 'customer_id'=
## Create a recurring payment
```php
$api->payment->createRecurring(['email'=>'gaurav.kumar@example.com','contact'=>'9123456789','amount'=>100,'currency'=>'INR','order_id'=>$orderid,'customer_id'=>$customerId,'token'=>$tokenId,'recurring'=>'1','description'=>'Creating recurring payment for Gaurav Kumar', 'notes'=> array('key1'=> 'value3','key2'=> 'value2')));
$api->payment->createRecurring(array('email'=>'gaurav.kumar@example.com','contact'=>'9123456789','amount'=>100,'currency'=>'INR','order_id'=>$orderid,'customer_id'=>$customerId,'token'=>$tokenId,'recurring'=>'1','description'=>'Creating recurring payment for Gaurav Kumar', 'notes'=> array('key1'=> 'value3','key2'=> 'value2')));
```
**Parameters:**
......@@ -460,8 +460,23 @@ $api->card->fetch($cardId);
| Name | Type | Description |
|-----------------|---------|------------------------------------------------------------------------------|
| cardId* | string | card id to be fetched |
| cardId* | string | card id to be fetched |
```json
{
"id": "card_JXPULjlKqC5j0i",
"entity": "card",
"name": "Gaurav",
"last4": "4366",
"network": "Visa",
"type": "credit",
"issuer": "UTIB",
"international": false,
"emi": true,
"sub_type": "consumer",
"token_iin": null
}
```
-------------------------------------------------------------------------------------------------------
## Delete tokens
......
......@@ -2,7 +2,7 @@
### Create customer
```php
$api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@razorpay.com','contact'=>'9123456780','notes'=> array('notes_key_1'=> 'Tea, Earl Grey, Hot','notes_key_2'=> 'Tea, Earl Grey… decaf'));
$api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@razorpay.com','contact'=>'9123456780','notes'=> array('notes_key_1'=> 'Tea, Earl Grey, Hot','notes_key_2'=> 'Tea, Earl Grey… decaf')));
```
**Parameters:**
......@@ -12,6 +12,8 @@ $api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@raz
| name* | string | Name of the customer |
| email | string | Email of the customer |
| contact | string | Contact number of the customer |
| fail_existing | string | If a customer with the same details already exists, the request throws an exception by default. Possible value is `0` or `1`|
| gstin | string | Customer's GST number, if available. For example, 29XAbbA4369J1PA |
| notes | array | A key-value pair |
**Response:**
......@@ -35,7 +37,7 @@ $api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@raz
### Edit customer
```php
$api->customer->fetch($customerId)->edit(array('name' => 'Razorpay User', 'email' => 'customer@razorpay.com','notes'=> array('notes_key_1'=> 'Tea, Earl Grey, Hot','notes_key_2'=> 'Tea, Earl Grey… decaf')));
$api->customer->fetch($customerId)->edit(array('name' => 'Razorpay User', 'email' => 'customer@razorpay.com', 'contact' => '9999999999'));
```
**Parameters:**
......@@ -67,7 +69,7 @@ $api->customer->fetch($customerId)->edit(array('name' => 'Razorpay User', 'email
### Fetch all customer
```php
$api->customer->all($options)
$api->customer->all($options);
```
**Parameters:**
......@@ -104,7 +106,7 @@ $api->customer->all($options)
### Fetch a customer
```php
$api->customer->fetch($customerId)
$api->customer->fetch($customerId);
```
**Parameters:**
......
......@@ -2,7 +2,7 @@
### Create a fund account
```php
$api->fundAccount->create(array('customer_id'=>$customerId,'account_type'=>'bank_account','bank_account'=>array('name'=>'Gaurav Kumar', 'account_number'=>'11214311215411', 'ifsc'=>'HDFC0000053')))
$api->fundAccount->create(array('customer_id'=>$customerId,'account_type'=>'bank_account','bank_account'=>array('name'=>'Gaurav Kumar', 'account_number'=>'11214311215411', 'ifsc'=>'HDFC0000053')));
```
**Parameters:**
......@@ -11,23 +11,25 @@ $api->fundAccount->create(array('customer_id'=>$customerId,'account_type'=>'bank
|---------------|-------------|---------------------------------------------|
| customerId* | string | The id of the customer to be fetched |
| account_type* | string | The bank_account to be linked to the customer ID |
| bank_account* | array | A key-value pair |
| bank_account* | array | All keys listed [here](https://razorpay.com/docs/payments/customers/customer-fund-account-api/#create-a-fund-account) are supported |
**Response:**
```json
{
"id":"fa_Aa00000000001",
"entity":"fund_account",
"customer_id":"cust_Aa000000000001",
"account_type":"bank_account",
"bank_account":{
"name":"Gaurav Kumar",
"account_number":"11214311215411",
"ifsc":"HDFC0000053",
"bank_name":"HDFC Bank"
},
"active":true,
"created_at":1543650891
"id": "fa_JcXaLomo4ck5IY",
"entity": "fund_account",
"customer_id": "cust_JZse2vlC5nK9AQ",
"account_type": "bank_account",
"bank_account": {
"ifsc": "HDFC0000053",
"bank_name": "HDFC Bank",
"name": "Gaurav Kumar",
"notes": [],
"account_number": "11214311215411"
},
"batch_id": null,
"active": true,
"created_at": 1654154246
}
```
-------------------------------------------------------------------------------------------------------
......@@ -47,18 +49,26 @@ $api->fundAccount->all(array('customer_id'=>$customerIds));
**Response:**
```json
{
"id":"fa_Aa00000000001",
"entity":"fund_account",
"customer_id":"cust_Aa000000000001",
"account_type":"bank_account",
"bank_account":{
"name":"Gaurav Kumar",
"account_number":"11214311215411",
"ifsc":"HDFC0000053",
"bank_name":"HDFC Bank"
},
"active":true,
"created_at":1543650891
"entity": "collection",
"count": 2,
"items": [
{
"id": "fa_JcXYtecLkhW74k",
"entity": "fund_account",
"customer_id": "cust_JZse2vlC5nK9AQ",
"account_type": "bank_account",
"bank_account": {
"ifsc": "HDFC0000053",
"bank_name": "HDFC Bank",
"name": "Gaurav Kumar",
"notes": [],
"account_number": "11214311215411"
},
"batch_id": null,
"active": true,
"created_at": 1654154163
}
]
}
```
-------------------------------------------------------------------------------------------------------
......
......@@ -12,18 +12,28 @@ $api->Item->create(array("name" => "Book / English August","description" => "An
|-----------------|---------|------------------------------------------------------------------------------|
| name* | string | Name of the item. |
| description | string | A brief description of the item. |
| amount | integer | Amount of the order to be paid |
| currency | string | Currency of the order. Currently only `INR` is supported. |
| amount* | integer | Amount of the order to be paid |
| currency* | string | Currency of the order. Currently only `INR` is supported. |
**Response:**
```json
{
"id": "item_7Oxp4hmm6T4SCn",
"id": "item_JInaSLODeDUQiQ",
"active": true,
"name": "Book / English August",
"description": "An indian story, Booker prize winner.",
"amount": 20000,
"currency": "INR"
"unit_amount": 20000,
"currency": "INR",
"type": "invoice",
"unit": null,
"tax_inclusive": false,
"hsn_code": null,
"sac_code": null,
"tax_rate": null,
"tax_id": null,
"tax_group_id": null,
"created_at": 1649843796
}
```
......@@ -42,41 +52,49 @@ $api->Item->all($options);
| to | timestamp | timestamp before which the item were created |
| count | integer | number of item to fetch (default: 10) |
| skip | integer | number of item to be skipped (default: 0) |
| name | string | Name of the item. |
| description | string | A brief description of the item. |
| amount | integer | Amount of the order to be paid |
| currency | string | Currency of the order. Currently only `INR` is supported. |
| active | boolean | Possible values is `0` or `1` |
**Response:**
```json
{
"entity": "collection",
"count": 3,
"count": 2,
"items": [
{
"id": "item_7Oy8OMV6BdEAac",
"active": true,
"name": "Book / Ignited Minds",
"description": null,
"amount": 15000,
"currency": "INR"
},
{
"id": "item_7Oxp4hmm6T4SCn",
"id": "item_JInaSLODeDUQiQ",
"active": true,
"name": "Book / English August",
"description": "An indian story, Booker prize winner.",
"amount": 20000,
"currency": "INR"
"unit_amount": 20000,
"currency": "INR",
"type": "invoice",
"unit": null,
"tax_inclusive": false,
"hsn_code": null,
"sac_code": null,
"tax_rate": null,
"tax_id": null,
"tax_group_id": null,
"created_at": 1649843796
},
{
"id": "item_7OxoGnoxCuUKbo",
"active": true,
"name": "Book / English August",
"description": null,
"id": "item_JIPSg5L06yhHie",
"active": false,
"name": "Book / Ignited Minds - Updated name!",
"description": "New descirption too. :).",
"amount": 20000,
"currency": "INR"
"unit_amount": 20000,
"currency": "INR",
"type": "invoice",
"unit": null,
"tax_inclusive": false,
"hsn_code": null,
"sac_code": null,
"tax_rate": null,
"tax_id": null,
"tax_group_id": null,
"created_at": 1649758835
}
]
}
......@@ -96,12 +114,22 @@ $api->Item->fetch($itemId);
**Response:**
```json
{
"id": "item_7Oxp4hmm6T4SCn",
"id": "item_JInaSLODeDUQiQ",
"active": true,
"name": "Book / English August",
"description": "An indian story, Booker prize winner.",
"amount": 20000,
"currency": "INR"
"unit_amount": 20000,
"currency": "INR",
"type": "invoice",
"unit": null,
"tax_inclusive": false,
"hsn_code": null,
"sac_code": null,
"tax_rate": null,
"tax_id": null,
"tax_group_id": null,
"created_at": 1649843796
}
```
......@@ -127,12 +155,22 @@ $api->Item->fetch($itemId)->edit(array("name" => "Book / Ignited Minds - Updated
**Response:**
```json
{
"id": "item_7Oy8OMV6BdEAac",
"id": "item_JInaSLODeDUQiQ",
"active": true,
"name": "Book / Ignited Minds - Updated name!",
"description": "New descirption too. :)",
"amount": 15000,
"currency": "INR"
"description": "New descirption too. :).",
"amount": 20000,
"unit_amount": 20000,
"currency": "INR",
"type": "invoice",
"unit": null,
"tax_inclusive": false,
"hsn_code": null,
"sac_code": null,
"tax_rate": null,
"tax_id": null,
"tax_group_id": null,
"created_at": 1649843796
}
```
-------------------------------------------------------------------------------------------------------
......
......@@ -13,7 +13,8 @@ $api->order->create(array('receipt' => '123', 'amount' => 100, 'currency' => 'IN
| amount* | integer | Amount of the order to be paid |
| currency* | string | Currency of the order. Currently only `INR` is supported. |
| receipt | string | Your system order reference id. |
| notes | array | A key-value pair |
| notes | array | A key-value pair |
|partial_payment | boolean | Indicates whether customers can make partial payments on the invoice . Possible values: true - Customer can make partial payments. false (default) - Customer cannot make partial payments. |
**Response:**
......@@ -35,6 +36,44 @@ $api->order->create(array('receipt' => '123', 'amount' => 100, 'currency' => 'IN
```
-------------------------------------------------------------------------------------------------------
### Create order (Third party validation)
```php
$api->order->create(array('amount' => 500, 'receipt' => 'BILL13375649', 'method' => 'netbanking', 'currency' => 'INR', 'bank_account'=> array('account_number'=> '765432123456789','name'=> 'Gaurav Kumar','ifsc'=>'HDFC0000053')));
```
**Parameters:**
| Name | Type | Description |
|-----------------|---------|------------------------------------------------------------------------------|
| amount* | integer | Amount of the order to be paid |
| method | string | The payment method used to make the payment. If this parameter is not passed, customers will be able to make payments using both netbanking and UPI payment methods. Possible values is `netbanking` or `upi`|
| notes | array | A key-value pair |
| currency* | string | Currency of the order. Currently only `INR` is supported. |
| receipt | string | Your system order reference id. |
| notes | array | A key-value pair |
|bank_account | array | All keys listed [here](https://razorpay.com/docs/payments/third-party-validation/#step-2-create-an-order) are supported |
**Response:**
```json
{
"id": "order_GAWN9beXgaqRyO",
"entity": "order",
"amount": 500,
"amount_paid": 0,
"amount_due": 500,
"currency": "INR",
"receipt": "BILL13375649",
"offer_id": null,
"status": "created",
"attempts": 0,
"notes": [],
"created_at": 1573044247
}
```
-------------------------------------------------------------------------------------------------------
### Fetch all orders
......@@ -52,6 +91,7 @@ $api->order->all($options);
| skip | integer | number of orders to be skipped (default: 0) |
| authorized | boolean | Orders for which orders are currently in authorized state. |
| receipt | string | Orders with the provided value for receipt. |
| expand[] | string | Used to retrieve additional information about the payment. Possible value is `payments`,`payments.card`,`transfers` or `virtual_account` |
**Response:**
......@@ -94,17 +134,21 @@ $api->order->fetch($orderId);
```json
{
"id":"order_DaaS6LOUAASb7Y",
"entity":"order",
"amount":2200,
"amount_paid":0,
"amount_due":2200,
"currency":"INR",
"receipt":"Receipt #211",
"status":"attempted",
"attempts":1,
"notes":[],
"created_at":1572505143
"id": "order_IXnOAMw6SSqKvN",
"entity": "order",
"amount": 100,
"amount_paid": 0,
"amount_due": 100,
"currency": "INR",
"receipt": "Receipt no. 1",
"offer_id": null,
"status": "created",
"attempts": 0,
"notes": {
"notes_key_1": "Tea, Earl Grey, Hot",
"notes_key_2": "Tea, Earl Grey… decaf."
},
"created_at": 1639581113
}
```
-------------------------------------------------------------------------------------------------------
......
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.