File Manager

Current Path : /webspace/www.saveursetterroir.be/html/modules/ECB/lib/
Upload File :
Current File : //webspace/www.saveursetterroir.be/html/modules/ECB/lib/class.ecb_tools.php

<?php

/**
 * Tools for Extended Content Blocks CMS Made Simple module 
 *
 * @author @kuzmany
 */
class ecb_tools {

    private $block_name = '';
    private $value = '';
    private $adding = false;
    private $options = array();
    private $alias = '';
    private $field = '';
    private $txt = '';
    private $is_color_picker_lib_load = false;
    private $is_datepicker_lib_load = false;

    /**
     *
     * @param stribng $blockName
     * @param string $value
     * @param array $params
     * @param boolean $adding 
     */
    public function __construct($blockName, $value, $params, $adding) {

        $this->block_name = $blockName;
        $this->alias = munge_string_to_url($blockName, true);
        $this->value = $value;
        $this->adding = $adding;

        $this->get_extra_options($params);

        if ($adding == true && isSet($this->options["default_value"]) && empty($value) == true)
            $this->value = $params["default_value"];
    }

    /**
     *  get content block
     * @return string 
     */
    public function get_content_block_input() {
        $function = 'get_' . $this->field;
        return $this->$function();
    }

    /**
     *
     * @return string 
     */
    private function get_textarea() {
        $tmp = '<textarea name="%s" rows="%d" cols="%d">%s</textarea>';
        return sprintf($tmp, $this->block_name, $this->options["rows"], $this->options["cols"], $this->value);
    }

    /**
     *
     * @return string 
     */
    private function get_pages() {
        $contentops = cmsms()->GetContentOperations();
        return $contentops->CreateHierarchyDropdown('', $this->value, $this->block_name, 1, 1);
    }

    /**
     *
     * @return string 
     */
    private function get_editor() {
        $mod = cms_utils::get_module('ECB');
        return $mod->CreateTextArea(true, '', $this->value, $this->block_name, '', '', '', '', $this->options["cols"], $this->options["rows"]);
    }

    /**
     *
     * @return string 
     */
    private function get_input() {
        $tmp = '<input type="text" name="%s" size="%d" maxlength="%d" value="%s"/>';
        return sprintf($tmp, $this->block_name, $this->options["size"], $this->options["max_length"], $this->value);
    }

    /**
     *
     * @return string 
     */
    private function get_timepicker() {
        $tmp = $this->get_datepicker_lib();
        $tmp .= '<input type="text" class="timepicker"  name="%s" size="%d" maxlength="%d" value="%s"/>';
        return sprintf($tmp, $this->block_name, $this->options["size"], $this->options["max_length"], $this->value);
    }

    /**
     *
     * @return string 
     */
    private function get_datepicker() {
        $tmp = $this->get_datepicker_lib();
        $tmp .= '<input type="text" class="datepicker"  name="%s" size="%d" maxlength="%d" value="%s"/>';
        return sprintf($tmp, $this->block_name, $this->options["size"], $this->options["max_length"], $this->value);
    }

    private function get_datepicker_lib() {
        if ($this->is_datepicker_lib_load)
            return;
        $mod = cms_utils::get_module('ECB');
        $config = cmsms()->GetConfig();
        $tmp = "
        <script language=\"javascript\" field=\"text/javascript\" src=\"" . $config["root_url"] . "/modules/" . $mod->GetName() . "/lib/js/jquery-ui-timepicker-addon.js\"></script>
        <script type=\"text/javascript\">
		$(function() {
			$('.datepicker')." . (isset($this->options["time"]) && $this->options["time"] ? 'datetimepicker' : 'datepicker' ) . " ({
				" . (isset($this->options["date_format"]) && $this->options["date_format"] ? "dateFormat: '" . $this->options["date_format"] . "'" : "") . ",				
                                " . (isset($this->options["time_format"]) && $this->options["time_format"] ? "timeFormat: '" . $this->options["time_format"] . "'" : "") . ",				
				showOtherMonths: true,
				selectOtherMonths: true
			});
			$('.timepicker').timepicker ({
				timeFormat: '" . $this->options["time_format"] . "'				
			});

		});
</script>";
        $this->is_datepicker_lib_load = true;
        return $tmp;
    }

