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 @@ ...@@ -554,6 +554,10 @@
554 .learndash-hub .col-span-2 { 554 .learndash-hub .col-span-2 {
555 grid-column: span 2/span 2; 555 grid-column: span 2/span 2;
556 } 556 }
557 .learndash-hub .mx-auto {
558 margin-left: auto;
559 margin-right: auto;
560 }
557 .learndash-hub .mt-8 { 561 .learndash-hub .mt-8 {
558 margin-top: 2rem; 562 margin-top: 2rem;
559 } 563 }
...@@ -647,6 +651,9 @@ ...@@ -647,6 +651,9 @@
647 .learndash-hub .h-2 { 651 .learndash-hub .h-2 {
648 height: 0.5rem; 652 height: 0.5rem;
649 } 653 }
654 .learndash-hub .h-auto {
655 height: auto;
656 }
650 .learndash-hub .h-8 { 657 .learndash-hub .h-8 {
651 height: 2rem; 658 height: 2rem;
652 } 659 }
...@@ -680,6 +687,9 @@ ...@@ -680,6 +687,9 @@
680 .learndash-hub .w-450 { 687 .learndash-hub .w-450 {
681 width: 450px; 688 width: 450px;
682 } 689 }
690 .learndash-hub .w-5\/12 {
691 width: 41.666667%;
692 }
683 .learndash-hub .w-8 { 693 .learndash-hub .w-8 {
684 width: 2rem; 694 width: 2rem;
685 } 695 }
...@@ -807,6 +817,9 @@ ...@@ -807,6 +817,9 @@
807 .learndash-hub .rounded { 817 .learndash-hub .rounded {
808 border-radius: 0.25rem; 818 border-radius: 0.25rem;
809 } 819 }
820 .learndash-hub .rounded-3xl {
821 border-radius: 1.5rem;
822 }
810 .learndash-hub .rounded-full { 823 .learndash-hub .rounded-full {
811 border-radius: 9999px; 824 border-radius: 9999px;
812 } 825 }
...@@ -857,6 +870,10 @@ ...@@ -857,6 +870,10 @@
857 --tw-border-opacity: 1; 870 --tw-border-opacity: 1;
858 border-color: rgb(161 98 7/var(--tw-border-opacity)); 871 border-color: rgb(161 98 7/var(--tw-border-opacity));
859 } 872 }
873 .learndash-hub .border-white {
874 --tw-border-opacity: 1;
875 border-color: rgb(255 255 255/var(--tw-border-opacity));
876 }
860 .learndash-hub .bg-white { 877 .learndash-hub .bg-white {
861 --tw-bg-opacity: 1; 878 --tw-bg-opacity: 1;
862 background-color: rgb(255 255 255/var(--tw-bg-opacity)); 879 background-color: rgb(255 255 255/var(--tw-bg-opacity));
...@@ -877,6 +894,10 @@ ...@@ -877,6 +894,10 @@
877 --tw-bg-opacity: 1; 894 --tw-bg-opacity: 1;
878 background-color: rgb(240 249 255/var(--tw-bg-opacity)); 895 background-color: rgb(240 249 255/var(--tw-bg-opacity));
879 } 896 }
897 .learndash-hub .bg-royal-blue {
898 --tw-bg-opacity: 1;
899 background-color: rgb(35 90 243/var(--tw-bg-opacity));
900 }
880 .learndash-hub .bg-gray-300 { 901 .learndash-hub .bg-gray-300 {
881 --tw-bg-opacity: 1; 902 --tw-bg-opacity: 1;
882 background-color: rgb(209 213 219/var(--tw-bg-opacity)); 903 background-color: rgb(209 213 219/var(--tw-bg-opacity));
...@@ -919,6 +940,10 @@ ...@@ -919,6 +940,10 @@
919 padding-top: 1.25rem; 940 padding-top: 1.25rem;
920 padding-bottom: 1.25rem; 941 padding-bottom: 1.25rem;
921 } 942 }
943 .learndash-hub .px-8 {
944 padding-left: 2rem;
945 padding-right: 2rem;
946 }
922 .learndash-hub .pt-0\.5 { 947 .learndash-hub .pt-0\.5 {
923 padding-top: 0.125rem; 948 padding-top: 0.125rem;
924 } 949 }
...@@ -940,8 +965,14 @@ ...@@ -940,8 +965,14 @@
940 .learndash-hub .pl-4 { 965 .learndash-hub .pl-4 {
941 padding-left: 1rem; 966 padding-left: 1rem;
942 } 967 }
943 .learndash-hub .pr-4 { 968 .learndash-hub .pt-6 {
944 padding-right: 1rem; 969 padding-top: 1.5rem;
970 }
971 .learndash-hub .pb-6 {
972 padding-bottom: 1.5rem;
973 }
974 .learndash-hub .pt-10 {
975 padding-top: 2.5rem;
945 } 976 }
946 .learndash-hub .pb-1 { 977 .learndash-hub .pb-1 {
947 padding-bottom: 0.25rem; 978 padding-bottom: 0.25rem;
...@@ -1038,6 +1069,10 @@ ...@@ -1038,6 +1069,10 @@
1038 --tw-text-opacity: 1; 1069 --tw-text-opacity: 1;
1039 color: rgb(255 255 255/var(--tw-text-opacity)); 1070 color: rgb(255 255 255/var(--tw-text-opacity));
1040 } 1071 }
1072 .learndash-hub .text-blue-700 {
1073 --tw-text-opacity: 1;
1074 color: rgb(29 78 216/var(--tw-text-opacity));
1075 }
1041 .learndash-hub .text-gray-700 { 1076 .learndash-hub .text-gray-700 {
1042 --tw-text-opacity: 1; 1077 --tw-text-opacity: 1;
1043 color: rgb(55 65 81/var(--tw-text-opacity)); 1078 color: rgb(55 65 81/var(--tw-text-opacity));
...@@ -1046,6 +1081,13 @@ ...@@ -1046,6 +1081,13 @@
1046 --tw-text-opacity: 1; 1081 --tw-text-opacity: 1;
1047 color: rgb(79 70 229/var(--tw-text-opacity)); 1082 color: rgb(79 70 229/var(--tw-text-opacity));
1048 } 1083 }
1084 .learndash-hub .underline {
1085 -webkit-text-decoration-line: underline;
1086 text-decoration-line: underline;
1087 }
1088 .learndash-hub .underline-offset-2 {
1089 text-underline-offset: 2px;
1090 }
1049 .learndash-hub .opacity-0 { 1091 .learndash-hub .opacity-0 {
1050 opacity: 0; 1092 opacity: 0;
1051 } 1093 }
...@@ -1550,12 +1592,21 @@ ...@@ -1550,12 +1592,21 @@
1550 .learndash-hub .lg\:block { 1592 .learndash-hub .lg\:block {
1551 display: block; 1593 display: block;
1552 } 1594 }
1595 .learndash-hub .lg\:grid {
1596 display: grid;
1597 }
1553 .learndash-hub .lg\:w-4\/12 { 1598 .learndash-hub .lg\:w-4\/12 {
1554 width: 33.333333%; 1599 width: 33.333333%;
1555 } 1600 }
1556 .learndash-hub .lg\:w-2\/12 { 1601 .learndash-hub .lg\:w-2\/12 {
1557 width: 16.666667%; 1602 width: 16.666667%;
1558 } 1603 }
1604 .learndash-hub .lg\:grid-cols-3 {
1605 grid-template-columns: repeat(3, minmax(0, 1fr));
1606 }
1607 .learndash-hub .lg\:gap-x-8 {
1608 column-gap: 2rem;
1609 }
1559 } 1610 }
1560 @media (min-width: 1280px) { 1611 @media (min-width: 1280px) {
1561 .learndash-hub .xl\:block { 1612 .learndash-hub .xl\:block {
...@@ -1579,6 +1630,13 @@ ...@@ -1579,6 +1630,13 @@
1579 width: 16.666667%; 1630 width: 16.666667%;
1580 } 1631 }
1581 } 1632 }
1633 .learndash-hub #upsale-notification {
1634 background-image: url("../img/add-ons-graphic.png");
1635 background-repeat: no-repeat;
1636 background-position-y: bottom;
1637 background-position-x: 99%;
1638 background-size: 62px auto;
1639 }
1582 .learndash-hub .hub-button i.fa-spin { 1640 .learndash-hub .hub-button i.fa-spin {
1583 display: none; 1641 display: none;
1584 } 1642 }
......
...@@ -43,6 +43,7 @@ class Base { ...@@ -43,6 +43,7 @@ class Base {
43 'method' => $method, 43 'method' => $method,
44 'headers' => $this->get_auth_headers(), 44 'headers' => $this->get_auth_headers(),
45 'body' => $args, 45 'body' => $args,
46 'timeout' => 30
46 ) 47 )
47 ); 48 );
48 49
......
...@@ -5,13 +5,13 @@ ...@@ -5,13 +5,13 @@
5 * Description: LearnDash Licensing & Management allows you to connect your license and handles all updates related to the LearnDash family of products. 5 * Description: LearnDash Licensing & Management allows you to connect your license and handles all updates related to the LearnDash family of products.
6 * Author: LearnDash 6 * Author: LearnDash
7 * Author URI: https://learndash.com 7 * Author URI: https://learndash.com
8 * Version: 1.1.6 8 * Version: 1.2
9 * Text Domain: learndash-hub 9 * Text Domain: learndash-hub
10 * Domain Path: includes/languages/ 10 * Domain Path: includes/languages/
11 * Network: true 11 * Network: true
12 */ 12 */
13 13
14 const HUB_VERSION = '1.1.6'; 14 const HUB_VERSION = '1.2';
15 const HUB_DB_VERSION = '1.0'; 15 const HUB_DB_VERSION = '1.0';
16 const HUB_SLUG = 'learndash-hub/learndash-hub.php'; 16 const HUB_SLUG = 'learndash-hub/learndash-hub.php';
17 define( 'HUB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); 17 define( 'HUB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
......
...@@ -25,7 +25,7 @@ class API extends Base { ...@@ -25,7 +25,7 @@ class API extends Base {
25 /** 25 /**
26 * Trigger a license verification. 26 * Trigger a license verification.
27 * 27 *
28 * @param string $email The email that registered with LearnDash. 28 * @param string $email The email that registered with LearnDash.
29 * @param string $license_key The license key provided when registered. 29 * @param string $license_key The license key provided when registered.
30 * @param bool $force_check Force check the license status. 30 * @param bool $force_check Force check the license status.
31 * 31 *
......
...@@ -243,6 +243,38 @@ class Projects extends Base { ...@@ -243,6 +243,38 @@ class Projects extends Base {
243 } 243 }
244 244
245 /** 245 /**
246 * @param array $api_data The get_projects API data.
247 *
248 * @return array
249 */
250 public function get_premium_projects( array $api_data ): array {
251 $installed_projects = $this->get_installed_projects( $api_data );
252 foreach ( $api_data as $slug => $item ) {
253 if ( $item['product_type'] !== 'premium' ) {
254 unset( $api_data[ $slug ] );
255 continue;
256 }
257
258 // now check if the plugins is installed.
259 $api_data[ $slug ]['is_installed'] = isset( $installed_projects[ $slug ] );
260 }
261
262 return $api_data;
263 }
264
265 /**
266 * @return array
267 */
268 public function get_aff_projects() {
269 $projects = $this->do_api_request( '/repo/aff_plugins' );
270 if ( ! is_array( $projects ) ) {
271 return array();
272 }
273
274 return $projects;
275 }
276
277 /**
246 * Return the projects that has not installed. 278 * Return the projects that has not installed.
247 * 279 *
248 * @param array $api_data The get_projects API data. 280 * @param array $api_data The get_projects API data.
...@@ -253,6 +285,11 @@ class Projects extends Base { ...@@ -253,6 +285,11 @@ class Projects extends Base {
253 $installed_projects = $this->get_installed_projects( $api_data ); 285 $installed_projects = $this->get_installed_projects( $api_data );
254 286
255 foreach ( $api_data as $slug => $item ) { 287 foreach ( $api_data as $slug => $item ) {
288 if ( $item['product_type'] !== 'standard' ) {
289 unset( $api_data[ $slug ] );
290 continue;
291 }
292
256 if ( isset( $installed_projects[ $slug ] ) ) { 293 if ( isset( $installed_projects[ $slug ] ) ) {
257 unset( $api_data[ $slug ] ); 294 unset( $api_data[ $slug ] );
258 } 295 }
...@@ -264,8 +301,8 @@ class Projects extends Base { ...@@ -264,8 +301,8 @@ class Projects extends Base {
264 /** 301 /**
265 * Look up a project object, this is use when pulling the plugin info. 302 * Look up a project object, this is use when pulling the plugin info.
266 * 303 *
267 * @param string $slug The project slug, eg: sfwd-lms. 304 * @param string $slug The project slug, eg: sfwd-lms.
268 * @param array $api_data The plugins data, pulling from the api. 305 * @param array $api_data The plugins data, pulling from the api.
269 * 306 *
270 * @return false|array Return the project data as an array, or false if nothing found. 307 * @return false|array Return the project data as an array, or false if nothing found.
271 */ 308 */
...@@ -277,14 +314,20 @@ class Projects extends Base { ...@@ -277,14 +314,20 @@ class Projects extends Base {
277 314
278 $projects = $this->get_projects( $api_data ); 315 $projects = $this->get_projects( $api_data );
279 316
280 return $projects[ $slug ] ?? false; 317 $project = $projects[ $slug ] ?? false;
318 if ( false === $project ) {
319 $premiums = $this->get_premium_projects( $api_data );
320 $project = $premiums[ $slug ] ?? false;
321 }
322
323 return $project;
281 } 324 }
282 325
283 /** 326 /**
284 * Install a project 327 * Install a project
285 * 328 *
286 * @param string $slug The plugin folder name. 329 * @param string $slug The plugin folder name.
287 * @param bool $is_update Update instead of install. 330 * @param bool $is_update Update instead of install.
288 * 331 *
289 * @return bool|\WP_Error 332 * @return bool|\WP_Error
290 */ 333 */
...@@ -396,7 +439,7 @@ class Projects extends Base { ...@@ -396,7 +439,7 @@ class Projects extends Base {
396 /** 439 /**
397 * Get the plugin slug from folder name. 440 * Get the plugin slug from folder name.
398 * 441 *
399 * @param string $slug The plugin folder. 442 * @param string $slug The plugin folder.
400 * @param string $plugin_name The plugin name. 443 * @param string $plugin_name The plugin name.
401 * 444 *
402 * @return string|bool 445 * @return string|bool
......
...@@ -16,7 +16,6 @@ class Main_Controller extends Controller { ...@@ -16,7 +16,6 @@ class Main_Controller extends Controller {
16 */ 16 */
17 public function __construct() { 17 public function __construct() {
18 parent::__construct(); 18 parent::__construct();
19
20 $this->register_page( 19 $this->register_page(
21 __( 'Add-ons', 'learndash_hub' ), 20 __( 'Add-ons', 'learndash_hub' ),
22 'learndash-hub', 21 'learndash-hub',
......
...@@ -99,8 +99,8 @@ class Projects_Controller extends Controller { ...@@ -99,8 +99,8 @@ class Projects_Controller extends Controller {
99 /** 99 /**
100 * When we download a project, the auth header should be added. 100 * When we download a project, the auth header should be added.
101 * 101 *
102 * @param array $parsed_args An array of HTTP request arguments. 102 * @param array $parsed_args An array of HTTP request arguments.
103 * @param string $url The request URL. 103 * @param string $url The request URL.
104 * 104 *
105 * @return array 105 * @return array
106 */ 106 */
...@@ -225,18 +225,18 @@ class Projects_Controller extends Controller { ...@@ -225,18 +225,18 @@ class Projects_Controller extends Controller {
225 225
226 public function process_plugin_update( $upgrader_object, $options ) { 226 public function process_plugin_update( $upgrader_object, $options ) {
227 if ( 227 if (
228 ! isset( $options['action'] ) || 'update' !== $options['action'] || 228 ! isset( $options['action'] ) || 'update' !== $options['action'] ||
229 ! isset( $options['type'] ) || 'plugin' !== $options['type'] || 229 ! isset( $options['type'] ) || 'plugin' !== $options['type'] ||
230 ! isset( $options['plugins'] ) || ! is_array( $options['plugins'] ) 230 ! isset( $options['plugins'] ) || ! is_array( $options['plugins'] )
231 ) { 231 ) {
232 return; 232 return;
233 } 233 }
234 234
235 foreach ( $options['plugins'] as $plugin ) { 235 foreach ( $options['plugins'] as $plugin ) {
236 if ( 236 if (
237 strpos( $plugin, 'learndash' ) !== false || 237 strpos( $plugin, 'learndash' ) !== false ||
238 strpos( $plugin, 'ld' ) !== false || 238 strpos( $plugin, 'ld' ) !== false ||
239 strpos( $plugin, 'sfwd-lms' ) !== false 239 strpos( $plugin, 'sfwd-lms' ) !== false
240 ) { 240 ) {
241 delete_site_option( 'learndash_hub_fetch_projects' ); 241 delete_site_option( 'learndash_hub_fetch_projects' );
242 delete_site_option( 'learndash_hub_update_plugins_cache' ); 242 delete_site_option( 'learndash_hub_update_plugins_cache' );
...@@ -248,9 +248,9 @@ class Projects_Controller extends Controller { ...@@ -248,9 +248,9 @@ class Projects_Controller extends Controller {
248 /** 248 /**
249 * Add our plugin information so it can be retrieved via the function plugins_api 249 * Add our plugin information so it can be retrieved via the function plugins_api
250 * 250 *
251 * @param object $res Default update-info provided by WordPress. 251 * @param object $res Default update-info provided by WordPress.
252 * @param string $action What action was requested (theme or plugin?). 252 * @param string $action What action was requested (theme or plugin?).
253 * @param object $args Details used to build default update-info. 253 * @param object $args Details used to build default update-info.
254 * 254 *
255 * @return object 255 * @return object
256 */ 256 */
...@@ -261,9 +261,9 @@ class Projects_Controller extends Controller { ...@@ -261,9 +261,9 @@ class Projects_Controller extends Controller {
261 261
262 $slug = $args->slug; 262 $slug = $args->slug;
263 if ( 263 if (
264 stristr( $slug, 'learndash' ) === false && 264 stristr( $slug, 'learndash' ) === false &&
265 stristr( $slug, 'ld' ) === false && 265 stristr( $slug, 'ld' ) === false &&
266 'sfwd-lms' !== $slug 266 'sfwd-lms' !== $slug
267 ) { 267 ) {
268 return $res; 268 return $res;
269 } 269 }
...@@ -333,12 +333,14 @@ class Projects_Controller extends Controller { ...@@ -333,12 +333,14 @@ class Projects_Controller extends Controller {
333 'projects' => $this->get_service()->get_projects( $api_data ), 333 'projects' => $this->get_service()->get_projects( $api_data ),
334 'installedProjects' => $this->get_service()->get_installed_projects( $api_data ), 334 'installedProjects' => $this->get_service()->get_installed_projects( $api_data ),
335 'categories' => $this->get_service()->get_projects_category( $api_data ), 335 'categories' => $this->get_service()->get_projects_category( $api_data ),
336 'premiumProjects' => $this->get_service()->get_premium_projects( $api_data ),
337 'affProjects' => $this->get_service()->get_aff_projects(),
336 'nonces' => array( 338 'nonces' => array(
337 'handle_plugin' => wp_create_nonce( 'ld_hub_plugin_handle' ), 339 'handle_plugin' => wp_create_nonce( 'ld_hub_plugin_handle' ),
338 'refresh_repo' => wp_create_nonce( 'ld_hub_refresh_repo' ), 340 'refresh_repo' => wp_create_nonce( 'ld_hub_refresh_repo' ),
339 'bulk_action' => wp_create_nonce( 'ld_hub_bulk_action' ), 341 'bulk_action' => wp_create_nonce( 'ld_hub_bulk_action' ),
340 ), 342 ),
341 'adminUrl' => admin_url( 'admin.php?page=learndash-hub-projects' ), 343 'adminUrl' => admin_url( 'admin.php?page=learndash-hub' ),
342 'externalUrl' => admin_url( 'plugin-install.php?s=learndash&tab=search&type=tag' ), 344 'externalUrl' => admin_url( 'plugin-install.php?s=learndash&tab=search&type=tag' ),
343 ); 345 );
344 } 346 }
......
...@@ -13,7 +13,7 @@ use LearnDash\Hub\Traits\Permission; ...@@ -13,7 +13,7 @@ use LearnDash\Hub\Traits\Permission;
13 */ 13 */
14 class Settings_Controller extends Controller { 14 class Settings_Controller extends Controller {
15 use Permission; 15 use Permission;
16 use License; 16 use License;
17 17
18 /** 18 /**
19 * Constructor. 19 * Constructor.
......
...@@ -11,7 +11,7 @@ use LearnDash\Hub\Traits\Permission; ...@@ -11,7 +11,7 @@ use LearnDash\Hub\Traits\Permission;
11 */ 11 */
12 class Signin_Controller extends Controller { 12 class Signin_Controller extends Controller {
13 use Permission; 13 use Permission;
14 use License; 14 use License;
15 15
16 /** 16 /**
17 * Constructor. 17 * Constructor.
......
...@@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) { ...@@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
22 22
23 require_once __DIR__ . '/composer/autoload_real.php'; 23 require_once __DIR__ . '/composer/autoload_real.php';
24 24
25 return ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94::getLoader(); 25 return ComposerAutoloaderInit616ffd2a8b5ef609b9d408d9c3795d9b::getLoader();
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 2
3 // autoload_real.php @generated by Composer 3 // autoload_real.php @generated by Composer
4 4
5 class ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94 5 class ComposerAutoloaderInit616ffd2a8b5ef609b9d408d9c3795d9b
6 { 6 {
7 private static $loader; 7 private static $loader;
8 8
...@@ -22,12 +22,12 @@ class ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94 ...@@ -22,12 +22,12 @@ class ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94
22 return self::$loader; 22 return self::$loader;
23 } 23 }
24 24
25 spl_autoload_register(array('ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94', 'loadClassLoader'), true, true); 25 spl_autoload_register(array('ComposerAutoloaderInit616ffd2a8b5ef609b9d408d9c3795d9b', 'loadClassLoader'), true, true);
26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
27 spl_autoload_unregister(array('ComposerAutoloaderInite01566f68a7cc8ff067efbfef77d4c94', 'loadClassLoader')); 27 spl_autoload_unregister(array('ComposerAutoloaderInit616ffd2a8b5ef609b9d408d9c3795d9b', 'loadClassLoader'));
28 28
29 require __DIR__ . '/autoload_static.php'; 29 require __DIR__ . '/autoload_static.php';
30 call_user_func(\Composer\Autoload\ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94::getInitializer($loader)); 30 call_user_func(\Composer\Autoload\ComposerStaticInit616ffd2a8b5ef609b9d408d9c3795d9b::getInitializer($loader));
31 31
32 $loader->register(true); 32 $loader->register(true);
33 33
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 4
5 namespace Composer\Autoload; 5 namespace Composer\Autoload;
6 6
7 class ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94 7 class ComposerStaticInit616ffd2a8b5ef609b9d408d9c3795d9b
8 { 8 {
9 public static $classMap = array ( 9 public static $classMap = array (
10 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 10 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
...@@ -35,7 +35,7 @@ class ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94 ...@@ -35,7 +35,7 @@ class ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94
35 public static function getInitializer(ClassLoader $loader) 35 public static function getInitializer(ClassLoader $loader)
36 { 36 {
37 return \Closure::bind(function () use ($loader) { 37 return \Closure::bind(function () use ($loader) {
38 $loader->classMap = ComposerStaticInite01566f68a7cc8ff067efbfef77d4c94::$classMap; 38 $loader->classMap = ComposerStaticInit616ffd2a8b5ef609b9d408d9c3795d9b::$classMap;
39 39
40 }, null, ClassLoader::class); 40 }, null, ClassLoader::class);
41 } 41 }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
3 'name' => 'learndash/supports', 3 'name' => 'learndash/supports',
4 'pretty_version' => 'dev-master', 4 'pretty_version' => 'dev-master',
5 'version' => 'dev-master', 5 'version' => 'dev-master',
6 'reference' => 'd977bbbdc8e24c3d6cd1f49a84af90ff8fcc4373', 6 'reference' => '07b8d1408e2e5fcf09992c148fac5a4950a4769c',
7 'type' => 'library', 7 'type' => 'library',
8 'install_path' => __DIR__ . '/../../', 8 'install_path' => __DIR__ . '/../../',
9 'aliases' => array(), 9 'aliases' => array(),
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 'learndash/supports' => array( 13 'learndash/supports' => array(
14 'pretty_version' => 'dev-master', 14 'pretty_version' => 'dev-master',
15 'version' => 'dev-master', 15 'version' => 'dev-master',
16 'reference' => 'd977bbbdc8e24c3d6cd1f49a84af90ff8fcc4373', 16 'reference' => '07b8d1408e2e5fcf09992c148fac5a4950a4769c',
17 'type' => 'library', 17 'type' => 'library',
18 'install_path' => __DIR__ . '/../../', 18 'install_path' => __DIR__ . '/../../',
19 'aliases' => array(), 19 'aliases' => array(),
......
1 .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 ...\ No newline at end of file
1 .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 ...\ No newline at end of file
......
1 .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 ...\ No newline at end of file
1 .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 ...\ No newline at end of file
......
1 /*! This file is part of the LearnDash plugin and was generated automatically */ 1 /*! This file is part of the LearnDash plugin and was generated automatically */
2 #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} 2 #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}
......
1 /*! This file is part of the LearnDash plugin and was generated automatically */ 1 /*! This file is part of the LearnDash plugin and was generated automatically */
2 #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} 2 #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}
......
1 /*! 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 ...\ No newline at end of file
1 /*! 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 ...\ No newline at end of file
......
1 /*! 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 ...\ No newline at end of file
1 /*! 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 ...\ No newline at end of file
......
1 .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 ...\ No newline at end of file
1 .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 ...\ No newline at end of file
......
1 .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 ...\ No newline at end of file
1 .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 ...\ No newline at end of file
......
1 /* 1 /*
2 ! tailwindcss v3.1.5 | MIT License | https://tailwindcss.com 2 ! tailwindcss v3.3.0 | MIT License | https://tailwindcss.com
3 */ 3 */
4 4
5 /* 5 /*
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
30 2. Prevent adjustments of font size after orientation changes in iOS. 30 2. Prevent adjustments of font size after orientation changes in iOS.
31 3. Use a more readable tab size. 31 3. Use a more readable tab size.
32 4. Use the user's configured `sans` font-family by default. 32 4. Use the user's configured `sans` font-family by default.
33 5. Use the user's configured `sans` font-feature-settings by default.
34 6. Use the user's configured `sans` font-variation-settings by default.
33 */ 35 */
34 36
35 html { 37 html {
...@@ -38,11 +40,14 @@ html { ...@@ -38,11 +40,14 @@ html {
38 -webkit-text-size-adjust: 100%; 40 -webkit-text-size-adjust: 100%;
39 /* 2 */ 41 /* 2 */
40 /* 3 */ 42 /* 3 */
41 -o-tab-size: 4; 43 tab-size: 4;
42 tab-size: 4;
43 /* 3 */ 44 /* 3 */
44 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"; 45 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";
45 /* 4 */ 46 /* 4 */
47 font-feature-settings: normal;
48 /* 5 */
49 font-variation-settings: normal;
50 /* 6 */
46 } 51 }
47 52
48 /* 53 /*
...@@ -402,6 +407,12 @@ video { ...@@ -402,6 +407,12 @@ video {
402 height: auto; 407 height: auto;
403 } 408 }
404 409
410 /* Make elements with the HTML hidden attribute stay hidden by default */
411
412 [hidden] {
413 display: none;
414 }
415
405 *, ::before, ::after { 416 *, ::before, ::after {
406 --tw-border-spacing-x: 0; 417 --tw-border-spacing-x: 0;
407 --tw-border-spacing-y: 0; 418 --tw-border-spacing-y: 0;
...@@ -535,68 +546,84 @@ video { ...@@ -535,68 +546,84 @@ video {
535 margin-left: auto; 546 margin-left: auto;
536 } 547 }
537 548
538 .ld-mr-1 { 549 .\!ld-ml-auto {
539 margin-left: 0.25rem; 550 margin-right: auto !important;
540 }
541
542 .ld-mt-6 {
543 margin-top: 1.5rem;
544 }
545
546 .ld-mt-2 {
547 margin-top: 0.5rem;
548 }
549
550 .ld-mt-10 {
551 margin-top: 2.5rem;
552 } 551 }
553 552
554 .ld-mt-8 { 553 .ld-mb-1 {
555 margin-top: 2rem; 554 margin-bottom: 0.25rem;
556 } 555 }
557 556
558 .ld-mr-3 { 557 .ld-mb-3 {
559 margin-left: 0.75rem; 558 margin-bottom: 0.75rem;
560 } 559 }
561 560
562 .ld-mb-4 { 561 .ld-mb-4 {
563 margin-bottom: 1rem; 562 margin-bottom: 1rem;
564 } 563 }
565 564
566 .ld-mb-3 { 565 .ld-ml-2 {
567 margin-bottom: 0.75rem; 566 margin-right: 0.5rem;
568 } 567 }
569 568
570 .ld-ml-6 { 569 .ld-ml-6 {
571 margin-right: 1.5rem; 570 margin-right: 1.5rem;
572 } 571 }
573 572
574 .ld-ml-2 { 573 .ld-mr-1 {
575 margin-right: 0.5rem; 574 margin-left: 0.25rem;
576 } 575 }
577 576
578 .ld-mr-10 { 577 .ld-mr-10 {
579 margin-left: 2.5rem; 578 margin-left: 2.5rem;
580 } 579 }
581 580
581 .ld-mr-3 {
582 margin-left: 0.75rem;
583 }
584
585 .ld-mt-10 {
586 margin-top: 2.5rem;
587 }
588
589 .ld-mt-2 {
590 margin-top: 0.5rem;
591 }
592
582 .ld-mt-4 { 593 .ld-mt-4 {
583 margin-top: 1rem; 594 margin-top: 1rem;
584 } 595 }
585 596
597 .ld-mt-6 {
598 margin-top: 1.5rem;
599 }
600
601 .ld-mt-8 {
602 margin-top: 2rem;
603 }
604
586 .ld-box-content { 605 .ld-box-content {
587 box-sizing: content-box; 606 box-sizing: content-box;
588 } 607 }
589 608
609 .ld-block {
610 display: block;
611 }
612
590 .ld-inline { 613 .ld-inline {
591 display: inline; 614 display: inline;
592 } 615 }
593 616
617 .\!ld-flex {
618 display: flex !important;
619 }
620
594 .ld-flex { 621 .ld-flex {
595 display: flex; 622 display: flex;
596 } 623 }
597 624
598 .ld-w-8 { 625 .ld-w-1\/2 {
599 width: 2rem; 626 width: 50%;
600 } 627 }
601 628
602 .ld-w-6 { 629 .ld-w-6 {
...@@ -607,12 +634,16 @@ video { ...@@ -607,12 +634,16 @@ video {
607 width: 1.75rem; 634 width: 1.75rem;
608 } 635 }
609 636
637 .ld-w-8 {
638 width: 2rem;
639 }
640
610 .ld-w-full { 641 .ld-w-full {
611 width: 100%; 642 width: 100%;
612 } 643 }
613 644
614 .ld-w-1\/2 { 645 .\!ld-max-w-full {
615 width: 50%; 646 max-width: 100% !important;
616 } 647 }
617 648
618 .ld-flex-col { 649 .ld-flex-col {
...@@ -627,10 +658,22 @@ video { ...@@ -627,10 +658,22 @@ video {
627 align-items: center; 658 align-items: center;
628 } 659 }
629 660
661 .ld-justify-center {
662 justify-content: center;
663 }
664
665 .ld-rounded {
666 border-radius: 0.25rem;
667 }
668
630 .ld-rounded-md { 669 .ld-rounded-md {
631 border-radius: 0.375rem; 670 border-radius: 0.375rem;
632 } 671 }
633 672
673 .ld-border {
674 border-width: 1px;
675 }
676
634 .ld-border-4 { 677 .ld-border-4 {
635 border-width: 4px; 678 border-width: 4px;
636 } 679 }
...@@ -639,9 +682,18 @@ video { ...@@ -639,9 +682,18 @@ video {
639 border-right-width: 4px; 682 border-right-width: 4px;
640 } 683 }
641 684
642 .ld-bg-white { 685 .ld-border-solid {
643 --tw-bg-opacity: 1; 686 border-style: solid;
644 background-color: rgb(255 255 255 / var(--tw-bg-opacity)); 687 }
688
689 .ld-border-green-500 {
690 --tw-border-opacity: 1;
691 border-color: rgb(34 197 94 / var(--tw-border-opacity));
692 }
693
694 .ld-border-red-500 {
695 --tw-border-opacity: 1;
696 border-color: rgb(239 68 68 / var(--tw-border-opacity));
645 } 697 }
646 698
647 .ld-bg-blue-600 { 699 .ld-bg-blue-600 {
...@@ -649,23 +701,42 @@ video { ...@@ -649,23 +701,42 @@ video {
649 background-color: rgb(37 99 235 / var(--tw-bg-opacity)); 701 background-color: rgb(37 99 235 / var(--tw-bg-opacity));
650 } 702 }
651 703
704 .ld-bg-green-100 {
705 --tw-bg-opacity: 1;
706 background-color: rgb(220 252 231 / var(--tw-bg-opacity));
707 }
708
709 .ld-bg-green-50 {
710 --tw-bg-opacity: 1;
711 background-color: rgb(240 253 244 / var(--tw-bg-opacity));
712 }
713
652 .ld-bg-red-100 { 714 .ld-bg-red-100 {
653 --tw-bg-opacity: 1; 715 --tw-bg-opacity: 1;
654 background-color: rgb(254 226 226 / var(--tw-bg-opacity)); 716 background-color: rgb(254 226 226 / var(--tw-bg-opacity));
655 } 717 }
656 718
657 .ld-bg-green-100 { 719 .ld-bg-red-50 {
658 --tw-bg-opacity: 1; 720 --tw-bg-opacity: 1;
659 background-color: rgb(220 252 231 / var(--tw-bg-opacity)); 721 background-color: rgb(254 242 242 / var(--tw-bg-opacity));
722 }
723
724 .ld-bg-white {
725 --tw-bg-opacity: 1;
726 background-color: rgb(255 255 255 / var(--tw-bg-opacity));
727 }
728
729 .ld-p-2 {
730 padding: 0.5rem;
660 } 731 }
661 732
662 .ld-p-8 { 733 .ld-p-8 {
663 padding: 2rem; 734 padding: 2rem;
664 } 735 }
665 736
666 .ld-py-3 { 737 .ld-px-1 {
667 padding-top: 0.75rem; 738 padding-right: 0.25rem;
668 padding-bottom: 0.75rem; 739 padding-left: 0.25rem;
669 } 740 }
670 741
671 .ld-px-4 { 742 .ld-px-4 {
...@@ -673,52 +744,75 @@ video { ...@@ -673,52 +744,75 @@ video {
673 padding-left: 1rem; 744 padding-left: 1rem;
674 } 745 }
675 746
676 .ld-py-5 {
677 padding-top: 1.25rem;
678 padding-bottom: 1.25rem;
679 }
680
681 .ld-px-6 { 747 .ld-px-6 {
682 padding-right: 1.5rem; 748 padding-right: 1.5rem;
683 padding-left: 1.5rem; 749 padding-left: 1.5rem;
684 } 750 }
685 751
752 .ld-py-1 {
753 padding-top: 0.25rem;
754 padding-bottom: 0.25rem;
755 }
756
757 .ld-py-3 {
758 padding-top: 0.75rem;
759 padding-bottom: 0.75rem;
760 }
761
686 .ld-py-4 { 762 .ld-py-4 {
687 padding-top: 1rem; 763 padding-top: 1rem;
688 padding-bottom: 1rem; 764 padding-bottom: 1rem;
689 } 765 }
690 766
767 .ld-py-5 {
768 padding-top: 1.25rem;
769 padding-bottom: 1.25rem;
770 }
771
691 .ld-text-4xl { 772 .ld-text-4xl {
692 font-size: 2.25rem; 773 font-size: 2.25rem;
693 line-height: 2.5rem; 774 line-height: 2.5rem;
694 } 775 }
695 776
777 .ld-text-base {
778 font-size: 1rem;
779 line-height: 1.5rem;
780 }
781
782 .ld-text-sm {
783 font-size: 0.875rem;
784 line-height: 1.25rem;
785 }
786
696 .ld-text-xl { 787 .ld-text-xl {
697 font-size: 1.25rem; 788 font-size: 1.25rem;
698 line-height: 1.75rem; 789 line-height: 1.75rem;
699 } 790 }
700 791
701 .ld-text-base { 792 .ld-font-bold {
702 font-size: 1rem; 793 font-weight: 700;
703 line-height: 1.5rem;
704 } 794 }
705 795
706 .ld-font-medium { 796 .ld-font-medium {
707 font-weight: 500; 797 font-weight: 500;
708 } 798 }
709 799
710 .ld-font-bold { 800 .ld-font-semibold {
711 font-weight: 700; 801 font-weight: 600;
712 } 802 }
713 803
714 .ld-text-white { 804 .ld-italic {
805 font-style: italic;
806 }
807
808 .ld-text-\[\#2271b1\] {
715 --tw-text-opacity: 1; 809 --tw-text-opacity: 1;
716 color: rgb(255 255 255 / var(--tw-text-opacity)); 810 color: rgb(34 113 177 / var(--tw-text-opacity));
717 } 811 }
718 812
719 .ld-text-red-700 { 813 .ld-text-gray-700 {
720 --tw-text-opacity: 1; 814 --tw-text-opacity: 1;
721 color: rgb(185 28 28 / var(--tw-text-opacity)); 815 color: rgb(55 65 81 / var(--tw-text-opacity));
722 } 816 }
723 817
724 .ld-text-green-700 { 818 .ld-text-green-700 {
...@@ -726,6 +820,30 @@ video { ...@@ -726,6 +820,30 @@ video {
726 color: rgb(21 128 61 / var(--tw-text-opacity)); 820 color: rgb(21 128 61 / var(--tw-text-opacity));
727 } 821 }
728 822
823 .ld-text-green-800 {
824 --tw-text-opacity: 1;
825 color: rgb(22 101 52 / var(--tw-text-opacity));
826 }
827
828 .ld-text-red-700 {
829 --tw-text-opacity: 1;
830 color: rgb(185 28 28 / var(--tw-text-opacity));
831 }
832
833 .ld-text-red-800 {
834 --tw-text-opacity: 1;
835 color: rgb(153 27 27 / var(--tw-text-opacity));
836 }
837
838 .ld-text-white {
839 --tw-text-opacity: 1;
840 color: rgb(255 255 255 / var(--tw-text-opacity));
841 }
842
843 .ld-underline {
844 text-decoration-line: underline;
845 }
846
729 .ld-shadow-lg { 847 .ld-shadow-lg {
730 --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); 848 --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
731 --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); 849 --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
......
1 /* 1 /*
2 ! tailwindcss v3.1.5 | MIT License | https://tailwindcss.com 2 ! tailwindcss v3.3.0 | MIT License | https://tailwindcss.com
3 */ 3 */
4 4
5 /* 5 /*
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
30 2. Prevent adjustments of font size after orientation changes in iOS. 30 2. Prevent adjustments of font size after orientation changes in iOS.
31 3. Use a more readable tab size. 31 3. Use a more readable tab size.
32 4. Use the user's configured `sans` font-family by default. 32 4. Use the user's configured `sans` font-family by default.
33 5. Use the user's configured `sans` font-feature-settings by default.
34 6. Use the user's configured `sans` font-variation-settings by default.
33 */ 35 */
34 36
35 html { 37 html {
...@@ -38,11 +40,14 @@ html { ...@@ -38,11 +40,14 @@ html {
38 -webkit-text-size-adjust: 100%; 40 -webkit-text-size-adjust: 100%;
39 /* 2 */ 41 /* 2 */
40 /* 3 */ 42 /* 3 */
41 -o-tab-size: 4; 43 tab-size: 4;
42 tab-size: 4;
43 /* 3 */ 44 /* 3 */
44 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"; 45 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";
45 /* 4 */ 46 /* 4 */
47 font-feature-settings: normal;
48 /* 5 */
49 font-variation-settings: normal;
50 /* 6 */
46 } 51 }
47 52
48 /* 53 /*
...@@ -402,6 +407,12 @@ video { ...@@ -402,6 +407,12 @@ video {
402 height: auto; 407 height: auto;
403 } 408 }
404 409
410 /* Make elements with the HTML hidden attribute stay hidden by default */
411
412 [hidden] {
413 display: none;
414 }
415
405 *, ::before, ::after { 416 *, ::before, ::after {
406 --tw-border-spacing-x: 0; 417 --tw-border-spacing-x: 0;
407 --tw-border-spacing-y: 0; 418 --tw-border-spacing-y: 0;
...@@ -535,68 +546,84 @@ video { ...@@ -535,68 +546,84 @@ video {
535 margin-right: auto; 546 margin-right: auto;
536 } 547 }
537 548
538 .ld-mr-1 { 549 .\!ld-ml-auto {
539 margin-right: 0.25rem; 550 margin-left: auto !important;
540 }
541
542 .ld-mt-6 {
543 margin-top: 1.5rem;
544 }
545
546 .ld-mt-2 {
547 margin-top: 0.5rem;
548 }
549
550 .ld-mt-10 {
551 margin-top: 2.5rem;
552 } 551 }
553 552
554 .ld-mt-8 { 553 .ld-mb-1 {
555 margin-top: 2rem; 554 margin-bottom: 0.25rem;
556 } 555 }
557 556
558 .ld-mr-3 { 557 .ld-mb-3 {
559 margin-right: 0.75rem; 558 margin-bottom: 0.75rem;
560 } 559 }
561 560
562 .ld-mb-4 { 561 .ld-mb-4 {
563 margin-bottom: 1rem; 562 margin-bottom: 1rem;
564 } 563 }
565 564
566 .ld-mb-3 { 565 .ld-ml-2 {
567 margin-bottom: 0.75rem; 566 margin-left: 0.5rem;
568 } 567 }
569 568
570 .ld-ml-6 { 569 .ld-ml-6 {
571 margin-left: 1.5rem; 570 margin-left: 1.5rem;
572 } 571 }
573 572
574 .ld-ml-2 { 573 .ld-mr-1 {
575 margin-left: 0.5rem; 574 margin-right: 0.25rem;
576 } 575 }
577 576
578 .ld-mr-10 { 577 .ld-mr-10 {
579 margin-right: 2.5rem; 578 margin-right: 2.5rem;
580 } 579 }
581 580
581 .ld-mr-3 {
582 margin-right: 0.75rem;
583 }
584
585 .ld-mt-10 {
586 margin-top: 2.5rem;
587 }
588
589 .ld-mt-2 {
590 margin-top: 0.5rem;
591 }
592
582 .ld-mt-4 { 593 .ld-mt-4 {
583 margin-top: 1rem; 594 margin-top: 1rem;
584 } 595 }
585 596
597 .ld-mt-6 {
598 margin-top: 1.5rem;
599 }
600
601 .ld-mt-8 {
602 margin-top: 2rem;
603 }
604
586 .ld-box-content { 605 .ld-box-content {
587 box-sizing: content-box; 606 box-sizing: content-box;
588 } 607 }
589 608
609 .ld-block {
610 display: block;
611 }
612
590 .ld-inline { 613 .ld-inline {
591 display: inline; 614 display: inline;
592 } 615 }
593 616
617 .\!ld-flex {
618 display: flex !important;
619 }
620
594 .ld-flex { 621 .ld-flex {
595 display: flex; 622 display: flex;
596 } 623 }
597 624
598 .ld-w-8 { 625 .ld-w-1\/2 {
599 width: 2rem; 626 width: 50%;
600 } 627 }
601 628
602 .ld-w-6 { 629 .ld-w-6 {
...@@ -607,12 +634,16 @@ video { ...@@ -607,12 +634,16 @@ video {
607 width: 1.75rem; 634 width: 1.75rem;
608 } 635 }
609 636
637 .ld-w-8 {
638 width: 2rem;
639 }
640
610 .ld-w-full { 641 .ld-w-full {
611 width: 100%; 642 width: 100%;
612 } 643 }
613 644
614 .ld-w-1\/2 { 645 .\!ld-max-w-full {
615 width: 50%; 646 max-width: 100% !important;
616 } 647 }
617 648
618 .ld-flex-col { 649 .ld-flex-col {
...@@ -627,10 +658,22 @@ video { ...@@ -627,10 +658,22 @@ video {
627 align-items: center; 658 align-items: center;
628 } 659 }
629 660
661 .ld-justify-center {
662 justify-content: center;
663 }
664
665 .ld-rounded {
666 border-radius: 0.25rem;
667 }
668
630 .ld-rounded-md { 669 .ld-rounded-md {
631 border-radius: 0.375rem; 670 border-radius: 0.375rem;
632 } 671 }
633 672
673 .ld-border {
674 border-width: 1px;
675 }
676
634 .ld-border-4 { 677 .ld-border-4 {
635 border-width: 4px; 678 border-width: 4px;
636 } 679 }
...@@ -639,9 +682,18 @@ video { ...@@ -639,9 +682,18 @@ video {
639 border-left-width: 4px; 682 border-left-width: 4px;
640 } 683 }
641 684
642 .ld-bg-white { 685 .ld-border-solid {
643 --tw-bg-opacity: 1; 686 border-style: solid;
644 background-color: rgb(255 255 255 / var(--tw-bg-opacity)); 687 }
688
689 .ld-border-green-500 {
690 --tw-border-opacity: 1;
691 border-color: rgb(34 197 94 / var(--tw-border-opacity));
692 }
693
694 .ld-border-red-500 {
695 --tw-border-opacity: 1;
696 border-color: rgb(239 68 68 / var(--tw-border-opacity));
645 } 697 }
646 698
647 .ld-bg-blue-600 { 699 .ld-bg-blue-600 {
...@@ -649,23 +701,42 @@ video { ...@@ -649,23 +701,42 @@ video {
649 background-color: rgb(37 99 235 / var(--tw-bg-opacity)); 701 background-color: rgb(37 99 235 / var(--tw-bg-opacity));
650 } 702 }
651 703
704 .ld-bg-green-100 {
705 --tw-bg-opacity: 1;
706 background-color: rgb(220 252 231 / var(--tw-bg-opacity));
707 }
708
709 .ld-bg-green-50 {
710 --tw-bg-opacity: 1;
711 background-color: rgb(240 253 244 / var(--tw-bg-opacity));
712 }
713
652 .ld-bg-red-100 { 714 .ld-bg-red-100 {
653 --tw-bg-opacity: 1; 715 --tw-bg-opacity: 1;
654 background-color: rgb(254 226 226 / var(--tw-bg-opacity)); 716 background-color: rgb(254 226 226 / var(--tw-bg-opacity));
655 } 717 }
656 718
657 .ld-bg-green-100 { 719 .ld-bg-red-50 {
658 --tw-bg-opacity: 1; 720 --tw-bg-opacity: 1;
659 background-color: rgb(220 252 231 / var(--tw-bg-opacity)); 721 background-color: rgb(254 242 242 / var(--tw-bg-opacity));
722 }
723
724 .ld-bg-white {
725 --tw-bg-opacity: 1;
726 background-color: rgb(255 255 255 / var(--tw-bg-opacity));
727 }
728
729 .ld-p-2 {
730 padding: 0.5rem;
660 } 731 }
661 732
662 .ld-p-8 { 733 .ld-p-8 {
663 padding: 2rem; 734 padding: 2rem;
664 } 735 }
665 736
666 .ld-py-3 { 737 .ld-px-1 {
667 padding-top: 0.75rem; 738 padding-left: 0.25rem;
668 padding-bottom: 0.75rem; 739 padding-right: 0.25rem;
669 } 740 }
670 741
671 .ld-px-4 { 742 .ld-px-4 {
...@@ -673,52 +744,75 @@ video { ...@@ -673,52 +744,75 @@ video {
673 padding-right: 1rem; 744 padding-right: 1rem;
674 } 745 }
675 746
676 .ld-py-5 {
677 padding-top: 1.25rem;
678 padding-bottom: 1.25rem;
679 }
680
681 .ld-px-6 { 747 .ld-px-6 {
682 padding-left: 1.5rem; 748 padding-left: 1.5rem;
683 padding-right: 1.5rem; 749 padding-right: 1.5rem;
684 } 750 }
685 751
752 .ld-py-1 {
753 padding-top: 0.25rem;
754 padding-bottom: 0.25rem;
755 }
756
757 .ld-py-3 {
758 padding-top: 0.75rem;
759 padding-bottom: 0.75rem;
760 }
761
686 .ld-py-4 { 762 .ld-py-4 {
687 padding-top: 1rem; 763 padding-top: 1rem;
688 padding-bottom: 1rem; 764 padding-bottom: 1rem;
689 } 765 }
690 766
767 .ld-py-5 {
768 padding-top: 1.25rem;
769 padding-bottom: 1.25rem;
770 }
771
691 .ld-text-4xl { 772 .ld-text-4xl {
692 font-size: 2.25rem; 773 font-size: 2.25rem;
693 line-height: 2.5rem; 774 line-height: 2.5rem;
694 } 775 }
695 776
777 .ld-text-base {
778 font-size: 1rem;
779 line-height: 1.5rem;
780 }
781
782 .ld-text-sm {
783 font-size: 0.875rem;
784 line-height: 1.25rem;
785 }
786
696 .ld-text-xl { 787 .ld-text-xl {
697 font-size: 1.25rem; 788 font-size: 1.25rem;
698 line-height: 1.75rem; 789 line-height: 1.75rem;
699 } 790 }
700 791
701 .ld-text-base { 792 .ld-font-bold {
702 font-size: 1rem; 793 font-weight: 700;
703 line-height: 1.5rem;
704 } 794 }
705 795
706 .ld-font-medium { 796 .ld-font-medium {
707 font-weight: 500; 797 font-weight: 500;
708 } 798 }
709 799
710 .ld-font-bold { 800 .ld-font-semibold {
711 font-weight: 700; 801 font-weight: 600;
712 } 802 }
713 803
714 .ld-text-white { 804 .ld-italic {
805 font-style: italic;
806 }
807
808 .ld-text-\[\#2271b1\] {
715 --tw-text-opacity: 1; 809 --tw-text-opacity: 1;
716 color: rgb(255 255 255 / var(--tw-text-opacity)); 810 color: rgb(34 113 177 / var(--tw-text-opacity));
717 } 811 }
718 812
719 .ld-text-red-700 { 813 .ld-text-gray-700 {
720 --tw-text-opacity: 1; 814 --tw-text-opacity: 1;
721 color: rgb(185 28 28 / var(--tw-text-opacity)); 815 color: rgb(55 65 81 / var(--tw-text-opacity));
722 } 816 }
723 817
724 .ld-text-green-700 { 818 .ld-text-green-700 {
...@@ -726,6 +820,30 @@ video { ...@@ -726,6 +820,30 @@ video {
726 color: rgb(21 128 61 / var(--tw-text-opacity)); 820 color: rgb(21 128 61 / var(--tw-text-opacity));
727 } 821 }
728 822
823 .ld-text-green-800 {
824 --tw-text-opacity: 1;
825 color: rgb(22 101 52 / var(--tw-text-opacity));
826 }
827
828 .ld-text-red-700 {
829 --tw-text-opacity: 1;
830 color: rgb(185 28 28 / var(--tw-text-opacity));
831 }
832
833 .ld-text-red-800 {
834 --tw-text-opacity: 1;
835 color: rgb(153 27 27 / var(--tw-text-opacity));
836 }
837
838 .ld-text-white {
839 --tw-text-opacity: 1;
840 color: rgb(255 255 255 / var(--tw-text-opacity));
841 }
842
843 .ld-underline {
844 text-decoration-line: underline;
845 }
846
729 .ld-shadow-lg { 847 .ld-shadow-lg {
730 --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); 848 --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
731 --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); 849 --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 { ...@@ -346,7 +346,8 @@ span.learndash-description {
346 } 346 }
347 347
348 /* Text Input CSS */ 348 /* Text Input CSS */
349 .sfwd_options .learndash-section-field-text { 349 .sfwd_options .learndash-section-field-text,
350 .sfwd_options .learndash-section-field-password {
350 border-radius: 2px; 351 border-radius: 2px;
351 border: 1px solid #ddd; 352 border: 1px solid #ddd;
352 box-shadow: none; 353 box-shadow: none;
......
...@@ -346,7 +346,8 @@ span.learndash-description { ...@@ -346,7 +346,8 @@ span.learndash-description {
346 } 346 }
347 347
348 /* Text Input CSS */ 348 /* Text Input CSS */
349 .sfwd_options .learndash-section-field-text { 349 .sfwd_options .learndash-section-field-text,
350 .sfwd_options .learndash-section-field-password {
350 border-radius: 2px; 351 border-radius: 2px;
351 border: 1px solid #ddd; 352 border: 1px solid #ddd;
352 box-shadow: none; 353 box-shadow: none;
......
1 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 ...\ No newline at end of file
1 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 ...\ No newline at end of file
......
1 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 ...\ No newline at end of file
1 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 ...\ 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 @@ ...@@ -37,8 +37,8 @@
37 37
38 @media (min-width: 600px) { 38 @media (min-width: 600px) {
39 .branch-5-1.block-editor-page #sfwd-header, 39 .branch-5-1.block-editor-page #sfwd-header,
40 .branch-5-2.block-editor-page #sfwd-header, 40 .branch-5-2.block-editor-page #sfwd-header,
41 .branch-5-3.block-editor-page #sfwd-header { 41 .branch-5-3.block-editor-page #sfwd-header {
42 top: 0; 42 top: 0;
43 } 43 }
44 } 44 }
...@@ -232,7 +232,7 @@ body:not(.block-editor-page) .learndash-settings-page-wrap #sfwd-header { ...@@ -232,7 +232,7 @@ body:not(.block-editor-page) .learndash-settings-page-wrap #sfwd-header {
232 } 232 }
233 @media (min-width: 782px) { 233 @media (min-width: 782px) {
234 .ld-header-has-tabs.is-fullscreen-mode .edit-post-sidebar, 234 .ld-header-has-tabs.is-fullscreen-mode .edit-post-sidebar,
235 .ld-header-has-tabs .edit-post-sidebar { 235 .ld-header-has-tabs .edit-post-sidebar {
236 top: 214px; 236 top: 214px;
237 } 237 }
238 } 238 }
......
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
37 37
38 @media (min-width: 600px) { 38 @media (min-width: 600px) {
39 .branch-5-1.block-editor-page #sfwd-header, 39 .branch-5-1.block-editor-page #sfwd-header,
40 .branch-5-2.block-editor-page #sfwd-header, 40 .branch-5-2.block-editor-page #sfwd-header,
41 .branch-5-3.block-editor-page #sfwd-header { 41 .branch-5-3.block-editor-page #sfwd-header {
42 top: 0; 42 top: 0;
43 } 43 }
44 } 44 }
...@@ -232,7 +232,7 @@ body:not(.block-editor-page) .learndash-settings-page-wrap #sfwd-header { ...@@ -232,7 +232,7 @@ body:not(.block-editor-page) .learndash-settings-page-wrap #sfwd-header {
232 } 232 }
233 @media (min-width: 782px) { 233 @media (min-width: 782px) {
234 .ld-header-has-tabs.is-fullscreen-mode .edit-post-sidebar, 234 .ld-header-has-tabs.is-fullscreen-mode .edit-post-sidebar,
235 .ld-header-has-tabs .edit-post-sidebar { 235 .ld-header-has-tabs .edit-post-sidebar {
236 top: 214px; 236 top: 214px;
237 } 237 }
238 } 238 }
......
This diff could not be displayed because it is too large.
...@@ -7,15 +7,18 @@ if ('block' === window.learndash_builder_metaboxes.editor) { ...@@ -7,15 +7,18 @@ if ('block' === window.learndash_builder_metaboxes.editor) {
7 // If Gutenberg is used, make sure some metaboxes can't be toggled off 7 // If Gutenberg is used, make sure some metaboxes can't be toggled off
8 wp.data.subscribe(() => { 8 wp.data.subscribe(() => {
9 // "Always On" panels. 9 // "Always On" panels.
10 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. 10 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'];
11 11
12 // WordPress Data Store information.
12 const store = wp.data.select('core/edit-post'); 13 const store = wp.data.select('core/edit-post');
13 const panels = store.getPreference('panels'); // Loop over the panels object, but only those panels listed as "Always ON". 14 const panels = store.getPreference('panels');
14 15
16 // Loop over the panels object, but only those panels listed as "Always ON".
15 for (const id in panels) { 17 for (const id in panels) {
16 if (panels.hasOwnProperty(id) && alwaysOn.includes(id)) { 18 if (panels.hasOwnProperty(id) && alwaysOn.includes(id)) {
17 const panel = panels[id]; // Only perform the actions with panels with enabled property. 19 const panel = panels[id];
18 20
21 // Only perform the actions with panels with enabled property.
19 if (panel.hasOwnProperty('enabled')) { 22 if (panel.hasOwnProperty('enabled')) {
20 if (!panel.enabled) { 23 if (!panel.enabled) {
21 wp.data.dispatch('core/edit-post').toggleEditorPanelEnabled(id); 24 wp.data.dispatch('core/edit-post').toggleEditorPanelEnabled(id);
...@@ -26,13 +29,15 @@ if ('block' === window.learndash_builder_metaboxes.editor) { ...@@ -26,13 +29,15 @@ if ('block' === window.learndash_builder_metaboxes.editor) {
26 }); 29 });
27 } else { 30 } else {
28 // Metaboxes IDs 31 // Metaboxes IDs
29 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 32 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'];
30 33
34 // We need to follow the core postbox.js to bind the events
31 jQuery('.hide-postbox-tog').on('click.postboxes', function (e) { 35 jQuery('.hide-postbox-tog').on('click.postboxes', function (e) {
32 const $el = jQuery(this), 36 const $el = jQuery(this),
33 boxId = $el.val(), 37 boxId = $el.val(),
34 $postbox = jQuery('#' + boxId); // Check if the metabox is in "always on" 38 $postbox = jQuery('#' + boxId);
35 39
40 // Check if the metabox is in "always on"
36 if (-1 < alwaysOn.indexOf(boxId)) { 41 if (-1 < alwaysOn.indexOf(boxId)) {
37 if (!$el.prop('checked')) { 42 if (!$el.prop('checked')) {
38 // Prevent unchecking and force visibility 43 // Prevent unchecking and force visibility
......
This diff could not be displayed because it is too large.
...@@ -1241,7 +1241,12 @@ jQuery(function () { ...@@ -1241,7 +1241,12 @@ jQuery(function () {
1241 '.sfwd_options select#learndash_settings_courses_themes_active_theme' 1241 '.sfwd_options select#learndash_settings_courses_themes_active_theme'
1242 ).each(function (idx, item) { 1242 ).each(function (idx, item) {
1243 jQuery(item).on('change', function (e) { 1243 jQuery(item).on('change', function (e) {
1244 const select_theme_val = jQuery(e.currentTarget).val(); 1244 let select_theme_val = jQuery(e.currentTarget).val();
1245
1246 // If a theme inherits settings from another theme then we need to change the select value to the parent theme.
1247 if ( learndash_admin_settings_data.themes_inheriting_settings[ select_theme_val ] !== undefined ) {
1248 select_theme_val = learndash_admin_settings_data.themes_inheriting_settings[ select_theme_val ];
1249 }
1245 1250
1246 jQuery( 1251 jQuery(
1247 '.sfwd_options .ld-theme-settings-section-state-open' 1252 '.sfwd_options .ld-theme-settings-section-state-open'
...@@ -2584,4 +2589,64 @@ jQuery(function ($) { ...@@ -2584,4 +2589,64 @@ jQuery(function ($) {
2584 button.attr('disabled', false).text(defaultButtonLabel); 2589 button.attr('disabled', false).text(defaultButtonLabel);
2585 }); 2590 });
2586 }); 2591 });
2592
2593 function learndashValidateStripeWebhook(callIndex = 1) {
2594 const $button = $('#learndash-validate-stripe-webhook');
2595
2596 $button.attr('disabled', true);
2597 $button.find('.learndash-validate-stripe-webhook-text-default').hide();
2598 $button.find('.learndash-validate-stripe-webhook-text-loading').show();
2599
2600 $.ajax({
2601 type: 'POST',
2602 url: ajaxurl,
2603 dataType: 'json',
2604 data: {
2605 action: 'learndash_validate_stripe_webhook',
2606 nonce: $button.data('nonce'),
2607 call_index: callIndex,
2608 },
2609 }).done(function (response) {
2610 if (response.success) {
2611 if (response.data.success) {
2612 $button.attr('disabled', false);
2613 $button
2614 .find('.learndash-validate-stripe-webhook-text-loading')
2615 .hide();
2616 $button
2617 .find('.learndash-validate-stripe-webhook-text-default')
2618 .show();
2619
2620 $('#learndash-stripe-webhook-validation-success').show();
2621 } else if (response.data.fail) {
2622 $button.attr('disabled', false);
2623 $button
2624 .find('.learndash-validate-stripe-webhook-text-loading')
2625 .hide();
2626 $button
2627 .find('.learndash-validate-stripe-webhook-text-default')
2628 .show();
2629
2630 $('#learndash-stripe-webhook-validation-error').show();
2631 } else if (response.data.progress) {
2632 callIndex++;
2633
2634 setTimeout(function () {
2635 learndashValidateStripeWebhook(callIndex);
2636 }, 5000);
2637 }
2638 } else {
2639 alert(response.data.message);
2640 }
2641 });
2642 }
2643
2644 $('#learndash-validate-stripe-webhook').on('click', function (e) {
2645 e.preventDefault();
2646
2647 $('#learndash-stripe-webhook-validation-success').hide();
2648 $('#learndash-stripe-webhook-validation-error').hide();
2649
2650 learndashValidateStripeWebhook();
2651 });
2587 }); 2652 });
......
1 /** This file is part of the LearnDash plugin and was generated automatically */ 1 /** This file is part of the LearnDash plugin and was generated automatically */
2 !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 ...\ No newline at end of file
2 (()=>{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 ...\ No newline at end of file
......
1 !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 ...\ No newline at end of file
1 (()=>{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 ...\ No newline at end of file
......
1 /* global Beacon */
2
3 // Start Helpscout Beacon
4
5 /* eslint-disable */
6 !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(){});
7 /* eslint-enable */
8
9 window.Beacon('init', '1418fe60-cd03-4691-a765-66e6166f1695');
10
11 // End Helpscout Beacon
12
13 (function () {
14 jQuery(function ($) {
15 $(document).on('submit', '#search-form', function (e) {
16 e.preventDefault();
17
18 const inputs = {};
19
20 $.each($(this).serializeArray(), function (key, field) {
21 inputs[field.name] = field.value;
22 });
23
24 if (inputs.keyword.length > 0) {
25 Beacon('open');
26 Beacon('search', inputs.keyword);
27 }
28 });
29
30 $(document).on('click', '.answers .item', function (e) {
31 e.preventDefault();
32
33 const id = $(this).data('id');
34
35 Beacon('open');
36 Beacon('navigate', '/docs/search?query=category:' + id);
37 });
38
39 Beacon('on', 'ready', function () {
40 $('body').append('<div class="beacon-background"></div>');
41 });
42
43 Beacon('on', 'article-viewed', function () {
44 $('body').addClass('beacon-open');
45
46 setTimeout(function () {
47 const intervalId = setInterval(function () {
48 const frame = $(
49 '.beacon-open .Beacon #BeaconInlineArticlesFrame, .Beacon .BeaconContainer-enter-done'
50 );
51
52 if (frame.length < 1) {
53 $('body').removeClass('beacon-open');
54
55 clearInterval(intervalId);
56 } else {
57 $('body').addClass('beacon-open');
58 }
59 }, 200);
60 }, 300);
61 });
62
63 Beacon('on', 'open', function () {
64 $('body').addClass('beacon-open');
65 });
66
67 Beacon('on', 'close', function () {
68 $('body').removeClass('beacon-open');
69 });
70 });
71 })();
1 /* global Beacon */
2
3 jQuery(function ($) {
4 $(document).on('click', '.box .content', function (e) {
5 const $box = $(this).closest('.box'),
6 url = $box.data('url'),
7 completed = $box.data('completed') === 1;
8
9 if (url && url.length > 0 && !completed) {
10 e.preventDefault();
11 window.location.href = url;
12 }
13 });
14
15 $(document).on(
16 'click',
17 'a[data-type="article"], a[data-type="overview_article"]',
18 function (e) {
19 e.preventDefault();
20 Beacon('article', $(this).data('helpscout_id'), { type: 'modal' });
21 }
22 );
23
24 $(document).on('click', 'a[data-type="helpscout_action"]', function (e) {
25 e.preventDefault();
26
27 const action = $(this).data('action');
28 let keyword, articles;
29
30 switch (action) {
31 case 'open_doc':
32 keyword = $(this).data('keyword');
33
34 if (keyword.length > 0) {
35 Beacon('navigate', '/docs/search?query=' + keyword);
36 } else {
37 Beacon('suggest', []);
38 Beacon('navigate', '/answers/');
39 }
40
41 Beacon('open');
42 break;
43
44 case 'open_chat':
45 Beacon('navigate', '/ask/');
46 Beacon('open');
47 break;
48
49 case 'suggest_articles':
50 articles = $(this).data('articles').split(',');
51
52 Beacon('suggest', articles);
53 Beacon('navigate', '/answers/');
54 Beacon('open');
55 break;
56 }
57 });
58
59 $(document).on('click', '[data-type="youtube_video"]', function (e) {
60 e.preventDefault();
61
62 const youtubeId = $(this).data('youtube_id'),
63 src =
64 'https://www.youtube.com/embed/' +
65 youtubeId +
66 '?autoplay=1&controls=1';
67
68 $('.video-wrapper .video-iframe').attr('src', src);
69 $('.video-wrapper').show();
70 });
71
72 $(document).on('click', '[data-type="vimeo_video"]', function (e) {
73 e.preventDefault();
74
75 const vimeoId = $(this).data('vimeo_id'),
76 src = 'https://player.vimeo.com/video/' + vimeoId;
77
78 $('.video-wrapper .video-iframe').attr('src', src);
79 $('.video-wrapper').show();
80 });
81
82 $(document).on('click', '.video-wrapper .close', function (e) {
83 e.preventDefault();
84
85 $('.video-wrapper .video-iframe').removeAttr('src');
86 $('.video-wrapper').hide();
87 });
88 });
1 = [4.6.0.1] =
2
3 * Fix - Duplicate status bubbles when using the `learndash_status_bubble` function.
4 * Security - Tightened security around the reset password shortcode.
5
6 = [4.6.0] =
7
8 * Feature - Course Outline AI module.
9 * Fix - Display free trial in course/group infobar if trial price set to 0 or empty.
10 * Fix - learndash_process_user_course_progress_update function was not processing the progress correctly in some cases.
11 * Fix - Prevent duplicate password reset email after password reset.
12 * Fix - Set product name as description for Stripe Connect buy now products.
13 * Fix - Undefined FS_CHMOD_FILE error.
14 * Fix - Updated method to required files in helpers.php file.
15 * Tweak - Added actions: `learndash_files_included`.
16 * Tweak - Added filters: `learndash_payment_button_classes`, `learndash_model_product_display_price`, `learndash_model_product_display_trial_price`, `learndash_service_chatgpt_send_command_data`.
17 * Tweak - Added functions: `learndash_register_provider`, `learndash_extra_autoloading`.
18 * Tweak - AI Integrations settings page under advanced settings tab.
19 * Tweak - Deprecated functions: `learndash_the_breadcrumbs`.
20 * Tweak - Deprecated models classes (replaced with LearnDash\Core\Models): `Learndash_Model`, `Learndash_Product_Model`, `Learndash_Transaction_Model`.
21
22 = [4.5.3.2] =
23
24 * 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).
25
26 = [4.5.3.1] =
27
28 * Security - Tightened security around the courseinfo shortcode.
29
30 = [4.5.3] =
31
32 * Fix - The default color is not displayed in the theme settings color picker.
33 * Update - RazorPay library to 2.8.5.
34
1 = [4.5.2.1] = 35 = [4.5.2.1] =
2 36
3 * Fix - Location of /lang directory in TCPDF library 37 * Fix - Location of /lang directory in TCPDF library.
4 38
5 = [4.5.2] = 39 = [4.5.2] =
6 40
7 * Added - Show deprecation notice if using Stripe addon plugin. 41 * Fix - 'Click here to visit' translatable text on checkout form.
8 * Update - TCPDF to version 6.6.2.
9 * Update - Change documentation in LearnDash LMS > Setup page.
10 * Fix - Display correct pricing interval values in purchase invoice. 42 * Fix - Display correct pricing interval values in purchase invoice.
11 * Fix - learndash_reports_get_activity() returns results outside of date range if activity status combination is set.
12 * Fix - Incorrect decimal pricing on Stripe & Razorpay checkout. 43 * Fix - Incorrect decimal pricing on Stripe & Razorpay checkout.
13 * Fix - 'Click here to visit' translatable text on checkout form. 44 * Fix - learndash_reports_get_activity() returns results outside of date range if activity status combination is set.
45 * Tweak - Show deprecation notice if using Stripe addon plugin.
46 * Update - Change documentation in LearnDash LMS > Setup page.
47 * Update - TCPDF to version 6.6.2.
14 48
15 = [4.5.1.2] = 49 = [4.5.1.2] =
16 50
...@@ -23,23 +57,23 @@ ...@@ -23,23 +57,23 @@
23 57
24 = [4.5.1] = 58 = [4.5.1] =
25 59
26 * Added - Confirm dialog when setting up template in Design Wizard.
27 * Fix - Posts and authors were not connected on import when users were being imported.
28 * Fix - learndash_user_get_course_completed_date function did not calculate the correct date in some cases.
29 * Fix - Process shortcode placeholders in purchase invoice email message.
30 * Fix - Hide continue button on failed quiz shortcode unless filtered
31 * Fix - Keep the old slugs for imported posts where possible.
32 * Fix - Display Telemetry modal on LD admin pages.
33 * Fix - Add ; to Content-Type email header. 60 * Fix - Add ; to Content-Type email header.
61 * Fix - Display Telemetry modal on LD admin pages.
62 * Fix - Hide continue button on failed quiz shortcode unless filtered
34 * Fix - Issues with pagination, minimum global pagination value is 1 now. 63 * Fix - Issues with pagination, minimum global pagination value is 1 now.
35 * Tweak - Add validation error to the course access period field, when the value is less than 1. 64 * Fix - Keep the old slugs for imported posts where possible.
65 * Fix - learndash_user_get_course_completed_date function did not calculate the correct date in some cases.
66 * Fix - Posts and authors were not connected on import when users were being imported.
67 * Fix - Process shortcode placeholders in purchase invoice email message.
36 * Tweak - Add better validation messages on import. 68 * Tweak - Add better validation messages on import.
69 * Tweak - Add validation error to the course access period field, when the value is less than 1.
70 * Tweak - Confirm dialog when setting up template in Design Wizard.
37 71
38 = [4.5.0.3] = 72 = [4.5.0.3] =
39 73
40 * Fix - Stripe Connect does not allow purchase for a logged-out user if Registration page not set.
41 * Fix - Increase timeout period for Action Scheduler 74 * Fix - Increase timeout period for Action Scheduler
42 * Fix - Prices containing commas were not being passed to payment gateways correctly. 75 * Fix - Prices containing commas were not being passed to payment gateways correctly.
76 * Fix - Stripe Connect does not allow purchase for a logged-out user if Registration page not set.
43 * Tweak - Removed a non-circulating currency CLF. 77 * Tweak - Removed a non-circulating currency CLF.
44 78
45 = [4.5.0.2] = 79 = [4.5.0.2] =
...@@ -48,10 +82,10 @@ ...@@ -48,10 +82,10 @@
48 82
49 = [4.5.0.1] = 83 = [4.5.0.1] =
50 84
85 * Fix - Compatibility with PHP 7.2, 7.3.
86 * Fix - Conflict with a list of plugins.
51 * Fix - Mobile sidebar menu and materials tab not opening. 87 * Fix - Mobile sidebar menu and materials tab not opening.
52 * Fix - Move scalar constants out of the `plugins_loaded` hook. 88 * Fix - Move scalar constants out of the `plugins_loaded` hook.
53 * Fix - Conflict with a list of plugins.
54 * Fix - Compatibility with PHP 7.2, 7.3.
55 89
56 = [4.5.0] = 90 = [4.5.0] =
57 91
......
...@@ -2379,7 +2379,7 @@ if ( ! class_exists( 'Learndash_Admin_Posts_Listing' ) ) { ...@@ -2379,7 +2379,7 @@ if ( ! class_exists( 'Learndash_Admin_Posts_Listing' ) ) {
2379 $course_lessons_ids = array(); 2379 $course_lessons_ids = array();
2380 $course_lessons = learndash_get_lesson_list( $course_selector['selected'] ); 2380 $course_lessons = learndash_get_lesson_list( $course_selector['selected'] );
2381 if ( ! empty( $course_lessons ) ) { 2381 if ( ! empty( $course_lessons ) ) {
2382 $course_lessons_ids = wp_list_pluck( $course_lessons, 'ID' ); 2382 $course_lessons_ids = wp_list_pluck( (array) $course_lessons, 'ID' );
2383 } 2383 }
2384 2384
2385 if ( ( ! empty( $course_lessons_ids ) ) && ( in_array( $selector['selected'], $course_lessons_ids, true ) ) ) { 2385 if ( ( ! empty( $course_lessons_ids ) ) && ( in_array( $selector['selected'], $course_lessons_ids, true ) ) ) {
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
6 * @package LearnDash\Transactions\Listing 6 * @package LearnDash\Transactions\Listing
7 */ 7 */
8 8
9 use LearnDash\Core\Models\Transaction;
10
9 if ( ! defined( 'ABSPATH' ) ) { 11 if ( ! defined( 'ABSPATH' ) ) {
10 exit; 12 exit;
11 } 13 }
...@@ -171,12 +173,12 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -171,12 +173,12 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
171 if ( Learndash_Paypal_IPN_Gateway::get_name() === $selector['selected'] ) { 173 if ( Learndash_Paypal_IPN_Gateway::get_name() === $selector['selected'] ) {
172 $q_vars['meta_query']['relation'] = 'OR'; 174 $q_vars['meta_query']['relation'] = 'OR';
173 $q_vars['meta_query'][] = array( 175 $q_vars['meta_query'][] = array(
174 'key' => Learndash_Transaction_Model::$meta_key_gateway_name, 176 'key' => Transaction::$meta_key_gateway_name,
175 'compare' => '=', 177 'compare' => '=',
176 'value' => $selector['selected'], 178 'value' => $selector['selected'],
177 ); 179 );
178 $q_vars['meta_query'][] = array( 180 $q_vars['meta_query'][] = array(
179 'key' => Learndash_Transaction_Model::$meta_key_gateway_name, 181 'key' => Transaction::$meta_key_gateway_name,
180 'compare' => '=', 182 'compare' => '=',
181 'value' => 'paypal', 183 'value' => 'paypal',
182 ); 184 );
...@@ -187,7 +189,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -187,7 +189,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
187 } elseif ( Learndash_Stripe_Gateway::get_name() === $selector['selected'] ) { 189 } elseif ( Learndash_Stripe_Gateway::get_name() === $selector['selected'] ) {
188 $q_vars['meta_query']['relation'] = 'OR'; 190 $q_vars['meta_query']['relation'] = 'OR';
189 $q_vars['meta_query'][] = array( 191 $q_vars['meta_query'][] = array(
190 'key' => Learndash_Transaction_Model::$meta_key_gateway_name, 192 'key' => Transaction::$meta_key_gateway_name,
191 'compare' => '=', 193 'compare' => '=',
192 'value' => $selector['selected'], 194 'value' => $selector['selected'],
193 ); 195 );
...@@ -198,7 +200,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -198,7 +200,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
198 ); 200 );
199 } elseif ( Learndash_Razorpay_Gateway::get_name() === $selector['selected'] ) { 201 } elseif ( Learndash_Razorpay_Gateway::get_name() === $selector['selected'] ) {
200 $q_vars['meta_query'][] = array( 202 $q_vars['meta_query'][] = array(
201 'key' => Learndash_Transaction_Model::$meta_key_gateway_name, 203 'key' => Transaction::$meta_key_gateway_name,
202 'compare' => '=', 204 'compare' => '=',
203 'value' => $selector['selected'], 205 'value' => $selector['selected'],
204 ); 206 );
...@@ -269,7 +271,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -269,7 +271,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
269 } elseif ( 'razorpay_paynow' === $selector['selected'] ) { 271 } elseif ( 'razorpay_paynow' === $selector['selected'] ) {
270 $q_vars['meta_query'][] = array( 272 $q_vars['meta_query'][] = array(
271 array( 273 array(
272 'key' => Learndash_Transaction_Model::$meta_key_gateway_name, 274 'key' => Transaction::$meta_key_gateway_name,
273 'value' => Learndash_Razorpay_Gateway::get_name(), 275 'value' => Learndash_Razorpay_Gateway::get_name(),
274 ), 276 ),
275 array( 277 array(
...@@ -280,15 +282,15 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -280,15 +282,15 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
280 } elseif ( 'razorpay_subscribe' === $selector['selected'] ) { 282 } elseif ( 'razorpay_subscribe' === $selector['selected'] ) {
281 $q_vars['meta_query'][] = array( 283 $q_vars['meta_query'][] = array(
282 array( 284 array(
283 'key' => Learndash_Transaction_Model::$meta_key_gateway_name, 285 'key' => Transaction::$meta_key_gateway_name,
284 'value' => Learndash_Razorpay_Gateway::get_name(), 286 'value' => Learndash_Razorpay_Gateway::get_name(),
285 ), 287 ),
286 array( 288 array(
287 'key' => Learndash_Transaction_Model::$meta_key_price_type, 289 'key' => Transaction::$meta_key_price_type,
288 'value' => LEARNDASH_PRICE_TYPE_SUBSCRIBE, 290 'value' => LEARNDASH_PRICE_TYPE_SUBSCRIBE,
289 ), 291 ),
290 array( 292 array(
291 'key' => Learndash_Transaction_Model::$meta_key_has_trial, 293 'key' => Transaction::$meta_key_has_trial,
292 'compare' => '!=', 294 'compare' => '!=',
293 'value' => 1, 295 'value' => 1,
294 ), 296 ),
...@@ -296,26 +298,26 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -296,26 +298,26 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
296 } elseif ( 'razorpay_subscribe_paid_trial' === $selector['selected'] ) { 298 } elseif ( 'razorpay_subscribe_paid_trial' === $selector['selected'] ) {
297 $q_vars['meta_query'][] = array( 299 $q_vars['meta_query'][] = array(
298 array( 300 array(
299 'key' => Learndash_Transaction_Model::$meta_key_gateway_name, 301 'key' => Transaction::$meta_key_gateway_name,
300 'value' => Learndash_Razorpay_Gateway::get_name(), 302 'value' => Learndash_Razorpay_Gateway::get_name(),
301 ), 303 ),
302 array( 304 array(
303 'key' => Learndash_Transaction_Model::$meta_key_has_trial, 305 'key' => Transaction::$meta_key_has_trial,
304 'value' => 1, 306 'value' => 1,
305 ), 307 ),
306 array( 308 array(
307 'key' => Learndash_Transaction_Model::$meta_key_has_free_trial, 309 'key' => Transaction::$meta_key_has_free_trial,
308 'value' => 0, 310 'value' => 0,
309 ), 311 ),
310 ); 312 );
311 } elseif ( 'razorpay_subscribe_free_trial' === $selector['selected'] ) { 313 } elseif ( 'razorpay_subscribe_free_trial' === $selector['selected'] ) {
312 $q_vars['meta_query'][] = array( 314 $q_vars['meta_query'][] = array(
313 array( 315 array(
314 'key' => Learndash_Transaction_Model::$meta_key_gateway_name, 316 'key' => Transaction::$meta_key_gateway_name,
315 'value' => Learndash_Razorpay_Gateway::get_name(), 317 'value' => Learndash_Razorpay_Gateway::get_name(),
316 ), 318 ),
317 array( 319 array(
318 'key' => Learndash_Transaction_Model::$meta_key_has_free_trial, 320 'key' => Transaction::$meta_key_has_free_trial,
319 'value' => 1, 321 'value' => 1,
320 ), 322 ),
321 ); 323 );
...@@ -344,7 +346,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -344,7 +346,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
344 } 346 }
345 347
346 $q_vars['meta_query']['relation'] = 'OR'; 348 $q_vars['meta_query']['relation'] = 'OR';
347 foreach ( Learndash_Transaction_Model::$product_id_meta_keys as $meta_key ) { 349 foreach ( Transaction::$product_id_meta_keys as $meta_key ) {
348 $q_vars['meta_query'][] = array( 350 $q_vars['meta_query'][] = array(
349 'key' => $meta_key, 351 'key' => $meta_key,
350 'value' => (int) $selector['selected'], 352 'value' => (int) $selector['selected'],
...@@ -364,7 +366,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -364,7 +366,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
364 * @return void 366 * @return void
365 */ 367 */
366 protected function show_column_gateway( int $post_id ): void { 368 protected function show_column_gateway( int $post_id ): void {
367 $transaction = Learndash_Transaction_Model::find( $post_id ); 369 $transaction = Transaction::find( $post_id );
368 370
369 if ( ! $transaction ) { 371 if ( ! $transaction ) {
370 return; 372 return;
...@@ -403,7 +405,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -403,7 +405,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
403 * @return void 405 * @return void
404 */ 406 */
405 protected function show_column_info( int $post_id ): void { 407 protected function show_column_info( int $post_id ): void {
406 $transaction = Learndash_Transaction_Model::find( $post_id ); 408 $transaction = Transaction::find( $post_id );
407 409
408 if ( ! $transaction ) { 410 if ( ! $transaction ) {
409 return; 411 return;
...@@ -512,7 +514,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -512,7 +514,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
512 * @return void 514 * @return void
513 */ 515 */
514 protected function show_column_coupon( int $post_id ): void { 516 protected function show_column_coupon( int $post_id ): void {
515 $transaction = Learndash_Transaction_Model::find( $post_id ); 517 $transaction = Transaction::find( $post_id );
516 518
517 if ( ! $transaction || $transaction->is_parent() ) { 519 if ( ! $transaction || $transaction->is_parent() ) {
518 return; 520 return;
...@@ -571,7 +573,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -571,7 +573,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
571 * @return void 573 * @return void
572 */ 574 */
573 protected function show_column_product( int $post_id ): void { 575 protected function show_column_product( int $post_id ): void {
574 $transaction = Learndash_Transaction_Model::find( $post_id ); 576 $transaction = Transaction::find( $post_id );
575 577
576 if ( ! $transaction ) { 578 if ( ! $transaction ) {
577 return; 579 return;
...@@ -661,7 +663,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -661,7 +663,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
661 * @return void 663 * @return void
662 */ 664 */
663 protected function show_column_access( int $post_id ): void { 665 protected function show_column_access( int $post_id ): void {
664 $transaction = Learndash_Transaction_Model::find( $post_id ); 666 $transaction = Transaction::find( $post_id );
665 667
666 if ( ! $transaction ) { 668 if ( ! $transaction ) {
667 return; 669 return;
...@@ -745,7 +747,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -745,7 +747,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
745 * @return void 747 * @return void
746 */ 748 */
747 protected function show_column_user( int $post_id ): void { 749 protected function show_column_user( int $post_id ): void {
748 $transaction = Learndash_Transaction_Model::find( $post_id ); 750 $transaction = Transaction::find( $post_id );
749 751
750 if ( ! $transaction ) { 752 if ( ! $transaction ) {
751 return; 753 return;
...@@ -850,7 +852,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda ...@@ -850,7 +852,7 @@ if ( class_exists( 'Learndash_Admin_Posts_Listing' ) && ! class_exists( 'Learnda
850 return; 852 return;
851 } 853 }
852 854
853 $transactions = Learndash_Transaction_Model::find_many( 855 $transactions = Transaction::find_many(
854 wp_parse_id_list( wp_unslash( $_REQUEST['post'] ) ) 856 wp_parse_id_list( wp_unslash( $_REQUEST['post'] ) )
855 ); 857 );
856 858
......
...@@ -13,6 +13,10 @@ if ( ! defined( 'ABSPATH' ) ) { ...@@ -13,6 +13,10 @@ if ( ! defined( 'ABSPATH' ) ) {
13 13
14 // cspell:ignore i18nize . 14 // cspell:ignore i18nize .
15 15
16 use LearnDash\Core\App;
17 use LearnDash\Core\Provider;
18
19
16 if ( ! class_exists( 'SFWD_LMS' ) ) { 20 if ( ! class_exists( 'SFWD_LMS' ) ) {
17 21
18 /** 22 /**
...@@ -218,9 +222,15 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -218,9 +222,15 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
218 } 222 }
219 } 223 }
220 224
221 add_action( 'wp_ajax_select_a_lesson', array( $this, 'select_a_lesson_ajax' ) ); 225 add_action( 'wp_ajax_select_a_lesson', [ $this, 'select_a_lesson_ajax' ] );
222 add_action( 'wp_ajax_select_a_lesson_or_topic', array( $this, 'select_a_lesson_or_topic_ajax' ) ); 226 add_action( 'wp_ajax_select_a_lesson_or_topic', [ $this, 'select_a_lesson_or_topic_ajax' ] );
223 add_action( 'wp_ajax_select_a_quiz', array( $this, 'select_a_quiz_ajax' ) ); 227 add_action( 'wp_ajax_select_a_quiz', [ $this, 'select_a_quiz_ajax' ] );
228 add_action(
229 'learndash_files_included',
230 function() {
231 App::register( Provider::class );
232 }
233 );
224 } 234 }
225 235
226 /** 236 /**
...@@ -3019,7 +3029,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -3019,7 +3029,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
3019 } elseif ( ! is_null( $atts['quiz_filter_quiz'] ) ) { 3029 } elseif ( ! is_null( $atts['quiz_filter_quiz'] ) ) {
3020 $quiz_ids = $atts['quiz_filter_quiz']; 3030 $quiz_ids = $atts['quiz_filter_quiz'];
3021 } else { 3031 } else {
3022 $quiz_ids = wp_list_pluck( $quizzes, 'quiz' ); 3032 $quiz_ids = wp_list_pluck( (array) $quizzes, 'quiz' );
3023 } 3033 }
3024 3034
3025 if ( ! empty( $quiz_ids ) ) { 3035 if ( ! empty( $quiz_ids ) ) {
...@@ -4710,6 +4720,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4710,6 +4720,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4710 $template_paths = array(); 4720 $template_paths = array();
4711 4721
4712 $active_template_key = LearnDash_Theme_Register::get_active_theme_key(); 4722 $active_template_key = LearnDash_Theme_Register::get_active_theme_key();
4723 $active_template_dir = LearnDash_Theme_Register::get_active_theme_template_dir();
4713 $file_pathinfo = pathinfo( $filename ); 4724 $file_pathinfo = pathinfo( $filename );
4714 4725
4715 if ( ! isset( $file_pathinfo['dirname'] ) ) { 4726 if ( ! isset( $file_pathinfo['dirname'] ) ) {
...@@ -4737,7 +4748,16 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4737,7 +4748,16 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4737 4748
4738 $template_filenames[] = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.min.' . $file_pathinfo['extension']; 4749 $template_filenames[] = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.min.' . $file_pathinfo['extension'];
4739 } else { 4750 } else {
4740 $template_filenames[] = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.' . $file_pathinfo['extension']; 4751 // add index suffix to filename.
4752 $template_file_name = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.' . $file_pathinfo['extension'];
4753 if ( ! is_file( trailingslashit( $active_template_dir ) . $template_file_name ) ) {
4754 $template_file_dir = $file_pathinfo['dirname'] . $file_pathinfo['filename'];
4755 if ( is_dir( trailingslashit( $active_template_dir ) . $template_file_dir ) ) {
4756 $template_file_name = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '/index.' . $file_pathinfo['extension'];
4757 }
4758 }
4759
4760 $template_filenames[] = $template_file_name;
4741 } 4761 }
4742 4762
4743 $template_paths['theme'] = array(); 4763 $template_paths['theme'] = array();
...@@ -4745,7 +4765,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4745,7 +4765,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4745 $template_paths['theme'][] = 'learndash/' . $active_template_key . '/' . $template_filename; 4765 $template_paths['theme'][] = 'learndash/' . $active_template_key . '/' . $template_filename;
4746 } 4766 }
4747 4767
4748 if ( 'legacy' === $active_template_key ) { 4768 if ( LEARNDASH_LEGACY_THEME === $active_template_key ) {
4749 foreach ( $template_filenames as $template_filename ) { 4769 foreach ( $template_filenames as $template_filename ) {
4750 $template_paths['theme'][] = 'learndash/' . $template_filename; 4770 $template_paths['theme'][] = 'learndash/' . $template_filename;
4751 } 4771 }
...@@ -4764,7 +4784,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4764,7 +4784,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4764 if ( 'learndash_template_functions.php' === $file_pathinfo['filename'] ) { 4784 if ( 'learndash_template_functions.php' === $file_pathinfo['filename'] ) {
4765 $template_paths['templates'][] = $template_dir . $active_template_key . '/functions.php'; 4785 $template_paths['templates'][] = $template_dir . $active_template_key . '/functions.php';
4766 } 4786 }
4767 if ( 'legacy' === $active_template_key ) { 4787 if ( LEARNDASH_LEGACY_THEME === $active_template_key ) {
4768 foreach ( $template_filenames as $template_filename ) { 4788 foreach ( $template_filenames as $template_filename ) {
4769 $template_paths['templates'][] = $template_dir . $template_filename; 4789 $template_paths['templates'][] = $template_dir . $template_filename;
4770 } 4790 }
...@@ -4774,22 +4794,26 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4774,22 +4794,26 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4774 } 4794 }
4775 } 4795 }
4776 4796
4777 $active_template_dir = LearnDash_Theme_Register::get_active_theme_template_dir();
4778 if ( ! empty( $active_template_dir ) ) { 4797 if ( ! empty( $active_template_dir ) ) {
4779 foreach ( $template_filenames as $template_filename ) { 4798 foreach ( $template_filenames as $template_filename ) {
4780 $template_paths['templates'][] = $active_template_dir . '/' . $template_filename; 4799 $template_paths['templates'][] = trailingslashit( $active_template_dir ) . $template_filename;
4781 } 4800 }
4782 } 4801 }
4783 4802
4784 if ( LEARNDASH_LEGACY_THEME !== $active_template_key ) { 4803 if ( LEARNDASH_LEGACY_THEME !== $active_template_key ) {
4785 $legacy_theme_instance = LearnDash_Theme_Register::get_theme_instance( LEARNDASH_LEGACY_THEME ); 4804 $legacy_theme_instance = LearnDash_Theme_Register::get_theme_instance( LEARNDASH_LEGACY_THEME );
4786 $legacy_theme_dir = $legacy_theme_instance->get_theme_template_dir(); 4805
4787 if ( ! empty( $legacy_theme_dir ) ) { 4806 if ( ! empty( $legacy_theme_instance ) ) {
4788 foreach ( $template_filenames as $template_filename ) { 4807 $legacy_theme_dir = $legacy_theme_instance->get_theme_template_dir();
4789 $template_paths['templates'][] = $legacy_theme_dir . '/' . $template_filename; 4808
4809 if ( ! empty( $legacy_theme_dir ) ) {
4810 foreach ( $template_filenames as $template_filename ) {
4811 $template_paths['templates'][] = $legacy_theme_dir . '/' . $template_filename;
4812 }
4790 } 4813 }
4791 } 4814 }
4792 } 4815 }
4816
4793 return $template_paths; 4817 return $template_paths;
4794 } 4818 }
4795 4819
...@@ -4801,10 +4825,10 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4801,10 +4825,10 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4801 * 4825 *
4802 * @since 2.1.0 4826 * @since 2.1.0
4803 * 4827 *
4804 * @param string $name template name. 4828 * @param string $name Template name.
4805 * @param array|null $args data for template. 4829 * @param array|null $args Data for template.
4806 * @param boolean|null $echo echo or return. 4830 * @param bool|null $echo echo or return.
4807 * @param boolean $return_file_path return just file path instead of output. 4831 * @param bool $return_file_path Return just file path instead of output.
4808 */ 4832 */
4809 public static function get_template( $name, $args, $echo = false, $return_file_path = false ) { 4833 public static function get_template( $name, $args, $echo = false, $return_file_path = false ) {
4810 $template_paths = array(); 4834 $template_paths = array();
...@@ -4822,11 +4846,11 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4822,11 +4846,11 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4822 * 4846 *
4823 * @since 3.0.0 4847 * @since 3.0.0
4824 * 4848 *
4825 * @param string $template_filename Template file name. 4849 * @param string $template_filename Template file name.
4826 * @param string $name Template name. 4850 * @param string $name Template name.
4827 * @param array $args Template data. 4851 * @param array|null $args Template data.
4828 * @param boolean $echo Whether to echo the template output or not. 4852 * @param bool|null $echo Whether to echo the template output or not.
4829 * @param boolean $return_file_path Whether to return file or path or not. 4853 * @param bool $return_file_path Whether to return file or path or not.
4830 */ 4854 */
4831 $template_filename = apply_filters( 'learndash_template_filename', $template_filename, $name, $args, $echo, $return_file_path ); 4855 $template_filename = apply_filters( 'learndash_template_filename', $template_filename, $name, $args, $echo, $return_file_path );
4832 4856
...@@ -4858,11 +4882,11 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4858,11 +4882,11 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4858 * @since 2.1.0 4882 * @since 2.1.0
4859 * @since 3.0.3 - Allow override of empty or other checks. 4883 * @since 3.0.3 - Allow override of empty or other checks.
4860 * 4884 *
4861 * @param string $filepath Template file path. 4885 * @param string $filepath Template file path.
4862 * @param string $name Template name. 4886 * @param string $name Template name.
4863 * @param array $args Template data. 4887 * @param array|null $args Template data.
4864 * @param boolean $echo Whether to echo the template output or not. 4888 * @param bool|null $echo Whether to echo the template output or not.
4865 * @param boolean $return_file_path Whether to return file or path or not. 4889 * @param bool $return_file_path Whether to return file or path or not.
4866 */ 4890 */
4867 $filepath = apply_filters( 'learndash_template', $filepath, $name, $args, $echo, $return_file_path ); 4891 $filepath = apply_filters( 'learndash_template', $filepath, $name, $args, $echo, $return_file_path );
4868 if ( ! $filepath ) { 4892 if ( ! $filepath ) {
...@@ -4881,9 +4905,9 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4881,9 +4905,9 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4881 * 4905 *
4882 * The dynamic part of the hook refers to the name of the template. 4906 * The dynamic part of the hook refers to the name of the template.
4883 * 4907 *
4884 * @param array $args Template data. 4908 * @param array|null $args Template data.
4885 * @param string $filepath Template file path. 4909 * @param string $filepath Template file path.
4886 * @param boolean $echo Whether to echo the template output or not. 4910 * @param bool|null $echo Whether to echo the template output or not.
4887 */ 4911 */
4888 $args = apply_filters( 'ld_template_args_' . $name, $args, $filepath, $echo ); 4912 $args = apply_filters( 'ld_template_args_' . $name, $args, $filepath, $echo );
4889 if ( ( ! empty( $args ) ) && ( is_array( $args ) ) ) { 4913 if ( ( ! empty( $args ) ) && ( is_array( $args ) ) ) {
...@@ -4898,7 +4922,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4898,7 +4922,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4898 return $contents; 4922 return $contents;
4899 } 4923 }
4900 4924
4901 echo $contents; 4925 echo $contents; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped in template.
4902 } 4926 }
4903 } 4927 }
4904 4928
...@@ -4915,6 +4939,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) { ...@@ -4915,6 +4939,7 @@ if ( ! class_exists( 'SFWD_LMS' ) ) {
4915 */ 4939 */
4916 public static function get_view( string $name, array $args = array(), bool $echo = false ) { 4940 public static function get_view( string $name, array $args = array(), bool $echo = false ) {
4917 extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract -- Bad idea, but better keep it for now. 4941 extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract -- Bad idea, but better keep it for now.
4942
4918 $template = LEARNDASH_LMS_PLUGIN_DIR . '/includes/views/' . $name . '.php'; 4943 $template = LEARNDASH_LMS_PLUGIN_DIR . '/includes/views/' . $name . '.php';
4919 4944
4920 if ( file_exists( $template ) ) { 4945 if ( file_exists( $template ) ) {
......
...@@ -590,6 +590,52 @@ if ( ! class_exists( 'LDLMS_DB' ) ) { ...@@ -590,6 +590,52 @@ if ( ! class_exists( 'LDLMS_DB' ) ) {
590 return array(); 590 return array();
591 } 591 }
592 592
593 /**
594 * Escape an array, supposed to be a numeric array, to be used in a SQL IN() clause.
595 *
596 * @since 4.5.3.1
597 *
598 * @param array<mixed> $array Array of items to process.
599 *
600 * @return array<int>
601 */
602 public static function escape_numeric_array( $array ): array {
603 if ( empty( $array ) ) {
604 return [];
605 }
606
607 return array_map(
608 function( $item ) {
609 $item = trim( strval( $item ), "'\"" );
610
611 return intval( $item );
612 },
613 $array
614 );
615 }
616
617 /**
618 * Escape a string array to be used in a SQL IN() clause.
619 *
620 * @since 4.5.3.1
621 *
622 * @param array<mixed> $array Array of items to process.
623 *
624 * @return array<string>
625 */
626 public static function escape_string_array( $array ): array {
627 if ( empty( $array ) ) {
628 return [];
629 }
630
631 return array_map(
632 function( $item ) {
633 return sanitize_text_field( strval( $item ) );
634 },
635 $array
636 );
637 }
638
593 // End of functions. 639 // End of functions.
594 } 640 }
595 } 641 }
......
...@@ -753,6 +753,8 @@ function learndash_user_progress_get_previous_incomplete_step( $user_id = 0, $co ...@@ -753,6 +753,8 @@ function learndash_user_progress_get_previous_incomplete_step( $user_id = 0, $co
753 } 753 }
754 } 754 }
755 } 755 }
756
757 return false;
756 } 758 }
757 759
758 /** 760 /**
......
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
7 * @package LearnDash\Coupons 7 * @package LearnDash\Coupons
8 */ 8 */
9 9
10 use LearnDash\Core\Models\Product;
11 use LearnDash\Core\Models\Transaction;
12
10 if ( ! defined( 'ABSPATH' ) ) { 13 if ( ! defined( 'ABSPATH' ) ) {
11 exit; 14 exit;
12 } 15 }
...@@ -496,7 +499,7 @@ function learndash_apply_coupon(): void { ...@@ -496,7 +499,7 @@ function learndash_apply_coupon(): void {
496 ); 499 );
497 } 500 }
498 501
499 $product = Learndash_Product_Model::find( (int) $_POST['post_id'] ); 502 $product = Product::find( (int) $_POST['post_id'] );
500 503
501 if ( ! $product ) { 504 if ( ! $product ) {
502 wp_send_json_error( 505 wp_send_json_error(
...@@ -520,9 +523,9 @@ function learndash_apply_coupon(): void { ...@@ -520,9 +523,9 @@ function learndash_apply_coupon(): void {
520 ); 523 );
521 } 524 }
522 525
523 // Check if we are processing the "buy now" pricing. 526 // Check if we are processing the "subscribe" pricing.
524 527
525 if ( LEARNDASH_PRICE_TYPE_PAYNOW !== $product->get_pricing_type() ) { 528 if ( $product->is_price_type_subscribe() ) {
526 wp_send_json_error( 529 wp_send_json_error(
527 array( 530 array(
528 'message' => __( 'Subscriptions are not supported for now.', 'learndash' ), 531 'message' => __( 'Subscriptions are not supported for now.', 'learndash' ),
...@@ -593,7 +596,7 @@ function learndash_remove_coupon(): void { ...@@ -593,7 +596,7 @@ function learndash_remove_coupon(): void {
593 596
594 // Check if we are processing a course/group. 597 // Check if we are processing a course/group.
595 598
596 $product = Learndash_Product_Model::find( (int) $_POST['post_id'] ); 599 $product = Product::find( (int) $_POST['post_id'] );
597 600
598 if ( ! $product ) { 601 if ( ! $product ) {
599 wp_send_json_error( 602 wp_send_json_error(
...@@ -645,7 +648,7 @@ function learndash_remove_coupon(): void { ...@@ -645,7 +648,7 @@ function learndash_remove_coupon(): void {
645 * @return void 648 * @return void
646 */ 649 */
647 function learndash_process_coupon_after_transaction( int $transaction_id ): void { 650 function learndash_process_coupon_after_transaction( int $transaction_id ): void {
648 $transaction = Learndash_Transaction_Model::find( $transaction_id ); 651 $transaction = Transaction::find( $transaction_id );
649 652
650 if ( ! $transaction ) { 653 if ( ! $transaction ) {
651 return; 654 return;
...@@ -677,7 +680,7 @@ function learndash_process_coupon_after_transaction( int $transaction_id ): void ...@@ -677,7 +680,7 @@ function learndash_process_coupon_after_transaction( int $transaction_id ): void
677 680
678 update_post_meta( 681 update_post_meta(
679 $transaction_id, 682 $transaction_id,
680 Learndash_Transaction_Model::$meta_key_pricing_info, 683 Transaction::$meta_key_pricing_info,
681 Learndash_Pricing_DTO::create( $coupon_data->to_array() )->to_array() 684 Learndash_Pricing_DTO::create( $coupon_data->to_array() )->to_array()
682 ); 685 );
683 } catch ( Learndash_DTO_Validation_Exception $e ) { 686 } catch ( Learndash_DTO_Validation_Exception $e ) {
...@@ -746,7 +749,7 @@ function learndash_enroll_with_zero_price(): void { ...@@ -746,7 +749,7 @@ function learndash_enroll_with_zero_price(): void {
746 749
747 // Check if we are processing a course/group. 750 // Check if we are processing a course/group.
748 751
749 $product = Learndash_Product_Model::find( (int) $_POST['post_id'] ); 752 $product = Product::find( (int) $_POST['post_id'] );
750 753
751 if ( ! $product ) { 754 if ( ! $product ) {
752 wp_send_json_error( 755 wp_send_json_error(
...@@ -797,13 +800,13 @@ function learndash_enroll_with_zero_price(): void { ...@@ -797,13 +800,13 @@ function learndash_enroll_with_zero_price(): void {
797 800
798 $transaction_id = learndash_transaction_create( 801 $transaction_id = learndash_transaction_create(
799 array( 802 array(
800 Learndash_Transaction_Model::$meta_key_is_free => true, 803 Transaction::$meta_key_is_free => true,
801 ), 804 ),
802 $product->get_post(), 805 $product->get_post(),
803 $user 806 $user
804 ); 807 );
805 808
806 $transaction = Learndash_Transaction_Model::find( $transaction_id ); 809 $transaction = Transaction::find( $transaction_id );
807 810
808 if ( ! $transaction ) { 811 if ( ! $transaction ) {
809 wp_send_json_error( 812 wp_send_json_error(
......
...@@ -91,6 +91,10 @@ function learndash_get_course_id( $id = null, $bypass_cb = false ) { ...@@ -91,6 +91,10 @@ function learndash_get_course_id( $id = null, $bypass_cb = false ) {
91 } 91 }
92 } 92 }
93 93
94 if ( learndash_get_post_type_slug( LDLMS_Post_Types::EXAM ) === $p->post_type ) {
95 return (int) get_post_meta( intval( $id ), 'exam_challenge_course_show', true );
96 }
97
94 return (int) get_post_meta( $id, 'course_id', true ); 98 return (int) get_post_meta( $id, 'course_id', true );
95 } 99 }
96 100
...@@ -1172,7 +1176,7 @@ function learndash_get_course_topics_per_page( $course_id = 0, $lesson_id = 0 ) ...@@ -1172,7 +1176,7 @@ function learndash_get_course_topics_per_page( $course_id = 0, $lesson_id = 0 )
1172 $course_topics_per_page = 0; 1176 $course_topics_per_page = 0;
1173 1177
1174 // From the WP > Settings > Reading > Posts per page. 1178 // From the WP > Settings > Reading > Posts per page.
1175 $course_topics_per_page = (int) get_option( 'posts_per_page' ); 1179 $course_topics_per_page = intval( get_option( 'posts_per_page' ) );
1176 1180
1177 // From the LearnDash > Settings > General > Global Pagination Settings > Shortcodes & Widgets per page. 1181 // From the LearnDash > Settings > General > Global Pagination Settings > Shortcodes & Widgets per page.
1178 $course_topics_per_page = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'per_page', $course_topics_per_page ); 1182 $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, ...@@ -382,7 +382,7 @@ function learndash_course_get_single_parent_step( $course_id = 0, $step_id = 0,
382 } 382 }
383 } 383 }
384 384
385 return $parent_step_id; 385 return intval( $parent_step_id );
386 } 386 }
387 387
388 /** 388 /**
......
1 <?php
2 /**
3 * Deprecated functions from LD 4.6.0.
4 * The functions will be removed in a later version.
5 *
6 * @since 4.6.0
7 *
8 * @package LearnDash\Deprecated
9 */
10
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 if ( ! function_exists( 'learndash_the_breadcrumbs' ) ) {
16 /**
17 * Prints breadcrumbs output.
18 *
19 * Sames as learndash_get_breadcrumbs only it actually outputs escaped markup.
20 *
21 * @since 3.0.0
22 * @deprecated 4.6.0
23 *
24 * @global WP_Post $post Global post object.
25 *
26 * @param int|WP_Post|null $post `WP_Post` object. Default to global $post.
27 *
28 * @return void
29 */
30 function learndash_the_breadcrumbs( $post = null ): void {
31 _deprecated_function( __FUNCTION__, '4.6.0', 'learndash_get_breadcrumbs' );
32
33 // Do nothing. It never worked properly according to the code inside it, and it was not used at the deprecation time.
34 }
35 }
...@@ -11,6 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) { ...@@ -11,6 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
11 exit; 11 exit;
12 } 12 }
13 13
14 require_once __DIR__ . '/4.6.0/functions.php';
14 require_once __DIR__ . '/4.5.0/functions.php'; 15 require_once __DIR__ . '/4.5.0/functions.php';
15 require_once __DIR__ . '/4.1.0/functions.php'; 16 require_once __DIR__ . '/4.1.0/functions.php';
16 require_once __DIR__ . '/3.6.0/functions.php'; 17 require_once __DIR__ . '/3.6.0/functions.php';
......
...@@ -80,7 +80,6 @@ if ( ! class_exists( 'Learndash_DTO' ) ) { ...@@ -80,7 +80,6 @@ if ( ! class_exists( 'Learndash_DTO' ) ) {
80 $property_type = $this->cast[ $property->getName() ]; 80 $property_type = $this->cast[ $property->getName() ];
81 81
82 if ( 82 if (
83 is_string( $this->cast[ $property->getName() ] ) &&
84 in_array( 83 in_array(
85 $property_type, 84 $property_type,
86 array( 'bool', 'boolean', 'int', 'integer', 'float', 'double', 'string', 'array', 'object', 'null' ), 85 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 = ...@@ -1142,4 +1142,3 @@ function learndash_set_post_group_membership_groups( $post_id = 0, $groups_new =
1142 } 1142 }
1143 } 1143 }
1144 } 1144 }
1145
......
1 .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 ...\ No newline at end of file
1 .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 ...\ No newline at end of file
......
1 .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 ...\ No newline at end of file
1 .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 ...\ No newline at end of file
......
1 <?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'); 1 <?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() ) { ...@@ -2341,7 +2341,7 @@ function learndash_validate_groups( $group_ids = array() ) {
2341 * 2341 *
2342 * @param int $group_id Optional. The ID of the group. Default 0. 2342 * @param int $group_id Optional. The ID of the group. Default 0.
2343 * 2343 *
2344 * @return int The number of lessons per page or 0. 2344 * @return int The number of courses per page or 0.
2345 */ 2345 */
2346 function learndash_get_group_courses_per_page( $group_id = 0 ) { 2346 function learndash_get_group_courses_per_page( $group_id = 0 ) {
2347 $group_courses_per_page = 0; 2347 $group_courses_per_page = 0;
...@@ -2445,7 +2445,7 @@ function learndash_get_group_courses_order( $group_id = 0 ) { ...@@ -2445,7 +2445,7 @@ function learndash_get_group_courses_order( $group_id = 0 ) {
2445 function learndash_get_group_courses_list( $group_id = 0, $query_args = array() ) { 2445 function learndash_get_group_courses_list( $group_id = 0, $query_args = array() ) {
2446 global $course_pager_results; 2446 global $course_pager_results;
2447 2447
2448 $courses_ids = array(); 2448 $course_ids = array();
2449 2449
2450 $group_id = absint( $group_id ); 2450 $group_id = absint( $group_id );
2451 if ( ! empty( $group_id ) ) { 2451 if ( ! empty( $group_id ) ) {
...@@ -2474,6 +2474,8 @@ function learndash_get_group_courses_list( $group_id = 0, $query_args = array() ...@@ -2474,6 +2474,8 @@ function learndash_get_group_courses_list( $group_id = 0, $query_args = array()
2474 } 2474 }
2475 $group_courses_order_args = learndash_get_group_courses_order( $group_id ); 2475 $group_courses_order_args = learndash_get_group_courses_order( $group_id );
2476 2476
2477 $offset = $query_args['offset'] ?? null;
2478
2477 $query_args = array( 2479 $query_args = array(
2478 'post_type' => learndash_get_post_type_slug( 'course' ), 2480 'post_type' => learndash_get_post_type_slug( 'course' ),
2479 'fields' => 'ids', 2481 'fields' => 'ids',
...@@ -2486,6 +2488,11 @@ function learndash_get_group_courses_list( $group_id = 0, $query_args = array() ...@@ -2486,6 +2488,11 @@ function learndash_get_group_courses_list( $group_id = 0, $query_args = array()
2486 ), 2488 ),
2487 ), 2489 ),
2488 ); 2490 );
2491
2492 if ( ! is_null( $offset ) ) {
2493 $query_args['offset'] = $offset;
2494 }
2495
2489 $query_args = array_merge( $query_args, $group_courses_order_args ); 2496 $query_args = array_merge( $query_args, $group_courses_order_args );
2490 2497
2491 $query = new WP_Query( $query_args ); 2498 $query = new WP_Query( $query_args );
......
...@@ -1885,15 +1885,7 @@ function learndash_use_select2_lib_ajax_fetch() { ...@@ -1885,15 +1885,7 @@ function learndash_use_select2_lib_ajax_fetch() {
1885 */ 1885 */
1886 function learndash_put_directory_index_file( $index_filename = '' ) { 1886 function learndash_put_directory_index_file( $index_filename = '' ) {
1887 if ( ! empty( $index_filename ) ) { 1887 if ( ! empty( $index_filename ) ) {
1888 global $wp_filesystem; 1888 file_put_contents( $index_filename, '//LearnDash is THE Best LMS' );
1889
1890 // Initialize the WP filesystem, no more using 'file-put-contents' function.
1891 if ( empty( $wp_filesystem ) ) {
1892 require_once ABSPATH . '/wp-admin/includes/file.php';
1893 WP_Filesystem();
1894 }
1895
1896 $wp_filesystem->put_contents( $index_filename, '//LearnDash is THE Best LMS', FS_CHMOD_FILE );
1897 } 1889 }
1898 } 1890 }
1899 1891
...@@ -2061,17 +2053,15 @@ add_filter( 'the_title', 'learndash_get_post_title_filter', 99, 2 ); ...@@ -2061,17 +2053,15 @@ add_filter( 'the_title', 'learndash_get_post_title_filter', 99, 2 );
2061 */ 2053 */
2062 function learndash_stripe_addon_deprecation_notice() { 2054 function learndash_stripe_addon_deprecation_notice() {
2063 $class = 'notice notice-warning is-dismissible'; 2055 $class = 'notice notice-warning is-dismissible';
2064 $title = 'LearnDash Stripe Addon Deprecation'; 2056 $title = __( 'LearnDash Stripe Addon Deprecation', 'learndash' );
2065 $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' ); 2057 $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' );
2066 $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' ); 2058 $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' );
2067 2059
2068 $user = wp_get_current_user();
2069
2070 if ( ! function_exists( 'is_plugin_active' ) ) { 2060 if ( ! function_exists( 'is_plugin_active' ) ) {
2071 include_once ABSPATH . 'wp-admin/includes/plugin.php'; 2061 include_once ABSPATH . 'wp-admin/includes/plugin.php';
2072 } 2062 }
2073 2063
2074 if ( is_plugin_active( 'learndash-stripe/learndash-stripe.php' ) && in_array( 'administrator', $user->roles ) ) { 2064 if ( is_plugin_active( 'learndash-stripe/learndash-stripe.php' ) && current_user_can( 'administrator' ) ) {
2075 printf( 2065 printf(
2076 '<div class="%1$s"> 2066 '<div class="%1$s">
2077 <p><strong>%2$s</strong></p> 2067 <p><strong>%2$s</strong></p>
...@@ -2087,3 +2077,33 @@ function learndash_stripe_addon_deprecation_notice() { ...@@ -2087,3 +2077,33 @@ function learndash_stripe_addon_deprecation_notice() {
2087 } 2077 }
2088 2078
2089 add_action( 'admin_notices', 'learndash_stripe_addon_deprecation_notice' ); 2079 add_action( 'admin_notices', 'learndash_stripe_addon_deprecation_notice' );
2080
2081 /**
2082 * Shows admin notice warning if Licensing & Management plugin is not activated.
2083 *
2084 * @since 4.6.0
2085 *
2086 * @return void
2087 */
2088 function learndash_hub_deactivated_notice() {
2089 $class = 'notice notice-warning is-dismissible';
2090 $title = __( 'LearnDash Licensing & Management', 'learndash' );
2091 $message = __( 'Important! The LearnDash Licensing & Management plugin is missing. Please install and/or activate the plugin to ensure your LearnDash license works correctly. ', 'learndash' );
2092 $links = __( '<a href="https://www.learndash.com/support/docs/core/learndash-licensing-and-management/">LearnDash Licensing Guide</a>', 'learndash' );
2093
2094 if ( ! learndash_is_learndash_hub_active() && current_user_can( 'administrator' ) ) {
2095 printf(
2096 '<div class="%1$s">
2097 <p><strong>%2$s</strong></p>
2098 <p>%3$s</p>
2099 <p>%4$s</p>
2100 </div>',
2101 esc_attr( $class ),
2102 esc_html( $title ),
2103 esc_html( $message ),
2104 wp_kses_post( $links )
2105 );
2106 }
2107 }
2108
2109 add_action( 'admin_notices', 'learndash_hub_deactivated_notice' );
......
...@@ -664,6 +664,7 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -664,6 +664,7 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
664 'activity_types' => '', 664 'activity_types' => '',
665 665
666 // An array of activity_status values to filter. Possible values 'NOT_STARTED' , 'IN_PROGRESS', 'COMPLETED'. 666 // An array of activity_status values to filter. Possible values 'NOT_STARTED' , 'IN_PROGRESS', 'COMPLETED'.
667 // This field is converted into a boolean value later (line 796).
667 'activity_status' => '', 668 'activity_status' => '',
668 669
669 // controls number of items to return for request. Pass 0 for ALL items. 670 // 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 ...@@ -721,31 +722,37 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
721 $query_args_org = $query_args; 722 $query_args_org = $query_args;
722 723
723 // Clean the group_ids arg. 724 // Clean the group_ids arg.
724 if ( '' != $query_args['group_ids'] ) { 725 if ( '' !== $query_args['group_ids'] ) {
725 if ( ! is_array( $query_args['group_ids'] ) ) { 726 if ( ! is_array( $query_args['group_ids'] ) ) {
726 $query_args['group_ids'] = explode( ',', $query_args['group_ids'] ); 727 $query_args['group_ids'] = explode( ',', $query_args['group_ids'] );
727 } 728 }
728 $query_args['group_ids'] = array_map( 'trim', $query_args['group_ids'] ); 729 $query_args['group_ids'] = array_map( 'trim', $query_args['group_ids'] );
730 } else {
731 $query_args['group_ids'] = array();
729 } 732 }
730 733
731 // Clean the course_ids arg. 734 // Clean the course_ids arg.
732 if ( '' != $query_args['course_ids'] ) { 735 if ( '' !== $query_args['course_ids'] ) {
733 if ( ! is_array( $query_args['course_ids'] ) ) { 736 if ( ! is_array( $query_args['course_ids'] ) ) {
734 $query_args['course_ids'] = explode( ',', $query_args['course_ids'] ); 737 $query_args['course_ids'] = explode( ',', $query_args['course_ids'] );
735 } 738 }
736 $query_args['course_ids'] = array_map( 'trim', $query_args['course_ids'] ); 739 $query_args['course_ids'] = array_map( 'trim', $query_args['course_ids'] );
740 } else {
741 $query_args['course_ids'] = array();
737 } 742 }
738 743
739 // Clean the post_ids arg. 744 // Clean the post_ids arg.
740 if ( '' != $query_args['post_ids'] ) { 745 if ( '' !== $query_args['post_ids'] ) {
741 if ( ! is_array( $query_args['post_ids'] ) ) { 746 if ( ! is_array( $query_args['post_ids'] ) ) {
742 $query_args['post_ids'] = explode( ',', $query_args['post_ids'] ); 747 $query_args['post_ids'] = explode( ',', $query_args['post_ids'] );
743 } 748 }
744 $query_args['post_ids'] = array_map( 'trim', $query_args['post_ids'] ); 749 $query_args['post_ids'] = array_map( 'trim', $query_args['post_ids'] );
750 } else {
751 $query_args['post_ids'] = array();
745 } 752 }
746 753
747 // Clean the post_types arg. 754 // Clean the post_types arg.
748 if ( '' != $query_args['post_types'] ) { 755 if ( '' !== $query_args['post_types'] ) {
749 if ( is_string( $query_args['post_types'] ) ) { 756 if ( is_string( $query_args['post_types'] ) ) {
750 $query_args['post_types'] = explode( ',', $query_args['post_types'] ); 757 $query_args['post_types'] = explode( ',', $query_args['post_types'] );
751 } 758 }
...@@ -763,24 +770,30 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -763,24 +770,30 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
763 $query_args['post_status'] = explode( ',', $query_args['post_status'] ); 770 $query_args['post_status'] = explode( ',', $query_args['post_status'] );
764 } 771 }
765 $query_args['post_status'] = array_map( 'trim', $query_args['post_status'] ); 772 $query_args['post_status'] = array_map( 'trim', $query_args['post_status'] );
773 } else {
774 $query_args['post_status'] = array();
766 } 775 }
767 776
768 // Clean the user_ids arg. 777 // Clean the user_ids arg.
769 if ( '' != $query_args['user_ids'] ) { 778 if ( '' !== $query_args['user_ids'] ) {
770 if ( ! is_array( $query_args['user_ids'] ) ) { 779 if ( ! is_array( $query_args['user_ids'] ) ) {
771 $query_args['user_ids'] = explode( ',', $query_args['user_ids'] ); 780 $query_args['user_ids'] = explode( ',', $query_args['user_ids'] );
772 } 781 }
773 $query_args['user_ids'] = array_map( 'trim', $query_args['user_ids'] ); 782 $query_args['user_ids'] = array_map( 'trim', $query_args['user_ids'] );
783 } else {
784 $query_args['user_ids'] = array();
774 } 785 }
775 786
776 if ( '' != $query_args['activity_types'] ) { 787 if ( '' !== $query_args['activity_types'] ) {
777 if ( is_string( $query_args['activity_types'] ) ) { 788 if ( is_string( $query_args['activity_types'] ) ) {
778 $query_args['activity_types'] = explode( ',', $query_args['activity_types'] ); 789 $query_args['activity_types'] = explode( ',', $query_args['activity_types'] );
779 } 790 }
780 $query_args['activity_types'] = array_map( 'trim', $query_args['activity_types'] ); 791 $query_args['activity_types'] = array_map( 'trim', $query_args['activity_types'] );
792 } else {
793 $query_args['activity_types'] = array();
781 } 794 }
782 795
783 if ( '' != $query_args['activity_status'] ) { 796 if ( '' !== $query_args['activity_status'] ) {
784 if ( is_string( $query_args['activity_status'] ) ) { 797 if ( is_string( $query_args['activity_status'] ) ) {
785 $query_args['activity_status'] = explode( ',', $query_args['activity_status'] ); 798 $query_args['activity_status'] = explode( ',', $query_args['activity_status'] );
786 } 799 }
...@@ -799,9 +812,22 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -799,9 +812,22 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
799 $query_args['activity_status'][ $idx ] = '0'; 812 $query_args['activity_status'][ $idx ] = '0';
800 } 813 }
801 } 814 }
815 } else {
816 $query_args['activity_status'] = array();
802 } 817 }
803 818
804 if ( ( '' == $query_args['group_ids'] ) && ( '' == $query_args['post_ids'] ) && ( '' == $query_args['user_ids'] ) ) { 819 // Sanitize values.
820
821 $query_args['user_ids'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['user_ids'] ) );
822 $query_args['post_ids'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['post_ids'] ) );
823 $query_args['group_ids'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['group_ids'] ) );
824 $query_args['course_ids'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['course_ids'] ) );
825 $query_args['post_status'] = array_unique( LDLMS_DB::escape_string_array( $query_args['post_status'] ) );
826 $query_args['post_types'] = array_unique( LDLMS_DB::escape_string_array( $query_args['post_types'] ) );
827 $query_args['activity_status'] = array_unique( LDLMS_DB::escape_numeric_array( $query_args['activity_status'] ) );
828 $query_args['activity_types'] = array_unique( LDLMS_DB::escape_string_array( $query_args['activity_types'] ) );
829
830 if ( empty( $query_args['group_ids'] ) && empty( $query_args['post_ids'] ) && empty( $query_args['user_ids'] ) ) {
805 // If no filters were provided. 831 // If no filters were provided.
806 // If the view user is a group leader we just return all the activity for all the managed users. 832 // If the view user is a group leader we just return all the activity for all the managed users.
807 if ( learndash_is_group_leader_user( $current_user_id ) ) { 833 if ( learndash_is_group_leader_user( $current_user_id ) ) {
...@@ -811,7 +837,7 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -811,7 +837,7 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
811 if ( ! learndash_is_group_leader_user( $current_user_id ) ) { 837 if ( ! learndash_is_group_leader_user( $current_user_id ) ) {
812 if ( learndash_is_admin_user( $current_user_id ) ) { 838 if ( learndash_is_admin_user( $current_user_id ) ) {
813 // If the group_ids parameter is passed in we need to determine the course_ids contains in the group_ids. 839 // If the group_ids parameter is passed in we need to determine the course_ids contains in the group_ids.
814 if ( '' != $query_args['group_ids'] ) { 840 if ( ! empty( $query_args['group_ids'] ) ) {
815 $query_args['post_ids'] = learndash_get_groups_courses_ids( $current_user_id, $query_args['group_ids'] ); 841 $query_args['post_ids'] = learndash_get_groups_courses_ids( $current_user_id, $query_args['group_ids'] );
816 } 842 }
817 } else { 843 } else {
...@@ -932,7 +958,6 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -932,7 +958,6 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
932 } 958 }
933 959
934 if ( true !== $activity_status_has_null ) { 960 if ( true !== $activity_status_has_null ) {
935
936 if ( ! empty( $query_args['activity_types'] ) ) { 961 if ( ! empty( $query_args['activity_types'] ) ) {
937 $sql_str_where .= ' AND ld_user_activity.activity_type IN (' . "'" . implode( "','", $query_args['activity_types'] ) . "'" . ') '; 962 $sql_str_where .= ' AND ld_user_activity.activity_type IN (' . "'" . implode( "','", $query_args['activity_types'] ) . "'" . ') ';
938 } 963 }
...@@ -941,7 +966,6 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -941,7 +966,6 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
941 $sql_str_where .= ' AND ld_user_activity.activity_status IN (' . implode( ',', $query_args['activity_status'] ) . ') '; 966 $sql_str_where .= ' AND ld_user_activity.activity_status IN (' . implode( ',', $query_args['activity_status'] ) . ') ';
942 } 967 }
943 } else { 968 } else {
944
945 if ( ! empty( $query_args['activity_status'] ) ) { 969 if ( ! empty( $query_args['activity_status'] ) ) {
946 $sql_str_where .= ' AND (ld_user_activity.activity_status IS NULL OR ld_user_activity.activity_status IN (' . "'" . implode( "','", $query_args['activity_status'] ) . "'" . ') ) '; 970 $sql_str_where .= ' AND (ld_user_activity.activity_status IS NULL OR ld_user_activity.activity_status IN (' . "'" . implode( "','", $query_args['activity_status'] ) . "'" . ') ) ';
947 } else { 971 } else {
...@@ -956,6 +980,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -956,6 +980,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
956 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'] ) ) ) { 980 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'] ) ) ) {
957 $sql_str_where .= ' AND ( '; 981 $sql_str_where .= ' AND ( ';
958 982
983 // This is an old code. We will never get here. activity_status is converted to boolean before this. See line 795.
984
959 if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) { 985 if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) {
960 $sql_str_where .= '(ld_user_activity.activity_started BETWEEN ' . $query_args['time_start_gmt_timestamp'] . ' AND ' . $query_args['time_end_gmt_timestamp'] . ') '; 986 $sql_str_where .= '(ld_user_activity.activity_started BETWEEN ' . $query_args['time_start_gmt_timestamp'] . ' AND ' . $query_args['time_end_gmt_timestamp'] . ') ';
961 $sql_str_where .= ' OR '; 987 $sql_str_where .= ' OR ';
...@@ -974,6 +1000,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -974,6 +1000,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
974 } elseif ( ( isset( $query_args['time_start_gmt_timestamp'] ) ) && ( ! empty( $query_args['time_start_gmt_timestamp'] ) ) ) { 1000 } elseif ( ( isset( $query_args['time_start_gmt_timestamp'] ) ) && ( ! empty( $query_args['time_start_gmt_timestamp'] ) ) ) {
975 $sql_str_where .= ' AND ( '; 1001 $sql_str_where .= ' AND ( ';
976 1002
1003 // This is an old code. We will never get here. activity_status is converted to boolean before this. See line 795.
1004
977 if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) { 1005 if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) {
978 $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']; 1006 $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'];
979 } 1007 }
...@@ -990,6 +1018,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id ...@@ -990,6 +1018,8 @@ function learndash_reports_get_activity( $query_args = array(), $current_user_id
990 } elseif ( ( isset( $query_args['time_end_gmt_timestamp'] ) ) && ( ! empty( $query_args['time_end_gmt_timestamp'] ) ) ) { 1018 } elseif ( ( isset( $query_args['time_end_gmt_timestamp'] ) ) && ( ! empty( $query_args['time_end_gmt_timestamp'] ) ) ) {
991 $sql_str_where .= ' AND ( '; 1019 $sql_str_where .= ' AND ( ';
992 1020
1021 // This is an old code. We will never get here. activity_status is converted to boolean before this. See line 795.
1022
993 if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) { 1023 if ( array_intersect( array( 'NOT_STARTED', 'IN_PROGRESS' ), $query_args_org['activity_status'] ) || empty( $query_args_org['activity_status'] ) ) {
994 $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'] . ')'; 1024 $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'] . ')';
995 } 1025 }
......
...@@ -597,7 +597,7 @@ function learndash_process_user_course_progress_update( $user_id = 0, $user_prog ...@@ -597,7 +597,7 @@ function learndash_process_user_course_progress_update( $user_id = 0, $user_prog
597 if ( ! empty( $quiz_progress ) ) { 597 if ( ! empty( $quiz_progress ) ) {
598 foreach ( $quiz_progress as $quiz_idx => $quiz_item ) { 598 foreach ( $quiz_progress as $quiz_idx => $quiz_item ) {
599 599
600 if ( ( $quiz_item['quiz'] == $quiz_id ) && ( true === $quiz_item['pass'] ) ) { 600 if ( $quiz_item['quiz'] == $quiz_id && true === (bool) $quiz_item['pass'] ) {
601 $quiz_progress[ $quiz_idx ]['pass'] = false; 601 $quiz_progress[ $quiz_idx ]['pass'] = false;
602 602
603 // We need to update the activity database records for this quiz_id. 603 // 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 ...@@ -4,6 +4,23 @@ Changelog for Razorpay-PHP SDK. Follows [keepachangelog.com](https://keepachange
4 4
5 ## Unreleased 5 ## Unreleased
6 6
7 ## [2.8.5] - 2022-10-19
8
9 ### Added
10 - Update [Request](https://github.com/WordPress/Requests/tree/v2.0.4) library to v2.0.4
11
12 ## [2.8.4] - 2022-06-28
13
14 - New APIs for Third party validation (createUpi, validateVpa, fetchPaymentMethods)
15 - Update documentation
16
17 ## [2.8.3] - 2022-04-29
18
19 - PHP v8.1 is officially supported
20 - Update [Request](https://github.com/WordPress/Requests/tree/v2.0.0) library to v2.0
21 - Improve documentation
22 - Add PHPUnit v9
23
7 ## [2.8.2] - 2022-03-08 24 ## [2.8.2] - 2022-03-08
8 25
9 - Change name convention to standard in Unit test 26 - Change name convention to standard in Unit test
......
1 <?php
2 /**
3 * Backwards compatibility layer for Requests.
4 *
5 * Allows for Composer to autoload the old PSR-0 classes via the custom autoloader.
6 * This prevents issues with _extending final classes_ (which was the previous solution).
7 *
8 * Please see the Changelog for the 2.0.4 release for upgrade notes.
9 *
10 * @package Requests
11 *
12 * @deprecated 2.0.4 Use the PSR-4 class names instead.
13 */
14 define("REQUESTS_SILENCE_PSR0_DEPRECATIONS",true);
15
16 if (class_exists('WpOrg\Requests\Autoload') === false) {
17 require_once __DIR__. 'libs/Requests-2.0.4/src/Autoload.php';
18 }
19
20 WpOrg\Requests\Autoload::register();
...\ No newline at end of file ...\ No newline at end of file
1 <?php 1 <?php
2 2
3 // Include Requests only if not already defined 3 // Include Requests only if not already defined
4 if (class_exists('Requests') === false) 4 if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS'))
5 { 5 {
6 require_once __DIR__.'/libs/Requests-1.8.0/library/Requests.php'; 6 define('REQUESTS_SILENCE_PSR0_DEPRECATIONS', true);
7 }
8
9 if (class_exists('WpOrg\Requests\Autoload') === false)
10 {
11 require_once __DIR__.'/libs/Requests-2.0.4/src/Autoload.php';
7 } 12 }
8 13
9 try 14 try
10 { 15 {
11 Requests::register_autoloader(); 16 WpOrg\Requests\Autoload::register();
12 17
13 if (version_compare(Requests::VERSION, '1.6.0') === -1) 18 if (version_compare(Requests::VERSION, '1.6.0') === -1)
14 { 19 {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
3 ### Create an addon 3 ### Create an addon
4 4
5 ```php 5 ```php
6 $api->subscription->fetch($subscriptionId)->createAddon(array('item' => array('name' => 'Extra Chair', 'amount' => 30000, 'currency' => 'INR'), 'quantity' => 2)) 6 $api->subscription->fetch($subscriptionId)->createAddon(array('item' => array('name' => 'Extra Chair', 'amount' => 30000, 'currency' => 'INR'), 'quantity' => 2));
7 ``` 7 ```
8 8
9 **Parameters:** 9 **Parameters:**
...@@ -11,8 +11,8 @@ $api->subscription->fetch($subscriptionId)->createAddon(array('item' => array('n ...@@ -11,8 +11,8 @@ $api->subscription->fetch($subscriptionId)->createAddon(array('item' => array('n
11 | Name | Type | Description | 11 | Name | Type | Description |
12 |-------|-----------|--------------------------------------------------| 12 |-------|-----------|--------------------------------------------------|
13 | subscriptionId* | boolean | The subscription ID to which the add-on is being added. | 13 | subscriptionId* | boolean | The subscription ID to which the add-on is being added. |
14 | items* | array | Details of the add-on you want to create. | 14 | items | array | All parameters listed [here](https://razorpay.com/docs/api/payments/subscriptions/#create-an-add-on) |
15 | quantity* | integer | This specifies the number of units of the add-on to be charged to the customer. | 15 | quantity | integer | This specifies the number of units of the add-on to be charged to the customer. |
16 16
17 **Response:** 17 **Response:**
18 ```json 18 ```json
...@@ -56,10 +56,10 @@ $api->addon->all($options); ...@@ -56,10 +56,10 @@ $api->addon->all($options);
56 56
57 | Name | Type | Description | 57 | Name | Type | Description |
58 |-------|-----------|--------------------------------------------------| 58 |-------|-----------|--------------------------------------------------|
59 | from | timestamp | timestamp after which the payments were created | 59 | from | timestamp | timestamp after which the addons were created |
60 | to | timestamp | timestamp before which the payments were created | 60 | to | timestamp | timestamp before which the addons were created |
61 | count | integer | number of payments to fetch (default: 10) | 61 | count | integer | number of addons to fetch (default: 10) |
62 | skip | integer | number of payments to be skipped (default: 0) | 62 | skip | integer | number of addons to be skipped (default: 0) |
63 63
64 **Response:** 64 **Response:**
65 ```json 65 ```json
...@@ -110,6 +110,7 @@ $api->addon->fetch($addonId); ...@@ -110,6 +110,7 @@ $api->addon->fetch($addonId);
110 | Name | Type | Description | 110 | Name | Type | Description |
111 |-----------------|---------|------------------------------------------------------------------------------| 111 |-----------------|---------|------------------------------------------------------------------------------|
112 | addonId* | string | addon id to be fetched | 112 | addonId* | string | addon id to be fetched |
113
113 **Response:** 114 **Response:**
114 ```json 115 ```json
115 { 116 {
...@@ -150,9 +151,9 @@ $api->addon->fetch($addonId)->delete(); ...@@ -150,9 +151,9 @@ $api->addon->fetch($addonId)->delete();
150 151
151 **Parameters:** 152 **Parameters:**
152 153
153 | Name | Type | Description | 154 | Name | Type | Description |
154 |-----------------|---------|------------------------------------------------------------------------------| 155 |-----------------|---------|--------------|
155 | addonId* | string | addon id to be deleted | 156 | addonId* | string | addon id to be deleted |
156 157
157 **Response:** 158 **Response:**
158 ```json 159 ```json
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 2
3 ### Create customer 3 ### Create customer
4 ```php 4 ```php
5 $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')); 5 $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')));
6 ``` 6 ```
7 7
8 **Parameters:** 8 **Parameters:**
...@@ -47,7 +47,7 @@ $api->order->create(array('amount' => 100, 'currency' => 'INR', 'receipt' => '1 ...@@ -47,7 +47,7 @@ $api->order->create(array('amount' => 100, 'currency' => 'INR', 'receipt' => '1
47 | currency* | string | The currency of the payment (defaults to INR) | 47 | currency* | string | The currency of the payment (defaults to INR) |
48 | customerId* | string | The id of the customer to be fetched | 48 | customerId* | string | The id of the customer to be fetched |
49 | receipt | string | Your system order reference id. | 49 | receipt | string | Your system order reference id. |
50 | method* | string | Payment method used to make the registration transaction. Possible value is `card`. | 50 | method | string | Payment method used to make the registration transaction. Possible value is `card`. |
51 | token | array | All keys listed [here](https://razorpay.com/docs/api/recurring-payments/cards/authorization-transaction/#112-create-an-order) are supported | 51 | token | array | All keys listed [here](https://razorpay.com/docs/api/recurring-payments/cards/authorization-transaction/#112-create-an-order) are supported |
52 | notes | array | A key-value pair | 52 | notes | array | A key-value pair |
53 53
...@@ -91,7 +91,7 @@ $api->subscription->createSubscriptionRegistration(array('customer'=>array('name ...@@ -91,7 +91,7 @@ $api->subscription->createSubscriptionRegistration(array('customer'=>array('name
91 91
92 | Name | Type | Description | 92 | Name | Type | Description |
93 |-----------------|---------|------------------------------------------------------------------------------| 93 |-----------------|---------|------------------------------------------------------------------------------|
94 | customer | array | Details of the customer to whom the registration link will be sent. | 94 | 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 |
95 | type* | array | the value is `link`. | 95 | type* | array | the value is `link`. |
96 | amount* | integer | The amount to be captured (should be equal to the authorized amount, in paise) | 96 | amount* | integer | The amount to be captured (should be equal to the authorized amount, in paise) |
97 | currency* | string | The currency of the payment (defaults to INR) | 97 | currency* | string | The currency of the payment (defaults to INR) |
...@@ -175,7 +175,7 @@ $api->order->create(array('amount' => '100', 'currency' => 'INR', 'customer_id'= ...@@ -175,7 +175,7 @@ $api->order->create(array('amount' => '100', 'currency' => 'INR', 'customer_id'=
175 | amount* | integer | The amount to be captured (should be equal to the authorized amount, in paise) | 175 | amount* | integer | The amount to be captured (should be equal to the authorized amount, in paise) |
176 | currency* | string | The currency of the payment (defaults to INR) | 176 | currency* | string | The currency of the payment (defaults to INR) |
177 | customerId* | string | The id of the customer to be fetched | 177 | customerId* | string | The id of the customer to be fetched |
178 | method* | string | Payment method used to make the registration transaction. Possible value is `card`. | 178 | method | string | Payment method used to make the registration transaction. Possible value is `card`. |
179 | receipt | string | Your system order reference id. | 179 | receipt | string | Your system order reference id. |
180 | 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 | 180 | 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 |
181 | notes | array | A key-value pair | 181 | notes | array | A key-value pair |
...@@ -213,7 +213,7 @@ $api->order->create(array('amount' => '100', 'currency' => 'INR', 'customer_id'= ...@@ -213,7 +213,7 @@ $api->order->create(array('amount' => '100', 'currency' => 'INR', 'customer_id'=
213 ## Create a recurring payment 213 ## Create a recurring payment
214 214
215 ```php 215 ```php
216 $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'))); 216 $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')));
217 ``` 217 ```
218 **Parameters:** 218 **Parameters:**
219 219
...@@ -460,8 +460,23 @@ $api->card->fetch($cardId); ...@@ -460,8 +460,23 @@ $api->card->fetch($cardId);
460 460
461 | Name | Type | Description | 461 | Name | Type | Description |
462 |-----------------|---------|------------------------------------------------------------------------------| 462 |-----------------|---------|------------------------------------------------------------------------------|
463 | cardId* | string | card id to be fetched | 463 | cardId* | string | card id to be fetched |
464 464
465 ```json
466 {
467 "id": "card_JXPULjlKqC5j0i",
468 "entity": "card",
469 "name": "Gaurav",
470 "last4": "4366",
471 "network": "Visa",
472 "type": "credit",
473 "issuer": "UTIB",
474 "international": false,
475 "emi": true,
476 "sub_type": "consumer",
477 "token_iin": null
478 }
479 ```
465 ------------------------------------------------------------------------------------------------------- 480 -------------------------------------------------------------------------------------------------------
466 481
467 ## Delete tokens 482 ## Delete tokens
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 2
3 ### Create customer 3 ### Create customer
4 ```php 4 ```php
5 $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')); 5 $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')));
6 ``` 6 ```
7 7
8 **Parameters:** 8 **Parameters:**
...@@ -12,6 +12,8 @@ $api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@raz ...@@ -12,6 +12,8 @@ $api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@raz
12 | name* | string | Name of the customer | 12 | name* | string | Name of the customer |
13 | email | string | Email of the customer | 13 | email | string | Email of the customer |
14 | contact | string | Contact number of the customer | 14 | contact | string | Contact number of the customer |
15 | 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`|
16 | gstin | string | Customer's GST number, if available. For example, 29XAbbA4369J1PA |
15 | notes | array | A key-value pair | 17 | notes | array | A key-value pair |
16 18
17 **Response:** 19 **Response:**
...@@ -35,7 +37,7 @@ $api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@raz ...@@ -35,7 +37,7 @@ $api->customer->create(array('name' => 'Razorpay User', 'email' => 'customer@raz
35 37
36 ### Edit customer 38 ### Edit customer
37 ```php 39 ```php
38 $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'))); 40 $api->customer->fetch($customerId)->edit(array('name' => 'Razorpay User', 'email' => 'customer@razorpay.com', 'contact' => '9999999999'));
39 ``` 41 ```
40 42
41 **Parameters:** 43 **Parameters:**
...@@ -67,7 +69,7 @@ $api->customer->fetch($customerId)->edit(array('name' => 'Razorpay User', 'email ...@@ -67,7 +69,7 @@ $api->customer->fetch($customerId)->edit(array('name' => 'Razorpay User', 'email
67 69
68 ### Fetch all customer 70 ### Fetch all customer
69 ```php 71 ```php
70 $api->customer->all($options) 72 $api->customer->all($options);
71 ``` 73 ```
72 74
73 **Parameters:** 75 **Parameters:**
...@@ -104,7 +106,7 @@ $api->customer->all($options) ...@@ -104,7 +106,7 @@ $api->customer->all($options)
104 106
105 ### Fetch a customer 107 ### Fetch a customer
106 ```php 108 ```php
107 $api->customer->fetch($customerId) 109 $api->customer->fetch($customerId);
108 ``` 110 ```
109 111
110 **Parameters:** 112 **Parameters:**
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 2
3 ### Create a fund account 3 ### Create a fund account
4 ```php 4 ```php
5 $api->fundAccount->create(array('customer_id'=>$customerId,'account_type'=>'bank_account','bank_account'=>array('name'=>'Gaurav Kumar', 'account_number'=>'11214311215411', 'ifsc'=>'HDFC0000053'))) 5 $api->fundAccount->create(array('customer_id'=>$customerId,'account_type'=>'bank_account','bank_account'=>array('name'=>'Gaurav Kumar', 'account_number'=>'11214311215411', 'ifsc'=>'HDFC0000053')));
6 ``` 6 ```
7 7
8 **Parameters:** 8 **Parameters:**
...@@ -11,23 +11,25 @@ $api->fundAccount->create(array('customer_id'=>$customerId,'account_type'=>'bank ...@@ -11,23 +11,25 @@ $api->fundAccount->create(array('customer_id'=>$customerId,'account_type'=>'bank
11 |---------------|-------------|---------------------------------------------| 11 |---------------|-------------|---------------------------------------------|
12 | customerId* | string | The id of the customer to be fetched | 12 | customerId* | string | The id of the customer to be fetched |
13 | account_type* | string | The bank_account to be linked to the customer ID | 13 | account_type* | string | The bank_account to be linked to the customer ID |
14 | bank_account* | array | A key-value pair | 14 | bank_account* | array | All keys listed [here](https://razorpay.com/docs/payments/customers/customer-fund-account-api/#create-a-fund-account) are supported |
15 15
16 **Response:** 16 **Response:**
17 ```json 17 ```json
18 { 18 {
19 "id":"fa_Aa00000000001", 19 "id": "fa_JcXaLomo4ck5IY",
20 "entity":"fund_account", 20 "entity": "fund_account",
21 "customer_id":"cust_Aa000000000001", 21 "customer_id": "cust_JZse2vlC5nK9AQ",
22 "account_type":"bank_account", 22 "account_type": "bank_account",
23 "bank_account":{ 23 "bank_account": {
24 "name":"Gaurav Kumar", 24 "ifsc": "HDFC0000053",
25 "account_number":"11214311215411", 25 "bank_name": "HDFC Bank",
26 "ifsc":"HDFC0000053", 26 "name": "Gaurav Kumar",
27 "bank_name":"HDFC Bank" 27 "notes": [],
28 }, 28 "account_number": "11214311215411"
29 "active":true, 29 },
30 "created_at":1543650891 30 "batch_id": null,
31 "active": true,
32 "created_at": 1654154246
31 } 33 }
32 ``` 34 ```
33 ------------------------------------------------------------------------------------------------------- 35 -------------------------------------------------------------------------------------------------------
...@@ -47,18 +49,26 @@ $api->fundAccount->all(array('customer_id'=>$customerIds)); ...@@ -47,18 +49,26 @@ $api->fundAccount->all(array('customer_id'=>$customerIds));
47 **Response:** 49 **Response:**
48 ```json 50 ```json
49 { 51 {
50 "id":"fa_Aa00000000001", 52 "entity": "collection",
51 "entity":"fund_account", 53 "count": 2,
52 "customer_id":"cust_Aa000000000001", 54 "items": [
53 "account_type":"bank_account", 55 {
54 "bank_account":{ 56 "id": "fa_JcXYtecLkhW74k",
55 "name":"Gaurav Kumar", 57 "entity": "fund_account",
56 "account_number":"11214311215411", 58 "customer_id": "cust_JZse2vlC5nK9AQ",
57 "ifsc":"HDFC0000053", 59 "account_type": "bank_account",
58 "bank_name":"HDFC Bank" 60 "bank_account": {
59 }, 61 "ifsc": "HDFC0000053",
60 "active":true, 62 "bank_name": "HDFC Bank",
61 "created_at":1543650891 63 "name": "Gaurav Kumar",
64 "notes": [],
65 "account_number": "11214311215411"
66 },
67 "batch_id": null,
68 "active": true,
69 "created_at": 1654154163
70 }
71 ]
62 } 72 }
63 ``` 73 ```
64 ------------------------------------------------------------------------------------------------------- 74 -------------------------------------------------------------------------------------------------------
......
...@@ -12,18 +12,28 @@ $api->Item->create(array("name" => "Book / English August","description" => "An ...@@ -12,18 +12,28 @@ $api->Item->create(array("name" => "Book / English August","description" => "An
12 |-----------------|---------|------------------------------------------------------------------------------| 12 |-----------------|---------|------------------------------------------------------------------------------|
13 | name* | string | Name of the item. | 13 | name* | string | Name of the item. |
14 | description | string | A brief description of the item. | 14 | description | string | A brief description of the item. |
15 | amount | integer | Amount of the order to be paid | 15 | amount* | integer | Amount of the order to be paid |
16 | currency | string | Currency of the order. Currently only `INR` is supported. | 16 | currency* | string | Currency of the order. Currently only `INR` is supported. |
17 17
18 **Response:** 18 **Response:**
19 ```json 19 ```json
20 { 20 {
21 "id": "item_7Oxp4hmm6T4SCn", 21 "id": "item_JInaSLODeDUQiQ",
22 "active": true, 22 "active": true,
23 "name": "Book / English August", 23 "name": "Book / English August",
24 "description": "An indian story, Booker prize winner.", 24 "description": "An indian story, Booker prize winner.",
25 "amount": 20000, 25 "amount": 20000,
26 "currency": "INR" 26 "unit_amount": 20000,
27 "currency": "INR",
28 "type": "invoice",
29 "unit": null,
30 "tax_inclusive": false,
31 "hsn_code": null,
32 "sac_code": null,
33 "tax_rate": null,
34 "tax_id": null,
35 "tax_group_id": null,
36 "created_at": 1649843796
27 } 37 }
28 ``` 38 ```
29 39
...@@ -42,41 +52,49 @@ $api->Item->all($options); ...@@ -42,41 +52,49 @@ $api->Item->all($options);
42 | to | timestamp | timestamp before which the item were created | 52 | to | timestamp | timestamp before which the item were created |
43 | count | integer | number of item to fetch (default: 10) | 53 | count | integer | number of item to fetch (default: 10) |
44 | skip | integer | number of item to be skipped (default: 0) | 54 | skip | integer | number of item to be skipped (default: 0) |
45 | name | string | Name of the item. |
46 | description | string | A brief description of the item. |
47 | amount | integer | Amount of the order to be paid |
48 | currency | string | Currency of the order. Currently only `INR` is supported. |
49 | active | boolean | Possible values is `0` or `1` | 55 | active | boolean | Possible values is `0` or `1` |
50 56
51 **Response:** 57 **Response:**
52 ```json 58 ```json
53 { 59 {
54 "entity": "collection", 60 "entity": "collection",
55 "count": 3, 61 "count": 2,
56 "items": [ 62 "items": [
57 { 63 {
58 "id": "item_7Oy8OMV6BdEAac", 64 "id": "item_JInaSLODeDUQiQ",
59 "active": true,
60 "name": "Book / Ignited Minds",
61 "description": null,
62 "amount": 15000,
63 "currency": "INR"
64 },
65 {
66 "id": "item_7Oxp4hmm6T4SCn",
67 "active": true, 65 "active": true,
68 "name": "Book / English August", 66 "name": "Book / English August",
69 "description": "An indian story, Booker prize winner.", 67 "description": "An indian story, Booker prize winner.",
70 "amount": 20000, 68 "amount": 20000,
71 "currency": "INR" 69 "unit_amount": 20000,
70 "currency": "INR",
71 "type": "invoice",
72 "unit": null,
73 "tax_inclusive": false,
74 "hsn_code": null,
75 "sac_code": null,
76 "tax_rate": null,
77 "tax_id": null,
78 "tax_group_id": null,
79 "created_at": 1649843796
72 }, 80 },
73 { 81 {
74 "id": "item_7OxoGnoxCuUKbo", 82 "id": "item_JIPSg5L06yhHie",
75 "active": true, 83 "active": false,
76 "name": "Book / English August", 84 "name": "Book / Ignited Minds - Updated name!",
77 "description": null, 85 "description": "New descirption too. :).",
78 "amount": 20000, 86 "amount": 20000,
79 "currency": "INR" 87 "unit_amount": 20000,
88 "currency": "INR",
89 "type": "invoice",
90 "unit": null,
91 "tax_inclusive": false,
92 "hsn_code": null,
93 "sac_code": null,
94 "tax_rate": null,
95 "tax_id": null,
96 "tax_group_id": null,
97 "created_at": 1649758835
80 } 98 }
81 ] 99 ]
82 } 100 }
...@@ -96,12 +114,22 @@ $api->Item->fetch($itemId); ...@@ -96,12 +114,22 @@ $api->Item->fetch($itemId);
96 **Response:** 114 **Response:**
97 ```json 115 ```json
98 { 116 {
99 "id": "item_7Oxp4hmm6T4SCn", 117 "id": "item_JInaSLODeDUQiQ",
100 "active": true, 118 "active": true,
101 "name": "Book / English August", 119 "name": "Book / English August",
102 "description": "An indian story, Booker prize winner.", 120 "description": "An indian story, Booker prize winner.",
103 "amount": 20000, 121 "amount": 20000,
104 "currency": "INR" 122 "unit_amount": 20000,
123 "currency": "INR",
124 "type": "invoice",
125 "unit": null,
126 "tax_inclusive": false,
127 "hsn_code": null,
128 "sac_code": null,
129 "tax_rate": null,
130 "tax_id": null,
131 "tax_group_id": null,
132 "created_at": 1649843796
105 } 133 }
106 ``` 134 ```
107 135
...@@ -127,12 +155,22 @@ $api->Item->fetch($itemId)->edit(array("name" => "Book / Ignited Minds - Updated ...@@ -127,12 +155,22 @@ $api->Item->fetch($itemId)->edit(array("name" => "Book / Ignited Minds - Updated
127 **Response:** 155 **Response:**
128 ```json 156 ```json
129 { 157 {
130 "id": "item_7Oy8OMV6BdEAac", 158 "id": "item_JInaSLODeDUQiQ",
131 "active": true, 159 "active": true,
132 "name": "Book / Ignited Minds - Updated name!", 160 "name": "Book / Ignited Minds - Updated name!",
133 "description": "New descirption too. :)", 161 "description": "New descirption too. :).",
134 "amount": 15000, 162 "amount": 20000,
135 "currency": "INR" 163 "unit_amount": 20000,
164 "currency": "INR",
165 "type": "invoice",
166 "unit": null,
167 "tax_inclusive": false,
168 "hsn_code": null,
169 "sac_code": null,
170 "tax_rate": null,
171 "tax_id": null,
172 "tax_group_id": null,
173 "created_at": 1649843796
136 } 174 }
137 ``` 175 ```
138 ------------------------------------------------------------------------------------------------------- 176 -------------------------------------------------------------------------------------------------------
......
...@@ -13,7 +13,8 @@ $api->order->create(array('receipt' => '123', 'amount' => 100, 'currency' => 'IN ...@@ -13,7 +13,8 @@ $api->order->create(array('receipt' => '123', 'amount' => 100, 'currency' => 'IN
13 | amount* | integer | Amount of the order to be paid | 13 | amount* | integer | Amount of the order to be paid |
14 | currency* | string | Currency of the order. Currently only `INR` is supported. | 14 | currency* | string | Currency of the order. Currently only `INR` is supported. |
15 | receipt | string | Your system order reference id. | 15 | receipt | string | Your system order reference id. |
16 | notes | array | A key-value pair | 16 | notes | array | A key-value pair |
17 |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. |
17 18
18 **Response:** 19 **Response:**
19 20
...@@ -35,6 +36,44 @@ $api->order->create(array('receipt' => '123', 'amount' => 100, 'currency' => 'IN ...@@ -35,6 +36,44 @@ $api->order->create(array('receipt' => '123', 'amount' => 100, 'currency' => 'IN
35 ``` 36 ```
36 37
37 ------------------------------------------------------------------------------------------------------- 38 -------------------------------------------------------------------------------------------------------
39 ### Create order (Third party validation)
40
41 ```php
42 $api->order->create(array('amount' => 500, 'receipt' => 'BILL13375649', 'method' => 'netbanking', 'currency' => 'INR', 'bank_account'=> array('account_number'=> '765432123456789','name'=> 'Gaurav Kumar','ifsc'=>'HDFC0000053')));
43 ```
44
45 **Parameters:**
46
47 | Name | Type | Description |
48 |-----------------|---------|------------------------------------------------------------------------------|
49 | amount* | integer | Amount of the order to be paid |
50 | 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`|
51 | notes | array | A key-value pair |
52 | currency* | string | Currency of the order. Currently only `INR` is supported. |
53 | receipt | string | Your system order reference id. |
54 | notes | array | A key-value pair |
55 |bank_account | array | All keys listed [here](https://razorpay.com/docs/payments/third-party-validation/#step-2-create-an-order) are supported |
56
57 **Response:**
58
59 ```json
60 {
61 "id": "order_GAWN9beXgaqRyO",
62 "entity": "order",
63 "amount": 500,
64 "amount_paid": 0,
65 "amount_due": 500,
66 "currency": "INR",
67 "receipt": "BILL13375649",
68 "offer_id": null,
69 "status": "created",
70 "attempts": 0,
71 "notes": [],
72 "created_at": 1573044247
73 }
74 ```
75
76 -------------------------------------------------------------------------------------------------------
38 77
39 ### Fetch all orders 78 ### Fetch all orders
40 79
...@@ -52,6 +91,7 @@ $api->order->all($options); ...@@ -52,6 +91,7 @@ $api->order->all($options);
52 | skip | integer | number of orders to be skipped (default: 0) | 91 | skip | integer | number of orders to be skipped (default: 0) |
53 | authorized | boolean | Orders for which orders are currently in authorized state. | 92 | authorized | boolean | Orders for which orders are currently in authorized state. |
54 | receipt | string | Orders with the provided value for receipt. | 93 | receipt | string | Orders with the provided value for receipt. |
94 | expand[] | string | Used to retrieve additional information about the payment. Possible value is `payments`,`payments.card`,`transfers` or `virtual_account` |
55 95
56 **Response:** 96 **Response:**
57 97
...@@ -94,17 +134,21 @@ $api->order->fetch($orderId); ...@@ -94,17 +134,21 @@ $api->order->fetch($orderId);
94 134
95 ```json 135 ```json
96 { 136 {
97 "id":"order_DaaS6LOUAASb7Y", 137 "id": "order_IXnOAMw6SSqKvN",
98 "entity":"order", 138 "entity": "order",
99 "amount":2200, 139 "amount": 100,
100 "amount_paid":0, 140 "amount_paid": 0,
101 "amount_due":2200, 141 "amount_due": 100,
102 "currency":"INR", 142 "currency": "INR",
103 "receipt":"Receipt #211", 143 "receipt": "Receipt no. 1",
104 "status":"attempted", 144 "offer_id": null,
105 "attempts":1, 145 "status": "created",
106 "notes":[], 146 "attempts": 0,
107 "created_at":1572505143 147 "notes": {
148 "notes_key_1": "Tea, Earl Grey, Hot",
149 "notes_key_2": "Tea, Earl Grey… decaf."
150 },
151 "created_at": 1639581113
108 } 152 }
109 ``` 153 ```
110 ------------------------------------------------------------------------------------------------------- 154 -------------------------------------------------------------------------------------------------------
......
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.