[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fHjeVNA-kYYgtQn1fCBR4XV2XMWKQHevle8noFIcYbvc":3,"$fy1e0VUaAQpDCV2X3p-TimRs3SNluqHJ0AmC51xLyQ1Y":347,"$f6TYFsEka3B2RqzimCTPsZjW3bBVvapHOb0jPjLvTTTI":351},{"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":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"discovery_status":30,"vulnerabilities":31,"developer":32,"crawl_stats":28,"alternatives":36,"analysis":135,"fingerprints":323},"okto-shareable-draft-previews","Okto Shareable Draft Previews","1.0.1","oktohut","https:\u002F\u002Fprofiles.wordpress.org\u002Foktohut\u002F","\u003Cp>Okto Shareable Draft Previews lets you generate \u003Cstrong>secure, time-limited preview links\u003C\u002Fstrong> for draft posts and pages.\u003C\u002Fp>\n\u003Cp>Perfect for:\u003Cbr \u002F>\n– Sending drafts to clients for review\u003Cbr \u002F>\n– Getting feedback before publishing\u003Cbr \u002F>\n– Collaborating with editors or team members\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n– One-click link generation from post editor\u003Cbr \u002F>\n– Automatic expiry (24h, 48h, 7 days, 30 days, or custom)\u003Cbr \u002F>\n– Global default expiry + per-link override\u003Cbr \u002F>\n– Beautiful admin panel to manage all links\u003Cbr \u002F>\n– Search, pagination, quick edit titles\u002Flabels\u003Cbr \u002F>\n– Copy link with one click\u003Cbr \u002F>\n– Works with posts, pages, and custom post types\u003Cbr \u002F>\n– No login required for viewers\u003C\u002Fp>\n\u003Cp>Secure, clean, and 100% WordPress-native.\u003C\u002Fp>\n","Share draft posts privately with secure, time-limited links — no login required.",40,482,100,1,"2026-04-17T15:16:00.000Z","6.9.5","6.2","7.4",[20,21,22,23,24],"draft-preview","okto","preview-link","share-draft","shareable-draft","https:\u002F\u002Foktohut.com\u002Fplugins\u002Fokto-shareable-draft-previews\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fokto-shareable-draft-previews.1.0.1.zip",0,null,"2026-07-22T17:31:50.256Z","no_bundle",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":14,"total_installs":11,"avg_security_score":13,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},30,94,"2026-08-28T20:58:02.562Z",[37,55,74,96,120],{"slug":38,"name":39,"version":6,"author":40,"author_profile":41,"description":42,"short_description":43,"active_installs":44,"downloaded":45,"rating":27,"num_ratings":27,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":49,"tags":50,"homepage":53,"download_link":54,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"previewshare","PreviewShare","Mehul Gohil","https:\u002F\u002Fprofiles.wordpress.org\u002Fmehul0810\u002F","\u003Cp>PreviewShare is a secure public preview plugin for WordPress. It helps editors share draft posts, pending pages, scheduled content, private posts, and other enabled public post types through controlled public preview links for anonymous reviewers without publishing early or creating temporary reviewer accounts.\u003C\u002Fp>\n\u003Cp>Use PreviewShare when a client, legal reviewer, teammate, editor, or stakeholder needs to review WordPress content before it goes live. Each preview URL uses a random token, can expire automatically, can be revoked, and is designed for private review workflows such as client approval, content approval, editorial review, and scheduled campaign checks.\u003C\u002Fp>\n\u003Cp>PreviewShare stores token hashes instead of plain-text tokens, adds noindex\u002Fnofollow robots directives to shared previews, and shows a clear preview banner on private preview pages.\u003C\u002Fp>\n\u003Ch4>Common use cases\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Share a WordPress draft post with a client before publishing.\u003C\u002Fli>\n\u003Cli>Send a private preview link for a pending page, scheduled campaign, or unpublished landing page.\u003C\u002Fli>\n\u003Cli>Let stakeholders review content without giving them a WordPress login.\u003C\u002Fli>\n\u003Cli>Create separate labeled preview links for legal review, client review, editorial review, or team approval.\u003C\u002Fli>\n\u003Cli>Revoke access after feedback is complete or when a preview link should no longer work.\u003C\u002Fli>\n\u003Cli>Keep search engines from indexing private preview URLs with robots directives.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Key features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Generate secure public preview links from the block editor, Classic Editor, post list table, or Preview dropdown.\u003C\u002Fli>\n\u003Cli>Share pretty URLs such as \u003Ccode>https:\u002F\u002Fexample.com\u002Fpreview\u002Fexampletoken\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Set a default expiration time for preview links from the PreviewShare settings screen.\u003C\u002Fli>\n\u003Cli>Override the expiration time per post or page.\u003C\u002Fli>\n\u003Cli>Create multiple labeled preview links for different reviewers.\u003C\u002Fli>\n\u003Cli>Revoke preview access when a link should stop working.\u003C\u002Fli>\n\u003Cli>View and manage preview link status, expiry, labels, and view counts from the settings screen.\u003C\u002Fli>\n\u003Cli>Choose which public post types support public preview sharing.\u003C\u002Fli>\n\u003Cli>Keep token lookup fast with optional object cache support.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How PreviewShare protects preview links\u003C\u002Fh4>\n\u003Cp>PreviewShare is built for private review, not public publishing. It uses random preview tokens, stores token hashes in WordPress post meta, supports automatic expiration, supports manual revocation, and sends \u003Ccode>noindex\u003C\u002Fcode>, \u003Ccode>nofollow\u003C\u002Fcode>, \u003Ccode>noarchive\u003C\u002Fcode>, \u003Ccode>nosnippet\u003C\u002Fcode>, and \u003Ccode>noimageindex\u003C\u002Fcode> directives for preview requests.\u003C\u002Fp>\n\u003Cp>Anyone with a valid preview URL can open that preview, so links should still be shared only with intended reviewers.\u003C\u002Fp>\n\u003Ch3>Development\u003C\u002Fh3>\n\u003Cp>The public source repository is available at https:\u002F\u002Fgithub.com\u002Fmehul0810\u002Fpreviewshare.\u003C\u002Fp>\n\u003Cp>Production ZIP files are built from the source repository with:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>npm install\nnpm run plugin-zip\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The release artifact includes compiled assets, Composer autoload files, \u003Ccode>composer.json\u003C\u002Fcode>, plugin PHP, languages, readme, and license files. Development files such as \u003Ccode>node_modules\u003C\u002Fcode>, source assets, CI configuration, tests, and build tooling are excluded from production ZIP files.\u003C\u002Fp>\n","Share WordPress draft posts with secure public preview links for anonymous reviewers without publishing or creating user accounts.",10,175,"2026-06-27T17:52:00.000Z","7.0.2","5.8","8.0",[20,51,22,52,23],"preview","public-preview","https:\u002F\u002Fgithub.com\u002Fmehul0810\u002Fpreviewshare","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpreviewshare.1.0.1.zip",{"slug":56,"name":57,"version":58,"author":59,"author_profile":60,"description":61,"short_description":62,"active_installs":27,"downloaded":63,"rating":27,"num_ratings":27,"last_updated":64,"tested_up_to":65,"requires_at_least":66,"requires_php":67,"tags":68,"homepage":71,"download_link":72,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":73},"tidy-draft-share","Tidy Draft Share","1.0.0","pierreferrolliet","https:\u002F\u002Fprofiles.wordpress.org\u002Fpierreferrolliet\u002F","\u003Cp>\u003Cstrong>Tidy Draft Share\u003C\u002Fstrong> lets you share any unpublished WordPress post with clients, editors, or collaborators — without publishing it and without giving them a WordPress account.\u003C\u002Fp>\n\u003Cp>Generate a secure, time-limited link and send it to anyone. They will see the post exactly as it will look once published: same theme, same layout, same formatting.\u003C\u002Fp>\n\u003Ch4>Why Tidy Draft Share?\u003C\u002Fh4>\n\u003Cp>Most editorial workflows hit the same wall: \u003Cem>“Can you take a look at this before I publish it?”\u003C\u002Fem>. The usual workarounds — copying text into an email, exporting a PDF, or creating a temporary user account — are clunky and error-prone.\u003C\u002Fp>\n\u003Cp>Tidy Draft Share solves this with a single click. Create a link, send it, done. The recipient sees a pixel-perfect preview of the post inside your actual theme. When the link expires, access is gone.\u003C\u002Fp>\n\u003Ch4>Key features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>One-click sharing\u003C\u002Fstrong> — Generate a secure link from the editor sidebar or the posts list, and copy it to your clipboard instantly\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Flexible expiration\u003C\u002Fstrong> — Choose from 1 hour, 24 hours, 3 days, 7 days, 30 days, or no expiration at all\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Revoke anytime\u003C\u002Fstrong> — Disable any link immediately with one click; access stops on the spot\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multiple links per post\u003C\u002Fstrong> — Create separate links for different reviewers, each with its own expiration and view count\u003C\u002Fli>\n\u003Cli>\u003Cstrong>View tracking\u003C\u002Fstrong> — See how many times each link has been opened\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Works everywhere\u003C\u002Fstrong> — Supports posts, pages, and any custom post type (WooCommerce products, portfolio items, etc.)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>All unpublished statuses\u003C\u002Fstrong> — Drafts, pending review, scheduled, and private posts\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SEO safe\u003C\u002Fstrong> — Shared previews include a noindex\u002Fnofollow meta tag automatically, so search engines never index them\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Preview banner\u003C\u002Fstrong> — A clear “Draft preview” banner at the top of the page tells the reader the content is not published yet\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Expired link page\u003C\u002Fstrong> — Visitors see a clean, branded message when a link has expired instead of a confusing error\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Gutenberg & Classic\u003C\u002Fstrong> — Full sidebar panel in the block editor, classic meta box for older setups\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Quick share from posts list\u003C\u002Fstrong> — One-click share directly from your posts table, no need to open the editor\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Clean uninstall\u003C\u002Fstrong> — All data is removed from your database when the plugin is deleted\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Use cases\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Share a formatted article with a client for approval before publishing\u003C\u002Fli>\n\u003Cli>Let an external editor proofread a draft without creating a WordPress account\u003C\u002Fli>\n\u003Cli>Preview scheduled content with your marketing team or stakeholders\u003C\u002Fli>\n\u003Cli>Send a private post to a specific person without opening it to all logged-in users\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Privacy & security\u003C\u002Fh4>\n\u003Cp>Every share link uses a cryptographically secure 32-character token. Token validation uses constant-time comparison to prevent timing attacks. Links are checked on every visit — expired or revoked links return a 403 immediately. No data is sent to external servers; everything stays in your WordPress database.\u003C\u002Fp>\n","Share unpublished WordPress posts with anyone via secure, expiring preview links — no login required.",84,"2026-04-01T09:11:00.000Z","6.9.4","6.0","8.2",[69,20,70,22,23],"client-review","draft-sharing","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftidy-draft-share","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftidy-draft-share.1.0.0.zip","2026-04-16T10:56:18.058Z",{"slug":75,"name":76,"version":77,"author":78,"author_profile":79,"description":80,"short_description":81,"active_installs":82,"downloaded":83,"rating":84,"num_ratings":85,"last_updated":86,"tested_up_to":87,"requires_at_least":88,"requires_php":18,"tags":89,"homepage":93,"download_link":94,"security_score":95,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"post-draft-preview","Post Draft Preview","1.2.2","WP Served","https:\u002F\u002Fprofiles.wordpress.org\u002Fwpserved\u002F","\u003Cp>Simple plugin enabling the publication of post drafts.\u003Cbr \u002F>\nIt allows preview of a draft without being logged to the WordPress admin panel.\u003Cbr \u002F>\nCompatible with the Gutenberg and the Classic Editor.\u003C\u002Fp>\n\u003Ch3>How it works\u003C\u002Fh3>\n\u003Cp>Content created in WordPress from the moment a post or page is added, but before it is published, receives draft status.\u003Cbr \u002F>\nYou can send the draft to someone else, but that person must have adequate access to the wp-admin section.\u003Cbr \u002F>\nThe problem arises when we want to show a draft of the post to people who do not have access to our wp-admin panel.\u003Cbr \u002F>\nFor this purpose, we have created the Post Draft Preview plugin.\u003C\u002Fp>\n\u003Cp>You can find full plugin description \u003Ca href=\"https:\u002F\u002Fwpserved.com\u002Fplugins\u002Fpost-draft-preview\u002F\" rel=\"nofollow ugc\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Source files\u003C\u002Fh3>\n\u003Cp>You can find plugin’s source files on our GitHub repo \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwpserved\u002Fpost-draft-preview\" rel=\"nofollow ugc\">page\u003C\u002Fa>.\u003C\u002Fp>\n","Allow non logged-in users to check a draft of unpublished post by using secret link",700,5655,66,4,"2024-02-21T10:23:00.000Z","6.4.8","5.5",[20,90,91,92],"post-draft","post-preview","public-link","https:\u002F\u002Fwpserved.com\u002Fplugins\u002Fpost-draft-preview\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpost-draft-preview.1.2.2.zip",85,{"slug":97,"name":98,"version":99,"author":100,"author_profile":101,"description":102,"short_description":103,"active_installs":104,"downloaded":105,"rating":106,"num_ratings":107,"last_updated":108,"tested_up_to":109,"requires_at_least":17,"requires_php":18,"tags":110,"homepage":116,"download_link":117,"security_score":118,"vuln_count":14,"unpatched_count":14,"last_vuln_date":119,"fetched_at":73},"reviews-and-rating-docplanner","Reviews and Rating – Docplanner","1.1.4","Anton Bergen","https:\u002F\u002Fprofiles.wordpress.org\u002Fberfect\u002F","\u003Cp>Showcase your patient reviews directly from Docplanner and boost credibility!\u003Cbr \u002F>\nDocplanner is a leading healthcare platform where patients leave reviews about doctors and clinics. With Docplanner Reviews & Rating, you can seamlessly display these testimonials on your website, enhancing trust and attracting more patients.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cp>✅ Effortless Setup – Simply enter your Docplanner profile URL, and the plugin fetches your reviews automatically.\u003Cbr \u002F>\n✅ Unlimited Reviews – Display as many reviews as you want on your website.\u003Cbr \u002F>\n✅ Reviews Carousel – Showcase testimonials in an eye-catching slider.\u003Cbr \u002F>\n✅ Rating Badge – Display your average rating dynamically based on patient feedback.\u003Cbr \u002F>\n✅ Supports All Docplanner Regions – Works across multiple countries and platforms.\u003Cbr \u002F>\n✅ SEO-Friendly – Improve your website’s online visibility.\u003Cbr \u002F>\n✅ Mobile-Optimized – Fully responsive design for all devices.\u003Cbr \u002F>\n✅ Customizable Widgets – Adjust styles to match your website’s look.\u003C\u002Fp>\n\u003Ch4>Why Use This Plugin?\u003C\u002Fh4>\n\u003Cp>✔ Build Trust & Credibility – Highlight positive patient experiences directly on your website.\u003Cbr \u002F>\n✔ Increase Engagement – Encourage visitors to book appointments by showing real feedback.\u003Cbr \u002F>\n✔ No Coding Required – Designed for doctors, clinics, and medical professionals with easy integration.\u003C\u002Fp>\n\u003Ch4>How It Works?\u003C\u002Fh4>\n\u003Cp>1️⃣ Install & activate the plugin.\u003Cbr \u002F>\n 2️⃣ Enter your Docplanner profile URL in the settings.\u003Cbr \u002F>\n 3️⃣ Set general settings like global color or date format.\u003Cbr \u002F>\n 4️⃣ Choose the widget type you want to display on your website.\u003Cbr \u002F>\n 5️⃣ Customize the widget with parameters like the number of reviews or pagination.\u003Cbr \u002F>\n 6️⃣ Copy the shortcode and paste it into your website.\u003C\u002Fp>\n\u003Cp>🚀 Start displaying your Docplanner reviews today and grow your practice with social proof!\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Go to the ‘Docplanner’ menu in WordPress\u003C\u002Fli>\n\u003Cli>Enter your Docplanner Profile URL\u003C\u002Fli>\n\u003Cli>Use shortcodes to display reviews and rating on your website\u003C\u002Fli>\n\u003C\u002Fol>\n","Display your Docplanner reviews and rating on your website to build trust and attract more patients.",400,3198,90,2,"2025-07-11T13:02:00.000Z","6.8.5",[111,112,113,114,115],"doctoralia","doktortakvimi","jameda","miodottore","znanylekarz","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Freviews-and-rating-docplanner.1.1.4.zip",70,"2026-06-23 16:40:28",{"slug":121,"name":122,"version":123,"author":124,"author_profile":125,"description":126,"short_description":127,"active_installs":118,"downloaded":128,"rating":27,"num_ratings":27,"last_updated":129,"tested_up_to":47,"requires_at_least":48,"requires_php":49,"tags":130,"homepage":133,"download_link":134,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"dp-import","DP Import","1.8.2","Kamil Nizinski","https:\u002F\u002Fprofiles.wordpress.org\u002Fkamilnizinski\u002F","\u003Cp>The DP Import plugin fetches publicly available doctor data, patient ratings, and reviews from Docplanner platforms (e.g., znanylekarz.pl, doctoralia.es, miodottore.it, and more) and allows displaying them on your WordPress site using shortcodes. Available in FREE and PRO versions.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>FREE Version:\u003C\u002Fstrong>\u003Cbr \u002F>\n– Fetches doctor data (name, specializations, rating) and up to 10 latest reviews.\u003Cbr \u002F>\n– Manual data updates via “Update Now” button.\u003Cbr \u002F>\n– Shortcodes: \u003Ccode>[dp_import_doctor]\u003C\u002Fcode> and \u003Ccode>[dp_import_reviews]\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>PRO Version:\u003C\u002Fstrong>\u003Cbr \u002F>\n– All FREE features.\u003Cbr \u002F>\n– Fetches all doctor reviews.\u003Cbr \u002F>\n– Automatic updates via CRON (daily, every 3 days, or weekly).\u003Cbr \u002F>\n– Admin dashboard widget for profile overview.\u003Cbr \u002F>\n– Secure API key verification for data update.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n– Supports Docplanner platforms in 13 markets (doctoraliar.com, doctoralia.com.br, doctoralia.cl, doctoralia.co, znamylekar.cz, jameda.de, doctoralia.es, miodottore.it, doctoralia.mx, doctoralia.pe, znanylekarz.pl, doctoralia.com.pt, doktortakvimi.com). The legacy doctoralia.com.mx domain remains accepted for compatibility.\u003Cbr \u002F>\n– Displays data via \u003Ccode>[dp_import_doctor]\u003C\u002Fcode> (attributes: show=”fullname,score,avatar,specializations”) and \u003Ccode>[dp_import_reviews]\u003C\u002Fcode> (attributes: limit=”5″ min_rate=”0″ show_author=”yes” show_score=”yes” show_date=”yes”).\u003Cbr \u002F>\n– Secure API key verification.\u003C\u002Fp>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin connects to an external API service to verify the API key entered by the user. When a valid key is provided, all PRO features become available to the user.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What data is sent:\u003C\u002Fstrong>\u003Cbr \u002F>\n– Your website domain (e.g., example.com)\u003Cbr \u002F>\n– The API key entered by the user\u003C\u002Fp>\n\u003Cp>\u003Cstrong>When data is sent:\u003C\u002Fstrong>\u003Cbr \u002F>\nData is sent when the user enters or updates an API key in the plugin settings page, regardless of whether the key is valid, as the API verifies its validity. In the PRO version, data is also sent each time doctor data, ratings, and reviews are updated to verify the API key again.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Purpose of the connection:\u003C\u002Fstrong>\u003Cbr \u002F>\nThe verification process confirms that the user has a valid license for the PRO version of the plugin. Without a verified key, only the FREE version features are available.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Service provider:\u003C\u002Fstrong>\u003Cbr \u002F>\nThis service is provided by Kamil Niziński and is accessed through the API endpoint at https:\u002F\u002Fkamilnizinski.com\u002Fwp-json\u002Fdp-import.\u003Cbr \u002F>\n– Terms of service: https:\u002F\u002Fkamilnizinski.com\u002Fdp-import\u002Fterms-of-service\u003Cbr \u002F>\n– Privacy policy: https:\u002F\u002Fkamilnizinski.com\u002Fdp-import\u002Fprivacy-policy\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is licensed under the GPLv2 or later. You are free to use, modify, and distribute it under the terms of this license.\u003C\u002Fp>\n\u003Ch3>Disclaimer\u003C\u002Fh3>\n\u003Cp>The author is not responsible for how this plugin is used.\u003Cbr \u002F>\nUsers are solely responsible for ensuring that their use of this plugin complies with all applicable laws, copyright regulations, data protection rules (such as GDPR), and the terms of service of any third-party platforms.\u003Cbr \u002F>\nThis plugin does not include or store any third-party content; it only provides technical tools. Any misuse of this plugin that violates laws or third-party rights is the sole responsibility of the user.\u003C\u002Fp>\n","Turn your doctors’ ratings and reviews into a powerful showcase on your WordPress site.",774,"2026-07-15T12:12:00.000Z",[131,111,112,132,115],"docplanner","integration","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fdp-import","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdp-import.1.8.2.zip",{"attackSurface":136,"codeSignals":225,"taintFlows":235,"riskAssessment":319,"analyzedAt":322},{"hooks":137,"ajaxHandlers":196,"restRoutes":215,"shortcodes":222,"cronEvents":223,"entryPointCount":224,"unprotectedCount":27},[138,144,149,153,157,161,164,169,173,176,179,183,186,187,190,193],{"type":139,"name":140,"callback":141,"file":142,"line":143},"action","admin_notices","yoast_notice","includes\u002Fclass-osdp-compatibility.php",8,{"type":139,"name":145,"callback":146,"file":147,"line":148},"admin_menu","add_menu","includes\u002Fclass-osdp-expiry-admin.php",11,{"type":139,"name":150,"callback":151,"file":147,"line":152},"admin_init","register_settings",12,{"type":139,"name":154,"callback":155,"file":147,"line":156},"admin_enqueue_scripts","enqueue_scripts",13,{"type":139,"name":158,"callback":159,"file":160,"line":143},"add_meta_boxes","register","includes\u002Fclass-osdp-metabox.php",{"type":139,"name":154,"callback":162,"file":160,"line":163},"enqueue",9,{"type":165,"name":166,"callback":167,"file":168,"line":148},"filter","query_vars","closure","includes\u002Fclass-osdp-preview-handler.php",{"type":139,"name":170,"callback":171,"file":168,"line":172},"template_redirect","handle_preview",14,{"type":139,"name":174,"callback":167,"priority":14,"file":168,"line":175},"wp_head",96,{"type":139,"name":177,"callback":167,"priority":27,"file":168,"line":178},"wp_enqueue_scripts",102,{"type":139,"name":180,"callback":181,"file":182,"line":143},"rest_api_init","register_routes","includes\u002Fclass-osdp-rest-api.php",{"type":139,"name":145,"callback":184,"file":185,"line":143},"menu","includes\u002Fclass-osdp-settings.php",{"type":139,"name":150,"callback":151,"file":185,"line":163},{"type":139,"name":174,"callback":167,"priority":14,"file":188,"line":189},"includes\u002Fclass-osdp-utils.php",36,{"type":139,"name":150,"callback":191,"file":192,"line":189},"maybe_upgrade_database","okto-shareable-draft-previews.php",{"type":139,"name":194,"callback":194,"file":192,"line":195},"init",43,[197,202,206,209,212],{"action":198,"nopriv":199,"callback":200,"hasNonce":201,"hasCapCheck":201,"file":147,"line":172},"osdp_update_link_expiry",false,"ajax_update_link_expiry",true,{"action":203,"nopriv":199,"callback":204,"hasNonce":201,"hasCapCheck":201,"file":147,"line":205},"osdp_quick_edit_save","ajax_quick_edit_save",15,{"action":207,"nopriv":199,"callback":208,"hasNonce":201,"hasCapCheck":201,"file":160,"line":44},"osdp_create_link","ajax_create_link",{"action":210,"nopriv":199,"callback":211,"hasNonce":201,"hasCapCheck":201,"file":160,"line":148},"osdp_revoke_link","ajax_revoke_link",{"action":213,"nopriv":199,"callback":214,"hasNonce":201,"hasCapCheck":201,"file":160,"line":152},"osdp_update_expiry","ajax_update_expiry",[216],{"namespace":217,"route":218,"methods":219,"callback":221,"permissionCallback":167,"file":182,"line":152},"osdp\u002Fv1","\u002Flinks",[220],"POST","create_link",[],[],6,{"dangerousFunctions":226,"sqlUsage":227,"outputEscaping":230,"fileOperations":27,"externalRequests":27,"nonceChecks":233,"capabilityChecks":143,"bundledLibraries":234},[],{"prepared":228,"raw":27,"locations":229},18,[],{"escaped":231,"rawEcho":27,"locations":232},202,[],5,[],[236,254,264,273,286,296,306],{"entryPoint":237,"graph":238,"unsanitizedCount":27,"severity":253},"ajax_update_link_expiry (includes\u002Fclass-osdp-expiry-admin.php:436)",{"nodes":239,"edges":251},[240,245],{"id":241,"type":242,"label":243,"file":147,"line":244},"n0","source","$_POST",443,{"id":246,"type":247,"label":248,"file":147,"line":249,"wp_function":250},"n1","sink","get_row() [SQLi]",451,"get_row",[252],{"from":241,"to":246,"sanitized":201},"low",{"entryPoint":255,"graph":256,"unsanitizedCount":27,"severity":253},"ajax_quick_edit_save (includes\u002Fclass-osdp-expiry-admin.php:480)",{"nodes":257,"edges":262},[258,260],{"id":241,"type":242,"label":243,"file":147,"line":259},486,{"id":246,"type":247,"label":248,"file":147,"line":261,"wp_function":250},498,[263],{"from":241,"to":246,"sanitized":201},{"entryPoint":265,"graph":266,"unsanitizedCount":27,"severity":253},"\u003Cclass-osdp-expiry-admin> (includes\u002Fclass-osdp-expiry-admin.php:0)",{"nodes":267,"edges":271},[268,270],{"id":241,"type":242,"label":269,"file":147,"line":244},"$_POST (x2)",{"id":246,"type":247,"label":248,"file":147,"line":249,"wp_function":250},[272],{"from":241,"to":246,"sanitized":201},{"entryPoint":274,"graph":275,"unsanitizedCount":27,"severity":253},"ajax_create_link (includes\u002Fclass-osdp-metabox.php:245)",{"nodes":276,"edges":284},[277,280],{"id":241,"type":242,"label":278,"file":160,"line":279},"$_POST (x7)",252,{"id":246,"type":247,"label":281,"file":160,"line":282,"wp_function":283},"echo() [XSS]",298,"echo",[285],{"from":241,"to":246,"sanitized":201},{"entryPoint":287,"graph":288,"unsanitizedCount":27,"severity":253},"ajax_revoke_link (includes\u002Fclass-osdp-metabox.php:383)",{"nodes":289,"edges":294},[290,292],{"id":241,"type":242,"label":243,"file":160,"line":291},389,{"id":246,"type":247,"label":248,"file":160,"line":293,"wp_function":250},397,[295],{"from":241,"to":246,"sanitized":201},{"entryPoint":297,"graph":298,"unsanitizedCount":27,"severity":253},"ajax_update_expiry (includes\u002Fclass-osdp-metabox.php:423)",{"nodes":299,"edges":304},[300,302],{"id":241,"type":242,"label":243,"file":160,"line":301},430,{"id":246,"type":247,"label":248,"file":160,"line":303,"wp_function":250},459,[305],{"from":241,"to":246,"sanitized":201},{"entryPoint":307,"graph":308,"unsanitizedCount":27,"severity":253},"\u003Cclass-osdp-metabox> (includes\u002Fclass-osdp-metabox.php:0)",{"nodes":309,"edges":316},[310,311,312,314],{"id":241,"type":242,"label":278,"file":160,"line":279},{"id":246,"type":247,"label":281,"file":160,"line":282,"wp_function":283},{"id":313,"type":242,"label":269,"file":160,"line":291},"n2",{"id":315,"type":247,"label":248,"file":160,"line":293,"wp_function":250},"n3",[317,318],{"from":241,"to":246,"sanitized":201},{"from":313,"to":315,"sanitized":201},{"summary":320,"deductions":321},"The 'okto-shareable-draft-previews' plugin v1.0.0 demonstrates a strong security posture based on the provided static analysis.  All identified entry points, including AJAX handlers and REST API routes, have proper authentication and permission checks, which is a significant strength.  Furthermore, the code adheres to secure coding practices by exclusively using prepared statements for SQL queries and properly escaping all output, leaving no apparent room for SQL injection or cross-site scripting vulnerabilities through these vectors. The absence of file operations and external HTTP requests also reduces the attack surface. The plugin's vulnerability history is clean, with no recorded CVEs, indicating a well-maintained and secure codebase to date.",[],"2026-04-16T15:11:36.493Z",{"wat":324,"direct":332},{"assetPaths":325,"generatorPatterns":327,"scriptPaths":328,"versionParams":329},[326],"\u002Fwp-content\u002Fplugins\u002Fokto-shareable-draft-previews\u002Fassets\u002Fjs\u002Fosdp-expiry-admin.js",[],[326],[330,331],"okto-shareable-draft-previews\u002Fassets\u002Fjs\u002Fosdp-expiry-admin.js?ver=","okto-shareable-draft-previews.php?ver=",{"cssClasses":333,"htmlComments":338,"htmlAttributes":339,"restEndpoints":340,"jsGlobals":344,"shortcodeOutput":346},[334,335,336,337],"osdp-expiry-admin-container","status-active","status-revoked","status-expired",[],[],[341,342,343],"\u002Fwp-json\u002Fosdp\u002Fv1\u002Fgenerate-preview-link","\u002Fwp-json\u002Fosdp\u002Fv1\u002Frevoke-preview-link","\u002Fwp-json\u002Fosdp\u002Fv1\u002Fregenerate-preview-link",[345],"osdp_expiry_ajax",[],{"error":201,"url":348,"statusCode":349,"statusMessage":350,"message":350},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fokto-shareable-draft-previews\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":107,"versions":352},[353,358],{"version":6,"download_url":26,"svn_tag_url":354,"released_at":28,"has_diff":199,"diff_files_changed":355,"diff_lines":28,"trac_diff_url":356,"vulnerabilities":357,"is_current":201},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fokto-shareable-draft-previews\u002Ftags\u002F1.0.1\u002F",[],"https:\u002F\u002Fplugins.trac.wordpress.org\u002Fchangeset?old_path=%2Fokto-shareable-draft-previews%2Ftags%2F1.0.0&new_path=%2Fokto-shareable-draft-previews%2Ftags%2F1.0.1",[],{"version":58,"download_url":359,"svn_tag_url":360,"released_at":28,"has_diff":199,"diff_files_changed":361,"diff_lines":28,"trac_diff_url":28,"vulnerabilities":362,"is_current":199},"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fokto-shareable-draft-previews.1.0.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fokto-shareable-draft-previews\u002Ftags\u002F1.0.0\u002F",[],[]]