/** * Returns an array of all model classes (associated with some module) which have this * behavior * * @return <array of strings> */ public static function getModelsWhichSupportQuickCreate($includeActions = false) { if (!isset(self::$_modelsWhichSupportQuickCreate)) { self::$_modelsWhichSupportQuickCreate = array_diff(array_keys(X2Model::getModelNames()), array('Docs', 'Groups', 'Campaign', 'Media', 'Quote', 'BugReports')); self::$_modelsWhichSupportQuickCreate[] = 'Actions'; } $modelNames = self::$_modelsWhichSupportQuickCreate; if (!$includeActions) { array_pop($modelNames); } return $modelNames; }
protected function validateValue(CModel $object, $value, $attribute) { if (!is_string($value) || !in_array($value, array_keys(X2Model::getModelNames())) && (!$this->includeActions || $value !== 'Actions')) { $this->addError($object, $attribute, Yii::t('app', 'Invalid record type')); } }
/** * @return array names of models which support email templates */ public static function modelsWhichSupportEmailTemplates() { // get all x2model types not in blacklist return array_diff_key(X2Model::getModelNames(), array_flip(array('Actions', 'Quote', 'Product', 'Opportunity', 'Campaign'))); }
/** * For each child of X2Model, ensure that filters and sort order get saved in session correctly * and that analogous methods in ERememberFiltersBehavior and SmartDataProviderBehavior behave * the same */ public function testX2ModelSessionSettings() { $models = X2Model::getModelNames(); unset($models['EmailInboxes']); foreach ($models as $class => $title) { $_SESSION = array(); X2_TEST_DEBUG_LEVEL > 1 && println('testing sort for ' . $class); $uid = rand(); $_GET["{$class}_sort"] = 'test'; $_GET[$class] = array('id' => 0); $searchModel = new $class('search'); $dataProvider = $searchModel->search(); $sort = $searchModel->asa('ERememberFiltersBehavior')->getSetting('sort'); $filters = $searchModel->asa('ERememberFiltersBehavior')->getSetting('filters'); $sort2 = $dataProvider->asa('SmartDataProviderBehavior')->getSetting('sort'); $filters2 = $dataProvider->asa('SmartDataProviderBehavior')->getSetting('filters'); $this->assertEquals($filters, $_GET[$class]); $this->assertEquals($filters, $filters2); $this->assertEquals($sort, $_GET[$class . '_sort']); $this->assertEquals($sort, $sort2); } }
/** * Rules for saving a field. * * See the following MySQL documentation pages for more info on length * restrictions and naming requirements: * http://dev.mysql.com/doc/refman/5.0/en/identifiers.html * * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array(array('modelName, attributeLabel', 'length', 'max' => 250), array('fieldName', 'length', 'max' => 64), array('fieldName', 'match', 'pattern' => '/^[a-zA-Z]\\w+$/', 'message' => Yii::t('admin', 'Field name may only contain alphanumeric characters and underscores.')), array('fieldName', 'nonReserved'), array('modelName, fieldName, attributeLabel', 'required'), array('modelName', 'in', 'range' => array_keys(X2Model::getModelNames()), 'allowEmpty' => false), array('defaultValue', 'validDefault'), array('relevance', 'in', 'range' => array_keys(self::searchRelevance())), array('custom, modified, readOnly, searchable, required, uniqueConstraint', 'boolean'), array('fieldName', 'uniqueFieldName'), array('linkType', 'length', 'max' => 250), array('type', 'length', 'max' => 20), array('keyType', 'in', 'range' => array('MUL', 'UNI', 'PRI', 'FIX', 'FOR'), 'allowEmpty' => true), array('keyType', 'requiredUnique'), array('data', 'validCustom'), array('id, modelName, fieldName, attributeLabel, custom, modified, readOnly, keyType', 'safe', 'on' => 'search')); }
<?php echo $form->textField($model, 'fieldName', array('id' => 'fieldName-input')); ?> <?php echo $form->error($model, 'fieldName'); ?> </div> <?php } else { ?> <div class="row"> <?php echo $form->labelEx($model, 'modelName'); ?> <?php echo $form->dropDownList($model, 'modelName', X2Model::getModelNames(), array('empty' => Yii::t('admin', 'Select a model'), 'id' => 'modelName-existing')); ?> <?php echo $form->error($model, 'modelName'); ?> </div> <div class="row"> <?php echo $form->labelEx($model, 'fieldName'); ?> <?php $modelSet = !empty($model->modelName); $fieldList = array(); $fieldOptions = array(); $customOrMod = false;
/** * Responds with a JSON-encoded list of model classes. * * @param integer $partialSupport 1 to include partially-supported models, * 0 to include only fully-supported models. */ public function actionModels($partialSupport = 1) { // To obtain all models: iterate through modules $modelNames = X2Model::getModelNames(); // Partially-supported models $partial = array('Actions' => Yii::t('app', 'Actions'), 'Docs' => Yii::t('app', 'Docs'), 'Groups' => Yii::t('app', 'Groups'), 'Media' => Yii::t('app', 'Media'), 'Quote' => Yii::t('app', 'Quotes'), 'X2List' => Yii::t('app', 'Contact Lists')); if ((bool) (int) $partialSupport) { $modelNames = array_unique(array_merge($modelNames, $partial)); } else { $modelNames = array_diff($modelNames, $partial); } asort($modelNames); $models = array(); foreach ($modelNames as $modelName => $title) { $attributes = X2Model::model($modelName)->attributeNames(); $models[] = compact('modelName', 'title', 'attributes'); } $this->responseBody = $models; }