static function writeEntry($severity, $sql)
 {
     if (@EXTRAWATCH_DEBUG) {
         $logFileName = date("Y-m-d") . ".log.php";
         if (@_EW_CLOUD_MODE && (int) @_EW_PROJECT_ID) {
             //logs separated by project ids
             $logDirName = realpath(dirname(__FILE__) . DS . ".." . DS) . DS . "log" . DS . (int) _EW_PROJECT_ID;
             if (!file_exists($logDirName)) {
                 ///
                 @mkdir(ExtraWatchInput::validate(_EW_INPUT_DIR, $logDirName));
                 ///
             }
             $logFilePath = $logDirName . DS . $logFileName;
         } else {
             $logFilePath = realpath(dirname(__FILE__) . DS . ".." . DS) . DS . "log" . DS . $logFileName;
         }
         //$backTrace = ExtraWatchLog::getDebugBacktrace();
         $message = date("H:i:s");
         if (@EXTRAWATCH_PROFILING_ENABLED) {
             $message .= " " . self::getMicrotime() . " ";
         }
         if (@_EW_CLOUD_MODE && defined('_EW_PROJECT_ID')) {
             $message .= " P:" . sprintf("%4d", _EW_PROJECT_ID) . " ";
         }
         $message .= $sql . "\n";
         //$message .= "JoomlaBug BackTrace: " . $backTrace;
         $result = error_log($message, 3, $logFilePath);
         if (!$result) {
             echo "Error writing log to: " . $logFilePath;
         }
         chmod($logFilePath, 0700);
     }
 }
 function __construct($database)
 {
     $this->database = $database;
     $this->env = ExtraWatchEnvFactory::getEnvironment();
     $this->config = new ExtraWatchConfig($this->database);
     $this->helper = new ExtraWatchHelper($this->database);
     $this->date = new ExtraWatchDate($this->database);
     $this->stat = new ExtraWatchStat($this->database);
     $this->user_agent_string = ExtraWatchInput::validate(_EW_INPUT_USER_AGENT, @$_SERVER['HTTP_USER_AGENT']);
     ///
 }
 function insertHeatmapClick($uri2titleId, $x, $y, $w, $h, $xpath)
 {
     $ip = ExtraWatchInput::validate(_EW_INPUT_IP, ExtraWatchVisit::getRemoteIPAddress());
     ///
     $username = @$this->config->env->getUsername();
     if ($this->config->isIgnored('IP', $ip) || $this->config->isIgnored('USER', $username)) {
         return FALSE;
     }
     $day = $this->date->jwDateToday();
     $timestamp = $this->date->getUTCTimestamp();
     $query = sprintf("INSERT INTO #__extrawatch_heatmap (`uri2titleId`, `x`, `y`, `w`, `h`, `ip`, `day`, `timestamp`, `xpath`) values ('%d','%d','%d','%d','%d','%s','%d','%d','%s')", (int) $uri2titleId, (int) $x, (int) $y, (int) $w, (int) $h, $this->database->getEscaped($ip), (int) $day, (int) $timestamp, $this->database->getEscaped($xpath));
     $this->database->executeQuery($query);
     echo $query;
     $this->goal->checkGoals("", "", $ip, "", "", $xpath);
     $this->stat->increaseKeyValueInGroup(EW_DB_KEY_HTML_ELEMENT, $this->database->getEscaped($xpath));
     die;
 }
