Exemple #1
0
Fichier : f.php Projet : rigidus/ea
 function parsing($tpl)
 {
     /*
     	Inputs
     */
     preg_match_all(self::$regex_input, $tpl, $out);
     if ($out) {
         foreach ($out[1] as $k => $v) {
             $attr = arrays::attr2array($v);
             if (!isset($attr['name'])) {
                 continue;
             }
             $attr['type'] = self::getType($attr);
             if ($attr['type'] == 'button' || $attr['type'] == 'image' || $attr['type'] == 'file') {
                 continue;
             }
             $attr['replace'] = $out[0][$k];
             if (!self::$observe_submits && $attr['type'] == 'submit') {
                 continue;
             } else {
                 if ($attr['type'] == 'submit') {
                     $tt = explode(':', $attr['name']);
                     if ($tt) {
                         if (!isset($tt[2])) {
                             $tt[2] = false;
                         }
                         if (!isset($tt[3])) {
                             $tt[3] = false;
                         }
                         events::observe($tt[0], $tt[1], $tt[2], $tt[3]);
                         $attr['name'] = $tt[0];
                         self::$elements[$attr['name']] = $attr;
                         self::$elements[$attr['name']]['gtype'] = 'submit';
                     }
                     continue;
                 }
             }
             $attr['index'] = false;
             if ($attr['type'] == 'radio') {
                 $attr = self::getValueRadio($attr);
                 self::$elements[$attr['name']][$attr['value']] = $attr;
                 self::$elements[$attr['name']]['gtype'] = $attr['type'];
             } else {
                 if (strstr($attr['name'], '[')) {
                     $match = self::formalizeName($attr['name']);
                     $attr['name'] = $match[1];
                     $attr['index'] = $match[2];
                     if ($attr['type'] == 'checkbox') {
                         $attr = self::getValueCheckBox($attr);
                     } else {
                         $attr = self::getValueField($attr);
                     }
                     self::$elements[$attr['name']][$attr['index']] = $attr;
                     self::$elements[$attr['name']]['gtype'] = $attr['type'];
                 } else {
                     if ($attr['type'] == 'checkbox') {
                         $attr = self::getValueCheckBox($attr);
                     } else {
                         $attr = self::getValueField($attr);
                     }
                     self::$elements[$attr['name']] = $attr;
                     self::$elements[$attr['name']]['gtype'] = $attr['type'];
                 }
             }
         }
     }
     /*
     	Textareas
     */
     $out = array();
     preg_match_all(self::$regex_textarea, parent::$code, $out);
     if ($out) {
         foreach ($out[1] as $k => $v) {
             $attr = arrays::attr2array($v);
             if (!isset($attr['name'])) {
                 continue;
             }
             $attr['index'] = false;
             $attr['type'] = 'textarea';
             $attr['replace'] = $out[0][$k];
             $attr['value'] = $out[2][$k];
             if (strstr($attr['name'], '[')) {
                 $match = self::formalizeName($attr['name']);
                 $attr['name'] = $match[1];
                 $attr['index'] = $match[2];
                 $attr = self::getValueField($attr);
                 self::$elements[$attr['name']][$attr['index']] = $attr;
                 self::$elements[$attr['name']]['gtype'] = $attr['type'];
             } else {
                 $attr = self::getValueField($attr);
                 self::$elements[$attr['name']] = $attr;
                 self::$elements[$attr['name']]['gtype'] = $attr['type'];
             }
         }
     }
     /*
     	Selects
     */
     $out = array();
     preg_match_all(self::$regex_select, parent::$code, $out);
     if ($out) {
         foreach ($out[1] as $k => $v) {
             $attr = arrays::attr2array($v);
             if (!isset($attr['name'])) {
                 continue;
             }
             $attr['index'] = false;
             $attr['type'] = 'select';
             $attr['replace'] = $out[0][$k];
             $attr['options'] = self::getSelectOption($out[2][$k]);
             if (strstr($attr['name'], '[')) {
                 $match = self::formalizeName($attr['name']);
                 $attr['name'] = $match[1];
                 $attr['index'] = $match[2];
                 if (isset($attr['multiple'])) {
                     $attr['index'] = false;
                     self::$elements[$attr['name']] = $attr;
                     self::$elements[$attr['name']]['gtype'] = $attr['type'];
                     self::$elements[$attr['name']]['selected'] = self::getValueSelect($attr);
                     self::$elements[$attr['name']]['multi'] = false;
                 } else {
                     self::$elements[$attr['name']]['selected'] = self::getValueSelect($attr);
                     self::$elements[$attr['name']][$attr['index']] = $attr;
                     self::$elements[$attr['name']]['gtype'] = $attr['type'];
                     self::$elements[$attr['name']]['multi'] = true;
                 }
             } else {
                 $attr['selected'] = self::getValueSelect($attr);
                 self::$elements[$attr['name']] = $attr;
                 self::$elements[$attr['name']]['gtype'] = $attr['type'];
                 self::$elements[$attr['name']]['multi'] = false;
             }
         }
     }
 }