You are here

function node_breadcrumb_admin_settings in Node breadcrumb 6

1 string reference to 'node_breadcrumb_admin_settings'
node_breadcrumb_menu in ./node_breadcrumb.module

File

./node_breadcrumb.module, line 154

Code

function node_breadcrumb_admin_settings($dummy = NULL, $rid = NULL) {
  $weight_delta = max(5, db_result(db_query("select max(abs(weight)) from {node_breadcrumb_rule}")) + 1);
  if (module_exists('taxonomy')) {
    $vocabularies = taxonomy_get_vocabularies();
  }
  $types = node_get_types();

  // add rule
  $form['add'] = _node_breadcrumb_rule_form(t('Add rule'), NULL, NULL, NULL, NULL, 0, $weight_delta, t('Add rule'));

  // edit rule
  if ($rid) {
    $db_rule = db_query("select * from {node_breadcrumb_rule} where rid=%d", $rid);
    $rule = db_fetch_object($db_rule);
    if ($rule->rid) {
      $form['edit'] = _node_breadcrumb_rule_form(t('Edit rule'), $rule->node_type, array(
        $rule->tid1,
        $rule->tid2,
      ), $rule->condition, $rule->mid, $rule->weight, $weight_delta, t('Save rule'));
      $form['edit']['rid'] = array(
        '#type' => 'hidden',
        '#value' => $rid,
      );
      $form['edit']['cancel'] = array(
        '#type' => 'submit',
        '#value' => t('Cancel'),
      );
      unset($form['add']);
    }
  }

  // rules
  $db_rules = db_query("select * from {node_breadcrumb_rule} order by weight, rid");
  while ($rule = db_fetch_object($db_rules)) {
    $menu_item = menu_link_load($rule->mid);
    $terms = array();
    if (module_exists('taxonomy')) {
      if ($rule->tid1) {
        $term = taxonomy_get_term($rule->tid1);
        $terms[] = $rule->tid1 > 0 ? l($term->name, "taxonomy/term/{$rule->tid1}") : t("any of") . " <" . $vocabularies[-$rule->tid1]->name . ">";
      }
      if ($rule->tid2) {
        $term = taxonomy_get_term($rule->tid2);
        $terms[] = l($term->name, "taxonomy/term/{$rule->tid2}");
      }
    }
    unset($condition);
    if ($rule->condition != '') {
      $condition = check_plain($rule->condition);
      $js_condition = check_plain(str_replace("'", "\\'", $rule->condition));
      $condition = "<a title=\"{$condition}\" href=\"javascript:prompt('" . t('Condition') . "','{$js_condition}');void(0);\">PHP</a>";
    }
    $rids[$rule->rid] = '';
    $form['rules']['node_type'][$rule->rid] = array(
      '#value' => $types[$rule->node_type]->name,
    );
    $form['rules']['tid'][$rule->rid] = array(
      '#value' => empty($terms) ? "<" . t('none') . ">" : join(", ", $terms),
    );
    $form['rules']['condition'][$rule->rid] = array(
      '#value' => $condition,
    );
    $form['rules']['mid'][$rule->rid] = array(
      '#value' => l($menu_item['title'], $menu_item['href']),
    );
    $form['rules']['weight']["weight_{$rule->rid}"] = array(
      '#type' => 'weight',
      '#default_value' => $rule->weight,
      '#required' => true,
      '#delta' => $weight_delta,
    );
    $form['rules']['edit'][$rule->rid] = array(
      '#value' => l(t('edit'), "admin/settings/node_breadcrumb/{$rule->rid}"),
    );
  }
  $form['rules']['delete'] = array(
    '#type' => 'checkboxes',
    '#options' => $rids,
  );
  if ($form['rules']['node_type']) {
    $form['rules']['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Delete rule'),
    );
    $form['rules']['save'] = array(
      '#type' => 'submit',
      '#value' => t('Save'),
    );
  }
  return $form;
}