public function save($data) { $groupid = $data['groupid']; unset($data['groupid']); $table = $this->getTable(); if ($data['id'] && $table->load($data['id'])) { $fieldClass = TZ_Portfolio_PlusFrontHelperExtraFields::getExtraField($data['id']); $data = $fieldClass->onSave($data); } if (parent::save($data)) { $pk = !empty($data['id']) ? $data['id'] : (int) $this->getState($this->getName() . '.id'); // Insert field's groups TZ_Portfolio_PlusHelperExtraFields::insertFieldGroups($pk, $groupid); return true; } return false; }
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; }