Пример #1
0
 /**
  * Получает коллекцию Свойств по заданному значению поля
  * @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;
 }
Пример #2
0
 /**
  * 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();
 }