protected function sendStats() { $http = JHttpFactory::getHttp(); $data = array('unique_id' => $this->params->get('unique_id'), 'php_version' => PHP_VERSION, 'db_type' => $this->db->name, 'db_version' => $this->db->getVersion(), 'cms_version' => JVERSION, 'server_os' => php_uname('s') . ' ' . php_uname('r')); $uri = new JUri('http://jstats.dongilbert.net/submit'); try { // Don't let the request take longer than 2 seconds to avoid page timeout issues $status = $http->post($uri, $data, null, 2); if ($status->code === 200) { $this->writeCacheFile(); } } catch (UnexpectedValueException $e) { // There was an error sending stats. Should we do anything? } catch (RuntimeException $e) { // There was an error connecting to the server or in the post request } }
protected function sendStats() { if (version_compare(JVERSION, '3.0', '<')) { JLoader::register('JHttp', dirname(__FILE__) . '/src/joomla/http/http.php'); JLoader::register('JHttpFactory', dirname(__FILE__) . '/src/joomla/http/factory.php'); JLoader::register('JHttpResponse', dirname(__FILE__) . '/src/joomla/http/response.php'); JLoader::register('JHttpTransport', dirname(__FILE__) . '/src/joomla/http/transport.php'); JLoader::register('JHttpTransportCurl', dirname(__FILE__) . '/src/joomla/http/transport/curl.php'); JLoader::register('JHttpTransportSocket', dirname(__FILE__) . '/src/joomla/http/transport/socket.php'); JLoader::register('JHttpTransportStream', dirname(__FILE__) . '/src/joomla/http/transport/stream.php'); } $http = JHttpFactory::getHttp(); $data = array('unique_id' => $this->params->get('unique_id'), 'php_version' => PHP_VERSION, 'db_type' => $this->db->name, 'db_version' => $this->db->getVersion(), 'cms_version' => JVERSION, 'server_os' => php_uname('s') . ' ' . php_uname('r')); $uri = new JUri('http://jstats.dongilbert.net/submit'); try { $status = $http->post($uri, $data); if ($status->code === 200) { $this->writeCacheFile(); } } catch (UnexpectedValueException $e) { // There was an error sending stats. Should we do anything?g } }
/** * Get the data that will be sent to the stats server. * * @return array. * * @since 3.5 */ private function getStatsData() { return array('unique_id' => $this->getUniqueId(), 'php_version' => PHP_VERSION, 'db_type' => $this->db->name, 'db_version' => $this->db->getVersion(), 'cms_version' => JVERSION, 'server_os' => php_uname('s') . ' ' . php_uname('r')); }
/** * Returns the version of MySQL * * @return string */ public function getVersion() { return $this->_db->getVersion(); }
/** * $$$ hugh - testing doing bigSelects stuff here * Reason being, some folk on shared hosting plans with very restrictive MySQL * setups are hitting the 'big selects' problem on Fabrik internal queries, not * just on their List specific queries. So we need to apply 'big selects' to our * default connection as well, essentially enabling it for ALL queries we do. * * @param JDatabaseDriver $fabrikDb * * @return void */ public static function bigSelects($fabrikDb) { $fbConfig = JComponentHelper::getParams('com_fabrik'); if ($fbConfig->get('enable_big_selects', 0) == '1') { /** * Use of OPTION in SET deprecated from MySQL 5.1. onward * http://www.fabrikar.com/forums/index.php?threads/enable-big-selects-error.39463/#post-198293 * NOTE - technically, using verison_compare on MySQL version could fail, if it's a "gamma" * release, which PHP desn't grok! */ if (version_compare($fabrikDb->getVersion(), '5.1.0', '>=')) { $fabrikDb->setQuery("SET SQL_BIG_SELECTS=1, GROUP_CONCAT_MAX_LEN=10240"); } else { $fabrikDb->setQuery("SET OPTION SQL_BIG_SELECTS=1, GROUP_CONCAT_MAX_LEN=10240"); } try { $fabrikDb->execute(); } catch (Exception $e) { // Fail silently } } }
/** * Listener for the `onAfterInitialise` event * * @return void * * @since 3.5 */ public function onAfterInitialise() { // Only run this in admin if (!$this->app->isAdmin()) { return; } // Do we need to run? Compare the last run timestamp stored in the plugin's options with the current // timestamp. If the difference is greater than the cache timeout we shall not execute again. $now = time(); $last = (int) $this->params->get('lastrun', 0); // 12 hours - 60*60*12 = 43200 if (!defined('PLG_SYSTEM_STATS_DEBUG') && abs($now - $last) < 43200) { return; } // Update last run status $this->params->set('lastrun', $now); $uniqueId = $this->params->get('unique_id', ''); /* * If the unique ID is empty (because we have never submitted a piece of data before or because the refresh button * has been used - generate a new ID and store it in the database for future use. */ if (empty($uniqueId)) { $uniqueId = hash('sha1', JUserHelper::genRandomPassword(28) . time()); $this->params->set('unique_id', $uniqueId); } $query = $this->db->getQuery(true)->update($this->db->quoteName('#__extensions'))->set($this->db->quoteName('params') . ' = ' . $this->db->quote($this->params->toString('JSON')))->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin'))->where($this->db->quoteName('folder') . ' = ' . $this->db->quote('system'))->where($this->db->quoteName('element') . ' = ' . $this->db->quote('stats')); try { // Lock the tables to prevent multiple plugin executions causing a race condition $this->db->lockTable('#__extensions'); } catch (Exception $e) { // If we can't lock the tables it's too risky to continue execution return; } try { // Update the plugin parameters $result = $this->db->setQuery($query)->execute(); $this->clearCacheGroups(array('com_plugins'), array(0, 1)); } catch (Exception $exc) { // If we failed to execute $this->db->unlockTables(); $result = false; } try { // Unlock the tables after writing $this->db->unlockTables(); } catch (Exception $e) { // If we can't lock the tables assume we have somehow failed $result = false; } // Abort on failure if (!$result) { return; } $data = array('unique_id' => $uniqueId, 'php_version' => PHP_VERSION, 'db_type' => $this->db->name, 'db_version' => $this->db->getVersion(), 'cms_version' => JVERSION, 'server_os' => php_uname('s') . ' ' . php_uname('r')); // Don't let the request take longer than 2 seconds to avoid page timeout issues try { // Don't let the request take longer than 2 seconds to avoid page timeout issues JHttpFactory::getHttp()->post($this->params->get('url', 'https://developer.joomla.org/stats/submit'), $data, null, 2); } catch (UnexpectedValueException $e) { // There was an error sending stats. Should we do anything? JLog::add('Could not send site statistics to remote server: ' . $e->getMessage(), JLog::WARNING, 'stats'); } catch (RuntimeException $e) { // There was an error connecting to the server or in the post request JLog::add('Could not connect to statistics server: ' . $e->getMessage(), JLog::WARNING, 'stats'); } catch (Exception $e) { // An unexpected error in processing; don't let this failure kill the site JLog::add('Unexpected error connecting to statistics server: ' . $e->getMessage(), JLog::WARNING, 'stats'); } }