$jBasePath = realpath(dirname(__FILE__) . DS . ".." . DS . ".." . DS . "..". DS);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
define('JPATH_BASE2', $jBasePath);*/
include_once JPATH_BASE2 . DS . "components" . DS . "com_extrawatch" . DS . "includes.php";
$extraWatch = new ExtraWatchMain();
$extraWatch->helper->setNoindexHttpHeaders();
//setting explicitly for ajax requests
$extraWatchHTML = new ExtraWatchHTML();
$extraWatchTrendHTML = new ExtraWatchTrendHTML($extraWatch);
$extraWatch->block->checkBackendTokenFromUrl();
$extraWatch->config->initializeTranslations();
//echo $extraWatchHTML->renderAdminStyles();
echo $extraWatchHTML->renderPrint();
echo $extraWatchHTML->renderCloseWindow();
$group = (int) @ExtraWatchHelper::requestGet('group');
///
$name = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, urldecode(@ExtraWatchHelper::requestGet('name')));
///
$date = (int) @ExtraWatchHelper::requestGet('date');
///
?>
<center>
<h2><?php 
echo htmlentities($name);
?>
</h2>  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
</center>
<br/><br/>
<table>
<tr>
<td>
<div id='trendChartDaily' style='width:100%; margin-top:50px; height: 35%;'></div>  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 static function getUrlContent($url)
 {
     if (@function_exists("curl_init")) {
         $ch = curl_init();
         curl_setopt_array($ch, array(CURLOPT_URL => ExtraWatchInput::validate(_EW_INPUT_URL, $url), CURLOPT_RETURNTRANSFER => true));
         $content = curl_exec($ch);
         curl_close($ch);
         return $content;
     }
 }
 function renderFileList($group, $scanDirectoryMain, $scanDirectoryAdmin, $realDirectoryMain, $realDirectoryAdmin, $suffix)
 {
     $this->renderPageHtml = "";
     $this->renderPageItems = 0;
     $this->renderPageTotal = 0;
     $this->renderPageTotalRaw = 0;
     $this->renderPageJavaArray = "var dirs_{$suffix} = [\"\"";
     ExtraWatchInput::validate(_EW_INPUT_DIR, realpath(dirname(__FILE__) . DS . $scanDirectoryMain));
     ///**
     $dirs1 = @scandir($scanDirectoryMain);
     ///**
     ExtraWatchInput::validate(_EW_INPUT_DIR, realpath(dirname(__FILE__) . DS . $scanDirectoryAdmin));
     ///**
     $dirs2 = @scandir($scanDirectoryAdmin);
     ///**
     if ($dirs2) {
         // in case we only use one folder
         $dirs = @array_merge($dirs1, $dirs2);
     } else {
         $dirs = $dirs1;
     }
     $dirsParsed = array();
     if (@$dirs) {
         foreach ($dirs as $dir) {
             if ($dir == ".") {
                 continue;
             }
             if ($dir == "..") {
                 continue;
             }
             if (is_dir($scanDirectoryMain . $dir)) {
                 ///
                 $directory = $realDirectoryMain . $dir;
                 if (!isset($dirsParsed[$directory])) {
                     $dirsParsed[$directory] = TRUE;
                     if ($this->renderPageItems % 2 == 0) {
                         $color = "#f9f9f9";
                     } else {
                         $color = "#eeeeee";
                     }
                     $this->renderPageItems++;
                     $directory = str_replace("\\", "\\\\", $directory);
                     //escaping \ character for use in JS
                     $this->renderPageJavaArray = $this->renderPageJavaArray . ", \"" . $directory . "\"";
                     $size = $this->getDirectorySize($directory, $group, FALSE, $this->findLatestCheckDayBySuffix($suffix));
                     if ($size != "") {
                         $this->renderPageTotal += $size;
                         $this->renderPageTotalRaw += $size;
                         $size = $this->sizeFormat($size);
                     }
                     $this->renderPageHtml = $this->renderPageHtml . "<tr><td >" . $dir . "</td>" . "<td  align='center' id='item-" . $suffix . "-" . $this->renderPageItems . "'>{$size}</td>" . "<td  align='center'><a href='javascript:refreshSize_" . $suffix . "(" . $this->renderPageItems . ")'>  \t \t    \t    \t\t  \t \t  \t \t  \t\t \t \t\t    \t \t\t\t \t   \t\t  \t \t \t\t \t \t   \t      \t  \t \t\t \t\t \t\t\t\t \t\t\t \t\t  \t\t    \t \t\t \t\t  \n\t\t\t\t\t\t\t <img src='" . $this->config->getLiveSiteWithSuffix() . "components/com_extrawatch/img/icons/refresh.png' border='0' title='" . _EW_SIZES_REFRESH . "'/></a></td>";
                 }
             }
             if (is_dir($scanDirectoryAdmin . $dir)) {
                 $directory = $realDirectoryAdmin . $dir;
                 if (!isset($dirsParsed[$directory])) {
                     $dirsParsed[$directory] = TRUE;
                     if ($this->renderPageItems % 2 == 0) {
                         $color = "#f9f9f9";
                     } else {
                         $color = "#eeeeee";
                     }
                     $this->renderPageItems++;
                     $directory = str_replace("\\", "\\\\", $directory);
                     //escaping \ character for use in JS
                     $this->renderPageJavaArray = $this->renderPageJavaArray . ", \"" . $directory . "\"";
                     $size = $this->getDirectorySize($directory, $group, FALSE, $this->findLatestCheckDayBySuffix($suffix));
                     if ($size != "") {
                         $this->renderPageTotal += $size;
                         $this->renderPageTotalRaw += $size;
                         $size = $this->sizeFormat($size);
                     }
                     $this->renderPageHtml = $this->renderPageHtml . "<tr><td style=' color: #5AA1D3'>" . $dir . "</td>" . "<td  align='center' id='item-" . $suffix . "-" . $this->renderPageItems . "'>{$size}</td>" . "<td  align='center'><a href='javascript:refreshSize_" . $suffix . "(" . $this->renderPageItems . ")'>  \t \t    \t    \t\t  \t \t  \t \t  \t\t \t \t\t    \t \t\t\t \t   \t\t  \t \t \t\t \t \t   \t      \t  \t \t\t \t\t \t\t\t\t \t\t\t \t\t  \t\t    \t \t\t \t\t  \n\t\t\t\t\t\t\t <img src='" . $this->config->getLiveSiteWithSuffix() . "components/com_extrawatch/img/icons/refresh.png' border='0' title='" . _EW_SIZES_REFRESH . "'/></a></td>";
                 }
             }
         }
     }
     $this->renderPageTotal = $this->sizeFormat($this->renderPageTotal);
     $this->renderPageTotal = $this->sizeFormat($this->renderPageTotalRaw);
     $this->renderPageJavaArray = $this->renderPageJavaArray . "];";
 }
 /**
  * @param $file
  * @param $filepathid
  * @param $currdate
  * @param $ip
  * @param $referrerId
  * @param $timestamp
  */
 public function increaseDownloadStat($file)
 {
     $ip = ExtraWatchInput::validate(_EW_INPUT_IP, ExtraWatchVisit::getRemoteIPAddress());
     ///
     $referrer = ExtraWatchInput::validate(_EW_INPUT_REFERRER, ExtraWatchVisit::getReferer());
     ///
     $currdate = date("Y-m-d");
     $referrerId = $this->findOrAddReferrer($referrer);
     $timestamp = $this->date->getUTCTimestamp();
     $filepathquery = sprintf("SELECT did FROM #__extrawatch_dm_paths where dname='%s'", $this->database->getEscaped($file));
     $filepathid = $this->database->resultQuery($filepathquery);
     $filesearchquery = sprintf("SELECT COUNT(*) as `count` FROM #__extrawatch_dm_paths where dname='%s'", $this->database->getEscaped($file));
     $filesearchar = $this->database->resultQuery($filesearchquery);
     if ($filesearchar > 0) {
         $filepathquery_add = sprintf("insert into #__extrawatch_dm_counter (did,ddate,ip,referrerId,`timestamp`) values ('%s','%s','%s','%d','%d')", (int) $filepathid, $this->database->getEscaped($currdate), $ip, (int) $referrerId, (int) $timestamp);
         $this->database->executeQuery($filepathquery_add);
     } else {
         $file_add = sprintf("insert into #__extrawatch_dm_paths (dname) values ('%s')", $this->database->getEscaped($file));
         $this->database->executeQuery($file_add);
         $path_query = "select did from #__extrawatch_dm_paths where dname = ('{$file}')";
         $filepathid = $this->database->resultQuery($path_query);
         $counter_add = sprintf("insert into #__extrawatch_dm_counter (did,ddate,ip,referrerId, `timestamp`) values ('%d','%s','%s','%d')", (int) $filepathid, $this->database->getEscaped($currdate), $ip, (int) $referrerId, (int) $timestamp);
         $this->database->executeQuery($counter_add);
     }
 }
 /**
  * @return string
  */
 public function getTokenFromRequestUrl()
 {
     $queryParams = ExtraWatchHelper::getUrlQueryParams();
     $token = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, @$queryParams[ExtraWatchConfig::_EW_TOKEN_PARAM_NAME]);
     ///
     return $token;
 }
 /**     * block     */
 function saveImportAntiSpamIp($post)
 {
     ExtraWatchInput::validate(_EW_INPUT_FILE_NAME, $_FILES);
     if ($_FILES["file"]["type"] == "application/octet-stream") {
         ///
         if ($_FILES["file"]["error"] > 0) {
             echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
             return;
         }
     }
     if (!ExtraWatchHelper::endsWith($_FILES["file"]["name"], ".csv")) {
         echo _EW_ANTISPAM_INVALID_EXTENSION;
         return;
     }
     $uploadedFilePath = JPATH_BASE . "/" . $_FILES["file"]["name"];
     ///
     move_uploaded_file($_FILES["file"]["tmp_name"], $uploadedFilePath);
     ///
     set_time_limit(0);
     $handle = fopen($uploadedFilePath, "r");
     if (!$handle) {
         return "Error: it was not possible to open uploaded file from: " . $uploadedFilePath;
     }
     $errorMessages = array();
     $i = 0;
     while (($data = stream_get_line($handle, 1024, ",")) !== FALSE) {
         $ip = $data;
         if ($ip != 'ip') {
             if (!ExtraWatchHelper::isValidIPv4($ip)) {
                 $errorMessages[] = "{$ip} is not a valid IP address!";
                 continue;
             }
             $ipArray[] = $ip;
         }
         if ($i % self::IP_BULK_IMPORT_SIZE == self::IP_BULK_IMPORT_SIZE - 1) {
             //flushing array when it has particular size to DB
             $this->flushIPBulkFromArray($ipArray);
             $ipArray = array();
         }
         $i++;
     }
     $this->flushIPBulkFromArray($ipArray);
     fclose($handle);
     unlink($uploadedFilePath);
     return implode("\n", $errorMessages);
 }
 /**
  * visitor
  */
 function insertVisit()
 {
     $redirectStatus = (int) @$_SERVER['REDIRECT_STATUS'];
     ///
     if ($redirectStatus == "404") {
         //prevent inserting not-found pages
         return;
     }
     $this->config->initializeTranslations();
     $ip = addslashes(strip_tags(ExtraWatchInput::validate(_EW_INPUT_IP, @$this->getRemoteIPAddress())));
     ///
     $username = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, @$this->env->getUsername());
     ///
     $userId = (int) @$this->env->getUserId();
     ///
     $referrer = ExtraWatchInput::validate(_EW_INPUT_REFERRER, $this->getReferer());
     ///
     $liveSite = $this->config->getLiveSite();
     ///
     if ($this->config->isIgnored('IP', $ip) || $this->config->isIgnored('USER', $username) || $this->heatmap->isHeatmapLoaded()) {
         return TRUE;
     }
     $count = $this->block->getBlockedIp($ip);
     if (@$count) {
         try {
             $this->block->dieWithBlockingMessage($ip);
         } catch (ExtraWatchIPBlockedException $exception) {
             die($exception->getBlockingMessage());
         }
     }
     $this->user->updateUserLog($userId, $ip);
     $uri = $this->helper->getURI();
     ExtraWatchLog::debug("Insert bot visit from insertVisit");
     $this->insertBotVisit($uri, $referrer, "", $ip, $username);
     ExtraWatchLog::debug("Visit inserted: IP: {$ip}, ref: {$referrer}, live site: {$liveSite} username: {$username}");
     $this->goal->checkGoals("", $username, $ip, $referrer, $liveSite);
     /* execute on midnight */
     $this->runAtMidnight();
 }
