/** * @param Property $property The property object to add. */ protected function doAddProperty($property) { $this->collPropertys[] = $property; $property->setAccount($this); }
/** * Updates a property * * @param int $id The property ID * @param array $data * @return int The property ID */ public function do_update($id, $data = null) { $user = $this->requireUser(); if (!$user->isAdmin()) { throw new Exception('Only administrators are allowed to edit properties.'); } // Validate input data $validator = new KickstartValidator(); $locale = Localizer::getInstance(); $warnings = $validator->filterErrors($data, $this->initFilter($this->filter_basic, $locale)); if ($warnings) { return array('result' => false, 'warnings' => $warnings); } $query = PropertyQuery::create()->filterByAccount($user->getAccount()); if ($id !== null) { $query->filterById($id, Criteria::NOT_EQUAL); $property = PropertyQuery::create()->filterByAccount($user->getAccount())->findOneById($id); if (!$property) { throw new Exception('Property not found; ID: ' . $id); } } else { $property = new Property(); } // Check for duplicates if (isset($data['Name']) and $query->findOneByName($data['Name'])) { throw new Exception($locale->insert('error.taken', array('value' => '"' . $data['Name'] . '"'))); } unset($data['Id']); $property->fromArray($data); $property->setAccount($user->getAccount()); $property->save(); return $property->getId(); }