function calendar($year, $month, Application $app)
 {
     $cal = new \RenderCalendar();
     $cal->getEventRepositoryBuilder()->setSite($app['currentSite']);
     $cal->getEventRepositoryBuilder()->setIncludeDeleted(false);
     if ($app['currentUser']) {
         $cal->getEventRepositoryBuilder()->setUserAccount($app['currentUser'], true);
     }
     $cal->byMonth($year, $month, true);
     list($prevYear, $prevMonth, $nextYear, $nextMonth) = $cal->getPrevNextLinksByMonth();
     return $app['twig']->render('/site/calendarPage.html.twig', array('calendar' => $cal, 'prevYear' => $prevYear, 'prevMonth' => $prevMonth, 'nextYear' => $nextYear, 'nextMonth' => $nextMonth, 'pageTitle' => 'Calendar', 'showCurrentUserOptions' => true));
 }
 /**
  * @dataProvider dataForTestByDate
  */
 function testByDate($inYear, $inMonth, $inDay, $days, $expand, $startYear, $startMonth, $startDate, $endYear, $endMonth, $endDate, $outYear, $outMonth)
 {
     \TimeSource::mock($inYear, $inMonth, $inDay, 1, 2, 3);
     $cal = new RenderCalendar();
     $inDate = new \DateTime();
     $inDate->setDate($inYear, $inMonth, $inDay);
     $cal->byDate($inDate, $days, $expand);
     $start = $cal->getStart();
     $this->assertEquals($startYear, intval($start->format("Y")));
     $this->assertEquals($startMonth, intval($start->format("n")));
     $this->assertEquals($startDate, intval($start->format("j")));
     $end = $cal->getEnd();
     $this->assertEquals($endYear, intval($end->format("Y")));
     $this->assertEquals($endMonth, intval($end->format("n")));
     $this->assertEquals($endDate, intval($end->format("j")));
     $this->assertEquals($outYear, $cal->getYear());
     $this->assertEquals($outMonth, $cal->getMonth());
 }
 public function buildEvents(Application $app)
 {
     global $CONFIG;
     $repo = new SiteRepository();
     $site = $repo->loadById($this->site_id);
     $start = \TimeSource::getDateTime();
     $end = \TimeSource::getDateTime();
     $end->add(new \DateInterval("P" . ($this->days_into_future + 1) . "D"));
     $calendar = new \RenderCalendar();
     $calendar->setStartAndEnd($start, $end);
     $calendar->getEventRepositoryBuilder()->setSite($site);
     $calendar->getEventRepositoryBuilder()->setIncludeDeleted(true);
     $calData = $calendar->getData();
     $this->events = $calendar->getEvents();
     $this->event_text = $app['twig']->render('email/sendemail.eventview.calendar.txt.twig', array('data' => $calData, 'currentSite' => $site));
     if ($CONFIG->isDebug) {
         file_put_contents('/tmp/sendemail.eventview.calendar.txt', $this->event_text);
     }
     $this->event_html = $app['twig']->render('email/sendemail.eventview.calendar.html.twig', array('data' => $calData, 'currentSite' => $site));
     if ($CONFIG->isDebug) {
         file_put_contents('/tmp/sendemail.eventview.calendar.html', $this->event_html);
     }
 }
} else {
    $configDataDir = getcwd() . '/' . dirname($argv[1]);
}
$thisconfig = new IniConfigWithEnvironment($environment, $argv[1]);
foreach (array('SiteID', 'Subject', 'FromEmail', 'FromName', 'TimeZone', 'IntroTXTFile', 'IntroHTMLFile') as $key) {
    if (!$thisconfig->hasValue($key)) {
        die("NO CONFIG " . $key . " ?\n");
    }
}
// ######################################################### Load site, build query
$siteRepository = new SiteRepository();
$site = $siteRepository->loadById($thisconfig->get('SiteID'));
if (!$site) {
    die("NO SITE?\n");
}
$calendar = new \RenderCalendar();
$calendar->getEventRepositoryBuilder()->setSite($site);
$calendar->getEventRepositoryBuilder()->setIncludeDeleted(false);
// ######################################################### Set Start and End
$start = \TimeSource::getDateTime();
$start->setTime(0, 0, 0);
$end = \TimeSource::getDateTime();
$end->setTime(0, 0, 0);
if ($thisconfig->hasValue("Month") && $thisconfig->hasValue("Year")) {
    // Options for setting end; by a set month and year
    if ($thisconfig->get('Month') == 12) {
        $end->setDate($thisconfig->get('Year') + 1, 1, 1);
    } else {
        $end->setDate($thisconfig->get('Year'), $thisconfig->get('Month') + 1, 1);
    }
    $end->sub(new \DateInterval('PT1S'));
            return $file;
        }
    }
}
?>
<div class="editmainpage">
<h1><? echo $title; ?> for <? echo $assoc_title; ?></h1>
  <form enctype="multipart/form-data" action="" method="post">
    <fieldset style="margin: 5px 30px 20px 30px; width: auto;">
    <div class="month-calendar">
    <?php 
// find all EventAssociations for this assoc_id/type
$range = Calendar::range($date_ts, 'month');
$assoc_ids = EventAssociation::find_for_target_and_delta($assoc_type, $assoc_id, $range['start'], $range['end']);
$assocs = EventAssociation::load_in_list($assoc_ids);
$cal = new RenderCalendar();
// clean up the _GET a little
unset($_GET['date']);
unset($_GET['display_event']);
unset($_GET['cid']);
switch (@$_GET['dmode']) {
    case 'calendar':
    case 'list':
        $cal->display_mode = $_GET['dmode'];
        break;
    default:
        $cal->display_mode = 'calendar';
}
$cal->calendar_url = PA::$url . "/{$assoc_type}" . "_calendar.php";
$cal->calendar_url .= "?" . http_build_query($_GET);
$cal->self_url = $cal->calendar_url;
 function calendar($year, $month, Application $app)
 {
     $cal = new \RenderCalendar();
     $params = new EventFilterParams($cal->getEventRepositoryBuilder());
     $params->setHasDateControls(false);
     $params->setSpecifiedUserControls(true, $app['currentUser'], true);
     $params->set($_GET);
     $cal->byMonth($year, $month, true);
     list($prevYear, $prevMonth, $nextYear, $nextMonth) = $cal->getPrevNextLinksByMonth();
     return $app['twig']->render('/index/currentuser/calendar.html.twig', array('calendar' => $cal, 'eventListFilterParams' => $params, 'prevYear' => $prevYear, 'prevMonth' => $prevMonth, 'nextYear' => $nextYear, 'nextMonth' => $nextMonth, 'showCurrentUserOptions' => true));
 }