turn 'OpenGraph' into a more general purpose HTTP meta facility for setting any meta header

This commit is contained in:
redmatrix 2016-03-08 16:06:58 -08:00
parent 5f41d06bb9
commit 1258f9bb21
3 changed files with 71 additions and 55 deletions

66
Zotlabs/Web/HttpMeta.php Normal file
View File

@ -0,0 +1,66 @@
<?php
namespace Zotlabs\Web;
class HttpMeta {
private $vars = null;
private $og = null;
function __construct() {
$this->vars = array();
$this->og = array();
}
function set($property,$value) {
if(strpos($property,'og:') === 0)
$this->og[$property] = $value;
else
$this->vars[$property] = $value;
}
function check_required() {
if(
($this->og)
&& array_key_exists('og:title',$this->og)
&& array_key_exists('og:type', $this->og)
&& array_key_exists('og:image',$this->og)
&& array_key_exists('og:url', $this->og)
)
return true;
return false;
}
function get_field($field) {
if(strpos($field,'og:') === 0)
$arr = $this->og;
else
$arr = $this->vars;
if($arr && array_key_exists($field,$arr) && $arr[$field])
return $arr[$field];
return false;
}
function get() {
$o = '';
if($this->vars) {
foreach($this->vars as $k => $v) {
$o .= '<meta property="' . $k . '" content="' . urlencode($v) . '" />' . "\r\n" ;
}
}
if($this->check_required()) {
foreach($this->og as $k => $v) {
$o .= '<meta property="' . $k . '" content="' . urlencode($v) . '" />' . "\r\n" ;
}
}
if($o)
return "\r\n" . $o;
return $o;
}
}

View File

@ -1,50 +0,0 @@
<?php
namespace Zotlabs\Web;
class OpenGraph {
private $vars = null;
function __construct() {
$this->vars = array();
}
function set($property,$value) {
$this->vars[$property] = $value;
}
function check_required() {
if(
($this->vars)
&& array_key_exists('og:title',$this->vars)
&& array_key_exists('og:type', $this->vars)
&& array_key_exists('og:image',$this->vars)
&& array_key_exists('og:url', $this->vars)
)
return true;
return false;
}
function get_field($field) {
if($this->vars && array_key_exists($field,$this->vars) && $this->vars[$field])
return $this->vars[$field];
return false;
}
function get() {
if($this->check_required()) {
$o = "\r\n";
foreach($this->vars as $k => $v) {
$o .= '<meta property="' . $k . '" content="' . urlencode($v) . '" />' . "\r\n" ;
}
return $o;
}
return '';
}
}

View File

@ -753,7 +753,7 @@ class App {
private $baseurl;
private $OG;
private $meta;
/**
* App constructor.
@ -873,7 +873,7 @@ class App {
spl_autoload_register('ZotlabsAutoloader::loader');
$this->OG = new Zotlabs\Web\OpenGraph();
$this->meta= new Zotlabs\Web\HttpMeta();
}
function get_baseurl($ssl = false) {
@ -1023,8 +1023,8 @@ class App {
if(! x($this->page,'title'))
$this->page['title'] = $this->config['system']['sitename'];
if(! $this->OG->get_field('og:title'))
$this->OG->set('og:title',$this->page['title']);
if(! $this->meta->get_field('og:title'))
$this->meta->set('og:title',$this->page['title']);
/* put the head template at the beginning of page['htmlhead']
* since the code added by the modules frequently depends on it
@ -1037,7 +1037,7 @@ class App {
'$baseurl' => $this->get_baseurl(),
'$local_channel' => local_channel(),
'$generator' => Zotlabs\Project\System::get_platform_name() . ((Zotlabs\Project\System::get_project_version()) ? ' ' . Zotlabs\Project\System::get_project_version() : ''),
'$metas' => $this->OG->get(),
'$metas' => $this->meta->get(),
'$update_interval' => $interval,
'$icon' => head_get_icon(),
'$head_css' => head_get_css(),