public static function getUserRepos($user) { $page = 1; $projects = array(); $dev = load_developer_where("name = '" . $user . "'"); $full_repo_list = array(); do { $url = "https://api.github.com/users/{$user}/repos?page=" . $page; Makiavelo::info("----------- URL : " . $url); $repo_list = self::sendRequest($url); //Makiavelo::puts("------------ number of repos found: " . count($repo_list)); Makiavelo::info("=== Getting list of repos :: " . print_r($repo_list, true)); foreach ($repo_list as $repo) { $full_repo_list[] = $repo; $proj = load_project_where("owner_id = " . $dev->id . " and name ='" . $repo->name . "'"); if ($proj == null) { $proj = new Project(); $proj->name = $repo->name; $proj->url = $repo->html_url ? $repo->html_url : $repo->url; $proj->owner_id = $dev->id; $proj->description = $repo->description; $proj->stars = $repo->watchers; $proj->forks = $repo->forks; $proj->language = $repo->language; $proj->published = 0; $proj->open_issues = $repo->open_issues; $proj->close_issues = count(GithubAPI::getProjectIssues($user, $repo->name, "closed")); if (save_project($proj)) { $projects[] = $proj; } } else { $projects[] = $proj; } } $page++; } while (count($repo_list) > 0); GithubAPI::deleteOldProjects($dev, $full_repo_list); return $projects; }
public function createAction() { $entity = new Project(); $proj = $this->request->getParam("project"); $dev = load_developer_where('name = "' . $this->request->getParam("owner_name") . '"'); if ($dev == null) { //Create the developer if it's not on our database already $dev = new Developer(); $dev->name = $this->request->getParam("owner_name"); $dev->avatar_url = $this->request->getParam("owner_avatar"); save_developer($dev); } else { //Update the avatar if it changed if ($dev->avatar_url != $this->request->getParam("owner_avatar")) { $dev->avatar_url = $this->request->getParam("owner_avatar"); save_developer($dev); } } if (!load_project_where("name = '" . $proj['name'] . "' and owner_id = " . $dev->id)) { $proj['url'] = str_replace("https", "", $proj['url']); $proj['url'] = str_replace("http", "", $proj['url']); $proj['url'] = str_replace("://", "", $proj['url']); $proj['url'] = "http://" . $proj['url']; $proj['owner_id'] = $dev->id; $proj['published'] = 1; $entity->load_from_array($proj); if (save_project($entity)) { //Create the first set of stats $entity->saveInitStats(); $entity->grabHistoricData(); $this->flash->setSuccess("The project was added correctly, thanks!"); $this->redirect_to(project_show_path($entity)); } else { $this->render(array("entity" => $entity), "new"); } } else { $this->flash->setError("This project has already been submited"); $this->render(array("entity" => $entity), "new"); } }
function load_project($id) { return load_project_where("id = {$id}"); }