%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/landing/lib/hook/page/ |
| Current File : /home/bitrix/www/bitrix/modules/landing/lib/hook/page/metaog.php |
<?php
namespace Bitrix\Landing\Hook\Page;
use \Bitrix\Landing\Manager;
use \Bitrix\Landing\Field;
use \Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
class MetaOg extends \Bitrix\Landing\Hook\Page
{
/**
* Map of the field.
* @return array
*/
protected function getMap()
{
return array(
'TITLE' => new Field\Text('TITLE', array(
'title' => Loc::getMessage('LANDING_HOOK_METAOG_TITLE'),
'placeholder' => Loc::getMessage('LANDING_HOOK_METAOG_TITLE_PLACEHOLDER'),
'maxlength' => 140
)),
'DESCRIPTION' => new Field\Textarea('DESCRIPTION', array(
'title' => Loc::getMessage('LANDING_HOOK_METAOG_DESCRIPTION'),
'placeholder' => Loc::getMessage('LANDING_HOOK_METAOG_DESCRIPTION_PLACEHOLDER'),
'maxlength' => 300
)),
'IMAGE' => new Field\Hidden('IMAGE', array(
'title' => Loc::getMessage('LANDING_HOOK_METAOG_PICTURE')
))
);
}
/**
* Specific method gor get all landing's images.
* @return array
*/
public static function getAllImages()
{
$images = array();
$res = \Bitrix\Landing\Internals\HookDataTable::getList(array(
'select' => array(
'VALUE', 'ENTITY_ID'
),
'filter' => array(
'=HOOK' => 'METAOG',
'=CODE' => 'IMAGE',
'=ENTITY_TYPE' => \Bitrix\Landing\Hook::ENTITY_TYPE_LANDING
)
));
while ($row = $res->fetch())
{
$images[$row['ENTITY_ID']] = $row['VALUE'];
}
return $images;
}
/**
* Title of Hook, if you want.
* @return string
*/
public function getTitle()
{
return Loc::getMessage('LANDING_HOOK_METAOG_NAME');
}
/**
* Enable or not the hook.
* @return boolean
*/
public function enabled()
{
return
trim($this->fields['TITLE']) != '' ||
trim($this->fields['DESCRIPTION']) != '' ||
trim($this->fields['IMAGE']) != '';
}
/**
* Exec hook.
* @return void
*/
public function exec()
{
$output = '';
$og = array(
'title' => \htmlspecialcharsbx(trim($this->fields['TITLE'])),
'description' => \htmlspecialcharsbx(trim($this->fields['DESCRIPTION'])),
'image' => trim($this->fields['IMAGE']),
'type' => 'website'
);
foreach ($og as $key => $val)
{
if ($key == 'image' && intval($val) > 0)
{
$val = \Cfile::getFileArray($val);
}
if ($val)
{
if ($key == 'image')
{
if (is_array($val))
{
$val['SRC'] = Manager::getUrlFromFile($val['SRC']);
$output .=
'<meta name="og:image" content="' . str_replace(' ', '%20', \htmlspecialcharsbx($val['SRC'])) . '" />' .
'<meta name="og:image:width" content="' . $val['WIDTH'] . '" />' .
'<meta name="og:image:height" content="' . $val['HEIGHT'] . '" />';
}
else
{
$output .= '<meta name="og:image" content="' . str_replace(' ', '%20', \htmlspecialcharsbx($val)) . '" />';
}
}
else
{
$output .= '<meta name="og:' . $key . '" content="' . $val . '" />';
}
}
}
if ($output)
{
Manager::setPageView('MetaOG', $output);
}
}
}