コード例 #1
0
 /**
  * Save CustomField
  * @param CustomField $customField
  * @returns CustomField
  * @throws DaoException, DataDuplicationException
  */
 public function saveCustomField(CustomField $customField)
 {
     try {
         $q = Doctrine_Query::create()->from('CustomField c')->where('c.name = ?', $customField->name)->andWhere('c.id <> ?', $customField->id);
         $freeNum = null;
         if (empty($customField->id)) {
             $q = Doctrine_Query::create()->select('c.field_num')->from('CustomField c')->orderBy('id');
             $fieldNumbers = $q->execute(array(), Doctrine::HYDRATE_SCALAR);
             $count = count($fieldNumbers);
             $i = 1;
             foreach ($fieldNumbers as $num) {
                 if ($num['c_id'] > $i) {
                     $freeNum = $i;
                     break;
                 }
                 $i++;
                 if ($i > 10) {
                     break;
                 }
             }
             if (empty($freeNum) && $i <= 10) {
                 $freeNum = $i;
             }
             $customField->id = $freeNum;
         }
         if (!empty($customField->id)) {
             $customField->save();
         }
         return $customField;
         // @codeCoverageIgnoreStart
     } catch (Exception $e) {
         throw new DaoException($e->getMessage(), $e->getCode(), $e);
     }
     // @codeCoverageIgnoreEnd
 }
コード例 #2
0
 public function postCreate()
 {
     $campoextra = new CustomField();
     $campoextra->name = Input::get('name');
     $campoextra->type = Input::get('type');
     $validation = $campoextra->validate();
     if ($validation->fails()) {
         return Redirect::to('backend/camposextra/create')->withInput()->withErrors($validation->getMessageBag());
     }
     $campoextra->save();
     return Redirect::to('backend/camposextra/view/' . $campoextra->id)->with('message', 'El campo extra ha sido creado.');
 }
コード例 #3
0
ファイル: CustomFieldTest.php プロジェクト: rrsc/snipe-it
 public function testFormat()
 {
     $f = new CustomField();
     $f->name = "test 1";
     $f->format = "IP";
     $f->element = "text";
     $f->save();
     //print_r($f->attributes);
     //print($f);
     //print("Uhm, format is: ".$f->attributes['format']);
     //print("Lemme try this: ".$f->getAttribute('format'));
     //print("Moar: ".print_r($f->getAttributes(),true));
     $this->assertEquals($f->getAttributes()['format'], CustomField::$PredefinedFormats['IP']);
     //this seems undocumented...
     $this->assertEquals($f->format, "IP");
 }
