-<?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;
- }
-
- /** @} */
-
-}
-
-
+<?php\r
+/*\r
+ * Copyright © 2003-2010, The ESUP-Portail consortium & the JA-SIG Collaborative.\r
+ * All rights reserved.\r
+ * \r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ * \r
+ * * Redistributions of source code must retain the above copyright notice,\r
+ * this list of conditions and the following disclaimer.\r
+ * * Redistributions in binary form must reproduce the above copyright notice,\r
+ * this list of conditions and the following disclaimer in the documentation\r
+ * and/or other materials provided with the distribution.\r
+ * * Neither the name of the ESUP-Portail consortium & the JA-SIG\r
+ * Collaborative nor the names of its contributors may be used to endorse or\r
+ * promote products derived from this software without specific prior\r
+ * written permission.\r
+\r
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\r
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\r
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\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
?>
\ No newline at end of file