// the first tag is the featured, the last is the deprecated.␊ |
$downloads = $tags[0]->get_idf_upload_list(); ␊ |
}␊ |
$pages = array();␊ |
if ($request->rights['hasWikiAccess']) {␊ |
$tags = IDF_Views_Wiki::getWikiTags($prj);␊ |
$pages = $tags[0]->get_idf_wikipage_list(); ␊ |
}␊ |
if (!$request->user->isAnonymous()) {␊ |
$feedurl = Pluf_HTTP_URL_urlForView('idf_project_timeline_feed_auth',␊ |
array($prj->shortname, ␊ |
IDF_Precondition::genFeedToken($prj, $request->user)));␊ |
} else {␊ |
$feedurl = Pluf_HTTP_URL_urlForView('idf_project_timeline_feed',␊ |
array($prj->shortname));␊ |
}␊ |
return Pluf_Shortcuts_RenderToResponse('idf/project/timeline.html',␊ |
array(␊ |
'page_title' => $title,␊ |
'feedurl' => $feedurl,␊ |
'timeline' => $pag,␊ |
'team' => $team,␊ |
'downloads' => $downloads,␊ |
),␊ |
$request);␊ |
␊ |
}␊ |
␊ |
/**␊ |
* Timeline feed.␊ |
*␊ |
* A custom view to have a bit more control on the way to handle␊ |
* it and optimize the output.␊ |
*␊ |
*/␊ |
public $timelineFeed_precond = array('IDF_Precondition::feedSetUser',␊ |
'IDF_Precondition::baseAccess');␊ |
public function timelineFeed($request, $match)␊ |
{␊ |
$prj = $request->project;␊ |
// Need to check the rights␊ |
$rights = array();␊ |
if (true === IDF_Precondition::accessSource($request)) {␊ |
$rights[] = '\'IDF_Commit\'';␊ |
IDF_Scm::syncTimeline($request);␊ |
}␊ |
if (true === IDF_Precondition::accessIssues($request)) {␊ |
$rights[] = '\'IDF_Issue\'';␊ |
$rights[] = '\'IDF_IssueComment\'';␊ |
}␊ |
if (true === IDF_Precondition::accessDownloads($request)) {␊ |
$rights[] = '\'IDF_Upload\'';␊ |
}␊ |
if (true === IDF_Precondition::accessWiki($request)) {␊ |
$rights[] = '\'IDF_WikiPage\'';␊ |
$rights[] = '\'IDF_WikiRevision\'';␊ |
}␊ |
if (count($rights) == 0) {␊ |
$rights[] = '\'IDF_Dummy\'';␊ |
}␊ |
$sqls = sprintf('model_class IN (%s)', implode(', ', $rights));␊ |
$sql = new Pluf_SQL('project=%s AND '.$sqls, array($prj->id));␊ |
$params = array(␊ |
'filter' => $sql->gen(),␊ |
'order' => 'creation_dtime DESC',␊ |
'nb' => 50,␊ |
);␊ |
$items = Pluf::factory('IDF_Timeline')->getList($params);␊ |
$set = new Pluf_Model_Set($items, ␊ |
array('public_dtime' => 'public_dtime'));␊ |
$out = array();␊ |
foreach ($set as $item) {␊ |
$out[] = $item->feedFragment($request);␊ |
}␊ |
$out = Pluf_Template::markSafe(implode("\n", $out));␊ |
$tmpl = new Pluf_Template('idf/index.atom');␊ |
$title = __('Updates');␊ |
$feedurl = Pluf::f('url_base').Pluf::f('idf_base').$request->query;␊ |
$viewurl = Pluf_HTTP_URL_urlForView('IDF_Views_Project::timeline',␊ |
array($prj->shortname));␊ |
$context = new Pluf_Template_Context_Request($request, ␊ |
array('body' => $out,␊ |
'title' => $title,␊ |
'feedurl' => $feedurl,␊ |
'viewurl' => $viewurl));␊ |
return new Pluf_HTTP_Response('<?xml version="1.0" encoding="utf-8"?>'␊ |
."\n".$tmpl->render($context),␊ |
'application/atom+xml; charset=utf-8');␊ |
}␊ |
␊ |
␊ |