コード例 #4
0
 /**
  * @depends testSetAttributesWithPostForCustomField
  */
 public function testUpdateValueOnCustomFieldRows()
 {
     $values = array('A', 'B', 'C');
     $customFieldData = CustomFieldData::getByName('updateItems');
     $customFieldData->serializedData = serialize($values);
     $this->assertTrue($customFieldData->save());
     $id = $customFieldData->id;
     $customField = new CustomField();
     $customField->value = 'A';
     $customField->data = $customFieldData;
     $this->assertTrue($customField->save());
     $customField = new CustomField();
     $customField->value = 'B';
     $customField->data = $customFieldData;
     $this->assertTrue($customField->save());
     $customField = new CustomField();
     $customField->value = 'C';
     $customField->data = $customFieldData;
     $this->assertTrue($customField->save());
     $customField = new CustomField();
     $customField->value = 'C';
     $customField->data = $customFieldData;
     $this->assertTrue($customField->save());
     $quote = DatabaseCompatibilityUtil::getQuote();
     $customFieldTableName = CustomField::getTableName();
     $baseCustomFieldTableName = BaseCustomField::getTableName();
     $valueAttributeColumnName = 'value';
     $dataAttributeColumnName = RedBeanModel::getForeignKeyName('CustomField', 'data');
     $sql = "select {$quote}{$customFieldTableName}{$quote}.id from {$quote}{$customFieldTableName}{$quote} ";
     $sql .= "left join {$quote}{$baseCustomFieldTableName}{$quote} on ";
     $sql .= "{$quote}{$baseCustomFieldTableName}{$quote}.id = ";
     $sql .= "{$quote}{$customFieldTableName}{$quote}.basecustomfield_id ";
     $sql .= "where {$quote}{$dataAttributeColumnName}{$quote} = {$id}";
     $ids = ZurmoRedBean::getCol($sql);
     $beans = ZurmoRedBean::batch($customFieldTableName, $ids);
     $customFields = RedBeanModel::makeModels($beans, 'CustomField');
     $this->assertEquals(4, count($customFields));
     $sql = "select {$quote}{$customFieldTableName}{$quote}.id from {$quote}{$customFieldTableName}{$quote} ";
     $sql .= "left join {$quote}{$baseCustomFieldTableName}{$quote} on ";
     $sql .= "{$quote}{$baseCustomFieldTableName}{$quote}.id = ";
     $sql .= "{$quote}{$customFieldTableName}{$quote}.basecustomfield_id ";
     $sql .= "where {$quote}{$dataAttributeColumnName}{$quote} = {$id} ";
     $sql .= "and {$quote}{$valueAttributeColumnName}{$quote} = 'B'";
     $this->assertEquals(1, count(ZurmoRedBean::getCol($sql)));
     $sql = "select {$quote}{$customFieldTableName}{$quote}.id from {$quote}{$customFieldTableName}{$quote} ";
     $sql .= "left join {$quote}{$baseCustomFieldTableName}{$quote} on ";
     $sql .= "{$quote}{$baseCustomFieldTableName}{$quote}.id = ";
     $sql .= "{$quote}{$customFieldTableName}{$quote}.basecustomfield_id ";
     $sql .= "where {$quote}{$dataAttributeColumnName}{$quote} = {$id} ";
     $sql .= "and {$quote}{$valueAttributeColumnName}{$quote} = 'C'";
     $this->assertEquals(2, count(ZurmoRedBean::getCol($sql)));
     $sql = "select {$quote}{$customFieldTableName}{$quote}.id from {$quote}{$customFieldTableName}{$quote} ";
     $sql .= "left join {$quote}{$baseCustomFieldTableName}{$quote} on ";
     $sql .= "{$quote}{$baseCustomFieldTableName}{$quote}.id = ";
     $sql .= "{$quote}{$customFieldTableName}{$quote}.basecustomfield_id ";
     $sql .= "where {$quote}{$dataAttributeColumnName}{$quote} = {$id} ";
     $sql .= "and {$quote}{$valueAttributeColumnName}{$quote} = 'E'";
     $this->assertEquals(0, count(ZurmoRedBean::getCol($sql)));
     CustomField::updateValueByDataIdAndOldValueAndNewValue($id, 'C', 'E');
     $sql = "select {$quote}{$customFieldTableName}{$quote}.id from {$quote}{$customFieldTableName}{$quote} ";
     $sql .= "left join {$quote}{$baseCustomFieldTableName}{$quote} on ";
     $sql .= "{$quote}{$baseCustomFieldTableName}{$quote}.id = ";
     $sql .= "{$quote}{$customFieldTableName}{$quote}.basecustomfield_id ";
     $sql .= "where {$quote}{$dataAttributeColumnName}{$quote} = {$id} ";
     $sql .= "and {$quote}{$valueAttributeColumnName}{$quote} = 'B'";
     $this->assertEquals(1, count(ZurmoRedBean::getCol($sql)));
     $sql = "select {$quote}{$customFieldTableName}{$quote}.id from {$quote}{$customFieldTableName}{$quote} ";
     $sql .= "left join {$quote}{$baseCustomFieldTableName}{$quote} on ";
     $sql .= "{$quote}{$baseCustomFieldTableName}{$quote}.id = ";
     $sql .= "{$quote}{$customFieldTableName}{$quote}.basecustomfield_id ";
     $sql .= "where {$quote}{$dataAttributeColumnName}{$quote} = {$id} ";
     $sql .= "and {$quote}{$valueAttributeColumnName}{$quote} = 'C'";
     $this->assertEquals(0, count(ZurmoRedBean::getCol($sql)));
     $sql = "select {$quote}{$customFieldTableName}{$quote}.id from {$quote}{$customFieldTableName}{$quote} ";
     $sql .= "left join {$quote}{$baseCustomFieldTableName}{$quote} on ";
     $sql .= "{$quote}{$baseCustomFieldTableName}{$quote}.id = ";
     $sql .= "{$quote}{$customFieldTableName}{$quote}.basecustomfield_id ";
     $sql .= "where {$quote}{$dataAttributeColumnName}{$quote} = {$id} ";
     $sql .= "and {$quote}{$valueAttributeColumnName}{$quote} = 'E'";
     $this->assertEquals(2, count(ZurmoRedBean::getCol($sql)));
 }
コード例 #5
0
 /**
  * @depends testAttributeLabelsMergeCorrectlyWithExistingData
  */
 public function testSavingCustomFieldDataLabels()
 {
     $a = new A();
     $this->assertTrue($a->isAttribute('fruitCstm'));
     unset($a);
     $appleCustomField = new CustomField();
     $appleCustomField->value = 'apple';
     $appleCustomField->data = CustomFieldData::getByName('Fruit');
     $this->assertTrue($appleCustomField->save());
     $attributeLabels = array('en' => 'fruit');
     ModelMetadataUtil::addOrUpdateCustomFieldRelation('A', 'fruit', $attributeLabels, $appleCustomField, true, false, 'DropDown', 'Fruit', array('apple', 'grape', 'orange'), array('fr' => array('appleFr', 'grapeFr', 'orangeFr'), 'de' => array('', 'grape', '')), 'CustomField', false);
     $a = new A();
     $a->a = 1;
     $this->assertTrue($a->isAttribute('fruitCstm'));
     $this->assertTrue($a->validate());
     $this->assertEquals('apple', $a->fruitCstm->value);
     $compareData = array('fr' => array('appleFr', 'grapeFr', 'orangeFr'), 'de' => array('', 'grape', ''));
     $this->assertEquals($compareData, unserialize($a->fruitCstm->data->serializedLabels));
     unset($a);
     ModelMetadataUtil::removeAttribute('A', 'fruitCstm');
 }
コード例 #6
0
 public function save($runValidation = true, array $attributeNames = null)
 {
     AuditUtil::throwNotSupportedExceptionIfNotCalledFromAnItem();
     return parent::save($runValidation, $attributeNames);
 }