]> git.mxchange.org Git - shipsimu.git/blobdiff - ship-simu/inc/classes/main/database/class_BaseDatabaseFrontend.php
Initial import of current development status
[shipsimu.git] / ship-simu / inc / classes / main / database / class_BaseDatabaseFrontend.php
diff --git a/ship-simu/inc/classes/main/database/class_BaseDatabaseFrontend.php b/ship-simu/inc/classes/main/database/class_BaseDatabaseFrontend.php
new file mode 100644 (file)
index 0000000..601c042
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+/**
+ * An abstract database access class for handling database I/O requests
+ *
+ * @see        DatabaseFrontendInterface       An interface for database frontends
+ *                                                             (front-end to the application)
+ */
+abstract class BaseDatabaseFrontend extends BaseFrameworkSystem implements DatabaseFrontendInterface, LimitableObject {
+       /**
+        * The limiter instance
+        */
+       private $limitInstance = null;
+
+       /**
+        * Private constructor
+        *
+        * @return      void
+        */
+       private function __construct($class) {
+               // Call parent constructor
+               parent::constructor($class);
+
+               // Debug message
+               if (((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruktor erreicht.<br />\n",
+                       $this->__toString()
+               ));
+
+               // Clean up a little
+               $this->removeNumberFormaters();
+       }
+
+       /**
+        * The public constructor
+        *
+        * @return      void
+        */
+       public function constructor ($class) {
+               // Calls just the private one
+               $this->__construct($class);
+       }
+
+       /**
+        * Getter for limitation instance
+        *
+        * @return      $limitInstance          The instance to the object ObjectLimits
+        */
+       public final function getLimitInstance () {
+               if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Limitierungsinstanz <strong>%s</strong> angefordert.<br />\n",
+                       $this->__toString(),
+                       $this->limitInstance->__toString()
+               ));
+               return $this->limitInstance;
+       }
+
+       /**
+        * Setup limitation for the saving process
+        *
+        * @param               $limitInstance  An instance of ObjectLimits which contains
+        *                                              elements we shall exclusivly include in
+        *                                              saving process
+        * @return      void
+        */
+       public final function limitObject (ObjectLimits $limitInstance) {
+               // Debug message
+               if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Limitierungsinstanz <strong>%s</strong> soll verwendet werden.<br />\n",
+                       $this->__toString(),
+                       $limitInstance->__toString()
+               ));
+
+               // Get limitArray for validation
+               $array = $limitInstance->getLimitArray();
+
+               // Sanity-check if some limitations are in the object
+               if ($array->count() > 0) {
+                       // Okay, there is enougth
+                       $this->limitInstance = $limitInstance;
+
+                       // Debug message
+                       if ((defined('DEBUG_DATABASE')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:] Limitierungsinstanz <strong>%s</strong> wird verwendet und beinhaltet <strong>%s</strong> Eintr&auml;ge.<br />\n",
+                               $this->__toString(),
+                               $limitInstance->__toString(),
+                               $array->count()
+                       ));
+               }
+       }
+}
+
+// [EOF]
+?>