00001 <?php
00002
00018 class PGTStorageFile extends PGTStorage
00019 {
00031 var
$_path;
00032
00041 function
getPath()
00042 {
00043
return $this->_path;
00044 }
00045
00052 var
$_format;
00053
00061 function
getFormat()
00062 {
00063
return $this->_format;
00064 }
00065
00066
00067
00068
00069
00077 function
getStorageType()
00078 {
00079
return "file";
00080 }
00081
00089 function
getStorageInfo()
00090 {
00091
return 'path=`'.$this->getPath().
'\', format=`'.$this->getFormat().
'\'';
00092 }
00093
00094
00095
00096
00097
00107 function
PGTStorageFile($cas_parent,$format,$path)
00108 {
00109
phpCAS::traceBegin();
00110
00111 $this->
PGTStorage($cas_parent);
00112
00113
if (empty($format) ) $format =
CAS_PGT_STORAGE_FILE_DEFAULT_FORMAT;
00114
if (empty($path) ) $path =
CAS_PGT_STORAGE_FILE_DEFAULT_PATH;
00115
00116
00117
if ( $path[0] !=
'/' ) {
00118 phpCAS::error('an absolute path is needed
for PGT storage to file');
00119 }
00120
00121
00122 $path = preg_replace('|[/]*$|
','/',$path);
00123 $path = preg_replace('|^[/]*|
','/',$path);
00124 $this->_path = $path;
00125
00126
00127
switch ($format) {
00128
case CAS_PGT_STORAGE_FILE_FORMAT_PLAIN:
00129
case CAS_PGT_STORAGE_FILE_FORMAT_XML:
00130 $this->_format = $format;
00131
break;
00132
default:
00133 phpCAS::error('unknown PGT file storage format (`'.
CAS_PGT_STORAGE_FILE_FORMAT_PLAIN.
'\' and `'.CAS_PGT_STORAGE_FILE_FORMAT_XML.
'\' allowed)');
00134 }
00135 phpCAS::traceEnd();
00136 }
00137
00138
00139
00140
00141
00147 function
init()
00148 {
00149
phpCAS::traceBegin();
00150
00151
if ( $this->
isInitialized() )
00152
return;
00153
00154 parent::init();
00155 phpCAS::traceEnd();
00156 }
00157
00158
00159
00160
00161
00170 function
getPGTIouFilename($pgt_iou)
00171 {
00172
phpCAS::traceBegin();
00173
return $this->
getPath().$pgt_iou.
'.'.$this->
getFormat();
00174 phpCAS::traceEnd();
00175 }
00176
00186 function
write($pgt,$pgt_iou)
00187 {
00188
phpCAS::traceBegin();
00189 $fname = $this->getPGTIouFilename($pgt_iou);
00190
if ( $f=fopen($fname,
"w") ) {
00191
if ( fputs($f,$pgt) === FALSE ) {
00192 phpCAS::error('could not write PGT to `'.$fname.
'\'');
00193 }
00194 fclose($f);
00195 }
else {
00196 phpCAS::error('could not open `'.$fname.
'\'');
00197 }
00198 phpCAS::traceEnd();
00199 }
00200
00211 function
read($pgt_iou)
00212 {
00213
phpCAS::traceBegin();
00214 $pgt = FALSE;
00215 $fname = $this->getPGTIouFilename($pgt_iou);
00216
if ( !($f=fopen($fname,
"r")) ) {
00217 phpCAS::trace('could not open `'.$fname.
'\'');
00218 }
else {
00219
if ( ($pgt=fgets($f)) === FALSE ) {
00220 phpCAS::trace('could not read PGT from `'.$fname.
'\'');
00221 }
00222 fclose($f);
00223 }
00224
00225
00226 @unlink($fname);
00227
00228 phpCAS::traceEnd($pgt);
00229
return $pgt;
00230 }
00231
00234 }
00235
00236
00237 ?>