$json = array('error' => 'No changes were detected.'); exit(json_encode($json)); } } elseif ($action == 'accept') { // join user to project, if they're not already $pu = ProjectUser::find(Session::getUserID(), $project->getID()); if (empty($pu)) { // not a project member yet, so make them one $pu = new ProjectUser(array('project_id' => $project->getID(), 'user_id' => Session::getUserID(), 'relationship' => ProjectUser::MEMBER)); $pu->save(); // log it $logEvent = new Event(array('event_type_id' => 'join_project', 'project_id' => $project->getID(), 'user_1_id' => Session::getUserID())); $logEvent->save(); } elseif ($project->isFollower(Session::getUserID())) { // convert follower to member $pu->setRelationship(ProjectUser::MEMBER); $pu->save(); // log it $logEvent = new Event(array('event_type_id' => 'join_project', 'project_id' => $project->getID(), 'user_1_id' => Session::getUserID())); $logEvent->save(); } // accept the task $accepted = new Accepted(array('creator_id' => Session::getUserID(), 'project_id' => $project->getID(), 'task_id' => $taskID, 'status' => Accepted::STATUS_PROGRESS)); $accepted->save(); // log it $logEvent = new Event(array('event_type_id' => 'accept_task', 'project_id' => $project->getID(), 'user_1_id' => Session::getUserID(), 'item_1_id' => $accepted->getID(), 'item_2_id' => $taskID)); $logEvent->save(); // send us back Session::setMessage('You joined the task. Good luck!'); $json = array('success' => '1', 'successUrl' => Url::task($taskID)); echo json_encode($json);