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