Esempio n. 11
0
<?php

/**
 * @file
 * ExtraWatch - A real-time ajax monitor and live stats  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @package ExtraWatch  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @version 2.3  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @revision 2572  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @license http://www.gnu.org/licenses/gpl-3.0.txt     GNU General Public License v3  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @copyright (C) 2015 by CodeGravity.com - All rights reserved!  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @website http://www.codegravity.com  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 */
defined('_JEXEC') or die('Restricted access');
/*define('DS', DIRECTORY_SEPARATOR);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
$jBasePath = realpath(dirname(__FILE__) . DS . ".." . DS . ".." . DS . "..". DS);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
define('JPATH_BASE2', $jBasePath);*/
include_once JPATH_BASE2 . DS . "components" . DS . "com_extrawatch" . DS . "includes.php";
$extraWatch = new ExtraWatchMain();
$extraWatch->helper->setNoindexHttpHeaders();
//setting explicitly for ajax requests
$extraWatchHTML = new ExtraWatchHTML();
$extraWatch->block->checkBackendTokenFromUrl();
$extraWatch->config->initializeTranslations();
$extraWatch->block->extrawatch_blockIpToggle(ExtraWatchInput::validate(_EW_INPUT_IP, @ExtraWatchHelper::requestGet('ip')));
///**
 private function runSQLscriptsFromFile($file)
 {
     $database = $this->env->getDatabase(_EW_PROJECT_ID);
     ///
     $lines = file(ExtraWatchInput::validate(_EW_INPUT_FILE_PATH, $file));
     ///
     $query = "";
     foreach ($lines as $line_num => $line) {
         $query .= " " . trim($line);
         if (strstr(trim($line), ";")) {
             $query = trim($query);
             $query = str_replace("#__", $this->env->getDbPrefix(), $query);
             $database->executeQuery($query);
             $query = "";
         }
     }
 }
Esempio n. 13
0
 * @copyright (C) 2015 by CodeGravity.com - All rights reserved!  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @website http://www.codegravity.com  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 */
