id = $id;
}
$this->load($this->id);
}
public function load($id = NULL) {
$ret = false;
if ($id) {
$this->id = $id;
$q = "SELECT * FROM " . DB_PREFIX . "activity WHERE id = {$this->id}";
$ret = query_row($q);
}
if ($ret) {
$this->id = $ret->id;
$this->creator = $ret->creator;
$this->project_id = $ret->project_id;
$this->activity_type = $ret->activity_type;
$this->activity_subtype = $ret->activity_subtype;
$this->body = $ret->body;
$this->activity_data = $ret->activity_data;
$this->created = $ret->created;
}
}
public function getId() {
return $this->id;
}
public function getCreator() {
return $this->creator;
}
public function getCreatorObject() {
return new User($this->creator);
}
public function getProjectId() {
return $this->project_id;
}
public function getProjectObject() {
return new Project($this->project_id);
}
public function getActivityType() {
return $this->activity_type;
}
public function getActivitySubtype() {
return $this->activity_subtype;
}
public function getBody() {
if ($this->getActivityType() == 'activity') {
$activity_subtype = $this->getActivitySubtype();
$body = "";
$data = $this->getActivityDataArray();
switch ($activity_subtype) {
case "edit_project":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%1$s changed the project.'), $data);
break;
case "edit_project_start_date":
$data[] = $this->getCreatorObject()->getFullname();
$data[0] = date('d.m.Y', $data[0]);
$data[1] = date('d.m.Y', $data[1]);
$body = vsprintf(_('%3$s changed the project start date from %1$s to %2$s.'), $data);
break;
case "edit_project_end_date":
$data[] = $this->getCreatorObject()->getFullname();
$data[0] = date('d.m.Y', $data[0]);
$data[1] = date('d.m.Y', $data[1]);
$body = vsprintf(_('%3$s changed the project end date from %1$s to %2$s.'), $data);
break;
case "join_project":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%1$s joined the project.'), $data);
break;
case "leave_project":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%1$s left the project.'), $data);
break;
case "add_task":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s added task %1$s'), $data);
break;
case "edit_task":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s updated task %1$s'), $data);
break;
case "delete_task":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s deleted task %1$s'), $data);
break;
case "add_task_to_timeline":
$data[] = $this->getCreatorObject()->getFullname();
$data[1] = date('d.m.Y', $data[1]);
$data[2] = date('d.m.Y', $data[2]);
$body = vsprintf(_('%4$s added task %1$s to timeline from %2$s until %3$s'), $data);
break;
case "remove_task_from_timeline":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s removed task %1$s from timeline.'), $data);
break;
case "add_resource":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s added resource %1$s'), $data);
break;
case "edit_resource":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s updated resource %1$s'), $data);
break;
case "delete_resource":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s deleted resource %1$s'), $data);
break;
case "add_milestone":
$data[] = $this->getCreatorObject()->getFullname();
$data[1] = date('d.m.Y', $data[1]);
$body = vsprintf(_('%3$s added milestone %1$s at %2$s'), $data);
break;
case "edit_milestone":
$data[] = $this->getCreatorObject()->getFullname();
$data[1] = date('d.m.Y', $data[1]);
$body = vsprintf(_('%3$s updated milestone %1$s at %2$s'), $data);
break;
case "delete_milestone":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s deleted milestone %1$s'), $data);
break;
case "add_document":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s added document %1$s'), $data);
break;
case "add_document_version":
$data[] = $this->getCreatorObject()->getFullname();
$body = vsprintf(_('%2$s added document version %1$s'), $data);
break;
case "add_comment":
$data[] = $this->getCreatorObject()->getFullname();
$data[0] = date('d.m.Y', $data[0]);
$body = vsprintf(_('%2$s added comment at %1$s'), $data);
break;
case "edit_comment":
$data[] = $this->getCreatorObject()->getFullname();
$data[0] = date('d.m.Y', $data[0]);
$body = vsprintf(_('%2$s changed comment at %1$s'), $data);
break;
case "delete_comment":
$data[] = $this->getCreatorObject()->getFullname();
$data[0] = date('d.m.Y', $data[0]);
$body = vsprintf(_('%2$s deleted comment at %1$s'), $data);
break;
case "add_task_member":
$body = vsprintf(_('Task %1$s assigned to %2$s'), $data);
break;
case "remove_task_member":
$body = vsprintf(_('Task %1$s assignment removed from %2$s'), $data);
break;
case "add_task_resource":
$body = vsprintf(_('Resource %2$s assigned to task %1$s'), $data);
break;
case "remove_task_resource":
$body = vsprintf(_('Resource %2$s is no longer assigned to task %1$s'), $data);
break;
default:
// TODO Check if this stays that way
$body = "NOT IMPLEMENTED";
break;
}
return $body;
}
return $this->body;
}
public function getActivityData() {
return $this->activity_data;
}
public function getActivityDataArray() {
$data = json_decode($this->activity_data);
if (!is_array($data)) {
$data = array();
}
return $data;
}
public function getCreated() {
// TODO possibly formatting is needed
return $this->created;
}
public static function create($creator, $project_id, $activity_type, $activity_subtype, $body, $activity_data) {
$creator = (int)$creator;
$project_id = (int)$project_id;
$activity_type = mysql_real_escape_string($activity_type);
$activity_subtype = mysql_real_escape_string($activity_subtype);
$body = mysql_real_escape_string($body);
// NB! Information inside $activity_data Array should be UNESCAPED
// Need to escape resulting JSON string
$activity_data = mysql_real_escape_string(json_encode($activity_data));
$q = "INSERT INTO " . DB_PREFIX . "activity (creator, project_id, activity_type, activity_subtype, body, activity_data, created) VALUES ($creator, $project_id, '$activity_type', '$activity_subtype', '$body', '$activity_data', NOW())";
$uid = query_insert($q);
if ($uid) {
// TODO Possibly some activity needs to be added
return $uid;
}
return false;
}
/*public function delete() {
// TODO Check on how can delete is needed
// XXX This needs to be protected
$q = "DELETE FROM " . DB_PREFIX . "activity WHERE id = {$this->id}";
return query_delete($q);
}*/
}