[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fPGKOnjknyEfxgzDy_-4RdLRArNKkLHvFOf-UdO0cpdQ":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":24,"download_link":25,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":37,"analysis":137,"fingerprints":343},"course-wizard-for-sensei","Course Wizard for Sensei","1.7.2","Open-DSI","https:\u002F\u002Fprofiles.wordpress.org\u002Fopendsi\u002F","\u003Cp>Create, duplicate and edit Sensei courses, modules, lessons and questions. Instead of having to navigate between 5 or 6 screens full of options, the Wizard will help you design courses all within the same, intuitive interface. Last but not least, your modifications will show instantly on the right side of the wizard screen so you can preview your course, just how students will take it.\u003C\u002Fp>\n\u003Cp>Made for the \u003Ca href=\"https:\u002F\u002Fwoocommerce.com\u002Fproducts\u002Fsensei\u002F\" rel=\"nofollow ugc\">Sensei\u003C\u002Fa> Learning Management System plugin for WordPress.\u003C\u002Fp>\n","Easily design and edit courses with this Wizard for Sensei LMS.",70,4380,0,"2019-02-12T16:44:00.000Z","5.0.25","4.7","",[19,20,21,22,23],"course","lesson","module","sensei","wizard","http:\u002F\u002Fgit.open-dsi.fr\u002Fwordpress-plugin\u002Fcourse-wizard-for-sensei","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcourse-wizard-for-sensei.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":26,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"opendsi",5,150,30,84,"2026-04-04T17:02:08.601Z",[38,61,79,101,119],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":48,"num_ratings":49,"last_updated":50,"tested_up_to":51,"requires_at_least":52,"requires_php":53,"tags":54,"homepage":58,"download_link":59,"security_score":60,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"sensei-certificates","Sensei LMS Certificates","2.5.4","Automattic","https:\u002F\u002Fprofiles.wordpress.org\u002Fautomattic\u002F","\u003Ch4>Award your students with a certificate of completion for their completed courses.\u003C\u002Fh4>\n\u003Cp>There’s no feeling quite like it. You’ve studied hard, taken your test and passed (with flying colours, I’m sure)! After all that effort, you’re finally at the end of the course. You want to share this accolade with everyone. Print out your certificate!\u003C\u002Fp>\n\u003Cp>With Sensei LMS Certificates, your students are awarded a certificate for each course they complete through your online school. These certificates can be downloaded, printed and framed on their office wall, or stuck up on the fridge for the entire family to enjoy. If you’d like to make certificates public for all to view, that’s available as well.\u003C\u002Fp>\n\u003Ch4>Customise the certificate design\u003C\u002Fh4>\n\u003Cp>Sensei LMS Certificates includes an advanced certificate design system. Through this system, you can upload your own background image, place and style the size, typeface and colour of the various pieces of text on the certificate and truly create a unique design best suited to your online school.\u003C\u002Fp>\n\u003Cp>If you don’t fancy yourself as a designer, or would prefer to get up and running in not much time, Sensei LMS Certificates includes a stylish default certificate design, suited to any genre of online school.\u003C\u002Fp>\n\u003Ch4>We already have many students who have completed courses! Can they get certificates as well?\u003C\u002Fh4>\n\u003Cp>They certainly can! When activating Sensei LMS Certificates, you will be prompted to generate certificates for each student who has already completed a course. Thankfully, this can be done, for all students, with the click of a button.\u003C\u002Fp>\n\u003Ch4>Increase student retention\u003C\u002Fh4>\n\u003Cp>We all enjoy receiving rewards. If your students complete a single course, and receive their certificate for the hard work they’ve done, they will be statistically more likely to continue on to a further course, in order to re-live the rewarding experience of receiving a certificate for their efforts.\u003C\u002Fp>\n\u003Cp>We look forward to seeing your students light up with excitement when they receive their certificates for all the hard work they’ve done in completing your courses.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Easily-customised certificate design\u003C\u002Fli>\n\u003Cli>Lean code, to ensure a pleasant experience\u003C\u002Fli>\n\u003Cli>Intuitive integration with Sensei LMS\u003C\u002Fli>\n\u003C\u002Ful>\n","Award your students with a certificate of completion and a sense of accomplishment after finishing a course.",5000,140674,20,1,"2025-12-16T08:51:00.000Z","6.9.4","6.7","7.4",[55,56,57],"certificates","course-certificate","sensei-lms","https:\u002F\u002Fwoocommerce.com\u002Fproducts\u002Fsensei-certificates\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsensei-certificates.2.5.4.zip",100,{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":69,"downloaded":70,"rating":13,"num_ratings":13,"last_updated":71,"tested_up_to":72,"requires_at_least":73,"requires_php":53,"tags":74,"homepage":77,"download_link":78,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"sensei-post-to-course","Sensei LMS Post to Course Creator","1.2.1","Donna Peplinskie (a11n)","https:\u002F\u002Fprofiles.wordpress.org\u002Fdonnapep\u002F","\u003Cp>Sensei LMS Post to Course Creator takes the wealth of information you’ve already gathered in your blog posts, and turns it into an online course.\u003C\u002Fp>\n\u003Cp>To convert your posts to courses, go to \u003Cem>Tools\u003C\u002Fem> > \u003Cem>Post to Course Creator\u003C\u002Fem>, give your course a name, and select a category. Every post with the specified category is then recreated as a lesson.\u003C\u002Fp>\n\u003Cp>When the lesson is created, the following information is carried over from the post:\u003Cbr \u002F>\n* Title\u003Cbr \u002F>\n* Content\u003Cbr \u002F>\n* Excerpt\u003Cbr \u002F>\n* Featured image\u003C\u002Fp>\n\u003Cp>Create as many new courses as you like!\u003C\u002Fp>\n","Turn your blog posts into online courses!",1000,24330,"2024-01-25T16:45:00.000Z","6.4.8","6.2",[19,75,76,22],"lms","online-course","https:\u002F\u002Fgithub.com\u002Fautomattic\u002Fsensei-post-to-course","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsensei-post-to-course.1.2.1.zip",{"slug":80,"name":81,"version":82,"author":83,"author_profile":84,"description":85,"short_description":86,"active_installs":87,"downloaded":88,"rating":89,"num_ratings":90,"last_updated":91,"tested_up_to":51,"requires_at_least":92,"requires_php":93,"tags":94,"homepage":99,"download_link":100,"security_score":60,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"lifterlms-lite-lms-progress-tracker","Lite LMS Progress Tracker by LifterLMS – Simple Course, Membership Site and Content Progress Tracking for WordPress","0.1.1","LifterLMS","https:\u002F\u002Fprofiles.wordpress.org\u002Flifterlms\u002F","\u003Cp>\u003Cstrong>Lite LMS Progress Tracker\u003C\u002Fstrong> by \u003Ca href=\"https:\u002F\u002Flifterlms.com\u002F?utm_source=Lite%20LMS%20Progress%20Tracker%Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale\" rel=\"nofollow ugc\">LifterLMS\u003C\u002Fa> is a lightweight block plugin that allows users and visitors to track their progress through content on your website.\u003C\u002Fp>\n\u003Cp>With a simple and customizable “Mark Complete” button, you can add progress tracking to any post or page on your site!\u003C\u002Fp>\n\u003Cp>You can even link the “Mark Complete” buttons anywhere you like to create learning paths, tracks, or courses through your website content.\u003C\u002Fp>\n\u003Cp>Think of it as a lightweight Learning Management System (LMS) for a website project that isn’t ready yet for all the advanced functionality in a full featured WordPress LMS plugin.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Benefits\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Allow users to track their progress through your website content (even if they’re not logged in)\u003C\u002Fli>\n\u003Cli>Design learning paths through your website content\u003C\u002Fli>\n\u003Cli>Avoid frustrating website visitors by allowing them to track what content they’ve already consumed\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Use Cases\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Create simple online courses\u003C\u002Fli>\n\u003Cli>Allow your membership site members to track their progress through your content\u003C\u002Fli>\n\u003Cli>Empower website visitors to come back and know what they’ve already consumed\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Who Is This For?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Membership Site Owners\u003C\u002Fli>\n\u003Cli>Course Creators\u003C\u002Fli>\n\u003Cli>Content Creators & Site Owners\u003C\u002Fli>\n\u003Cli>WordPress Professionals\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Documentation\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flifterlms.com\u002Fdocs\u002Flite-lms-by-lifterlms\u002F?utm_source=Lite%20LMS%20Progress%20Tracker%Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale\" rel=\"nofollow ugc\">Knowledge Base\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Optional Advanced Integrations\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Lite LMS Progress Tracker is made by \u003Ca href=\"https:\u002F\u002Flifterlms.com\u002F?utm_source=Lite%20LMS%20Progress%20Tracker%Plugin&utm_medium=README&utm_campaign=Readme%20to%20Sale\" rel=\"nofollow ugc\">LifterLMS\u003C\u002Fa>. If you choose to also use Lite LMS Progress Tracker with the \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Flifterlms\u002F\" rel=\"ugc\">free open source LifterLMS plugin\u003C\u002Fa>\u003C\u002Fstrong>, you will soon see some additional benefits:\u003Cbr \u002F>\n+ Lite LMS Progress Tracker user tracking data added to the LifterLMS reporting area (coming soon)\u003C\u002Fp>\n","The easiest way to track progress through simple online courses and other types of content on your WordPress website.",300,8145,94,3,"2025-11-27T20:55:00.000Z","5.4","7.3",[95,19,96,97,98],"block","elearning","lessons","progress-tracking","https:\u002F\u002Fgithub.com\u002Fgocodebox\u002Flifterlms-lite-lms-progress-tracker","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flifterlms-lite-lms-progress-tracker.0.1.1.zip",{"slug":102,"name":103,"version":104,"author":105,"author_profile":106,"description":107,"short_description":108,"active_installs":109,"downloaded":110,"rating":60,"num_ratings":90,"last_updated":111,"tested_up_to":112,"requires_at_least":113,"requires_php":53,"tags":114,"homepage":117,"download_link":118,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"sensei-lesson-timer","Element Lesson Timer for Sensei","2.0.2","Element LMS","https:\u002F\u002Fprofiles.wordpress.org\u002Fskinnycat\u002F","\u003Cp>Need a way to ensure that a student spends the requisite time on a lesson? Element LMS’s Lesson Timer for Sensei solves this problem by providing a visual countdown timer and disabling the “Complete Lesson” button until the countdown has hit zero.\u003C\u002Fp>\n\u003Cp>FEATURES:\u003Cbr \u002F>\n* Set a required time for each lesson in increments of one minute.\u003Cbr \u002F>\n* Optional warning message if learner leaves the lesson.\u003Cbr \u002F>\n* Auto-complete the lesson when the timer reaches zero.\u003Cbr \u002F>\n* Pause the lesson time when the browser is not in view.\u003Cbr \u002F>\n* Disable lesson timer by role.\u003Cbr \u002F>\n* Customize timer look and feel through css.\u003C\u002Fp>\n\u003Cp>Lesson Timer for Sensei has been tested with WooTheme-Sensei and WooThemes Sensei-module, and the latest versions of Chrome, IE, Safari, Firefox and Opera.\u003C\u002Fp>\n\u003Ch3>About ElementLMS\u003C\u002Fh3>\n\u003Cp>Element LMS is a Silver WooExpert with a focus on using WordPress to deliver online learning. Using Sensei and the Element suite of plugins, we transform WordPress into a SAAS online learning environment. We host and support our Learning Management System (LMS) for clients. For more information about Element LMS and our work, please goto \u003Ca href=\"http:\u002F\u002Fwww.elementlms.com\" rel=\"nofollow ugc\">http:\u002F\u002Fwww.elementlms.com\u003C\u002Fa>\u003C\u002Fp>\n","Lesson Timer for Sensei - a Sensei LMS plugin that adds a countdown timer to the lesson, forcing the learner to stay in the lesson until time expires.",90,6956,"2021-10-18T15:35:00.000Z","5.8.13","5.3",[96,115,75,116,22],"elementlms","online-courses","https:\u002F\u002Fwww.elementplugins.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsensei-lesson-timer.2.0.2.zip",{"slug":120,"name":121,"version":122,"author":123,"author_profile":124,"description":125,"short_description":126,"active_installs":11,"downloaded":127,"rating":13,"num_ratings":13,"last_updated":128,"tested_up_to":129,"requires_at_least":130,"requires_php":131,"tags":132,"homepage":135,"download_link":136,"security_score":60,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"mycred-for-courseware","myCred for Courseware","1.1.8","Saad Iqbal","https:\u002F\u002Fprofiles.wordpress.org\u002Fsaadiqbal\u002F","\u003Cp>📢🚨 \u003Cstrong>Important Notice: myCred for Courseware is now part of the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmycred-toolkit\u002F\" rel=\"ugc\">myCred Toolkit\u003C\u002Fa> and will no longer receive updates here. Only security fixes will be provided.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fflyplugins.com\u002Fwp-courseware\u002F\" rel=\"nofollow ugc\">Courseware\u003C\u002Fa> allows you to create a course, a module, a course unit with course content, and perhaps a quiz or surveys. Drag and drop to arrange the course and create a course outline using our [shortcodes] or widget. Courses can have automatic enrolment so you don’t have to worry about enrolling students. Course certificates can be distributed at the end of a course.\u003C\u002Fp>\n\u003Cp>This plugin allows you to reward your users with points for completing units, modules or courses with support for myCred badges.\u003C\u002Fp>\n\u003Ch4>myCred for Courseware Features\u003C\u002Fh4>\n\u003Cp>Here are the most notable features of myCred for Courseware.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Award points for completing units.\u003C\u002Fli>\n\u003Cli>Award points for completing modules.\u003C\u002Fli>\n\u003Cli>Award points for completing courses.\u003C\u002Fli>\n\u003Cli>Badge support.\u003C\u002Fli>\n\u003Cli>Translation ready.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Plugin Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmycred\u002F\" rel=\"ugc\">myCred 1.8+\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fflyplugins.com\u002Fwp-courseware\u002F\" rel=\"nofollow ugc\">Courseware\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>WordPress 5.0+\u003C\u002Fli>\n\u003Cli>PHP 5.3+\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>More myCred Freebies Integrations\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fmycred.me\u002Fstore\u002Fmycred-h5p\" rel=\"nofollow ugc\">myCred H5P\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fmycred.me\u002Fstore\u002Fmycred-credly\" rel=\"nofollow ugc\">myCred Credly\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-learndash\u002F\" rel=\"nofollow ugc\">myCred – Learndash\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-lifterlms-integration\" rel=\"nofollow ugc\">LifterLMS Plugin Integration with myCred \u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-bp-group-leaderboards\" rel=\"nofollow ugc\">myCred BP Group Leaderboards\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-for-event-espresso-4\" rel=\"nofollow ugc\">myCred for Event Espresso 4.6+\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fmycred.me\u002Fstore\u002Fmycred-for-wp-pro-quiz\u002F\" rel=\"nofollow ugc\">myCred for Wp-Pro-Quiz\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-for-rating-form\" rel=\"nofollow ugc\">myCred for Rating Form\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-birthdays\" rel=\"nofollow ugc\">myCred Birthdays\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-for-wp-postviews\" rel=\"nofollow ugc\">myCred for WP-PostViews\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fmycred.me\u002Fstore\u002Fmycred-for-totalpoll\" rel=\"nofollow ugc\">myCred for TotalPoll\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-gutenberg\" rel=\"nofollow ugc\">myCred Gutenberg\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-for-events-manager-pro\" rel=\"nofollow ugc\">myCred for Events Manager Pro\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-for-buddypress-compliments\" rel=\"nofollow ugc\">myCred for BuddyPress Compliments\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-retro\" rel=\"nofollow ugc\">myCred Retro\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-for-gd-star-rating\" rel=\"nofollow ugc\">myCred for GD Star Rating\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fmycred.me\u002Fstore\u002Fmycred-for-buddypress-links\" rel=\"nofollow ugc\">myCred for BuddyPress Links\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fmycred.me\u002Fstore\u002Fmycred-for-bp-album-bp-gallery\" rel=\"nofollow ugc\">myCred for BP Album and BP Gallery\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fmycred.me\u002Fstore\u002Fmycred-elementor\u002F\" rel=\"nofollow ugc\">myCred Elementor\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>DOCUMENTATION AND SUPPORT\u003C\u002Fh4>\n\u003Cp>For more information visit our \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.mycred.me\u002Fstore\u002Fmycred-for-courseware\" rel=\"nofollow ugc\">Documentation Page\u003C\u002Fa>\u003C\u002Fstrong>.\u003C\u002Fp>\n","📢🚨 Important Notice: myCred for Courseware is now part of the myCred Toolkit and will no longer receive updates here. Only security fixes will be prov &hellip;",4389,"2025-04-17T07:10:00.000Z","6.8.5","4.8","7.0",[19,75,21,133,134],"mycred","wp-courseware","http:\u002F\u002Fmycred.me","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmycred-for-courseware.1.1.8.zip",{"attackSurface":138,"codeSignals":218,"taintFlows":273,"riskAssessment":334,"analyzedAt":342},{"hooks":139,"ajaxHandlers":209,"restRoutes":215,"shortcodes":216,"cronEvents":217,"entryPointCount":49,"unprotectedCount":49},[140,146,151,156,159,163,166,168,173,176,180,182,184,187,193,197,200,204,206],{"type":141,"name":142,"callback":143,"file":144,"line":145},"action","admin_notices","no_sensei_admin_notice__warning","includes\\class-course-wizard-for-sensei-controller.php",49,{"type":141,"name":147,"callback":148,"file":149,"line":150},"admin_menu","register_submenu_page","includes\\class-course-wizard-for-sensei-page.php",67,{"type":152,"name":153,"callback":154,"file":149,"line":155},"filter","sensei_scripts_allowed_pages","sensei_allow_course_wizard_page",80,{"type":152,"name":157,"callback":154,"file":149,"line":158},"sensei_module_admin_script_page_white_lists",81,{"type":141,"name":160,"callback":161,"file":149,"line":162},"plugins_loaded","enqueue_scripts",86,{"type":141,"name":160,"callback":164,"file":149,"line":165},"set_requested_vars",88,{"type":141,"name":160,"callback":167,"file":149,"line":109},"cws_page_loaded",{"type":152,"name":169,"callback":170,"priority":171,"file":149,"line":172},"show_admin_bar","__return_false",99,334,{"type":141,"name":147,"callback":174,"file":149,"line":175},"empty_admin_menu",336,{"type":141,"name":177,"callback":178,"file":149,"line":179},"admin_enqueue_scripts","admin_enqueue_styles",384,{"type":141,"name":177,"callback":177,"priority":48,"file":149,"line":181},385,{"type":141,"name":177,"callback":161,"file":149,"line":183},387,{"type":141,"name":177,"callback":185,"file":149,"line":186},"enqueue_styles",388,{"type":141,"name":188,"callback":189,"priority":190,"file":191,"line":192},"init","init_settings",11,"includes\\class-course-wizard-for-sensei-settings.php",62,{"type":141,"name":194,"callback":195,"file":191,"line":196},"admin_init","register_settings",65,{"type":141,"name":147,"callback":198,"file":191,"line":199},"add_menu_item",68,{"type":141,"name":177,"callback":177,"priority":201,"file":202,"line":203},10,"includes\\class-course-wizard-for-sensei.php",133,{"type":141,"name":177,"callback":178,"priority":201,"file":202,"line":205},134,{"type":141,"name":188,"callback":207,"priority":13,"file":202,"line":208},"load_localisation",144,[210],{"action":211,"nopriv":212,"callback":213,"hasNonce":212,"hasCapCheck":212,"file":149,"line":214},"cws_ajax_form",false,"ajax_form",78,[],[],[],{"dangerousFunctions":219,"sqlUsage":220,"outputEscaping":222,"fileOperations":13,"externalRequests":13,"nonceChecks":49,"capabilityChecks":49,"bundledLibraries":272},[],{"prepared":13,"raw":13,"locations":221},[],{"escaped":223,"rawEcho":224,"locations":225},170,21,[226,230,232,234,236,238,240,242,243,245,247,250,253,255,258,260,262,265,266,268,270],{"file":227,"line":228,"context":229},"includes\\class-course-wizard-for-sensei-form.php",36,"raw output",{"file":227,"line":231,"context":229},231,{"file":227,"line":233,"context":229},232,{"file":227,"line":235,"context":229},233,{"file":227,"line":237,"context":229},241,{"file":227,"line":239,"context":229},540,{"file":149,"line":241,"context":229},228,{"file":149,"line":237,"context":229},{"file":149,"line":244,"context":229},288,{"file":149,"line":246,"context":229},303,{"file":248,"line":249,"context":229},"includes\\class-course-wizard-for-sensei-screen-course.php",463,{"file":251,"line":252,"context":229},"includes\\class-course-wizard-for-sensei-screen-lesson.php",693,{"file":251,"line":254,"context":229},801,{"file":256,"line":257,"context":229},"includes\\class-course-wizard-for-sensei-screen-question.php",589,{"file":256,"line":259,"context":229},692,{"file":256,"line":261,"context":229},826,{"file":263,"line":264,"context":229},"includes\\class-course-wizard-for-sensei-screen.php",285,{"file":263,"line":246,"context":229},{"file":263,"line":267,"context":229},402,{"file":191,"line":269,"context":229},324,{"file":191,"line":271,"context":229},399,[],[274,291,304,315,326],{"entryPoint":275,"graph":276,"unsanitizedCount":49,"severity":290},"settings_page (includes\\class-course-wizard-for-sensei-settings.php:332)",{"nodes":277,"edges":288},[278,283],{"id":279,"type":280,"label":281,"file":191,"line":282},"n0","source","$_GET",341,{"id":284,"type":285,"label":286,"file":191,"line":271,"wp_function":287},"n1","sink","echo() [XSS]","echo",[289],{"from":279,"to":284,"sanitized":212},"medium",{"entryPoint":292,"graph":293,"unsanitizedCount":13,"severity":303},"\u003Cclass-course-wizard-for-sensei-screen-lesson> (includes\\class-course-wizard-for-sensei-screen-lesson.php:0)",{"nodes":294,"edges":300},[295,298],{"id":279,"type":280,"label":296,"file":251,"line":297},"$_POST (x2)",418,{"id":284,"type":285,"label":286,"file":251,"line":299,"wp_function":287},858,[301],{"from":279,"to":284,"sanitized":302},true,"low",{"entryPoint":305,"graph":306,"unsanitizedCount":13,"severity":303},"\u003Cclass-course-wizard-for-sensei-screen-module> (includes\\class-course-wizard-for-sensei-screen-module.php:0)",{"nodes":307,"edges":313},[308,311],{"id":279,"type":280,"label":309,"file":310,"line":231},"$_POST","includes\\class-course-wizard-for-sensei-screen-module.php",{"id":284,"type":285,"label":286,"file":310,"line":312,"wp_function":287},810,[314],{"from":279,"to":284,"sanitized":302},{"entryPoint":316,"graph":317,"unsanitizedCount":13,"severity":303},"\u003Cclass-course-wizard-for-sensei-screen-question> (includes\\class-course-wizard-for-sensei-screen-question.php:0)",{"nodes":318,"edges":324},[319,322],{"id":279,"type":280,"label":320,"file":256,"line":321},"$_POST (x3)",265,{"id":284,"type":285,"label":286,"file":256,"line":323,"wp_function":287},824,[325],{"from":279,"to":284,"sanitized":302},{"entryPoint":327,"graph":328,"unsanitizedCount":49,"severity":303},"\u003Cclass-course-wizard-for-sensei-settings> (includes\\class-course-wizard-for-sensei-settings.php:0)",{"nodes":329,"edges":332},[330,331],{"id":279,"type":280,"label":281,"file":191,"line":282},{"id":284,"type":285,"label":286,"file":191,"line":271,"wp_function":287},[333],{"from":279,"to":284,"sanitized":212},{"summary":335,"deductions":336},"The plugin \"course-wizard-for-sensei\" v1.7.2 exhibits a generally good security posture with several positive indicators. The absence of known CVEs and common vulnerability types in its history is a strong sign of a well-maintained and secure plugin. The code analysis reveals a commitment to secure coding practices, with 100% of SQL queries using prepared statements, a high percentage of properly escaped output, and no file operations or external HTTP requests. The presence of nonce and capability checks, while limited, also contributes to its security.\n\nHowever, a significant concern arises from the static analysis, which identifies one unprotected AJAX handler as the sole entry point into the plugin's attack surface. This single unprotected entry point, while not directly indicating a vulnerability without further taint analysis, represents a potential avenue for attackers to interact with the plugin in ways not intended or secured. The taint analysis did not reveal any critical or high-severity unsanitized flows, which is reassuring, but the presence of two flows with unsanitized paths warrants attention, even if their severity is not explicitly stated as critical.\n\nIn conclusion, \"course-wizard-for-sensei\" v1.7.2 is largely secure, with strengths in its clean vulnerability history and adherence to many secure coding principles. The primary weakness lies in the single unprotected AJAX handler, which, if not handled carefully within its implementation, could pose a risk. The presence of unsanitized paths in taint analysis, though not critical, also suggests a minor area for improvement. Overall, the plugin is relatively safe, but this one unprotected entry point should be closely monitored and potentially addressed in future updates.",[337,340],{"reason":338,"points":339},"Unprotected AJAX handler",7,{"reason":341,"points":32},"Flows with unsanitized paths","2026-03-16T21:36:17.291Z",{"wat":344,"direct":367},{"assetPaths":345,"generatorPatterns":355,"scriptPaths":356,"versionParams":357},[346,347,348,349,350,351,352,353,354],"\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fcss\u002Fbootstrap.min.css","\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fcss\u002Ffontawesome.min.css","\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fcss\u002Fstyle.css","\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fjs\u002Fadmin.js","\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fjs\u002Fbootstrap.min.js","\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fjs\u002Fjquery.min.js","\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fjs\u002Fscript.js","\u002Fwp-content\u002Fplugins\u002Fcourse-wizard-for-sensei\u002Fassets\u002Fjs\u002Fsettings.js",[],[354],[358,359,360,361,362,363,364,365,366],"course-wizard-for-sensei\u002Fassets\u002Fcss\u002Fadmin.css?ver=","course-wizard-for-sensei\u002Fassets\u002Fcss\u002Fbootstrap.min.css?ver=","course-wizard-for-sensei\u002Fassets\u002Fcss\u002Ffontawesome.min.css?ver=","course-wizard-for-sensei\u002Fassets\u002Fcss\u002Fstyle.css?ver=","course-wizard-for-sensei\u002Fassets\u002Fjs\u002Fadmin.js?ver=","course-wizard-for-sensei\u002Fassets\u002Fjs\u002Fbootstrap.min.js?ver=","course-wizard-for-sensei\u002Fassets\u002Fjs\u002Fjquery.min.js?ver=","course-wizard-for-sensei\u002Fassets\u002Fjs\u002Fscript.js?ver=","course-wizard-for-sensei\u002Fassets\u002Fjs\u002Fsettings.js?ver=",{"cssClasses":368,"htmlComments":370,"htmlAttributes":371,"restEndpoints":373,"jsGlobals":374,"shortcodeOutput":376},[369],"cwfs-container",[],[372],"data-cwfs-id",[],[375],"course_wizard_for_sensei_params",[]]