public function stopTracking(PhabricatorUser $user, $phid, $timestamp, $note) { if (!PhrequentUserTimeQuery::isUserTrackingObject($user, $phid)) { // Don't do anything, it's not being tracked. return null; } $usertime_dao = new PhrequentUserTime(); $conn = $usertime_dao->establishConnection('r'); queryfx($conn, 'UPDATE %T usertime ' . 'SET usertime.dateEnded = %d, ' . 'usertime.note = %s ' . 'WHERE usertime.userPHID = %s ' . 'AND usertime.objectPHID = %s ' . 'AND usertime.dateEnded IS NULL ' . 'ORDER BY usertime.dateStarted, usertime.id DESC ' . 'LIMIT 1', $usertime_dao->getTableName(), $timestamp, $note, $user->getPHID(), $phid); return $phid; }
public static function getUserTimeSpentOnObject(PhabricatorUser $user, $phid) { $usertime_dao = new PhrequentUserTime(); $conn = $usertime_dao->establishConnection('r'); // First calculate all the time spent where the // usertime blocks have ended. $sum_ended = queryfx_one($conn, 'SELECT SUM(usertime.dateEnded - usertime.dateStarted) N ' . 'FROM %T usertime ' . 'WHERE usertime.userPHID = %s ' . 'AND usertime.objectPHID = %s ' . 'AND usertime.dateEnded IS NOT NULL', $usertime_dao->getTableName(), $user->getPHID(), $phid); // Now calculate the time spent where the usertime // blocks have not yet ended. $sum_not_ended = queryfx_one($conn, 'SELECT SUM(UNIX_TIMESTAMP() - usertime.dateStarted) N ' . 'FROM %T usertime ' . 'WHERE usertime.userPHID = %s ' . 'AND usertime.objectPHID = %s ' . 'AND usertime.dateEnded IS NULL', $usertime_dao->getTableName(), $user->getPHID(), $phid); return $sum_ended['N'] + $sum_not_ended['N']; }