芝麻web文件管理V1.00
编辑当前文件:/home/asmplong/www/ancien-site-2019/site/components/com_joomlawatch/class.joomlawatch.helper.php
database = new JoomlaWatchDB(); $this->config = new JoomlaWatchConfig(); } /** * helper */ function getActualDateTime() { $date = JoomlaWatchHelper::date("d.m.Y", JoomlaWatchHelper::getServerTime()); $time = JoomlaWatchHelper::date("H:i:s", JoomlaWatchHelper::getServerTime()); return "$date $time"; } /** * helper */ function dayOfWeek() { //date_default_timezone_set(JoomlaWatchHelper::getTimezone()); return JoomlaWatchHelper::date("w", JoomlaWatchHelper::getServerTime()); //return JoomlaWatchHelper::date("w", $this->getServerTime()); } /** * helper */ function dayOfMonth() { //date_default_timezone_set(JoomlaWatchHelper::getTimezone()); //return JoomlaWatchHelper::date("d", $this->getServerTime()); return JoomlaWatchHelper::date("d", JoomlaWatchHelper::getServerTime()); } /** * helper */ function getIP2LocationURL($ip) { $url = $this->config->getConfigValue('JOOMLAWATCH_TOOLTIP_URL'); $result = str_replace("{ip}", $ip, $url); //TODO : appears to be a bug in str_ireplace - doesn't work! return $result; } /** * helper */ function resetData() { $query = sprintf("delete from #__joomlawatch"); $result1 = $this->database->executeQuery($query); $query = sprintf("delete from #__joomlawatch_uri"); $result2 = $this->database->executeQuery($query); $query = sprintf("delete from #__joomlawatch_info"); $result3 = $this->database->executeQuery($query); $query = sprintf("delete from #__joomlawatch_blocked"); $result4 = $this->database->executeQuery($query); $query = sprintf("delete from #__joomlawatch_goals"); $result4 = $this->database->executeQuery($query); $query = sprintf("delete from #__joomlawatch_cache"); $result4 = $this->database->executeQuery($query); $query = sprintf("delete from #__joomlawatch_uri2title"); $result5 = $this->database->executeQuery($query); $query = sprintf("delete from #__joomlawatch_history"); $result5 = $this->database->executeQuery($query); $query = sprintf("delete from #__joomlawatch_uri_history"); $result5 = $this->database->executeQuery($query); return true; } /** * helper * * @return unknown */ function isModulePublished() { $query = sprintf("select published from #__modules where module = 'mod_joomlawatch_agent' order by id desc limit 1; "); $published = $this->database->resultQuery($query); return $published; } /** * helper * * @return unknown */ function jwDateToday() { $config = new JConfig(); $offset = $config->offset; $daysDiff = ((date("U")) - (gmmktime(0, 0, 0, 1, 1, 1970))+ $offset*3600) / 86400; $diff = floor($daysDiff); return $diff; } /** * helper * * @return unknown */ function getURI() { $redirURI = addslashes(strip_tags(@ $_SERVER[$this->config->getConfigValue('JOOMLAWATCH_SERVER_URI_KEY')])); $uri = addslashes(strip_tags(@ $_SERVER['REQUEST_URI'])); if (@ $redirURI && @ substr($redirURI, -9, 9) != "index.php") $uri = $redirURI; return $uri; } /** * helper */ function truncate($str, $len = "") { if (@ !$len) $len = $this->config->getConfigValue('JOOMLAWATCH_TRUNCATE_VISITS'); if (strlen($str) < $len) return $str; else return substr($str, 0, $len) . "..."; } /** * config */ function saveSettings($post) { /* defines explicitely checkboxes */ $checkboxNamesArray = array ( 'JOOMLAWATCH_FRONTEND_NO_BACKLINK', 'JOOMLAWATCH_FRONTEND_HIDE_LOGO', 'JOOMLAWATCH_IP_STATS', 'JOOMLAWATCH_FRONTEND_NO_BACKLINK', 'JOOMLAWATCH_FRONTEND_COUNTRIES', 'JOOMLAWATCH_FRONTEND_COUNTRIES_UPPERCASE', 'JOOMLAWATCH_FRONTEND_COUNTRIES_FIRST', 'JOOMLAWATCH_FRONTEND_VISITORS', 'JOOMLAWATCH_FRONTEND_VISITORS_TODAY', 'JOOMLAWATCH_FRONTEND_VISITORS_YESTERDAY', 'JOOMLAWATCH_FRONTEND_VISITORS_THIS_WEEK', 'JOOMLAWATCH_FRONTEND_VISITORS_LAST_WEEK', 'JOOMLAWATCH_FRONTEND_VISITORS_THIS_MONTH', 'JOOMLAWATCH_FRONTEND_VISITORS_LAST_MONTH', 'JOOMLAWATCH_FRONTEND_VISITORS_TOTAL', 'JOOMLAWATCH_TOOLTIP_ONCLICK', 'JOOMLAWATCH_ONLY_LAST_URI', 'JOOMLAWATCH_HIDE_REPETITIVE_TITLE', 'JOOMLAWATCH_UNINSTALL_KEEP_DATA', 'JOOMLAWATCH_FRONTEND_COUNTRIES_NAMES', 'JOOMLAWATCH_FRONTEND_COUNTRIES_FLAGS_FIRST' ); JoomlaWatchHelper :: saveConfigValues($checkboxNamesArray, $post); return true; } /** * Used by both - save anti-spam and save settings * @param $checkboxNamesArray * @param $post * @return void */ function saveConfigValues($checkboxNamesArray, $post) { foreach ($post as $key => $value) { if (strstr($key, "JOOMLAWATCH_")) { $this->config->saveConfigValue($key, $value); } } //hack :( explicitly save checkbox values foreach ($checkboxNamesArray as $key => $value) { if (@ !$post[$value]) { //if there is no value - checkbox unchecked $this->config->saveConfigValue($value, "Off"); } } // explicitly reset chache because of frontend settings JoomlaWatchCache :: clearCache(); } /** * helper */ function getDateByDay($day, $format = "d.m.Y") { //date_default_timezone_set(JoomlaWatchHelper::getTimezone()); //$date = JoomlaWatchHelper::date($format, $day * 3600 * 24); $date = JoomlaWatchHelper::date($format, $day * 3600 * 24); $output = $date; // if ($format == "d.m.Y" && ($date == JoomlaWatchHelper::date($format, $this->getServerTime()))) if ($format == "d.m.Y" && ($date == JoomlaWatchHelper::date($format, $day * 3600 * 24))) $output .= " (" . _JW_STATS_TODAY . ")"; return $output; } function getUser() { jimport('joomla.utilities.date'); $user = & JFactory::getUser(); return $user; } function getUsername() { $user = & JoomlaWatchHelper::getUser(); return $user->username; } function getTimezoneOffset() { $user = & JoomlaWatchHelper::getUser(); // if we have an anonymous user, then use global config, instead of the user params if($user->get('id')) { $userTimezone = $user->getParam('timezone'); } else { $conf =& JFactory::getConfig(); $userTimezone = $conf->getValue('config.offset'); } /* if the user has no timezone defined, use the timezone from server configuratio */ /* if (!isset($userTimezone)) { */ $config = new JConfig(); $userTimezone = $config->offset; if ($userTimezone && !is_numeric($userTimezone)) { try { $dtz = new DateTimeZone($userTimezone); $time = new DateTime('now', $dtz); $userTimezone = $time->format('P'); } catch (Exception $e) { echo(""); } } /* } */ $daylightSaving = 0; if (JOOMLAWATCH_SERVER_DAYLIGHT_SAVING) { $daylightSaving = date("I"); } $serverTimezone = date("Z")/3600 - $daylightSaving; $offset = $userTimezone - $serverTimezone; if (JOOMLAWATCH_DEBUG) { echo("server timezone: $serverTimezone user timezone: $userTimezone difference: $offset daylight saving: $daylightSaving"); } return $offset; } /** * helper */ function getServerTime() { // return time() + $this->config->getConfigValue('JOOMLAWATCH_TIMEZONE_OFFSET') * 3600; return time(); } function serverTimeToLocal($time) { return $time + JoomlaWatchHelper::getTimezoneOffset(); } function getLocalTime() { JoomlaWatchHelper::serverTimeToLocal(JoomlaWatchHelper::getServerTime()); } /** * helper */ // fnmatch PHP function only on UNIX :(, this replaces the wildcard search function wildcardSearch($pattern, $string) { return preg_match("#^" . strtr(preg_quote($pattern, '#'), array ( '\*' => '.*', '\?' => '.' )) . "$#i", $string); } /** * helper * * @return unknown */ function jwDateBySeconds($sec) { $date = floor($sec / 3600 / 24 + $this->config->getConfigValue('JOOMLAWATCH_DAY_OFFSET')); return $date; } /** * helper */ function getDayByTimestamp($timestamp) { return floor( ($timestamp + $this->config->getConfigValue('JOOMLAWATCH_DAY_OFFSET')) / 24 / 3600 + $this->config->getConfigValue('JOOMLAWATCH_WEEK_OFFSET')); } /** * helper */ function getWeekByTimestamp($timestamp) { return ceil(($timestamp +$this->config->getConfigValue('JOOMLAWATCH_DAY_OFFSET')) / 7 / 24 / 3600 + $this->config->getConfigValue('JOOMLAWATCH_WEEK_OFFSET')); } /** * helper */ function getTooltipOnClick() { return $this->config->getCheckboxValue("JOOMLAWATCH_TOOLTIP_ONCLICK"); } /** * helper * @return unknown */ function getTooltipOnEvent() { if ($this->getTooltipOnClick()) { return "title='" . _JW_TOOLTIP_CLICK . "' onclick"; } else { return "title='" . _JW_TOOLTIP_MOUSE_OVER . "' onmouseover"; } } /** * helper */ function getTooltipOnEventHide() { if (!$this->getTooltipOnClick()) { return "onClick='ajax_hideTooltip();'"; } return; } /** * helper * @return unknown */ function getAvailableLanguages() { $langDirPath = JPATH_BASE2 . DS . "components" . DS . "com_joomlawatch" . DS . "lang"; if ($handle = @ opendir($langDirPath)) { while (false !== ($file = readdir($handle))) { if (strstr($file, ".php")) { $file = str_replace(".php", "", $file); $langArray[] = $file; } } closedir($handle); } sort($langArray); return @ $langArray; } /** * helper * * functions taken from * Open Web Application Security Project * (http://www.owasp.org) */ // sanitize a string for SQL input (simple slash out quotes and slashes) function sanitize( $string ) { $db = & JFactory::getDBO(); return $this->database->getEscaped($string); // Return the sanitized code } /** * helper */ function countryByIp($ip) { if ($ip == '127.0.0.1') { /* ignore localhost */ return; } $query = sprintf("select ip, country from #__joomlawatch where (ip = '%s' and country is not NULL) limit 1", $this->database->getEscaped($ip)); $row3 = $this->database->resultQuery($query); if (@ !$row3->country) { $iplook = new ip2country($ip); $iplook->UseDB = true; $iplook->db_tablename = "#__joomlawatch_ip2c"; if (($iplook->LookUp())) { $country = strtolower($iplook->Country); $query3 = sprintf("update #__joomlawatch set country = '%s' where ip = '%s'", $this->database->getEscaped($country), $this->database->getEscaped($ip)); $this->database->executeQuery($query); } } else { $country = $row3->country; } return @ $country; } /** * helper */ function countryCodeToCountryName($code) { $query = sprintf("select country from #__joomlawatch_cc2c where cc = '%s' limit 1", $this->database->getEscaped($code)); $countryName = $this->database->resultQuery($query); return $countryName; } function getWeekFromTimestamp($timestamp) { //date_default_timezone_set(JoomlaWatchHelper::getTimezone()); //return JoomlaWatchHelper::date("W", $timestamp); return JoomlaWatchHelper::date("W", $timestamp); } function getYearFromTimestamp($timestamp) { //date_default_timezone_set(JoomlaWatchHelper::getTimezone()); // return JoomlaWatchHelper::date("Y", $timestamp); return JoomlaWatchHelper::date("y", $timestamp); } function removeRepetitiveTitle($title) { if ($this->config->getCheckboxValue("JOOMLAWATCH_HIDE_REPETITIVE_TITLE")) { $config = new JConfig(); $title = str_replace($config->sitename,"",$title); } return $title; } /** * filtering input get var * @param $key * @return mixed */ function requestGet($key) { if (isset($key)) { return JRequest::getVar($key); } else { return JRequest::get('get'); } } /** * Filtering input post var * @param $key * @return mixed */ function requestPost($key) { if (isset($key)) { return JRequest::getVar($key); } else { return JRequest::get( 'post' ); } } /** * Used as replacement for date to use joomla timezone * @param $format * @param $timestamp * @return string */ function date($format, $timestamp) { $tz = JoomlaWatchHelper::getTimezoneOffset(); return date($format, $timestamp + $tz * 3600); } /** * sender * * @param $recipient * @param $sender * @param $subject * @param $body * @return void */ function sendEmail($recipient, $sender, $subject, $body) { JUtility::sendMail($recipient, $sender, $recipient, $subject, $body, 1, $cc, $bcc, $attachment, $replyto, $replytoname); } /** * Config * @param $post * @return bool */ function saveAntiSpamSettings($post) { $checkboxNamesArray = array ( 'JOOMLAWATCH_SPAMWORD_BANS_ENABLED' ); JoomlaWatchHelper :: saveConfigValues($checkboxNamesArray, $post); return true; } /** * Config * @param $post * @return bool */ function saveEmailSettings($post) { $checkboxNamesArray = array ( 'JOOMLAWATCH_EMAIL_REPORTS_ENABLED' ); JoomlaWatchHelper :: saveConfigValues($checkboxNamesArray, $post); return true; } } ?>