Loosen the MysqlColumnNameOrAlias validation.
authorMattias Michaux <mattias.michaux@gmail.com>
Tue, 24 May 2016 21:51:41 +0000 (23:51 +0200)
committerMattias Michaux <mattias.michaux@gmail.com>
Tue, 24 May 2016 21:51:41 +0000 (23:51 +0200)
CRM/Utils/Rule.php
CRM/Utils/Type.php

index b6f4f7e6dc202562566d3ab905d18fceaf891acb..9306b4b36fe1a2fa158779864974bd52c76a7440 100644 (file)
@@ -103,7 +103,7 @@ class CRM_Utils_Rule {
     // Ensure the string contains only valid characters:
     // For column names: alphanumeric and underscores
     // For aliases: backticks, alphanumeric hyphens and underscores.
-    if (!preg_match('/^((`[\w-]{1,64}`|\w{1,64})\.)?(`[\w-]{1,64}`|\w{1,64})$/i', $str)) {
+    if (!preg_match('/^((`[\w-]{1,64}`|[\w–]{1,64})\.)?(`[\w-]{1,64}`|[\w–]{1,64})$/i', $str)) {
       return FALSE;
     }
 
@@ -137,7 +137,7 @@ class CRM_Utils_Rule {
     // at all, so we split and loop over.
     $parts = explode(',', $str);
     foreach ($parts as $part) {
-      if (!preg_match('/^((`[\w-]{1,64}`|\w{1,64})\.)?(`[\w-]{1,64}`|\w{1,64})( (asc|desc))?$/i', trim($part))) {
+      if (!preg_match('/^((`[\w-]{1,64}`|[\w–]{1,64})\.)?(`[\w-]{1,64}`|[\w–]{1,64})( (asc|desc))?$/i', trim($part))) {
         return FALSE;
       }
     }
index f49f2127011dfa348f39fd56a7915ec598115461..374975d21b7b3902bce98f0b748d074d38edee92 100644 (file)
@@ -288,7 +288,7 @@ class CRM_Utils_Type {
         if (CRM_Utils_Rule::mysqlOrderBy($data)) {
           $parts = explode(',', $data);
           foreach ($parts as &$part) {
-            $part = preg_replace_callback('/^(?:(?:((?:`[\w-]{1,64}`|\w{1,64}))(?:\.))?(`[\w-]{1,64}`|\w{1,64})(?: (asc|desc))?)$/i', array('CRM_Utils_Type', 'mysqlOrderByCallback'), trim($part));
+            $part = preg_replace_callback('/^(?:(?:((?:`[\w-]{1,64}`|[\w–]{1,64}))(?:\.))?(`[\w-]{1,64}`|[\w–]{1,64})(?: (asc|desc))?)$/i', array('CRM_Utils_Type', 'mysqlOrderByCallback'), trim($part));
           }
           return implode(', ', $parts);
         }