/** * @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 releasenotes * @short Action method that shows the changes in the last release of the requested software. * @note This action is designed to be called by Sparkle application updater. */ public function releasenotes() { if (!empty($_REQUEST['id'])) { $release_factory = new SoftwareRelease(); $releases = $release_factory->find_by_query('SELECT * FROM `software_releases` ' . 'WHERE `software_id` = \'' . $_REQUEST['id'] . '\' ' . 'AND `released` = 1 ' . 'ORDER BY `date` DESC ' . 'LIMIT 1'); if (count($releases) < 1) { HTTP::error(404); } $this->release = $releases[0]; $this->release->belongs_to('softwares'); $this->render(array('layout' => 'software_releasenotes')); } else { $this->redirect_to(array('action' => 'index')); } }