/** * Creates the model * * @return \MUtil_Model_ModelAbstract */ protected function createModel() { // Replace two checkboxes with on radio button control $this->model->set('ggp_staff_members', 'elementClass', 'Hidden'); $this->model->setOnSave('ggp_staff_members', array($this, 'saveIsStaff')); $this->model->set('ggp_respondent_members', 'elementClass', 'Hidden'); $this->model->setOnSave('ggp_respondent_members', array($this, 'saveIsRespondent')); $options = array('1' => $this->model->get('ggp_staff_members', 'label'), '2' => $this->model->get('ggp_respondent_members', 'label')); $this->model->set('staff_respondent', 'label', $this->_('Can be assigned to'), 'elementClass', 'Radio', 'multiOptions', $options, 'order', $this->model->getOrder('ggp_staff_members') + 1); $this->model->setOnLoad('staff_respondent', array($this, 'loadStaffRespondent')); return $this->model; }
/** * * @param string $trackingField The field that stores the tracking value * @param string $trackedField The field whose changing is tracked * @param string $oldValueField Optional, the field to store a copy of the original value in */ public function apply($trackingField, $trackedField, $oldValueField = null) { if (null === $oldValueField) { // Defautl name $oldValueField = self::OLD_FIELD_PREFIX . $trackedField; // Check if a fields already existed if (method_exists($this->_model, 'getKeyCopyName')) { $copyName = $this->_model->getKeyCopyName($trackedField); if ($this->_model->has($copyName)) { $oldValueField = $copyName; } } } if (!$this->_model->has($oldValueField)) { $this->_model->set($oldValueField, 'elementClass', 'Hidden', __CLASS__, $trackedField); $this->_model->setOnLoad($oldValueField, array($this, 'loadOldValue')); } if (!$this->_model->has($trackingField)) { // Only load the original value and ste the original result when it was not already in the model $this->_model->setAutoSave($trackingField); // $this->_model->setOnLoad($trackingField, $this->_unchangedValue); } $this->_model->set($trackingField, __CLASS__, array($trackedField, $oldValueField)); $this->_model->setOnSave($trackingField, array($this, 'saveValue')); // Store the extra hidden fields needed $hiddenFields = $this->_model->getMeta(self::HIDDEN_FIELDS, array()); $hiddenFields[] = $oldValueField; $this->_model->setMeta(self::HIDDEN_FIELDS, $hiddenFields); // Make sure the fields are in the result set $this->_model->get($trackedField); $this->_model->get($trackingField); $this->_model->get($oldValueField); }
/** * Use this function for a default application of this type to the model * * @param \MUtil_Model_ModelAbstract $model * @param string $valueField The field containing the value to be encrypted * #param string $methodField the field storing the method of encryption * @return \Gems_Model_Type_EncryptedField (continuation pattern) */ public function apply(\MUtil_Model_ModelAbstract $model, $valueField, $methodField) { $this->findValue[$methodField] = $valueField; $model->setSaveWhenNotNull($valueField); $model->setOnLoad($valueField, array($this, 'loadValue')); $model->setOnSave($valueField, array($this, 'saveValue')); // Only hidden to make sure onSave's are triggered $model->set($methodField, 'elementClass', 'hidden'); $model->setOnLoad($methodField, 'default'); // Yes you can set this to a constant $model->setSaveWhen($methodField, array($this, 'whenEncryption')); $model->setOnSave($methodField, array($this, 'saveEncryption')); if ($model instanceof \MUtil_Model_DatabaseModelAbstract) { $model->setOnTextFilter($valueField, false); $model->setOnTextFilter($methodField, false); } return $this; }
/** * Use this function for a default application of this type to the model * * @param \MUtil_Model_ModelAbstract $model * @param string $name The field to set the seperator character * @return \MUtil_Model_Type_ConcatenatedRow (continuation pattern) */ public function apply(\MUtil_Model_ModelAbstract $model, $name) { $model->set($name, 'formatFunction', array($this, 'format')); $model->setOnLoad($name, array($this, 'loadValue')); $model->setOnSave($name, array($this, 'saveValue')); if ($model instanceof \MUtil_Model_DatabaseModelAbstract) { $model->setOnTextFilter($name, array($this, 'textFilter')); } $this->options = $model->get($name, 'multiOptions'); return $this; }
/** * Use this function for a default application of this type to the model * * @param \MUtil_Model_ModelAbstract $model * @param string $name The field to set the seperator character * @param boolean $detailed When true show detailed information * @return \MUtil\Model\Type\JsonData (continuation pattern) */ public function apply(\MUtil_Model_ModelAbstract $model, $name, $detailed) { if ($detailed) { $formatFunction = 'formatDetailed'; } else { $formatFunction = 'formatTable'; } $model->set($name, 'formatFunction', array($this, $formatFunction)); $model->setOnLoad($name, array($this, 'loadValue')); $model->setOnSave($name, array($this, 'saveValue')); }