Esempio n. 1
0
 /**
  *	@fn software
  *	@short Action method that generates the feed of software releases.
  */
 public function software()
 {
     $conn = Db::get_connection();
     $release_factory = new SoftwareRelease();
     if (isset($_GET['id']) && is_numeric($_GET['id'])) {
         $this->releases = $release_factory->find_all(array('where_clause' => '`released` = 1 ' . 'AND `software_id` = \'' . $conn->escape($_GET['id']) . '\' ', 'order_by' => '`date` DESC '));
     } else {
         $this->releases = $release_factory->find_by_query('SELECT MAX(`software_releases`.`id`) AS `id`, `software_releases`.`software_id`, MAX(`software_releases`.`version`) AS `version`, MAX(`software_releases`.`date`) AS `date` ' . 'FROM `softwares` ' . 'LEFT JOIN `software_releases` ON `softwares`.`id` = `software_releases`.`software_id` ' . 'WHERE `software_releases`.`released` = 1 ' . 'GROUP BY `softwares`.`id` ' . 'ORDER BY `date` DESC ');
     }
     Db::close_connection($conn);
 }
Esempio n. 2
0
 /**
  *	@fn download_stats
  *	@short Action method that shows the download statistics for a software release.
  *	@note This action is intented to be called from AJAX and does not show a full page layout.
  */
 public function download_stats()
 {
     $conn = Db::get_connection();
     $release = new SoftwareRelease();
     if ($release->find_by_id($_GET['id']) === FALSE) {
         $this->flash(l('No such software release!'), 'error');
         $this->redirect_to(array('action' => 'index'));
     }
     $release->belongs_to('softwares');
     $conn->prepare('SELECT SUM(`downloads`) FROM `software_artifacts` WHERE `release_id` = \'{1}\'', $release->id);
     $conn->exec();
     $this->partial = $conn->result(0);
     $conn->prepare('SELECT SUM(`downloads`) FROM `software_artifacts` WHERE `software_id` = \'{1}\'', $release->software->id);
     $conn->exec();
     $this->total = $conn->result(0);
     $this->render(array('layout' => FALSE));
     Db::close_connection($conn);
 }
Esempio n. 3
0
 /**
  *	@fn software_release_add
  *	@short Action method to save a software release.
  */
 public function software_release_add()
 {
     if (!isset($_POST)) {
         $this->redirect_to(array('action' => 'software_list'));
     }
     $release = new SoftwareRelease($_POST);
     if (!isset($_POST['released'])) {
         $release->released = '0';
     }
     $release->save();
     // Expires the cache of Software & Sparkle feeds
     $this->expire_cached_software_pages();
     $this->redirect_to(array('action' => 'software_release_list', 'id' => $_POST['software_id']));
 }