Hello everyone,
I have a real estate website and when i try to add a new custom field for example " surface" with a text box. When i add a new listing and fill this new custom field. it doesnt appear in item page and as well in the edit item page it shows an empty box like i didn't fill it during adding a new listing.
Someone can help me with this?
This was a bug in the 5.1.0 release. It's fixed in today's update.
Download latest one here: https://github.com/mindstellar/Osclass/releases
or apply the change yourself:
Available for custom Osclass development. www.defected.dev
This was a bug in the 5.1.0 release. It's fixed in today's update.
Download latest one here: https://github.com/mindstellar/Osclass/releases
or apply the change yourself:
Hello, regarding your reply, i don't understand what the change i can do
Is it in the field.php under oc includes? If it is so here is my field.php code. What i need to add
* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Model database for Field table * * @package Osclass * @subpackage Model * @since unknown */ class Field extends DAO { /** * It references to self object: Field. * It is used as a singleton * * @access private * @since unknown * @var Field */ private static $instance; /** * It creates a new Field object class ir if it has been created * before, it return the previous object * * @access public * @since unknown * @return Field */ public static function newInstance() { if( !self::$instance instanceof self ) { self::$instance = new self; } return self::$instance; } /** * Set data related to t_meta_fields table */ function __construct() { parent::__construct(); $this->setTableName('t_meta_fields'); $this->setPrimaryKey('pk_i_id'); $this->setFields( array('pk_i_id', 's_name', 'e_type', 'b_required', 'b_searchable', 's_slug', 's_options') ); } /** * Find a field by its id. * * @access public * @since unknown * @param int $id * @return array Field information. If there's no information, return an empty array. */ public function findByPrimaryKey($id) { $this->dao->select(); $this->dao->from($this->getTableName()); $this->dao->where('pk_i_id', $id); $result = $this->dao->get(); if( $result == false ) { return array(); } return $result->row(); } /** * Find a field by its name * * @access public * @since unknown * @param string $id * @return array Field information. If there's no information, return an empty array. */ public function findByCategory($id) { $this->dao->select('mf.*'); $this->dao->from(sprintf('%st_meta_fields mf, %st_meta_categories mc', DB_TABLE_PREFIX, DB_TABLE_PREFIX)); $this->dao->where('mc.fk_i_category_id', $id); $this->dao->where('mf.pk_i_id = mc.fk_i_field_id'); $result = $this->dao->get(); if( $result == false ) { return array(); } return $result->result(); } /** * Find a field by its name * * @access public * @since unknown * @param string $ids * @return array Fields' id */ public function findIDSearchableByCategories($ids) { if(!is_array($ids)) { $ids = array($ids); }; $this->dao->select('f.pk_i_id'); $this->dao->from($this->getTableName()." f, ".DB_TABLE_PREFIX."t_meta_categories c"); $where = array(); $mCat = Category::newInstance(); foreach($ids as $id) { if(is_numeric($id)) { $where[] = 'c.fk_i_category_id = '.$id; } else { $cat = $mCat->findBySlug($id); if(isset($cat['pk_i_id'])) { $where[] = 'c.fk_i_category_id = ' . $cat['pk_i_id']; } } } if(empty($where)) { return array(); } else { $this->dao->where('( '.implode(' OR ', $where).' )'); } $this->dao->where('f.pk_i_id = c.fk_i_field_id'); $this->dao->where('f.b_searchable', 1); $result = $this->dao->get(); if( $result == false ) { return array(); } $tmp = array(); foreach($result->result() as $t) { $tmp[] = $t['pk_i_id']; }; return $tmp; } /** * Find fields from a category and an item * * @access public * @since unknown * @param string $id * @return array Field information. If there's no information, return an empty array. */ public function findByCategoryItem($catId, $itemId) { if( !is_numeric($catId) || (!is_numeric($itemId) && $itemId != null) ) { return array(); } $result = $this->dao->query(sprintf("SELECT query.*, im.s_value as s_value, im.fk_i_item_id FROM (SELECT mf.* FROM %st_meta_fields mf, %st_meta_categories mc WHERE mc.fk_i_category_id = %d AND mf.pk_i_id = mc.fk_i_field_id) as query LEFT JOIN %st_item_meta im ON im.fk_i_field_id = query.pk_i_id AND im.fk_i_item_id = %d group by pk_i_id", DB_TABLE_PREFIX, DB_TABLE_PREFIX, $catId, DB_TABLE_PREFIX, $itemId)); if( $result == false ) { return array(); } return $result->result(); } /** * Find a field by its name * * @access public * @since unknown * @param string $name * @return array Field information. If there's no information, return an empty array. */ public function findByName($name) { $this->dao->select(); $this->dao->from($this->getTableName()); $this->dao->where('s_name', $name); $result = $this->dao->get(); if( $result == false ) { return array(); } return $result->row(); } /** * Find a field by its name * * @access public * @since unknown * @param string $slug * @return array Field information. If there's no information, return an empty array. */ public function findBySlug($slug) { $this->dao->select(); $this->dao->from($this->getTableName()); $this->dao->where('s_slug', $slug); $result = $this->dao->get(); if( $result == false ) { return array(); } return $result->row(); } /** * Return an array with from and to date values * given a meta field id * */ public function getDateIntervalByPrimaryKey($item_id, $field_id) { $this->dao->select(); $this->dao->from(DB_TABLE_PREFIX.'t_item_meta'); $this->dao->where('fk_i_field_id', $field_id); $this->dao->where('fk_i_item_id', $item_id); $result = $this->dao->get(); if( $result == false ) { return array(); } $aAux = $result->result(); $aInterval = array(); foreach($aAux as $k => $v) { $aInterval[$v['s_multi']] = $v['s_value']; } return $aInterval; } /** * Gets which categories are associated with that field * * @access public * @since unknown * @param string $id * @return array */ public function categories($id) { $this->dao->select('fk_i_category_id'); $this->dao->from(sprintf('%st_meta_categories', DB_TABLE_PREFIX)); $this->dao->where('fk_i_field_id', $id); $result = $this->dao->get(); if( $result == false ) { return array(); } $categories = $result->result(); $cats = array(); foreach($categories as $k => $v) { $cats[] = $v['fk_i_category_id']; } return $cats; } /** * Insert a new field * * @access public * @since unknown * @param string $name * @param string $type * @param string $slug * @param bool $required * @param array $options * @param array $categories */ public function insertField($name, $type, $slug, $required, $options, $categories = null) { if($slug=='') { $slug = preg_replace('|([-]+)|', '-', preg_replace('|[^a-z0-9_-]|', '-', strtolower($name))); } $slug_tmp = $slug; $slug_k = 0; while(true) { if(!$this->findBySlug($slug)) { break; } else { $slug_k++; $slug = $slug_tmp."_".$slug_k; } } $this->dao->insert($this->getTableName(), array("s_name" => $name, "e_type" =>$type, "b_required" => $required, "s_slug" => $slug, 's_options' => $options)); $id = $this->dao->insertedId(); $return = true; foreach($categories as $c) { $result = $this->dao->insert(sprintf('%st_meta_categories', DB_TABLE_PREFIX), array('fk_i_category_id' => $c, 'fk_i_field_id' =>$id)); if(!$result) { $return = false; }; } return $return; } /** * Save the categories linked to a field * * @access public * @since unknown * @param int $id * @param array $categories * @return bool */ public function insertCategories($id, $categories = null) { if($categories!=null) { $return = true; foreach($categories as $c) { $result = $this->dao->insert(sprintf('%st_meta_categories', DB_TABLE_PREFIX), array('fk_i_category_id' => $c, 'fk_i_field_id' =>$id)); if(!$result) { $return = false; } } return $return; } return false; } /** * Removes categories from a field * * @access public * @since unknown * @param int $id * @return bool on success */ public function cleanCategoriesFromField($id) { return $this->dao->delete(sprintf('%st_meta_categories', DB_TABLE_PREFIX), array('fk_i_field_id' =>$id)); } /** * Update a field value * * @access public * @since unknown * @param int $itemId * @param int $field * @param string $value * @return mixed false on fail, int of num. of affected rows */ public function replace($itemId, $field, $value) { if(is_array($value) ) { foreach($value as $key => $v) { $this->dao->replace(sprintf('%st_item_meta', DB_TABLE_PREFIX), array('fk_i_item_id' => $itemId, 'fk_i_field_id' => $field, 's_multi' => $key, 's_value' => $v)); } } else { return $this->dao->replace(sprintf('%st_item_meta', DB_TABLE_PREFIX), array('fk_i_item_id' => $itemId, 'fk_i_field_id' => $field, 's_value' => $value)); } } /** * Delete a field and all information associated with it * * @access public * @since unknown * @param int $id * @return bool on success */ public function deleteByPrimaryKey($id) { $this->dao->delete(sprintf('%st_item_meta', DB_TABLE_PREFIX), array('fk_i_field_id' =>$id)); $this->dao->delete(sprintf('%st_meta_categories', DB_TABLE_PREFIX), array('fk_i_field_id' =>$id)); return $this->dao->delete($this->getTableName(), array('pk_i_id' =>$id)); } } /* file end: ./oc-includes/osclass/model/Field.php */ ?>
Someone know how to solve that?