| $list_display = array(␊ | 
| 'shortname' => __('Short Name'),␊ | 
| 'name' => __('Name'),␊ | 
| array('id', 'IDF_Views_Admin_projectSize', __('Repository Size')),␊ | 
| );␊ | 
| $pag->configure($list_display, array(), ␊ | 
| array('shortname'));␊ | 
| $pag->extra_classes = array('', '', 'right');␊ | 
| $pag->items_per_page = 25;␊ | 
| $pag->no_results_text = __('No projects were found.');␊ | 
| $pag->setFromRequest($request);␊ | 
|  | 
| array(␊ | 
| 'page_title' => $title,␊ | 
| 'projects' => $pag,␊ | 
| 'size' => IDF_Views_Admin_getForgeSize(),␊ | 
| ),␊ | 
| $request);␊ | 
| }␊ | 
|  | 
| $img = ($item->$field) ? 'day' : 'night';␊ | 
| $text = ($item->$field) ? __('Yes') : __('No');␊ | 
| return sprintf('<img src="'.Pluf::f('url_media').'/idf/img/%s.png" alt="%s" /> ', $img, $text);␊ | 
| } | 
| }␊ | 
| ␊ | 
| /**␊ | 
| * Display the size of the project.␊ | 
| *␊ | 
| * @param string Field ␊ | 
| * @param IDF_Project␊ | 
| * @return string␊ | 
| */␊ | 
| function IDF_Views_Admin_projectSize($field, $project)␊ | 
| {␊ | 
| $size = $project->getRepositorySize();␊ | 
| if ($size == -1) {␊ | 
| return '';␊ | 
| }␊ | 
| return Pluf_Utils::prettySize($size);␊ | 
| }␊ | 
| ␊ | 
| /**␊ | 
| * Get a forge size.␊ | 
| *␊ | 
| * @return array Associative array with the size of each element␊ | 
| */␊ | 
| function IDF_Views_Admin_getForgeSize()␊ | 
| {␊ | 
| $res = array();␊ | 
| $res['repositories'] = 0;␊ | 
| foreach (Pluf::factory('IDF_Project')->getList() as $prj) {␊ | 
| $size = $prj->getRepositorySize();␊ | 
| if ($size != -1) {␊ | 
| $res['repositories'] += $size;␊ | 
| }␊ | 
| }␊ | 
| $cmd = Pluf::f('idf_exec_cmd_prefix', '').'du -bs '␊ | 
| .escapeshellarg(Pluf::f('upload_path'));␊ | 
| $out = split(' ', shell_exec($cmd), 2);␊ | 
| $res['downloads'] = $out[0];␊ | 
| $cmd = Pluf::f('idf_exec_cmd_prefix', '').'du -bs '␊ | 
| .escapeshellarg(Pluf::f('upload_issue_path'));␊ | 
| $out = split(' ', shell_exec($cmd), 2);␊ | 
| $res['attachments'] = $out[0];␊ | 
| $res['total'] = $res['repositories'] + $res['downloads'] + $res['attachments'];␊ | 
| // TODO: now we need the db␊ | 
| return $res;␊ | 
| }␊ | 
| ␊ | 
| /**␊ | 
| * Get the database size as given by the database.␊ | 
| *␊ | 
| * @return int Database size␊ | 
| */␊ | 
| function IDF_Views_Admin_getForgeDbSize()␊ | 
| {␊ | 
| ␊ | 
| // MySQL: SHOW TABLE STATUS FROM database; ␊ | 
| //        then sum Data_length and Index_length for each table␊ | 
| // PostgreSQL: ␊ | 
| // Directly stats the database file␊ | 
| }␊ |