/**
  * 
  * @return CRM_Mainactivity_ApplicantPaysConfig
  */
 public static function singleton()
 {
     if (!self::$singleton) {
         self::$singleton = new CRM_Mainactivity_ApplicantPaysConfig();
     }
     return self::$singleton;
 }
 public static function pre($op, $objectName, $id, &$params)
 {
     if ($objectName != 'Activity') {
         return;
     }
     if ($op != 'edit') {
         return;
     }
     if (empty($params['original_id'])) {
         return;
     }
     if (CRM_Mainactivity_Hooks_ConditionStatusChangeCheck::hasPermissionToStatusChange()) {
         //do not check further user has permission to change status
         return;
     }
     //ok check the original activity type and status
     $activity = civicrm_api3('Activity', 'getsingle', array('id' => $params['original_id']));
     $config = CRM_Mainactivity_ApplicantPaysConfig::singleton();
     if ($activity['activity_type_id'] != $config->getActivityTypeId()) {
         //activity is not a condition activity
         return;
     }
     //activity is a condition activity and user has not a permission to do a status change
     $params['status_id'] = $activity['status_id'];
 }