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; } } } }