*/ if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'action.php'); /** * All DokuWiki plugins to extend the parser/rendering mechanism * need to inherit from this class */ class action_plugin_oiddelegate extends DokuWiki_Action_Plugin { /** * return some info */ function getInfo() { return confToHash(dirname(__FILE__).'/plugin.info.txt'); } function register(Doku_Event_Handler $controller) { $controller->register_hook('TPL_METAHEADER_OUTPUT','BEFORE', $this, 'handle_metaheader'); } function handle_metaheader(&$event, $param) { global $ACT; global $ID; if($ACT != 'show') return true; // read delegate setups from config $delegates = confToHash(DOKU_CONF.'openid-delegates.conf'); $delegate = $delegates[$ID]; // check delegate for current page if(!$delegate) $delegate = $delegates['*']; // fall back to default if any if(!$delegate) return true; list($oid,$server,$provider,$xrds) = preg_split('/\s+/',$delegate,4); $oid = trim($oid); $server = trim($server); $provider = trim($provider); $xrds = trim($xrds); // openid 1 support if($server){ $event->data['link'][] = array( 'rel' => 'openid.server', 'href' => $server, ); $event->data['link'][] = array( 'rel' => 'openid.delegate', 'href' => $oid, ); } // openid 2 support if($provider){ $event->data['link'][] = array( 'rel' => 'openid2.provider', 'href' => $provider, ); $event->data['link'][] = array( 'rel' => 'openid2.local_id', 'href' => $oid, ); } // openid 2 + XRDS if($xrds){ $event->data['meta'][] = array( 'http-equiv' => 'X-XRDS-Location', 'href' => $xrds, ); } return true; } }