Version 1
[yaffs-website] / vendor / gabordemooij / redbean / RedBeanPHP / Logger / RDefault.php
diff --git a/vendor/gabordemooij/redbean/RedBeanPHP/Logger/RDefault.php b/vendor/gabordemooij/redbean/RedBeanPHP/Logger/RDefault.php
new file mode 100755 (executable)
index 0000000..0a65654
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+
+namespace RedBeanPHP\Logger;
+
+use RedBeanPHP\Logger as Logger;
+use RedBeanPHP\RedException as RedException;
+
+/**
+ * Logger. Provides a basic logging function for RedBeanPHP.
+ *
+ * @file    RedBeanPHP/Logger.php
+ * @author  Gabor de Mooij and the RedBeanPHP Community
+ * @license BSD/GPLv2
+ *
+ * @copyright
+ * copyright (c) G.J.G.T. (Gabor) de Mooij
+ * This source file is subject to the BSD/GPLv2 License that is bundled
+ * with this source code in the file license.txt.
+ */
+class RDefault implements Logger
+{
+       /**
+        * Logger modes
+        */
+       const C_LOGGER_ECHO  = 0;
+       const C_LOGGER_ARRAY = 1;
+
+       /**
+        * @var integer
+        */
+       protected $mode = 0;
+
+       /**
+        * @var array
+        */
+       protected $logs = array();
+
+       /**
+        * Default logger method logging to STDOUT.
+        * This is the default/reference implementation of a logger.
+        * This method will write the message value to STDOUT (screen) unless
+        * you have changed the mode of operation to C_LOGGER_ARRAY.
+        *
+        * @param $message (optional) message to log (might also be data or output)
+        *
+        * @return void
+        */
+       public function log()
+       {
+               if ( func_num_args() < 1 ) return;
+
+               foreach ( func_get_args() as $argument ) {
+                       if ( is_array( $argument ) ) {
+                               $log = var_export( $argument, TRUE );
+                               if ( $this->mode === self::C_LOGGER_ECHO ) {
+                                       echo $log;
+                               } else {
+                                       $this->logs[] = $log;
+                               }
+                       } else {
+                               if ( $this->mode === self::C_LOGGER_ECHO ) {
+                                       echo $argument;
+                               } else {
+                                       $this->logs[] = $argument;
+                               }
+                       }
+
+                       if ( $this->mode === self::C_LOGGER_ECHO ) echo "<br>" . PHP_EOL;
+               }
+       }
+
+       /**
+        * Returns the internal log array.
+        * The internal log array is where all log messages are stored.
+        *
+        * @return array
+        */
+       public function getLogs()
+       {
+               return $this->logs;
+       }
+
+       /**
+        * Clears the internal log array, removing all
+        * previously stored entries.
+        *
+        * @return self
+        */
+       public function clear()
+       {
+               $this->logs = array();
+               return $this;
+       }
+
+       /**
+        * Selects a logging mode.
+        * There are several options available.
+        *
+        * * C_LOGGER_ARRAY - log silently, stores entries in internal log array only
+        * * C_LOGGER_ECHO  - also forward log messages directly to STDOUT
+        *
+        * @param integer $mode mode of operation for logging object
+        *
+        * @return self
+        */
+       public function setMode( $mode )
+       {
+               if ($mode !== self::C_LOGGER_ARRAY && $mode !== self::C_LOGGER_ECHO ) {
+                       throw new RedException( 'Invalid mode selected for logger, use C_LOGGER_ARRAY or C_LOGGER_ECHO.' );
+               }
+               $this->mode = $mode;
+               return $this;
+       }
+
+       /**
+        * Searches for all log entries in internal log array
+        * for $needle and returns those entries.
+        * This method will return an array containing all matches for your
+        * search query.
+        *
+        * @param string $needle phrase to look for in internal log array
+        *
+        * @return array
+        */
+       public function grep( $needle )
+       {
+               $found = array();
+               foreach( $this->logs as $logEntry ) {
+                       if ( strpos( $logEntry, $needle ) !== FALSE ) $found[] = $logEntry;
+               }
+               return $found;
+       }
+}