function getStartAndEndDate($week, $year) { $dto = new DateTime(); $dto->setISODate($year, $week, 0); $ret = array(); $ret['week'] = $week; $ret['year'] = $year; //Week Start $dto->setTime(0, 0, 0); $ret['start']['unix'] = $dto->format('U'); $ret['start']['formatted'] = $dto->format('Y-m-d'); $ret['start']['dayName'] = $dto->format('l'); $ret['start']['day'] = $dto->format('jS'); $ret['start']['month'] = $dto->format('F'); $ret['start']['year'] = $dto->format('Y'); //Week End $dto->modify('+6 days')->setTime(23, 59, 59); $ret['end']['unix'] = $dto->format('U'); $ret['end']['formatted'] = $dto->format('Y-m-d'); $ret['end']['dayName'] = $dto->format('l'); $ret['end']['day'] = $dto->format('jS'); $ret['end']['month'] = $dto->format('F'); $ret['end']['year'] = $dto->format('Y'); return $ret; }
/** * Get Query for All Entity For User By week and year * * @param integer $year * @param integer $week * @param User $user * * @return \Doctrine\ORM\Query */ public function getAllByYearWeekUserQuery($year, $week, User $user) { $dtStart = new \DateTime(); $dtStart->setISODate($year, $week); $dtStart->setTime(0, 0, 0); $nextweek = $week + 1; $nextyear = $year; $date = new \DateTime(); $date->setISODate($year, 53); $weeksinyear = $date->format('W') === '53' ? 53 : 52; if ($nextweek > $weeksinyear) { $nextyear++; $nextweek = 1; } $dtEnd = new \DateTime(); $dtEnd->setISODate($nextyear, $nextweek); $dtEnd->setTime(0, 0, 0); $dql = 'SELECT DISTINCT ag FROM Acf\\DataBundle\\Entity\\Agenda AS ag LEFT JOIN ag.users AS au WHERE (ag.user = :user OR au = :user) AND ( (ag.dtStart >= :dtStart AND ag.dtStart < :dtEnd) OR (ag.dtEnd > :dtStart AND ag.dtEnd <= :dtEnd) ) ORDER BY ag.dtStart ASC'; $query = $this->getEntityManager()->createQuery($dql)->setParameter('user', $user)->setParameter('dtStart', $dtStart)->setParameter('dtEnd', $dtEnd); return $query; }
/** * * Renvoi la date du vendredi de la semaine * * @return mixed Formatted date/time value as string or DateTime object (if format is NULL) */ public function getSamedi($format = 'Y-m-d H:i:s') { $now = new DateTime('now'); $year = $now->format('Y'); $num_semaine_now = $now->format('W'); if ($this->getNumEdtSemaine() === null || !is_numeric($this->getNumEdtSemaine())) { throw new PropelException('Numero de semaine non valide'); } if ($num_semaine_now > 30 && $this->getNumEdtSemaine() > 30) { //on est dans la meme annee } else if ($num_semaine_now < 30 && $this->getNumEdtSemaine() < 30) { //on est dans la meme annee } else if ($num_semaine_now > 30 && $this->getNumEdtSemaine() < 30) { //on est dans l'anne suivante $year = $year+1; } else if ($num_semaine_now < 30 && $this->getNumEdtSemaine() > 30) { //on est dans l'anne precedente $year = $year-1; } $dt = new DateTime(); $dt->setISODate($year, $this->getNumEdtSemaine(), 6); if ($format === null) { // Because propel.useDateTimeClass is TRUE, we return a DateTime object. return $dt; } elseif (strpos($format, '%') !== false) { return strftime($format, $dt->format('U')); } else { return $dt->format($format); } }
/** * Show the application dashboard to the user. * * @return Response */ public function index(Request $request) { $titulo = "Calendario"; $cursillos = Cursillos::getCalendarCursillos($request); $anyos = Cursillos::getAnyoCursillosList(); //Obtenemos los parámetros de la respuesta $year = $request->input('anyo'); $week = $request->input('semana') > 0 ? $request->input('semana') : 1; $semanas = array(); //A partir del número de semana obtenemos el mes if ($year > 0 && $week > 0) { $month = new \DateTime(); $month->setISODate($year, $week); $mes = $month->format('m'); $year = $month->format('Y'); } $date = $year > 0 ? date('Y-m-d', strtotime("{$year}-{$mes}-1")) : date('Y-m-d'); //Cargamos los cursillos foreach ($cursillos as $cursillo) { $event[] = \Calendar::event($cursillo->comunidad, $cursillo->cursillo, true, $cursillo->fecha_inicio, date('Y-m-d', strtotime($cursillo->fecha_final) + 86400), $cursillo->colorFondo, $cursillo->colorTexto, $cursillo->id); } if (count($cursillos) > 0) { $calendar = \Calendar::addEvents($event)->setOptions(['lang' => '', 'defaultDate' => $date, 'buttonIcons' => true, 'editable' => false, 'weekNumbers' => true, 'eventLimit' => true, 'header' => array('left' => 'prev', 'center' => 'title', 'right' => 'next')])->setCallbacks(['eventClick' => 'function(calEvent, jsEvent, view) { $(this).attr("href","curso/"+calEvent.id); }']); } return view('autenticado', compact('calendar', 'anyos', 'semanas', 'titulo')); }
function start_end_week($year, $week) { $dto = new DateTime(); $date['start'] = $dto->setISODate($year, $week)->format('Y-m-d'); $date['end'] = $dto->modify('+6 days')->format('Y-m-d'); return $date; }
public function select_XCNVWKERSDLMC485DK($group_id, $valueOfWhich, $which) { global $wpdb; $table_name = 'wpfb_group_post_collection'; $sql = ""; if ($which == 'weekNo') { $datetime = new DateTime(); $datetime->setISODate((int) $datetime->format('Y'), $valueOfWhich, 1); $interval = new DateInterval('P1D'); $week = new DatePeriod($datetime, $interval, 6); $dayList = array(); foreach ($week as $day) { $dayList[] = $day->format('Y-m-d g:i:s'); } $sql = sprintf("select * from %s A where A.from_group_id= '%s' and A.message_creation_time between '{$dayList[0]}' and '{$dayList[6]}'", $table_name, $group_id); } else { if ($which == 'author') { $sql = sprintf("elect * from %s A where A.from_group_id= '%s' and A.from_profile_id = '%s'", $table_name, $group_id, $valueOfWhich); } } $databaseRows = $wpdb->get_results($sql, ARRAY_A); if ($wpdb->last_error) { throw new Exception($wpdb->last_error); } return $databaseRows; }
function MakeStartAndFinalDates($week_number, $year) { $week_start = new DateTime(); $week_start->setISODate($year, $week_number); $strDateFrom = $week_start->format('Y-m-d'); $strDateTo = date('Y-m-d', strtotime($strDateFrom . ' + 6 days')); return array($strDateFrom, $strDateTo); }
public function setISODate($year, $week, $day = null) { if ($day === null) { return $this->dateTime->setISODate($year, $week); } else { return $this->dateTime->setISODate($year, $week, $day); } }
public function test_set_iso_date() { $a = new \DateTime(); $a->setISODate(2001, 1); $b = new ActiveRecord\DateTime(); $b->setISODate(2001, 1); $this->assert_datetime_equals($a, $b); }
function getStartAndEndDate($week, $year) { $dto = new DateTime(); $dto->setISODate($year, $week); $ret['week_start'] = $dto->format('o-m-d'); $dto->modify('+6 days'); $ret['week_end'] = $dto->format('o-m-d'); return $ret; }
function getStartAndEndDate($week, $year) { $dto = new DateTime(); $dto->setISODate($year, $week); $return['start_date'] = $dto->format('Y-m-d'); $dto->modify('+6 days'); $return['end_date'] = $dto->format('Y-m-d'); return $return; }
public function init($year, $week, $type) { $this->year = $year; $this->week = $week; $this->type = $type; $start = new \DateTime(); $start->setISODate($this->year, date("W", strtotime($this->container->getParameter("nfl_kick_off"))) + $this->week - ($type === "pre" ? 5 : 1), 2); $this->start_date = $start->format("Y-m-d H:m:s"); $this->end_date = $start->modify("+7 days")->format("Y-m-d H:m:s"); }
/** * * @param string $week * @param string $year * @return NULL[]|\DateTime[] */ public function getStartAndEndDate($week, $year) { $range = array("start" => NULL, "end" => NULL); $date = new \DateTime(); $date->setISODate($year, $week); $range["start"] = new \DateTime($date->format("d.m.Y")); $date->modify("+6 days"); $range["end"] = new \DateTime($date->format("d.m.Y")); return $range; }
public function execute(BlockContextInterface $block, Response $response = null) { // merge settings $settings = array_merge($this->getDefaultSettings(), $block->getSettings()); // Get validated hours per week $query = $this->em->createQuery("SELECT\n SUM(HOUR(c.duration) + MINUTE(c.duration)/60) AS time,\n YEAR(c.date) AS year,\n WEEK(c.date) AS week\n FROM MathsupCouponBundle:Course c\n GROUP BY year, week\n ORDER BY year, week DESC\n "); $hoursPerWeek = $query->getArrayResult(); $hoursPerWeekData = []; foreach ($hoursPerWeek as $week) { $week_start = new \DateTime(); $week_start->setISODate($week['year'], $week['week']); $hoursPerWeekData[] = array('name' => $week_start->format('d-M-Y'), 'x' => $week_start->getTimestamp() * 1000, 'y' => (int) $week['time']); } $query = $this->em->createQuery("\n SELECT\n COUNT(s) AS n,\n YEAR(s.createdAt) AS year,\n MONTH(s.createdAt) AS month,\n DAY(s.createdAt) AS day,\n s.createdAt AS date\n FROM MathsupUserBundle:Student s\n GROUP BY year, month, day\n ORDER BY s.createdAt ASC\n "); $studentCountEvolution = $query->getResult(); $studentCountEvolutionData = []; $studentCount = 0; foreach ($studentCountEvolution as $day) { $studentCount += $day['n']; $studentCountEvolutionData[] = array('name' => $day['date']->format('d-M-Y'), 'y' => (int) $studentCount, 'x' => $day['date']->getTimestamp() * 1000); } $hoursPerWeekChart = new Highchart(); $hoursPerWeekChart->title->text('Heures de cours validées par semaine'); $hoursPerWeekChart->chart->renderTo('hours_per_week_chart'); $hoursPerWeekChart->chart->zoomType('x'); $hoursPerWeekChart->xAxis->title(array('text' => "Semaine")); $hoursPerWeekChart->xAxis->type('datetime'); $hoursPerWeekChart->yAxis(array(array("title" => array('text' => "Heures")), array("title" => array('text' => "Nombre d'étudiants"), "opposite" => true))); $series = array(array("name" => "Nombre d'heure", "type" => "column", "data" => $hoursPerWeekData), array("name" => "Nombre d'étudiants", "data" => $studentCountEvolutionData, "step" => true, "yAxis" => 1)); $hoursPerWeekChart->series($series); $qb = $this->em->createQueryBuilder(); $qb->select($qb->expr()->count('s'))->from('MathsupUserBundle:Student', 's')->where('s.enabled = true'); $studentCount = $qb->getQuery()->getSingleScalarResult(); // get professor count $qb = $this->em->createQueryBuilder(); $qb->select($qb->expr()->count('p'))->from('MathsupUserBundle:Professor', 'p')->where('p.enabled = true'); $professorCount = $qb->getQuery()->getSingleScalarResult(); // Create user number (and repartition) pie chart $usersChart = new Highchart(); $usersChart->title->text('Utilisateurs'); $usersChart->chart->renderTo('users_chart'); $usersChart->chart->type('pie'); $usersChart->plotOptions->pie(array('allowPointSelect' => true, 'cursor' => 'pointer', 'dataLabels' => array('enabled' => true, 'format' => '<b>{point.name}</b>: {point.y}'))); $usersChart->series(array(array('name' => 'Utilisateurs', 'colorByPoint' => 'true', 'data' => array(array('name' => 'Étudiants', 'y' => (int) $studentCount), array('name' => 'Professeurs', 'y' => (int) $professorCount))))); return $this->renderResponse($block->getTemplate(), array('hours_per_week_chart' => $hoursPerWeekChart, 'student_count_evolution' => $studentCountEvolutionData, 'users_chart' => $usersChart, 'block' => $block->getBlock(), 'settings' => $settings), $response); }
/** * Creates a dates-ranges weekly array. * * @param \DateTime $from * @param \DateTime $to * @return array */ private static function createWeekly(\DateTime $from, \DateTime $to) { $arrRanges = []; while (true) { if ($from->format('Y-W') == $to->format('Y-W')) { $arrRanges[] = ['from' => $from->format('Y-m-d'), 'to' => $to->format('Y-m-d 23:59:59')]; break; } else { $cycleFrom = clone $from; // Clone the '$from' object. $from->setISODate($from->format('Y'), $from->format('W')); // Get a week of the given year. $cycleTo = $from->add(new \DateInterval('P6D')); // Get the last day of a calendar week. $arrRanges[] = ['from' => $cycleFrom->format('Y-m-d'), 'to' => $cycleTo->format('Y-m-d 23:59:59')]; $from = $cycleTo->add(new \DateInterval('P1D')); // Continue to the next iteration with updated '$from' object. unset($cycleFrom, $cycleTo); // Clear up the memory. } } return $arrRanges; }
$nday = 3; break; case "THURSDAY": case "Thursday": case "thursday": $nday = 4; break; case "FRIDAY": case "Friday": case "friday": $nday = 5; break; } for ($i = 32; $i < 48; $i++) { $rundate = new DateTime(); $rundate->setISODate(2015, $i, $nday); // year , week num , day $j = 0; // reset time shifter $date = $rundate->format('Y-m-d'); /********************************************************************************/ // Simulate a general waste run starting at ~06:00 and shift 30s +/- (0-8) per pickup $rundate->setTime(06, rand(-5, 10), rand(0, 30)); // reset and randomise time for run start $truckid = rand(1, 27); // no idea which truck; just randomise; $bintype = 1; // static for now; would come off QR code $binsize = 240; // determined by bin type foreach ($properties as $property) {
/** * Get the timeset as array for this panel */ private function getTimeset() { $timeset = array(); // km-Spiel Saisonen $kmstart = new DateTime(); $kmstart->setTime(0, 0, 0); $kmend = new DateTime(); $kmend->setTime(0, 0, 0); $now = new DateTime("now"); $kmstart->setISODate(date('Y'), 27, 1); if ($kmstart > $now) { $kmstart->setISODate(date('Y'), 1, 1); $kmend->setISODate(date('Y'), 26, 7); } else { $weeks = date('W', strtotime(date('Y') . '-12-31')); $kmend->setISODate(date('Y'), $weeks == 53 ? 53 : 52, 7); } echo new DateTime(date('o-\\WW')); // Zeitraeume fuer die Prognosen. $Time = new Time(); $timeset['woche'] = array('name' => __('Week'), 'start' => (new DateTime())->setTimestamp(Time::weekstart(time())), 'end' => (new DateTime())->setTimestamp(Time::weekend(time()) . " + 6 days")); $timeset['mon'] = array('name' => __('Month'), 'start' => new DateTime(date("Y-m-01")), 'end' => new Datetime(date('Y-m-t'))); $timeset['hj'] = array('name' => __('Half-Year'), 'start' => new DateTime(date('m') < 7 ? date("Y-01-01") : date("Y-07-01")), 'end' => new Datetime(date('m') < 7 ? date("Y-06-30") : date('Y-12-31'))); $timeset['saison'] = array('name' => __('Saison'), 'start' => $kmstart, 'end' => $kmend, 'note' => __('Note: Saison means the current season in the german "kmspiel"')); $timeset['jahr'] = array('name' => __('Year'), 'start' => new DateTime(date("Y-01-01")), 'end' => new Datetime(date('Y-12-31'))); return $timeset; }
public function raspored($id, $tjedan = null, $godina = null) { if (is_null($tjedan)) { $tjedan = date('W'); } if (is_null($godina)) { $godina = date('o'); } $t = new DateTime(); $t->setISODate($godina, $tjedan); if ($tjedan < 1 || $tjedan > 51) { $tjedan = $t->format('W'); $godina = $t->format('o'); } $ucionica = Ucionica::find($id); return View::make('Ucionica.raspored')->with('tjedan', $tjedan)->with('godina', $godina)->with('ucionica', $ucionica)->with('strana_rasporeda', \Helpers\Raspored::RasporedForUcionicaInWeek($id, $tjedan, $godina)); }
<?php /* Prototype : public DateTime DateTime::setISODate ( int $year , int $week [, int $day ] ) * Description: Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates. * Source code: ext/date/php_date.c * Alias to functions: date_isodate_set */ //Set the default time zone date_default_timezone_set("Europe/London"); $datetime = new DateTime("2009-01-30 19:34:10"); echo "*** Testing DateTime::setISODate () : error conditions ***\n"; echo "\n-- Testing DateTime::setISODate() function with zero arguments --\n"; var_dump($datetime->setISODate()); $year = 2009; echo "\n-- Testing DateTime::setISODate() function with less than expected no. of arguments --\n"; var_dump($datetime->setISODate($year)); echo "\n-- Testing date_isodate_set() function with more than expected no. of arguments --\n"; $week = 30; $day = 7; $extra_arg = 30; var_dump($datetime->setISODate($year, $week, $day, $extra_arg)); ?> ===DONE===
<?php date_default_timezone_set('Europe/Amsterdam'); $year = date("Y"); $currentweek = date("W"); $dto = new DateTime(); $result['start'] = $dto->setISODate($year, $currentweek, 1)->format('d-m-Y'); $result['end'] = $dto->setISODate($year, $currentweek, 7)->format('d-m-Y'); if (isset($_GET['url']) && $_GET['url'] != 'resetcookie') { echo file_get_contents('http://lesroostersgames.hku.nl' . $_GET['url']); echo ' <script> // var curDate = $("tr:contains(' . $result['start'] . ')"); // $.scrollTo(curDate,600); </script> '; } else { echo "NO URL ERROR, MESSAGE BOBBIE"; }
<?php $date = new DateTime(); $date->setISODate(2008, 2); // restituisce il primo giorno della seconda settimana del 2008 echo $date->format('Y-m-d') . "\n"; $date = new DateTime(); $date->setISODate(2008, 2, 7); // restituisce il 7o giorno della seconda settimana del 2008 echo $date->format('Y-m-d') . "\n"; $date = new DateTime(); $date->setISODate(2008, 2, 8); echo $date->format('Y-m-d') . "\n"; $date->setISODate(2008, 3); echo $date->format('Y-m-d'); ?>
$path = public_path('uploads'.DS.'mar'.DS.'2016'); $to = $path.DS.'test'; //if(!is_dir($to)) //mkdir($to, 0775, true); //$zip = Zipper::make($path.DS.'GC120915.ZIP')->extractTo($to); $zip = Zipper::make($path.DS.'GC120915.ZIP'); return dd($zip->contains('SALESMTDS.DBF')); */ return App\Models\Employee::where('branchid', '0C17FE2D78A711E587FA00FF59FBB323')->get(); }); get('week/{weekno}', function ($weekno) { echo $weekno . '<br>'; $week_start = new DateTime(); $week_start->setISODate('2015', $weekno); echo $week_start->format('Y-m-d'); }); get('last-day-yr/{year}', function ($year) { $dt = Carbon\Carbon::parse($year . '-12-31'); echo $dt->format('Y-m-d') . '<br>'; echo $dt->toRfc822String() . '<br>'; echo $dt->weekOfYear . '<br>'; }); get('week', function () { $dt = Carbon\Carbon::now(); for ($i = 0; $i < 7; $i++) { $dt->addDay(); } return $dt->weekOfYear; });
function getIsoDaysInYear($year) { $date = new DateTime(); $date->setISODate($year, 53); return $date->format("W") === "53" ? 366 : 365; }
/** * create multi-day events */ function calendarMultiday($items) { $app = JFactory::getApplication(); $params = $app->getParams(); $startdayonly = $this->getState('filter.calendar_startdayonly'); foreach ($items as $item) { $item->categories = $this->getCategories($item->id); if (!is_null($item->enddates) && !$startdayonly) { if ($item->enddates != $item->dates) { // $day = $item->start_day; $day = $item->start_day; for ($counter = 0; $counter <= $item->datesdiff - 1; $counter++) { $day++; //next day: $nextday = mktime(0, 0, 0, $item->start_month, $day, $item->start_year); //generate days of current multi-day selection $multi[$counter] = clone $item; $multi[$counter]->dates = strftime('%Y-%m-%d', $nextday); $item->multi = 'first'; $item->multitimes = $item->times; $item->multiname = $item->title; $item->sort = 'zlast'; if ($multi[$counter]->dates < $item->enddates) { $multi[$counter]->multi = 'middle'; $multi[$counter]->multistartdate = $item->dates; $multi[$counter]->multienddate = $item->enddates; $multi[$counter]->multitimes = $item->times; $multi[$counter]->multiname = $item->title; $multi[$counter]->times = $item->times; $multi[$counter]->endtimes = $item->endtimes; $multi[$counter]->sort = 'middle'; } elseif ($multi[$counter]->dates == $item->enddates) { $multi[$counter]->multi = 'zlast'; $multi[$counter]->multistartdate = $item->dates; $multi[$counter]->multienddate = $item->enddates; $multi[$counter]->multitimes = $item->times; $multi[$counter]->multiname = $item->title; $multi[$counter]->sort = 'first'; $multi[$counter]->times = $item->times; $multi[$counter]->endtimes = $item->endtimes; } } // for //add generated days to data $items = array_merge($items, $multi); //unset temp array holding generated days before working on the next multiday event unset($multi); } } //remove events without categories (users have no access to them) if (empty($item->categories)) { unset($item); } } foreach ($items as $index => $item) { $date = $item->dates; $firstweekday = $params->get('firstweekday', 1); // 1 = Monday, 0 = Sunday $config = JFactory::getConfig(); $offset = $config->get('offset'); $year = date('Y'); date_default_timezone_set($offset); $datetime = new DateTime(); $datetime->setISODate($year, $datetime->format("W"), 7); $numberOfWeeks = $params->get('nrweeks', '1'); if ($firstweekday == 1) { if (date('N', time()) == 1) { #it's monday and monday is startdate; $startdate = $datetime->modify('-6 day'); $startdate = $datetime->format('Y-m-d') . "\n"; $enddate = $datetime->modify('+' . $numberOfWeeks . ' weeks' . '- 1 day'); $enddate = $datetime->format('Y-m-d') . "\n"; } else { #it's not monday but monday is startdate;.. $startdate = $datetime->modify('-6 day'); $startdate = $datetime->format('Y-m-d') . "\n"; $enddate = $datetime->modify('+' . $numberOfWeeks . ' weeks' . '- 1 day'); $enddate = $datetime->format('Y-m-d') . "\n"; } } if ($firstweekday == 0) { if (date('N', time()) == 7) { #it's sunday and sunday is startdate; $startdate = $datetime->format('Y-m-d') . "\n"; $enddate = $datetime->modify('+' . $numberOfWeeks . ' weeks' . '- 1 day'); $enddate = $datetime->format('Y-m-d') . "\n"; } else { #it's not sunday and sunday is startdate; $startdate = $datetime->modify('-7 day'); $startdate = $datetime->format('Y-m-d') . "\n"; $enddate = $datetime->modify('+' . $numberOfWeeks . ' weeks' . '- 1 day'); $enddate = $datetime->format('Y-m-d') . "\n"; } } $check_startdate = strtotime($startdate); $check_enddate = strtotime($enddate); $date_timestamp = strtotime($date); if ($date_timestamp > $check_enddate) { unset($items[$index]); } elseif ($date_timestamp < $check_startdate) { unset($items[$index]); } } // Do we still have events? Return if not. if (empty($items)) { return $items; } foreach ($items as $item) { $time[] = $item->times; $title[] = $item->title; $id[] = $item->id; $dates[] = $item->dates; $multi[] = isset($item->multi) ? $item->multi : false; $multitime[] = isset($item->multitime) ? $item->multitime : false; $multititle[] = isset($item->multititle) ? $item->multititle : false; $sort[] = isset($item->sort) ? $item->sort : 'zlast'; } array_multisort($sort, SORT_ASC, $multitime, $multititle, $time, SORT_ASC, $title, $items); return $items; }
public function postStore(Request $request, $type = null) { $sel_ar = $request->ar; $sel_st = $request->st; $sel_tag = $request->tags; $frm = $request->fr; $to = $request->to; $sel_av = $request->availability; $availability = ['1' => 'oos', '2' => 'osa']; $tags = ['1' => 'OSA', '2' => 'NPI']; $report_type = 1; if (is_null($type) || $type != 'assortment') { $report_type = 2; } if ($report_type == 2) { $areas = StoreInventories::getAreaList(); } else { $areas = AssortmentInventories::getAreaList(); } if (!empty($sel_ar)) { $data['areas'] = $sel_ar; } if (!empty($sel_st)) { $data['stores'] = $sel_st; } if (!empty($frm)) { $data['from'] = $frm; } if (!empty($to)) { $data['to'] = $to; } if (!empty($sel_av)) { $data['availability'] = $sel_av; } if (!empty($sel_tag)) { $data['tags'] = $sel_tag; } if ($report_type == 2) { $header = 'MKL OSA Per Store Report'; $inventories = ItemInventories::getOsaPerStore($data); } else { $header = 'Assortment OSA Per Store Report'; $inventories = AssortmentItemInventories::getOsaPerStore($data); } if ($request->has('submit')) { return view('osa.store', compact('inventories', 'frm', 'to', 'areas', 'sel_ar', 'sel_st', 'header', 'type', 'availability', 'sel_av', 'tags', 'sel_tag')); } // dd($inventories); if ($request->has('download')) { \Excel::create($header, function ($excel) use($inventories) { $weeks = []; $items = []; foreach ($inventories as $value) { $week_start = new \DateTime(); $week_start->setISODate($value->yr, $value->yr_week); $store_list[$value->area][$value->store_name] = $value; $weeks[$week_start->format('Y-m-d')] = "Week " . $value->yr_week . " of " . $value->yr; $items[$value->area][$value->store_name]["Week " . $value->yr_week . " of " . $value->yr] = ['passed' => $value->passed, 'failed' => $value->failed]; } // dd($store_list); ksort($weeks); $excel->sheet('Sheet1', function ($sheet) use($items, $weeks, $store_list) { $default_store_col = 9; $col_array = []; $col = 10; foreach ($weeks as $week) { $sheet->setCellValueByColumnAndRow($col, 2, $week); $n_col = $col + 3; $col_array[$week] = $col; $sheet->mergeCells(\PHPExcel_Cell::stringFromColumnIndex($col) . "2:" . \PHPExcel_Cell::stringFromColumnIndex($n_col) . "2"); $sheet->getStyle(\PHPExcel_Cell::stringFromColumnIndex($col) . '2')->getAlignment()->applyFromArray(array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER)); $col = $col + 4; } $sheet->setCellValueByColumnAndRow($col, 2, 'Grand Total'); $sheet->mergeCells(\PHPExcel_Cell::stringFromColumnIndex($col) . "2:" . \PHPExcel_Cell::stringFromColumnIndex($col + 3) . "2"); $sheet->getStyle(\PHPExcel_Cell::stringFromColumnIndex($col) . '2')->getAlignment()->applyFromArray(array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER)); $area_col = 0; $store_col = $default_store_col; $sheet->setCellValueByColumnAndRow($area_col, 3, 'AREA'); $sheet->setCellValueByColumnAndRow(1, 3, 'REGION NAME'); $sheet->setCellValueByColumnAndRow(2, 3, 'DISTRIBUTOR CODE'); $sheet->setCellValueByColumnAndRow(3, 3, 'DISTRIBUTOR NAME'); $sheet->setCellValueByColumnAndRow(4, 3, 'AGENCY'); $sheet->setCellValueByColumnAndRow(5, 3, 'STORE CODE'); $sheet->setCellValueByColumnAndRow(6, 3, 'STORE ID'); $sheet->setCellValueByColumnAndRow(7, 3, 'CHANNEL CODE'); $sheet->setCellValueByColumnAndRow(8, 3, 'CHANNEL NAME'); $sheet->setCellValueByColumnAndRow($store_col, 3, 'STORE NAME'); foreach ($weeks as $week) { $sheet->setCellValueByColumnAndRow($store_col + 1, 3, 'OOS'); $sheet->setCellValueByColumnAndRow($store_col + 2, 3, 'With Stocks'); $sheet->setCellValueByColumnAndRow($store_col + 3, 3, 'Total'); $sheet->setCellValueByColumnAndRow($store_col + 4, 3, 'OSA Score'); $sheet->getStyle(\PHPExcel_Cell::stringFromColumnIndex($store_col + 4))->getNumberFormat()->applyFromArray(array('code' => \PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00)); $store_col = $store_col + 4; } $sheet->setCellValueByColumnAndRow($store_col + 1, 3, 'Total OOS'); $sheet->setCellValueByColumnAndRow($store_col + 2, 3, 'Total With Stocks'); $sheet->setCellValueByColumnAndRow($store_col + 3, 3, 'Grand Total'); $sheet->setCellValueByColumnAndRow($store_col + 4, 3, 'Total OSA Score'); $sheet->getStyle(\PHPExcel_Cell::stringFromColumnIndex($store_col + 4))->getNumberFormat()->applyFromArray(array('code' => \PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00)); $row = 4; // dd($items); $per_area_total_rows = []; foreach ($items as $key => $value) { $first = true; $total_row = count($value) + $row; $last_row = $total_row - 1; $start_row = $row; foreach ($value as $skey => $record) { $oos_row_total = 0; $withstock_row_total = 0; $sheet->setCellValueByColumnAndRow(0, $row, $key); $sheet->setCellValueByColumnAndRow(1, $row, $store_list[$key][$skey]->region_name); $sheet->setCellValueByColumnAndRow(2, $row, $store_list[$key][$skey]->distributor_code); $sheet->setCellValueByColumnAndRow(3, $row, $store_list[$key][$skey]->distributor); $sheet->setCellValueByColumnAndRow(4, $row, $store_list[$key][$skey]->agency); $sheet->setCellValueByColumnAndRow(5, $row, $store_list[$key][$skey]->store_code); $sheet->setCellValueByColumnAndRow(6, $row, $store_list[$key][$skey]->store_id); $sheet->setCellValueByColumnAndRow(7, $row, $store_list[$key][$skey]->channel_code); $sheet->setCellValueByColumnAndRow(8, $row, $store_list[$key][$skey]->channel_name); $sheet->setCellValueByColumnAndRow(9, $row, $skey); $grand_total = 0; foreach ($record as $k => $rowValue) { $oos_col = $col_array[$k]; $with_stock_col = $col_array[$k] + 1; $store_total = $rowValue['failed'] + $rowValue['passed']; $osa_score = '=IFERROR(' . \PHPExcel_Cell::stringFromColumnIndex($with_stock_col) . $row . '/SUM(' . \PHPExcel_Cell::stringFromColumnIndex($oos_col) . $row . ',' . \PHPExcel_Cell::stringFromColumnIndex($with_stock_col) . $row . '),"")'; //oos $sheet->setCellValueByColumnAndRow($oos_col, $row, $rowValue['failed']); $oos_row_total += $rowValue['failed']; // //with stocks $sheet->setCellValueByColumnAndRow($with_stock_col, $row, $rowValue['passed']); $withstock_row_total += $rowValue['passed']; // //total $sheet->setCellValueByColumnAndRow($oos_col + 2, $row, $store_total); $sheet->setCellValueByColumnAndRow($oos_col + 3, $row, $osa_score); } $sheet->setCellValueByColumnAndRow($store_col + 1, $row, $oos_row_total); $sheet->setCellValueByColumnAndRow($store_col + 2, $row, $withstock_row_total); $sheet->setCellValueByColumnAndRow($store_col + 3, $row, $oos_row_total + $withstock_row_total); $osa_score_total = '=IFERROR(' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $row . '/SUM(' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 1) . $row . ',' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $row . '),"")'; $sheet->setCellValueByColumnAndRow($store_col + 4, $row, $osa_score_total); $row++; } $per_area_total_rows[] = $row; $sheet->setCellValueByColumnAndRow(0, $row, $key . ' Total'); $store_col = $default_store_col; foreach ($weeks as $week) { $sheet->setCellValueByColumnAndRow($store_col + 1, $row, "=SUM(" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 1) . $start_row . ":" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 1) . $last_row . ")"); $sheet->setCellValueByColumnAndRow($store_col + 2, $row, "=SUM(" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $start_row . ":" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $last_row . ")"); $sheet->setCellValueByColumnAndRow($store_col + 3, $row, "=SUM(" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 3) . $start_row . ":" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 3) . $last_row . ")"); $sheet->setCellValueByColumnAndRow($store_col + 4, $row, '=IFERROR(' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $row . '/SUM(' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $row . ',' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 1) . $row . '),"")'); $store_col = $store_col + 4; } $sheet->setCellValueByColumnAndRow($store_col + 1, $row, "=SUM(" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 1) . $start_row . ":" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 1) . $last_row . ")"); $sheet->setCellValueByColumnAndRow($store_col + 2, $row, "=SUM(" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $start_row . ":" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $last_row . ")"); $sheet->setCellValueByColumnAndRow($store_col + 3, $row, "=SUM(" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 3) . $start_row . ":" . \PHPExcel_Cell::stringFromColumnIndex($store_col + 3) . $last_row . ")"); $sheet->setCellValueByColumnAndRow($store_col + 4, $row, '=IFERROR(' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $row . '/SUM(' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 2) . $row . ',' . \PHPExcel_Cell::stringFromColumnIndex($store_col + 1) . $row . '),"")'); $row++; } $sheet->setCellValueByColumnAndRow(0, $row, 'Grand Total'); $store_col = $default_store_col; foreach ($weeks as $week) { $oos_row_cells = []; $withstock_row_cells = []; $total_row_cells = []; $oos_col = $col_array[$week]; foreach ($per_area_total_rows as $cell) { $oos_row_cells[] = \PHPExcel_Cell::stringFromColumnIndex($oos_col) . $cell; $withstock_row_cells[] = \PHPExcel_Cell::stringFromColumnIndex($oos_col + 1) . $cell; $total_row_cells[] = \PHPExcel_Cell::stringFromColumnIndex($oos_col + 2) . $cell; } $sheet->setCellValueByColumnAndRow($oos_col, $row, '=sum(' . implode(",", $oos_row_cells) . ')'); $sheet->setCellValueByColumnAndRow($oos_col + 1, $row, '=sum(' . implode(",", $withstock_row_cells) . ')'); $sheet->setCellValueByColumnAndRow($oos_col + 2, $row, '=sum(' . implode(",", $total_row_cells) . ')'); $sheet->setCellValueByColumnAndRow($oos_col + 3, $row, '=IFERROR(' . \PHPExcel_Cell::stringFromColumnIndex($oos_col + 1) . $row . '/SUM(' . \PHPExcel_Cell::stringFromColumnIndex($oos_col) . $row . ',' . \PHPExcel_Cell::stringFromColumnIndex($oos_col + 1) . $row . '),"")'); } $oos_row_cells = []; $withstock_row_cells = []; $total_row_cells = []; $oos_col = count($col_array) * 4 + 6; // dd($oos_col); foreach ($per_area_total_rows as $cell) { $oos_row_cells[] = \PHPExcel_Cell::stringFromColumnIndex($oos_col + 1) . $cell; $withstock_row_cells[] = \PHPExcel_Cell::stringFromColumnIndex($oos_col + 2) . $cell; $total_row_cells[] = \PHPExcel_Cell::stringFromColumnIndex($oos_col + 3) . $cell; } $sheet->setCellValueByColumnAndRow($oos_col + 1, $row, '=sum(' . implode(",", $oos_row_cells) . ')'); $sheet->setCellValueByColumnAndRow($oos_col + 2, $row, '=sum(' . implode(",", $withstock_row_cells) . ')'); $sheet->setCellValueByColumnAndRow($oos_col + 3, $row, '=sum(' . implode(",", $total_row_cells) . ')'); $sheet->setCellValueByColumnAndRow($oos_col + 4, $row, '=IFERROR(' . \PHPExcel_Cell::stringFromColumnIndex($oos_col + 2) . $row . '/SUM(' . \PHPExcel_Cell::stringFromColumnIndex($oos_col + 1) . $row . ',' . \PHPExcel_Cell::stringFromColumnIndex($oos_col + 2) . $row . '),"")'); }); })->download('xlsx'); } }
/** * provide fluent interface for DateTime::setISODate() */ public function setISODate($year, $week, $day = null) { parent::setISODate($year, $week, $day); return $this; }
/** * Validates the given date_query values and triggers errors if something is not valid. * * Note that date queries with invalid date ranges are allowed to * continue (though of course no items will be found for impossible dates). * This method only generates debug notices for these cases. * * @since 4.1.0 * @access public * * @param array $date_query The date_query array. * @return bool True if all values in the query are valid, false if one or more fail. */ public function validate_date_values($date_query = array()) { if (empty($date_query)) { return false; } $valid = true; /* * Validate 'before' and 'after' up front, then let the * validation routine continue to be sure that all invalid * values generate errors too. */ if (array_key_exists('before', $date_query) && is_array($date_query['before'])) { $valid = $this->validate_date_values($date_query['before']); } if (array_key_exists('after', $date_query) && is_array($date_query['after'])) { $valid = $this->validate_date_values($date_query['after']); } // Array containing all min-max checks. $min_max_checks = array(); // Days per year. if (array_key_exists('year', $date_query)) { /* * If a year exists in the date query, we can use it to get the days. * If multiple years are provided (as in a BETWEEN), use the first one. */ if (is_array($date_query['year'])) { $_year = reset($date_query['year']); } else { $_year = $date_query['year']; } $max_days_of_year = date('z', mktime(0, 0, 0, 12, 31, $_year)) + 1; } else { // otherwise we use the max of 366 (leap-year) $max_days_of_year = 366; } $min_max_checks['dayofyear'] = array('min' => 1, 'max' => $max_days_of_year); // Days per week. $min_max_checks['dayofweek'] = array('min' => 1, 'max' => 7); // Days per week. $min_max_checks['dayofweek_iso'] = array('min' => 1, 'max' => 7); // Months per year. $min_max_checks['month'] = array('min' => 1, 'max' => 12); // Weeks per year. if (isset($_year)) { // If we have a specific year, use it to calculate number of weeks. $date = new DateTime(); $date->setISODate($_year, 53); $week_count = $date->format("W") === "53" ? 53 : 52; } else { // Otherwise set the week-count to a maximum of 53. $week_count = 53; } $min_max_checks['week'] = array('min' => 1, 'max' => $week_count); // Days per month. $min_max_checks['day'] = array('min' => 1, 'max' => 31); // Hours per day. $min_max_checks['hour'] = array('min' => 0, 'max' => 23); // Minutes per hour. $min_max_checks['minute'] = array('min' => 0, 'max' => 59); // Seconds per minute. $min_max_checks['second'] = array('min' => 0, 'max' => 59); // Concatenate and throw a notice for each invalid value. foreach ($min_max_checks as $key => $check) { if (!array_key_exists($key, $date_query)) { continue; } // Throw a notice for each failing value. foreach ((array) $date_query[$key] as $_value) { $is_between = $_value >= $check['min'] && $_value <= $check['max']; if (!is_numeric($_value) || !$is_between) { $error = sprintf(__('Invalid value %1$s for %2$s. Expected value should be between %3$s and %4$s.'), '<code>' . esc_html($_value) . '</code>', '<code>' . esc_html($key) . '</code>', '<code>' . esc_html($check['min']) . '</code>', '<code>' . esc_html($check['max']) . '</code>'); _doing_it_wrong(__CLASS__, $error, '4.1.0'); $valid = false; } } } // If we already have invalid date messages, don't bother running through checkdate(). if (!$valid) { return $valid; } $day_month_year_error_msg = ''; $day_exists = array_key_exists('day', $date_query) && is_numeric($date_query['day']); $month_exists = array_key_exists('month', $date_query) && is_numeric($date_query['month']); $year_exists = array_key_exists('year', $date_query) && is_numeric($date_query['year']); if ($day_exists && $month_exists && $year_exists) { // 1. Checking day, month, year combination. if (!wp_checkdate($date_query['month'], $date_query['day'], $date_query['year'], sprintf('%s-%s-%s', $date_query['year'], $date_query['month'], $date_query['day']))) { /* translators: 1: year, 2: month, 3: day of month */ $day_month_year_error_msg = sprintf(__('The following values do not describe a valid date: year %1$s, month %2$s, day %3$s.'), '<code>' . esc_html($date_query['year']) . '</code>', '<code>' . esc_html($date_query['month']) . '</code>', '<code>' . esc_html($date_query['day']) . '</code>'); $valid = false; } } elseif ($day_exists && $month_exists) { /* * 2. checking day, month combination * We use 2012 because, as a leap year, it's the most permissive. */ if (!wp_checkdate($date_query['month'], $date_query['day'], 2012, sprintf('2012-%s-%s', $date_query['month'], $date_query['day']))) { /* translators: 1: month, 2: day of month */ $day_month_year_error_msg = sprintf(__('The following values do not describe a valid date: month %1$s, day %2$s.'), '<code>' . esc_html($date_query['month']) . '</code>', '<code>' . esc_html($date_query['day']) . '</code>'); $valid = false; } } if (!empty($day_month_year_error_msg)) { _doing_it_wrong(__CLASS__, $day_month_year_error_msg, '4.1.0'); } return $valid; }
/** get local time zone offset from GMT. Does not handle historical timezones before 1970. */ function adodb_get_gmt_diff($y, $m, $d) { static $TZ, $tzo; global $ADODB_DATETIME_CLASS; if (!defined('ADODB_TEST_DATES')) { $y = false; } else { if ($y < 1970 || $y >= 2038) { $y = false; } } if ($ADODB_DATETIME_CLASS && $y !== false) { $dt = new DateTime(); $dt->setISODate($y, $m, $d); if (empty($tzo)) { $tzo = new DateTimeZone(date_default_timezone_get()); # $tzt = timezone_transitions_get( $tzo ); } return -$tzo->getOffset($dt); } else { if (isset($TZ)) { return $TZ; } $y = date('Y'); $TZ = mktime(0, 0, 0, 12, 2, $y, 0) - gmmktime(0, 0, 0, 12, 2, $y, 0); } return $TZ; }
echo "{$dates['4']}"; ?> )</td> <td class="cal_day"><b>Friday</b>(<?php echo "{$dates['5']}"; ?> )</td> <td class="cal_day"><b>Saturday</b>(<?php echo "{$dates['6']}"; ?> )</td> </tr> <?php $date = new DateTime(); $date_by_week = $date->setISODate($year, $week_no, 0); //30th week 5th day $first = $date->format("Y-m-d"); $date_by_week = $date->setISODate($year, $week_no, 6); $last = $date->format("Y-m-d"); $subs = "T00:00:00Z"; $first_date_of_week = $first . $subs; $last_date_of_week = $last . $subs; $client = new CalendarClient("Amal", "aaa"); $resMessage = $client->getEvents("{$first_date_of_week}", "{$last_date_of_week}"); if ($resMessage) { $simplexml = new SimpleXMLElement($resMessage->str); $i = 0; $j = 0; $k = 0; while ($temp = $simplexml->event[$i]->name) {
function getIsoWeeksInYear($year) { $date = new DateTime(); $date->setISODate($year, 53); return $date->format("W") === "53" ? 53 : 52; }