danielebarchiesi@0: t("Taxonomy term: ID"), danielebarchiesi@0: // keyword to use for %substitution danielebarchiesi@0: 'keyword' => 'term', danielebarchiesi@0: 'description' => t('Creates a single taxonomy term from a taxonomy ID or taxonomy term name.'), danielebarchiesi@0: 'context' => 'ctools_term_context', danielebarchiesi@0: 'default' => array('input_form' => 'tid', 'breadcrumb' => TRUE, 'transform' => FALSE), danielebarchiesi@0: 'settings form' => 'ctools_term_settings_form', danielebarchiesi@0: 'placeholder form' => 'ctools_term_ctools_argument_placeholder', danielebarchiesi@0: 'breadcrumb' => 'ctools_term_breadcrumb', danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Discover if this argument gives us the term we crave. danielebarchiesi@0: */ danielebarchiesi@0: function ctools_term_context($arg = NULL, $conf = NULL, $empty = FALSE) { danielebarchiesi@0: // If unset it wants a generic, unfilled context. danielebarchiesi@0: if ($empty) { danielebarchiesi@0: return ctools_context_create_empty('entity:taxonomy_term'); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: if (is_object($arg)) { danielebarchiesi@0: $term = $arg; danielebarchiesi@0: } danielebarchiesi@0: else { danielebarchiesi@0: switch ($conf['input_form']) { danielebarchiesi@0: case 'tid': danielebarchiesi@0: default: danielebarchiesi@0: if (!is_numeric($arg)) { danielebarchiesi@0: return FALSE; danielebarchiesi@0: } danielebarchiesi@0: $term = taxonomy_term_load($arg); danielebarchiesi@0: break; danielebarchiesi@0: danielebarchiesi@0: case 'term': danielebarchiesi@0: if (!empty($conf['transform'])) { danielebarchiesi@0: $arg = strtr($arg, '-', ' '); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: $terms = taxonomy_get_term_by_name($arg); danielebarchiesi@0: danielebarchiesi@0: $conf['vids'] = is_array($conf['vids']) ? array_filter($conf['vids']) : NULL; danielebarchiesi@0: if ((count($terms) > 1) && isset($conf['vids'])) { danielebarchiesi@0: foreach ($terms as $potential) { danielebarchiesi@0: foreach ($conf['vids'] as $vid => $active) { danielebarchiesi@0: if ($active && $potential->vid == $vid) { danielebarchiesi@0: $term = $potential; danielebarchiesi@0: // break out of the foreaches AND the case danielebarchiesi@0: break 3; danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: $term = array_shift($terms); danielebarchiesi@0: break; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: if (empty($term)) { danielebarchiesi@0: return NULL; danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: if (!empty($conf['vids']) && array_filter($conf['vids']) && empty($conf['vids'][$term->vid])) { danielebarchiesi@0: return NULL; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: $context = ctools_context_create('entity:taxonomy_term', $term); danielebarchiesi@0: $context->original_argument = $arg; danielebarchiesi@0: return $context; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Settings form for the argument danielebarchiesi@0: */ danielebarchiesi@0: function ctools_term_settings_form(&$form, &$form_state, $conf) { danielebarchiesi@0: // @todo allow synonym use like Views does. danielebarchiesi@0: $form['settings']['input_form'] = array( danielebarchiesi@0: '#title' => t('Argument type'), danielebarchiesi@0: '#type' => 'radios', danielebarchiesi@0: '#options' => array('tid' => t('Term ID'), 'term' => t('Term name')), danielebarchiesi@0: '#default_value' => $conf['input_form'], danielebarchiesi@0: '#prefix' => '