Exemple #1
0
 /**
  * @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'));
 }
Exemple #2
0
 /**
  * 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');
 }