QM_Backtrace::get_filtered_trace PHP Method

get_filtered_trace() public method

public get_filtered_trace ( )
        public function get_filtered_trace()
        {
            if (!isset($this->filtered_trace)) {
                $trace = array_map(array($this, 'filter_trace'), $this->trace);
                $trace = array_values(array_filter($trace));
                if (empty($trace) && !empty($this->trace)) {
                    $lowest = $this->trace[0];
                    $file = QM_Util::standard_dir($lowest['file'], '');
                    $lowest['calling_file'] = $lowest['file'];
                    $lowest['calling_line'] = $lowest['line'];
                    $lowest['function'] = $file;
                    $lowest['display'] = $file;
                    $lowest['id'] = $file;
                    unset($lowest['class'], $lowest['args'], $lowest['type']);
                    $trace[0] = $lowest;
                }
                $this->filtered_trace = $trace;
            }
            return $this->filtered_trace;
        }

Usage Example

示例#1
0
 /**
  * Store log data.
  *
  * @param bool   $override Whether to override the text domain. Default false.
  * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
  * @param string $mofile   Path to the MO file.
  * @return bool
  */
 public function log_file_load($override, $domain, $mofile)
 {
     $trace = new QM_Backtrace();
     $filtered = $trace->get_filtered_trace();
     $caller = array();
     foreach ($filtered as $i => $item) {
         if (in_array($item['function'], array('load_plugin_textdomain', 'load_theme_textdomain', 'load_default_textdomain'), true)) {
             $caller = $item;
             $display = $i + 1;
             if (isset($filtered[$display])) {
                 $caller['display'] = $filtered[$display]['display'];
             }
             break;
         }
     }
     if (empty($caller)) {
         if (isset($filtered[1])) {
             $caller = $filtered[1];
         } else {
             $caller = $filtered[0];
         }
     }
     if (!isset($caller['file']) && isset($filtered[0]['file']) && isset($filtered[0]['line'])) {
         $caller['file'] = $filtered[0]['file'];
         $caller['line'] = $filtered[0]['line'];
     }
     $this->data['languages'][] = array('caller' => $caller, 'domain' => $domain, 'mofile' => $mofile, 'found' => file_exists($mofile) ? filesize($mofile) : false);
     return $override;
 }