/** * Set the cookie in the response. * * Also sets the request->params['_csrfToken'] so the newly minted * token is available in the request data. * * @param \Cake\Network\Request $request The request object. * @param \Cake\Network\Response $response The response object. * @return void */ protected function _setCookie(Request $request, Response $response) { $expiry = new Time($this->_config['expiry']); $value = hash('sha512', Security::randomBytes(16), false); $request->params['_csrfToken'] = $value; $response->cookie(['name' => $this->_config['cookieName'], 'value' => $value, 'expire' => $expiry->format('U'), 'path' => $request->webroot, 'secure' => $this->_config['secure'], 'httpOnly' => $this->_config['httpOnly']]); }
/** * testEnqueue method. */ public function testEnqueue() { $count = $this->EmailQueue->find()->count(); $this->EmailQueue->enqueue('*****@*****.**', array('a' => 'variable', 'some' => 'thing'), array('subject' => 'Hey!', 'headers' => ['X-FOO' => 'bar', 'X-BAZ' => 'thing'])); $this->assertEquals(++$count, $this->EmailQueue->find()->count()); $result = $this->EmailQueue->find()->last()->toArray(); $expected = array('email' => '*****@*****.**', 'subject' => 'Hey!', 'template' => 'default', 'layout' => 'default', 'format' => 'both', 'template_vars' => array('a' => 'variable', 'some' => 'thing'), 'sent' => false, 'locked' => false, 'send_tries' => 0, 'config' => 'default', 'headers' => array('X-FOO' => 'bar', 'X-BAZ' => 'thing'), 'from_name' => null, 'from_email' => null); $sendAt = new Time($result['send_at']); unset($result['id'], $result['created'], $result['modified'], $result['send_at']); $this->assertEquals($expected, $result); $this->assertEquals(gmdate('Y-m-d H'), $sendAt->format('Y-m-d H')); $date = new Time(); $this->EmailQueue->enqueue(array('*****@*****.**', '*****@*****.**'), array('a' => 'b'), array('send_at' => $date, 'subject' => 'Hey!')); $this->assertEquals($count + 2, $this->EmailQueue->find()->count()); $email = $this->EmailQueue->find()->where(array('email' => '*****@*****.**'))->first(); $this->assertEquals(array('a' => 'b'), $email['template_vars']); $this->assertEquals($date, $email['send_at']); $email = $this->EmailQueue->find()->where(array('email' => '*****@*****.**'))->first(); $this->assertEquals(array('a' => 'b'), $email['template_vars']); $this->assertEquals($date, $email['send_at']); $this->EmailQueue->enqueue('*****@*****.**', array('a' => 'c'), array('subject' => 'Hey', 'send_at' => $date, 'config' => 'other', 'template' => 'custom', 'layout' => 'email')); $email = $this->EmailQueue->find()->last(); $this->assertEquals(array('a' => 'c'), $email['template_vars']); $this->assertEquals($date, $email['send_at']); $this->assertEquals('other', $email['config']); $this->assertEquals('custom', $email['template']); $this->assertEquals('email', $email['layout']); }
/** * Test index method unauthorized * * @return void */ public function testIndexAuthorizedWithPremium() { $Users = TableRegistry::get('Users'); $user = $Users->get(1); $time = new Time('+5 days'); $user->end_subscription = $time; $Users->save($user); $this->session(['Auth' => ['User' => ['id' => 1, 'username' => 'mariano', 'avatar' => '../img/avatar.png', 'group_id' => 5]]]); $this->get(['controller' => 'premium', 'action' => 'index']); $this->assertResponseOk(); //We can't test the flash test due to the translation system. $this->assertResponseContains('infobox-primary'); $this->assertResponseContains($time->format('H:i:s d-m-Y')); }
/** * test timeAgoInWords() with negative values. * * @return void */ public function testTimeAgoInWordsNegativeValues() { $time = new Time('-2 months -2 days'); $result = $time->timeAgoInWords(['end' => '3 month']); $this->assertEquals('2 months, 2 days ago', $result); $time = new Time('-2 months -2 days'); $result = $time->timeAgoInWords(['end' => '3 month']); $this->assertEquals('2 months, 2 days ago', $result); $time = new Time('-2 months -2 days'); $result = $time->timeAgoInWords(['end' => '1 month', 'format' => 'yyyy-MM-dd']); $this->assertEquals('on ' . date('Y-m-d', strtotime('-2 months -2 days')), $result); $time = new Time('-2 years -5 months -2 days'); $result = $time->timeAgoInWords(['end' => '3 years']); $this->assertEquals('2 years, 5 months, 2 days ago', $result); $time = new Time('-2 weeks -2 days'); $result = $time->timeAgoInWords(['format' => 'yyyy-MM-dd']); $this->assertEquals('2 weeks, 2 days ago', $result); $time = new Time('-3 years -12 months'); $result = $time->timeAgoInWords(); $expected = 'on ' . $time->format('n/j/y'); $this->assertEquals($expected, $result); $time = new Time('-1 month -1 week -6 days'); $result = $time->timeAgoInWords(['end' => '1 year', 'accuracy' => ['month' => 'month']]); $this->assertEquals('1 month ago', $result); $time = new Time('-1 years -2 weeks -3 days'); $result = $time->timeAgoInWords(['accuracy' => ['year' => 'year']]); $expected = 'on ' . $time->format('n/j/y'); $this->assertEquals($expected, $result); $time = new Time('-13 months -5 days'); $result = $time->timeAgoInWords(['end' => '2 years']); $this->assertEquals('1 year, 1 month, 5 days ago', $result); $time = new Time('-58 minutes'); $result = $time->timeAgoInWords(['accuracy' => 'hour']); $this->assertEquals('about an hour ago', $result); $time = new Time('-23 hours'); $result = $time->timeAgoInWords(['accuracy' => 'day']); $this->assertEquals('about a day ago', $result); }
/** * Tests marshalling dates using the locale aware parser and custom format * * @return void */ public function testMarshalWithLocaleParsingWithFormat() { $this->type->useLocaleParser()->setLocaleFormat('dd MMM, y'); $expected = new Time('13-10-2013'); $result = $this->type->marshal('13 Oct, 2013'); $this->assertEquals($expected->format('Y-m-d'), $result->format('Y-m-d')); }
/** * test writing values that are not scalars * * @return void */ public function testWriteArrayValues() { $this->Cookie->write('Testing', [1, 2, 3]); $expected = ['name' => 'Testing', 'value' => '[1,2,3]', 'path' => '/', 'domain' => '', 'secure' => false, 'httpOnly' => false]; $result = $this->Controller->response->cookie('Testing'); $time = new Time('now'); $this->assertWithinRange($time->format('U') + 10, $result['expire'], 1); unset($result['expire']); $this->assertEquals($expected, $result); }
/** * Tests marshalling dates using the locale aware parser * * @return void */ public function testMarshalWithLocaleParsing() { $this->type->useLocaleParser(); $expected = new Time('23:23:00'); $result = $this->type->marshal('11:23pm'); $this->assertEquals($expected->format('H:i'), $result->format('H:i')); $this->assertNull($this->type->marshal('derp:23')); }
/** * Set the cookie in the response. * * Also sets the request->params['_csrfToken'] so the newly minted * token is available in the request data. * * @param \Cake\Network\Request $request The request object. * @param \Cake\Network\Response $response The response object. * @return void */ protected function _setCookie(Request $request, Response $response) { $expiry = new Time($this->_config['expiry']); $value = Security::hash(Text::uuid(), 'sha1', true); $request->params['_csrfToken'] = $value; $response->cookie(['name' => $this->_config['cookieName'], 'value' => $value, 'expire' => $expiry->format('U'), 'path' => $request->webroot, 'secure' => $this->_config['secure']]); }
/** * Get datetime range for today from at 00:00:00 to 23:59:59 * * @return none */ public function getDayUtc($date, &$start, &$end, $localTimezone) { // get the date/time in local timezone $day = new Time($date, $localTimezone); $start = new Time($day->format("Y/m/d"), "America/Chicago"); // peel off the time, leave the date only $end = new Time($day->format("Y/m/d 23:59:59"), "America/Chicago"); // change them to utc for the $start->timezone = "UTC"; $end->timezone = "UTC"; //debug($start); //debug($end); //die; }
/** * Index method * * @return void */ public function indexToday($dayOffset = 0) { $dayStart = null; $dayEnd = null; $this->getDay($dayOffset, $dayStart, $dayEnd, "America/Chicago"); $query = $this->Sessions->find()->where(['Sessions.created >=' => $dayStart])->where(['Sessions.created <=' => $dayEnd])->contain(['Users', 'Projects', 'Tasks'])->order(['Sessions.created' => 'DESC']); // this is just total elapsed time for the day not a real datetime $totalTime = new Time('2000-01-01'); //debug($totalTime); $recs = $query->toArray(); //debug($recs);die; $index = 0; foreach ($recs as $session) { $start = new Time($session['created']); $stop = new Time($session['stopped']); $interval = $start->diff($stop); $totalTime->add($interval); // if elapsed time is more than 0 days, show the day part too if ($interval->days > 0) { $timeLapse = $interval->format('%D:%H:%I'); } else { $timeLapse = $interval->format('%H:%I'); } // just show MM:SS /* show state */ if ($session->state == 0) { $state = "not started"; } else { if ($session->state == 1) { $state = "<span style='font-weight: normal;'>STARTED</span>"; } else { if ($session->state == 2) { $state = "stopped"; } else { $state = "invalid"; } } } $recs[$index]['timeLapse'] = $timeLapse; $recs[$index]['totalTime'] = $totalTime->format('H:i'); $recs[$index]['stateDesc'] = $state; $index++; } $this->set('sessions', $recs); $this->set('totalTime', $totalTime); //debug($sessions);die; $this->set('_serialize', ['sessions']); }
public function patternevent($id = null) { $patterns = TableRegistry::get('Patterns'); $events = TableRegistry::get('Events'); $employee_id = $this->request->query('employee_id'); $patternparent_id = $this->request->query('patternparentid'); $pattern_sun = $this->request->query('patternSun'); $pattern_mon = $this->request->query('patternMon'); $pattern_tue = $this->request->query('patternTue'); $pattern_wed = $this->request->query('patternWed'); $pattern_thu = $this->request->query('patternThu'); $pattern_fri = $this->request->query('patternFri'); $pattern_sat = $this->request->query('patternSat'); $pattern_id = $this->request->query('id'); $dowMap = array('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'); // delete exisitng events for current patternParent // prior to creating events $events_to_delete = [$pattern_sun, $pattern_mon, $pattern_tue, $pattern_wed, $pattern_thu, $pattern_fri, $pattern_sat]; foreach ($events_to_delete as $key => $value) { $events->deleteAll(['pattern_id' => $value]); } $query = $patterns->find('all', ['conditions' => ['pattern_parent_id' => $patternparent_id], 'contain' => ['Resources', 'Employees']]); foreach ($query as $row) { //debug($row->toArray()); $eventsTable = TableRegistry::get('Events'); // day of week $byweekday = $dowMap[$row['day_of_week'] - 1]; // start date $patternend = new \DateTime($row['start_date']); // every n weeks $step = $row->week_of_year; // start date offset $starting_on = $row->starting_on - 1; foreach (getPatternDays($row['start_date'], $byweekday, $step, $starting_on, $row['end_date']) as $patternDay) { // create date schedule array $timezone = 'UTC'; $event = $eventsTable->newEntity(); if (!empty($query)) { //loop through patterns to //create all events based on current employee id and current pattern(s) //save to db //$count_of_leave_entitlement++; //format start and end dates including adding start / end hours and minutes $starthours = date('H', strtotime($row->resource->start_time)); $startmins = date('i', strtotime($row->resource->start_time)); $start = new Time($patternDay->format("Y-m-d")); $start->modify('+' . $starthours . ' hours'); $start->modify('+' . $startmins . ' minutes'); $endhours = date('H', strtotime($row->resource->end_time)); $endmins = date('i', strtotime($row->resource->end_time)); $end = new Time($patternDay->format("Y-m-d")); if ($row->resource->night_shift == 1) { $end->modify('+ 1 day'); } $end->modify('+' . $endhours . ' hours'); $end->modify('+' . $endmins . ' minutes'); // event model to save $event->title = $row->employee->first_name[0] . ' ' . $row->employee->last_name; $event->startdate = $start->format('Y-m-d H:i:s'); $event->enddate = $end->format('Y-m-d H:i:s'); $event->allDay = $row->resource->allDay; $event->pattern_id = $row->id; $event->resource_id = $row->resource_id; $event->employee_id = $row->employee->id; $event->event_type = 'pattern'; $event->patternparentid = $patternparent_id; $eventsTable->save($event); } else { $this->Flash->error(__('The events could not be saved. Please, try again.')); } } } $this->Flash->success(__('The events have been saved.')); return $this->redirect($this->referer()); $this->autoRender = false; }
/** * Sets a cookie expire time to remove cookie value. * * This is only done once all values in a cookie key have been * removed with delete. * * @param string $name Name of cookie * @return void */ protected function _delete($name) { $config = $this->configKey($name); $expires = new Time('now'); $this->_response->cookie(array('name' => $name, 'value' => '', 'expire' => $expires->format('U') - 42000, 'path' => $config['path'], 'domain' => $config['domain'], 'secure' => $config['secure'], 'httpOnly' => $config['httpOnly'])); }