/** * This function sends notification to HipChat about updates of workitems * * @param Array $options - Array with options: * type - type of notification to send out * workitem - workitem object with updated data * @param Array $data - Array with additional data that needs to be passed on */ public static function workitemNotifyHipchat($options, $data = null) { $workitem = $options['workitem']; try { $project = new Project(); $project->loadById($workitem->getProjectId()); $project_name = $project->getName(); } catch (Exception $e) { error_log($e->getMessage() . " Workitem: #" . $workitem->getId() . " has an invalid project id:" . $workitem->getProjectId()); return; } if (!$project->getHipchatEnabled()) { return; } $itemId = $workitem->getId(); $itemLinkShort = '<a href="' . WORKLIST_URL . $itemId . '">#' . $itemId . '</a>'; $itemLink = $itemLinkShort . ' - ' . $workitem->getSummary(); $message = null; $message_format = 'html'; $notify = 0; switch ($options['type']) { case 'comment': $nick = $data['who']; $related = $data['related']; $message = "{$nick} posted a comment on job {$itemLink}{$related}"; break; case 'fee_added': $mechanic_id = $data['mechanic_id']; $fee_amount = $data['fee_amount']; $nick = $data['nick']; if ($mechanic_id == $_SESSION['userid']) { $message = "{$nick} added a fee of \${$fee_amount} to item {$itemLink}"; } else { $rt = mysql_query("SELECT nickname FROM " . USERS . " WHERE id='" . (int) $mechanic_id . "'"); if ($rt) { $row = mysql_fetch_assoc($rt); $nickname = $row['nickname']; } else { $nickname = "unknown-{$mechanic_id}"; } $message = "{$nick} on behalf of {$nickname} added a fee of \${$fee_amount} to item {$itemLink}"; } break; case 'fee_deleted': $nick = $data['nick']; $fee_nick = $data['fee_nick']; $message = "{$nick} deleted a fee from {$fee_nick} on item {$itemLink}"; break; case 'tip_added': $nick = $data['nick']; $tipped_nickname = $data['tipped_nickname']; $message = "{$nick} tipped {$tipped_nickname} on job {$itemLink}"; break; case 'bid_accepted': $nick = $data['nick']; $bid_amount = $data['bid_amount']; $nickname = $data['nickname']; $message = "{$nick} accepted {$bid_amount} from {$nickname} on item {$itemLink}. Status set to In Progress."; break; case 'bid_placed': $message = "A bid was placed on item {$itemLink}."; $new_update_message = $data['new_update_message']; if ($new_update_message) { $message .= " {$new_update_message}"; } break; case 'bid_updated': $message = "Bid updated on item {$itemLink}"; break; case 'workitem-add': $nick = $data['nick']; $status = $data['status']; $message = "{$nick} added job {$itemLink}. Status set to {$status}"; break; case 'code-review-completed': $nick = $data['nick']; $message = "{$nick} has completed their code review for {$itemLink}"; break; case 'workitem-update': $nickname = $data['nick']; $new_update_message = $data['new_update_message']; $related = $data['related']; $message = "{$nickname} updated item {$itemLink}.{$new_update_message}{$related}"; break; case 'status-notify': $nick = $data['nick']; $status = $data['status']; $message = "{$nick} updated item {$itemLink}. Status set to {$status}"; break; case 'code-review-started': $nick = $data['nick']; $message = "{$nick} has started a code review for {$itemLink}"; break; case 'code-review-canceled': $nick = $data['nick']; $message = "{$nick} has canceled their code review for {$itemLink}"; break; } if ($message) { $project->sendHipchat_notification($message, $message_format, $notify); } }
public static function getById($project_id) { $project = new Project(); $project->loadById($project_id); return $project; }
protected function hasCodeReviewRights($userId, $workitem) { $project = new Project(); $project->loadById($workitem->getProjectId()); $users_favorite = new Users_Favorite(); if ($project->isCodeReviewer($userId)) { return true; } return false; }