. */ class page_projects { private $page, $phpgitweb; public function main($phpgitweb, $project) { $this->phpgitweb = $phpgitweb; $this->page = new ContentProvider('projects', 'main'); $project_loader = $phpgitweb->get_project_loader(); $project_counter = 0; $project_list = $project_loader->getProjectList(); foreach($project_list as $projectid => &$project) { //load some additional information $project['last_change'] = $project_loader->getLastChange($project); } unset($project); if(array_key_exists('o', $_GET)) $order = $_GET['o']; else $order = 'project'; $this->page->set('header_project', new ContentProvider('projects', ($order == 'project' ? 'head_order_active' : 'head_order_link'), array('name' => "Project", 'tag' => "project"))); $this->page->set('header_description', new ContentProvider('projects', ($order == 'descr' ? 'head_order_active' : 'head_order_link'), array('name' => "Description", 'tag' => "descr"))); $this->page->set('header_owner', new ContentProvider('projects', ($order == 'owner' ? 'head_order_active' : 'head_order_link'), array('name' => "Owner", 'tag' => "owner"))); $this->page->set('header_age', new ContentProvider('projects', ($order == 'age' ? 'head_order_active' : 'head_order_link'), array('name' => "Last Change", 'tag' => "age"))); switch($order) { case 'project': usort($project_list, array($this, "sort_by_project")); break; case 'descr': usort($project_list, array($this, "sort_by_description")); break; case 'owner': usort($project_list, array($this, "sort_by_owner")); break; case 'age': usort($project_list, array($this, "sort_by_age")); break; } foreach($project_list as $projectid => $project) { $project_counter++; $project_entry = $this->project(($project_counter % 2 ? 'dark' : 'light'), $project); $this->page->append('projects', $project_entry); } return $this->page; } private function sort_by_project($a, $b) { return strcmp($a['name'], $b['name']); } private function sort_by_description($a, $b) { $ret = strcmp($a['description'], $b['description']); if($ret == 0) $ret = strcmp($a['name'], $b['name']); return $ret; } private function sort_by_owner($a, $b) { $ret = strcmp($a['owner'], $b['owner']); if($ret == 0) $ret = strcmp($a['name'], $b['name']); return $ret; } private function sort_by_age($a, $b) { $ret = $a['last_change'] - $b['last_change']; if($ret == 0) $ret = strcmp($a['name'], $b['name']); return $ret; } private function project($class, $project) { $entry = new ContentProvider('projects', 'project'); $entry->set('class', $class); $entry->set('project', $project['name']); $entry->set('name', htmlentities($project['name'])); $entry->set('description', htmlentities($project['description'])); $entry->set('owner', htmlentities($project['owner'])); $age = Tools::age_calculate($project['last_change']); $entry->set('age_class', $age['age_class']); $entry->set('age', $age['age_str']); return $entry; } } ?>