function db_get_unreviewed($language, $category, $fast = 99, $namespace = 0) { //global $mysql_con; if (!isset($mysql_con)) { $mysql_con = set_up_db($language); } make_db_safe($category); $sql = "SELECT page_id,page_title,page_latest,fp_stable, rev_len\n FROM page,categorylinks,flaggedpages, revision\n WHERE cl_to=\"{$category}\" AND cl_from=page_id AND fp_page_id=page_id \n AND page_latest<>fp_stable AND page_namespace={$namespace}\n AND rev_id=page_latest"; $db = $language . 'wiki_p'; $res = mysql_db_query($db, $sql, $mysql_con); $reviewed_pages = array(); while ($o = mysql_fetch_object($res)) { $latest_size = $o->rev_len; $current_rev = $o->page_latest; $stable_rev = $o->fp_stable; if ($stable_rev >= $current_rev) { // something is wrong here, lets leave print "<br/>Something is wrong here with "; print $o->page_title; print " <br/>"; continue; } if ($fast == 1) { $reviewed_pages[$o->page_id] = array('title' => $o->page_title, 'stable_id' => $stable_rev); continue; } //now get the len of the last stable $sql = "SELECT rev_len FROM revision WHERE rev_id={$stable_rev}"; $res_inner = mysql_db_query($db, $sql, $mysql_con); $o3 = mysql_fetch_object($res_inner); $size_diff = $latest_size - $o3->rev_len; if ($fast == 2) { $reviewed_pages[$o->page_id] = array('title' => $o->page_title, 'diff' => $size_diff, 'stable_id' => $stable_rev); continue; } //now get the first unflagged revision while ($current_rev != $stable_rev) { //$before_current_rev = $current_rev; $sql = "SELECT rev_parent_id, rev_timestamp FROM revision \n WHERE rev_id={$current_rev}"; $res_inner = mysql_db_query($db, $sql, $mysql_con); $o2 = mysql_fetch_object($res_inner); $current_rev = $o2->rev_parent_id; if ($current_rev == 0) { break; } if (!$o2) { break; } } $first_unflagged_timestamp = $o2->rev_timestamp; $reviewed_pages[$o->page_id] = array('title' => $o->page_title, 'timestamp' => $first_unflagged_timestamp, 'diff' => $size_diff, 'stable_id' => $stable_rev); } return $reviewed_pages; }
function db_get_in_sight($language, $category) { global $last_revs, $last_ts, $page_len, $only_redirects, $page_is_redirect; $mysql_con = set_up_db($language); $db = $language . 'wiki_p'; make_db_safe($category); // Pages with sighted versions if ($only_redirects) { $sql = "SELECT " . get_tool_name() . " pr.page_id AS page_id, pr.page_title AS page_title FROM page pa,page pr,pagelinks,categorylinks,flaggedrevs WHERE cl_to=\"{$category}\" AND cl_from=pa.page_id AND pr.page_id=fr_page_id AND pa.page_namespace=0 "; $sql .= "AND pr.page_is_redirect=1 AND pl_from=pr.page_id AND pl_namespace=0 AND pl_title=pa.page_title"; } else { $sql = "SELECT " . get_tool_name() . " page_id,page_title FROM page,categorylinks,flaggedrevs WHERE cl_to=\"{$category}\" AND cl_from=page_id AND page_id=fr_page_id AND page_namespace=14"; } $res = mysql_db_query($db, $sql, $mysql_con); $reviewed_pages = array(); while ($o = mysql_fetch_object($res)) { $reviewed_pages[$o->page_id] = $o->page_title; } if ($only_redirects) { $sql = "SELECT " . get_tool_name() . " pr.page_id AS page_id, pr.page_title AS page_title, pr.page_len AS page_len, pr.page_is_redirect AS page_is_redirect "; $sql .= "FROM page pa,page pr,pagelinks,categorylinks WHERE cl_to=\"{$category}\" AND cl_from=pa.page_id AND pa.page_namespace=0 "; $sql .= "AND pr.page_is_redirect=1 AND pl_from=pr.page_id AND pl_namespace=0 AND pl_title=pa.page_title"; } else { $sql = "SELECT " . get_tool_name() . " page_id,page_title,page_len,page_is_redirect FROM page,categorylinks WHERE cl_to=\"{$category}\" AND cl_from=page_id AND page_namespace=14"; } $res = mysql_db_query($db, $sql, $mysql_con); $unreviewed_pages = array(); while ($o = mysql_fetch_object($res)) { if (isset($reviewed_pages[$o->page_id])) { continue; } // Already reviewed $unreviewed_pages[$o->page_id] = $o->page_title; $page_len[$o->page_id] = $o->page_len; $page_is_redirect[$o->page_id] = $o->page_is_redirect; } return $unreviewed_pages; }
function db_get_articles_in_category($language, $category, $depth = 0, $namespace = 0, $exclude = array(), &$done_cats = array(), $no_redirects = false, $limit = '', $project = 'wikipedia', $only_redirects = false) { //print $done_cats[0] . $done_cats[1] . $category . "<br/>"; if (false) { if ($category == 'Militärischer_Verband_(Schweiz)') { print 'dfd'; } if ($category == 'Fernsehen_(Schweiz)') { print $category; print $exclude[2] . '<br/>'; print $exclude[3] . '<br/>'; } if (in_array($category, $exclude)) { print "excluding {$category}"; } } if (in_array($category, $done_cats)) { return array(); } if (in_array($category, $exclude)) { return array(); } $mysql_con = db_get_con_new($language, $project); //$db = get_db_name ( $language , $project ) ; $db = $language . 'wiki_p'; make_db_safe($category); if ($limit != '') { $limit = "LIMIT {$limit}"; } $limit = str_replace('LIMIT LIMIT', 'LIMIT', $limit); // Some odd bug $ret = array(); $subcats = array(); $red = $no_redirects ? ' AND page_is_redirect=0' : ''; if ($only_redirects) { $red = ' AND page_is_redirect=1'; } $sql = "SELECT page_title,page_namespace FROM page,categorylinks \n WHERE page_id=cl_from AND cl_to=\"{$category}\" {$red} {$limit}"; // print "TESTING : $depth - $category : $sql<br/>" ; $res = mysql_db_query($db, $sql, $mysql_con); while ($o = mysql_fetch_object($res)) { if (!isset($o->page_namespace)) { continue; } if ($o->page_namespace == 14 and ($depth > 0 or $depth < -99)) { $subcats[] = $o->page_title; if ($namespace >= 0 and $o->page_namespace != $namespace) { continue; } } else { if ($namespace >= 0 and $o->page_namespace != $namespace) { continue; } } if (in_array($o->page_title, $exclude)) { continue; } if (substr($o->page_title, 0, 11) == 'Grasshopper') { print $category; } $ret[$o->page_title] = $o->page_title; // print "TESTING : $depth - $category / " . $o->page_title . "<br/>" ; } mysql_free_result($res); $done_cats[] = $category; foreach ($subcats as $sc) { // print "Testing : $depth - $sc<br/>" ; $ret2 = db_get_articles_in_category($language, $sc, $depth - 1, $namespace, $exclude, $done_cats, $no_redirects, $limit, $project); foreach ($ret2 as $k => $v) { $ret[$k] = $v; } } return $ret; }