/** * @param ResultCollection $results * @param StoreInterface $store * */ public function check(ResultCollection $results, StoreInterface $store) { $result = $results->createResult(); $typedParams = array('result' => $result, 'store' => $store); $paramValues = $this->getParamValues($store, $typedParams); $name = 'checkSettings'; $method = new \ReflectionMethod($this, $name); $parameters = $method->getParameters(); $arguments = array(); foreach ($parameters as $parameter) { $paramName = $parameter->getName(); $paramClass = $parameter->getClass(); // create named parameter from type-hint if applicable if ($paramClass) { foreach ($typedParams as $object) { if ($paramClass->isSubclassOf(get_class($object))) { $paramValues[$paramName] = $object; break; } } } // use named parameter, otherwise null $paramValues += array($paramName => null); $arguments[] = $paramValues[$paramName]; } call_user_func_array(array($this, $name), $arguments); }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { $requiredExtensions = $this->_commandConfig['php']['required-extensions']; foreach ($requiredExtensions as $ext) { $result = $results->createResult(); $result->setStatus(extension_loaded($ext) ? Result::STATUS_OK : Result::STATUS_ERROR); if ($result->isValid()) { $result->setMessage("<info>Required PHP Module <comment>{$ext}</comment> found.</info>"); } else { $result->setMessage("<error>Required PHP Module {$ext} not found!</error>"); } } }
/** * @param ResultCollection $results * @param \Mage_Core_Model_Store $store */ public function check(ResultCollection $results, \Mage_Core_Model_Store $store) { $result = $results->createResult(); $errorMessage = 'Wrong hostname configured. <info>Hostname must contain a dot</info>'; $configValue = \Mage::getStoreConfig('web/unsecure/base_url', $store); $host = parse_url($configValue, PHP_URL_HOST); $isValid = strstr($host, '.'); $result->setStatus($isValid ? Result::STATUS_OK : Result::STATUS_ERROR); if (!$isValid) { $result->setMessage('<error>Invalid Unsecure BaseURL <comment>Store: ' . $store->getCode() . '</comment> ' . $errorMessage . '</error>'); } else { $result->setMessage('<info>Unsecure BaseURL of Store: <comment>' . $store->getCode() . '</comment> OK'); } }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { /** @var $resourceModel Mage_Core_Model_Resource */ $resourceModel = Mage::getModel('core/resource'); /** @var $dbAdapter Varien_Db_Adapter_Interface|false */ $dbAdapter = $resourceModel->getConnection('core_write'); $result = $results->createResult(); if (!$dbAdapter instanceof Varien_Db_Adapter_Interface) { $result->setStatus($result::STATUS_ERROR); $result->setMessage("<error>Mysql Version: Can not check. Unable to obtain resource connection 'core_write'.</error>"); } else { $this->checkImplementation($result, $dbAdapter); } }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { $files = $this->_commandConfig['filesystem']['files']; $magentoRoot = $this->_checkCommand->getApplication()->getMagentoRootFolder(); foreach ($files as $file => $comment) { $result = $results->createResult(); if (file_exists($magentoRoot . DIRECTORY_SEPARATOR . $file)) { $result->setStatus(Result::STATUS_OK); $result->setMessage("<info>File <comment>" . $file . "</comment> found.</info>"); } else { $result->setStatus(Result::STATUS_ERROR); $result->setMessage("<error>File " . $file . " not found!</error><comment> Usage: " . $comment . "</comment>"); } } }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { $result = $results->createResult(); $dbAdapter = \Mage::getModel('core/resource')->getConnection('core_write'); /** * Check Version */ $mysqlVersion = $dbAdapter->fetchOne('SELECT VERSION()'); if (version_compare($mysqlVersion, '4.1.20', '>=')) { $result->setStatus(Result::STATUS_OK); $result->setMessage("<info>MySQL Version <comment>{$mysqlVersion}</comment> found.</info>"); } else { $result->setStatus(Result::STATUS_ERROR); $result->setMessage("<error>MySQL Version {$mysqlVersion} found. Upgrade your MySQL Version.</error>"); } }
/** * @param ResultCollection $results * @param \Mage_Core_Model_Store $store */ public function check(ResultCollection $results, \Mage_Core_Model_Store $store) { $result = $results->createResult(); $errorMessage = 'Cookie Domain and Unsecure BaseURL (http) does not match'; $cookieDomain = \Mage::getStoreConfig('web/cookie/cookie_domain', $store); if (!empty($cookieDomain)) { $isValid = strpos(parse_url($cookieDomain, PHP_URL_HOST), $cookieDomain); $result->setStatus($isValid ? Result::STATUS_OK : Result::STATUS_ERROR); if ($result->isValid()) { $result->setMessage('<info>Cookie Domain (unsecure) of Store: <comment>' . $store->getCode() . '</comment> OK'); } else { $result->setMessage('<error>Cookie Domain (unsecure) <comment>Store: ' . $store->getCode() . '</comment> ' . $errorMessage . '</error>'); } } else { $result->setMessage('<info>Cookie Domain (unsecure) of Store: <comment>' . $store->getCode() . '</comment> OK - No domain set'); } }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { $result = $results->createResult(); $filePath = 'app/etc/local.xml'; $defaultUnsecureBaseURL = (string) \Mage::getConfig()->getNode('default/' . \Mage_Core_Model_Store::XML_PATH_UNSECURE_BASE_URL); $http = new \Varien_Http_Adapter_Curl(); $http->setConfig(array('timeout' => $this->_verificationTimeOut)); $http->write(\Zend_Http_Client::POST, $defaultUnsecureBaseURL . $filePath); $responseBody = $http->read(); $responseCode = \Zend_Http_Response::extractCode($responseBody); $http->close(); if ($responseCode === 200) { $result->setStatus(Result::STATUS_ERROR); $result->setMessage("<error>{$filePath} can be accessed from outside!</error>"); } else { $result->setStatus(Result::STATUS_OK); $result->setMessage("<info><comment>{$filePath}</comment> cannot be accessed from outside.</info>"); } }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { $result = $results->createResult(); $dbAdapter = \Mage::getModel('core/resource')->getConnection('core_write'); $engines = $dbAdapter->fetchAll('SHOW ENGINES'); $innodbFound = false; foreach ($engines as $engine) { if (strtolower($engine['Engine']) == 'innodb') { $innodbFound = true; break; } } $result->setStatus($innodbFound ? Result::STATUS_OK : Result::STATUS_ERROR); if ($innodbFound) { $result->setMessage("<info>Required MySQL Storage Engine <comment>InnoDB</comment> found.</info>"); } else { $result->setMessage("<error>Required MySQL Storage Engine \"InnoDB\" not found!</error>"); } }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { $folders = $this->_commandConfig['filesystem']['folders']; $magentoRoot = $this->_checkCommand->getApplication()->getMagentoRootFolder(); foreach ($folders as $folder => $comment) { $result = $results->createResult(); if (file_exists($magentoRoot . '/' . $folder)) { $result->setStatus(Result::STATUS_OK); $result->setMessage("<info>Folder <comment>" . $folder . "</comment> found.</info>"); if (!is_writeable($magentoRoot . '/' . $folder)) { $result->setStatus(Result::STATUS_ERROR); $result->setMessage("<error>Folder " . $folder . " is not writeable!</error><comment> Usage: " . $comment . "</comment>"); } } else { $result->setStatus(Result::STATUS_ERROR); $result->setMessage("<error>Folder " . $folder . " not found!</error><comment> Usage: " . $comment . "</comment>"); } } }
/** * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output * @return int|void */ protected function execute(InputInterface $input, OutputInterface $output) { $this->_config = $this->getCommandConfig(); $this->detectMagento($output); if ($this->initMagento()) { $results = new ResultCollection(); foreach ($this->_config['checks'] as $checkGroup => $checkGroupClasses) { $results->setResultGroup($checkGroup); foreach ($checkGroupClasses as $checkGroupClass) { $this->_invokeCheckClass($results, $checkGroupClass); } } if ($input->getOption('format')) { $this->_printTable($input, $output, $results); } else { $this->_printResults($output, $results); } } }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { $result = $results->createResult(); $bytecopdeCacheExtensions = $this->_commandConfig['php']['bytecode-cache-extensions']; $bytecodeCacheExtensionLoaded = false; $bytecodeCacheExtension = null; foreach ($bytecopdeCacheExtensions as $ext) { if (extension_loaded($ext)) { $bytecodeCacheExtension = $ext; $bytecodeCacheExtensionLoaded = true; break; } } $result->setStatus($bytecodeCacheExtensionLoaded ? Result::STATUS_OK : Result::STATUS_WARNING); if ($result->isValid()) { $result->setMessage("<info>Bytecode Cache <comment>{$bytecodeCacheExtension}</comment> found.</info>"); } else { $result->setMessage("<error>No Bytecode-Cache found!</error> <comment>It's recommended to install anyone of " . implode(', ', $bytecopdeCacheExtensions) . ".</comment>"); } }
/** * @param ResultCollection $results */ public function check(ResultCollection $results) { $result = $results->createResult(); $dbAdapter = $this->resource->getConnection(); if (!$dbAdapter instanceof AdapterInterface) { $result->setStatus(Result::STATUS_ERROR); $result->setMessage("<error>Mysql Version: Can not check. Unable to obtain resource connection 'core_write'.</error>"); return; } /** * Check Version */ $mysqlVersion = $dbAdapter->fetchOne('SELECT VERSION()'); if (version_compare($mysqlVersion, '4.1.20', '>=')) { $result->setStatus(Result::STATUS_OK); $result->setMessage("<info>MySQL Version <comment>{$mysqlVersion}</comment> found.</info>"); } else { $result->setStatus(Result::STATUS_ERROR); $result->setMessage("<error>MySQL Version {$mysqlVersion} found. Upgrade your MySQL Version.</error>"); } }
/** * @param ResultCollection $results * @param string $context * @param string $checkGroupClass */ private function _markCheckWarning(ResultCollection $results, $context, $checkGroupClass) { $result = $results->createResult(); $result->setMessage('<error>No ' . $context . ' configured to run store check:</error> <comment>' . basename($checkGroupClass) . '</comment>'); $result->setStatus($result::STATUS_WARNING); $results->addResult($result); }