Your IP : 216.73.216.240


Current Path : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/
Upload File :
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;
    }
}