/** * overload schemaSave * * @return mixed * * @param integer $userId * * @throws Exception * @throws PropelException */ public function saveSchemaProperty($userId) { //if the property is modified then if ($this->isModified() || $this->isNew()) { $fields = Schema::getProfileArray(); /** @var $field ProfileProperty */ foreach ($fields as $field) { $fieldIds[sfInflector::underscore($field->getName())] = ["id" => $field->getId(), "hasLang" => $field->getHasLanguage()]; } $statusId = $this->getStatusId(); $con = Propel::getConnection(SchemaPropertyPeer::DATABASE_NAME); try { //start a transaction $con->begin(); $this->setUpdatedUserId($userId); //if the property is new then if ($this->isNew()) { //set the created user $this->setCreatedUserId($userId); } //FIXME if the status is modified we have to update all of the existing statement statuses -- IF THEY MATCH THE OLD STATUS $columns = $this->modifiedColumns; //save it last $affectedRows = $this->save($con); $skipArray = ["is_subproperty_of", "is_subclass_of"]; foreach ($columns as $column) { $fieldName = SchemaPropertyPeer::translateFieldName($column, BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME); if (in_array($fieldName, $skipArray)) { $object = $this->getParentUri(); if ("class" == $this->getType()) { $fieldName = "is_subclass_of"; $objectId = $this->getIsSubclassOf(); } else { $fieldName = "is_subproperty_of"; $objectId = $this->getIsSubpropertyOf(); } } else { $object = $this->getByName($column, BasePeer::TYPE_COLNAME); $objectId = null; } SchemaPropertyPeer::updateRelatedElements($this, $fieldName, $object, $objectId, $userId, $fieldIds, $statusId, $con); } //commit the transaction $con->commit(); return $affectedRows; } catch (PropelException $e) { $con->rollback(); throw $e; } } }