/** * Gets the specific type of scanner. Must ve overriden * @param $type * @return JD_Scanner */ function &getInstance($type) { $className = JD_Scanner::loadScanner($type); if (!class_exists($className)) { return null; } $res = call_user_func_array(array($className, 'getInstance'), array()); return $res; }
/** * * @param $path * @param $doLog */ function getScanData($path = '', $doLog = false) { $configModel =& JModel::getInstance('Configuration', 'JDefenderModel'); $params = new JParameter($configModel->getIni()); JD_Scanner::loadScanner(); $fsScanner = false; if (!$this->getState('filesystem.scanned')) { $fsScanner =& JD_Filesystem_Scanner::getInstance(); $fsScanner->loadValidator(); // Set the "first scan" flag. if ($this->_isFirstScan()) { foreach ($fsScanner->listeners as $k => $v) { if (method_exists($v, 'setFirstScan')) { $fsScanner->listeners[$k]->setFirstScan(true); } } } if ($doLog) { JD_Vars_Helper::setVar('status', 'jdefender_scan', JText::_('Scanning filesystem')); } // Run scanners if (empty($this->_filesystem_data)) { $this->_filesystem_data = $fsScanner->scan($path); } } $optScanner = false; if (!$this->getState('options.scanned')) { $optScanner =& JD_Options_Scanner::getInstance(); $optScanner->loadValidator(); if ($doLog) { JD_Vars_Helper::setVar('status', 'jdefender_scan', JText::_('Scanning system settings')); } // scan if (empty($this->_options_data)) { $this->_options_data = $optScanner->scan(); $this->setState('options.scanned', true); } } // If filesystem scan ended if (!empty($this->_filesystem_data['EOF'])) { $this->setState('filesystem.scanned', true); unset($this->_filesystem_data['EOF']); } $result = array('filesystem' => &$this->_filesystem_data, 'options' => &$this->_options_data); return $result; }