Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }