]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-9642 auth/CAS: Dependence on external PEAR DB; merged from MOODLE_18_STABLE
authorskodak <skodak>
Thu, 10 May 2007 12:30:14 +0000 (12:30 +0000)
committerskodak <skodak>
Thu, 10 May 2007 12:30:14 +0000 (12:30 +0000)
auth/cas/CAS/PGTStorage/pgt-db.php [new file with mode: 0644]

diff --git a/auth/cas/CAS/PGTStorage/pgt-db.php b/auth/cas/CAS/PGTStorage/pgt-db.php
new file mode 100644 (file)
index 0000000..2e1528c
--- /dev/null
@@ -0,0 +1,190 @@
+<?php\r
+\r
+/**\r
+ * @file CAS/PGTStorage/pgt-db.php\r
+ * Basic class for PGT database storage\r
+ */\r
+\r
+// include phpDB library (the test was introduced in release 0.4.8 for \r
+// the integration into Tikiwiki).\r
+if (!class_exists('DB')) {\r
+  @include_once('DB.php');\r
+}\r
+\r
+/**\r
+ * @class PGTStorageDB\r
+ * The PGTStorageDB class is a class for PGT database storage. An instance of \r
+ * this class is returned by CASClient::SetPGTStorageDB().\r
+ *\r
+ * @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>\r
+ *\r
+ * @ingroup internalPGTStorageDB\r
+ */\r
+\r
+class PGTStorageDB extends PGTStorage\r
+{\r
+  /** \r
+   * @addtogroup internalPGTStorageDB\r
+   * @{ \r
+   */\r
+\r
+  /**\r
+   * a string representing a PEAR DB URL to connect to the database. Written by\r
+   * PGTStorageDB::PGTStorageDB(), read by getURL().\r
+   *\r
+   * @hideinitializer\r
+   * @private\r
+   */\r
+  var $_url='';\r
+\r
+  /**\r
+   * This method returns the PEAR DB URL to use to connect to the database.\r
+   *\r
+   * @return a PEAR DB URL\r
+   *\r
+   * @private\r
+   */\r
+  function getURL()\r
+    {\r
+      return $this->_url;\r
+    }\r
+\r
+  /**\r
+   * The handle of the connection to the database where PGT's are stored. Written by\r
+   * PGTStorageDB::init(), read by getLink().\r
+   *\r
+   * @hideinitializer\r
+   * @private\r
+   */\r
+  var $_link = null;\r
+\r
+  /**\r
+   * This method returns the handle of the connection to the database where PGT's are \r
+   * stored.\r
+   *\r
+   * @return a handle of connection.\r
+   *\r
+   * @private\r
+   */\r
+  function getLink()\r
+    {\r
+      return $this->_link;\r
+    }\r
+\r
+  /**\r
+   * The name of the table where PGT's are stored. Written by \r
+   * PGTStorageDB::PGTStorageDB(), read by getTable().\r
+   *\r
+   * @hideinitializer\r
+   * @private\r
+   */\r
+  var $_table = '';\r
+\r
+  /**\r
+   * This method returns the name of the table where PGT's are stored.\r
+   *\r
+   * @return the name of a table.\r
+   *\r
+   * @private\r
+   */\r
+  function getTable()\r
+    {\r
+      return $this->_table;\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 "database";\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
+   * @public\r
+   */\r
+  function getStorageInfo()\r
+    {\r
+      return 'url=`'.$this->getURL().'\', table=`'.$this->getTable().'\'';\r
+    }\r
+\r
+  // ########################################################################\r
+  //  CONSTRUCTOR\r
+  // ########################################################################\r
+  \r
+  /**\r
+   * The class constructor, called by CASClient::SetPGTStorageDB().\r
+   *\r
+   * @param $cas_parent the CASClient instance that creates the object.\r
+   * @param $user the user to access the data with\r
+   * @param $password the user's password\r
+   * @param $database_type the type of the database hosting the data\r
+   * @param $hostname the server hosting the database\r
+   * @param $port the port the server is listening on\r
+   * @param $database the name of the database\r
+   * @param $table the name of the table storing the data\r
+   *\r
+   * @public\r
+   */\r
+  function PGTStorageDB($cas_parent,$user,$password,$database_type,$hostname,$port,$database,$table)\r
+    {\r
+      phpCAS::traceBegin();\r
+\r
+      // call the ancestor's constructor\r
+      $this->PGTStorage($cas_parent);\r
+\r
+      if ( empty($database_type) ) $database_type = CAS_PGT_STORAGE_DB_DEFAULT_DATABASE_TYPE;\r
+      if ( empty($hostname) ) $hostname = CAS_PGT_STORAGE_DB_DEFAULT_HOSTNAME;\r
+      if ( $port==0 ) $port = CAS_PGT_STORAGE_DB_DEFAULT_PORT;\r
+      if ( empty($database) ) $database = CAS_PGT_STORAGE_DB_DEFAULT_DATABASE;\r
+      if ( empty($table) ) $table = CAS_PGT_STORAGE_DB_DEFAULT_TABLE;\r
+\r
+      // build and store the PEAR DB URL\r
+      $this->_url = $database_type.':'.'//'.$user.':'.$password.'@'.$hostname.':'.$port.'/'.$database;\r
+\r
+      // XXX should use setURL and setTable\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
+      \r
+      // try to connect to the database\r
+      $this->_link = DB::connect($this->getURL());\r
+      if ( DB::isError($this->_link) ) {\r
+       phpCAS::error('could not connect to database ('.DB::errorMessage($this->_link).')');\r
+      }\r
+      var_dump($this->_link);\r
+      phpCAS::traceBEnd();\r
+    }\r
+\r
+  /** @} */\r
+}\r
+\r
+?>
\ No newline at end of file