[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fqsTRQi0_3phnGJqbhFTlELW0j-VuNghkqttFvPfO_Is":3,"$fbBGozsowhymrhyYavrsarMEBeLWRL-tZUgxlmxhsbIg":115,"$fE5z6lStYmxPQj1lhY1WRcZtXeT3rR561EOkzx0aPGNE":120},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":19,"download_link":20,"security_score":21,"vuln_count":11,"unpatched_count":11,"last_vuln_date":22,"fetched_at":23,"discovery_status":24,"vulnerabilities":25,"developer":26,"crawl_stats":22,"alternatives":34,"analysis":35,"fingerprints":96},"dynamic-price-reduction","Dynamic Price Reduction","1.0.0","Inksplat Web Design & Development","https:\u002F\u002Fprofiles.wordpress.org\u002Finksplat\u002F","\u003Cp>Do you sell courses that take place over a number of weeks? Do you allow people to join these courses while they are already in progress? Well Dynamic Price Reduction will save you the hassle of having to manually reduce your product price each week. It also removes the need to create vouchers to reduce the price of the product to account for the time that has passed.\u003C\u002Fp>\n\u003Cp>Dynamic Price Reduction allows you to set the start date of your course\u002Fclass on the product tab and set the number of weeks the course will run for. Then each week the product price will be reduced by the amount. For example if you have a course which costs €100 and runs for 5 weeks, each week €20 will be deducted from the course. After the number of weeks has expired the price will revert to the original for the start of the new term.\u003C\u002Fp>\n\u003Cp>Benefits of Dynamic Price Reduction include:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Save time having to manually reduce your product price weekly.\u003C\u002Fli>\n\u003Cli>Save time having to create unnecessary vouchers.\u003C\u002Fli>\n\u003C\u002Ful>\n","Have the price of courses\u002Fclasses\u002Fevents dynamically reduced weekly",0,762,"2023-04-15T16:24:00.000Z","6.2.9","4.0","",[18],"woocommerce-courses-classes-price-decrease-weekly","https:\u002F\u002Fwww.inksplat.ie\u002Fwordpress-plugins\u002Fdynamic-price-reduction","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdynamic-price-reduction.zip",85,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":27,"display_name":7,"profile_url":8,"plugin_count":28,"total_installs":29,"avg_security_score":30,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},"inksplat",3,20,84,435,68,"2026-05-19T21:58:16.112Z",[],{"attackSurface":36,"codeSignals":80,"taintFlows":87,"riskAssessment":88,"analyzedAt":95},{"hooks":37,"ajaxHandlers":76,"restRoutes":77,"shortcodes":78,"cronEvents":79,"entryPointCount":11,"unprotectedCount":11},[38,45,51,56,62,65,69,72],{"type":39,"name":40,"callback":41,"priority":42,"file":43,"line":44},"action","plugins_loaded","wc_dpr_ext_init",10,"DynamicPriceReduction.php",46,{"type":39,"name":46,"callback":47,"priority":48,"file":49,"line":50},"woocommerce_product_options_general_product_data","wc_dpr_add_product_input_fields",16,"class.WC_Dynamic_Price_Reduction.php",43,{"type":39,"name":52,"callback":53,"priority":54,"file":49,"line":55},"woocommerce_process_product_meta","closure",17,44,{"type":57,"name":58,"callback":59,"priority":60,"file":49,"line":61},"filter","woocommerce_product_get_price","set_deducted_price",18,153,{"type":57,"name":63,"callback":59,"priority":60,"file":49,"line":64},"woocommerce_product_variation_get_regular_price",154,{"type":57,"name":66,"callback":67,"priority":60,"file":49,"line":68},"woocommerce_product_get_sale_price","set_sale_price",195,{"type":57,"name":70,"callback":67,"priority":60,"file":49,"line":71},"woocommerce_product_variation_get_sale_price",196,{"type":57,"name":73,"callback":74,"priority":60,"file":49,"line":75},"woocommerce_get_price_html","custom_pricing_html",210,[],[],[],[],{"dangerousFunctions":81,"sqlUsage":82,"outputEscaping":84,"fileOperations":11,"externalRequests":11,"nonceChecks":11,"capabilityChecks":11,"bundledLibraries":86},[],{"prepared":11,"raw":11,"locations":83},[],{"escaped":28,"rawEcho":11,"locations":85},[],[],[],{"summary":89,"deductions":90},"The 'dynamic-price-reduction' plugin v1.0.0 exhibits a strong security posture based on the provided static analysis. There are no identified AJAX handlers, REST API routes, shortcodes, or cron events that serve as entry points. Furthermore, the code signals reveal no dangerous functions, all SQL queries utilize prepared statements, and all identified output is properly escaped. The absence of file operations, external HTTP requests, and crucially, any form of input validation (like nonces or capability checks) is a notable observation. The taint analysis also indicates no unsanitized flows. The plugin's vulnerability history is clean, with zero known CVEs, suggesting a history of secure development or a lack of targeted analysis.\n\nWhile the lack of identified vulnerabilities and dangerous code patterns is highly positive, the complete absence of any entry points like AJAX, REST API, or shortcodes, coupled with zero nonce and capability checks, is unusual for a functional plugin. This could indicate a plugin that performs its function entirely server-side without direct user interaction or that the static analysis did not identify dynamic entry points. The absence of these checks, while not directly indicating a vulnerability in this specific scan, removes a crucial layer of defense if such entry points were to be introduced in future versions or were missed in the analysis. The perfect scores in prepared statements, output escaping, and lack of dangerous functions are excellent indicators of good coding practices.",[91,93],{"reason":92,"points":42},"No nonce checks implemented",{"reason":94,"points":42},"No capability checks implemented","2026-04-16T14:25:42.696Z",{"wat":97,"direct":104},{"assetPaths":98,"generatorPatterns":101,"scriptPaths":102,"versionParams":103},[99,100],"\u002Fwp-content\u002Fplugins\u002Fdynamic-price-reduction\u002Fcss\u002Fdpr-admin-style.css","\u002Fwp-content\u002Fplugins\u002Fdynamic-price-reduction\u002Fjs\u002Fdpr-admin-script.js",[],[],[],{"cssClasses":105,"htmlComments":107,"htmlAttributes":108,"restEndpoints":112,"jsGlobals":113,"shortcodeOutput":114},[106],"wc_dpr_reduce_increments_field",[],[109,110,111],"id=\"_start_date\"","id=\"_duration\"","id=\"_reduce_increments\"",[],[],[],{"error":116,"url":117,"statusCode":118,"statusMessage":119,"message":119},true,"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fdynamic-price-reduction\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":11,"versions":121},[]]