    /**
     *
     * @return string 
     */
    private function get_color_picker() {

        $txt = '';
        $first = cms_utils::get_app_data(__FUNCTION__);
        $config = cmsms()->GetConfig();
        $mod = cms_utils::get_module('ECB');
        if (!$first) {
            $txt.= '<script language="javascript" field="text/javascript" src="' . $config["root_url"] . '/modules/' . $mod->GetName() . '/lib/js/mColorPicker.min.js"></script>';
            $txt.= '<script>
$.fn.mColorPicker.defaults.imageFolder = " ' . $config["root_url"] . '/modules/' . $mod->GetName() . '/lib/js/images/";
</script>';
        }

        $tmp = '<input  type="color" data-hex="true" name="%s" id="%s" size="' . $this->options["size"] . '" value="%s"/>';
        $txt .= sprintf($tmp, $this->block_name, $this->alias, $this->value);

        cms_utils::set_app_data(__FUNCTION__, 1);

        return $txt;
    }

    /**
     *
     * @return string 
     */
    private function get_checkbox() {

        $mod = cms_utils::get_module('ECB');
        return $mod->CreateInputHidden('', $this->block_name, 0) . $mod->CreateInputCheckbox('', $this->block_name, 1, $this->value);
    }

    /**
     *
     * @return string 
     */
    private function get_file_selector() {

        $mod = cms_utils::get_module('ECB');
        $config = cmsms()->GetConfig();
        // 1.  Get the directory contents
        $adddir = get_site_preference('contentimage_path');
        if ($this->options['dir'])
            $adddir = $this->options['dir'];


        $dir = cms_join_path($config['uploads_path'], $adddir);
        $filetypes = $this->options['filetypes'];
        if ($filetypes != '') {
            $filetypes = explode(',', $filetypes);
            for ($i = 0; $i < count($filetypes); $i++) {
                $filetypes[$i] = '*.' . $filetypes[$i];
            }
        }
        $excludes = $this->options['excludeprefix'];
        if ($excludes != '') {
            $excludes = explode(',', $excludes);
            for ($i = 0; $i < count($excludes); $i++) {
                $excludes[$i] = $excludes[$i] . '*';
            }
        }
        $fl = cge_dir::recursive_glob($dir, $filetypes, 'FILES', $excludes, $this->options['recurse']);

        // 2.  Remove prefix
        for ($i = 0; $i < count($fl); $i++) {
            $fl[$i] = str_replace($dir, '', $fl[$i]);
        }

        // 2.  Sort
        if (is_array($fl) && $this->options['sortfiles']) {
            sort($fl);
        }

        $opts = array();
        $url_prefix = $adddir;
        for ($i = 0; $i < count($fl); $i++) {
            $opts[$fl[$i]] = $url_prefix . $fl[$i];
        }
        $opts = array('' => '') + $opts;

        $default_content_id = ContentOperations::get_instance()->GetDefaultContent();
        $parms = array();
        $parms = $this->options;
        $parms['field'] = 'file_selector';
        $parms['block_name'] = $this->block_name;
        $parms['value'] = $this->value;
        $parms['adding'] = $this->adding;
        $parms['showtemplate'] = 'false';
        $refresh_url = $mod->Createlink('cntnt01', 'refresh', $default_content_id, '', $parms, '', true);
        $refresh = '<a href="' . $refresh_url . '&showtemplate=false" class="file_selector_refresh">
<img src="../modules/' . $mod->GetName() . '/icons/ajax-refresh-icon.gif" alt="' . $mod->Lang('refresh') . '">            
</a>';

        $script = '';
        if (!cms_utils::get_app_data(__FUNCTION__)) {
            $script = "
                <script>
$(document).ready(function(){
$('.file_selector_refresh').live('click', function(){
 var url = $(this).attr('href');
 $(this).prev().css('opacity',0.3);
 $(this).parent().parent().load(url, '', function(html){            
});
return false;
})

$('.file_selector_select select').change(function(){
var imgtag = $(this).parent().next();
imgtag.attr('src', imgtag.data('uploadsurl')+'/'+$(this).val());
})
})              
</script>
";

            cms_utils::set_app_data(__FUNCTION__, 1);
        }

        $preview = '';
        if ($this->options['preview']) {
            if ($this->value)
                $preview = '<img style"max-width:200px;" class="file_selector_preview" data-uploadsurl="' . $config["uploads_url"] . '"   src="' . $config["uploads_url"] . '/' . $this->value . '" alt="">';
            else
                $preview = '<img style"max-width:200px;" class="file_selector_preview" alt="" data-uploadsurl="' . $config["uploads_url"] . '">';
        }




        return '<div class="file_selector_select">' . $mod->CreateInputDropdown('', $this->block_name, $opts, -1, $this->value) . $refresh . $script . '</div>' . $preview;
    }

