public function latest() { $user_repo = $this->getP3(); if (!$user_repo) { echo json_encode(array('error' => 'Please enter the name of the package as vercingetorix:test')); } else { $colons = explode(':', $user_repo); $user = $colons[0]; $repo = isset($colons[1]) ? $colons[1] : false; if (!$repo || $user == '' || $repo == '') { echo json_encode(array('error' => 'Please enter the name of the package as vercingetorix:test')); } else { $packages = new packages($this->getDb()); $package = $packages->select('*', 'WHERE user="******" AND repo="' . $repo . '"'); if (!isset($package[0]['id'])) { echo json_encode(array('error' => 'The package does not exist')); } else { $url = 'http://github.com/api/v2/json/repos/show/' . $user . '/' . $repo . '/tags'; $cache = new Cache(); $data = $cache->get($url, 43200); if (!$data) { $data = file_get_contents($url); $cache->set($url, $data); } $data = json_decode($data, true); $tags_list = isset($data['tags']) ? $data['tags'] : array(); $tags = array_keys($tags_list); sort($tags); $latest = false; foreach ($tags as $tag) { if (strpos(strtolower($tag), 'beta') === false && strpos(strtolower($tag), 'rc1') === false && strpos(strtolower($tag), 'rc2') === false && strpos(strtolower($tag), 'pr') === false) { $latest = $tag; } } if (!$latest) { echo json_encode(array('error' => 'There are no releases for this package')); } else { echo json_encode(array('error' => '', 'url' => 'http://github.com/' . $user . '/' . $repo . '/tarball/' . $latest, 'user' => $user, 'repo' => $repo, 'version' => $latest)); } } } } }