include/fbcomment_plugin.php
<?php
/**
* include/fbcomment_plugin.php - supply gwiki meta data open graph style for fbcomment module
*
* This file is part of gwiki - geekwright wiki
*
* @param mixed $metas
* @param mixed $plugin_env
* @since 1.0
* @author Richard Griffith <richard@geekwright.com>
* @package gwiki
* @copyright Copyright © 2013 geekwright, LLC. All rights reserved.
* @license gwiki/docs/license.txt GNU General Public License (GPL)
*/
/*
* Open Graph Meta Tags we can set here:
*
* $metas['fb:admins'] = $admins;
* $metas['fb:app_id'] = $appid;
* $metas['og:type']=$type;
* $metas['og:url']=$oururl;
* $metas['og:title']=$title;
* $metas['og:description']=$description;
* $metas['og:image']=$image;
* $metas['og:site_name'] = $sitename;
*
*/
use XoopsModules\Gwiki\Helper;
/**
* @param $metas
* @param $plugin_env
*
* @return bool
*/
function fbcom_plugin(&$metas, $plugin_env)
{
global $xoopsDB;
$helper = Helper::getInstance();
$dir = \basename(\dirname(__DIR__));
// Access module configs from block:
/** @var \XoopsModuleHandler $moduleHandler */
$moduleHandler = xoops_getHandler('module');
$module = $moduleHandler->getByDirname($dir);
/** @var \XoopsConfigHandler $configHandler */
$configHandler = xoops_getHandler('config');
$moduleConfig = $configHandler->getConfigsByCat(0, $module->getVar('mid'));
$wikihome = mb_strtolower($helper->getConfig('wiki_home_page'));
// fake a full url with page if at top of module
if (!isset($plugin_env['page']) && '/' === mb_substr($metas['og:url'], -1)) {
$plugin_env['page'] = $wikihome;
$metas['og:url'] .= 'index.php'; //$metas['og:url'] = $metas['og:url'] . 'index.php';
}
if (isset($plugin_env['page'])) {
// cononicalize our url with our rules
// - page needs to be case insensitve (AbCde and AbcDe yield the same page)
$keyword = mb_strtolower($plugin_env['page']);
// - strip any OOB data
if (')' === mb_substr($keyword, -1)) {
$lparen = mb_strpos($keyword, '(');
if (false !== $lparen) {
$keyword = mb_substr($keyword, 0, $lparen);
}
}
// - eliminate index.php?page=wikihome
$ourscript = explode('?', urldecode($metas['og:url']));
$ourscript_parts = pathinfo($ourscript[0]);
if ('index.php' !== $ourscript_parts['basename']) {
return false;
}
if ($keyword === $wikihome && 'index.php' === $ourscript_parts['basename']) {
$newscript = $ourscript_parts['dirname'] . '/';
} else {
$newscript = $ourscript[0] . '?page=' . $keyword;
}
$metas['og:url'] = $newscript;
$wikitable = $xoopsDB->prefix('gwiki_pages');
$imagetable = $xoopsDB->prefix('gwiki_page_images');
$sql = "SELECT title, meta_description, search_body, image_file FROM {$wikitable} p ";
$sql .= " left join {$imagetable} i on p.keyword=i.keyword and use_to_represent = 1 ";
$sql .= " where p.keyword = '{$keyword}' and active=1 ";
// set title and description
$result = $xoopsDB->query($sql);
if ($result) {
// if(!$xoopsDB->getRowsNum($result)) return false;
$myrow = $xoopsDB->fetchArray($result);
if ($myrow) {
if (!empty($myrow['title'])) {
$metas['og:title'] = $myrow['title'];
}
if (!empty($myrow['search_body'])) {
$description = $myrow['search_body'];
$description = mb_substr($description, 0, 40) . '...';
$metas['og:description'] = $description;
}
if (!empty($myrow['meta_description'])) {
$description = $myrow['meta_description'];
$metas['og:description'] = $description;
}
if (!empty($myrow['image_file'])) {
$image_file = $myrow['image_file'];
$metas['og:image'] = XOOPS_URL . '/uploads/' . $dir . '/' . $image_file;
}
return true;
}
}
}
return false;
}