/** * @inheritdoc */ protected function view() { $view = parent::view(); $view["format"] = "datetime"; return $view; }
/** * XXX: A mess,remove my in 1.0 */ function event_description($history) { $return = ''; global $fs, $baseurl, $details, $page; $translate = array('item_summary' => 'summary', 'project_id' => 'attachedtoproject', 'mark_private' => 'visibility'); // if soemthing gets double escaped, add it here. $noescape = array('new_value', 'old_value'); foreach ($history as $key => $value) { if (!in_array($key, $noescape)) { $history[$key] = Filters::noXSS($value); } } $new_value = $history['new_value']; $old_value = $history['old_value']; switch ($history['event_type']) { case '3': //Field changed if (!$new_value && !$old_value) { $return .= eL('taskedited'); break; } $field = $history['field_changed']; switch ($field) { case 'project_id': $old_value = $history[$field . '1']; $new_value = $history[$field . '2']; case 'item_summary': $field = eL($translate[$field]); $old_value = Filters::noXSS($old_value); $new_value = Filters::noXSS($new_value); break; case 'percent_complete': $field = eL('percentcomplete'); $old_value .= '%'; $new_value .= '%'; break; case 'mark_private': $field = eL($translate[$field]); $old_value = $old_value ? eL('private') : eL('public'); $new_value = $new_value ? eL('private') : eL('public'); break; case 'detailed_desc': $field = sprintf("<a href=\"javascript:getHistory('%d', '%s', 'history', '%d');\n showTabById('history', true);\">%s</a>", $history['task_id'], $baseurl, $history['history_id'], eL('details')); if (!empty($details)) { $details_previous = $page->text->render($old_value); $details_new = $page->text->render($new_value); } $old_value = ''; $new_value = ''; break; } if (is_numeric($field)) { $field = $history['field_name']; $f = new Field($history); if ($f->prefs['field_type'] == FIELD_LIST) { $t = $history['list_type'] == LIST_CATEGORY ? 'c' : 'l'; $new = array('field' . $f->id => $history['new_value_' . $t], 'field' . $f->id . '_name' => $history['new_value_' . $t]); $old = array('field' . $f->id => $history['old_value_' . $t], 'field' . $f->id . '_name' => $history['old_value_' . $t]); $new_value = $f->view($new); $old_value = $f->view($old); } else { if ($f->prefs['field_type'] == FIELD_USER) { $new_value = tpl_userlink($history['new_value']); $old_value = tpl_userlink($history['old_value']); } else { if ($f->prefs['field_type'] == FIELD_DATE) { $new_value = $f->view(array('field' . $f->id => $history['new_value'])); $old_value = $f->view(array('field' . $f->id => $history['old_value'])); } } } } $return .= eL('fieldchanged') . ": {$field}"; if ($old_value || $new_value) { $return .= " ({$old_value} → {$new_value})"; } break; case '1': //Task opened $return .= eL('taskopened'); break; case '2': //Task closed $return .= eL('taskclosed'); $return .= " ({$history['resolution_name']}"; if (!empty($old_value)) { $return .= ': ' . $page->text->render($old_value, true); } $return .= ')'; break; case '4': //Comment added $return .= sprintf('<a href="%s#comment%d">%s</a>', Filters::noXSS(CreateUrl(array('details', 'task' . $history['task_id']))), $history['new_value'], eL('commentadded')); break; case '5': //Comment edited $return .= sprintf("<a href=\"javascript:getHistory('%d', '%s', 'history', '%d');\">%s</a>", $history['task_id'], $baseurl, $history['history_id'], eL('commentedited')); if ($history['c_date_added']) { $return .= sprintf(' (%s %s - %s)', eL('commentby'), tpl_userlink($history['c_user_id']), formatDate($history['c_date_added'], true)); } if ($details) { $details_previous = $page->text->render($old_value); $details_new = $page->text->render($new_value); } break; case '6': //Comment deleted $return .= sprintf("<a href=\"javascript:getHistory('%d', '%s', 'history','%d');\">%s</a>", $history['task_id'], $baseurl, $history['history_id'], eL('commentdeleted')); if (!empty($new_value) && !empty($history['field_changed'])) { $return .= sprintf('(%s %s - %s)', eL('commentby'), tpl_userlink($new_value), formatDate($history['field_changed'], true)); } if (!empty($details)) { $details_previous = $page->text->render($old_value); $details_new = ''; } break; case '7': //Attachment added $return .= eL('attachmentadded'); if ($history['orig_name']) { $return .= sprintf(': <a href="%s?getfile=%d">%s</a>', $baseurl, $new_value, $history['orig_name']); } else { if ($history['old_value']) { $return .= ': ' . $history['old_value']; } } break; case '8': //Attachment deleted $return .= eL('attachmentdeleted') . ': ' . Filters::noXSS($new_value); break; case '9': //Notification added $return .= eL('notificationadded') . ': ' . tpl_userlink($new_value); break; case '10': //Notification deleted $return .= eL('notificationdeleted') . ': ' . tpl_userlink($new_value); break; case '11': //Related task added $return .= eL('relatedadded') . ': ' . tpl_tasklink($new_value); break; case '12': //Related task deleted $return .= eL('relateddeleted') . ': ' . tpl_tasklink($new_value); break; case '13': //Task reopened $return .= eL('taskreopened'); break; case '14': //Task assigned if (empty($old_value)) { $users = explode(' ', trim($new_value)); $users = array_map('tpl_userlink', $users); $return .= eL('taskassigned') . ' '; $return .= implode(', ', $users); } elseif (empty($new_value)) { $return .= eL('assignmentremoved'); } else { $users = explode(' ', trim($new_value)); $users = array_map('tpl_userlink', $users); $return .= eL('taskreassigned') . ' '; $return .= implode(', ', $users); } break; case '17': //Reminder added $return .= eL('reminderadded') . ': ' . tpl_userlink($new_value); break; case '18': //Reminder deleted $return .= eL('reminderdeleted') . ': ' . tpl_userlink($new_value); break; case '19': //User took ownership $return .= eL('ownershiptaken') . ': ' . tpl_userlink($new_value); break; case '20': //User requested task closure $return .= eL('closerequestmade') . ' - ' . $new_value; break; case '21': //User requested task $return .= eL('reopenrequestmade') . ' - ' . $new_value; break; case '22': // Dependency added $return .= eL('depadded') . ' ' . tpl_tasklink($new_value); break; case '23': // Dependency added to other task $return .= eL('depaddedother') . ' ' . tpl_tasklink($new_value); break; case '24': // Dependency removed $return .= eL('depremoved') . ' ' . tpl_tasklink($new_value); break; case '25': // Dependency removed from other task $return .= eL('depremovedother') . ' ' . tpl_tasklink($new_value); break; // 26 and 27 replaced by 0 (mark_private) // 26 and 27 replaced by 0 (mark_private) case '28': // PM request denied $return .= eL('pmreqdenied') . ' - ' . $new_value; break; case '29': // User added to assignees list $return .= eL('addedtoassignees'); break; case '30': // user created $return .= eL('usercreated'); break; case '31': // user deleted $return .= eL('userdeleted'); break; } if (isset($details_previous)) { $GLOBALS['details_previous'] = $details_previous; } if (isset($details_new)) { $GLOBALS['details_new'] = $details_new; } return $return; }