/** * 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; }
/** * 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; }
/** * 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'); }