123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- /**
- * Form builder to create or edit presets.
- */
- function cer_form(array $form, array &$form_state, CerPreset $preset, $do = 'edit', $entity_type = NULL) {
- field_attach_form('cer', $preset, $form, $form_state);
- $form['cer_right']['#id'] = 'edit-cer-right';
- $form['cer_left'][LANGUAGE_NONE]['#ajax'] = array(
- 'callback' => 'cer_update_right',
- 'wrapper' => $form['cer_right']['#id'],
- );
- $form['actions'] = array(
- 'submit' => array(
- '#type' => 'submit',
- '#value' => t('Save'),
- ),
- '#weight' => 10,
- );
- return $form;
- }
- function cer_form_submit(array &$form, array &$form_state) {
- $preset = entity_ui_form_submit_build_entity($form, $form_state)->save();
- drupal_set_message(t('The preset has been saved.'));
- $form_state['redirect'] = 'admin/config/content/cer';
- }
- function cer_update_right(array &$form, array &$form_state) {
- $preset = $form_state['build_info']['args'][0];
- field_attach_submit('cer', $preset, $form, $form_state, array('field_name' => 'cer_left'));
- $left = $preset->wrapper->cer_left->chain->value();
- $left_identifier = $left->__toString();
- $left_re = $left->regex();
- $hierarchy = new FieldHierarchy();
- foreach (CerFieldChain::collectAll() as $chain) {
- if (preg_match($left_re, $chain->__toString()) && preg_match($chain->regex(), $left_identifier)) {
- $hierarchy->addChain($chain);
- }
- }
- $options = $hierarchy->options();
- if ($options) {
- $form['cer_right'][LANGUAGE_NONE]['#options'] = $options;
- }
- else {
- drupal_set_message(t('There are no fields which can correspond with your selection.'), 'warning');
- }
- return $form['cer_right'];
- }
- /**
- * Enables or disables a preset, depending on its current status. This callback
- * is defined by CerUIController::hook_menu().
- */
- function cer_toggle_preset(CerPreset $preset) {
- $preset->wrapper->cer_enabled->set(! $preset->wrapper->cer_enabled->value());
- $preset->save();
- drupal_goto(isset($_GET['destination']) ? $_GET['destination'] : 'admin/config/content/cer');
- }
- /**
- * Permanently inverts a preset (i.e., deletes the original). This callback
- * is defined by CerUIController::hook_menu().
- */
- function cer_invert_preset(CerPreset $original) {
- $original->invert()->save();
- $original->delete();
- drupal_goto(isset($_GET['destination']) ? $_GET['destination'] : 'admin/config/content/cer');
- }
- /**
- * Allows batch updating of existing entities.
- */
- function cer_bulk_update_form(array $form, array &$form_state) {
- $form['type'] = array(
- '#type' => 'select',
- '#title' => t('Entity type'),
- '#required' => TRUE,
- '#options' => array(),
- '#description' => t('Select the entity type that you want to update.'),
- );
- foreach (entity_get_info() as $type => $class) {
- $form['type']['#options'][$type] = $class['label'];
- }
- $form['submit'] = array(
- '#type' => 'submit',
- '#value' => t('Submit'),
- );
- return $form;
- }
- /**
- * The update form. Allows bulk updating of current entities.
- */
- function cer_bulk_update_form_submit(array $form, array &$form_state) {
- $batch = array(
- 'finished' => 'cer_batch_update_existing_finished',
- 'title' => t('Processing'),
- 'init_message' => t('Preparing to update corresponding entity references for existing entities...'),
- 'progress_message' => t('Processing entities...'),
- 'error_message' => t('Corresponding entity references - existing entity update has encountered an error.'),
- 'operations' => array(),
- );
- $entity_type = $form_state['values']['type'];
- $query = new EntityFieldQuery();
- $query->entityCondition('entity_type', $entity_type);
- if ($entity_type == 'user') {
- $query->entityCondition('entity_id', 0, '>');
- }
- $result = $query->execute();
- if (isset($result[$entity_type])) {
- foreach (array_keys($result[$entity_type]) as $entity_id) {
- $batch['operations'][] = array('cer_processing_entity', array('update', $entity_id, $entity_type));
- }
- }
- batch_set($batch);
- }
|