<?php

/**
 * @copyright     Copyright (c) 2009-2021 Ryan Demmer. All rights reserved
 * @license       GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * JCE is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses
 */
defined('JPATH_PLATFORM') or die;

abstract class WfBrowserHelper
{
    public static function getBrowserLink($element = null, $mediatype = '', $callback = '')
    {
        $options = self::getMediaFieldOptions(array(
            'element' => $element,
            'mediatype' => $mediatype,
            'callback' => $callback,
        ));

        return $options['url'];
    }

    public static function getMediaFieldLink($element = null, $mediatype = 'images', $callback = '')
    {
        $options = self::getMediaFieldOptions(array(
            'element' => $element,
            'mediatype' => $mediatype,
            'callback' => $callback,
        ));

        return $options['url'];
    }

    private static function getUrl()
    {
        $app = JFactory::getApplication();
        $token = JFactory::getSession()->getFormToken();

        $url = 'index.php?option=com_jce&task=plugin.display&plugin=browser&standalone=1&' . $token . '=1&client=' . $app->getClientId();

        if ($app->isClient('administrator')) {
            return $url;
        }

        return $url;
    }

    public static function getMediaFieldOptions($options = array())
    {
        if (!isset($options['element'])) {
            $options['element'] = null;
        }

        if (!isset($options['mediatype'])) {
            $options['mediatype'] = 'images';
        }

        if (!isset($options['callback'])) {
            $options['callback'] = '';
        }

        if (!isset($options['converted'])) {
            $options['converted'] = false;
        }

        // set $url as empty string
        $data = array(
            'url' => '',
            'upload' => 0,
        );

        // load editor class
        require_once JPATH_SITE . '/components/com_jce/editor/libraries/classes/application.php';

        // get editor instance
        $wf = WFApplication::getInstance();

        // check the current user is in a profile
        if ($wf->getProfile('browser')) {

            // is conversion enabled?
            if ($options['converted'] && (int) $wf->getParam('browser.mediafield_conversion', 1) === 0) {
                return $data;
            }

            $data['url'] = self::getUrl();

            // add default context
            if (!isset($options['context'])) {
                $options['context'] = $wf->getContext();
            }

            foreach ($options as $key => $value) {
                if ($value) {
                    $data['url'] .= '&' . $key . '=' . $value;
                }
            }

            $data['upload'] = (int) $wf->getParam('browser.mediafield_upload', 1);
        }

        return $data;
    }
}