    /**
     *
     * @return string 
     */
    private function get_sortablelist() {
        $mod = cms_utils::get_module('ECB');
        $options = array();
        $tmp = array();

        if ($this->options["udt"])
            $options = UserTagOperations::get_instance()->CallUserTag($this->options["udt"], $tmp);
        $optionsarray = explode(',', $this->options["values"]);
        if (empty($optionsarray))
            return;

        foreach ($optionsarray as $option) {
            $key_val = explode('=', $option);
            $options[$key_val[0]] = $key_val[1];
        }
        if (empty($this->options['first_value']) == false)
            $options = array($this->options['first_value'] => '') + $options;
        return $mod->CreateSortableListArea('', $this->block_name, $options, $this->value, $this->options["allowduplicates"], $this->options["max_selected"], $this->options["template"], $this->options["label_left"], $this->options["label_right"]);
    }

    /**
     *
     * @return string 
     */
    private function get_text() {

        if (!$this->options["text"])
            return;
        return $this->options["text"];
    }

    /**
     *
     * @return string 
     */
    private function get_hr() {
        return '<hr style="display:block; border:0 none; background:#ccc;" />';
    }

    /**
     *
     * @return string 
     */
    private function get_link() {

        if (!$this->options["link"] || !$this->options["text"])
            return;

        $mod = cms_utils::get_module('ECB');
        return '<a target="' . $this->options["target"] . '" href="' . $this->options["link"] . '">' . $this->options["text"] . '</a>';
    }

    /**
     *
     * @return string 
     */
    private function get_module_link() {

        $mod = '';
        if ($this->options["mod"])
            $mod = cms_utils::get_module($this->options["mod"]);

        $userid = get_userid();
        $userops = cmsms()->GetUserOperations();
        $adminuser = $userops->UserInGroup($userid, 1);

        $tmp = '<input id="mt_' . $this->block_name . '" ' . ( $adminuser ? 'type="text"' : 'type="hidden"') . ' name="' . $this->block_name . '" value="' . ($this->value ? $this->value : $this->options["default_value"]) . '"  size="%d" maxlength="%d" />';
        $tmp = sprintf($tmp, $this->options["size"], $this->options["max_length"]);

        return (is_object($mod) ? $mod->CreateLink('', 'defaultadmin', '', $this->options["text"], array(), '', false, 0, 'target="' . $this->options["target"] . '"') : $this->options["text"])
                .
                '<br />' . $tmp;
    }

    /**
     * DEPRECATED
     * @return string 
     */
    private function get_dropdown_from_module() {
        if (!$this->options["mod"])
            return;

        $mod = cms_utils::get_module('ECB');
        $data = $mod->ProcessTemplateFromData('{' . $this->options["mod"] . '}');

        $options = array();
        $optionsarray = explode(',', $data);
        if (empty($optionsarray))
            return;

        foreach ($optionsarray as $option) {
            $key_val = explode('=', $option);
            $options[$key_val[0]] = $key_val[1];
        }
        if (empty($this->options['default_value']) == false)
            $options = array($this->options['default_value'] => '') + $options;

        return $mod->CreateInputDropdown('', $this->block_name, $options, -1, $this->value);
    }

