Ejemplo n.º 1
0
 /**
  * insert a new item in the database
  *
  * @param XoopsObject $item reference to the {@link PublisherItem} object
  * @param bool        $force
  *
  * @return bool FALSE if failed, TRUE if already present and unchanged or successful
  */
 public function insert(XoopsObject $item, $force = true)
 {
     $xoops = Xoops::getInstance();
     if (!$item->getVar('meta_keywords') || !$item->getVar('meta_description') || !$item->getVar('short_url')) {
         $publisher_metagen = new PublisherMetagen($item->title(), $item->getVar('meta_keywords'), $item->getVar('summary'));
         // Auto create meta tags if empty
         if (!$item->getVar('meta_keywords')) {
             $item->setVar('meta_keywords', $publisher_metagen->_keywords);
         }
         if (!$item->getVar('meta_description')) {
             $item->setVar('meta_description', $publisher_metagen->_description);
         }
         // Auto create short_url if empty
         if (!$item->getVar('short_url')) {
             $item->setVar('short_url', $publisher_metagen->generateSeoTitle($item->getVar('title', 'n'), false));
         }
     }
     if (!parent::insert($item, $force)) {
         return false;
     }
     if ($xoops->isActiveModule('tag')) {
         // Storing tags information
         $tag_handler = $xoops->getModuleHandler('tag', 'tag');
         $tag_handler->updateByItem($item->getVar('item_tag'), $item->getVar('itemid'), PUBLISHER_DIRNAME, 0);
     }
     return true;
 }
Ejemplo n.º 2
0
 /**
  * insert a new category in the database
  *
  * @param XoopsObject $category reference to the {@link PublisherCategory} object
  * @param bool        $force
  *
  * @return bool FALSE if failed, TRUE if already present and unchanged or successful
  */
 public function insert(XoopsObject $category, $force = true)
 {
     // Auto create meta tags if empty
     if (!$category->getVar('meta_keywords') || !$category->getVar('meta_description')) {
         $publisher_metagen = new PublisherMetagen($category->getVar('name'), $category->getVar('meta_keywords'), $category->getVar('description'));
         if (!$category->getVar('meta_keywords')) {
             $category->setVar('meta_keywords', $publisher_metagen->_keywords);
         }
         if (!$category->getVar('meta_description')) {
             $category->setVar('meta_description', $publisher_metagen->_description);
         }
     }
     // Auto create short_url if empty
     if (!$category->getVar('short_url')) {
         $category->setVar('short_url', PublisherMetagen::generateSeoTitle($category->getVar('name', 'n'), false));
     }
     $ret = parent::insert($category, $force);
     return $ret;
 }
Ejemplo n.º 3
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');
 }