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