This is exactly the problem of the function. With each mode, the parameter list is different.

    		case 'critical':
    		break;
    		case 'mod':
    			$additional_data['forum_id'] = array_shift($args);
    			$additional_data['topic_id'] = array_shift($args);
    		break;
    		case 'user':
    			$additional_data['reportee_id'] = array_shift($args);
    		break;

How should I document that in one doc-block?