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 = 'info') { if(self::$instance == null) { self::$instance = new self($loglevel); } return self::$instance; } /** * Constructor. */ private function __construct($loglevel = 'info') { $this->level($loglevel); } /** * Set the log level. * * @param string $loglevel Log level to use */ public function level($loglevel) { $this->loglevel = $loglevel; } /** * Get the available log levels ordered by verbosity. * * @return array Log levels */ public function levels() { return array_flip(array('notice', 'fatal', 'info', 'warn', 'error', 'debug')); } /** * Log dispatcher. * * @param string $message Log message * @param string $level Log level */ public function log($message, $level = 'info') { // Get the available log levels. $levels = $this->levels(); // 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 $entry Entry number * @param int $entries Total number of entries */ public function progress($entry, $entries) { $this->processed = $entry; $levels = $this->levels(); if ($this->section == 'action') { $this->caller->output .= "Saved item $entry\n"; } else { // Progress bar is just shown if loglevel is 'fatal' or lower. if ($levels['fatal'] >= $levels[$this->loglevel]) { $this->caller->progressBar($entry, $entries); } } return $this->processed; } }