add disclogs rss and sitemap and viewer
Former-commit-id: cf7e993d742cf3770bb93293c41bb9e298a36776
--- a/.gitmodules
+++ b/.gitmodules
@@ -31,4 +31,7 @@
[submodule "documents/lib/parsedatetime"]
path = documents/lib/parsedatetime
url = git://github.com/bear/parsedatetime.git
+[submodule "lib/FeedWriter"]
+ path = lib/FeedWriter
+ url = https://github.com/mibe/FeedWriter
--- /dev/null
+++ b/documents/.gitignore
@@ -1,1 +1,2 @@
+*.pyc
--- a/documents/index.php
+++ b/documents/index.php
@@ -20,7 +20,7 @@
if ($rows) {
foreach ($rows as $row) {
-displayLogEntry($row,$idtoname);
+echo displayLogEntry($row,$idtoname);
}
}
} catch (SetteeRestClientException $e) {
--- a/documents/robots.txt
+++ b/documents/robots.txt
@@ -2,4 +2,5 @@
# http://code.google.com/web/controlcrawlindex/
User-agent: *
-
+Disallow: /admin/
+Sitemap: http://disclosurelo.gs/sitemap.xml.php
--- a/documents/rss.xml.php
+++ b/documents/rss.xml.php
@@ -3,28 +3,38 @@
// Agency X updated Y, new files, diff of plain text/link text,
// feed for just one agency or all
// This is a minimum example of using the Universal Feed Generator Class
-include("lib/FeedWriter.php");
+include("../lib/FeedWriter/FeedTypes.php");
+include_once('../include/common.inc.php');
//Creating an instance of FeedWriter class.
-$TestFeed = new FeedWriter(RSS2);
+$TestFeed = new RSS2FeedWriter();
//Setting the channel elements
//Use wrapper functions for common channelelements
$TestFeed->setTitle('Last Modified - All');
-$TestFeed->setLink('http://disclosr.lambdacomplex.org/rss.xml.php');
+$TestFeed->setLink('http://disclosurelo.gs/rss.xml.php');
$TestFeed->setDescription('This is test of creating a RSS 2.0 feed Universal Feed Writer');
+ $TestFeed->setChannelElement('language', 'en-us');
+ $TestFeed->setChannelElement('pubDate', date(DATE_RSS, time()));
//Retriving informations from database
-$rows = $db->get_view("app", "byLastModified")->rows;
+$idtoname = Array();
+$agenciesdb = $server->get_db('disclosr-agencies');
+foreach ($agenciesdb->get_view("app", "byCanonicalName")->rows as $row) {
+ $idtoname[$row->id] = trim($row->value->name);
+}
+$foidocsdb = $server->get_db('disclosr-foidocuments');
+$rows = $foidocsdb->get_view("app", "byDate", Array('9999-99-99','0000-00-00'), true)->rows;
//print_r($rows);
foreach ($rows as $row) {
//Create an empty FeedItem
$newItem = $TestFeed->createNewItem();
//Add elements to the feed item
- $newItem->setTitle($row['name']);
- $newItem->setLink($row['id']);
- $newItem->setDate(date("c", $row['metadata']['lastModified']));
- $newItem->setDescription($row['name']);
+ $newItem->setTitle($row->value->title);
+ $newItem->setLink("view.php?id=".$row->value->docID);
+ $newItem->setDate(date("c", strtotime($row->value->date)));
+ $newItem->setDescription(displayLogEntry($row,$idtoname));
+ $newItem->addElement('guid', $row->value->_id,array('isPermaLink'=>'true'));
//Now add the feed item
$TestFeed->addItem($newItem);
}
//OK. Everything is done. Now genarate the feed.
-$TestFeed->genarateFeed();
+$TestFeed->generateFeed();
?>
--- /dev/null
+++ b/documents/scrapers/41a166419503bb50e410c58be54c102f.txt
@@ -1,1 +1,1 @@
-
+aspx
--- /dev/null
+++ b/documents/sitemap.xml.php
@@ -1,1 +1,25 @@
+<?php
+include ('../include/common.inc.php');
+$last_updated = date('Y-m-d', @filemtime('cbrfeed.zip'));
+header("Content-Type: text/xml");
+echo "<?xml version='1.0' encoding='UTF-8'?>";
+echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
+echo " <url><loc>" . local_url() . "index.php</loc><priority>1.0</priority></url>\n";
+foreach (scandir("./") as $file) {
+ if (strpos($file, ".php") !== false && $file != "index.php" && $file != "sitemap.xml.php")
+ echo " <url><loc>" . local_url() . "$file</loc><priority>0.6</priority></url>\n";
+}
+
+$db = $server->get_db('disclosr-foidocuments');
+try {
+ $rows = $db->get_view("app", "all")->rows;
+ foreach ($rows as $row) {
+ echo '<url><loc>' . local_url() . 'view.php?id=' . $row->value->_id . "</loc><priority>0.3</priority></url>\n";
+ }
+} catch (SetteeRestClientException $e) {
+ setteErrorHandler($e);
+}
+echo '</urlset>';
+?>
+
--- a/documents/template.inc.php
+++ b/documents/template.inc.php
@@ -130,21 +130,23 @@
}
function displayLogEntry($row, $idtoname) {
- echo "<div><h2>".$row->value->date.": ".$row->value->title." (".$idtoname[$row->value->agencyID].")</h2> <p>".str_replace("\n","<br>",$row->value->description);
+ $result = "";
+ $result .= "<div><h2>".$row->value->date.": ".$row->value->title." (".$idtoname[$row->value->agencyID].")</h2> <p>".str_replace("\n","<br>",$row->value->description);
if (isset($row->value->notes)) {
-echo " <br>Note: ".$row->value->notes;
+$result .= " <br>Note: ".$row->value->notes;
}
-echo "</p>";
+$result .= "</p>";
if (isset($row->value->links)){
-echo "<h3>Links/Documents</h3><ul>";
+$result .= "<h3>Links/Documents</h3><ul>";
foreach ($row->value->links as $link) {
- echo "<li><a href='$link'>".$link."</a></li>";
+ $result .= "<li><a href='$link'>".$link."</a></li>";
}
- echo "</ul>";
+ $result .= "</ul>";
}
- echo "<small><A href='".$row->value->url."'>View original source...</a> ID: ".$row->value->docID."</small>";
-echo"</div>";
+ $result .= "<small><A href='".$row->value->url."'>View original source...</a> ID: ".$row->value->docID."</small>";
+$result .= "</div>";
+return $result;
}
--- /dev/null
+++ b/documents/view.php
@@ -1,1 +1,27 @@
+<?php
+include('template.inc.php');
+include_header_documents("");
+include_once('../include/common.inc.php');
+?>
+<?php
+
+
+$agenciesdb = $server->get_db('disclosr-agencies');
+
+$idtoname = Array();
+foreach ($agenciesdb->get_view("app", "byCanonicalName")->rows as $row) {
+ $idtoname[$row->id] = trim($row->value->name);
+}
+$foidocsdb = $server->get_db('disclosr-foidocuments');
+try {
+ $obj = new stdClass();
+ $obj->value = $foidocsdb->get($_REQUEST['id']);
+echo displayLogEntry($obj,$idtoname);
+
+} catch (SetteeRestClientException $e) {
+ setteErrorHandler($e);
+}
+include_footer_documents();
+?>
+
--- a/lib/FeedItem.php
+++ /dev/null
@@ -1,168 +1,1 @@
-<?php
- /**
- * Univarsel Feed Writer
- *
- * FeedItem class - Used as feed element in FeedWriter class
- *
- * @package UnivarselFeedWriter
- * @author Anis uddin Ahmad <anisniit@gmail.com>
- * @link http://www.ajaxray.com/projects/rss
- */
- class FeedItem
- {
- private $elements = array(); //Collection of feed elements
- private $version;
-
- /**
- * Constructor
- *
- * @param contant (RSS1/RSS2/ATOM) RSS2 is default.
- */
- function __construct($version = RSS2)
- {
- $this->version = $version;
- }
-
- /**
- * Add an element to elements array
- *
- * @access public
- * @param srting The tag name of an element
- * @param srting The content of tag
- * @param array Attributes(if any) in 'attrName' => 'attrValue' format
- * @return void
- */
- public function addElement($elementName, $content, $attributes = null)
- {
- $this->elements[$elementName]['name'] = $elementName;
- $this->elements[$elementName]['content'] = $content;
- $this->elements[$elementName]['attributes'] = $attributes;
- }
-
- /**
- * Set multiple feed elements from an array.
- * Elements which have attributes cannot be added by this method
- *
- * @access public
- * @param array array of elements in 'tagName' => 'tagContent' format.
- * @return void
- */
- public function addElementArray($elementArray)
- {
- if(! is_array($elementArray)) return;
- foreach ($elementArray as $elementName => $content)
- {
- $this->addElement($elementName, $content);
- }
- }
-
- /**
- * Return the collection of elements in this feed item
- *
- * @access public
- * @return array
- */
- public function getElements()
- {
- return $this->elements;
- }
-
- // Wrapper functions ------------------------------------------------------
-
- /**
- * Set the 'dscription' element of feed item
- *
- * @access public
- * @param string The content of 'description' element
- * @return void
- */
- public function setDescription($description)
- {
- $tag = ($this->version == ATOM)? 'summary' : 'description';
- $this->addElement($tag, $description);
- }
-
- /**
- * @desc Set the 'title' element of feed item
- * @access public
- * @param string The content of 'title' element
- * @return void
- */
- public function setTitle($title)
- {
- $this->addElement('title', $title);
- }
-
- /**
- * Set the 'date' element of feed item
- *
- * @access public
- * @param string The content of 'date' element
- * @return void
- */
- public function setDate($date)
- {
- if(! is_numeric($date))
- {
- $date = strtotime($date);
- }
-
- if($this->version == ATOM)
- {
- $tag = 'updated';
- $value = date(DATE_ATOM, $date);
- }
- elseif($this->version == RSS2)
- {
- $tag = 'pubDate';
- $value = date(DATE_RSS, $date);
- }
- else
- {
- $tag = 'dc:date';
- $value = date("Y-m-d", $date);
- }
-
- $this->addElement($tag, $value);
- }
-
- /**
- * Set the 'link' element of feed item
- *
- * @access public
- * @param string The content of 'link' element
- * @return void
- */
- public function setLink($link)
- {
- if($this->version == RSS2 || $this->version == RSS1)
- {
- $this->addElement('link', $link);
- }
- else
- {
- $this->addElement('link','',array('href'=>$link));
- $this->addElement('id', FeedWriter::uuid($link,'urn:uuid:'));
- }
-
- }
-
- /**
- * Set the 'encloser' element of feed item
- * For RSS 2.0 only
- *
- * @access public
- * @param string The url attribute of encloser tag
- * @param string The length attribute of encloser tag
- * @param string The type attribute of encloser tag
- * @return void
- */
- public function setEncloser($url, $length, $type)
- {
- $attributes = array('url'=>$url, 'length'=>$length, 'type'=>$type);
- $this->addElement('enclosure','',$attributes);
- }
-
- } // end of class FeedItem
-?>
--- a/lib/FeedWriter.php
+++ /dev/null
@@ -1,435 +1,1 @@
-<?php
-// RSS 0.90 Officially obsoleted by 1.0
-// RSS 0.91, 0.92, 0.93 and 0.94 Officially obsoleted by 2.0
-// So, define constants for RSS 1.0, RSS 2.0 and ATOM
-
- define('RSS1', 'RSS 1.0', true);
- define('RSS2', 'RSS 2.0', true);
- define('ATOM', 'ATOM', true);
-
- /**
- * Univarsel Feed Writer class
- *
- * Genarate RSS 1.0, RSS2.0 and ATOM Feed
- *
- * @package UnivarselFeedWriter
- * @author Anis uddin Ahmad <anisniit@gmail.com>
- * @link http://www.ajaxray.com/projects/rss
- */
- class FeedWriter
- {
- private $channels = array(); // Collection of channel elements
- private $items = array(); // Collection of items as object of FeedItem class.
- private $data = array(); // Store some other version wise data
- private $CDATAEncoding = array(); // The tag names which have to encoded as CDATA
-
- private $version = null;
-
- /**
- * Constructor
- *
- * @param constant the version constant (RSS1/RSS2/ATOM).
- */
- function __construct($version = RSS2)
- {
- $this->version = $version;
-
- // Setting default value for assential channel elements
- $this->channels['title'] = $version . ' Feed';
- $this->channels['link'] = 'http://www.ajaxray.com/blog';
-
- //Tag names to encode in CDATA
- $this->CDATAEncoding = array('description', 'content:encoded', 'summary');
- }
-
- // Start # public functions ---------------------------------------------
-
- /**
- * Set a channel element
- * @access public
- * @param srting name of the channel tag
- * @param string content of the channel tag
- * @return void
- */
- public function setChannelElement($elementName, $content)
- {
- $this->channels[$elementName] = $content ;
- }
-
- /**
- * Set multiple channel elements from an array. Array elements
- * should be 'channelName' => 'channelContent' format.
- *
- * @access public
- * @param array array of channels
- * @return void
- */
- public function setChannelElementsFromArray($elementArray)
- {
- if(! is_array($elementArray)) return;
- foreach ($elementArray as $elementName => $content)
- {
- $this->setChannelElement($elementName, $content);
- }
- }
-
- /**
- * Genarate the actual RSS/ATOM file
- *
- * @access public
- * @return void
- */
- public function genarateFeed()
- {
- header("Content-type: text/xml");
-
- $this->printHead();
- $this->printChannels();
- $this->printItems();
- $this->printTale();
- }
-
- /**
- * Create a new FeedItem.
- *
- * @access public
- * @return object instance of FeedItem class
- */
- public function createNewItem()
- {
- $Item = new FeedItem($this->version);
- return $Item;
- }
-
- /**
- * Add a FeedItem to the main class
- *
- * @access public
- * @param object instance of FeedItem class
- * @return void
- */
- public function addItem($feedItem)
- {
- $this->items[] = $feedItem;
- }
-
-
- // Wrapper functions -------------------------------------------------------------------
-
- /**
- * Set the 'title' channel element
- *
- * @access public
- * @param srting value of 'title' channel tag
- * @return void
- */
- public function setTitle($title)
- {
- $this->setChannelElement('title', $title);
- }
-
- /**
- * Set the 'description' channel element
- *
- * @access public
- * @param srting value of 'description' channel tag
- * @return void
- */
- public function setDescription($desciption)
- {
- $this->setChannelElement('description', $desciption);
- }
-
- /**
- * Set the 'link' channel element
- *
- * @access public
- * @param srting value of 'link' channel tag
- * @return void
- */
- public function setLink($link)
- {
- $this->setChannelElement('link', $link);
- }
-
- /**
- * Set the 'image' channel element
- *
- * @access public
- * @param srting title of image
- * @param srting link url of the imahe
- * @param srting path url of the image
- * @return void
- */
- public function setImage($title, $link, $url)
- {
- $this->setChannelElement('image', array('title'=>$title, 'link'=>$link, 'url'=>$url));
- }
-
- /**
- * Set the 'about' channel element. Only for RSS 1.0
- *
- * @access public
- * @param srting value of 'about' channel tag
- * @return void
- */
- public function setChannelAbout($url)
- {
- $this->data['ChannelAbout'] = $url;
- }
-
- /**
- * Genarates an UUID
- * @author Anis uddin Ahmad <admin@ajaxray.com>
- * @param string an optional prefix
- * @return string the formated uuid
- */
- public function uuid($key = null, $prefix = '')
- {
- $key = ($key == null)? uniqid(rand()) : $key;
- $chars = md5($key);
- $uuid = substr($chars,0,8) . '-';
- $uuid .= substr($chars,8,4) . '-';
- $uuid .= substr($chars,12,4) . '-';
- $uuid .= substr($chars,16,4) . '-';
- $uuid .= substr($chars,20,12);
-
- return $prefix . $uuid;
- }
- // End # public functions ----------------------------------------------
-
- // Start # private functions ----------------------------------------------
-
- /**
- * Prints the xml and rss namespace
- *
- * @access private
- * @return void
- */
- private function printHead()
- {
- $out = '<?xml version="1.0" encoding="utf-8"?>' . "\n";
-
- if($this->version == RSS2)
- {
- $out .= '<rss version="2.0"
- xmlns:content="http://purl.org/rss/1.0/modules/content/"
- xmlns:wfw="http://wellformedweb.org/CommentAPI/"
- >' . PHP_EOL;
- }
- elseif($this->version == RSS1)
- {
- $out .= '<rdf:RDF
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns="http://purl.org/rss/1.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- >' . PHP_EOL;;
- }
- else if($this->version == ATOM)
- {
- $out .= '<feed xmlns="http://www.w3.org/2005/Atom">' . PHP_EOL;;
- }
- echo $out;
- }
-
- /**
- * Closes the open tags at the end of file
- *
- * @access private
- * @return void
- */
- private function printTale()
- {
- if($this->version == RSS2)
- {
- echo '</channel>' . PHP_EOL . '</rss>';
- }
- elseif($this->version == RSS1)
- {
- echo '</rdf:RDF>';
- }
- else if($this->version == ATOM)
- {
- echo '</feed>';
- }
-
- }
-
- /**
- * Creates a single node as xml format
- *
- * @access private
- * @param srting name of the tag
- * @param mixed tag value as string or array of nested tags in 'tagName' => 'tagValue' format
- * @param array Attributes(if any) in 'attrName' => 'attrValue' format
- * @return string formatted xml tag
- */
- private function makeNode($tagName, $tagContent, $attributes = null)
- {
- $nodeText = '';
- $attrText = '';
-
- if(is_array($attributes))
- {
- foreach ($attributes as $key => $value)
- {
- $attrText .= " $key=\"$value\" ";
- }
- }
-
- if(is_array($tagContent) && $this->version == RSS1)
- {
- $attrText = ' rdf:parseType="Resource"';
- }
-
-
- $attrText .= (in_array($tagName, $this->CDATAEncoding) && $this->version == ATOM)? ' type="html" ' : '';
- $nodeText .= (in_array($tagName, $this->CDATAEncoding))? "<{$tagName}{$attrText}><![CDATA[" : "<{$tagName}{$attrText}>";
-
- if(is_array($tagContent))
- {
- foreach ($tagContent as $key => $value)
- {
- $nodeText .= $this->makeNode($key, $value);
- }
- }
- else
- {
- $nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent);
- }
-
- $nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]></$tagName>" : "</$tagName>";
-
- return $nodeText . PHP_EOL;
- }
-
- /**
- * @desc Print channels
- * @access private
- * @return void
- */
- private function printChannels()
- {
- //Start channel tag
- switch ($this->version)
- {
- case RSS2:
- echo '<channel>' . PHP_EOL;
- break;
- case RSS1:
- echo (isset($this->data['ChannelAbout']))? "<channel rdf:about=\"{$this->data['ChannelAbout']}\">" : "<channel rdf:about=\"{$this->channels['link']}\">";
- break;
- }
-
- //Print Items of channel
- foreach ($this->channels as $key => $value)
- {
- if($this->version == ATOM && $key == 'link')
- {
- // ATOM prints link element as href attribute
- echo $this->makeNode($key,'',array('href'=>$value));
- //Add the id for ATOM
- echo $this->makeNode('id',$this->uuid($value,'urn:uuid:'));
- }
- else
- {
- echo $this->makeNode($key, $value);
- }
-
- }
-
- //RSS 1.0 have special tag <rdf:Seq> with channel
- if($this->version == RSS1)
- {
- echo "<items>" . PHP_EOL . "<rdf:Seq>" . PHP_EOL;
- foreach ($this->items as $item)
- {
- $thisItems = $item->getElements();
- echo "<rdf:li resource=\"{$thisItems['link']['content']}\"/>" . PHP_EOL;
- }
- echo "</rdf:Seq>" . PHP_EOL . "</items>" . PHP_EOL . "</channel>" . PHP_EOL;
- }
- }
-
- /**
- * Prints formatted feed items
- *
- * @access private
- * @return void
- */
- private function printItems()
- {
- foreach ($this->items as $item)
- {
- $thisItems = $item->getElements();
-
- //the argument is printed as rdf:about attribute of item in rss 1.0
- echo $this->startItem($thisItems['link']['content']);
-
- foreach ($thisItems as $feedItem )
- {
- echo $this->makeNode($feedItem['name'], $feedItem['content'], $feedItem['attributes']);
- }
- echo $this->endItem();
- }
- }
-
- /**
- * Make the starting tag of channels
- *
- * @access private
- * @param srting The vale of about tag which is used for only RSS 1.0
- * @return void
- */
- private function startItem($about = false)
- {
- if($this->version == RSS2)
- {
- echo '<item>' . PHP_EOL;
- }
- elseif($this->version == RSS1)
- {
- if($about)
- {
- echo "<item rdf:about=\"$about\">" . PHP_EOL;
- }
- else
- {
- die('link element is not set .\n It\'s required for RSS 1.0 to be used as about attribute of item');
- }
- }
- else if($this->version == ATOM)
- {
- echo "<entry>" . PHP_EOL;
- }
- }
-
- /**
- * Closes feed item tag
- *
- * @access private
- * @return void
- */
- private function endItem()
- {
- if($this->version == RSS2 || $this->version == RSS1)
- {
- echo '</item>' . PHP_EOL;
- }
- else if($this->version == ATOM)
- {
- echo "</entry>" . PHP_EOL;
- }
- }
-
-
-
- // End # private functions ----------------------------------------------
-
- } // end of class FeedWriter
-
-// autoload classes
-function __autoload($class_name)
-{
- require_once $class_name . '.php';
-}
+