/**
  *	@fn redirect_to_software_page($params)
  *	@short Redirects the request to a detailed page for a software product.
  *	@param params An array of parameters that determine the software and the page for the redirection.
  */
 public function redirect_to_software_page($params)
 {
     $software = new Software();
     $software->find_by_id($params['id']);
     $URL = sprintf('http://%s/%s/%s/%s/%s.html', $_SERVER['HTTP_HOST'], $this->name, $software->type, $software->name, $params['subview']);
     if (isset($params['hash'])) {
         $URL .= '#' . $params['hash'];
     }
     $this->redirect_to($URL);
 }
 /**
  *	@fn software_downloads_by_release
  *	@short Action method that shows statistics on software downloads grouped by release
  *	for a particular software product.
  */
 public function software_downloads_by_release()
 {
     if (!isset($_REQUEST['id'])) {
         $this->redirect_to(array('action' => 'software_list'));
     }
     $software = new Software();
     if ($software->find_by_id($_REQUEST['id']) === FALSE) {
         $this->flash(l('No such software'), 'error');
         $this->redirect_to(array('action' => 'software_list'));
     }
     $software->has_many('software_releases', array('order_by' => '`date` DESC'));
     $this->releases = $software->software_releases;
 }