| Current Path : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/ |
| Current File : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/TTag.php |
<?php
/*
* @package Tech Fry Library
* @license https://www.gnu.org/licenses/gpl-3.0.en.html
*/
namespace TechFry\Library;
use Joomla\CMS\Factory;
use Joomla\CMS\Helper\TagsHelper;
use Joomla\Component\Tags\Site\Helper\RouteHelper;
use Joomla\CMS\Router\Route;
// Script for Joomla Tags
class TTag
{
// find_tag, get_tag, get_tags, update_tag
public $tag_id;
// 01. Find tag for alias
public function find_tag($alias)
{
$conditions = array(
array('alias', '=', $alias),
);
$select = array('id');
$db = new TDb('tags');
$tag = $db->get_item(array('conditions' => $conditions, 'select' => $select));
return $tag->id ? $tag->id : false;
}
// 02. Get tag information
public function get_tag($tag_id)
{
$ex = new TExtension('com_tags');
$tagModel = $ex->get_model('Tag');
$tag = $tagModel->getItem($tag_id);
$tag->image = $tag->images['image_intro'];
$tag->image_intro = $tag->images['image_intro'];
$tag->image_fulltext = $tag->images['image_fulltext'];
$tag->url = $this->get_tag_link($tag->id);
return $tag;
}
// 03. Get tags
public function get_tags($config = array())
{
// $config - parent_tag, published
$conditions = [];
// Exclude ROOT
$conditions[] = array('parent_id', '!=', 0);
// Published
$published = $config['published'] ?? 1;
$conditions[] = array('published', '=', $published);
// Parent Tag
if (isset($config['parent_tag']) && $config['parent_tag'])
{
$conditions[] = array('parent_id', '=', $config['parent_tag']);
}
// Other Conditions
if (isset($config['filter']) && $config['filter'])
{
$filters = (array) $config['filter'];
foreach ($filters as $filter)
{
$conditions[] = array($filter->where_field, $filter->where_operator, $filter->where_value);
}
}
$limit = isset($config['limit']) && $config['limit'] ? $config['limit'] : '';
$order_col = isset($config['order_col']) && $config['order_col']? $config['order_col'] : 'id';
$order_dirn = $config['order_dirn'] ?? 'DESC';
$order = $order_col . ' ' . $order_dirn;
$db = new TDb('tags');
$tags = $db->get_items(array('conditions' => $conditions, 'order' => $order, 'limit' => $limit));
// id, parent_id, title, note, description, images (json), hits
foreach ($tags as $tag)
{
$images = json_decode($tag->images, true);
$tag->image = $images['image_intro'];
$tag->image_intro = $images['image_intro'];
$tag->image_fulltext = $images['image_fulltext'];
$tag->url = $this->get_tag_link($tag->id);
}
return $tags;
}
// 04. Update tag
public function update_tag($data)
{
$app = Factory::getApplication();
if (!$data['id'])
{
$app->enqueueMessage('Tag ID is not set.', 'error');
return false;
}
$mvcFactory = $app->bootComponent('com_tags')->getMVCFactory();
$tagModel = $mvcFactory->createModel('Tag', 'Administrator', array('ignore_request' => true));
if (!$tagModel->save($data))
{
$app->enqueueMessage($tagModel->getError(), 'error');
return false;
}
return true;
}
public function get_tag_link($tag_id)
{
$link = Route::link('site', RouteHelper::getComponentTagRoute($tag_id));
return $link;
}
}