1fdb4710bSMark Prins<?php 2*635a5e2dSMark Prins/* 3fdb4710bSMark Prins * Copyright (c) 2013 Mark C. Prins <mprins@users.sf.net> 4fdb4710bSMark Prins * 5fdb4710bSMark Prins * Permission to use, copy, modify, and distribute this software for any 6fdb4710bSMark Prins * purpose with or without fee is hereby granted, provided that the above 7fdb4710bSMark Prins * copyright notice and this permission notice appear in all copies. 8fdb4710bSMark Prins * 9fdb4710bSMark Prins * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10fdb4710bSMark Prins * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11fdb4710bSMark Prins * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12fdb4710bSMark Prins * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13fdb4710bSMark Prins * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14fdb4710bSMark Prins * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15fdb4710bSMark Prins * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*635a5e2dSMark Prins */ 17*635a5e2dSMark Prins 18*635a5e2dSMark Prins/** 19*635a5e2dSMark Prins * DokuWiki Plugin socialcards (Action Component) 20fdb4710bSMark Prins * 21*635a5e2dSMark Prins * @license BSD license 22fdb4710bSMark Prins * @author Mark C. Prins <mprins@users.sf.net> 23fdb4710bSMark Prins */ 24fdb4710bSMark Prinsif (!defined('DOKU_INC')) die(); 25fdb4710bSMark Prinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 26fdb4710bSMark Prins 27fdb4710bSMark Prinsrequire_once DOKU_PLUGIN.'action.php'; 28fdb4710bSMark Prins 29fdb4710bSMark Prinsclass action_plugin_socialcards extends DokuWiki_Action_Plugin { 30fdb4710bSMark Prins 31fdb4710bSMark Prins public function register(Doku_Event_Handler &$controller) { 32fdb4710bSMark Prins $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handle_tpl_metaheader_output'); 33fdb4710bSMark Prins } 34fdb4710bSMark Prins 35fdb4710bSMark Prins /** 36fdb4710bSMark Prins * retrieve metadata and add to the head of the page using appropriate meta tags. 37fdb4710bSMark Prins * @param Doku_Event $event the DokuWiki event. $event->data is a two-dimensional 38fdb4710bSMark Prins * array of all meta headers. The keys are meta, link and script. 39fdb4710bSMark Prins * @param unknown_type $param 40fdb4710bSMark Prins */ 41fdb4710bSMark Prins public function handle_tpl_metaheader_output(Doku_Event &$event, $param) { 42fdb4710bSMark Prins /* 43fdb4710bSMark Prins * see: http://www.dokuwiki.org/devel:event:tpl_metaheader_output 44fdb4710bSMark Prins * $data is a two-dimensional array of all meta headers. The keys are meta, link and script. 45fdb4710bSMark Prins */ 46fdb4710bSMark Prins global $ID; 47fdb4710bSMark Prins 48fdb4710bSMark Prins // twitter card, see https://dev.twitter.com/docs/cards 49fdb4710bSMark Prins $event->data['meta'][] = array('name' => 'twitter:card', 'content' => "summary",); 50fdb4710bSMark Prins $event->data['meta'][] = array('name' => 'twitter:url', 'content' => wl($ID,'',true),); 51fdb4710bSMark Prins $event->data['meta'][] = array('name' => 'twitter:title', 'content' => p_get_metadata($ID,'title',true),); 52aeb704feSMark Prins $desc = p_get_metadata($ID,'description',true); 53*635a5e2dSMark Prins dbg($desc); 54*635a5e2dSMark Prins 55aeb704feSMark Prins if (!empty($desc)) { 56fc03d0b3SMark Prins $event->data['meta'][] = array('name' => 'twitter:description', 57*635a5e2dSMark Prins 'content' => str_replace("\n", " ", $desc['abstract']),); 58fc03d0b3SMark Prins } 59*635a5e2dSMark Prins $event->data['meta'][] = array('name' => 'twitter:site', 'content' => $this->getConf('twitterName'),); 60fdb4710bSMark Prins //twitter:site:id 61*635a5e2dSMark Prins $event->data['meta'][] = array('name' => 'twitter:creator', 'content' => $this->getConf('twitterName'),); 62fdb4710bSMark Prins //twitter:creator:id 63*635a5e2dSMark Prins //twitter:image 64fdb4710bSMark Prins } 65fdb4710bSMark Prins} 66