DEPRECATION WARNING
This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.
Developer Corner¶
Target group: Developers
This chapter contains in-depth details about the various extension features.
Webmentions¶
Processing webmentions may be done asynchronously (recommended) or synchronously. Please see the
TypoScript constant plugin.tx_indieweb.settings.webmentions.async
for details on
how to control the processing style. The scheduler task "Process webmentions" will take care of
the asynchronous processing, while synchronously processed webmentions will be immediately
validated as soon as they are received (don't do this; you might be vulnerable to DDoS attacks
this way).
Asynchronous processing¶
In asynchronous mode, for each webmention the extension will try to find the TYPO3 page being referenced and — in case of success — create a corresponding webmention record on this very page. The records are hidden by default until they are successfully validated by the "Process webmentions" scheduler task. Validation follows the webmention protocol summary.
Synchronous processing¶
In synchronous mode, each incoming webmention will be processed immediately, creating a webmention record only if the webmention validates.
Post-processing hook¶
Incoming webmentions will be validated, but they won't have any effect other than creating (or updating) their corresponding webmention record. In order to further exploit the receipt of a webmention, e.g. by translating it into a blog comment, you need to implement a custom hook as part of a TYPO3 extension. You must register your hook in the ext_localconf.php of your extension like this:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$_EXTKEY]['webmention-PostProc'][] = 'Vendor\\ExtensionName\\Utility\\Hooks->webmention';
The hook callback will get passed two arguments:
Parameter | Data type | Description |
---|---|---|
$params | array | List of parameters (currently only containing the webmention itself) |
$webmention | \Jkphl\Indieweb\Domain\Model\Webmention | The webmention record |
Simply call $webmention->getValid() to find out if the webmention validated. For testing purposes, the extension features a demo hook callback that you can enable in the extension's Extension Manager (EM) settings. Don't enable this demo hook on production systems! It will just print some information about the webmention record itself and possibly disrupt your frontend or backend output:
public function webmention(array $params, \Jkphl\Indieweb\Domain\Model\Webmention $webmention) {
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
$pageRepository = $objectManager->get('Jkphl\\Indieweb\\Domain\\Repository\\PageRepository');
var_export(array(
'source' => $webmention->getSource(),
'target' => $webmention->getTarget(),
'page' => $pageRepository->findByUid($webmention->getPid())->getTitle(),
'author' => array(
'name' => $webmention->getAuthorName(),
'avatar' => $webmention->getAuthorAvatar(),
'profile' => $webmention->getAuthorProfile(),
),
'entry' => array(
'name' => $webmention->getEntryName(),
'summary' => $webmention->getEntrySummary(),
'value' => $webmention->getEntryValue(),
'content' => $webmention->getEntryContent(),
'published' => $webmention->getEntryPublished(),
'updated' => $webmention->getEntryUpdated(),
'url' => $webmention->getEntryUrl(),
),
'context' => $webmention->getContext(),
));
}
It's completely up to you what to make out of your webmentions.