/** * @param UserrankRank|XoopsObject $obj */ public function __construct(XoopsObject $obj) { if ($obj->isNew()) { $blank_img = 'blank.gif'; } else { $blank_img = str_replace('ranks/', '', $obj->getVar('rank_image', 'e')); } $title = $obj->isNew() ? sprintf(_AM_USERRANK_ADD) : sprintf(_AM_USERRANK_EDIT); parent::__construct($title, 'form', 'userrank.php', 'post', true); $this->setExtra('enctype="multipart/form-data"'); $this->addElement(new Xoops\Form\Text(_AM_USERRANK_TITLE, 'rank_title', 4, 50, $obj->getVar('rank_title')), true); $min = new Xoops\Form\Text(_AM_USERRANK_MINPOST, 'rank_min', 1, 10, $obj->getVar('rank_min')); $min->setPattern('^\\d+$', _AM_USERRANK_ERROR_POST); $this->addElement($min); $max = new Xoops\Form\Text(_AM_USERRANK_MAXPOST, 'rank_max', 1, 10, $obj->getVar('rank_max')); $max->setPattern('^\\d+$', _AM_USERRANK_ERROR_POST); $this->addElement($max); $imgtray_img = new Xoops\Form\ElementTray(_AM_USERRANK_IMAGE, '<br />'); $imgpath_img = sprintf(_AM_USERRANK_IMAGE_PATH, \XoopsBaseConfig::get('uploads-path') . '/ranks/'); $imageselect_img = new Xoops\Form\Select($imgpath_img, 'rank_image', $blank_img); $image_array_img = XoopsLists::getImgListAsArray(\XoopsBaseConfig::get('uploads-path') . '/ranks'); $imageselect_img->addOption("{$blank_img}", $blank_img); foreach ($image_array_img as $image_img) { $imageselect_img->addOption("{$image_img}", $image_img); } $imageselect_img->setExtra("onchange='showImgSelected(\"xo-ranks-img\", \"rank_image\", \"ranks\", \"\", \"" . \XoopsBaseConfig::get('uploads-url') . "\")'"); $imgtray_img->addElement($imageselect_img, false); $imgtray_img->addElement(new Xoops\Form\Label('', "<br /><img src='" . \XoopsBaseConfig::get('uploads-url') . "/ranks/" . $blank_img . "' name='image_img' id='xo-ranks-img' alt='' />")); $fileseltray_img = new Xoops\Form\ElementTray('<br />', '<br /><br />'); $fileseltray_img->addElement(new Xoops\Form\File(_AM_USERRANK_UPLOAD, 'rank_image'), false); $fileseltray_img->addElement(new Xoops\Form\Label(''), false); $imgtray_img->addElement($fileseltray_img); $this->addElement($imgtray_img); if (!$obj->isNew()) { $rank_special = $obj->getVar('rank_special'); } else { $rank_special = 0; } $special_tray = new Xoops\Form\ElementTray(_AM_USERRANK_SPECIAL, '<br />'); $special_tray->setDescription(_AM_USERRANK_SPECIAL_CAN); $special_tray->addElement(new Xoops\Form\RadioYesNo('', 'rank_special', $rank_special)); $this->addElement($special_tray); if (!$obj->isNew()) { $this->addElement(new Xoops\Form\Hidden('rank_id', $obj->getVar('rank_id'))); } $this->addElement(new Xoops\Form\Hidden('op', 'userrank_save')); $this->addElement(new Xoops\Form\Button('', 'submit', XoopsLocale::A_SUBMIT, 'submit')); }
/** * save a profile field in the database * * @param XoopsObject|ProfileField $obj reference to the object * @param bool $force whether to force the query execution despite security settings * @return bool FALSE if failed, TRUE if already present and unchanged or successful */ public function insertFields(XoopsObject $obj, $force = false) { $profile_handler = \Xoops::getModuleHelper('profile')->getHandler('profile'); $obj->setVar('field_name', str_replace(' ', '_', $obj->getVar('field_name'))); $obj->cleanVars(); //Don't quote switch ($obj->getVar('field_type')) { case "datetime": case "date": $obj->setVar('field_valuetype', XOBJ_DTYPE_INT); $obj->setVar('field_maxlength', 10); break; case "longdate": $obj->setVar('field_valuetype', XOBJ_DTYPE_MTIME); break; case "yesno": $obj->setVar('field_valuetype', XOBJ_DTYPE_INT); $obj->setVar('field_maxlength', 1); break; case "textbox": if ($obj->getVar('field_valuetype') != XOBJ_DTYPE_INT) { $obj->setVar('field_valuetype', XOBJ_DTYPE_TXTBOX); } break; case "autotext": if ($obj->getVar('field_valuetype') != XOBJ_DTYPE_INT) { $obj->setVar('field_valuetype', XOBJ_DTYPE_TXTAREA); } break; case "group_multi": case "select_multi": case "checkbox": $obj->setVar('field_valuetype', XOBJ_DTYPE_ARRAY); break; case "language": case "timezone": case "theme": $obj->setVar('field_valuetype', XOBJ_DTYPE_TXTBOX); break; case "dhtml": case "textarea": $obj->setVar('field_valuetype', XOBJ_DTYPE_TXTAREA); break; } if ($obj->getVar('field_valuetype') == "") { $obj->setVar('field_valuetype', XOBJ_DTYPE_TXTBOX); } if (!in_array($obj->getVar('field_name'), $this->getUserVars())) { if ($obj->isNew()) { //add column to table $changetype = "ADD"; } else { //update column information $changetype = "CHANGE `" . $obj->getVar('field_name', 'n') . "`"; } $maxlengthstring = $obj->getVar('field_maxlength') > 0 ? "(" . $obj->getVar('field_maxlength') . ")" : ""; //set type switch ($obj->getVar('field_valuetype')) { default: case XOBJ_DTYPE_ARRAY: case XOBJ_DTYPE_EMAIL: case XOBJ_DTYPE_TXTBOX: case XOBJ_DTYPE_URL: $type = "varchar"; // varchars must have a maxlength if (!$maxlengthstring) { //so set it to max if maxlength is not set - or should it fail? $maxlengthstring = "(255)"; $obj->setVar('field_maxlength', 255); } break; case XOBJ_DTYPE_INT: $type = "int"; break; case XOBJ_DTYPE_DECIMAL: $type = "decimal(14,6)"; break; case XOBJ_DTYPE_FLOAT: $type = "float(15,9)"; break; case XOBJ_DTYPE_OTHER: case XOBJ_DTYPE_TXTAREA: $type = "text"; $maxlengthstring = ""; break; case XOBJ_DTYPE_MTIME: $type = "date"; $maxlengthstring = ""; break; } $sql = "ALTER TABLE `" . $profile_handler->table . "` " . $changetype . " `" . $obj->cleanVars['field_name'] . "` " . $type . $maxlengthstring . ' NULL'; if (!$this->db2->query($sql)) { return false; } } //change this to also update the cached field information storage $obj->setDirty(); if (!parent::insert($obj, $force)) { return false; } return $obj->getVar('field_id'); }