Current File : /home/users/barii/public_html/finansenl.com.pl/wodki/application/classes/ac/formadmin.php
<?php defined('SYSPATH') or die('No direct script access.');

/**
 * Helpery do formularzy w Panelu administracyjnym
 *
 * @var $name string nazwa pola formularza
 * @var $data array tablica wartości (string) kontrolek formularza
 * @var $prefix string prefiks do id kontrolki formularza, np. dp grupowania
 * @var $errors array tablica błedów (string) kontrolki formularza
 * @var $val string zawartośc kontrolki
 *
 * Użycie opisane na przykładzie textField.
 * Nazwy, klucze i identyfikatory składane są z prefixy i nazwy.
 * Prefix zawsze pierwszy np. logawanie_haslo.
 * Prefix może służyć do grupowania kontrolek.
 */
class ac_formadmin {

    /**
     * Zwraca element tekstowy formularza
     * @param string $name nazwa formularza
     * @param string $fieldName nazwa pola formularza
     * @param string $helpText dodatkowy tekt pomocniczy
     * @param array $data tablica wartości (string) kontrolek formularza
     * @param string $prefix prefiks do id kontrolki formularza, np. do grupowania
     * @param array $errors tablica błedów (string) kontrolki formularza
     * @param bool $required true pole wymagane
     * @return string kod html kontroli z komunikatami
     */

    public static function textField($name,$fieldName,$helpText,$data,$prefix,$errors,$required=false)
    {
        //echo $prefix."_".$fieldName."<br />";
        //var_dump($data);
        // odczyt wartości zadanego pola

        $val = ac_formadmin::get_value(self::get_name($fieldName, $prefix), $data);
        
        // generowanie elementy formularza
        $formElement= Form::input(
                    self::get_name($fieldName, $prefix),
                    $val,
                    array('id'=> self::get_id($fieldName, $prefix))
                );
                
        // pobranie elementu formularza wraz z komunikatami
        return ac_formadmin::field($name,$fieldName,$data,$helpText,$prefix,$errors,$formElement,$required);
    }

    /**
     * Zwraca element hasła formularza
     * @param string $name
     * @param array $data
     * @param string $prefix
     * @param array $errors
     * @return string kod html
     */
    public static function passwordField($name,$data,$prefix,$errors)
    {
        $val = ac_formadmin::get_value(self::get_name($fieldName, $prefix), $data);

        $formElement= Form::password(self::get_name($name, $prefix),
                $val,array('id'=>self::get_id($name, $prefix)));

        return ac_formadmin::field($name,$data,$prefix,$errors,$formElement);
    }

    public static function fileField($name,$data,$prefix,$errors)
    {
        $formElement= Form::file(
                self::get_name($name, $prefix),
                array('id'=>self::get_id($name, $prefix)));

        return ac_formadmin::field($name,$data,$prefix,$errors,$formElement);
    }

    public static function selectField($name,$fieldName,$helpText,$data,$prefix,$errors,$required=false, $options = array(),$multiple=false)
    {
        $attributes=array();
        //var_dump($options);
        $val = ac_formadmin::get_value(self::get_name($fieldName, $prefix), $data);
        //var_dump($val);
        if($multiple == true)
        $attributes['multiple'] = 'multiple';

        $attributes['id'] = self::get_id($fieldName, $prefix);
        $formElement= Form::select(
                self::get_name($fieldName, $prefix),
                $options,
                $val,
                $attributes);

        return ac_formadmin::field($name,$fieldName,$data,$helpText,$prefix,$errors,$formElement,$required);
    }
    public static function checkboxField($name,$fieldName,$helpText,$data,$prefix,$errors,$required=false, $options = array())
    {
        //var_dump($options);
        $val = ac_formadmin::get_value(self::get_name($fieldName, $prefix), $data);

        $formElement= Form::checkbox(
                self::get_name($fieldName, $prefix),
                $options,
                $val,
                array('id'=>self::get_id($fieldName, $prefix)));

        return ac_formadmin::field($name,$fieldName,$data,$helpText,$prefix,$errors,$formElement,$required);
    }

    public static function textareaField($name,$fieldName,$helpText,$data,$prefix,$errors,$required=false)
    {
        // odczyt wartości zadanego pola
        $val = ac_formadmin::get_value(self::get_name($fieldName, $prefix), $data);

        // generowanie elementy formularza
        $formElement= Form::textarea(
                    self::get_name($fieldName, $prefix),
                    $val,
                    array('id'=> self::get_id($fieldName, $prefix))
                );

        // pobranie elementu formularza wraz z komunikatami
        return ac_formadmin::field($name,$fieldName,$data,$helpText,$prefix,$errors,$formElement,$required);
    }


    /**
     * Drukuje element formularza wraz z komunikatami
     * @param string $name
     * @param string $fieldName
     * @param array $data
     * @param string $helpText
     * @param string $prefix
     * @param array $errors
     * @param string $form_element kod html elementu formularza
     * @param bool $required
     */
    private static function field($name,$fieldName,$data,$helpText,$prefix,$errors,$form_element,$required)
    {
        // Klasa CSS dla błednie wypełnionego pola, domyślnie puste
        $css_error_class = '';
        $required_html = '';
        $helptext_html = '';
        if (isset($errors[self::get_name($fieldName, $prefix)])) $css_error_class = "error";


        if($required == true) $required_html = "<span class=\"required\">*</span>";
        if($helpText !='') $helptext_html = "<br><span class=\"help\">$helpText</span>";
        
        // Etykieta kontrolki
        $label_html = '<td for="'. self::get_name($fieldName, $prefix). '">'.
                        $required_html.
                        __t($name).
                        $helptext_html.
                     '</td>';

        // Komunikat błedu jeśli jest
        $error_html = '';
        if (isset($errors[self::get_name($fieldName, $prefix)])) {
            $error_html = '<span>'.
                             __t($errors[self::get_name($fieldName, $prefix)]).
                          '</span>';
        }

        $html = '<tr class="field '. $css_error_class. '">'.
                    $label_html.
                    "<td>".$form_element.
                    $error_html."</td>".
                '</tr>';

        return $html;
     }

     public static function get_array_USUN($key, $dataArray) {

        if (key_exists($key, $dataArray)) {
            return $dataArray[$key];
        }
        return false;
    }

    /**
    * Zwraca wartość wiersza tablicy pod wskazanym kluczem
    * @param string $key klucz
    * @param array $dataArray tablica
    * @return string|false
    */
    private static function get_value($key, $dataArray)
    {
        $key = str_replace("[]", '', $key);

//        echo "<pre>";
//        print_r($key);
//
//        print_r($dataArray);
//        echo "/<pre>";

        if (key_exists($key, $dataArray)) {
            return $dataArray[$key];
        }
        return false;
    }

    /**
     * Zwraca nazwę kontrolki formularza
     * @param string $name
     * @param string $prefix
     * @return string ($prefix_$name)
     */
    public static function get_name($name, $prefix)
    {
        return $prefix.'_'.$name;
    }

    /**
     * Zwraca id kontrolki formularza
     * @param string $name
     * @param string $prefix
     * @return string (id_$prefix_$name)
     */
    private static function get_id($name, $prefix)
    {
        return 'id_'.self::get_name($name, $prefix);
    }

    public static function clear_form_data($form_data)
    {
        $data = array();
        foreach($form_data as $key => $value) {
                $data[$key] = htmlspecialchars(trim($value));
            }
        return $data;
    }
}