turn 'OpenGraph' into a more general purpose HTTP meta facility for setting any meta header
This commit is contained in:
parent
5f41d06bb9
commit
1258f9bb21
66
Zotlabs/Web/HttpMeta.php
Normal file
66
Zotlabs/Web/HttpMeta.php
Normal 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;
|
||||
}
|
||||
|
||||
}
|
@ -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 '';
|
||||
}
|
||||
|
||||
}
|
10
boot.php
10
boot.php
@ -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(),
|
||||
|
Reference in New Issue
Block a user