function installFieldValue($fieldid, $fieldvalue) { global $_CB_database; $row = new moscomprofilerFieldValues($_CB_database); $row->fieldid = $fieldid; $row->fieldtitle = $fieldvalue->attributes('title'); $row->ordering = $fieldvalue->attributes('ordering'); $row->sys = $fieldvalue->attributes('sys'); $_CB_database->setQuery("SELECT fieldvalueid FROM #__comprofiler_field_values WHERE fieldid = " . (int) $fieldid . " AND fieldtitle = '" . $row->fieldtitle . "'"); $fieldvalueid = $_CB_database->loadResult(); if (!$row->store($fieldvalueid)) { $this->setError(1, 'SQL error on field store' . ': ' . $row->getError()); return false; } return true; }
/** * 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; }