defined('_JEXEC') or die('Restricted access');
/*define('DS', DIRECTORY_SEPARATOR);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
$jBasePath = realpath(dirname(__FILE__) . DS . ".." . DS . ".." . DS . "..". DS);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
define('JPATH_BASE2', $jBasePath);*/
include_once JPATH_BASE2 . DS . "components" . DS . "com_extrawatch" . DS . "includes.php";
$extraWatch = new ExtraWatchMain();
$extraWatch->helper->setNoindexHttpHeaders();
//setting explicitly for ajax requests
$extraWatch->block->checkBackendTokenFromUrl();
$extraWatch->config->initializeTranslations();
$uriId = (int) ExtraWatchHelper::requestGet('uriId');
///
$ip = ExtraWatchInput::validate(_EW_IP, ExtraWatchHelper::requestGet('ip'));
///
$uri2titleId = (int) ExtraWatchHelper::requestGet('uri2titleId');
///
$day = (int) ExtraWatchHelper::requestGet('day');
///
$uriIdVisitRow = $extraWatch->visit->getJoinedURIRowById($uriId);
$extraWatchVisitsHTML = new ExtraWatchVisitHTML($extraWatch);
$extraWatchHeatmapHTML = new ExtraWatchHeatmapHTML($extraWatch->database);
$output = "";
$output .= "\n        <a href='javascript:extrawatch_blockIpToggle(\"{$ip}\");extrawatch_sendVisitsReq();'><img src='" . $extraWatch->config->getLiveSiteWithSuffix() . "components/com_extrawatch/img/icons/block.png' />" . _EW_VISIT_BLOCK_IP . "</a><br/>  \t \t    \t    \t\t  \t \t  \t \t  \t\t \t \t\t    \t \t\t\t \t   \t\t  \t \t \t\t \t \t   \t      \t  \t \t\t \t\t \t\t\t\t \t\t\t \t\t  \t\t    \t \t\t \t\t  \n        <a href='" . $extraWatch->config->renderLink("goals", "&action=insert&id=" . $uriId) . "' '" . _EW_VISIT_ADD_PAGE . "'><img src='" . $extraWatch->config->getLiveSiteWithSuffix() . "components/com_extrawatch/img/icons/goal-add.gif' />" . _EW_VISIT_ADD_PAGE . "</a>";
$getData = $extraWatchVisitsHTML->renderGetVars($uriId);
$postData = $extraWatchVisitsHTML->renderPostVars($uriId);
$output .= "<table>";
if ($getData) {
    $output .= "<tr><td><br/><u>" . _EW_VISIT_URL_PARAMETERS . "</u></td>" . $getData;
Esempio n. 14
0
$title = ExtraWatchHelper::requestGet("title");
///
$uri = ExtraWatchInput::validate(_EW_INPUT_URI, ExtraWatchHelper::requestGet("uri"));
///
$queryString = ExtraWatchHelper::requestGet("referringQuery");
///
if ($queryString) {
    $uri .= "?" . $queryString;
}
$params = ExtraWatchHelper::requestGet("getParams");
///
$uri = ExtraWatchInput::validate(_EW_INPUT_URI, ExtraWatchHelper::unescapeSlash($uri));
///
$title = ExtraWatchHelper::unescapeSlash($title);
///
$referer = ExtraWatchInput::validate(_EW_INPUT_REFERRER, ExtraWatchHelper::unescapeSlash($referer));
///
$params = ExtraWatchHelper::unescapeSlash($params);
///
$uri = $uri . $params;
//adding params to uri
$env = ExtraWatchEnvFactory::getEnvironment();
$modulePath = realpath(dirname(__FILE__) . DS . ".." . DS . ".." . DS . ".." . DS);
ExtraWatchLog::debug("img.php - referer: {$referer} title: {$title} uri: {$uri} prams: " . print_r($params, true));
if (@_EW_CLOUD_MODE) {
    $projectId = (int) @$_REQUEST['projectId'];
    ///
    $projectInitialized = $extraWatch->visit->isProjectInitialized($projectId);
    if ($projectInitialized) {
        $extraWatch->visit->updateVisitByBrowser($uri, $referer, $title, $params);
    } else {
Esempio n. 15
0
 */
defined('_JEXEC') or die('Restricted access');
/*define('DS', DIRECTORY_SEPARATOR);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
$jBasePath = realpath(dirname(__FILE__) . DS . ".." . DS . ".." . DS . "..". DS);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
define('JPATH_BASE2', $jBasePath);*/
$env = @$_REQUEST['env'];
include_once JPATH_BASE2 . DS . "components" . DS . "com_extrawatch" . DS . "includes.php";
$extraWatch = new ExtraWatchMain();
$extraWatch->helper->setNoindexHttpHeaders();
//setting explicitly for ajax requests
$extraWatch->block->checkBackendTokenFromUrl();
$extraWatch->config->initializeTranslations();
ExtraWatchInput::validate(_EW_INPUT_DIR, realpath(realpath(dirname(__FILE__)) . DS . ExtraWatchHelper::requestPost('dir')));
$dir = ExtraWatchHelper::requestPost('dir');
///
$group = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, ExtraWatchHelper::requestPost('mod'));
///
if (!$extraWatch->sizes->isAllowed($dir)) {
    die(_EW_SIZEQUERY_BAD_REQUEST);
}
$dir = realpath(realpath(dirname(__FILE__)) . DS . $dir);
if (is_dir($dir)) {
    $sizeNow = $extraWatch->sizes->getDirectorySize($dir, $group, TRUE, $extraWatch->date->jwDateToday());
    $sizePrev = $extraWatch->sizes->getDirectorySize($dir, $group, FALSE, $extraWatch->sizes->findLatestCheckDayByComOrModGroup());
    if ($sizePrev == $sizeNow) {
        $size = "<span style='color: gray;'>" . $extraWatch->sizes->sizeFormat($sizeNow) . "</span>";
    } elseif ($sizeNow <= $sizePrev) {
        $size = "<span style='color: green;'>" . $extraWatch->sizes->sizeFormat($sizeNow);
        if ($sizeNow) {
            $size .= " (-" . round(($sizePrev - $sizeNow) / $sizeNow * 100) . "%)";
        }
Esempio n. 16
0
<?php

/**
 * extraWatch - A real-time ajax joomla monitor and live stats  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @package extraWatch  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @version 2.3  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @revision 2572  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @license http://www.gnu.org/licenses/gpl-3.0.txt 	GNU General Public License v3  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @copyright (C) 2015 by CodeGravity.com - All rights reserved!  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @website http://www.codegravity.com  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 */
defined('_JEXEC') or die('Restricted access: ');
$output = $extraWatch->goal->exportGoals();
$xmlFile = "extrawatch-goals-" . date('Ymd') . ".xml";
$filename = ExtraWatchInput::getUploadTmpDir() . DS . $xmlFile;
// required for IE, otherwise Content-disposition is ignored
if (ini_get('zlib.output_compression')) {
    ini_set('zlib.output_compression', 'Off');
}
// addition by Jorg Weske
$file_extension = strtolower(substr(strrchr($filename, "."), 1));
//if( $filename == "" )
//{
//echo "<html><title>eLouai's Download Script</title><body>ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath</body></html>";
//exit;
//} elseif ( ! file_exists( $filename ) )
//{
//echo "<html><title>eLouai's Download Script</title><body>ERROR: File not found. USE force-download.php?file=filepath</body></html>";
//exit;
//};
switch ($file_extension) {
  var h = screen.height;
  var xx;
  var extraWatchLinkElementsList;
  var extraWatchLinkElementsListOriginalFunctions = new Array();

  var randHash = '<?php 
echo @$getParams[ExtraWatchHeatmap::HEATMAP_PARAM_HASH];
?>
';

  <?php 
$request = $extraWatch->env->getRequest();
$heatmapEnabled = (bool) @$getParams[ExtraWatchHeatmap::HEATMAP_PARAM_NAME];
$day = (int) @$getParams[ExtraWatchHeatmap::HEATMAP_PARAM_DAY_NAME];
///
$xpath = ExtraWatchInput::validate(_EW_INPUT_XPATH, urldecode(@$getParams['xpath']));
///
?>

ew_Heatmap.attachExtraWatchClickListener('<?php 
echo $extraWatch->config->getFrontendToken();
?>
', <?php 
echo (int) $uri2titleId;
?>
);


  <?php 
if (@$heatmapEnabled) {
    $heatmapDataJSON = $extraWatch->heatmap->getHeatmapClicksByUri2TitleIdJSON($uri2titleId, $day, $ip);
 /**
  * @param $inputModified
  */
 private static function splitAndValidateMultipleIp($inputModified)
 {
     $inputModifiedArray = explode(_EW_IP_SEPARATOR, $inputModified);
     foreach ($inputModifiedArray as $inputModifiedArrayEntry) {
         ExtraWatchInput::validate(_EW_INPUT_IP, trim($inputModifiedArrayEntry));
     }
 }
 function saveImportGoal($post)
 {
     ExtraWatchInput::validate(_EW_INPUT_FILE_NAME, $_FILES);
     ///**
     if ($_FILES["file"]["type"] == "text/xml") {
         if ($_FILES["file"]["error"] > 0) {
             echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
         } else {
             if (file_exists(JPATH_BASE . "/" . $_FILES["file"]["name"])) {
                 ///
                 echo $_FILES["file"]["name"] . " already exists. ";
             } else {
                 move_uploaded_file($_FILES["file"]["tmp_name"], JPATH_BASE . "/" . $_FILES["file"]["name"]);
                 ///
                 //XML Read
                 $doc = new DOMDocument();
                 $doc->load($_FILES['file']['name']);
                 ///
                 $goals = $doc->getElementsByTagName("goal");
                 foreach ($goals as $goal) {
                     $names = $goal->getElementsByTagName("name");
                     $name = $names->item(0)->nodeValue;
                     $username_inverseds = $goal->getElementsByTagName("username_inversed");
                     $username_inversed = $username_inverseds->item(0)->nodeValue;
                     $parentIds = $goal->getElementsByTagName("parentId");
                     $parentId = $parentIds->item(0)->nodeValue;
                     $uri_conditions = $goal->getElementsByTagName("uri_condition");
                     $uri_condition = $uri_conditions->item(0)->nodeValue;
                     $uri_inverseds = $goal->getElementsByTagName("uri_inversed");
                     $uri_inversed = $uri_inverseds->item(0)->nodeValue;
                     $get_vars = $goal->getElementsByTagName("get_var");
                     $get_var = $get_vars->item(0)->nodeValue;
                     $get_conditions = $goal->getElementsByTagName("get_condition");
                     $get_condition = $get_conditions->item(0)->nodeValue;
                     $get_inverseds = $goal->getElementsByTagName("get_inversed");
                     $get_inversed = $get_inverseds->item(0)->nodeValue;
                     $post_vars = $goal->getElementsByTagName("post_var");
                     $post_var = $post_vars->item(0)->nodeValue;
                     $post_conditions = $goal->getElementsByTagName("post_condition");
                     $post_condition = $post_conditions->item(0)->nodeValue;
                     $post_inverseds = $goal->getElementsByTagName("post_inversed");
                     $post_inversed = $post_inverseds->item(0)->nodeValue;
                     $title_conditions = $goal->getElementsByTagName("title_condition");
                     $title_condition = $title_conditions->item(0)->nodeValue;
                     $title_inverseds = $goal->getElementsByTagName("title_inversed");
                     $title_inversed = $title_inverseds->item(0)->nodeValue;
                     $username_conditions = $goal->getElementsByTagName("username_condition");
                     $username_condition = $username_conditions->item(0)->nodeValue;
                     $ip_conditions = $goal->getElementsByTagName("ip_condition");
                     $ip_condition = $ip_conditions->item(0)->nodeValue;
                     $ip_inverseds = $goal->getElementsByTagName("ip_inversed");
                     $ip_inversed = $ip_inverseds->item(0)->nodeValue;
                     $came_from_conditions = $goal->getElementsByTagName("came_from_condition");
                     $came_from_condition = $came_from_conditions->item(0)->nodeValue;
                     $came_from_inverseds = $goal->getElementsByTagName("came_from_inversed");
                     $came_from_inversed = $came_from_inverseds->item(0)->nodeValue;
                     $country_conditions = $goal->getElementsByTagName("country_condition");
                     $country_condition = $country_conditions->item(0)->nodeValue;
                     $country_inverseds = $goal->getElementsByTagName("country_inversed");
                     $country_inversed = $country_inverseds->item(0)->nodeValue;
                     $blocks = $goal->getElementsByTagName("block");
                     $block = $blocks->item(0)->nodeValue;
                     $redirects = $goal->getElementsByTagName("redirect");
                     $redirect = $redirects->item(0)->nodeValue;
                     $disableds = $goal->getElementsByTagName("disabled");
                     $disabled = $disableds->item(0)->nodeValue;
                     $clicked_element_xpath_conditions = $goal->getElementsByTagName("clicked_element_xpath_condition");
                     $clicked_element_xpath_condition = $clicked_element_xpath_conditions->item(0)->nodeValue;
                     $send_emails = $goal->getElementsByTagName("send_email");
                     $send_email = $send_emails->item(0)->nodeValue;
                     //Check the Goal is exist or not
                     $query = sprintf("select name from #__extrawatch_goals where `name` = '{$name}'");
                     $rows = @$this->database->assocListQuery($query);
                     if (empty($rows)) {
                         $value = "'{$name}','{$username_inversed}','{$parentId}','{$uri_condition}','{$uri_inversed}','{$get_var}','{$get_condition}','{$get_inversed}',                                     '{$post_var}','{$post_condition}','{$post_inversed}','{$title_condition}','{$title_inversed}','{$username_condition}','{$ip_condition}','{$ip_inversed}',                                     '{$came_from_condition}','{$came_from_inversed}','{$country_condition}','{$country_inversed}','{$block}','{$redirect}','{$disabled}', '{$clicked_element_xpath_condition}', '{$send_email}'";
                         //$query = sprintf("insert into #__extrawatch_goals values('NULL','$name','$username_inversed','$parentId','$uri_condition','$uri_inversed','$get_var','$get_condition','$get_inversed','$post_var','$post_condition','$post_inversed','$title_condition','$title_inversed','$username_condition','$ip_condition','$ip_inversed','$came_from_condition','$came_from_inversed','$country_condition','$country_inversed','$block','$redirect','$disabled')");
                         $query = sprintf("insert into #__extrawatch_goals (`name`, `username_inversed`, `parentId` , `uri_condition`, `uri_inversed` , `get_var` , `get_condition`, `get_inversed` , `post_var` , `post_condition`, `post_inversed` , `title_condition`, `title_inversed`, `username_condition`, `ip_condition` , `ip_inversed` , `came_from_condition`, `came_from_inversed`, `country_condition` , `country_inversed` , `block` , `redirect` , `disabled`, `clicked_element_xpath_condition`, `send_email`)\n                                                values (" . $value . ")");
                         $result = $this->database->executeQuery($query);
                     }
                 }
                 //Delete uploaded file
                 unlink($_FILES["file"]["name"]);
                 ///
             }
         }
     } else {
         echo "Invalid file";
     }
     return $result;
 }
Esempio n. 20
0
<?php

/**
 * @file
 * ExtraWatch - A real-time ajax monitor and live stats  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @package ExtraWatch  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @version 2.3  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @revision 2572  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @license http://www.gnu.org/licenses/gpl-3.0.txt     GNU General Public License v3  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @copyright (C) 2015 by CodeGravity.com - All rights reserved!  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 * @website http://www.codegravity.com  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
 */
defined('_JEXEC') or die('Restricted access');
$env = ExtraWatchInput::validate(_EW_INPUT_ENV, @$_REQUEST['env']);
///
// compatibility with ZOO
if (defined('JVERSION') && version_compare(JVERSION, '2.5.0', '<')) {
    $mainframe =& JFactory::getApplication('site');
    $mainframe->initialise();
}
require_once JPATH_BASE . DS . "components" . DS . "com_extrawatch" . DS . "includes.php";
$extraWatch = new ExtraWatchMain();
$extraWatch->config->initializeTranslations();
$extraWatch->block->checkBackendTokenFromUrl();
?>
var oldmarker;
var map;
var infowindow;
var openmap, layer, openmapmarkers;  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  

include_once JPATH_BASE2 . DS . "components" . DS . "com_extrawatch" . DS . "includes.php";
$extraWatch = new ExtraWatchMain();
$extraWatch->helper->setNoindexHttpHeaders();
//setting explicitly for ajax requests
$extraWatch->block->checkBackendTokenFromUrl();
$extraWatch->config->initializeTranslations();
$group = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, ExtraWatchHelper::requestPost('mod'));
///
$prevSum = (int) ExtraWatchHelper::requestPost('prev');
///
$suffix = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, ExtraWatchHelper::requestPost('suffix'));
///
ExtraWatchInput::validate(_EW_INPUT_DIR, realpath(dirname(__FILE__) . DS . ExtraWatchHelper::requestPost('dir1')));
$realDirectoryMain = ExtraWatchHelper::requestPost('dir1');
///**
ExtraWatchInput::validate(_EW_INPUT_DIR, realpath(dirname(__FILE__) . DS . ExtraWatchHelper::requestPost('dir2')));
$realDirectoryAdmin = ExtraWatchHelper::requestPost('dir2');
///**
if (!$extraWatch->sizes->isAllowed($realDirectoryMain) || !$extraWatch->sizes->isAllowed($realDirectoryAdmin)) {
    die(_JW_SIZEQUERY_BAD_REQUEST);
}
$extraWatch->sizes->renderFileList($group, $realDirectoryMain, $realDirectoryAdmin, $realDirectoryMain, $realDirectoryAdmin, $suffix);
$result = $extraWatch->sizes->renderPageTotal;
if ($extraWatch->sizes->renderPageTotalRaw == $prevSum) {
    $result = "";
    if ($extraWatch->sizes->renderPageTotalRaw) {
        $result .= " (" . sprintf("+%.2f", ($extraWatch->sizes->renderPageTotalRaw - $prevSum) / $extraWatch->sizes->renderPageTotalRaw * 100) . "%)";
    }
} else {
    if ($extraWatch->sizes->renderPageTotalRaw > $prevSum) {
        if ($extraWatch->sizes->renderPageTotalRaw) {
Esempio n. 22
0
///**
$uri2titleId = (int) @$params["uri2titleId"];
///**
$w = (int) @$params["w"];
///**
$h = (int) @$params["h"];
///**
$day = (int) @$params["day"];
///**
if (@$params["ip"]) {
    $ip = ExtraWatchInput::validate(_EW_INPUT_IP, @$params["ip"]);
    ///**
}
switch ($action) {
    case 'getHeatMap':
        $randHash = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, @$params[ExtraWatchHeatmap::HEATMAP_PARAM_HASH]);
        ///
        if (!$extraWatch->config->isPermittedWithHeatmapToken($randHash)) {
            die("Unauthorized access");
        }
        echo $extraWatch->heatmap->getHeatmapClicksByUri2TitleIdJSON($uri2titleId, $w, $h, $day, $ip);
        break;
    case 'click':
        if (!$extraWatch->config->isPermittedWithFrontendToken($extraWatch->config->getFrontendToken())) {
            die("Unauthorized access");
        }
        $x = $params["x"];
        $y = $params["y"];
        $xpath = urldecode(urldecode($params["xpath"]));
        $extraWatch->heatmap->insertHeatmapClick($uri2titleId, $x, $y, $w, $h, $xpath);
        break;
function extrawatch_mainController($task = "")
{
    $current_error_reporting = error_reporting();
    error_reporting(E_ALL & ~(E_STRICT | E_NOTICE));
    $extraWatch = new ExtraWatchMain();
    $extraWatchHTML = new ExtraWatchHTML();
    $extraWatchGoalHTML = new ExtraWatchGoalHTML($extraWatch);
    $extraWatchTrendHTML = new ExtraWatchTrendHTML($extraWatch);
    $env = ExtraWatchEnvFactory::getEnvironment();
    $queryParams = ExtraWatchHelper::getUrlQueryParams();
    $action = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, @$queryParams['action']);
    ///
    if (!$task) {
        $task = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, @$queryParams['task']);
        ///
    }
    ExtraWatchHelper::checkIfRequestPathAllowed($extraWatch, $env, $task);
    $taskFromNavigation = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, @ExtraWatchHelper::request('task'));
    ///
    if ($taskFromNavigation) {
        $task = $taskFromNavigation;
    }
    $option = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, @ExtraWatchHelper::requestGet('option'));
    ///
    $result = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, @ExtraWatchHelper::requestGet('result'));
    ///
    $params = @$queryParams['params'];
    ///
    $output = "";
    if (!$extraWatch->config->getLiveSite()) {
        $extraWatch->config->setLiveSite($env->getRootSite());
        if ($env->getRootSite() != $extraWatch->config->getLiveSite()) {
            die("<span style='color: red; font-weight: bold;'>Error: It was not possible to write data to the database! Check your database permissions</span>");
        }
    }
    $extraWatch->setup->runAdditionalSQLScripts();
    $extraWatch->config->saveRandValue();
    switch ($task) {
        case "ajax":
            $includePath = JPATH_BASE2 . DS . "components" . DS . "com_extrawatch" . DS . "ajax";
            ExtraWatchHelper::checkIfFileExistsInDir($includePath, $action . ".php");
            if ($action == "download") {
                if (ExtraWatchInput::validate(_EW_INPUT_FILE_PATH, $includePath . DS . $action . ".php")) {
                    include_once $includePath . DS . $action . ".php";
                }
                die;
            } else {
                $extraWatch->config->validateRequestToken($queryParams);
                $output = ExtraWatchHelper::get_include_contents("ajax" . DS . $action . ".php", array("params" => $params));
                die($output);
            }
            break;
        case "js":
            $extraWatch->config->validateRequestToken($queryParams);
            $includePath = "js";
            ExtraWatchHelper::checkIfFileExistsInDir(JPATH_BASE2 . DS . "components" . DS . "com_extrawatch" . DS . $includePath, $action . ".php");
            $output = ExtraWatchHelper::get_include_contents($includePath . DS . $action . ".php", array());
            die($output);
            break;
        case "useFreeVersion":
            $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
            $extraWatch->config->useFreeVersion();
            $extraWatch->config->saveVersionIntoDatabase();
            $extraWatch->config->setLiveSite($env->getRootSite());
            break;
        case "activate":
            $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
            if ($action == "codecanyon") {
                $extraWatch->config->saveConfigValue("EXTRAWATCH_MARKETPLACE", $action);
            }
            $extraWatch->config->activate(ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, ExtraWatchHelper::requestGet('key')));
            ///
            $extraWatch->config->saveVersionIntoDatabase();
            $extraWatch->config->setLiveSite($env->getRootSite());
            break;
        case "licenseAccepted":
            $extraWatch->config->setLiveSite($env->getRootSite());
            $extraWatch->config->setLicenseAccepted();
            $extraWatch->config->setHtAccessPermissions();
            $extraWatch->config->saveVersionIntoDatabase();
            break;
        case "resetLiveSite":
            $extraWatch->block->checkPermissions();
            $extraWatch->config->setLiveSite($env->getRootSite());
            break;
    }
    if (!_EW_CLOUD_MODE && !$extraWatch->config->checkLicenseAccepted()) {
        //remove check license accepted if cloud mode
        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
        $output .= $extraWatchHTML->renderHeader($extraWatch);
        $output .= $extraWatchHTML->renderAcceptLicense();
        return $output;
    } else {
        if (!_EW_CLOUD_MODE && (!$extraWatch->config->isFree() && !$extraWatch->config->isAdFree() && !$extraWatch->config->isUnregistered())) {
            $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
            $output .= $extraWatchHTML->renderHeader($extraWatch);
            $output .= $extraWatchHTML->renderAdFreeLicense();
            return $output;
        }
        switch ($task) {
            case "storeIpInfoDbKey":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $keyValue = ExtraWatchInput::validate(_EW_INPUT_ONE_STRING, ExtraWatchHelper::requestPost('storeIpInfoDbKey'));
                ///
                if ($keyValue) {
                    $extraWatch->config->saveConfigValue("EXTRAWATCH_IPINFODB_KEY", $keyValue);
                } else {
                    $output = "<br/><div style='border: 1px solid red; width: 50%; padding: 10px;'>" . _EW_STATS_MAP_INVALID_KEY . "</div>";
                }
                $output .= $extraWatchHTML->renderLocation();
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "users":
                switch ($action) {
                    case "save":
                        $result = $extraWatch->helper->saveUserSettings(ExtraWatchHelper::requestPost());
                        ///
                    default:
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchHTML->renderUsers($extraWatch);
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                }
                break;
            case "update":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderUpdate();
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "sizes":
                if (!$extraWatch->config->isFree()) {
                    $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                    $output .= $extraWatchHTML->renderHeader($extraWatch);
                    $output .= $extraWatchHTML->renderSizes();
                    $output .= $extraWatchHTML->renderFooter();
                }
                break;
            case "seo":
                switch ($action) {
                    case "save":
                        $result = $extraWatch->helper->saveSEOSettings(ExtraWatchHelper::requestPost());
                        ///
                    default:
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchHTML->renderSEO();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                }
                break;
            case "graphs":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $extraWatchTrendHTML = new ExtraWatchTrendHTML($extraWatch);
                $output .= $extraWatchHTML->renderGraphs($extraWatchTrendHTML);
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "trends":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $extraWatchTrendHTML->renderTrends();
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "credits":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderCredits();
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "goals":
                switch ($action) {
                    case "insert":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchGoalHTML->renderBackToGoals();
                        $output .= $extraWatchGoalHTML->renderGoalsInsert((int) @ExtraWatchHelper::requestGet('id'), (int) @ExtraWatchHelper::requestGet('postid'));
                        ///
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "save":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $extraWatch->goal->saveGoal(ExtraWatchHelper::requestPost());
                        ///
                        $output .= $extraWatchGoalHTML->renderGoals(@$result);
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "edit":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchGoalHTML->renderBackToGoals();
                        $output .= $extraWatchGoalHTML->renderGoalEdit(@ExtraWatchHelper::requestGet('goalId'));
                        ///
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "delete":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $result = $extraWatch->goal->deleteGoal(@ExtraWatchHelper::requestGet('goalId'));
                        ///
                        $output .= $extraWatchGoalHTML->renderGoals(@$result);
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "enable":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $result = $extraWatch->goal->enableGoal(@ExtraWatchHelper::requestGet('goalId'));
                        ///
                        $output .= $extraWatchGoalHTML->renderGoals(@$result);
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "disable":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $result = $extraWatch->goal->disableGoal(@ExtraWatchHelper::requestGet('goalId'));
                        ///
                        $output .= $extraWatchGoalHTML->renderGoals(@$result);
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "export":
                        //$output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        //$output .= $extraWatchHTML->renderHeader($extraWatch);
                        $extraWatch->goal->exportGoals(ExtraWatchHelper::requestPost());
                        ///
                        $extraWatchGoalHTML->renderExportGoals(@$result);
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "import":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchGoalHTML->renderImportGoals();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "saveImportGoal":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $extraWatch->goal->saveImportGoal(ExtraWatchHelper::requestPost());
                        ///
                        $output .= $extraWatchGoalHTML->renderGoals(@$result);
                        $output .= $extraWatchHTML->renderFooter();
                    default:
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchGoalHTML->renderGoals(@$result);
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                }
                break;
            case "settings":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderSettings(@$result);
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "settingsSave":
                $result = $extraWatch->helper->saveSettings(ExtraWatchHelper::requestPost());
                ///
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderSettings(@$result);
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "resetData":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $result = $extraWatch->helper->resetData(ExtraWatchHelper::requestPost());
                ///
                $output .= $extraWatchHTML->renderResetData($result);
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "antiSpam":
                switch ($action) {
                    case "toggleBlocking":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $ip = @ExtraWatchHelper::requestGet('ip');
                        ///
                        $extraWatch->block->extrawatch_blockIpToggle($ip);
                        $output .= $extraWatchHTML->renderAntiSpam();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "save":
                        $numRecordsImported = $extraWatch->block->saveBadWordsList(ExtraWatchHelper::requestPost());
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchHTML->renderAntiSpam();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "antiSpamSave":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= nl2br($extraWatch->block->saveImportAntiSpamIp(ExtraWatchHelper::requestPost()));
                        $output .= $extraWatchHTML->renderAntiSpam();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    default:
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchHTML->renderAntiSpam();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                }
                break;
            case "status":
                if (!$extraWatch->config->isFree()) {
                    $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                    $output .= $extraWatchHTML->renderHeader($extraWatch);
                    $output .= $extraWatchHTML->renderStatus();
                    $output .= $extraWatchHTML->renderFooter();
                }
                break;
                /*			case "upgrade" :  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                     {
                         $output .= $extraWatchHTML->renderAdminStyles($extraWatch);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                         $output .= $extraWatchHTML->renderHeader($extraWatch);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                         $output .= $extraWatchHTML->renderUpgrade();  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                         break;  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                     }*/
            /*			case "upgrade" :  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                 {
                     $output .= $extraWatchHTML->renderAdminStyles($extraWatch);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                     $output .= $extraWatchHTML->renderHeader($extraWatch);  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                     $output .= $extraWatchHTML->renderUpgrade();  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                     break;  	 	    	    		  	 	  	 	  		 	 		    	 			 	   		  	 	 		 	 	   	      	  	 		 		 				 			 		  		    	 		 		  
                 }*/
            case "license":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderAdFreeLicense();
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "history":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderVisitsHistory();
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "flow":
                if (!$extraWatch->config->isFree()) {
                    $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                    $output .= $extraWatchHTML->renderHeader($extraWatch);
                    $output .= $extraWatchHTML->renderFlow();
                    $output .= $extraWatchHTML->renderFooter();
                }
                break;
            case "emails":
                switch ($action) {
                    case "save":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $result = $extraWatch->helper->saveEmailSettings(ExtraWatchHelper::requestPost());
                        ///
                        $output .= $extraWatchHTML->renderEmails();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "send":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $extraWatch->visit->sendNightlyEmails();
                        $output .= $extraWatchHTML->renderEmails();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    default:
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchHTML->renderEmails();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                }
                break;
            case "heatmap":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderHeatMap();
                $output .= $extraWatchHTML->renderFooter();
                return $output;
                break;
            case "clicks":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderClicks();
                $output .= $extraWatchHTML->renderFooter();
                return $output;
                break;
            case "downloads":
                $extraWatchDownloads = new ExtraWatchDownloads($extraWatch->database);
                $extraWatchDownloadsHTML = new ExtraWatchDownloadsHTML($extraWatch->database);
                switch ($action) {
                    case "addExtension":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloadsHTML->renderAddExtension();
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "saveAddExtension":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloads->addExtension(ExtraWatchHelper::requestPost('extname'));
                        ///
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        return $output;
                        break;
                    case "editExtension":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloadsHTML->renderEditExtension(ExtraWatchHelper::requestGet('eid'));
                        ///
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "saveEditExtension":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloads->updateExtension(ExtraWatchHelper::requestPost('eid'), ExtraWatchHelper::requestPost('extname'));
                        ///
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        return $output;
                        break;
                    case "deleteExtension":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloads->deleteExtension(ExtraWatchHelper::requestGet('co'));
                        ///
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "addFile":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloadsHTML->renderAddFile();
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "editFile":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloadsHTML->renderEditFile(ExtraWatchHelper::requestGet('did'));
                        ///
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    case "saveEditFile":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloads->updateFilePath(ExtraWatchHelper::requestPost('did'), ExtraWatchHelper::requestPost('filepathname'));
                        ///
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        return $output;
                        break;
                    case "saveAddFile":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloads->addFilePath(ExtraWatchHelper::requestPost('filepathname'));
                        ///
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        return $output;
                        break;
                    case "deleteFile":
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchDownloads->deleteFilePath(ExtraWatchHelper::requestGet('co'));
                        ///
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        break;
                    default:
                        $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                        $output .= $extraWatchHTML->renderHeader($extraWatch);
                        $output .= $extraWatchHTML->renderDownloads();
                        $output .= $extraWatchHTML->renderFooter();
                        return $output;
                        break;
                }
                break;
            case "location":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderLocation();
                $output .= $extraWatchHTML->renderFooter();
                break;
            case "stats":
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderStats();
                $output .= $extraWatchHTML->renderFooter();
                break;
            default:
                $output .= $extraWatchHTML->renderAdminStyles($extraWatch);
                $output .= $extraWatchHTML->renderHeader($extraWatch);
                $output .= $extraWatchHTML->renderBody($option);
                $output .= $extraWatchHTML->renderFooter();
                return $output;
                break;
        }
    }
    error_reporting($current_error_reporting);
    return $output;
}