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 render() { $page = 'home'; $app = Config::get('app'); $policy = new Policy_LoggedIn($this->app); $logged_in = $policy->check(); $app->menu_items = Helper_Menu::processMenuItems($app->menu_items, $page, $logged_in); $user = null; $formatted_weights = array(); $settingsVals = array(); $viewOptions = array(); if ($logged_in) { $userid = $policy->getData(); $user_mapper = new Mapper_User(); $user = $user_mapper->getUserById($userid); $settings_mapper = new Mapper_Settings(); $settingsVals = $settings_mapper->getFilteredSettingsByUserid($userid); $defaultView = 30.5; if (isset($settingsVals['default_view'])) { $defaultView = $settingsVals['default_view']; } $viewOptions = array(0 => array('value' => 7, 'name' => '1 week'), 1 => array('value' => 30.5, 'name' => '1 month'), 2 => array('value' => 61, 'name' => '2 months'), 3 => array('value' => 91.5, 'name' => '3 months'), 4 => array('value' => 182.5, 'name' => '6 months'), 5 => array('value' => 365, 'name' => '1 year'), 6 => array('value' => 'ytd', 'name' => 'Year to date'), 7 => array('value' => 'all', 'name' => 'All data')); foreach ($viewOptions as &$option) { if ($option['value'] == $defaultView) { $option['selected'] = true; } } } return array('app' => $app, 'breadcrumb' => 'Home', 'error' => Helper_Message::getError(), 'logged_in' => $logged_in, 'user' => $user, 'user_settings' => $settingsVals, 'view_options' => $viewOptions); }
public function check() { $isLoggedIn = Helper_Session::getUserFromSession() !== false; if ($isLoggedIn) { $userid = Helper_Session::getUserFromSession(); $defaultTz = date_default_timezone_get(); $mapper = new Mapper_Settings(); $settings = $mapper->getFilteredSettingsByUserid($userid); $tzSet = date_default_timezone_set($settings['timezone']); if (!$tzSet) { date_default_timezone_set($defaultTz); } } return $isLoggedIn; }
public function render() { $page = 'settings'; $app = Config::get('app'); $policy = new Policy_LoggedIn($this->app); $userid = $policy->getData(); $app->menu_items = Helper_Menu::processMenuItems($app->menu_items, $page, $userid); $userSettings = $app->user_settings; usort($userSettings, array('self', 'sortSettings')); $settings_mapper = new Mapper_Settings(); $settingsVals = $settings_mapper->getFilteredSettingsByUserid($userid); foreach ($userSettings as &$setting) { $setting['value'] = $settingsVals[$setting['name']]; } return array('app' => $app, 'breadcrumb' => 'Settings', 'user_settings' => $userSettings, 'error' => Helper_Message::getError(), 'success' => Helper_Message::getSuccess()); }
public function POST() { $policy = new Policy_LoggedIn($this->app); $policy->ensure(); $userid = $policy->getData(); $request = $this->app->request(); $tempPassword = $request->post('password'); $user_mapper = new Mapper_User(); $user = $user_mapper->getUserById($userid); if ($user['password_hash'] != Mapper_User::generateHash($tempPassword)) { $this->error("The password you entered was invalid."); } else { // Delete settings $settings_mapper = new Mapper_Settings(); $settings_mapper->deleteAllSettingsForUser($userid); // Delete weights $weight_mapper = new Mapper_Weight(); $weight_mapper->deleteAllWeightsForUser($userid); // Delete user last $user_mapper->deleteUserById($userid); $this->success(); } }
public static function getTargetStatsForUser($userid, $changePerDay) { $weightToTarget = 'N/A'; $timeToTarget = 'N/A'; $targetWeight = 'N/A'; $weight_mapper = new Mapper_Weight(); $weight = $weight_mapper->getMostRecentWeightForUser($userid); $settings_mapper = new Mapper_Settings(); $settings = $settings_mapper->getFilteredSettingsByUserid($userid); if ($settings['target_weight'] > 0) { $weightToTarget = $settings['target_weight'] - $weight; $targetWeight = $settings['target_weight']; // Trying to lose weight, and they're losing it if ($weightToTarget < 0 && $changePerDay < 0) { $timeToTarget = $weightToTarget / $changePerDay; } else { if ($weightToTarget > 0 && $changePerDay > 0) { $timeToTarget = $weightToTarget / $changePerDay; } } } if ($timeToTarget != 'N/A') { if ($timeToTarget > 30.5 * 2 - 7) { $timeToTarget = $timeToTarget / 30.5; $targetUnits = 'month'; } else { if ($timeToTarget > 7 * 2 - 1) { $timeToTarget = $timeToTarget / 7; $targetUnits = 'week'; } else { $targetUnits = 'day'; } } $timeToTarget = round($timeToTarget); if ($timeToTarget != 1) { $targetUnits = $targetUnits . 's'; } if ($timeToTarget == 0) { $timeToTarget = 'less than a day'; } else { $timeToTarget = 'about ' . $timeToTarget . ' ' . $targetUnits; } } if ($weightToTarget != 'N/A') { $weightToTarget = round(abs($weightToTarget), 1); } return array('weight_to_target' => $weightToTarget, 'time_to_target' => $timeToTarget, 'target_weight' => $targetWeight); }
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; }