public function GET() { $policy = new Policy_LoggedIn($this->app); $app = Config::get('app'); $userid = $policy->getData(); $request = $this->app->request(); if (!$userid) { throw new Exception_Api("Unable to authenticate."); } $days_back = trim($request->get('days_back')); if (!is_numeric($days_back) && $days_back != 'all' && $days_back != 'ytd') { throw new Exception_Api('Missing or invalid days_back field.'); } $mapper = new Mapper_Settings(); $mapper->updateSettingForUserid($userid, 'default_view', $days_back); $settings = $mapper->getFilteredSettingsByUserid($userid); $serverDateTimeZone = new DateTimeZone($app->default_timezone); $userDateTimeZone = new DateTimeZone($settings['timezone']); $serverDateTime = new DateTime("now", $serverDateTimeZone); $userDateTime = new DateTime("now", $userDateTimeZone); $tzDiff = $userDateTime->getOffset() - $serverDateTime->getOffset(); $tzDiff = $tzDiff / (60 * 60); $weight_mapper = new Mapper_Weight(); $weights = $weight_mapper->getWeightsForUser($userid, $days_back); $formatted_weights = array(); foreach ($weights as $weight) { $formatted_weights[] = array('date' => $weight['create_time'], 'weight' => $weight['weight'], 'comment' => htmlentities($weight['comment'])); } return array('data' => $formatted_weights, 'units' => $app->weight_units, 'tz_offset' => $tzDiff); }
public function POST() { $policy = new Policy_LoggedIn($this->app); $policy->ensure(); $userid = $policy->getData(); $app = Config::get('app'); $request = $this->app->request(); $user_settings = $app->user_settings; foreach ($user_settings as $setting) { $val = trim($request->post($setting['name'])); $newVal = $setting['default']; if ($setting['validate'] == 'boolean') { if ($val == 'on') { $newVal = 1; } else { $newVal = 0; } } else { if ($setting['validate'] == 'height') { $newVal = $val; if (!is_numeric($newVal)) { $newVal = 0; } else { if ($newVal < 0) { $newVal = 0; } else { if ($newVal > 120) { $newVal = 120; } } } $newVal = round($newVal, 1); } else { if ($setting['validate'] == 'weight') { $newVal = $val; if (!is_numeric($newVal)) { $newVal = 0; } else { if ($newVal < 0) { $newVal = 0; } else { if ($newVal > 1000) { $newVal = 1000; } } } $newVal = round($newVal, 1); } else { if ($setting['validate'] == 'timezone') { $zones = DateTimeZone::listIdentifiers(); if (in_array($val, $zones)) { $newVal = $val; } } } } } $settings_mapper = new Mapper_Settings(); $settings_mapper->updateSettingForUserid($userid, $setting['name'], $newVal); } Helper_Message::setSuccess($this->app, "Your settings were updated."); $this->app->redirect('/settings'); die; }