public function run() { Makiavelo::puts("Starting update of approval ratings"); $projects = list_project(null, null, "published = 1"); foreach ($projects as $proj) { $proj_name = $proj->name; $usr_name = $proj->owner()->name; $dev = $proj->owner(); Makiavelo::puts("Querying Github for: {$usr_name} / {$proj_name}"); $data = GithubAPI::queryProjectData($usr_name, $proj_name); $total_pulls = 0; $total_merged_pulls = 0; foreach ($data->pulls as $pull) { $total_pulls++; if ($pull->merged_at) { $total_merged_pulls++; } } if ($total_pulls > 0) { $proj->pr_acceptance_rate = $total_merged_pulls / $total_pulls * 100; } else { $proj->pr_acceptance_ratec = -1; } Makiavelo::puts("Saving project..."); save_project($proj); } }
public function run() { Makiavelo::puts("Starting update of approval ratings"); $projects = list_project(null, null, "published = 1"); foreach ($projects as $proj) { $last_delta = list_project_delta('id desc', 1, 'project_id = ' . $proj->id); $last_delta = $last_delta[0]; Makiavelo::puts("Updating project " . $proj->name . " old value: " . $proj->open_issues . " new value: " . $last_delta->open_issues); $proj->open_issues = $last_delta->open_issues; save_project($proj); } }
private function rollbackMigration($f_name) { include ROOT_PATH . "/" . Makiavelo::MIGRATIONS_FOLDER . "/" . $f_name; $parts = explode("_", $f_name); $migration_number = $parts[0]; unset($parts[0]); $className = Makiavelo::underscore_to_camel(str_replace(".php", "", implode("_", $parts))); $migration = new $className(); Makiavelo::puts("Rolling back migration {$f_name} ..."); $migration->down(); $this->removeMigrationFromTable($migration_number); }
public function execute($params) { Makiavelo::info("Creating Database..."); $sql_folder_path = ROOT_PATH . Makiavelo::SQL_CREATE_TABLES_FOLDER; Makiavelo::puts("Creating database..."); $conn = DBLayer::connect(); $db_name = DBLayer::getDBName(); $sql = "CREATE DATABASE `{$db_name}`"; if (!mysql_query($sql, $conn)) { Makiavelo::info("ERROR creating db: " . mysql_error()); } //We also have to create the migrations table $sql_migrations = "CREATE TABLE migrations ( migration INT PRIMARY KEY);"; mysql_select_db($db_name); if (!mysql_query($sql_migrations, $conn)) { Makiavelo::info("ERROR creating migrations table:: " . mysql_error()); } DBLayer::disconnect($conn); }
public function run() { Makiavelo::puts("Starting update of urls"); $projects = list_project(null, null, "published =1"); foreach ($projects as $proj) { $proj_name = $proj->name; $dev = $proj->owner(); $usr_name = $dev->name; Makiavelo::puts("Querying Github for: {$usr_name} / {$proj_name}"); $data = GithubAPI::queryProjectData($usr_name, $proj_name); if (!isset($data->message)) { $proj->url = isset($data->html_url) ? $data->html_url : $data->url; } else { Makiavelo::puts("Project not found, unpublishing..."); $proj->published = 0; } Makiavelo::puts("Saving project..."); save_project($proj); } }
private function loadEntities() { $sql_folder_path = ROOT_PATH . Makiavelo::SQL_CREATE_TABLES_FOLDER; $d = dir($sql_folder_path); while (($item = $d->read()) != false) { if ($item != "create_db.sql" && substr($item, 0, 1) != ".") { $file_path = $sql_folder_path . "/" . $item; $fp = fopen($file_path, "r"); if ($fp) { Makiavelo::puts("Loading entity: {$item} ..."); $conn = DBLayer::connect(); $sql = fread($fp, filesize($file_path)); fclose($fp); $res = mysql_query($sql, $conn); if (!$res && mysql_errno($conn) == 1050) { Makiavelo::puts("---- Entity already loaded, ignoring"); } DBLayer::disconnect($conn); } } } }
public function execute($params) { Makiavelo::puts("Rolling back database state..."); $this->rollback(); }
public function load() { $projects = list_project(); Makiavelo::info("=== Starting old stats process ==="); foreach ($projects as $proj) { $proj_name = $proj->name; $usr_name = $proj->owner()->name; Makiavelo::puts("==== Querying for {$usr_name}/{$proj_name}"); $g_data = GithubAPI::queryProjectData($usr_name, $proj_name); //Calculate the commits for today $data = array(); foreach ($g_data->commits as $commit) { $commit_date = $commit->commit->committer->date; $commit_date = explode("T", $commit_date); $commit_date = $commit_date[0]; $date_idx = intval(str_replace("-", "", $commit_date)); if (!isset($data[$date_idx]) || !isset($data[$date_idx]['commits'])) { $data[$date_idx] = array("commits" => 1); } else { $data[$date_idx]['commits']++; } } foreach ($g_data->pulls as $pull) { $created_data = explode("T", $pull->created_at); $closed_data = explode("T", $pull->closed_at); $merged_data = explode("T", $pull->merged_at); $created_idx = intval(str_replace("-", "", $created_data[0])); $merged_idx = intval(str_replace("-", "", $merged_data[0])); $closed_idx = intval(str_replace("-", "", $closed_data[0])); if (!isset($data[$created_idx]) || !isset($data[$created_idx]['new_pulls'])) { $data[$created_idx]['new_pulls'] = 1; } else { $data[$created_idx]['new_pulls']++; } if ($merged_idx != 0) { if (!isset($data[$merged_idx]) || !isset($data[$merged_idx]['merged_pulls'])) { $data[$merged_idx]['merged_pulls'] = 1; } else { $data[$merged_idx]['merged_pulls']++; } } if ($closed_idx != 0) { if (!isset($data[$closed_idx]) || !isset($data[$closed_idx]['closed_pulls'])) { $data[$closed_idx]['closed_pulls'] = 1; } else { $data[$closed_idx]['closed_pulls']++; } } } //Makiavelo::puts(print_r($data, true)); //exit; foreach ($data as $date => $stats) { $year = substr($date, 0, 4); $month = substr($date, 4, 2); $day = substr($date, 6, 2); $str_date = $year . "-" . $month . "-" . $day; Makiavelo::info("==== Delta found, saving..."); Makiavelo::puts("Saving delta for date: {$str_date}"); $pd = new ProjectDelta(); $pd->forks = -99; $pd->delta_forks = -99; $pd->stars = -99; $pd->delta_stars = -99; $pd->project_id = $proj->id; $pd->commits_count = isset($stats['commits']) ? $stats['commits'] : 0; $pd->new_pulls = isset($stats['new_pulls']) ? $stats['new_pulls'] : 0; $pd->closed_pulls = isset($stats['closed_pulls']) ? $stats['closed_pulls'] : 0; $pd->merged_pulls = isset($stats['merged_pulls']) ? $stats['merged_pulls'] : 0; $pd->sample_date = $str_date; if (save_project_delta($pd)) { Makiavelo::puts("===== Delta saved! "); } else { Makiavelo::puts("===== ERROR saving delta::" . mysql_error()); } } delete_issues_by_project_id($proj->id); foreach ($data->open_issues_list as $issue) { $iss = new Issue(); $iss->title = $issue->title; $iss->body = $issue->body; $iss->created_at = $issue->created_at; $iss->updated_at = $issue->updated_at; $iss->url = $issue->url; $iss->number = $issue->number; $iss->project_id = $proj->id; if (save_issue($iss)) { Makiavelo::info("===== Issue saved! "); } else { Makiavelo::info("===== ERROR saving issue::" . mysql_error()); } } } }
public function run() { $projects = list_project(null, null, "published = 1"); Makiavelo::info("=== Starting stats process ==="); foreach ($projects as $proj) { $proj_name = $proj->name; $usr_name = $proj->owner()->name; $dev = $proj->owner(); Makiavelo::info("==== Querying for {$usr_name}/{$proj_name}"); Makiavelo::puts("==== Querying for {$usr_name}/{$proj_name}"); $data = GithubAPI::queryProjectData($usr_name, $proj_name); if (isset($data->message)) { Makiavelo::info("Project error: " . $data->message); continue; } //We update the dev's avatar if needed if ($data->owner->avatar_url != $dev->avatar_url) { $dev->avatar_url = $data->owner->avatar_url; save_developer($dev); } //Calculate the commits for today $commits_today = 0; $today = '2013-05-02'; foreach ($data->commits as $commit) { $commit_date = $commit->commit->committer->date; $commit_date = explode("T", $commit_date); $commit_date = $commit_date[0]; $pc = load_project_commit_where("sha = '" . $commit->sha . "'"); if ($pc == null) { //We make sure we haven't yet saved this commit $project_commit = new ProjectCommit(); } else { //if we have, then we'll update it $project_commit = $pc; } $project_commit->project_id = $proj->id; if (!$commit->committer) { Makiavelo::puts("**** No se encontró committer... ******"); Makiavelo::info(print_r($commit, true)); } $project_commit->committer = $commit->committer->login; $project_commit->commit_message = $commit->commit->message; $project_commit->sha = $commit->sha; $project_commit->commit_date = $commit_date; save_project_commit($project_commit); if ($commit_date == $today) { $commits_today++; } } $new_pulls_today = $closed_pulls_today = $merged_pulls_today = 0; foreach ($data->pulls as $pull) { $created_data = explode("T", $pull->created_at); $closed_data = explode("T", $pull->closed_at); $merged_data = explode("T", $pull->merged_at); if ($created_data[0] == $today) { $new_pulls_today++; } if ($closed_data[0] == $today) { $closed_pulls_today++; } if ($merged_data[0] == $today) { $merged_pulls_today++; } } $delta_stars = $data->watchers - $proj->stars; $delta_forks = $data->forks - $proj->forks; //if($delta_stars != 0 || $delta_forks != 0) { Makiavelo::info("==== Delta found, saving..."); //We also update the project $proj->stars = $data->watchers; $proj->forks = $data->forks; save_project($proj); $pd = new ProjectDelta(); $pd->forks = $data->forks; $pd->delta_forks = $delta_forks; $pd->stars = $data->watchers; $pd->delta_stars = $delta_stars; $pd->project_id = $proj->id; $pd->commits_count = $commits_today; $pd->new_pulls = $new_pulls_today; $pd->closed_pulls = $closed_pulls_today; $pd->merged_pulls = $merged_pulls_today; $pd->sample_date = $today; if (save_project_delta($pd)) { Makiavelo::info("===== Delta saved! "); Makiavelo::info(print_r($pd, true)); } else { Makiavelo::info("===== ERROR saving delta"); } //} } }