danielebarchiesi@0: t("String: length"), danielebarchiesi@0: 'description' => t('Control access by length of string context.'), danielebarchiesi@0: 'callback' => 'ctools_string_length_ctools_access_check', danielebarchiesi@0: 'settings form' => 'ctools_string_length_ctools_access_settings', danielebarchiesi@0: 'summary' => 'ctools_string_length_ctools_access_summary', danielebarchiesi@0: 'required context' => new ctools_context_required(t('String'), 'string'), danielebarchiesi@0: 'defaults' => array('operator' => '=', 'length' => 0), danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Settings form for the 'by role' access plugin. danielebarchiesi@0: */ danielebarchiesi@0: function ctools_string_length_ctools_access_settings($form, &$form_state, $conf) { danielebarchiesi@0: $form['settings']['operator'] = array( danielebarchiesi@0: '#type' => 'radios', danielebarchiesi@0: '#title' => t('Operator'), danielebarchiesi@0: '#options' => array( danielebarchiesi@0: '>' => t('Greater than'), danielebarchiesi@0: '>=' => t('Greater than or equal to'), danielebarchiesi@0: '=' => t('Equal to'), danielebarchiesi@0: '!=' => t('Not equal to'), danielebarchiesi@0: '<' => t('Less than'), danielebarchiesi@0: '<=' => t('Less than or equal to'), danielebarchiesi@0: ), danielebarchiesi@0: '#default_value' => $conf['operator'], danielebarchiesi@0: ); danielebarchiesi@0: $form['settings']['length'] = array( danielebarchiesi@0: '#type' => 'textfield', danielebarchiesi@0: '#title' => t('Length of string'), danielebarchiesi@0: '#size' => 3, danielebarchiesi@0: '#default_value' => $conf['length'], danielebarchiesi@0: '#description' => t('Access/visibility will be granted based on string context length.'), danielebarchiesi@0: ); danielebarchiesi@0: return $form; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Check for access. danielebarchiesi@0: */ danielebarchiesi@0: function ctools_string_length_ctools_access_check($conf, $context) { danielebarchiesi@0: if (empty($context) || empty($context->data)) { danielebarchiesi@0: $length = 0; danielebarchiesi@0: } danielebarchiesi@0: else { danielebarchiesi@0: $length = drupal_strlen($context->data); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: switch ($conf['operator']) { danielebarchiesi@0: case '<': danielebarchiesi@0: return $length < $conf['length']; danielebarchiesi@0: case '<=': danielebarchiesi@0: return $length <= $conf['length']; danielebarchiesi@0: case '==': danielebarchiesi@0: return $length == $conf['length']; danielebarchiesi@0: case '!=': danielebarchiesi@0: return $length != $conf['length']; danielebarchiesi@0: case '>': danielebarchiesi@0: return $length > $conf['length']; danielebarchiesi@0: case '>=': danielebarchiesi@0: return $length >= $conf['length']; danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Provide a summary description based upon the checked roles. danielebarchiesi@0: */ danielebarchiesi@0: function ctools_string_length_ctools_access_summary($conf, $context) { danielebarchiesi@0: return t('@identifier must be @comp @length characters', array('@identifier' => $context->identifier, '@comp' => $conf['operator'], '@length' => $conf['length'])); danielebarchiesi@0: }