Хотя я никогда не использовал эту функцию лично, я считаю, что она не работает, потому что вы ничего не возвращаете.
Если функция $ action должна возвращать значение, напишите:
return call_user_func($action);
В противном случае (если он помещает значение в параметр), потребуется параметр, который будет работать примерно так:
call_user_func($action, $param);
return $param;
Возможно, я неправильно понимаю, что вы пытаетесьделай хоть.