/** * Delete method for fields deleting also fieldvalues, but not the data column in the comprofiler table. * For that, deleteDataDescr() method must be called instead. * * @param id of row to delete * @return true if successful otherwise returns and error message */ function delete($oid = null) { $k = $this->_tbl_key; if ($oid) { $this->{$k} = (int) $oid; } $result = true; //Find all fieldValues related to the field $this->_db->setQuery("SELECT `fieldvalueid` FROM #__comprofiler_field_values WHERE `fieldid`=" . (int) $this->{$k}); $fieldvalues = $this->_db->loadObjectList(); $rowFieldValues = new moscomprofilerFieldValues($this->_db); if (count($fieldvalues) > 0) { //delete each field value related to a field foreach ($fieldvalues as $fieldvalue) { $result = $rowFieldValues->delete($fieldvalue->fieldvalueid) && $result; } } //Now delete the field itself without deleting the user data, preserving it for reinstall //$this->deleteColumn( $this->table, $this->name ); // this would delete the user data $result = parent::delete($this->{$k}) && $result; return $result; }