Here's what I would do:
Change Controls/Dashboard/UpcomingReservations constructor to accept a boolean
public function __construct(SmartyPage $smarty, $showAllUsers = false)
Pass that right into the presenter
$this->presenter = new UpcomingReservationsPresenter($this, new ReservationViewRepository(), $showAllUsers);
Change the presenter to recognize it
public function __construct(IUpcomingReservationsControl $control, IReservationViewRepository $repository, $showAllUsers = false)
{
$this->control = $control;
$this->repository = $repository;
$this->showAllUsers = $showAllUsers;
}
Line 52 becomes:
if ($this->showAllUsers)
{
$currentUserId = ReservationViewRepository::ALL_USERS;
}
$reservations = $this->repository->GetReservationList($now, $lastDate, $currentUserId, ReservationUserLevel::ALL);
Then in DashboardPresenter Initialize(), add it that control again for your special user:
public function Initialize()
{
$announcement = new AnnouncementsControl(new SmartyPage());
$upcomingReservations = new UpcomingReservations(new SmartyPage());
$this->_page->AddItem($announcement);
$this->_page->AddItem($upcomingReservations);
if ($specialUser)
{
$this->_page->AddItem(new UpcomingReservations(new SmartyPage(), true));
}
}