FIFO basicly finished
[core.git] / inc / classes / main / stacker / class_BaseStacker.php
index 5c25e928ee0dabcb1e8088727d8fd1a81a9a276e..2fdc0d2556dd62494b3902bc066e053f5b2861d4 100644 (file)
@@ -189,6 +189,31 @@ class BaseStacker extends BaseFrameworkSystem {
                return $value;
        }
 
+       /**
+        * Get first value from named stacker
+        *
+        * @param       $stackerName    Name of the stack
+        * @return      $value                  Value of last added value
+        * @throws      NoStackerException      If the named stacker was not found
+        * @throws      EmptyStackerException   If the named stacker is empty
+        */
+       protected final function getFirstValue ($stackerName) {
+               // Is the stack not yet initialized or full?
+               if (!$this->isStackInitialized($stackerName)) {
+                       // Throw an exception
+                       throw new NoStackerException(array($this, $stackerName), self::EXCEPTION_NO_STACKER_FOUND);
+               } elseif ($this->isStackEmpty($stackerName)) {
+                       //Throw an exception
+                       throw new EmptyStackerException(array($this, $stackerName), self::EXCEPTION_STACKER_IS_EMPTY);
+               }
+
+               // Now get the last value
+               $value = $this->stacks[$stackerName]['entries'][0];
+
+               // Return it
+               return $value;
+       }
+
        /**
         * "Pops" last entry from stack
         *
@@ -210,6 +235,28 @@ class BaseStacker extends BaseFrameworkSystem {
                // Now, remove the last entry, we don't care about the return value here, see elseif() block above
                array_pop($this->stacks[$stackerName]['entries']);
        }
+
+       /**
+        * "Pops" first entry from stack
+        *
+        * @param       $stackerName    Name of the stack
+        * @return      void
+        * @throws      NoStackerException      If the named stacker was not found
+        * @throws      EmptyStackerException   If the named stacker is empty
+        */
+       protected final function popFirst ($stackerName) {
+               // Is the stack not yet initialized or full?
+               if (!$this->isStackInitialized($stackerName)) {
+                       // Throw an exception
+                       throw new NoStackerException(array($this, $stackerName), self::EXCEPTION_NO_STACKER_FOUND);
+               } elseif ($this->isStackEmpty($stackerName)) {
+                       //Throw an exception
+                       throw new EmptyStackerException(array($this, $stackerName), self::EXCEPTION_STACKER_IS_EMPTY);
+               }
+
+               // Now, remove the last entry, we don't care about the return value here, see elseif() block above
+               array_shift($this->stacks[$stackerName]['entries']);
+       }
 }
 
 // [EOF]