[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$faXvBh-DDKZGZKxoQLoFdtVSppWzHGb5kJHCvqH9U4sE":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":23,"download_link":24,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":34,"analysis":78,"fingerprints":170},"happy-birthday-reminder","Happy Birthday Reminder","1.0","samchief","https:\u002F\u002Fprofiles.wordpress.org\u002Fsamchief\u002F","\u003Cp>Happy Birthday Reminder generates reminders notifications based on certain number of days(configured in settings) to users birthday via mail to the admin email and a greeting message to the user on their birthday.\u003Cbr \u002F>\nA shortcode is also available to preview users with upcoming birthdays in a post\u002Fpage.\u003Cbr \u002F>\nFeatures:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Integration with WordPress User Profile, and profile image\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Addition of a custom field to user profile for birthday date selection\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Send birthday greetings to users on their birthday\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Send upcoming birthdays to admin email\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Configure settings\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>English Language (please feel free to contribute)\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n","Happy Birthdays reminder keeps in remembrance wp users birthdays via email reminders and a page display via shortcode.",40,4773,0,"2018-08-09T11:22:00.000Z","4.9.29","3.5","5.2.4",[19,20,4,21,22],"birthdays-celebrants","date-of-birth","upcoming-birthdays","users-birthday","http:\u002F\u002Fquibos.net","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fhappy-birthday-reminder.1.0.0.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":30,"total_installs":11,"avg_security_score":25,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},1,30,84,"2026-04-04T04:26:24.721Z",[35,57],{"slug":36,"name":37,"version":38,"author":39,"author_profile":40,"description":41,"short_description":42,"active_installs":43,"downloaded":44,"rating":13,"num_ratings":13,"last_updated":45,"tested_up_to":46,"requires_at_least":47,"requires_php":48,"tags":49,"homepage":54,"download_link":55,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":56},"dob-field-for-cf7","DOB Field For CF7","1.0.2","solaito","https:\u002F\u002Fprofiles.wordpress.org\u002Fsolaito\u002F","\u003Cp>Add a date of birth  input field to your Contact Form 7.\u003C\u002Fp>\n\u003Ch3>Arbitrary section\u003C\u002Fh3>\n","Add a date of birth  input field to your Contact Form 7.",10,934,"2023-01-21T05:30:00.000Z","6.1.10","5.7","5.6",[50,51,20,52,53],"birthdate","contact-form","dob","form","https:\u002F\u002Ftonica.llc\u002Fdob-field-for-cf7","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdob-field-for-cf7.1.0.2.zip","2026-03-15T14:54:45.397Z",{"slug":58,"name":59,"version":60,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":13,"downloaded":65,"rating":13,"num_ratings":13,"last_updated":66,"tested_up_to":67,"requires_at_least":68,"requires_php":69,"tags":70,"homepage":75,"download_link":76,"security_score":77,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27},"age-validation-per-product-for-woocommerce","Age Validation Per Product for WooCommerce","1.3.1","asynadak","https:\u002F\u002Fprofiles.wordpress.org\u002Fasynadak\u002F","\u003Cp>\u003Cstrong>WooCommerce Age Validation Per Product\u003C\u002Fstrong> gives you fine-grained control over who can purchase restricted items in your WooCommerce store based on date-of-birth (DOB) settings. Shop owners can:\u003Cbr \u002F>\n* Set a minimum or maximum DOB on simple products.\u003Cbr \u002F>\n* Globally define DOB restrictions for variable products, or set them per variation.\u003Cbr \u002F>\n* Prompt users for DOB at checkout only if restricted items are in the cart.\u003Cbr \u002F>\n* Block checkout if the entered DOB does not satisfy the product(s) restrictions.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n* Per-product or per-variation DOB range (e.g., only allow customers with birthdates in 01-01-1980 to 31-12-2005).\u003Cbr \u002F>\n* Global fields for variable products that override each variation’s settings.\u003Cbr \u002F>\n* Conditional DOB field at checkout (shown only if restricted items are in the cart).\u003Cbr \u002F>\n* Client-side datepicker in the admin (so store managers can pick min\u002Fmax dates) and in the checkout for users.\u003Cbr \u002F>\n* Automatic validation to block purchase if the DOB is outside the allowed range.\u003Cbr \u002F>\n* Optionally show notices on the product page or in the cart for restricted items.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Use Cases:\u003C\u002Fstrong>\u003Cbr \u002F>\n* Alcohol, tobacco, vaping, or adult content requiring age gating.\u003Cbr \u002F>\n* Specialty products requiring a specific DOB range (e.g., child tickets vs. adult tickets).\u003Cbr \u002F>\n* Special subscription products that require age segmentation (i.e. summer camps for children of different ages).\u003Cbr \u002F>\n* Any scenario needing a user’s date-of-birth for compliance.\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Activate the plugin.  \u003C\u002Fli>\n\u003Cli>For \u003Cstrong>Simple Products\u003C\u002Fstrong>:\n\u003Cul>\n\u003Cli>Go to the “General” tab in “Product Data,” fill in \u003Cstrong>DOB Minimum\u003C\u002Fstrong> or \u003Cstrong>DOB Maximum\u003C\u002Fstrong> in \u003Ccode>dd-mm-yyyy\u003C\u002Fcode> format.  \u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>For \u003Cstrong>Variable Products\u003C\u002Fstrong>:\n\u003Cul>\n\u003Cli>In the “General” tab, fill in \u003Cstrong>Global DOB Minimum\u003C\u002Fstrong> or \u003Cstrong>Global DOB Maximum\u003C\u002Fstrong>.  \u003C\u002Fli>\n\u003Cli>(Optionally) Edit each variation to set specific DOB fields if the global fields are empty or need overriding.  \u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Optionally adjust \u003Cstrong>JavaScript\u003C\u002Fstrong> to handle date format or display if your store uses different date formats.  \u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>If you have any questions, see the “FAQ” section or contact us at https:\u002F\u002Fsocialmind.gr\u002Fcontact.\u003C\u002Fp>\n","Validate and enforce age restrictions per product or variation in WooCommerce, with user profile storage.",679,"2025-03-14T22:14:00.000Z","6.7.5","5.0","7.0",[71,20,72,73,74],"age-validation","product-restriction","user-profile","woocommerce","https:\u002F\u002Fsocialmind.gr","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fage-validation-per-product-for-woocommerce.1.3.1.zip",92,{"attackSurface":79,"codeSignals":132,"taintFlows":160,"riskAssessment":161,"analyzedAt":169},{"hooks":80,"ajaxHandlers":121,"restRoutes":122,"shortcodes":123,"cronEvents":129,"entryPointCount":30,"unprotectedCount":13},[81,87,90,93,97,99,101,104,109,113,118],{"type":82,"name":83,"callback":84,"file":85,"line":86},"action","show_user_profile","wp_birthday_extra_profile_fields","happy-birthday-extra-profile-fields.php",6,{"type":82,"name":88,"callback":84,"file":85,"line":89},"edit_user_profile",7,{"type":82,"name":91,"callback":84,"file":85,"line":92},"user_new_form",8,{"type":82,"name":94,"callback":95,"file":85,"line":96},"personal_options_update","save_wp_birthday_extra_profile_fields",29,{"type":82,"name":98,"callback":95,"file":85,"line":31},"edit_user_profile_update",{"type":82,"name":91,"callback":95,"file":85,"line":100},31,{"type":82,"name":102,"callback":95,"file":85,"line":103},"user_register",41,{"type":82,"name":105,"callback":106,"file":107,"line":108},"quibos_birthdatechecker_cron","quibos_birthdatechecker_mail","happy-birthday-reminder-mail.php",64,{"type":82,"name":110,"callback":111,"file":107,"line":112},"init","closure",66,{"type":82,"name":114,"callback":115,"file":116,"line":117},"admin_menu","add_happy_birthday_options_class","happy-birthday-reminder-options.php",100,{"type":82,"name":119,"callback":111,"file":116,"line":120},"admin_init",101,[],[],[124],{"tag":125,"callback":126,"file":127,"line":128},"WPBirthday","quibos_birthdatechecker","happy-birthday-reminder.php",53,[130],{"hook":105,"callback":105,"file":107,"line":131},68,{"dangerousFunctions":133,"sqlUsage":134,"outputEscaping":136,"fileOperations":13,"externalRequests":13,"nonceChecks":13,"capabilityChecks":30,"bundledLibraries":159},[],{"prepared":13,"raw":13,"locations":135},[],{"escaped":137,"rawEcho":138,"locations":139},2,12,[140,143,145,146,148,150,152,153,154,155,156,158],{"file":116,"line":141,"context":142},51,"raw output",{"file":116,"line":144,"context":142},57,{"file":116,"line":112,"context":142},{"file":116,"line":147,"context":142},72,{"file":116,"line":149,"context":142},77,{"file":116,"line":151,"context":142},81,{"file":127,"line":11,"context":142},{"file":127,"line":11,"context":142},{"file":127,"line":11,"context":142},{"file":127,"line":11,"context":142},{"file":127,"line":157,"context":142},43,{"file":127,"line":157,"context":142},[],[],{"summary":162,"deductions":163},"The \"happy-birthday-reminder\" v1.0 plugin exhibits a generally good security posture based on the provided static analysis.  The plugin demonstrates responsible development practices by avoiding dangerous functions, utilizing prepared statements for all SQL queries, and performing capability checks.  The attack surface is minimal with no identified AJAX handlers or REST API routes requiring direct security analysis, and the single shortcode and cron event are not explicitly flagged as unprotected.\n\nHowever, a significant concern arises from the extremely low percentage of properly escaped output (14%). This indicates a high risk of Cross-Site Scripting (XSS) vulnerabilities. While no critical or high-severity taint flows were detected, the lack of output sanitization for the majority of outputs leaves the plugin susceptible to attackers injecting malicious scripts that could be executed in the context of a user's browser.  The absence of nonce checks is also a weakness, though less critical given the limited attack surface. The plugin's clean vulnerability history is a positive indicator, suggesting a commitment to security, but it does not mitigate the immediate risks posed by the unescaped output.\n\nIn conclusion, the \"happy-birthday-reminder\" v1.0 plugin has a strong foundation with its adherence to secure coding practices regarding SQL and capability checks. Nevertheless, the critical deficiency in output escaping presents a substantial risk of XSS vulnerabilities that must be addressed. While its vulnerability history is commendable, the static analysis clearly points to an area of significant improvement needed for a truly secure plugin.",[164,166],{"reason":165,"points":138},"Low percentage of properly escaped output",{"reason":167,"points":168},"No nonce checks implemented",5,"2026-03-16T22:16:37.754Z",{"wat":171,"direct":179},{"assetPaths":172,"generatorPatterns":176,"scriptPaths":177,"versionParams":178},[173,174,175],"\u002Fwp-content\u002Fplugins\u002Fhappy-birthday-reminder\u002Fhappy-birthday-reminder-mail.php","\u002Fwp-content\u002Fplugins\u002Fhappy-birthday-reminder\u002Fhappy-birthday-reminder-options.php","\u002Fwp-content\u002Fplugins\u002Fhappy-birthday-reminder\u002Fhappy-birthday-extra-profile-fields.php",[],[],[],{"cssClasses":180,"htmlComments":181,"htmlAttributes":183,"restEndpoints":186,"jsGlobals":187,"shortcodeOutput":188},[],[182],"HAPPY BIRTHDAY EXTRA FIELD",[184,185],"name=\"dateofbirth\"","id=\"dateofbirth\"",[],[],[189,190,191,192],"\u003Cpre> \u003Cimg"," birthday comes up in "," days ","'s birthday is today."]