yf_form2_boxes class

Fileplugins/form2/classes/form2/yf_form2_boxes.class.php
Use_class('form2_boxes', 'classes/form2/')

Public properties

A site sets them in its config with $PROJECT_CONF['form2_boxes']['NAME'] = ...;

PropertyDefaultDescription

Public methods 12

city_box

public function city_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function city_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'city';
        }
        $extra['country'] = ($extra['country'] ?? null) ?: 'UA';
        $data = [];
        $row_tpl = ($extra['row_tpl'] ?? null) ?: '%name';
        $region_names = null;
        foreach ((array) main()->get_data('geo_regions', 0, ['country' => $extra['country']]) as $v) {
            $data[$v['name']] = [];
            $region_names[$v['id']] = $v['name'];
        }
        foreach ((array) main()->get_data('geo_cities', 0, ['country' => $extra['country']]) as $v) {
            $region_name = $region_names[$v['region_id']];
            if ( ! $region_name) {
                continue;
            }
            $r = [
                '%name' => $v['name'],
            ];
            $data[$region_name][$v['id']] = str_replace(array_keys($r), array_values($r), $row_tpl);
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = './?object=manage_cities';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'select2_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }

country_box

public function country_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function country_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'country';
        }
        $data = [];
        $row_tpl = ($extra['row_tpl'] ?? null) ?: '%icon %name %code';
        $countries = ($extra['countries'] ?? null) ?: main()->get_data('geo_countries');
        foreach ((array) $countries as $v) {
            $r = [
                '%icon' => '<i class="bfh-flag-' . strtoupper($v['code']) . '"></i>',
                '%name' => $v['name'],
                '%code' => '[' . strtoupper($v['code']) . ']',
            ];
            $data[$v['code']] = str_replace(array_keys($r), array_values($r), $row_tpl);
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = './?object=manage_countries';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }

currency_box

public function currency_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function currency_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'currency';
        }
        $data = [];
        $row_tpl = ($extra['row_tpl'] ?? null) ?: '%sign   %name %code';
        foreach ((array) main()->get_data('currencies') as $v) {
            $r = [
                '%sign' => $v['sign'],
                '%name' => $v['name'],
                '%code' => '[' . $v['id'] . ']',
            ];
            $data[$v['id']] = str_replace(array_keys($r), array_values($r), $row_tpl);
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = './?object=manage_currencies';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }
public function icon_select_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function icon_select_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'icon';
        }
        $data = [];
        $row_tpl = ($extra['row_tpl'] ?? null) ?: '%icon %name';
        foreach ((array) main()->get_data('fontawesome_icons') as $icon) {
            $r = [
                '%icon' => '<i class="icon fa ' . $icon . '"></i> ',
                '%name' => $icon,
            ];
            $data[$icon] = str_replace(array_keys($r), array_values($r), $row_tpl);
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = './?object=manage_icons';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }

language_box

public function language_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function language_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'language';
        }
        $data = [];
        $row_tpl = ($extra['row_tpl'] ?? null) ?: '%icon %name %code';
        foreach ((array) main()->get_data('languages_new') as $v) {
            $r = [
                '%icon' => ($v['country'] ? '<i class="bfh-flag-' . strtoupper($v['country']) . '"></i> ' : ''),
                '%name' => $v['native'],
                '%code' => '[' . $v['code'] . ']',
            ];
            $data[$v['code']] = str_replace(array_keys($r), array_values($r), $row_tpl);
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = './?object=manage_languages';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }

locale_box

public function locale_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function locale_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'locale';
        }
        $data = [];
        $row_tpl = ($extra['row_tpl'] ?? null) ?: '%icon %name %code';

        asset('bfh-select');
        $extra['style'] = ($extra['style'] ?? null) ?: 'max-width:200px;';

        $lang_def_country = main()->get_data('lang_def_country');
        foreach ((array) db()->from('sys_locale_langs')->get_all() as $v) {
            if ($extra['only_active'] && ! $v['active']) {
                continue;
            }
            $lang = strtolower($v['locale']);
            $country = strtoupper($lang_def_country[$lang]);
            $r = [
                '%icon' => ($country ? '<i class="bfh-flag-' . $country . '"></i> ' : ''),
                '%name' => $v['name'],
                '%code' => '[' . $lang . ']',
            ];
            $data[$lang] = str_replace(array_keys($r), array_values($r), $row_tpl);
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = url('/locale_editor');
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }
public function location_select_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function location_select_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'location';
        }
        // TODO
        return $form->text($name, [], $extra, $replace);
    }
public function method_select_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function method_select_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'method';
        }
        $data = [];
        if ($extra['for_type'] == 'admin') {
            $data = _class('admin_modules', 'admin_modules/')->_get_methods_for_select();
        } else {
            $data = _class('user_modules', 'admin_modules/')->_get_methods_for_select();
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = $extra['for_type'] == 'admin' ? './?object=admin_modules' : './?object=user_modules';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }

region_box

public function region_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function region_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'region';
        }
        $extra['country'] = ($extra['country'] ?? null) ?: 'UA';
        $data = [];
        $row_tpl = ($extra['row_tpl'] ?? null) ?: '%name';
        $regions = ($extra['regions'] ?? null) ?: main()->get_data('geo_regions', 0, ['country' => $extra['country']]);
        foreach ((array) $regions as $v) {
            $r = [
                '%name' => $v['name'],
            ];
            $data[$v['code']] = str_replace(array_keys($r), array_values($r), $row_tpl);
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = './?object=manage_regions';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }
public function template_select_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function template_select_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'template';
        }
        $data = [];
        if ($extra['for_type'] == 'admin') {
            $data = _class('template_editor', 'admin_modules/')->_get_stpls_for_type('admin');
        } else {
            $data = _class('template_editor', 'admin_modules/')->_get_stpls_for_type('user');
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = $extra['for_type'] == 'admin' ? './?object=template_editor' : './?object=template_editor';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }

timezone_box

public function timezone_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    public function timezone_box($name = '', $desc = '', $extra = [], $replace = [], $form = null)
    {
        if (is_array($name)) {
            $extra = (array) $extra + $name;
            $name = '';
        }
        if (is_array($desc)) {
            $extra = (array) $extra + $desc;
            $desc = '';
        }
        if ( ! $name) {
            $name = 'timezone';
        }
        $data = [];
        $row_tpl = ($extra['row_tpl'] ?? null) ?: '<small>%offset %name</small>';
        $timezones = (array) main()->get_data('timezones');
        if ($this->TIMEZONES_POPULAR_ONLY) {
            $selected = $extra['selected'] ?? $replace[$name] ?? (is_object($form) ? ($form->_replace[$name] ?? $form->_params['selected'][$name] ?? null) : null);
            $timezones = $this->_popular_timezones($timezones, $selected);
        }
        foreach ($timezones as $v) {
            $r = [
                '%offset' => $v['offset'],
                '%name' => $v['name'],
            ];
            $data[$v['name']] = str_replace(array_keys($r), array_values($r), $row_tpl);
        }
        if (MAIN_TYPE_ADMIN && ! isset($extra['edit_link'])) {
            $extra['edit_link'] = './?object=manage_timezones';
        }
        $renderer = ($extra['renderer'] ?? null) ?: 'list_box';
        return $form->$renderer($name, $data, $extra, $replace);
    }

Methods starting with _ hooks and helpers; not routable as page actions