4 * ContribTracker plugin
6 * Copyright 2009, Roland Mas
10 require_once('../../env.inc.php');
11 require_once $gfwww.'include/pre.php';
12 $plugin = plugin_get_object ('contribtracker') ;
14 function display_contribution ($c, $show_groups = false) {
16 print '<h2>'.$c->getName().'</h2>' ;
18 print '<strong>'._('Group:').'</strong> ' ;
19 print util_make_link_g ($c->getGroup()->getUnixName(),
20 $c->getGroup()->getId(),
21 htmlspecialchars ($c->getGroup()->getPublicName())) ;
25 print '<strong>'._('Date:').'</strong> ' ;
26 print strftime (_('%Y-%m-%d'), $c->getDate ()) ;
29 print '<strong>'._('Description:').'</strong> ' ;
30 print htmlspecialchars ($c->getDescription ()) ;
33 $parts = $c->getParticipations () ;
34 print '<strong>'.ngettext('Participant:',
36 count ($parts)).'</strong> ' ;
39 foreach ($parts as $p) {
41 printf (_('%s: %s (%s)'),
42 htmlspecialchars ($p->getRole()->getName()),
43 util_make_link ('/plugins/'.$plugin->name.'/?actor_id='.$p->getActor()->getId (),
44 htmlspecialchars ($p->getActor()->getName())),
45 htmlspecialchars ($p->getActor()->getLegalStructure()->getName())) ;
46 if ($p->getActor()->getLogo() != '') {
47 print ' <img type="image/png" src="'.util_make_url ('/plugins/'.$plugin->name.'/actor_logo.php?actor_id='.$p->getActor()->getId ()).'" />' ;
54 $group_id = getIntFromRequest ('group_id') ;
55 $actor_id = getIntFromRequest ('actor_id') ;
57 $group = group_get_object ($group_id) ;
58 if(!$group || !is_object ($group)) {
61 if (!$group->isPublic()) {
62 $perm =& $group->getPermission(session_get_user());
64 if (!$perm || !is_object($perm) || !$perm->isMember()) {
69 $contrib_id = getIntFromRequest ('contrib_id') ;
70 if ($contrib_id) { // List only one particular contribution
71 $contrib = new ContribTrackerContribution ($contrib_id) ;
72 if (!$contrib || !is_object ($contrib)
73 || $contrib->getGroup()->getId() != $group_id) {
74 exit_permission_denied () ;
78 $params['toptab'] = 'contribtracker' ;
79 $params['group'] = $group_id ;
80 $params['title'] = _('Contribution details') ;
81 $params['pagename'] = 'contribtracker' ;
82 $params['sectionvals'] = array($group->getPublicName());
84 site_project_header ($params) ;
86 display_contribution ($contrib) ;
87 } else { // List all contributions relevant to a group
89 $params['toptab'] = 'contribtracker' ;
90 $params['group'] = $group_id ;
91 $params['title'] = sprintf (_('Contributions for project %s'),
92 htmlspecialchars ($group->getPublicName()));
93 $params['pagename'] = 'contribtracker' ;
94 $params['sectionvals'] = array($group->getPublicName());
96 site_project_header ($params) ;
98 $contribs = $plugin->getContributionsByGroup ($group) ;
99 usort ($contribs, array ($plugin, "ContribComparator")) ;
101 if (count ($contribs) == 0) {
102 print '<h1>'._('No contributions').'</h1>' ;
103 print _('No contributions have been recorded for this project yet.') ;
105 print '<h1>'.sprintf (_('Contributions for project %s'),
106 htmlspecialchars ($group->getPublicName())).'</h1>' ;
108 foreach ($contribs as $c) {
109 display_contribution ($c) ;
113 } elseif ($actor_id) {
114 $actor = new ContribTrackerActor ($actor_id) ;
115 if (!is_object ($actor) || $actor->isError()) {
116 exit_error (_('Invalid actor'),
117 _('Invalid actor specified')) ;
120 $HTML->header(array('title'=>_('Actor details'),'pagename'=>'contribtracker'));
122 print '<h1>'.sprintf(_('Actor details for %s'),
123 htmlspecialchars($actor->getName())).'</h1>' ;
125 print '<li><strong>'._('Name:').'</strong> '.htmlspecialchars($actor->getName()).'</li>' ;
126 print '<li><strong>'._('Address:').'</strong> '.htmlspecialchars($actor->getAddress()).'</li>' ;
127 print '<li><strong>'._('Email:').'</strong> '.htmlspecialchars($actor->getEmail()).'</li>' ;
128 print '<li><strong>'._('Legal structure:').'</strong> '.htmlspecialchars($actor->getLegalStructure()->getName()).'</li>' ;
129 print '<li><strong>'._('Description:').'</strong> '.htmlspecialchars($actor->getDescription()).'</li>' ;
131 if ($actor->getLogo() != '') {
132 print '<img type="image/png" src="'.util_make_url ('/plugins/'.$plugin->name.'/actor_logo.php?actor_id='.$actor->getId ()).'" />' ;
135 $participations = $actor->getParticipations () ;
137 if (count ($participations) == 0) {
138 printf (_("%s hasn't been involved in any contributions yet"),
139 htmlspecialchars($actor->getName())) ;
141 print '<h1>'.sprintf(ngettext('Contribution by %s',
142 'Contributions by %s',
143 count($participations)),
144 htmlspecialchars($actor->getName())).'</h1>' ;
146 foreach ($participations as $p) {
147 $c = $p->getContribution () ;
148 print '<h2>' . util_make_link ('/plugins/'.$plugin->name.'/?group_id='.$c->getGroup()->getId().'&contrib_id='.$c->getId (),
149 htmlspecialchars ($c->getName())) . '</h2>' ;
150 print '<strong>'._('Project:').'</strong> ' ;
151 print util_make_link_g ($c->getGroup()->getUnixName(),
152 $c->getGroup()->getId(),
153 $c->getGroup()->getPublicName()) ;
154 print '<br /><strong>'._('Role:').'</strong> ' ;
155 print htmlspecialchars ($p->getRole()->getName()) ;
158 } else { // Latest contributions, globally
159 $HTML->header(array('title'=>_('Contributions'),'pagename'=>'contribtracker'));
161 $contribs = $plugin->getContributions () ;
163 usort ($contribs, array ($plugin, "ContribComparator")) ;
165 if (count ($contribs) == 0) {
166 print '<h1>'._('No contributions').'</h1>' ;
167 print _('No contributions have been recorded yet.') ;
169 print '<h1>'._('Latest contributions').'</h1>' ;
172 foreach ($contribs as $c) {
173 display_contribution ($c, true) ;
182 site_project_footer(array());
186 // c-file-style: "bsd"