1<?php 2/** 3 * Plugin Facebook comments on Dokuwiki 4 * 5 * Syntax: <TEST> - will be replaced with "Hello World!" 6 * 7 * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 8 * @author Christopher Smith <chris@jalakai.co.uk> 9 */ 10 11if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); 12if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 13require_once(DOKU_PLUGIN.'syntax.php'); 14require_once(DOKU_INC.'inc/auth.php'); 15 16class syntax_plugin_fbcomments extends DokuWiki_Syntax_Plugin { 17 18 /** 19 * Plugin Info 20 */ 21 function getInfo(){ 22 return array( 23 'author' => 'Greatdays', 24 'email' => 'greatedays@gmail.com', 25 'date' => '2011-04-03', 26 'name' => 'Facebook comments box', 27 'desc' => 'Add Facebook comments box', 28 'url' => 'http://juice.linuxstudy.pe.kr/wiki/facebook_comments_for_dokuwiki', 29 ); 30 } 31 32 /* 33 * Get the type of syntax this plugin defines. 34 */ 35 function getType(){ 36 return 'container'; 37 } 38 39 function getPType(){ 40 return 'block'; 41 } 42 43 function getSort(){ 44 return FXIME; 45 } 46 47 function connectTo($mode) { 48// $this->Lexer->addSpecialPattern('\{\{fbc[^}]*\}\}',$mode,'plugin_fbcomments'); 49 $this->Lexer->addSpecialPattern('\{\{fbc>[^}]*\}\}',$mode,'plugin_fbcomments'); 50 } 51 52 function handle($match, $state, $pos, &$handler){ 53 if (isset($_REQUEST['comment'])) return false; 54 55 $match= substr($match, 6, -2); 56 $data = array(); 57 58 $params = explode('|',$match); 59 foreach($params as $param){ 60 61 $splitparam = explode('=',$param); 62 if($splitparam[0] == num) 63 $splitparam[0]= 'num_posts'; 64 65 $splitparam[0] = FB_. $splitparam[0]; 66 $data[$splitparam[0]] = $splitparam[1]; 67 } 68 69 return $data; 70 } 71 72 function render($mode, &$renderer, $data){ 73 if($mode == 'xhtml'){ 74 $renderer->doc .= $this->_commentsBox($data); 75 76 return true; 77 } 78 return false; 79 } 80 81 protected function _commentsBox($data){ 82 global $ID; 83 global $conf; 84 $this ->data= $data; 85 86 if($data['FB_like'] == 'y' or $data['FB_like'] == 'Y'){ 87 $fblike = '<!-- Fcaebook Like Button -->' 88 .'<fb:like href="'. wl($ID, '', true) .'"' 89 .'show_faces="true" width="'. $this->_fbsetting('FB_width', $conf) .'" action="like" font="">' 90 .'</fb:like>' 91 .'<!-- Facebook Like Button end -->'; 92 } 93 else $fblike = '<!-- Fcaebook Like Button --> ' 94 .'<!-- Facebook Like Button end -->'; 95 96 if(!empty($conf['plugin']['fbcomments']['FB_AppID'])){ 97 98 $box= '<!-- Facebook Script -->' 99 .'<div id="fb-root"> </div>' 100 .'<script src="http://connect.facebook.net/'. $this->getLang('fb_langs') 101 .'/all.js#appId='. $this->getConf('FB_AppID') .'&xfbml=1">' 102 .'</script>' 103 . $fblike 104 .'<!-- Facbebook Comments Box start -->' 105 .'<fb:comments href="'. wl($ID, '', true) 106 .'" num_posts="'. $this->_fbsetting('FB_num_posts', $conf) 107 .'" width="'. $this->_fbsetting('FB_width', $conf) 108 .'"></fb:comments>' 109 .'<!-- Facebook Comments Box end -->'; 110 } 111 else $box= 'Empty Facebook App ID'; 112 113 return $box; 114 } 115 116 protected function _fbsetting($name, $fbconf) { 117 include dirname(__FILE__).'/conf/default.php'; 118 119 if(empty($this->data[$name])){ 120 if(!empty($fbconf['plugin']['fbcomments'][$name])) 121 return $fbconf['plugin']['fbcomments'][$name]; 122 else return $conf[$name]; 123 } 124 return hsc($this->data[$name]); 125 } 126 127} 128?>