/**
 * Function to validate parameters
 *
 * @param array $params
 * @return string $errorMessage
 */
function _validateParams($params)
{
    $errorMessage = '';
    if (!isset($params['id']) && empty($params['label'])) {
        return ts('Label can not be empty when adding a new CiviRule Trigger');
    }
    if (_checkClassNameObjectNameOperation($params) == FALSE) {
        return ts('Either class_name or a combination of object_name and op is mandatory');
    }
    if (isset($params['cron']) && $params['cron'] == 1) {
        $params['object_name'] = null;
        $params['op'] = null;
        if (!isset($params['class_name']) || empty($params['class_name'])) {
            return ts('For a cron type trigger the class_name is mandatory');
        }
    }
    if (isset($params['object_name']) && !empty($params['object_name'])) {
        $extensionConfig = CRM_Civirules_Config::singleton();
        if (!in_array($params['object_name'], $extensionConfig->getValidTriggerObjectNames())) {
            return ts('ObjectName passed in parameters (' . $params['object_name'] . ')is not a valid object for a CiviRule Trigger');
        }
    }
    if (isset($params['op']) && !empty($params['op'])) {
        $extensionConfig = CRM_Civirules_Config::singleton();
        if (!in_array($params['op'], $extensionConfig->getValidTriggerOperations())) {
            return ts('Operation passed in parameters (' . $params['op'] . ')is not a valid operation for a CiviRule Trigger');
        }
    }
    if (CRM_Civirules_BAO_Trigger::triggerExists($params) == TRUE) {
        return ts('There is already a trigger for this class_name or combination of object_name and op');
    }
    return $errorMessage;
}
 /**
  * Function to return singleton object
  *
  * @return object $_singleton
  * @access public
  * @static
  */
 public static function &singleton()
 {
     if (self::$_singleton === NULL) {
         self::$_singleton = new CRM_Civirules_Config();
     }
     return self::$_singleton;
 }
 /**
  * Method post
  *
  * @param string $op
  * @param string $objectName
  * @param int $objectId
  * @param object $objectRef
  * @access public
  * @static
  */
 public static function post($op, $objectName, $objectId, &$objectRef)
 {
     $extensionConfig = CRM_Civirules_Config::singleton();
     if (!in_array($op, $extensionConfig->getValidTriggerOperations())) {
         return;
     }
     //find matching rules for this objectName and op
     $triggers = CRM_Civirules_BAO_Rule::findRulesByObjectNameAndOp($objectName, $op);
     foreach ($triggers as $trigger) {
         if ($trigger instanceof CRM_Civirules_Trigger_Post) {
             $trigger->triggerTrigger($op, $objectName, $objectId, $objectRef);
         }
     }
 }