Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 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;
 }