Scriptlog Docs

Scriptlog Documentation

Code reference for the Scriptlog codebase

User Tools

Site Tools


scriptlog:lib:service:themelicenseservice

This is an old revision of the document!


ThemeLicenseService

Layer: Service · Source: lib/service/ThemeLicenseService.php:21 (lines 21–321)


class ThemeLicenseService

ThemeLicenseService

HTTP client that validates premium theme licenses against the MyBlog license API (https://myblog.local/api/v2/licenses/*). Requests are HMAC-signed using the per-product license_secret embedded in the theme's theme.ini file.

Docblock Metadata

^ Tag ^ Value ^
| ''@category'' | Class ThemeLicenseService |
| ''@author'' | MyBlog |
| ''@license'' | MIT |
| ''@version'' | 1.0.0 |
| ''@since'' | Since Release 1.0.0 |

Inheritance

No parent, interface or trait. This is a root type.

Constants (0)

None.

Properties (0)

None declared.

Methods (10)

^ Visibility ^ Method ^ Summary ^ Line ^
| public | ''__construct()'' | Constructor | 43 |
| public | ''readThemeConfig()'' | Read the theme.ini configuration for a given theme directory. | 55 |
| public | ''isPremiumTheme()'' | Determine whether a theme is a premium theme. | 74 |
| public | ''activate()'' | Activate a license key against the MyBlog license API. | 97 |
| public | ''validate()'' | Validate an already-activated license. | 120 |
| public | ''deactivate()'' | Deactivate a theme license, releasing one activation slot. | 143 |
| protected | ''post()'' | Send an HMAC-signed POST request to the license API. | 167 |
| private | ''postCurl()'' | Send the request using cURL. | 198 |
| private | ''postStream()'' | Send the request using stream context (fallback when cURL is absent). | 234 |
| protected | ''parseResponse()'' | Parse the JSON response from the license API. | 278 |

__construct()

public function __construct($apiBaseUrl = null, $timeout = 10)

lines 43–47 (5)

Constructor

^ Parameter ^ Type ^ Default ^ Description ^
| ''$apiBaseUrl'' | ''(untyped)'' | ''null'' | Override the license API base URL. |
| ''$timeout'' | ''(untyped)'' | ''10'' | Request timeout in seconds. |

readThemeConfig()

public function readThemeConfig($themeDirectory)

lines 55–66 (12)

Read the theme.ini configuration for a given theme directory.

^ Parameter ^ Type ^ Default ^ Description ^
| ''$themeDirectory'' | ''(untyped)'' | //required// | //none// |

Returns: (none declared) — array

isPremiumTheme()

public function isPremiumTheme($themeDirectory)

lines 74–83 (10)

Determine whether a theme is a premium theme.

^ Parameter ^ Type ^ Default ^ Description ^
| ''$themeDirectory'' | ''(untyped)'' | //required// | //none// |

Returns: (none declared) — bool

activate()

public function activate($licenseKey, $domain, $productSecret, $productId)

lines 97–107 (11)

Activate a license key against the MyBlog license API.

POST /api/v2/licenses/activate/{product_id} Body: {“license_key”: “…”, “domain”: “…”}

^ Parameter ^ Type ^ Default ^ Description ^
| ''$licenseKey'' | ''(untyped)'' | //required// | The license key entered by the admin. |
| ''$domain'' | ''(untyped)'' | //required// | The domain where the theme is installed. |
| ''$productSecret'' | ''(untyped)'' | //required// | Per-product license_secret embedded in the theme. |
| ''$productId'' | ''(untyped)'' | //required// | MyBlog store product ID for this theme. |

Returns: (none declared) — array{success: bool, message: string, data?: array}

validate()

public function validate($licenseKey, $productId, $productSecret)

lines 120–130 (11)

Validate an already-activated license.

POST /api/v2/licenses/validate Body: {“license_key”: “…”, “product_id”: N}

^ Parameter ^ Type ^ Default ^ Description ^
| ''$licenseKey'' | ''(untyped)'' | //required// | //none// |
| ''$productId'' | ''(untyped)'' | //required// | //none// |
| ''$productSecret'' | ''(untyped)'' | //required// | //none// |

Returns: (none declared) — array{success: bool, message: string, data?: array}

deactivate()

public function deactivate($licenseKey, $productId, $productSecret)

lines 143–153 (11)

Deactivate a theme license, releasing one activation slot.

POST /api/v2/licenses/deactivate Body: {“license_key”: “…”, “product_id”: N}

^ Parameter ^ Type ^ Default ^ Description ^
| ''$licenseKey'' | ''(untyped)'' | //required// | //none// |
| ''$productId'' | ''(untyped)'' | //required// | //none// |
| ''$productSecret'' | ''(untyped)'' | //required// | //none// |

Returns: (none declared) — array{success: bool, message: string, data?: array}

post()

protected function post($url, $body, $secret)

lines 167–188 (22)

Send an HMAC-signed POST request to the license API.

Signature scheme (mirrors MyBlog ApiAuthService::verifyHmacSignature):

payload = "{timestamp}.{nonce}.{body}"
signature = hash_hmac('sha256', payload, secret)
^ Parameter ^ Type ^ Default ^ Description ^
| ''$url'' | ''(untyped)'' | //required// | //none// |
| ''$body'' | ''(untyped)'' | //required// | //none// |
| ''$secret'' | ''(untyped)'' | //required// | //none// |

Returns: (none declared) — array{success: bool, message: string, data?: array}

postCurl()

private function postCurl($url, $body, array $headers)

lines 198–224 (27)

Send the request using cURL.

^ Parameter ^ Type ^ Default ^ Description ^
| ''$url'' | ''(untyped)'' | //required// | //none// |
| ''$body'' | ''(untyped)'' | //required// | //none// |
| ''$headers'' | ''array'' | //required// | //none// |

Returns: (none declared) — array

postStream()

private function postStream($url, $body, array $headers)

lines 234–269 (36)

Send the request using stream context (fallback when cURL is absent).

^ Parameter ^ Type ^ Default ^ Description ^
| ''$url'' | ''(untyped)'' | //required// | //none// |
| ''$body'' | ''(untyped)'' | //required// | //none// |
| ''$headers'' | ''array'' | //required// | //none// |

Returns: (none declared) — array

parseResponse()

protected function parseResponse($response, $httpCode)

lines 278–320 (43)

Parse the JSON response from the license API.

^ Parameter ^ Type ^ Default ^ Description ^
| ''$response'' | ''(untyped)'' | //required// | //none// |
| ''$httpCode'' | ''(untyped)'' | //required// | //none// |

Returns: (none declared) — array


This page is generated from source by 'tools/gendoc'. Edits will be overwritten.

scriptlog/lib/service/themelicenseservice.1790413760.txt.gz · Last modified: by admin