[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
14082024
/
Data
/
htdocs
/
htdocs
/
ojs
/
248
/
lib
/
pkp
/
lib
/
swordappv2
/
[
Home
]
File: packager_atom_twostep.php
<?php require_once('utils.php'); class PackagerAtomTwoStep { // The location of the files (without final directory) private $sac_root_in; // The location to write the package out to private $sac_root_out; // The filename to save the package as private $sac_file_out; // File names private $sac_files; // Number of files added private $sac_filecount; // The dcterms metadata private $sac_entry_dctermsFields; private $sac_entry_dctermsValues; private $sac_entry_dctermsAttributes; // The entry title private $sac_entry_title; // The entry id private $sac_entry_id; // The entry updated date / time stamp private $sac_entry_updated; // The entry author names private $sac_entry_authors; // The entry summary text private $sac_entry_summary; function __construct($sac_rootin, $sac_dirin, $sac_rootout, $sac_fileout) { // Store the values $this->sac_root_in = $sac_rootin; $this->sac_dir_in = $sac_dirin; $this->sac_root_out = $sac_rootout; $this->sac_file_out = $sac_fileout; $this->sac_files = array(); $this->sac_mimetypes = array(); $this->sac_filecount = 0; $this->sac_entry_dctermsFields = array(); $this->sac_entry_dctermsValues = array(); $this->sac_entry_dctermsAttributes = array(); $this->sac_entry_authors = array(); } function setTitle($sac_thetitle) { $this->sac_entry_title = $this->clean($sac_thetitle); } function setIdentifier($sac_theID) { $this->sac_entry_id = $this->clean($sac_theID); } function setUpdated($sac_theUpdated) { $this->sac_entry_updated = $this->clean($sac_theUpdated); } function addEntryAuthor($sac_theauthor) { array_push($this->sac_entry_authors, $this->clean($sac_theauthor)); } function setSummary($sac_theSummary) { $this->sac_entry_summary = $this->clean($sac_theSummary); } function addMetadata($sac_theElement, $sac_theValue, $sac_theAttributes = array()) { array_push($this->sac_entry_dctermsFields, $this->clean($sac_theElement)); array_push($this->sac_entry_dctermsValues, $this->clean($sac_theValue)); $sac_cleanAttributes = array(); foreach ($sac_theAttributes as $attrName => $attrValue) { $sac_cleanAttributes[$this->clean($attrName)] = $this->clean($attrValue); } array_push($this->sac_entry_dctermsAttributes, $sac_cleanAttributes); } function addFile($sac_thefile) { array_push($this->sac_files, $sac_thefile); $this->sac_filecount++; } function getFiles() { return $this->sac_files; } function create() { // Write the atom entry manifest $sac_atom = $this->sac_root_in . '/' . $this->sac_dir_in . '/atom'; $fh = @fopen($sac_atom, 'w'); if (!$fh) { throw new Exception("Error writing atom entry manifest (" . $this->sac_root_in . '/' . $this->sac_dir_in . '/atom)'); } // Write the atom entry header fwrite($fh, "<?xml version=\"1.0\"?>\n"); fwrite($fh, "<entry xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dcterms=\"http://purl.org/dc/terms/\">\n"); if (!empty($this->sac_entry_title)) fwrite($fh, "\t<title>" . $this->sac_entry_title . "</title>\n"); if (!empty($this->sac_entry_id)) fwrite($fh, "\t<id>" . $this->sac_entry_id . "</id>\n"); if (!empty($this->sac_entry_updated)) fwrite($fh, "\t<updated>" . $this->sac_entry_updated . "</updated>\n"); foreach ($this->sac_entry_authors as $sac_author) { fwrite($fh, "\t<author><name>" . $sac_author . "</name></author>\n"); } if (!empty($this->sac_entry_summary)) fwrite($fh, "\t<summary>" . $this->sac_entry_summary . "</summary>\n"); // Write the dcterms metadata for ($i = 0; $i < count($this->sac_entry_dctermsFields); $i++) { $dcElement = "\t<dcterms:" . $this->sac_entry_dctermsFields[$i]; if (!empty($this->sac_entry_dctermsAttributes[$i])) { foreach ($this->sac_entry_dctermsAttributes[$i] as $attrName => $attrValue) { $dcElement .= " $attrName=\"$attrValue\""; } } $dcElement .= ">" . $this->sac_entry_dctermsValues[$i] . "</dcterms:" . $this->sac_entry_dctermsFields[$i] . ">\n"; fwrite($fh, $dcElement); } // Close the file fwrite($fh, "</entry>\n"); fclose($fh); } function clean($data) { return str_replace(''', ''', htmlspecialchars($data, ENT_QUOTES)); } } ?>