ASCII art reflection
C#, 168 144 141 120 Bytes
using System.Linq;i=&gt;y=&gt;string.Join(&quot;\n&quot;,y?i.Split('\n').Reverse():i.Split('\n').Select(x=&gt;string.Concat(x.Reverse())));

New version utilizes the obvious string.Join overload that takes an IEnumerable, the first solution was using it inadvertently I was just able to use it for the else side of the ternary as well.
Update:
New version is an anonymous lambda and uses currying to save 21 bytes total. This changes usage to be f(&quot;text&quot;)(false) where f is the anonymous function.
Ungolfed:
using System.Linq;

//Using currying to save one byte
input =&gt; IsYReflect =&gt;
         //Lambda makes return implicit
         string.Join(&quot;\n&quot;, IsYReflect
            //Y Reflect, just need to reverse the array
            ? input.Split('\n').Reverse()
            //X Reflect, reverse each line into an IEnumerable
            : input.Split('\n').Select(x =&gt; string.Concat(x.Reverse())));