コード例 #1
0
 private function handleActionEvent($event)
 {
     $user = $event->getUser();
     $object = $event->getValue('object');
     if (!$object || !$object->getPHID()) {
         // No object, or the object has no PHID yet..
         return;
     }
     if (!$object instanceof PhrequentTrackableInterface) {
         // This object isn't a time trackable object.
         return;
     }
     if (!$this->canUseApplication($event->getUser())) {
         return;
     }
     $tracking = PhrequentUserTimeQuery::isUserTrackingObject($user, $object->getPHID());
     if (!$tracking) {
         $track_action = id(new PhabricatorActionView())->setName(pht('Start Tracking Time'))->setIcon('fa-clock-o')->setWorkflow(true)->setHref('/phrequent/track/start/' . $object->getPHID() . '/');
     } else {
         $track_action = id(new PhabricatorActionView())->setName(pht('Stop Tracking Time'))->setIcon('fa-clock-o red')->setWorkflow(true)->setHref('/phrequent/track/stop/' . $object->getPHID() . '/');
     }
     if (!$user->isLoggedIn()) {
         $track_action->setDisabled(true);
     }
     $this->addActionMenuItems($event, $track_action);
 }
コード例 #2
0
 public function buildSearchForm(AphrontFormView $form, PhabricatorSavedQuery $saved_query)
 {
     $user_phids = $saved_query->getParameter('userPHIDs', array());
     $ended = $saved_query->getParameter('ended', PhrequentUserTimeQuery::ENDED_ALL);
     $order = $saved_query->getParameter('order', PhrequentUserTimeQuery::ORDER_ENDED_DESC);
     $form->appendControl(id(new AphrontFormTokenizerControl())->setDatasource(new PhabricatorPeopleDatasource())->setName('users')->setLabel(pht('Users'))->setValue($user_phids))->appendChild(id(new AphrontFormSelectControl())->setLabel(pht('Ended'))->setName('ended')->setValue($ended)->setOptions(PhrequentUserTimeQuery::getEndedSearchOptions()))->appendChild(id(new AphrontFormSelectControl())->setLabel(pht('Order'))->setName('order')->setValue($order)->setOptions(PhrequentUserTimeQuery::getOrderSearchOptions()));
 }
コード例 #3
0
 public function loadStatus(PhabricatorUser $user)
 {
     $status = array();
     // Show number of objects that are currently
     // being tracked for a user.
     $count = PhrequentUserTimeQuery::getUserTotalObjectsTracked($user);
     $type = PhabricatorApplicationStatusView::TYPE_NEEDS_ATTENTION;
     $status[] = id(new PhabricatorApplicationStatusView())->setType($type)->setText(pht('%d Object(s) Tracked', $count))->setCount($count);
     return $status;
 }
コード例 #4
0
 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;
 }
コード例 #5
0
 public function loadStatus(PhabricatorUser $user)
 {
     $status = array();
     $limit = self::MAX_STATUS_ITEMS;
     // Show number of objects that are currently
     // being tracked for a user.
     $count = PhrequentUserTimeQuery::getUserTotalObjectsTracked($user, $limit);
     if ($count >= $limit) {
         $count_str = pht('%s+ Object(s) Tracked', new PhutilNumber($limit - 1));
     } else {
         $count_str = pht('%s Object(s) Tracked', new PhutilNumber($count));
     }
     $type = PhabricatorApplicationStatusView::TYPE_NEEDS_ATTENTION;
     $status[] = id(new PhabricatorApplicationStatusView())->setType($type)->setText($count_str)->setCount($count);
     return $status;
 }