Esempio n. 1
0
 /**
  * Trigger called when a row is stored.
  * If we are creating a new record, and the element was set to readonly
  * then insert the users data into the record to be stored
  *
  * @param   array  &$data          Data to store
  * @param   int    $repeatCounter  Repeat group index
  *
  * @return  bool  If false, data should not be added.
  */
 public function onStoreRow(&$data, $repeatCounter = 0)
 {
     if (!parent::onStoreRow($data, $repeatCounter)) {
         return false;
     }
     $element = $this->getElement();
     $formModel = $this->getFormModel();
     $formData = $formModel->formData;
     if (FArrayHelper::getValue($formData, 'rowid', 0) == 0 && !in_array($element->name, $data)) {
         $data[$element->name] = $_SERVER['REMOTE_ADDR'];
     } else {
         $params = $this->getParams();
         if ($params->get('ip_update_on_edit', 0)) {
             $data[$element->name] = FabrikString::filteredIp();
             $data[$element->name . '_raw'] = FabrikString::filteredIp();
         }
     }
     return true;
 }
Esempio n. 2
0
 /**
  * Trigger called when a row is stored.
  * Check if new options have been added and if so store them in the element for future use.
  *
  * @param   array  &$data          Data to store
  * @param   int    $repeatCounter  Repeat group index
  *
  * @return  void
  */
 public function onStoreRow(&$data, $repeatCounter = 0)
 {
     if (!parent::onStoreRow($data, $repeatCounter)) {
         return false;
     }
     $element = $this->getElement();
     $params = $this->getParams();
     $formModel = $this->getFormModel();
     $formData = $formModel->formData;
     if ($params->get('savenewadditions') && array_key_exists($element->name . '_additions', $formData)) {
         $added = stripslashes($formData[$element->name . '_additions']);
         if (trim($added) == '') {
             return true;
         }
         $added = json_decode($added);
         $values = $this->getSubOptionValues();
         $labels = $this->getSubOptionLabels();
         $found = false;
         foreach ($added as $obj) {
             if (!in_array($obj->val, $values)) {
                 $values[] = $obj->val;
                 $found = true;
                 $labels[] = $obj->label;
             }
         }
         if ($found) {
             $opts = $params->get('sub_options');
             $opts->sub_values = $values;
             $opts->sub_labels = $labels;
             // $$$ rob don't json_encode this - the params object has its own toString() magic method
             $element->params = (string) $params;
             $element->store();
         }
     }
     return true;
 }