/** * 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; }
/** * 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; }