    /**
     *
     * @return string 
     */
    private function get_dropdown() {
        if (!$this->options["values"])
            return;
        $mod = cms_utils::get_module('ECB');
        $smarty = cmsms()->GetSmarty();

        $options = array();

        $optionsarray = explode(',', $this->options["values"]);
        if (empty($optionsarray))
            return;

        foreach ($optionsarray as $option) {
            $key_val = explode('=', $option);
            $options[$key_val[0]] = $key_val[1];
        }
        if (empty($this->options['first_value']) == false)
            $options = array($this->options['first_value'] => '') + $options;

        if ($this->options['multiple']) {
            $selecteditems = explode(',', $this->value);
            $script = '';
            if (!cms_utils::get_app_data(__FUNCTION__)) {
                $script = "
                <script>
$(document).ready(function(){
$('.ecb_mutliple_select select').change(function(){
$(this).prev().val(($(this).val().join(','))); 
})              
})              
</script>
";
                cms_utils::set_app_data(__FUNCTION__, 1);
            }

            return $script . '<div class="ecb_mutliple_select">' . $mod->CreateInputHidden('', $this->block_name, $this->value) . $mod->CreateInputSelectList('', $this->block_name . '_tmp', $options, $selecteditems, $this->options["size"]) . '</div>';
        } else {

            return $mod->CreateInputDropdown('', $this->block_name, $options, -1, $this->value);
        }
    }

    /**
     *
     * @return string 
     */
    private function get_dropdown_from_udt() {
        if (!$this->options["udt"])
            return;
        $mod = cms_utils::get_module('ECB');
        $smarty = cmsms()->GetSmarty();

        $tmp = array();
        $options = UserTagOperations::get_instance()->CallUserTag($this->options["udt"], $tmp);

        if (empty($this->options['first_value']) == false)
            $options = array($this->options['first_value'] => '') + $options;

        if ($this->options['multiple']) {
            $selecteditems = explode(',', $this->value);
            $script = '';
            if (!cms_utils::get_app_data(__FUNCTION__)) {
                $script = "
                <script>
$(document).ready(function(){
$('.ecb_mutliple_select_udt select').change(function(){
$(this).prev().val(($(this).val().join(','))); 
})              
})              
</script>
";
                cms_utils::set_app_data(__FUNCTION__, 1);
            }

            return $script . '<div class="ecb_mutliple_select_udt">' . $mod->CreateInputHidden('', $this->block_name, $this->value) . $mod->CreateInputSelectList('', $this->block_name . '_tmp', $options, $selecteditems, $this->options["size"]) . '</div>';
        } else {

            return $mod->CreateInputDropdown('', $this->block_name, $options, -1, $this->value);
        }
    }

    /**
     *
     * @return string 
     */
    private function get_dropdown_from_gbc() {
        if (!$this->options["gbc"])
            return;
        $mod = cms_utils::get_module('ECB');
        $smarty = cmsms()->GetSmarty();

        $tmp = array();
        $options = array();
        $optionsgbc = $smarty->fetch('globalcontent:' . $this->options["gbc"]);

        $optionsarray = explode(',', $optionsgbc);
        if (empty($optionsarray))
            return;

        foreach ($optionsarray as $option) {
            $key_val = explode('=', $option);
            $options[$key_val[0]] = $key_val[1];
        }

        if (empty($this->options['first_value']) == false)
            $options = array($this->options['first_value'] => '') + $options;

        if ($this->options['multiple']) {
            $selecteditems = explode(',', $this->value);
            $script = '';
            if (!cms_utils::get_app_data(__FUNCTION__)) {
                $script = "
                <script>
$(document).ready(function(){
$('.ecb_mutliple_select_udt select').change(function(){
$(this).prev().val(($(this).val().join(','))); 
})              
})              
</script>
";
                cms_utils::set_app_data(__FUNCTION__, 1);
            }

            return $script . '<div class="ecb_mutliple_select_udt">' . $mod->CreateInputHidden('', $this->block_name, $this->value) . $mod->CreateInputSelectList('', $this->block_name . '_tmp', $options, $selecteditems, $this->options["size"]) . '</div>';
        } else {

            return $mod->CreateInputDropdown('', $this->block_name, $options, -1, $this->value);
        }
    }

