T !*MI@`J@LI`JPMIȢNIȢNI0¨NI0¨NIX"*MI@`JLI`JPMIȢNIȢNI0¨NI0¨NI\#*MI@`JLI`J8PMIȢNIȢNI0¨NI0¨NI$*MI@`J`|MI`JpPMIȢNIȢNI0¨NI0¨NI^%*dMI@`JfeI`JPMIȢNIȢNI0¨NI0¨NI&*MI@`JLMI`JPMIȢNIȢNI0¨NI0¨NI'*MI@`J0LMI`JPMIȢNIȢNI0¨NI0¨NIp(*MI@`JeI`JPMIȢNIȢNI0¨NI0¨NI)*MI@`J``eI`J0PMIȢNIȢNI0¨NI0¨NI**MI@`JзKMI`JPMIȢNIȢNI0¨NI0¨NI+*MI@`JXPMI`JPMIȢNIȢNI0¨NI0¨NI,*MI@`JpPMI`JPMIȢNIȢNI0¨NI0¨NI-*MI@`JMI`JPMIȢNIȢNI0¨NI0¨NI.*MI@`JAMI`JxPMIȢNIȢNI0¨NI0¨NI/*MI@`JPMI`J@PMIȢNIȢNI0¨NI0¨NI0*MI@`J`XMI`JPMIȢNIȢNI0¨NI0¨NI1*MI@`JLI`JPMIȢNIȢNI0¨NI0¨NI2*MI@`JeI`JPMIȢNIȢNI0¨NI0¨NI3*MI@`JKMI`J`PMIȢNIȢNI0¨NI0¨NI^4*MI@`J(MI`JPMIȢNIȢNI0¨NI0¨NI; $this->logLn(''); if (!is_null($this->previousErrorHandler)) { // If previousErrorHandler is this very error handler, exit to avoid recursion // (this could happen if ::activateWarningLogger() were called twice) if (is_array($this->previousErrorHandler) && isset($this->previousErrorHandler[0]) && ($this->previousErrorHandler[0] == $this) ) { return false; } else { return call_user_func($this->previousErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext); } } else { return false; } } /** * Activate warning logger. * * Sets the error handler and stores the previous so our error handler can bubble up warnings * * @return void */ protected function activateWarningLogger() { $this->suppressWarnings = false; $this->warningCounter = 0; $this->previousErrorHandler = set_error_handler( array($this, "warningHandler"), E_WARNING | E_USER_WARNING | E_NOTICE | E_USER_NOTICE ); } /** * Deactivate warning logger. * * Restores the previous error handler. * * @return void */ protected function deactivateWarningLogger() { restore_error_handler(); } protected function disableWarningsTemporarily() { $this->suppressWarnings = true; } protected function reenableWarnings() { $this->suppressWarnings = false; } protected function getWarningCount() { return $this->warningCounter; } protected function resetWarningCount() { $this->warningCounter = 0; } }