private static function tryAddCol($model, $col, $type) { if (!Fields::model()->findByAttributes(array('fieldName' => $col, 'modelName' => get_class($model)))) { $field = new Fields(); $field->setAttributes(array('modelName' => get_class($model), 'fieldName' => $col, 'attributeLabel' => $col, 'modified' => '1', 'custom' => 1, 'type' => $type, 'required' => '0', 'uniqueConstraint' => '0', 'safe' => '1', 'readOnly' => '0', 'linkType' => NULL, 'searchable' => '0', 'relevance' => 'Low', 'isVirtual' => '0', 'defaultValue' => NULL, 'keyType' => '', 'data' => NULL), false); if (!$field->save()) { AuxLib::debugLogR('$col = '); AuxLib::debugLogR($col); AuxLib::debugLogR($field->getErrors()); } } }
/** * General field management. * * This action serves as the landing page for all of the custom field related * actions within the software. */ public function actionManageFields() { // New model for the form: $model = new Fields(); // Set up grid view: $searchModel = new Fields('search'); $criteria = new CDbCriteria(); $criteria->addCondition('modified=1'); $searchModel->setAttributes(isset($_GET['Fields']) ? $_GET['Fields'] : array(), false); foreach ($searchModel->attributes as $name => $value) { $criteria->compare($name, $value); } $pageSize = Profile::getResultsPerPage(); $dataProvider = new SmartActiveDataProvider('Fields', array('criteria' => $criteria, 'pagination' => array('pageSize' => Profile::getResultsPerPage()))); // Set up fields list $fields = Fields::model()->findAllByAttributes(array('custom' => '1')); $arr = array(); foreach ($fields as $field) { $arr[$field->id] = $field->attributeLabel; } $this->render('manageFields', array('dataProvider' => $dataProvider, 'model' => $model, 'searchModel' => $searchModel, 'fields' => $arr)); }
public function testCheckConversionCompatibility() { $field = Fields::model()->findByAttributes(array('modelName' => 'X2Leads', 'fieldName' => 'description')); $field->type = 'boolean'; $this->assertSaves($field); Yii::app()->cache->flush(); X2Leads::model()->resetFieldsPropertyCache(); // ensure that conversion fails due to field type mismatch $lead = $this->x2Leads('1'); $leadAttrs = $lead->getAttributes(); $this->assertFalse($lead->checkConversionCompatibility('Contacts')); $this->assertFalse($lead->checkConversionCompatibility('Opportunity')); self::restoreFields(); $this->assertTrue($lead->checkConversionCompatibility('Contacts')); $this->assertTrue($lead->checkConversionCompatibility('Opportunity')); // ensure that conversion fails due presence of extra field $extraField = new Fields(); $extraField->setAttributes(array('modelName' => 'X2Leads', 'fieldName' => 'extraField', 'type' => 'boolean', 'attributeLabel' => 'Extra Field')); $this->assertSaves($extraField); Yii::app()->db->schema->refresh(); $lead->refreshMetaData(); Yii::app()->cache->flush(); X2Leads::model()->resetFieldsPropertyCache(); $lead->c_extraField = true; $this->assertFalse($lead->checkConversionCompatibility('Contacts')); $this->assertFalse($lead->checkConversionCompatibility('Opportunity')); self::restoreFields(); $lead->refresh(); $this->assertTrue($lead->checkConversionCompatibility('Contacts')); $this->assertTrue($lead->checkConversionCompatibility('Opportunity')); }