mirror of
https://github.com/e107inc/e107.git
synced 2025-01-17 20:58:30 +01:00
Meta-data clean-up and enhancements.
This commit is contained in:
parent
c244d683f8
commit
6ca55ce728
@ -29,13 +29,13 @@ class e_bbcode
|
||||
var $bbList; // Caches the file contents for each bbcode processed
|
||||
var $bbLocation; // Location for each file - 'core' or a plugin name
|
||||
var $preProcess = FALSE; // Set when processing bbcodes prior to saving
|
||||
|
||||
var $core_bb = array();
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$pref = e107::getPref();
|
||||
|
||||
$core_bb = array(
|
||||
$this->core_bb = array(
|
||||
'blockquote', 'img', 'i', 'u', 'center',
|
||||
'_br', 'color', 'size', 'code',
|
||||
'html', 'flash', 'link', 'email',
|
||||
@ -46,7 +46,7 @@ class e_bbcode
|
||||
'p', 'h', 'nobr', 'block',
|
||||
);
|
||||
|
||||
foreach($core_bb as $c)
|
||||
foreach($this->core_bb as $c)
|
||||
{
|
||||
$this->bbLocation[$c] = 'core';
|
||||
}
|
||||
@ -377,6 +377,48 @@ class e_bbcode
|
||||
}
|
||||
return $bbcode_output.$bbcode_return;
|
||||
}
|
||||
|
||||
|
||||
/** Grab a list of bbcode content . ie. all [img]xxxx[/img] within a block of text.
|
||||
* @var string $type - bbcode eg. 'img' or 'youtube'
|
||||
* @var string $text - text to be processed for bbcode content
|
||||
* @var string $path - optional path to prepend to output if http or {e_xxxx} is not found.
|
||||
* @return array
|
||||
*/
|
||||
function getContent($type,$text,$path='')
|
||||
{
|
||||
if(!in_array($type,$this->core_bb))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
preg_match_all("/\[".$type."(?:[^\]]*)?]([^\[]*)(?:\[\/".$type."])/im",$text,$mtch);
|
||||
|
||||
$ret = array();
|
||||
|
||||
if(is_array($mtch[1]))
|
||||
{
|
||||
$tp = e107::getParser();
|
||||
foreach($mtch[1] as $i)
|
||||
{
|
||||
if(substr($i,0,4)=='http')
|
||||
{
|
||||
$ret[] = $i;
|
||||
}
|
||||
elseif(substr($i,0,3)=="{e_")
|
||||
{
|
||||
$ret[] = $tp->replaceConstants($i,'full');
|
||||
}
|
||||
else
|
||||
{
|
||||
$ret[] = $path.$i;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -155,6 +155,7 @@ class e107
|
||||
'e_admin_request' => '{e_HANDLER}admin_ui.php',
|
||||
'e_admin_response' => '{e_HANDLER}admin_ui.php',
|
||||
'e_admin_ui' => '{e_HANDLER}admin_ui.php',
|
||||
'e_bbcode' => '{e_HANDLER}bbcode_handler.php',
|
||||
'e_file' => '{e_HANDLER}file_class.php',
|
||||
'e_form' => '{e_HANDLER}form_handler.php',
|
||||
'e_jshelper' => '{e_HANDLER}js_helper.php',
|
||||
@ -967,7 +968,7 @@ class e107
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve event singleton object
|
||||
* Retrieve cache singleton object
|
||||
*
|
||||
* @return ecache
|
||||
*/
|
||||
@ -976,6 +977,16 @@ class e107
|
||||
return self::getSingleton('ecache', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve bbcode singleton object
|
||||
*
|
||||
* @return e_bbcode
|
||||
*/
|
||||
public static function getBB()
|
||||
{
|
||||
return self::getSingleton('e_bbcode', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve user-session singleton object
|
||||
*
|
||||
|
@ -98,6 +98,13 @@ class e_jsmanager
|
||||
* @var array
|
||||
*/
|
||||
protected $_e_css_src = array();
|
||||
|
||||
/**
|
||||
* Meta
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_e_meta = array();
|
||||
|
||||
/**
|
||||
* Runtime location
|
||||
@ -281,6 +288,19 @@ class e_jsmanager
|
||||
$this->addJs('inline_css', $css_content, $media);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Meta code to site header
|
||||
*
|
||||
* @param string $name
|
||||
* @param string $content
|
||||
* @return e_jsmanager
|
||||
*/
|
||||
public function coreMeta($name, $content = '')
|
||||
{
|
||||
$this->addJs('core_meta', $name, $content);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Core JS library file(s) for inclusion from e_jslib routine
|
||||
@ -543,7 +563,7 @@ class e_jsmanager
|
||||
return $this;
|
||||
}
|
||||
|
||||
if($type == 'core' && substr($file_path,0,4)=='http' ) // Core using CDN.
|
||||
if($type == 'core' && !is_array($file_path) && substr($file_path,0,4)=='http' ) // Core using CDN.
|
||||
{
|
||||
$type = 'header';
|
||||
$runtime_location = 1;
|
||||
@ -618,6 +638,13 @@ class e_jsmanager
|
||||
return $this;
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'core_meta':
|
||||
$this->_e_meta['core'][] = $file_path."|".$runtime_location;
|
||||
$registry = &$this->_e_meta['core'];
|
||||
return $this;
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'header':
|
||||
$file_path = $tp->createConstants($file_path, 'mix');
|
||||
@ -752,6 +779,11 @@ class e_jsmanager
|
||||
$this->renderInline($this->_e_css_src, 'Inline CSS', 'css');
|
||||
$this->_e_css_src = array();
|
||||
break;
|
||||
|
||||
case 'core_meta':
|
||||
$this->renderMeta($this->_e_meta, 'Meta', 'core');
|
||||
$this->_e_meta['core'] = array();
|
||||
break;
|
||||
|
||||
case 'footer':
|
||||
if(true === $zone)
|
||||
@ -928,6 +960,46 @@ class e_jsmanager
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Render Meta source array
|
||||
*
|
||||
* @param array $js_content_array
|
||||
* @param string $label added as comment if non-empty
|
||||
* @return void
|
||||
*/
|
||||
function renderMeta($content_array, $label = '',$type = 'core')
|
||||
{
|
||||
|
||||
|
||||
|
||||
if(empty($content_array))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
$content_array[$type] = array_unique($content_array[$type]); //TODO quick fix, we need better control!
|
||||
echo "\n";
|
||||
|
||||
if($label)
|
||||
{
|
||||
echo "<!-- [JSManager] ".$label." -->\n";
|
||||
}
|
||||
|
||||
foreach($content_array[$type] as $met)
|
||||
{
|
||||
list($name,$content) = explode("|",$met);
|
||||
echo "\n";
|
||||
echo '<meta name="'.$name.'" content="'.$content.'" />';
|
||||
}
|
||||
|
||||
echo "\n\n";
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if currently running in
|
||||
|
@ -103,6 +103,10 @@ echo "<head>
|
||||
<meta http-equiv='content-type' content='text/html; charset=utf-8' />
|
||||
<meta http-equiv='content-style-type' content='text/css' />
|
||||
";
|
||||
|
||||
|
||||
|
||||
|
||||
echo (defined("CORE_LC")) ? "<meta http-equiv='content-language' content='".CORE_LC."' />\n" : "";
|
||||
echo "<title>".(defined('e_PAGETITLE') ? e_PAGETITLE.' - ' : (defined('PAGE_NAME') ? PAGE_NAME.' - ' : "")).SITENAME."</title>\n\n";
|
||||
|
||||
@ -123,6 +127,8 @@ else
|
||||
$e_js = e107::getJs();
|
||||
$e_pref = e107::getConfig('core');
|
||||
|
||||
|
||||
|
||||
// Register Core CSS first, TODO - convert $no_core_css to constant, awaiting for path changes
|
||||
// NOTE: PREVIEWTHEME check commented - It shouldn't break anything as it's overridden by theme CSS now
|
||||
if (/*!defined("PREVIEWTHEME") && */!isset($no_core_css) || !$no_core_css)
|
||||
@ -150,6 +156,8 @@ unset($e_headers);
|
||||
$e_js = e107::getJs();
|
||||
$e_pref = e107::getConfig('core');
|
||||
|
||||
e107::getJS()->renderJs('core_meta',false);
|
||||
|
||||
// --- Load plugin Meta files - now possible to add to all zones! --------
|
||||
$e_meta_content = '';
|
||||
if (is_array($pref['e_meta_list']))
|
||||
@ -168,6 +176,8 @@ if (is_array($pref['e_meta_list']))
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Register Plugin specific CSS
|
||||
// DEPRECATED, use $e_js->pluginCSS('myplug', 'style/myplug.css'[, $media = 'all|screen|...']);
|
||||
if (isset($eplug_css) && $eplug_css)
|
||||
@ -384,6 +394,8 @@ e107::getJs()->renderJs('header_inline', 5);
|
||||
// --- Send plugin Meta --------
|
||||
echo $e_meta_content; // e_meta already loaded
|
||||
|
||||
|
||||
|
||||
//
|
||||
// G: Send Theme Headers
|
||||
//
|
||||
|
68
news.php
68
news.php
@ -890,25 +890,78 @@ function render_newscats(){ // -- CNN Style Categories. ----
|
||||
|
||||
function setNewsFrontMeta($news, $type='news')
|
||||
{
|
||||
|
||||
$tp = e107::getParser();
|
||||
|
||||
if($type == 'news')
|
||||
{
|
||||
if($news['news_title'] && !defined('e_PAGETITLE'))
|
||||
{
|
||||
define('e_PAGETITLE', $news['news_title']);
|
||||
}
|
||||
|
||||
if($news['news_meta_keywords'] && !defined('META_KEYWORDS'))
|
||||
{
|
||||
define('META_KEYWORDS', $news['news_meta_keywords']);
|
||||
e107::getJS()->coreMeta('og:title',$news['news_title']);
|
||||
e107::getJS()->coreMeta('og:type','article');
|
||||
}
|
||||
|
||||
if($news['news_meta_description'] && !defined('META_DESCRIPTION'))
|
||||
{
|
||||
define('META_DESCRIPTION', $news['news_meta_description']);
|
||||
e107::getJS()->coreMeta('description',$news['news_meta_description']);
|
||||
e107::getJS()->coreMeta('og:description',$news['news_meta_description']);
|
||||
//define('META_DESCRIPTION', $news['news_meta_description']); // deprecated
|
||||
}
|
||||
elseif($news['news_summary']) // BC compatibility
|
||||
{
|
||||
e107::getJS()->coreMeta('og:description',$news['news_summary']);
|
||||
}
|
||||
|
||||
// grab all images in news-body and add to meta.
|
||||
$images = e107::getBB()->getContent('img',$news['news_body'],SITEURL.e_IMAGE."newspost_images/");
|
||||
foreach($images as $im)
|
||||
{
|
||||
e107::getJS()->coreMeta('og:image',$im);
|
||||
}
|
||||
|
||||
// grab all youtube videos in news-body and add thumbnails to meta.
|
||||
$youtube = e107::getBB()->getContent('youtube',$news['news_body']);
|
||||
foreach($youtube as $yt)
|
||||
{
|
||||
list($img,$tmp) = explode("?",$yt);
|
||||
e107::getJS()->coreMeta('og:image',"http://img.youtube.com/vi/".$img."/0.jpg");
|
||||
}
|
||||
|
||||
// include news-thumbnail/image in meta.
|
||||
if($news['news_thumbnail'])
|
||||
{
|
||||
$iurl = (substr($news['news_thumbnail'],0,3)=="{e_") ? $tp->replaceConstants($news['news_thumbnail'],'full') : SITEURL.e_IMAGE."newspost_images/".$news['news_thumbnail'];
|
||||
e107::getJS()->coreMeta('og:image',$iurl);
|
||||
}
|
||||
|
||||
$url = e107::getUrl()->create('news/view/item', $news,'full=1');
|
||||
e107::getJS()->coreMeta('og:url',$url);
|
||||
|
||||
e107::getJS()->coreMeta('article:section',$news['category_name']);
|
||||
|
||||
if($news['news_meta_keywords'] && !defined('META_KEYWORDS'))
|
||||
{
|
||||
e107::getJS()->coreMeta('keywords',$news['news_meta_keywords']);
|
||||
$tmp = explode(",",$news['news_meta_keywords']);
|
||||
foreach($tmp as $t)
|
||||
{
|
||||
e107::getJS()->coreMeta('article:tag',$t);
|
||||
}
|
||||
|
||||
// define('META_KEYWORDS', $news['news_meta_keywords']); // deprecated
|
||||
}
|
||||
|
||||
|
||||
/* Facebook reference.
|
||||
* http://developers.facebook.com/docs/opengraph/objects/builtin/
|
||||
*/
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if($news['category_name'] && !defined('e_PAGETITLE'))
|
||||
{
|
||||
define('e_PAGETITLE', $news['category_name']);
|
||||
@ -923,6 +976,9 @@ function setNewsFrontMeta($news, $type='news')
|
||||
{
|
||||
define('META_DESCRIPTION', $news['category_meta_description']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user