/** * Получает коллекцию Свойств по заданному значению поля * @global type $DB * @param string $tableName Название таблицы * @param string $type Значение поля TYPE * @param string $value Значение поля VALUE * @return \PropertyCollection */ static function getPropertiesByType($tableName, $type, $value) { global $DB; $sql = 'SELECT * FROM ' . $tableName . ' WHERE TYPE="' . $DB->EscapeString($type) . '" AND VALUE = "' . $DB->EscapeString($value) . '"'; $rows = $DB->Query($sql); $res = new PropertyCollection(); while ($array = $rows->Fetch()) { $res->add(Property::fromArray($array)); } return $res; }
/** * 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(); }