Example #1
0
 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);
 }
Example #2
0
 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);
 }
Example #5
0
 public function checkPostFieldData($data, &$message, $entry_id = null)
 {
     return Field::checkPostFieldData($data, $message, $entry_id);
 }