Beispiel #1
0
 public static function updateUserDataPoint($userId, $dataPointId, $value, $updateTimestamp = null, $triggers = array(), $silentlySkipTriggers = false)
 {
     // Does the user have a value for this data point already
     $exists = DB::table("users_data_points")->where("user_id", '=', (int) $userId)->where("data_point_id", '=', $dataPointId)->grab(1)->get();
     $oldvalue = "";
     // If they have an entry already, just update it
     if ($exists) {
         $userDataPointsId = $exists->id;
         $oldvalue = $exists->value;
         // only if we're dealing with making new kicks, allow an old value and a new
         // value to be the same and so that a new record is created in user_data_point_history
         if ($oldvalue == $value && $dataPointId == DataPoint::$BABY_KICK) {
             $isUpdated = true;
         } else {
             //$isUpdated would be false otherwise if $oldvalue and $value were the same
             $isUpdated = DB::table('users_data_points')->where('user_id', '=', (int) $userId)->where('data_point_id', '=', $dataPointId)->update(array("value" => $value));
         }
         // Otherwise, create a new one
     } else {
         $array = array('user_id' => $userId, 'data_point_id' => $dataPointId, 'value' => $value);
         $userDataPointsId = DB::table('users_data_points')->insert_get_id($array);
         $isUpdated = true;
     }
     // If the update was successful, add in history records
     Log::user("isUpdated is: {$isUpdated} and user data points id is: {$userDataPointsId}");
     if ($userDataPointsId > 0) {
         // $isUpdated &&
         $dt = new DateTime();
         if ($updateTimestamp) {
             $dt->setTimestamp($updateTimestamp);
         }
         $updateTime = $dt->format(DATABASE_DATETIME_FORMAT);
         $array = array('current_user_id' => $userId, 'users_data_points_id' => $userDataPointsId, 'updated_at' => $updateTime, 'old_value' => $oldvalue, 'new_value' => $value);
         //Log::user((print_r($array)));
         DB::table('user_data_point_history')->insert($array);
     }
     if ($silentlySkipTriggers) {
         return true;
     }
     // mostly for testing
     Log::user("Calling out triggers");
     // Are there any triggers to checked?
     $defaultTriggers = DataPoint::getApplicableTriggers($dataPointId, $userId);
     $triggers = array_merge($triggers, $defaultTriggers);
     DataPoint::processTriggers($triggers);
     return true;
 }