    /**
     *
     * @return string 
     */
    private function get_module() {

        $modops = cmsms()->GetModuleOperations();
        $modules = $modops->GetInstalledModules();
        $modulesarray = array();
        foreach ($modules as $module) {
            $mod = cms_utils::get_module($module);
            if (is_object($mod))
                $modulesarray[$mod->GetName()] = $module;
        }

        $mod = cms_utils::get_module('ECB');
        return $mod->CreateInputDropdown('', $this->block_name, $modulesarray, -1, $this->value);
    }

    private function get_extra_options(array $params) {

        if (!isSet($params["field"]))
            return;

        $options = array();
        $default_options = array();
        switch (strtolower($params["field"])) {
            case "color_picker":
                $default_options["size"] = 10;
                $default_options["default_value"] = '';
                break;
            case "module_link":
                $default_options["mod"] = '';
                $default_options["text"] = '';
                $default_options["target"] = '_self';
                $default_options["default_value"] = '';
                $default_options["size"] = 30;
                $default_options["max_length"] = 255;
                break;
            case "link":
                $default_options["text"] = '';
                $default_options["target"] = '_self';
                $default_options["link"] = '';
                break;
            case "module":
                $default_options["default_value"] = '';
                $default_options["text"] = '';
                $default_options["link"] = '';
                break;
            case "dropdown_from_module":
                $default_options["mod"] = '';
                $default_options["default_value"] = '';
                $default_options["first_value"] = '';
                break;
            case "file_selector":
                $default_options["filetypes"] = '';
                $default_options["excludeprefix"] = '';
                $default_options["recurse"] = '';
                $default_options["sortfiles"] = '';
                $default_options["dir"] = '';
                $default_options["preview"] = '';
            case "dropdown":
                $default_options["size"] = 5;
                $default_options["multiple"] = '';
                $default_options["values"] = '';
                $default_options["default_value"] = '';
                $default_options["first_value"] = '';
            case "dropdown_from_udt":
                $default_options["size"] = 5;
                $default_options["multiple"] = '';
                $default_options["values"] = '';
                $default_options["default_value"] = '';
                $default_options["first_value"] = '';
                $default_options["udt"] = '';
            case "dropdown_from_gbc":
                $default_options["size"] = 5;
                $default_options["multiple"] = '';
                $default_options["values"] = '';
                $default_options["default_value"] = '';
                $default_options["first_value"] = '';
                $default_options["gbc"] = '';
            case "textarea":
                $default_options["default_value"] = '';
                $default_options["rows"] = 20;
                $default_options["cols"] = 80;
            case "editor":
                $default_options["default_value"] = '';
                $default_options["rows"] = 20;
                $default_options["cols"] = 80;
                break;
            case "input":
                $default_options["default_value"] = '';
                $default_options["size"] = 30;
                $default_options["max_length"] = 255;
                break;
            case "sortablelist":
                $default_options["values"] = '';
                $default_options["first_value"] = '';
                $default_options["allowduplicates"] = false;
                $default_options["max_selected"] = -1;
                $default_options["template"] = '';
                $default_options["label_left"] = '';
                $default_options["label_right"] = '';
                $default_options["udt"] = '';
            case "text":
                $default_options["text"] = '';
                $default_options["execute"] = '';
                break;
            case "pages":
                $default_options["default_value"] = '';
                break;
            case "checkbox":
                $default_options["default_value"] = '';
                break;

            case "hr":
            case "image_picker":
            case 'timepicker':
                $default_options["size"] = 10;
                $default_options["max_length"] = 10;
                $default_options["time_format"] = 'HH:mm';
                break;
            case 'datepicker':
                $default_options["size"] = 20;
                $default_options["max_length"] = 20;
                $default_options["date_format"] = 'yy-mm-dd';
                $default_options["time_format"] = 'HH:mm';
                $default_options["time"] = '';
                break;
        }

        $this->field = $params["field"];

        if (empty($params) == false) {
            foreach ($params as $key => $param) {
                if (isSet($default_options[$key]) && empty($param) == false)
                    $default_options[$key] = $param;
            }
        }


        $this->options = $default_options;
    }

}

?>

File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com