| Server IP : 54.36.91.62 / Your IP : 216.73.217.112 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/c/o/o/coopiak/amisdesseniors-fr/nice/components/com_community/helpers/ |
Upload File : |
<?php
/**
* @copyright (C) 2013 iJoomla, Inc. - All rights reserved.
* @license GNU General Public License, version 2 (http://www.gnu.org/licenses/gpl-2.0.html)
* @author iJoomla.com <webmaster@ijoomla.com>
* @url https://www.jomsocial.com/license-agreement
* The PHP code portions are distributed under the GPL license. If not otherwise stated, all images, manuals, cascading style sheets, and included JavaScript *are NOT GPL, and are released under the IJOOMLA Proprietary Use License v1.0
* More info at https://www.jomsocial.com/license-agreement
*/
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
// no direct access
defined('_JEXEC') or die('Restricted access');
/* class exist checking */
if (!class_exists('CHeadHelper')) {
/**
* HTML head helper
* This class provide method to set HTML head and opengraph metas
* @since 3.0.1
*/
class CHeadHelper {
/**
* Set page title
* @param string $title
*/
public static function setTitle($title) {
$document = Factory::getDocument();
$document->setTitle($title);
self::addOpengraph('og:title', $title);
}
/**
* Set page description
* @param string $content
*/
public static function setDescription($content) {
if ($content !== '') {
$document = Factory::getDocument();
$document->setDescription($content);
self::addOpengraph('og:description', $content);
}
}
/**
* Add Opengraph meta into head
* @staticvar array $metas
* @param string $property
* @param string $content
* @param boolean $isArray
*/
public static function addOpengraph($property, $content, $isArray = false) {
static $metas = array();
$documentHTML = Factory::getDocument();
$content = htmlentities($content);
/* check if property already added */
if (isset($metas[$property])) {
/* only adding if it's array type */
if ($isArray) {
$meta = '<meta property="' . $property . '" content="' . $content . '"/>';
$metas[$property][] = $meta;
$documentHTML->addCustomTag($meta);
}
} else { /* property is not exist than add it */
$meta = '<meta property="' . $property . '" content="' . $content . '"/>';
/* if this's array we'll store into array too */
if ($isArray) {
$metas[$property][] = $meta;
} else {
$metas[$property] = $meta;
}
$documentHTML->addCustomTag($meta);
}
}
/**
* Apply complete opengraph for a type
* @param type $type
* @param type $title
* @param type $image
*/
public static function setType($type, $title, $description = null, $images = null) {
/**
* We do get menu override title
*/
$jinput = Factory::getApplication()->input;
/* Get link for special toolbar items */
if ($jinput->get('view') === 'memberlist')
$activeLink = 'index.php?option=' . $jinput->get('option') . '&view=' . $jinput->get('view') . '&listid=' . $jinput->get('listid');
$activeLink = 'index.php?option=' . $jinput->get('option') . '&view=' . $jinput->get('view');
$model = CFactory::getModel('Toolbar');
$active = $model->getActiveId($activeLink);
$activeMenu = Factory::getApplication()->getMenu()->getItem($active);
/* Fix for frontpage menu. If no valid activeMenu return than we use Joomla! getActive */
if (is_null($activeMenu))
$activeMenu = Factory::getApplication()->getMenu()->getActive();
if (is_object($activeMenu)) {
$menuParams = $activeMenu->getParams();
$pageTitle = trim($menuParams->get('page_title', ''));
if ($pageTitle != '') {
$title = $pageTitle . $title;
}
$menuDescription = trim($menuParams->get('menu-meta_description', ''));
/**
* @todo Should we provide og:tags by keywords ?
*/
}
// put joomla sitename to page title
$globalConfig = Factory::getConfig();
$title = Text::sprintf('COM_COMMUNITY_PAGE_TITLE', $title, $globalConfig->get('sitename'));
// jomsocial page title must respected 'Site Name in Page Titles' (joomla global configuration)
if (!empty($globalConfig->get('sitename'))) {
$trans = array("(" => "\(", ")" => "\)");
$sitename = strtr(addslashes($globalConfig->get('sitename')), $trans);
preg_match("/\s-\s" . $sitename . "$/i", $title, $titleMatch);
if (isset($titleMatch[0])) {
if ($globalConfig->get('sitename_pagetitles') == 1) {
// set sitename at before
$title = $globalConfig->get('sitename') . ' - ' . str_replace($titleMatch[0], '', $title);
} else if ($globalConfig->get('sitename_pagetitles') == 2) {
// do nothing, sitename at after
} else {
// remore site name from page title
$title = str_replace($titleMatch[0], '', $title);
}
}
}
self::addOpengraph('og:type', $type);
self::addOpengraph('og:url', Uri::getInstance()->toString());
self::addOpengraph('og:title', $title);
/* Generate description if not provided */
if ($description === null) {
/* Use Joomla! global description if menu description is not provided */
if (!isset($menuDescription) || $menuDescription == '') {
$description = Factory::getConfig()->get('MetaDesc', '');
} else {
$description = $menuDescription;
}
}
if (trim($description) != '') {
self::addOpengraph('og:description', trim(strip_tags($description)));
}
if ($images !== null) {
foreach ($images as $image) {
self::addOpengraph('og:image', $image, true);
}
}
switch ($type) {
/**
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/website
*/
case 'website':
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=frontpage'), true);
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=groups'), true);
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=photos'), true);
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=videos'), true);
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=events'), true);
self::addOpengraph('og:site_name', Factory::getConfig()->get('sitename'));
break;
/**
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/profile/
*/
case 'profile':
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=frontpage'), true);
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=groups'), true);
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=photos'), true);
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=videos'), true);
self::addOpengraph('og:see_also', CRoute::getExternalURL('index.php?option=com_community&view=events'), true);
self::addOpengraph('og:site_name', Factory::getConfig()->get('sitename'));
break;
}
$document = Factory::getDocument();
$document->setTitle(html_entity_decode($title));
if($description)
$document->setDescription(html_entity_decode($description));
}
}
}