public function checkPostFieldData($data, &$error = null, $entry_id = null) { if (isset($data['entry']) and is_array($data['entry'])) { $entryManager = new EntryManager(Symphony::Engine()); $fieldManager = new FieldManager(Symphony::Engine()); $field = $fieldManager->fetch($this->get('linked_field_id')); $field_id = $this->get('id'); $status = self::__OK__; $handled_entries = array(); self::$errors[$field_id] = array(); self::$entries[$field_id] = array(); // Create: foreach ($data['entry'] as $index => $entry_data) { $existing_id = null; // Find existing entry: if ((int) $data['entry_id'][$index] > 0) { $entries = $entryManager->fetch((int) $data['entry_id'][$index], $this->get('linked_section_id')); if (isset($entries[0])) { $entry = $entries[0]; $existing_id = $entry->get('id'); } } // Skip duplicate entries: if ($existing_id != null && in_array($existing_id, $handled_entries)) { continue; } // Create a new entry: if ($existing_id == null) { $entry = $entryManager->create(); $entry->set('section_id', $this->get('linked_section_id')); $entry->set('author_id', isset(Symphony::Engine()->Author) ? Symphony::Engine()->Author->get('id') : 1); $entry->set('creation_date', DateTimeObj::get('Y-m-d H:i:s')); $entry->set('creation_date_gmt', DateTimeObj::getGMT('Y-m-d H:i:s')); $entry->assignEntryId(); } // Append correct linked data: $existing_data = $entry->getData($this->get('linked_field_id')); $existing_entries = array(); if (isset($existing_data['linked_entry_id'])) { if (!is_array($existing_data['linked_entry_id'])) { $existing_entries[] = $existing_data['linked_entry_id']; } else { foreach ($existing_data['linked_entry_id'] as $linked_entry_id) { $existing_entries[] = $linked_entry_id; } } } if (!in_array($entry_id, $existing_entries)) { $existing_entries[] = $entry_id; } $entry_data[$field->get('element_name')] = $existing_entries; // Validate: if (__ENTRY_FIELD_ERROR__ == $entry->checkPostData($entry_data, $errors)) { self::$errors[$field_id][$index] = $errors; $status = self::__INVALID_FIELDS__; } if (__ENTRY_OK__ != $entry->setDataFromPost($entry_data, $error)) { $status = self::__INVALID_FIELDS__; } // Cleanup dud entry: if ($existing_id == null and $status != self::__OK__) { $existing_id = $entry->get('id'); $entry->set('id', 0); Symphony::Database()->delete('tbl_entries', " `id` = '{$existing_id}' "); } self::$entries[$field_id][$index] = $entry; $handled_entries[] = $entry->get('id'); } return $status; } return parent::checkPostFieldData($data, $error, $entry_id); }
public function checkPostFieldData($data, &$message, $entry_id = null) { $message = null; if (!is_array($data)) { $data = array($data); } $available_codes = $this->get('available_codes'); $not_allowed = array(); foreach ($data as $code) { if (!in_array($code, $available_codes)) { $not_allowed[] = $code; } } if (!empty($not_allowed)) { $msg = array(); $options = Extension_Languages::findOptions(); foreach ($not_allowed as $code) { foreach ($options as $details) { if ($details[0] == $code) { $msg[] = $details[2]; break; } } } $message = __('Languages `%s` are not allowed.', array(implode(', ', $msg))); return self::__INVALID_FIELDS__; } return parent::checkPostFieldData($data, $message, $entry_id); }
/** * @see http://symphony-cms.com/learn/api/2.3/toolkit/field/#checkPostFieldData */ public function checkPostFieldData($data, &$message, $entry_id = null) { if (!is_array($data)) { $data = array($data); } $data = array_filter($data); $status = parent::checkPostFieldData($data, $message, $entry_id); if ($status != self::__OK__) { return $status; } if (empty($data) || !is_array($data)) { return self::__OK__; } if ($this->get('allow_multiple') == 0 && count($data) > 1) { $message = __("'%s' allows single item only.", array($this->get('label'))); return self::__INVALID_FIELDS__; } return self::__OK__; }
public function checkPostFieldData($data, &$message, $entry_id = null) { $field_id = $this->get('id'); $entry_id = (int) $entry_id; if (!in_array($data, array_keys($this->_states)) and !empty($data)) { $message = "Invalid status given."; return self::__INVALID_FIELDS__; } return parent::checkPostFieldData($data, $message, $entry_id); }
public function checkPostFieldData($data, &$message, $entry_id = null) { return Field::checkPostFieldData($data, $message, $entry_id); }