Merge pull request #8217 from colemanw/role
[civicrm-core.git] / CRM / Utils / Rule.php
index cc7dff3e1ede1b0f01e409590d2c2519a0c24a39..08cbcc4a0b4f7278231c2fdee36e7e58311f3209 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | CiviCRM version 4.7                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2015                                |
+ | Copyright CiviCRM LLC (c) 2004-2016                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -28,7 +28,7 @@
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2015
+ * @copyright CiviCRM LLC (c) 2004-2016
  */
 
 require_once 'HTML/QuickForm/Rule/Email.php';
@@ -87,6 +87,62 @@ class CRM_Utils_Rule {
     return TRUE;
   }
 
+  /**
+   * @param $str
+   *
+   * @return bool
+   */
+  public static function mysqlColumnNameLoose($str) {
+    //  check the length.
+    // This check can be incorrect for the <table>.<column> format, which can be
+    // a problem.
+    if (empty($str) || strlen($str) > 64) {
+      return FALSE;
+    }
+
+    return TRUE;
+  }
+
+  /**
+   * Validate an acceptable column name for sorting results.
+   *
+   * @param $str
+   *
+   * @return bool
+   */
+  public static function mysqlColumnName($str) {
+    // Check the length.
+    if (empty($str) || strlen($str) > 64) {
+      return FALSE;
+    }
+
+    // Make sure it only contains valid characters (alphanumeric and underscores).
+    //
+    // MySQL permits column names that don't match this (eg containing spaces),
+    // but CiviCRM won't create those ...
+    if (!preg_match('/^[\w_]+(\.[\w_]+)?$/i', $str)) {
+      return FALSE;
+    }
+
+    return TRUE;
+  }
+
+  /**
+   * Validate that a string is ASC or DESC.
+   *
+   * Empty string should be treated as invalid and ignored => default = ASC.
+   *
+   * @param $str
+   * @return bool
+   */
+  public static function mysqlOrderByDirection($str) {
+    if (!preg_match('/^(asc|desc)$/i', $str)) {
+      return FALSE;
+    }
+
+    return TRUE;
+  }
+
   /**
    * @param $str
    *