????
Current Path : /usr/local/lsws/admin/html/classes/ |
Current File : //usr/local/lsws/admin/html/classes/DAttrBase.php |
<?php class DAttrBase { public $_htmlName; public $_key; public $_helpKey; public $_type; public $_minVal; public $_maxVal; public $_inputType; public $_inputAttr; public $_label; public $_allowNull; public $_glue; public $_href; public $_hrefLink; public $_multiInd; public $_FDE = 'YYY'; //File:Display:Editable public $_note; public $_icon; public $_linkedkeys; public function __construct($key, $type, $label, $inputType=null, $allowNull=true, $min=null, $max=null, $inputAttr=null, $multiInd=0, $helpKey=null) { $this->_htmlName = $key; $this->_key = $key; $this->_type = $type; $this->_label = $label; $this->_minVal = $min; $this->_maxVal = $max; $this->_inputType = $inputType; $this->_inputAttr = $inputAttr; $this->_allowNull = $allowNull; $this->_multiInd = $multiInd; $this->_helpKey = ($helpKey == null)? $key:$helpKey; } public function dup($key, $label, $helpkey) { $cname = get_class($this); $d = new $cname($this->_key, $this->_type, $this->_label, $this->_inputType, $this->_allowNull, $this->_minVal, $this->_maxVal, $this->_inputAttr, $this->_multiInd, $this->_helpKey); $d->_htmlName = $this->_htmlName; $d->_glue = $this->_glue; $d->_href = $this->_href; $d->_hrefLink = $this->_hrefLink; $d->_FDE = $this->_FDE; $d->_note = $this->_note; $d->_icon = $this->_icon; $d->_linkedkeys = $this->_linkedkeys; if ($key) { $d->_htmlName = $key; $d->_key = $key; } if ($label) { $d->_label = $label; } if ($helpkey) { $d->_helpKey = $helpkey; } return $d; } protected function extractCheckBoxOr() { $value = 0; $novalue = 1; foreach ($this->_maxVal as $val => $disp) { $name = $this->_key . $val; if (isset($_POST[$name]) && ($val !== '')) { $novalue = 0; $value = $value | $val; } } return ( $novalue ? '' : $value ); } protected function extractSplitMultiple(&$value) { if ($this->_glue == ' ') { $vals = preg_split("/[,; ]+/", $value, -1, PREG_SPLIT_NO_EMPTY); } else { $vals = preg_split("/[,;]+/", $value, -1, PREG_SPLIT_NO_EMPTY); } $vals1 = []; foreach ($vals as $val) { $val1 = trim($val); if (strlen($val1) > 0 && !in_array($val1, $vals1)) { $vals1[] = $val1; } } if ($this->_glue == ' ') { $value = implode(' ', $vals1); } else { $value = implode(', ', $vals1); } } protected function toHtmlContent($cval, $refUrl = null) { $o = ''; if ($cval == null || !$cval->HasVal()) { $o .= '<span class="field_novalue">Not Set</span>'; return $o; } $value = $cval->GetVal(); $err = $cval->GetErr(); $quoted_value = ($value !== null) ? htmlspecialchars($value, ENT_QUOTES) : ''; if ($this->_type == 'sel1' && $value && !array_key_exists($value, $this->_maxVal)) { $err = 'Invalid value - ' . $quoted_value; } elseif ($err) { $type3 = substr($this->_type, 0, 3); if ($type3 == 'fil' || $type3 == 'pat') { $validator = new ConfValidation(); $validator->chkAttr_file_val($this, $value, $err); //error_log('revalidate path ' . $value); } } if ($err) { $cval->SetErr($err); $o .= '<span class="field_error">*' . $err . '</span><br>'; } if ($this->_href) { $link = $this->_hrefLink; if (strpos($link, '$V')) { $link = str_replace('$V', urlencode($value), $link); } $o .= '<span class="field_url"><a href="' . $link . '">'; } elseif ($refUrl) { $o .= '<span class="field_refUrl"><a href="' . $refUrl . '">'; } if ($this->_type === 'bool') { if ($value === '1') { $o .= 'Yes'; } elseif ($value === '0') { $o .= 'No'; } else { $o .= '<span class="field_novalue">Not Set</span>'; } } else if ($this->_key == "note") { $o .= '<textarea readonly rows=4 cols=60 style="width:100%">' . $quoted_value . '</textarea>'; } elseif ($this->_type === 'sel' || $this->_type === 'sel1') { if ($this->_maxVal && array_key_exists($value, $this->_maxVal)) { $o .= $this->_maxVal[$value]; } else { $o .= $quoted_value; } } elseif ($this->_type === 'checkboxOr') { if ($this->_minVal !== null && ($value === '' || $value === null)) { // has default value, for "Not set", set default val $value = $this->_minVal; } foreach ($this->_maxVal as $val => $name) { if (($value === $val) || ($value === '0' && $val === 0) || ($value !== '' && $val !== '' && (intval($value) & intval($val)) > 0)) { $gif = 'checked.gif'; } else { $gif = 'unchecked.gif'; } $o .= '<img src="/static/images/graphics/' . $gif . '" width="12" height="12"> '; $o .= $name . ' '; } } elseif ($this->_inputType === 'textarea1') { $o .= '<textarea readonly ' . $this->_inputAttr . '>' . $quoted_value . '</textarea>'; } elseif ($this->_inputType === 'text') { $o .= '<span class="field_text">' . $quoted_value . '</span>'; } elseif ($this->_type == 'ctxseq') { $o = $value . ' <a href=' . $this->_hrefLink . $value . '> + </a>'; $o .= '/<a href=' . $this->_hrefLink . '-' . $value . '> - '; } elseif ($this->_type == 'action') { $o .= $value; } elseif ($value) { $o .= htmlspecialchars($value); } if ($this->_href || $refUrl) { $o .= '</a></span>'; } return $o; } protected function getNote() { if ($this->_note) { return $this->_note; } if ($this->_type == 'uint') { if ($this->_maxVal) { return 'number valid range: ' . $this->_minVal . ' - ' . $this->_maxVal; } if ($this->_minVal) { return 'number >= ' . $this->_minVal; } } elseif ($this->_type == 'parse' && $this->_maxVal) { return 'Syntax: ' . $this->_maxVal; // parsehelp } return null; } protected function genOptions($options, $selValue) { $o = ''; if ($options) { foreach ($options as $key => $value) { if ($key === 'forcesel') { $o .= '<option disabled '; if ($selValue === null || $selValue === '') { $o .= 'selected'; } } else { $o .= '<option value="' . $key . '"'; if ($key == $selValue) { if (!($selValue === '' && $key === 0) && !($selValue === null && $key === 0) && !($selValue === '0' && $key === '') && !($selValue === 0 && $key === '')) { $o .= ' selected'; } } } $o .= ">$value</option>\n"; } } return $o; } public function extractPost() { $cval = null; $postVal = DUtil::grab_input("post", $this->_htmlName); if ($this->_multiInd == 2) { $cval = []; $v = preg_split("/\n+/", $postVal, -1, PREG_SPLIT_NO_EMPTY); foreach ($v as $vi) { $cval[] = new CVal(trim($vi)); } } elseif ($this->_type === 'checkboxOr') { $value = $this->extractCheckBoxOr(); $cval = new CVal($value); } else { $value = trim($postVal); if ($this->_multiInd == 1) { $this->extractSplitMultiple($value); } if ($this->_inputType === 'textarea1') { $value = "\n$value\n"; // add line break for easy editing } $cval = new CVal($value); } return $cval; } public function toHtml(&$data, $refUrl = null, $linkedData = null) { $o = ''; if ($this->_type == 'action') { $o .= $this->toHtmlContent(new CVal($data)); } elseif (is_array($data)) { for ($i = 0; $i < count($data); ++$i) { $o .= $this->toHtmlContent($data[$i], $refUrl); $o .= '<br>'; } } else { $o .= $this->toHtmlContent($data, $refUrl); } return $o; } public function toHtmlInput(&$data, $seq = null, $isDisable = false) { $err = ''; if (is_array($data)) { $value = []; foreach ($data as $d) { $value[] = $d->GetVal(); $e1 = $d->GetErr(); if ($e1) { $err .= $e1 . '<br>'; } } } else { if ($data) { $value = $data->GetVal(); $err = $data->GetErr(); } else { $value = null; } } if (is_array($value) && $this->_inputType != 'checkbox') { if ($this->_multiInd == 1) { $glue = ', '; } else { $glue = "\n"; } $value = implode($glue, $value); } $name = $this->_htmlName; if ($seq) { $name .= $seq; } $inputAttr = $this->_inputAttr; if ($isDisable) { $inputAttr .= ' disabled'; } $quoted_value = ($value !== null) ? htmlspecialchars($value, ENT_QUOTES) : $value; $input = ''; $note = $this->getNote(); if ($note) { $input .= '<span class="field_note">' . htmlspecialchars($note, ENT_QUOTES) . '</span><br>'; } if ($err) { $input .= '<span class="field_error">*'; $type3 = substr($this->_type, 0, 3); if ($type3 == 'fil' || $type3 == 'pat') { $input .= $err . '</span><br>'; } else { $input .= htmlspecialchars($err, ENT_QUOTES) . '</span><br>'; } } $style = 'xtbl_value'; if ($this->_inputType === 'text') { $input .= '<input class="' . $style . '" type="text" name="' . $this->_htmlName . '" ' . $inputAttr . ' value="' . $quoted_value . '">'; return $input; } if ($this->_inputType === 'password') { $input .= '<input class="' . $style . '" type="password" name="' . $this->_htmlName . '" ' . $inputAttr . ' value="' . $value . '">'; return $input; } if ($this->_inputType === 'textarea' || $this->_inputType === 'textarea1') { $input .= '<textarea name="' . $name . '" ' . $inputAttr . '>' . $quoted_value . '</textarea>'; return $input; } if ($this->_inputType === 'radio' && $this->_type === 'bool') { $input .= '<input type="radio" id="' . $name . '1" name="' . $name . '" ' . $inputAttr . ' value="1" '; if ($value == '1') { $input .= 'checked'; } $input .= '><label for="' . $name . '1"> Yes </label> '; $input .= '<input type="radio" id="' . $name . '0" name="' . $name . '" ' . $inputAttr . ' value="0" '; if ($value == '0') { $input .= 'checked'; } $input .= '><label for="' . $name . '0"> No </label>'; if ($this->_allowNull) { $input .= ' <input type="radio" id="' . $name . '" name="' . $name . '" ' . $inputAttr . ' value="" '; if ($value != '0' && $value != '1') { $input .= 'checked'; } $input .= '><label for="' . $name . '"> Not Set </label>'; } return $input; } if ($this->_inputType === 'checkbox') { $id = $name . $value['val']; $input .= '<input type="checkbox" id="' . $id . '" name="' . $name . '" ' . $inputAttr . ' value="' . $value['val'] . '"'; if ($value['chk']) { $input .= ' checked'; } $input .= '><label for="' . $id . '"> ' . $value['val'] . ' </label>'; return $input; } if ($this->_inputType === 'checkboxgroup') { if ($this->_minVal !== null && ($value === '' || $value === null)) { // has default value, for "Not set", set default val $value = $this->_minVal; } $js0 = $js1 = ''; if (array_key_exists('0', $this->_maxVal) || array_key_exists('', $this->_maxVal)) { $chval = array_keys($this->_maxVal); foreach ($chval as $chv) { if ($chv == '0' || $chv === '') { $js1 = "document.confform.$name$chv.checked=false;"; } else { $js0 .= "document.confform.$name$chv.checked=false;"; } } $js1 = " onclick=\"$js1\""; $js0 = " onclick=\"$js0\""; } foreach ($this->_maxVal as $val => $disp) { $id = $name . $val; $input .= '<input type="checkbox" id="' . $id . '" name="' . $id . '" value="' . $val . '"'; if (($value === $val) || ($value === '0' && $val === 0) || ($val !== '' && (((int) $value & (int) $val) > 0))) { $input .= ' checked'; } $input .= ($val === '0' || $val === 0 || $val === '') ? $js0 : $js1; $input .= '><label for="' . $id . '"> ' . $disp . ' </label> '; } return $input; } if ($this->_inputType === 'select') { $input .= '<select name="' . $name . '" ' . $inputAttr . '>'; $input .= ($this->genOptions($this->_maxVal, $value)); $input .= '</select>'; return $input; } } public function populate_sel1_options($info, &$data) { $options = []; if ($this->_allowNull) { $options[''] = ''; } else { $options['forcesel'] = '-- Please select --'; } foreach ($this->_minVal as $loc) { $d = $info; $locs = explode(':', $loc); foreach ($locs as $l) { if (substr($l, 0, 2) == '$$') { //$$type!fcgi $t = strpos($l, '!'); $tag = substr($l, 2, $t - 2); $tag0 = substr($l, $t + 1); // default if (isset($data[$tag]) && $data[$tag]->HasVal()) { $l = $data[$tag]->GetVal(); } else { $l = $tag0; } } if (!empty($d[$l])) { $d = $d[$l]; } else { $d = null; break; } } if ($d) { $options = $options + $d; // this is array add } } $this->_maxVal = $options; } }