function entityconnect_add_edit_button_submit in Entity connect 7.2
Same name and namespace in other branches
- 7 includes/entityconnect.form.inc \entityconnect_add_edit_button_submit()
Call when a new entity is to be added or edited.
We cache the current state and form and redirect to the add or edit page with an append build_cached_id.
2 string references to 'entityconnect_add_edit_button_submit'
- entityconnect_add_form_element_edit in includes/
entityconnect.form.inc - Here we attach a "Edit" submit button.
- entityconnect_add_form_element_new in includes/
entityconnect.form.inc - Here we attach a "Add" submit button.
File
- includes/
entityconnect.form.inc, line 285 - Handles all form alters and submit functions for entityconnect.
Code
function entityconnect_add_edit_button_submit(&$form, &$form_state) {
$cache_id = "entityconnect-" . $form['#build_id'];
$field = $form_state['clicked_button']['#field'];
$key = $form_state['clicked_button']['#key'];
$entity_type = $form_state['clicked_button']['#entity_type_target'];
$acceptable_types = isset($form_state['clicked_button']['#acceptable_types']) ? $form_state['clicked_button']['#acceptable_types'] : NULL;
$field_info = field_info_field($field);
// Get the list of all parents element for the clicked button.
$parents = isset($form_state['clicked_button']['#parents']) ? $form_state['clicked_button']['#parents'] : NULL;
$key_exists = NULL;
$field_container = entityconnect_array_get_nested_value($form_state['input'], $parents, $key_exists);
// Initialize target_id.
$target_id = '';
if ($field_info['module'] == 'entityreference') {
if ($key_exists) {
if (isset($field_container['_weight'])) {
$target_id = isset($field_container['target_id']) ? $field_container['target_id'] : '';
}
elseif (is_array($field_container)) {
foreach ($field_container as $key => $value) {
if (is_array($value)) {
foreach ($value as $key2 => $value2) {
if (!is_null($value2)) {
$target_id[$key2] = $value2;
}
}
}
else {
$target_id = $value;
}
}
}
}
if (is_array($target_id) && count($target_id) == 1) {
$target_id = array_shift($target_id);
}
// TODO : Find the original problem of the entity connect use with
// Field Collection.
if (!empty($target_id) && !is_array($target_id)) {
// Take "label (entity id)', match the id from parenthesis.
if (preg_match("/.+\\((\\d+)\\)/", $target_id, $matches)) {
$target_id = $matches[1];
}
}
}
elseif ($field_info['module'] == 'node_reference') {
if ($key_exists) {
$target_id = isset($field_container['nid']) ? $field_container['nid'] : '';
if ($target_id == '' && is_array($field_container)) {
foreach ($field_container as $key => $value) {
if (is_array($value)) {
foreach ($value as $key2 => $value2) {
if (!is_null($value2)) {
$target_id[$key2] = $value2;
}
}
}
else {
$target_id = $value;
}
}
}
}
// TODO : Find the original problem of the entity connect use with
// Field Collection.
if (!empty($target_id)) {
// Take "label (entity id)', match the id from parenthesis.
if (preg_match("/.+\\[nid:(\\d+)\\]/", $target_id, $matches)) {
$target_id = $matches[1];
}
}
}
elseif ($field_info['module'] == 'user_reference') {
if ($key_exists) {
$target_id = isset($field_container['uid']) ? $field_container['uid'] : '';
if ($target_id == '' && is_array($field_container)) {
foreach ($field_container as $key => $value) {
if (is_array($value)) {
foreach ($value as $key2 => $value2) {
if (!is_null($value2)) {
$target_id[$key2] = $value2;
}
}
}
else {
$target_id = $value;
}
}
}
}
// TODO : Find the original problem of the entity connect use with
// Field Collection.
if (!empty($target_id)) {
// Take "label (entity id)', match the id from parenthesis.
if (preg_match("/.+\\[uid:(\\d+)\\]/", $target_id, $matches)) {
$target_id = $matches[1];
}
}
}
// If no entity has been chosen to edit, redirect to the original node.
if (!$form_state['clicked_button']['#add_child'] && $target_id == '_none') {
drupal_set_message(t('You must select at least one entity to update.'), 'error');
$form_state['redirect'] = $_GET['q'];
return;
}
$params = array();
foreach ($_GET as $key => $value) {
if ($key == 'q') {
continue;
}
$params[$key] = $value;
}
$data = array(
'form' => $form,
'form_state' => $form_state,
'dest' => $_GET['q'],
'params' => $params,
'field' => $field,
'field_info' => $field_info,
'key' => $key,
'add_child' => $form_state['clicked_button']['#add_child'],
'target_id' => $target_id,
'target_entity_type' => $entity_type,
'acceptable_types' => $acceptable_types,
'field_container' => $field_container,
'field_container_key_exists' => $key_exists,
);
drupal_alter('entityconnect_add_edit_button_submit', $data);
entityconnect_cache_set($cache_id, $data);
unset($_GET['destination']);
if ($data['add_child']) {
$form_state['redirect'] = "admin/entityconnect/add/{$cache_id}";
}
else {
if ($data['target_id']) {
$form_state['redirect'] = "admin/entityconnect/edit/{$cache_id}";
}
}
}