-<?php\r
-\r
-/**\r
- * @file CAS/PGTStorage/pgt-file.php\r
- * Basic class for PGT file storage\r
- */\r
-\r
-/**\r
- * @class PGTStorageFile\r
- * The PGTStorageFile class is a class for PGT file storage. An instance of \r
- * this class is returned by CASClient::SetPGTStorageFile().\r
- *\r
- * @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>\r
- *\r
- * @ingroup internalPGTStorageFile\r
- */\r
-\r
-class PGTStorageFile extends PGTStorage\r
-{\r
- /** \r
- * @addtogroup internalPGTStorageFile \r
- * @{ \r
- */\r
-\r
- /**\r
- * a string telling where PGT's should be stored on the filesystem. Written by\r
- * PGTStorageFile::PGTStorageFile(), read by getPath().\r
- *\r
- * @private\r
- */\r
- var $_path;\r
-\r
- /**\r
- * This method returns the name of the directory where PGT's should be stored \r
- * on the filesystem.\r
- *\r
- * @return the name of a directory (with leading and trailing '/')\r
- *\r
- * @private\r
- */\r
- function getPath()\r
- {\r
- return $this->_path;\r
- }\r
-\r
- /**\r
- * a string telling the format to use to store PGT's (plain or xml). Written by\r
- * PGTStorageFile::PGTStorageFile(), read by getFormat().\r
- *\r
- * @private\r
- */\r
- var $_format;\r
-\r
- /**\r
- * This method returns the format to use when storing PGT's on the filesystem.\r
- *\r
- * @return a string corresponding to the format used (plain or xml).\r
- *\r
- * @private\r
- */\r
- function getFormat()\r
- {\r
- return $this->_format;\r
- }\r
-\r
- // ########################################################################\r
- // DEBUGGING\r
- // ########################################################################\r
- \r
- /**\r
- * This method returns an informational string giving the type of storage\r
- * used by the object (used for debugging purposes).\r
- *\r
- * @return an informational string.\r
- * @public\r
- */\r
- function getStorageType()\r
- {\r
- return "file";\r
- }\r
-\r
- /**\r
- * This method returns an informational string giving informations on the\r
- * parameters of the storage.(used for debugging purposes).\r
- *\r
- * @return an informational string.\r
- * @public\r
- */\r
- function getStorageInfo()\r
- {\r
- return 'path=`'.$this->getPath().'\', format=`'.$this->getFormat().'\'';\r
- }\r
-\r
- // ########################################################################\r
- // CONSTRUCTOR\r
- // ########################################################################\r
- \r
- /**\r
- * The class constructor, called by CASClient::SetPGTStorageFile().\r
- *\r
- * @param $cas_parent the CASClient instance that creates the object.\r
- * @param $format the format used to store the PGT's (`plain' and `xml' allowed).\r
- * @param $path the path where the PGT's should be stored\r
- *\r
- * @public\r
- */\r
- function PGTStorageFile($cas_parent,$format,$path)\r
- {\r
- phpCAS::traceBegin();\r
- // call the ancestor's constructor\r
- $this->PGTStorage($cas_parent);\r
-\r
- if (empty($format) ) $format = CAS_PGT_STORAGE_FILE_DEFAULT_FORMAT;\r
- if (empty($path) ) $path = CAS_PGT_STORAGE_FILE_DEFAULT_PATH;\r
-\r
- // check that the path is an absolute path\r
- if (getenv("OS")=="Windows_NT"){\r
- \r
- if (!preg_match('`^[a-zA-Z]:`', $path)) {\r
- phpCAS::error('an absolute path is needed for PGT storage to file');\r
- }\r
- \r
- }\r
- else\r
- {\r
- \r
- if ( $path[0] != '/' ) {\r
- phpCAS::error('an absolute path is needed for PGT storage to file');\r
- }\r
-\r
- // store the path (with a leading and trailing '/') \r
- $path = preg_replace('|[/]*$|','/',$path);\r
- $path = preg_replace('|^[/]*|','/',$path);\r
- }\r
- \r
- $this->_path = $path;\r
- // check the format and store it\r
- switch ($format) {\r
- case CAS_PGT_STORAGE_FILE_FORMAT_PLAIN:\r
- case CAS_PGT_STORAGE_FILE_FORMAT_XML:\r
- $this->_format = $format;\r
- break;\r
- default:\r
- phpCAS::error('unknown PGT file storage format (`'.CAS_PGT_STORAGE_FILE_FORMAT_PLAIN.'\' and `'.CAS_PGT_STORAGE_FILE_FORMAT_XML.'\' allowed)');\r
- }\r
- phpCAS::traceEnd(); \r
- }\r
-\r
- // ########################################################################\r
- // INITIALIZATION\r
- // ########################################################################\r
- \r
- /**\r
- * This method is used to initialize the storage. Halts on error.\r
- *\r
- * @public\r
- */\r
- function init()\r
- {\r
- phpCAS::traceBegin();\r
- // if the storage has already been initialized, return immediatly\r
- if ( $this->isInitialized() )\r
- return;\r
- // call the ancestor's method (mark as initialized)\r
- parent::init();\r
- phpCAS::traceEnd(); \r
- }\r
-\r
- // ########################################################################\r
- // PGT I/O\r
- // ########################################################################\r
-\r
- /**\r
- * This method returns the filename corresponding to a PGT Iou.\r
- *\r
- * @param $pgt_iou the PGT iou.\r
- *\r
- * @return a filename\r
- * @private\r
- */\r
- function getPGTIouFilename($pgt_iou)\r
- {\r
- phpCAS::traceBegin();\r
- $filename = $this->getPath().$pgt_iou.'.'.$this->getFormat();\r
- phpCAS::traceEnd($filename);\r
- return $filename;\r
- }\r
- \r
- /**\r
- * This method stores a PGT and its corresponding PGT Iou into a file. Echoes a\r
- * warning on error.\r
- *\r
- * @param $pgt the PGT\r
- * @param $pgt_iou the PGT iou\r
- *\r
- * @public\r
- */\r
- function write($pgt,$pgt_iou)\r
- {\r
- phpCAS::traceBegin();\r
- $fname = $this->getPGTIouFilename($pgt_iou);\r
- if ( $f=fopen($fname,"w") ) {\r
- if ( fputs($f,$pgt) === FALSE ) {\r
- phpCAS::error('could not write PGT to `'.$fname.'\'');\r
- }\r
- fclose($f);\r
- } else {\r
- phpCAS::error('could not open `'.$fname.'\'');\r
- }\r
- phpCAS::traceEnd(); \r
- }\r
-\r
- /**\r
- * This method reads a PGT corresponding to a PGT Iou and deletes the \r
- * corresponding file.\r
- *\r
- * @param $pgt_iou the PGT iou\r
- *\r
- * @return the corresponding PGT, or FALSE on error\r
- *\r
- * @public\r
- */\r
- function read($pgt_iou)\r
- {\r
- phpCAS::traceBegin();\r
- $pgt = FALSE;\r
- $fname = $this->getPGTIouFilename($pgt_iou);\r
- if ( !($f=fopen($fname,"r")) ) {\r
- phpCAS::trace('could not open `'.$fname.'\'');\r
- } else {\r
- if ( ($pgt=fgets($f)) === FALSE ) {\r
- phpCAS::trace('could not read PGT from `'.$fname.'\'');\r
- } \r
- fclose($f);\r
- }\r
-\r
- // delete the PGT file\r
- @unlink($fname);\r
-\r
- phpCAS::traceEnd($pgt);\r
- return $pgt;\r
- }\r
- \r
- /** @} */\r
- \r
-}\r
-\r
- \r
+<?php
+
+/**
+ * @file CAS/PGTStorage/pgt-file.php
+ * Basic class for PGT file storage
+ */
+
+/**
+ * @class PGTStorageFile
+ * The PGTStorageFile class is a class for PGT file storage. An instance of
+ * this class is returned by CASClient::SetPGTStorageFile().
+ *
+ * @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>
+ *
+ * @ingroup internalPGTStorageFile
+ */
+
+class PGTStorageFile extends PGTStorage
+{
+ /**
+ * @addtogroup internalPGTStorageFile
+ * @{
+ */
+
+ /**
+ * a string telling where PGT's should be stored on the filesystem. Written by
+ * PGTStorageFile::PGTStorageFile(), read by getPath().
+ *
+ * @private
+ */
+ var $_path;
+
+ /**
+ * This method returns the name of the directory where PGT's should be stored
+ * on the filesystem.
+ *
+ * @return the name of a directory (with leading and trailing '/')
+ *
+ * @private
+ */
+ function getPath()
+ {
+ return $this->_path;
+ }
+
+ /**
+ * a string telling the format to use to store PGT's (plain or xml). Written by
+ * PGTStorageFile::PGTStorageFile(), read by getFormat().
+ *
+ * @private
+ */
+ var $_format;
+
+ /**
+ * This method returns the format to use when storing PGT's on the filesystem.
+ *
+ * @return a string corresponding to the format used (plain or xml).
+ *
+ * @private
+ */
+ function getFormat()
+ {
+ return $this->_format;
+ }
+
+ // ########################################################################
+ // DEBUGGING
+ // ########################################################################
+
+ /**
+ * This method returns an informational string giving the type of storage
+ * used by the object (used for debugging purposes).
+ *
+ * @return an informational string.
+ * @public
+ */
+ function getStorageType()
+ {
+ return "file";
+ }
+
+ /**
+ * This method returns an informational string giving informations on the
+ * parameters of the storage.(used for debugging purposes).
+ *
+ * @return an informational string.
+ * @public
+ */
+ function getStorageInfo()
+ {
+ return 'path=`'.$this->getPath().'\', format=`'.$this->getFormat().'\'';
+ }
+
+ // ########################################################################
+ // CONSTRUCTOR
+ // ########################################################################
+
+ /**
+ * The class constructor, called by CASClient::SetPGTStorageFile().
+ *
+ * @param $cas_parent the CASClient instance that creates the object.
+ * @param $format the format used to store the PGT's (`plain' and `xml' allowed).
+ * @param $path the path where the PGT's should be stored
+ *
+ * @public
+ */
+ function PGTStorageFile($cas_parent,$format,$path)
+ {
+ phpCAS::traceBegin();
+ // call the ancestor's constructor
+ $this->PGTStorage($cas_parent);
+
+ if (empty($format) ) $format = CAS_PGT_STORAGE_FILE_DEFAULT_FORMAT;
+ if (empty($path) ) $path = CAS_PGT_STORAGE_FILE_DEFAULT_PATH;
+
+ // check that the path is an absolute path
+ if (getenv("OS")=="Windows_NT"){
+
+ if (!preg_match('`^[a-zA-Z]:`', $path)) {
+ phpCAS::error('an absolute path is needed for PGT storage to file');
+ }
+
+ }
+ else
+ {
+
+ if ( $path[0] != '/' ) {
+ phpCAS::error('an absolute path is needed for PGT storage to file');
+ }
+
+ // store the path (with a leading and trailing '/')
+ $path = preg_replace('|[/]*$|','/',$path);
+ $path = preg_replace('|^[/]*|','/',$path);
+ }
+
+ $this->_path = $path;
+ // check the format and store it
+ switch ($format) {
+ case CAS_PGT_STORAGE_FILE_FORMAT_PLAIN:
+ case CAS_PGT_STORAGE_FILE_FORMAT_XML:
+ $this->_format = $format;
+ break;
+ default:
+ phpCAS::error('unknown PGT file storage format (`'.CAS_PGT_STORAGE_FILE_FORMAT_PLAIN.'\' and `'.CAS_PGT_STORAGE_FILE_FORMAT_XML.'\' allowed)');
+ }
+ phpCAS::traceEnd();
+ }
+
+ // ########################################################################
+ // INITIALIZATION
+ // ########################################################################
+
+ /**
+ * This method is used to initialize the storage. Halts on error.
+ *
+ * @public
+ */
+ function init()
+ {
+ phpCAS::traceBegin();
+ // if the storage has already been initialized, return immediatly
+ if ( $this->isInitialized() )
+ return;
+ // call the ancestor's method (mark as initialized)
+ parent::init();
+ phpCAS::traceEnd();
+ }
+
+ // ########################################################################
+ // PGT I/O
+ // ########################################################################
+
+ /**
+ * This method returns the filename corresponding to a PGT Iou.
+ *
+ * @param $pgt_iou the PGT iou.
+ *
+ * @return a filename
+ * @private
+ */
+ function getPGTIouFilename($pgt_iou)
+ {
+ phpCAS::traceBegin();
+ $filename = $this->getPath().$pgt_iou.'.'.$this->getFormat();
+ phpCAS::traceEnd($filename);
+ return $filename;
+ }
+
+ /**
+ * This method stores a PGT and its corresponding PGT Iou into a file. Echoes a
+ * warning on error.
+ *
+ * @param $pgt the PGT
+ * @param $pgt_iou the PGT iou
+ *
+ * @public
+ */
+ function write($pgt,$pgt_iou)
+ {
+ phpCAS::traceBegin();
+ $fname = $this->getPGTIouFilename($pgt_iou);
+ if ( $f=fopen($fname,"w") ) {
+ if ( fputs($f,$pgt) === FALSE ) {
+ phpCAS::error('could not write PGT to `'.$fname.'\'');
+ }
+ fclose($f);
+ } else {
+ phpCAS::error('could not open `'.$fname.'\'');
+ }
+ phpCAS::traceEnd();
+ }
+
+ /**
+ * This method reads a PGT corresponding to a PGT Iou and deletes the
+ * corresponding file.
+ *
+ * @param $pgt_iou the PGT iou
+ *
+ * @return the corresponding PGT, or FALSE on error
+ *
+ * @public
+ */
+ function read($pgt_iou)
+ {
+ phpCAS::traceBegin();
+ $pgt = FALSE;
+ $fname = $this->getPGTIouFilename($pgt_iou);
+ if ( !($f=fopen($fname,"r")) ) {
+ phpCAS::trace('could not open `'.$fname.'\'');
+ } else {
+ if ( ($pgt=fgets($f)) === FALSE ) {
+ phpCAS::trace('could not read PGT from `'.$fname.'\'');
+ }
+ fclose($f);
+ }
+
+ // delete the PGT file
+ @unlink($fname);
+
+ phpCAS::traceEnd($pgt);
+ return $pgt;
+ }
+
+ /** @} */
+
+}
+
+
?>
\ No newline at end of file