diff options
Diffstat (limited to 'lib/sfIsisImporterLog.class.php')
-rw-r--r-- | lib/sfIsisImporterLog.class.php | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/lib/sfIsisImporterLog.class.php b/lib/sfIsisImporterLog.class.php new file mode 100644 index 0000000..34594a6 --- /dev/null +++ b/lib/sfIsisImporterLog.class.php @@ -0,0 +1,109 @@ +<?php + +/** + * Logger. + * + * @todo $this->caller, $this->section + */ +class sfIsisImporterLog +{ + /** + * @var object $instance The singleton instance. + */ + private static $instance = null; + + /** + * @var object $instance Default loglevel. + */ + public static $loglevel; + + /** + * @var int $processed Number of processed entries. + */ + var $processed = 0; + + /** + * Get the singleton instance. + * + * @param string $loglevel Log level to use + */ + public static function getInstance($loglevel = null) + { + if(self::$instance == null) { + self::$instance = new self; + } + + if ($loglevel != null) + { + self::$loglevel = $loglevel; + } + + return self::$instance; + } + + /** + * Constructor. + */ + private function __construct($loglevel = 'info') + { + $this->loglevel = $loglevel; + } + + /** + * Log dispatcher. + * + * @param string $message Log message + * @param string $level Log level + */ + public function log($message, $level = 'info') + { + // Available log levels ordered by verbosity. + $levels = array_flip(array('fatal', 'info', 'warn', 'error', 'debug')); + + // Log level checking. + if (array_search($level, $levels) === FALSE) + { + $this->log("Invalid log level $level.", 'error'); + return; + } + elseif ($levels[$level] > $levels[$this->loglevel]) + { + return; + } + + // Dispatch. + if ($this->section == 'action') + { + $this->caller->logMessage($message, $level); + } + else + { + $this->caller->logSection('isisImporter', "[$level] $message"); + } + } + + /** + * Progress notifier. + * + * @param int $n Row number + */ + public function progress($n) + { + $this->processed = $n; + + if ($this->section == 'action') + { + $this->caller->output .= "Saved item $n\n"; + } + else + { + // Progress bar is just shown if loglevel is 'fatal'. + if ($this->loglevel == 'fatal') + { + $this->caller->progressBar($n, $this->entries); + } + } + + return $this->processed; + } +} |