public function onSaveArticleFieldValue($value) { if (!$this->article_id) { return false; } $_value = $this->prepareFieldValue($value); $db = JFactory::getDbo(); $query = $db->getQuery(true); $result = true; $table_name = '#__tz_portfolio_plus_field_content_map'; $query->select('m.*'); $query->from($table_name . ' AS m'); $query->where('m.fieldsid = ' . $this->id); $query->where('m.contentid = ' . $this->article_id); $db->setQuery($query); $countData = $db->loadResult(); if ($countData > 0) { if ($groupid = TZ_Portfolio_PlusFrontHelperExtraFields::getFieldGroupsByArticleId($this->article_id)) { $groupid = JArrayHelper::getColumn($groupid, 'id'); if (count($groupid)) { $query->join('INNER', '#__tz_portfolio_plus_field_fieldgroup_map AS fm ON fm.fieldsid = m.fieldsid'); $query->where('fm.groupid IN(' . implode(',', $groupid) . ')'); } } $db->setQuery($query); $countGData = $db->loadResult(); $query->clear(); if ($_value !== "" && !is_null($_value) && $countGData > 0) { $query->update($table_name); $query->set('value = ' . $db->quote($_value)); $query->where('fieldsid = ' . $this->id); $query->where('contentid = ' . $this->article_id); $db->setQuery($query); $result = $db->execute(); } else { $query->delete($table_name); $query->where('fieldsid = ' . $this->id); $query->where('contentid = ' . $this->article_id); $db->setQuery($query); $result = $db->execute(); } } else { if ($_value !== "" && !is_null($_value)) { $query->clear(); $query->insert($table_name); $query->columns('fieldsid, contentid, value, ordering'); $query->values($this->id . ',' . $this->article_id . ',' . $db->quote($_value) . ', 0'); $db->setQuery($query); $result = $db->execute(); } } return $result; }
public function getExtraFields() { $app = JFactory::getApplication(); $articleId = $app->input->getInt('id', 0); $db = $this->getDbo(); $query = $db->getQuery(true); if ($fieldGroups = TZ_Portfolio_PlusFrontHelperExtraFields::getFieldGroupsByArticleId($articleId)) { $fieldsCache = array(); foreach ($fieldGroups as $i => $fieldGroup) { $fieldGroup->fields = array(); $query->clear(); $query->select("field.*, m.groupid"); $query->from("#__tz_portfolio_plus_fields AS field"); $query->join('LEFT', '#__tz_portfolio_plus_field_fieldgroup_map AS m ON field.id = m.fieldsid'); $query->join('INNER', '#__tz_portfolio_plus_extensions AS e ON e.element = field.type')->where('e.type = ' . $db->quote('tz_portfolio_plus-plugin'))->where('e.folder = ' . $db->quote('extrafields'))->where('e.published = 1'); $query->where("field.published = 1"); $query->where("m.groupid = " . $fieldGroup->id); $query->order("field.ordering ASC"); $db->setQuery($query); $_fields = $db->loadObjectList(); if ($_fields) { foreach ($_fields as $field) { if (!in_array($field->id, $fieldsCache)) { $fieldObj = TZ_Portfolio_PlusFrontHelperExtraFields::getExtraField($field, $articleId); $fieldGroup->fields[] = $fieldObj; $fieldsCache[] = $field->id; } } } if (!count($fieldGroup->fields)) { unset($fieldGroups[$i]); } } return $fieldGroups; } return false; }