Skip to content

Commit

Permalink
Improve PublishPress Pro integration
Browse files Browse the repository at this point in the history
Changed:
- Added support for per-plugin licensing.
- Added support for bailing on version mismatch.
- Changed list of plugins into table.
  • Loading branch information
mcaskill committed Jan 20, 2023
1 parent dfd29dc commit db9e91f
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 34 deletions.
24 changes: 14 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@ ACF_PRO_KEY="<acf_pro_license_key>"
GRAVITY_FORMS_KEY="<gravity_forms_license_key>"
POLYLANG_PRO_KEY="<polylang_pro_license_key>"
POLYLANG_PRO_URL="<registered_url_for_polylang_pro>"
PUBLISHPRESS_PRO_KEY="<publishpress_pro_license_key>"
PUBLISHPRESS_PRO_URL="<registered_url_for_publishpress_pro>"
PUBLISHPRESS_PRO_KEY="<publishpress_pro_membership_license_key>"
PUBLISHPRESS_PRO_URL="<registered_url_for_publishpress_pro_membership>"
PUBLISHPRESS_<plugin_slug>_PRO_KEY="<publishpress_pro_license_key>"
PUBLISHPRESS_<plugin_slug>_PRO_URL="<registered_url_for_publishpress_pro>"
WP_ALL_IMPORT_PRO_KEY="<wp_all_import_license_key>"
WP_ALL_IMPORT_PRO_URL="<registered_url_for_wpai_pro>"
WP_ALL_EXPORT_PRO_KEY="<wp_all_export_license_key>"
Expand Down Expand Up @@ -344,14 +346,16 @@ Here's a list of all Gravity Forms add-on slugs: [https://docs.gravityforms.com/

The following PublishPress Pro plugins are supported:

* `junaidbhura/publishpress-authors-pro`
* `junaidbhura/publishpress-blocks-pro`
* `junaidbhura/publishpress-capabilities-pro`
* `junaidbhura/publishpress-checklists-pro`
* `junaidbhura/publishpress-permissions-pro`
* `junaidbhura/publishpress-planner-pro`
* `junaidbhura/publishpress-revisions-pro`
* `junaidbhura/publishpress-series-pro`
| Package name | Environment variables |
|:------------------------------------------- |:-------------------------------------------- |
| `junaidbhura/publishpress-authors-pro` | `PUBLISHPRESS_AUTHORS_PRO_<key_or_url>` |
| `junaidbhura/publishpress-blocks-pro` | `PUBLISHPRESS_BLOCKS_PRO_<key_or_url>` |
| `junaidbhura/publishpress-capabilities-pro` | `PUBLISHPRESS_CAPABILITIES_PRO_<key_or_url>` |
| `junaidbhura/publishpress-checklists-pro` | `PUBLISHPRESS_CHECKLISTS_PRO_<key_or_url>` |
| `junaidbhura/publishpress-permissions-pro` | `PUBLISHPRESS_PERMISSIONS_PRO_<key_or_url>` |
| `junaidbhura/publishpress-planner-pro` | `PUBLISHPRESS_PLANNER_PRO_<key_or_url>` |
| `junaidbhura/publishpress-revisions-pro` | `PUBLISHPRESS_REVISIONS_PRO_<key_or_url>` |
| `junaidbhura/publishpress-series-pro` | `PUBLISHPRESS_SERIES_PRO_<key_or_url>` |

### WP All Import Pro Add-Ons

Expand Down
107 changes: 83 additions & 24 deletions plugins/PublishPressPro.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,30 +45,89 @@ public function __construct( $version = '', $slug = 'publishpress-planner-pro' )
* @return string
*/
public function getDownloadUrl() {
$packages = array(
'publishpress-authors-pro' => 7203,
'publishpress-blocks-pro' => 98972,
'publishpress-capabilities-pro' => 44811,
'publishpress-checklists-pro' => 6465,
'publishpress-permissions-pro' => 34506,
'publishpress-planner-pro' => 49742,
'publishpress-revisions-pro' => 40280,
'publishpress-series-pro' => 110550,
);

if ( array_key_exists( $this->slug, $packages ) ) {
$http = new Http();
$response = json_decode( $http->get( 'https://publishpress.com', array(
'edd_action' => 'get_version',
'license' => getenv( 'PUBLISHPRESS_PRO_KEY' ),
'item_id' => $packages[ $this->slug ],
'url' => getenv( 'PUBLISHPRESS_PRO_URL' ),
'version' => $this->version,
) ), true );

if ( ! empty( $response['download_link'] ) ) {
return $response['download_link'];
}
$id = 0;
$env = null;
/**
* Membership licensing.
*/
$license = ( getenv( 'PUBLISHPRESS_PRO_KEY' ) ?: null );
$url = ( getenv( 'PUBLISHPRESS_PRO_URL' ) ?: null );

/**
* List of official plugins as of 2023-01-20.
*/
switch ( $this->slug ) {
case 'publishpress-authors-pro':
$id = 7203;
$env = 'AUTHORS';
break;

case 'publishpress-blocks-pro':
$id = 98972;
$env = 'BLOCKS';
break;

case 'publishpress-capabilities-pro':
$id = 44811;
$env = 'CAPABILITIES';
break;

case 'publishpress-checklists-pro':
$id = 6465;
$env = 'CHECKLISTS';
break;

case 'publishpress-permissions-pro':
$id = 34506;
$env = 'PERMISSIONS';
break;

case 'publishpress-planner-pro':
$id = 49742;
$env = 'PLANNER';
break;

case 'publishpress-revisions-pro':
$id = 40280;
$env = 'REVISIONS';
break;

case 'publishpress-series-pro':
$id = 110550;
$env = 'SERIES';
break;

default:
return '';
}

if ( $env ) {
/**
* Use add-on licensing if available, otherwise use membership licensing.
*/
$license = ( getenv( "PUBLISHPRESS_{$env}_PRO_KEY" ) ?: $license );
$url = ( getenv( "PUBLISHPRESS_{$env}_PRO_URL" ) ?: $url );
}

$http = new Http();
$response = json_decode( $http->get( 'https://publishpress.com', array(
'edd_action' => 'get_version',
'license' => $license,
'item_id' => $id,
'url' => $url,
'version' => $this->version,
) ), true );

/**
* If the response does not have a version number or the version number
* does not match the package constraint, bail.
*/
if ( empty( $response['new_version'] ) || $response['new_version'] !== $this->version ) {
return '';
}

if ( ! empty( $response['download_link'] ) ) {
return $response['download_link'];
}

return '';
Expand Down

0 comments on commit db9e91f

Please sign in to comment.