Example #1
2
 /**
  * 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'));
 }
Example #4
0
 /**
  * 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);
 }
Example #5
0
 /**
  * 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'));
 }
Example #6
0
 /**
  * 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);
 }
Example #7
0
 /**
  * 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'));
 }
Example #8
0
 /**
  * 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']);
 }
Example #11
0
 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;
 }
Example #12
-1
 /**
  * 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']));
 }