From: Maxious Date: Fri, 23 Mar 2012 10:49:40 +0000 Subject: Upgrade graph.php to use sigma.js and output gexf X-Git-Url: https://maxious.lambdacomplex.org/git/?p=disclosr.git&a=commitdiff&h=0ab527607f0af1ce5ff412b33b71f822935415f0 --- Upgrade graph.php to use sigma.js and output gexf Former-commit-id: f7184884c78601da7d51fa0016334c0f329d43cd --- --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,6 @@ [submodule "couchdb/settee"] path = couchdb/settee url = https://github.com/inadarei/settee.git -[submodule "lib/springy"] - path = lib/springy - url = https://github.com/dhotson/springy.git [submodule "lib/php-diff"] path = lib/php-diff url = https://github.com/chrisboulton/php-diff.git @@ -16,4 +13,10 @@ [submodule "javascripts/flotr2"] path = javascripts/flotr2 url = https://github.com/HumbleSoftware/Flotr2.git +[submodule "lib/phpquery"] + path = lib/phpquery + url = https://github.com/TobiaszCudnik/phpquery.git +[submodule "javascripts/sigma"] + path = javascripts/sigma + url = https://github.com/jacomyal/sigma.js.git --- /dev/null +++ b/admin/exportEmployees.csv.php @@ -1,1 +1,87 @@ +get_db('disclosr-agencies'); +try { + $rows = $db->get_view("app", "all", null, true)->rows; + + $dataValues = Array(); + foreach ($rows as $row) { + if (isset($row->value->statistics->employees)) { + + $headers = array_unique(array_merge($headers, array_keys(object_to_array($row->value->statistics->employees)))); + + } + } +} catch (SetteeRestClientException $e) { + setteErrorHandler($e); +} + +$fp = fopen('php://output', 'w'); +if ($fp && $db) { + if ($format == "csv") { + header('Content-Type: text/csv; charset=utf-8'); + header('Content-Disposition: attachment; filename="export.employeestats.' . date("c") . '.csv"'); + } + header('Pragma: no-cache'); + header('Expires: 0'); + if ($format == "csv") { + fputcsv($fp, $headers); + } else if ($format == "json") { + echo '{ + "labels" : ["' . implode('","', $headers) . '"],'.PHP_EOL; + } + try { + $agencies = $db->get_view("app", "all", null, true)->rows; + //print_r($agencies); + $first = true; + if ($format == "json") { + echo '"data" : ['.PHP_EOL; + + } + foreach ($agencies as $agency) { + + if (isset($agency->value->statistics->employees)) { + $row = Array(); + $agencyEmployeesArray = object_to_array($agency->value->statistics->employees); + foreach ($headers as $i => $fieldName) { + if (isset($agencyEmployeesArray[$fieldName])) { + $row[] = '['.$i.','.$agencyEmployeesArray[$fieldName]["value"].']'; + } else { + $row[] = '['.$i.',0]'; + } + } + if ($format == "csv") { + fputcsv($fp, array_values($row)); + } else if ($format == "json") { + if (!$first) echo ","; + echo '{"data" : [' . implode(",", array_values($row)) . '], "label": "'.$agency->value->name.'", "lines" : { "show" : true }, "points" : { "show" : true }}'.PHP_EOL; + $first = false; + } + } + } + if ($format == "json") { + echo '] + }'.PHP_EOL; + + } + } catch (SetteeRestClientException $e) { + setteErrorHandler($e); + } + + die; +} +?> + --- /dev/null +++ b/admin/exportScore.csv.php @@ -1,1 +1,73 @@ +get_db('disclosr-agencies'); +$format = "csv"; +//$format = "json"; +if (isset($_REQUEST['format'])) $format = $_REQUEST['format']; + +setlocale(LC_CTYPE, 'C'); + + $headers = Array(); + +$fp = fopen('php://output', 'w'); +if ($fp && $db) { + if ($format == "csv") { + header('Content-Type: text/csv; charset=utf-8'); + header('Content-Disposition: attachment; filename="export.score.' . date("c") . '.csv"'); + } + header('Pragma: no-cache'); + header('Expires: 0'); + + try { + $agencies = $db->get_view("score", "score", null, true)->rows; + //print_r($agencies); + $first = true; + if ($format == "json") { + echo '"data" : ['.PHP_EOL; + + } + foreach ($agencies as $agency) { + $agencyArray = object_to_array($agency->value); + if ($first) { + $headers = array_keys($agencyArray); +if ($format == "csv") { + fputcsv($fp, $headers); + } else if ($format == "json") { + echo '{ + "labels" : ["' . implode('","', $headers) . '"],'.PHP_EOL; + } + } + $row = Array(); + + foreach ($headers as $i => $fieldName) { + if (isset($agencyArray[$fieldName])) { + $row[] = $agencyArray[$fieldName]; + } else { + $row[] = ''; + } + } + if ($format == "csv") { + fputcsv($fp, array_values($row)); + } else if ($format == "json") { + if (!$first) echo ","; + echo '{"data" : [' . implode(",", array_values($row)) . '], "label": "'.$agency->value->name.'", "lines" : { "show" : true }, "points" : { "show" : true }}'.PHP_EOL; + + } + $first = false; + } + + if ($format == "json") { + echo '] + }'.PHP_EOL; + + } + } catch (SetteeRestClientException $e) { + setteErrorHandler($e); + } + + die; +} +?> + --- /dev/null +++ b/admin/importAustraliaGovAuGov2.php @@ -1,1 +1,61 @@ +get_db('disclosr-agencies'); +$rows = $db->get_view("app", "byName")->rows; +$nametoid = Array(); +$accounts = Array(); +foreach ($rows as $row) { + $nametoid[trim($row->key)] = $row->value; +} + +function extractCSVAccounts($url, $nameField, $accountField, $filter) { + global $accounts, $nametoid; + $request = Requests::get($url); + $Data = str_getcsv($request->body, "\n"); //parse the rows + $headers = Array(); + foreach ($Data as $num => $line) { + $Row = str_getcsv($line, ","); + if ($num == 0) { + + } else if ($num == 1) { + $headers = $Row; + //print_r($headers); + } else { + if (isset($Row[array_search($nameField, $headers)])) { + $agencyName = $Row[array_search($nameField, $headers)]; + if (!$filter || $Row[array_search("State", $headers)] == "NAT") { + if (!in_array(trim($agencyName), array_keys($nametoid))) { + echo "$agencyName missing" . PHP_EOL; + } else { + // echo $Row[array_search($nameField, $headers)] . PHP_EOL; + } + } + } else { + //echo "error finding agency" . $line . PHP_EOL; + } + } + } +} + +// http://agimo.govspace.gov.au/page/gov2register/ +// twitter +//extractCSVAccounts("https://docs.google.com/spreadsheet/pub?key=0Ap1exl80wB8OdHNKVmQ5RVlvQWpibDAxNHkzcU1nV2c&single=true&gid=0&output=csv", "Agency/Body/Event", "", true); +// RSS +// https://docs.google.com/spreadsheet/pub?hl=en_GB&hl=en_GB&key=0Ah41IAK0HzSTdGJxandJREhLSGlWWUZfZ2xKOTNHZ0E&output=csv +// facebook +extractCSVAccounts("https://docs.google.com/spreadsheet/pub?hl=en_GB&hl=en_GB&key=0Ah41IAK0HzSTdGtjcW9vOXdyZ3pOV21vQU51VmhzQnc&single=true&gid=0&output=csv","Agency","Name"); + +/* + * http://australia.gov.au/news-and-media/media-release-rss-feeds + * http://australia.gov.au/news-and-media/social-media/blogs + * http://australia.gov.au/news-and-media/social-media/twitter + * http://australia.gov.au/news-and-media/social-media/facebook + * http://australia.gov.au/news-and-media/social-media/youtube + * http://australia.gov.au/news-and-media/social-media/flickr + * http://australia.gov.au/news-and-media/social-media/apps http://www.harmony.gov.au/get-involved/app-downloads.htm http://www.em.gov.au/Resources/Pages/Before-the-Storm-phone-game.aspx + * http://australia.gov.au/news-and-media/social-media/podcasts + */ +?> + --- a/admin/importDirectoryUUIDs.php +++ b/admin/importDirectoryUUIDs.php @@ -1,13 +1,37 @@ create_db('disclosr-agencies'); -} catch (SetteeRestClientException $e) { - setteErrorHandler($e); +$db = $server->get_db('disclosr-agencies'); +$rows = $db->get_view("app", "byName")->rows; +$nametoid = Array(); +$sums = Array(); +foreach ($rows as $row) { + $nametoid[trim($row->key)] = $row->value; } -$db = $server->get_db('disclosr-agencies'); -createAgencyDesignDoc(); +if (file_exists('index.xml')) { + $xml = simplexml_load_file('index.xml'); + + foreach ($xml as $agency) { + $names = Array(); + $names[] = "".$agency->name; + + if (isset($agency->shortName)) { + $names[] = "".$agency->shortName; + } + foreach ($names as $name) { + if (!in_array($name, array_keys($nametoid))) { + echo "$name missing".PHP_EOL; + print_r($names); + echo $agency->dn; + echo PHP_EOL; + echo PHP_EOL; + } + } + } +} else { + exit('Failed to open test.xml.'); +} ?> --- a/admin/importGov2RegisterRSSFacebookTwitter.php +++ b/admin/importGov2RegisterRSSFacebookTwitter.php @@ -1,16 +1,89 @@ create_db('disclosr-agencies'); -} catch (SetteeRestClientException $e) { - setteErrorHandler($e); +require($basePath.'lib/phpquery/phpQuery/phpQuery.php'); + +$db = $server->get_db('disclosr-agencies'); +$rows = $db->get_view("app", "byName")->rows; +$nametoid = Array(); +$accounts = Array(); +foreach ($rows as $row) { + $nametoid[trim($row->key)] = $row->value; } -$db = $server->get_db('disclosr-agencies'); -createAgencyDesignDoc(); +function extractHTMLAccounts($url, $accountType) { + global $accounts, $nametoid; + $request = Requests::get($url); + $doc = phpQuery::newDocumentHTML($request->body); + phpQuery::selectDocument($doc); + foreach (pq('tr')->elements as $tr) { + //echo $tr->nodeValue.PHP_EOL; + $agency = ""; + $url = ""; + foreach ($tr->childNodes as $td) { + $class = $td->getAttribute("class"); + //echo "cccc $class ".$td->nodeValue.PHP_EOL; + if ($class == "s11" || $class == "s10" || $class == "s7") { + $agency = $td->nodeValue; + } else if ($class == "s6" || $class == "s9"){ + $url = $td->nodeValue; + foreach($td->childNodes as $a) { + $href = $a->getAttribute("href"); + if ($href != "") { + $url = $href; + } + } + } + } + if ($agency != "" && $url != "") { + if (!in_array(trim($agency), array_keys($nametoid))) { + echo trim($agency)." missing" . PHP_EOL; + } else { + // echo $agency." = ".$url.PHP_EOL; + $accounts[$nametoid[trim($agency)]][$accountType][] = $url; + } + + } + } + +} -// twitter https://docs.google.com/spreadsheet/fm?id=tsJVd9EYoAjbl014y3qMgWg.03918275400592898296.8568379511161083736&hl=en&fmcmd=5&gid=0 -// RSS https://docs.google.com/spreadsheet/fm?id=tbqjwIDHKHiVYF_glJ93GgA.03918275400592898296.8789688748524615194&authkey=CJDP-uQG&hl=en_GB&fmcmd=5&gid=0 -// facebook https://docs.google.com/spreadsheet/fm?id=tkcqoo9wrgzNWmoANuVhsBw.03918275400592898296.3040387705062056060&authkey=CKzl7r0I&hl=en_GB&fmcmd=5&gid=0 +function extractCSVAccounts($url, $accountType, $nameField, $accountField, $filter) { + global $accounts, $nametoid; + $request = Requests::get($url); + $Data = str_getcsv($request->body, "\n"); //parse the rows + $headers = Array(); + foreach ($Data as $num => $line) { + $Row = str_getcsv($line, ",",'"'); + if ($num == 0) { + + } else if ($num == 1) { + $headers = $Row; + //print_r($headers); + } else { + if (isset($Row[array_search($nameField, $headers)])) { + $agencyName = $Row[array_search($nameField, $headers)]; + if (!$filter || $Row[array_search("State", $headers)] == "NAT") { + if (!in_array(trim($agencyName), array_keys($nametoid))) { + echo trim($agencyName)." missing" . PHP_EOL; + } else { + // echo $Row[array_search($nameField, $headers)] . PHP_EOL; + $accounts[$nametoid[trim($agencyName)]][$accountType][] = $Row[array_search($accountField, $headers)]; + } + } + } else { + //echo "error finding agency" . $line . PHP_EOL; + } + } + } +} + +// http://agimo.govspace.gov.au/page/gov2register/ +// twitter +extractCSVAccounts("https://docs.google.com/spreadsheet/pub?key=0Ap1exl80wB8OdHNKVmQ5RVlvQWpibDAxNHkzcU1nV2c&single=true&gid=0&output=csv", "Twitter", "Agency/Body/Event", "", true); +// RSS +extractHTMLAccounts("https://docs.google.com/spreadsheet/pub?hl=en_GB&hl=en_GB&key=0Ah41IAK0HzSTdGJxandJREhLSGlWWUZfZ2xKOTNHZ0E&output=html", "RSS"); +// facebook +extractHTMLAccounts("https://docs.google.com/spreadsheet/pub?hl=en_GB&hl=en_GB&key=0Ah41IAK0HzSTdGtjcW9vOXdyZ3pOV21vQU51VmhzQnc&single=true&gid=0&output=html", "Facebook"); + ?> --- /dev/null +++ b/admin/index.xml @@ -1,1 +1,2607 @@ + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + +A + + + + + + + + + + +A + + + + + + + + + + + +