xref: /plugin/socialcards/action.php (revision 635a5e2dd2ea187166ad769c10d483c9d4a7a443)
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