Merge pull request #18548 from civicrm/5.30
[civicrm-core.git] / Civi / Api4 / Query / SqlFunction.php
index e10bbcb23b0637f7a92aac75ef0050c9751b377b..dbc245f7bfc40dfd5e3ed0c5e6dbc74a47614b75 100644 (file)
@@ -22,6 +22,19 @@ abstract class SqlFunction extends SqlExpression {
 
   protected $args = [];
 
+  /**
+   * Used for categorizing functions in the UI
+   *
+   * @var string
+   */
+  protected static $category;
+
+  const CATEGORY_AGGREGATE = 'aggregate',
+    CATEGORY_COMPARISON = 'comparison',
+    CATEGORY_DATE = 'date',
+    CATEGORY_MATH = 'math',
+    CATEGORY_STRING = 'string';
+
   /**
    * Parse the argument string into an array of function arguments
    */
@@ -161,10 +174,9 @@ abstract class SqlFunction extends SqlExpression {
    * Get the name of this sql function.
    * @return string
    */
-  public function getName(): string {
-    $className = get_class($this);
-    $pos = strrpos($className, 'SqlFunction');
-    return substr($className, $pos + 11);
+  public static function getName(): string {
+    $className = static::class;
+    return substr($className, strrpos($className, 'SqlFunction') + 11);
   }
 
   /**
@@ -187,4 +199,16 @@ abstract class SqlFunction extends SqlExpression {
     return $params;
   }
 
+  /**
+   * @return string
+   */
+  public static function getCategory(): string {
+    return static::$category;
+  }
+
+  /**
+   * @return string
+   */
+  abstract public static function getTitle(): string;
+
 }