MySQL select with join table
You want 3 different searches and the results combined. I'd use UNION:

SELECT 
  u.id     AS user_id,
  u.name   AS name,
  mm.value AS mail,
  mt.value AS tel 
FROM `user` AS u
  LEFT JOIN user_media AS umt 
         JOIN media AS mt ON  mt.id = umt.media_id
                          AND mt.type = 'T'
    ON u.id = umt.user_id
  LEFT JOIN user_media AS umm 
         JOIN media AS mm ON  mm.id = umm.media_id
                          AND mm.type = 'M'
    ON u.id = umm.user_id
WHERE
  u.name LIKE CONCAT('%', ?, '%')

UNION ALL

SELECT 
  u.id     AS user_id,
  u.name   AS name,
  mm.value AS mail,
  mt.value AS tel 
FROM media AS mt 
  LEFT JOIN user_media AS umt ON mt.id = umt.media_id
  LEFT JOIN `user` AS u ON u.id = umt.user_id 
  LEFT JOIN user_media AS umm 
        JOIN media as mm ON  mm.id = umm.media_id
                         AND mm.type = 'M'
    ON umt.user_id  = umm.user_id
WHERE
  mt.type = 'T'
  AND mt.value LIKE CONCAT('%', ?, '%')

UNION ALL

SELECT 
  u.id     AS user_id,
  u.name   AS name,
  mm.value AS mail,
  mt.value AS tel 
FROM media AS mm 
  LEFT JOIN user_media AS umm ON mm.id = umm.media_id
  LEFT JOIN `user` AS u ON u.id = umm.user_id 
  LEFT JOIN user_media AS umt 
         JOIN media AS mt ON  mt.id = umt.media_id
                          AND mt.type = 'T'
    ON umm.user_id = umt.user_id
WHERE
  mm.type = 'M'
  AND mm.value LIKE CONCAT('%', ?, '%') ;


Tested at SQLfiddle. (replace the ? with the value you want to search for.)