You are here

function rules_admin_form_add_condition in Rules 6

Returns the form for the first condition add page

File

rules_admin/rules_admin.rule_forms.inc, line 320

Code

function rules_admin_form_add_condition(&$form_state, &$element, $parent) {
  if (!isset($parent['#type']) || isset($parent['#logical_op']) && $parent['#logical_op']) {
    $vars = $form_state['proxy']
      ->get_available_variables(0);
    $all_conditions = rules_get_conditions();
    $satisfied_conditions = rules_admin_filter_info($vars, $all_conditions);
    $unsatisfied_conditions = array_filter(array_diff_assoc($all_conditions, $satisfied_conditions), 'rules_admin_element_filter');
    $form['name'] = array(
      '#type' => 'select',
      '#title' => t('Select the condition to add'),
      '#options' => rules_admin_get_grouped_labels($satisfied_conditions),
      '#required' => TRUE,
    );
    if (!empty($unsatisfied_conditions)) {

      // Hold all the actions that are disabled because argument(s) are missing.
      $form['unsatisfied'] = array(
        '#type' => 'fieldset',
        '#title' => format_plural(count($unsatisfied_conditions), '1 condition is not configurable', '@count conditions are not configurable'),
        '#description' => t("The following conditions aren't available in this context because they require arguments that don't exist in your rule. If you want to use any of these conditions, you must first add some action that adds variables of this kind in a previous rule, or have an event that passes the required variables."),
        '#collapsible' => TRUE,
        '#collapsed' => TRUE,
      );
      $form['unsatisfied']['items'] = array(
        '#type' => 'item',
        '#unsatisfied_grouped_options' => $unsatisfied_conditions,
        '#theme' => 'rules_admin_unsatisfied_elements',
      );
    }
    $form['submit'] = array(
      '#type' => 'submit',
      '#weight' => 10,
      '#value' => t('Next'),
      '#submit' => array(
        'rules_admin_form_add_submit',
      ),
    );
    return $form;
  }
}