=== Chainwire Integration ===
Contributors: cracsoft, mediafuse
Donate link: https://mediafuse.org
Tags: blockchain, crypto, cryptocurrency, wire, newswire
Requires at least: 4.6
Requires PHP: 5.6
Tested up to: 7.0
Stable tag: 1.0.32
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

This plugin allows to integrate your website with MediaFuse platforms.

== Description ==
MediaFuse is an innovative newswire company helping PR and communication professionals distribute their press releases on hyper-targeted news outlets.
Chainwire is your one-stop broadcast shop for the cryptocurrency and blockchain space. Distribute your press releases automatically to the leading publications with guaranteed coverage and detailed analytics.

This plugin allows you a direct integration with our platform.

A few notes about this plugin:

*   After installation please go under "Settings" >> "Chainwire"
*   On this page please provide your Secret and Token (you can generate it from your [dashboard](https://app.chainwire.org/))
*   You can also set default "Post Status" and "Categories" which be connected with articles published with Chainwire
*   Save changes

== Installation ==

= From WordPress =
1. Install
2. Activate
3. Enter your token and secret key.

= From WordPress backend =

1. Navigate to Plugins -> Add new.
2. Click the button "Upload Plugin" next to "Add plugins" title.
3. Upload the downloaded zip file and activate it.
4. Enter your token and secret key.

= Direct upload =

1. Upload the downloaded zip file into your `wp-content/plugins/` folder.
2. Unzip the uploaded zip file.
3. Navigate to Plugins menu on your WordPress admin area.
4. Activate this plugin.
5. Enter your token and secret key.

== Frequently Asked Questions ==

= How can I generate a token and secret? =
Please go to your [dashboard](https://app.chainwire.org/), select your website and click button "Manage Plugin Integration"

== Screenshots ==

1. Chainwire Settings Screen
2. How to generate token and secret -> Step 1. Choose Website
3. How to generate token and secret -> Step 2. Open Modal
4. How to generate token and secret -> Step 3. Generate unique Token and Secret for your website

== Changelog ==

= 1.0.32 (21st Oct, 2026) =
* Security update, recommended for all sites: stronger checks that every publish and update really comes from Chainwire, signed remote commands and safer key handling.
* Posts are matched to orders by a hidden key, so two different releases with the same title no longer merge.
* New endpoint to update an untouched published post.
* Updates are refused for posts older than 3 days.
* Updates are refused when the publisher changed the featured image or took a live or scheduled post down (draft, pending or private), not only when the text changed. A scheduled post going live on its date is not an edit.
* Dry run mode reports whether an update would go through.
* Two requests for the same release can no longer both create a post: the publish lock is now atomic, lives in the options table (not the object cache) and lasts 5 minutes.
* The post status check skips our post when the publisher trashed it and reports their copy instead.
* The verification call also sends the title (as received and as it will be published), both image URLs, the plugin version and whether it is a publish or an update, so Chainwire can check them too.
* When Chainwire asks for it, the plugin sends one extra diagnostic report for a failed verification. This never changes the publish result.
* Verification can no longer be switched off by a filter on a live site (only in the WP-CLI test suite).
* The verification call returns the one-time code Chainwire sends with each publish or update, so Chainwire can tell its own requests from any other request.
* Remote commands: Chainwire can ask the plugin to do a task only with a one-time ticket, which the plugin checks back with the wire's own address before doing anything. The first command changes the site's key and secret remotely; the previous key keeps working for at most 6 hours, and stops as soon as Chainwire confirms it uses the new one. One command runs at a time.
* New remote maintenance commands: list the posts published under our author in a date range, move our posts to the trash (images only on request and only when no other post uses them), put our own version of a post back, or restore the last revision from before a given time. They only ever touch posts of our authors, and nothing is deleted for good.
* The command result is signed together with its data, so it cannot be changed on the way.
* After 5 refused tickets in 10 minutes the plugin stops checking tickets for 10 minutes, and a refused ticket no longer keeps the command lock.
* Tokens are compared in constant time.
* The post list from a scan also reports each post's author login.
* The post status check by post id answers only for posts created by the plugin (by its hidden key or one of our authors), so the site's own drafts and other posts are no longer reported. Finding the publisher's copy of our release by its title still works.
* New remote commands to pause and resume publishing: while Chainwire has paused a site, the plugin accepts no new press releases and no updates (from anyone), and the settings page says so. Status checks still work. The pause survives saving the settings, and any Chainwire wire can resume it.
* Uninstalling the plugin removes the previous keys and the command lock and backoff state.
* Remote commands are accepted only when Chainwire signed the request for this site and wire (Ed25519). An unsigned, wrongly signed or expired request is refused at once, without calling Chainwire and without counting toward the 10 minute pause.
* Requires PHP 5.6 or newer.

= 1.0.31 (9th Jun, 2026) =
* Fixed TechnologyWire wire name mapping causing verification to route to wrong server
* Improved verification error diagnostics

= 1.0.30 (9th Jun, 2026) =
* WordPress 7.0 compatibility confirmed

= 1.0.29 (9th Jun, 2026) =
* Improved verification error diagnostics: failure reason (network error, HTTP error, token/secret mismatch)

= 1.0.28 (24th Mar, 2026) =
* Support for TechnologyWire
* Image deduplication: reuse existing media library attachments
* Race condition fix to prevent duplicate posts

= 1.0.27 (22nd Sep ,2025)=
* Support for NewsDirect

= 1.0.26 (27th Aug ,2025)=
* Transferring main committer to @mediafuse

= 1.0.25 (15th Jul ,2025)=
* Support for PlayNewswire

= 1.0.24 (28th Nov ,2024)=
* Support for tables and latest WordPress

= 1.0.23 (21st May ,2024)=
* Support for excerpt

= 1.0.22 (25th Apr ,2024)=
* Support for PressRelease user

= 1.0.21 (2nd Apr ,2024)=
* Support for cybernewswire.com - configuration page

= 1.0.20 (2nd Apr ,2024)=
* Support for cybernewswire.com

= 1.0.19 (16th Jan ,2024)=
* Custom options for GamingWire

= 1.0.18 (5th Jan ,2024)=
* Disable loading script

= 1.0.17 (27th Dec ,2023)=
* Support for gaminwire.io

= 1.0.16 (21st Mar ,2023)=
* Verifying compatibility with Wordpress 6.4.1

= 1.0.15 (21st Mar ,2023)=
* Fix saving details for category

= 1.0.14 (21st Mar ,2023)=
* Support for multiple wires

= 1.0.11 (27th Feb ,2023)=
* Support for multiple wires

= 1.0.10 (16th Dec ,2021)=
* Fix css for settings page

= 1.0.9 (16th Dec ,2021)=
* Add route to check status of an article

= 1.0.8 (13th Dec ,2021)=
* Add support for Polylang plugin
* Add support for Yoast SEO plugin
* Add support for set customs tags

= 1.0.7 (23th Sep ,2021)=
* Add support for youtube videos

= 1.0.6 (25th Mar ,2021)=
* Prevent to publish duplicated posts with ampersands
* Enable support for categories with ampersand

= 1.0.5 (25th Mar ,2021)=
* Prevent to publish duplicated posts

= 1.0.4 (25th Mar ,2021)=
* New route to check plugin version.
* Fix token-verification
* Add support for unbranded press-release

= 1.0.2 (20th Aug ,2020)=
* Plugin information updated.
* Post Status Added

== Upgrade Notice ==
= Upgrade your old version to 1.0.17
