annotate sites/all/modules/ctools/plugins/access/string_equal.inc @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Plugin to provide access control/visibility based on specified context string matching user-specified string
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 $plugin = array(
danielebarchiesi@0 9 'title' => t("String: comparison"),
danielebarchiesi@0 10 'description' => t('Control access by string match.'),
danielebarchiesi@0 11 'callback' => 'ctools_string_equal_ctools_access_check',
danielebarchiesi@0 12 'settings form' => 'ctools_string_equal_ctools_access_settings',
danielebarchiesi@0 13 'summary' => 'ctools_string_equal_ctools_access_summary',
danielebarchiesi@0 14 'required context' => new ctools_context_required(t('String'), 'string'),
danielebarchiesi@0 15 'defaults' => array('operator' => '=', 'value' => '', 'case' => FALSE),
danielebarchiesi@0 16 );
danielebarchiesi@0 17
danielebarchiesi@0 18 /**
danielebarchiesi@0 19 * Settings form
danielebarchiesi@0 20 */
danielebarchiesi@0 21 function ctools_string_equal_ctools_access_settings($form, &$form_state, $conf) {
danielebarchiesi@0 22 $form['settings']['operator'] = array(
danielebarchiesi@0 23 '#type' => 'radios',
danielebarchiesi@0 24 '#title' => t('Operator'),
danielebarchiesi@0 25 '#options' => array(
danielebarchiesi@0 26 '=' => t('Equal'),
danielebarchiesi@0 27 '!=' => t('Not equal'),
danielebarchiesi@0 28 'regex' => t('Regular expression'),
danielebarchiesi@0 29 '!regex' => t('Not equal to regular expression'),
danielebarchiesi@0 30 ),
danielebarchiesi@0 31 '#default_value' => $conf['operator'],
danielebarchiesi@0 32 '#description' => t('If using a regular expression, you should enclose the pattern in slashes like so: <em>/foo/</em>. If you need to compare against slashes you can use another character to enclose the pattern, such as @. See <a href="http://www.php.net/manual/en/reference.pcre.pattern.syntax.php">PHP regex documentation</a> for more.'),
danielebarchiesi@0 33 );
danielebarchiesi@0 34
danielebarchiesi@0 35 $form['settings']['value'] = array(
danielebarchiesi@0 36 '#type' => 'textfield',
danielebarchiesi@0 37 '#title' => t('String'),
danielebarchiesi@0 38 '#default_value' => $conf['value'],
danielebarchiesi@0 39 );
danielebarchiesi@0 40
danielebarchiesi@0 41 $form['settings']['case'] = array(
danielebarchiesi@0 42 '#type' => 'checkbox',
danielebarchiesi@0 43 '#title' => t('Case sensitive'),
danielebarchiesi@0 44 '#default_value' => $conf['case'],
danielebarchiesi@0 45 );
danielebarchiesi@0 46 return $form;
danielebarchiesi@0 47 }
danielebarchiesi@0 48
danielebarchiesi@0 49 /**
danielebarchiesi@0 50 * Check for access
danielebarchiesi@0 51 */
danielebarchiesi@0 52 function ctools_string_equal_ctools_access_check($conf, $context) {
danielebarchiesi@0 53 if (empty($context) || empty($context->data)) {
danielebarchiesi@0 54 $string = '';
danielebarchiesi@0 55 }
danielebarchiesi@0 56 else {
danielebarchiesi@0 57 $string = $context->data;
danielebarchiesi@0 58 }
danielebarchiesi@0 59
danielebarchiesi@0 60 $value = $conf['value'];
danielebarchiesi@0 61 if (empty($conf['case'])) {
danielebarchiesi@0 62 $string = drupal_strtolower($string);
danielebarchiesi@0 63 $value = drupal_strtolower($value);
danielebarchiesi@0 64 }
danielebarchiesi@0 65
danielebarchiesi@0 66 switch ($conf['operator']) {
danielebarchiesi@0 67 case '=':
danielebarchiesi@0 68 return $string === $value;
danielebarchiesi@0 69 case '!=':
danielebarchiesi@0 70 return $string !== $value;
danielebarchiesi@0 71 case 'regex':
danielebarchiesi@0 72 return preg_match($value, $string);
danielebarchiesi@0 73 case '!regex':
danielebarchiesi@0 74 return !preg_match($value, $string);
danielebarchiesi@0 75 }
danielebarchiesi@0 76 }
danielebarchiesi@0 77
danielebarchiesi@0 78 /**
danielebarchiesi@0 79 * Provide a summary description based upon the specified context
danielebarchiesi@0 80 */
danielebarchiesi@0 81 function ctools_string_equal_ctools_access_summary($conf, $context) {
danielebarchiesi@0 82 $values = array('@identifier' => $context->identifier, '@value' => $conf['value']);
danielebarchiesi@0 83 switch ($conf['operator']) {
danielebarchiesi@0 84 case '=':
danielebarchiesi@0 85 return t('@identifier is "@value"', $values);
danielebarchiesi@0 86 case '!=':
danielebarchiesi@0 87 return t('@identifier is not "@value"', $values);
danielebarchiesi@0 88 case 'regex':
danielebarchiesi@0 89 return t('@identifier matches "@value"', $values);
danielebarchiesi@0 90 case '!regex':
danielebarchiesi@0 91 return t('@identifier does not match "@value"', $values);
danielebarchiesi@0 92 }
danielebarchiesi@0 93 }
danielebarchiesi@0 94