00001 <?php
00002
00015
00016
00017
00018 require_once (dirname(__FILE__) . '/LogEntry.inc.php');
00019
00020 class LogEntryDAO extends DAO {
00025 function getLogFilename() {
00026 return (dirname(__FILE__) . '/log.txt');
00027 }
00028
00029 function addEntry(&$logEntry, $file = null) {
00030 if (!isset($file)) $file = $this->getLogFilename();
00031
00032 $stamp = strtr(Core::getCurrentDate(), "\t", " ");
00033 $user = strtr($logEntry->getUser(), "\t", " ");
00034 $site = strtr($logEntry->getSite(), "\t", " ");
00035 $journal = strtr($logEntry->getJournal(), "\t", " ");
00036 $publisher = strtr($logEntry->getPublisher(), "\t", " ");
00037 $printIssn = strtr($logEntry->getPrintIssn(), "\t", " ");
00038 $onlineIssn = strtr($logEntry->getOnlineIssn(), "\t", " ");
00039 $type = strtr($logEntry->getType(), "\t", " ");
00040 $value = strtr($logEntry->getValue(), "\t", " ");
00041 $journalUrl = strtr($logEntry->getJournalUrl(), "\t", " ");
00042
00043 $line = "$stamp\t$user\t$site\t$journal\t$publisher\t$printIssn\t$onlineIssn\t$type\t$value\t$journalUrl\n";
00044
00045 $fp = fopen($file, 'a');
00046 if (!$fp) return false;
00047
00048 if (!flock($fp, LOCK_EX)) {
00049 fclose($fp);
00050 return false;
00051 }
00052
00053 fwrite($fp, $line);
00054 fclose($fp);
00055 }
00056
00057 function &parse($file = null, $year = null) {
00058 if (!isset($file)) $file = $this->getLogFilename();
00059
00060 $entries = array();
00061
00062 $fp = fopen($file, 'r');
00063 if (!$fp) {
00064 $result = false;
00065 return $result;
00066 }
00067
00068 while ($data = fgets($fp, 4096)) {
00069 $fragments = explode("\t", trim($data));
00070 if (sizeof($fragments) < 10) continue;
00071 list($stamp, $user, $site, $journal, $publisher, $printIssn, $onlineIssn, $type, $value, $journalUrl) = $fragments;
00072 $entryYear = strftime('%Y', strtotime($stamp));
00073 if ($year === null || $entryYear == $year) {
00074 $logEntry = &new LogEntry();
00075 $logEntry->setStamp($stamp);
00076 $logEntry->setUser($user);
00077 $logEntry->setSite($site);
00078 $logEntry->setJournal($journal);
00079 $logEntry->setPublisher($publisher);
00080 $logEntry->setPrintIssn($printIssn);
00081 $logEntry->setOnlineIssn($onlineIssn);
00082 $logEntry->setType($type);
00083 $logEntry->setValue($value);
00084 $logEntry->setJournalUrl($journalUrl);
00085 $entries[] = &$logEntry;
00086 }
00087 }
00088
00089 fclose ($fp);
00090 return $entries;
00091 }
00092
00093 function clearLog($file = null) {
00094 if (!isset($file)) $file = $this->getLogFilename();
00095
00096 $fp = fopen($file, 'w');
00097 if (!$fp) return false;
00098
00099 if (!flock($fp, LOCK_EX)) {
00100 fclose($fp);
00101 return false;
00102 }
00103
00104 fclose($fp);
00105 }
00106 }
00107
00108 ?>