/** * @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); }
/** * @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); }
/** * @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'])); }