Beispiel #1
0
function RemindPassword($Email)
{
    global $Db, $Logs, $nsProduct, $nsLang, $LangConfig, $Lang;
    $Query = "SELECT * FROM " . PFX . "_system_user WHERE EMAIL = ?";
    $User = $Db->Select($Query, false, $Email);
    if (!ValidId($User->ID)) {
        $Logs->Err($Lang['NoEmail']);
        return false;
    }
    $NewPass = substr(md5(uniqid(rand())), 0, 10);
    $Query = "UPDATE " . PFX . "_system_user SET PWD= '" . md5($NewPass) . "' WHERE ID = " . $User->ID;
    $Db->Query($Query);
    $Query = "SELECT LANG FROM " . PFX . "_system_user2lang WHERE PROD_ID=" . $nsProduct->ID . " AND UID = " . $User->ID;
    $ULang = $Db->ReturnValue($Query);
    if ($ULang && $ULang != $nsLang->CurrentLang) {
        $LConfig = $nsLang->ReturnConfig($ULang);
        $nsLang->TplInc("admin.remind", $ULang);
    } else {
        $LConfig = $LangConfig;
    }
    $Query = "SELECT FROM_EMAIL FROM " . PFX . "_tracker_config WHERE COMPANY_ID=0";
    $FromEmail = $Db->ReturnValue($Query);
    $FromEmail = $FromEmail ? $FromEmail : $Email;
    $Message = $Lang['MsgBody'];
    $Message = str_replace("{LOGIN}", $User->LOGIN, $Message);
    $Message = str_replace("{PASS}", $NewPass, $Message);
    $Message = str_replace("{LINK}", getURL("login", "", "admin"), $Message);
    $Subject = $Lang['MsgSubject'];
    $Headers = "From: {$FromEmail}\n";
    $Headers .= "Content-Type: text/plain; charset=" . $LConfig['charset'] . "\n";
    mail($Email, $Subject, $Message, $Headers);
    $Logs->Msg(str_replace("{EMAIL}", $Email, $Lang['PasswordSent']));
}
function GetCampTree($ParentId = 0, $CompId = false)
{
    if (!ValidId($ParentId)) {
        return false;
    }
    global $Db, $Lang, $nsUser;
    if ($CompId) {
        $Where = " AND COMPANY_ID={$CompId} ";
    } else {
        $Where = "";
    }
    $Query = "SELECT * FROM " . PFX . "_tracker_campaign WHERE PARENT_ID = {$ParentId} AND COMPANY_ID={$CompId} ORDER BY NAME ASC";
    $Sql = new Query($Query);
    $Sql->ReadSkinConfig();
    $CampArr = array();
    while ($Row = $Sql->Row()) {
        if ($Sql->Position > 0) {
            $Row->_UP = true;
        } else {
            $Row->_UP = false;
        }
        $Row->_DOWN = true;
        $Row->NAME = stripslashes($Row->NAME);
        $Row->DESCRIPTION = stripslashes($Row->DESCRIPTION);
        $Row->_STYLE = $Sql->_STYLE;
        $SubCnt = $Db->CNT(PFX . "_tracker_campaign", "PARENT_ID=" . $Row->ID);
        $Row->CHILD_COUNT = $SubCnt > 0 ? $SubCnt : 0;
        $Row->_UPLINK = getURL("campaign", "SortId=" . $Row->ID . "&SortTo=Up&ParentId=" . $Row->PARENT_ID);
        $Row->_DOWNLINK = getURL("campaign", "SortId=" . $Row->ID . "&SortTo=Down&ParentId=" . $Row->PARENT_ID);
        if ($nsUser->Columns->ROI || $nsUser->Columns->CONVERSIONS) {
            $Row->Report = new Paid_v2();
            $Row->Report->GrpId = $Row->ID;
            $Row->Report->CpId = $Row->COMPANY_ID;
            $Row->Report->ShowPerClick = true;
            $Row->Report->ShowTotalCost = true;
            $Row->Report->DisableAll();
            if ($nsUser->Columns->ROI) {
                $Row->Report->ShowROI = true;
            }
            if ($nsUser->Columns->CONVERSIONS) {
                $Row->Report->ShowActionConv = true;
            }
            if ($nsUser->Columns->CONVERSIONS) {
                $Row->Report->ShowSaleConv = true;
            }
            $Row->Report->Calculate();
            //Dump($Row->Report);
            $Row->CampStat =& $Row->Report->CampStat;
        }
        $Row->_MOVE = true;
        $CampArr[$Sql->Position] = $Row;
        $PrevRow =& $CampArr[$Sql->Position];
    }
    $PrevRow->_DOWN = false;
    if (count($CampArr) < 1) {
        return false;
    }
    //if (count($CampArr)==1) $PrevRow->_MOVE=false;
    return $CampArr;
}
function GetActions($PageId = false, $HostId = false)
{
    if (!ValidId($PageId) || !ValidId($HostId)) {
        return false;
    }
    $Actions = array();
    $Query = "SELECT * FROM " . PFX . "_tracker_visitor_action WHERE PAGE_ID = {$PageId} AND SITE_ID={$HostId}";
    $Sql = new Query($Query);
    while ($Row = $Sql->Row()) {
        $Actions[] = $Row;
    }
    if (count($Actions) > 0) {
        return $Actions;
    } else {
        return false;
    }
}
 function GetStat()
 {
     global $Logs;
     $StatArr = array();
     $GrpItems = array();
     $GrpList = "";
     $SelectStr = "";
     $JoinStr = "";
     $OrderStr = "";
     $GroupStr = "";
     $WhereStr = "";
     $StraightStr = "";
     $LimitStr = "";
     if (count($this->SelectArr) > 0) {
         $SelectStr = implode(", ", $this->SelectArr) . ", ";
     }
     if (count($this->JoinArr) > 0) {
         $JoinStr = implode(" \n", $this->JoinArr);
     }
     if (count($this->OrderArr) > 0) {
         $OrderStr = "ORDER BY " . implode(", ", $this->OrderArr);
     }
     if (count($this->GroupArr) > 0) {
         $GroupStr = "GROUP BY " . implode(", ", $this->GroupArr);
     }
     if (count($this->WhereArr) > 0) {
         $WhereStr = "WHERE " . implode(" AND ", $this->WhereArr);
     }
     if ($this->UseStraight) {
         $StraightStr = "STRAIGHT_JOIN";
     }
     ///////////////////////////////////////////
     if ($this->ShowVisitors) {
         $Query = "\n\t\t\t\tSELECT  {$StraightStr}\n\t\t\t\t\t{$SelectStr}\n\t\t\t\t\tCOUNT(S_LOG.ID) CNT,\n\t\t\t\t\tCOUNT(DISTINCT S_LOG.VISITOR_ID) UNI\n\t\t\t\t\t# выбираем точки входа из лога\n\t\t\t\t\tFROM " . PFX . "_tracker_" . $this->CpId . "_stat_log S_LOG\n\t\t\t\t\t# точки входа определяются путями по сайту\n\t\t\t\t\t# вероятно, с наличием referer set \n\t\t\t\t\t#JOIN " . PFX . "_tracker_stat_path S_PATH\n\t\t\t\t\t#\tON S_PATH.LOG_ID=S_LOG.ID\n\t\t\t\t\tINNER JOIN " . PFX . "_tracker_" . $this->CpId . "_stat_split S_SPLIT\n\t\t\t\t\t\tON S_SPLIT.LOG_ID=S_LOG.ID\n\t\t\t\t{$JoinStr}\n\t\t\t\t{$WhereStr}\n\t\t\t\t{$GroupStr}\n\t\t\t\t{$OrderStr}\n\t\t\t\t{$LimitStr}\n\t\t\t";
         //echo HLSQL($Query);
         $Sql = new Query($Query);
         while ($Row = $Sql->Row()) {
             if ($this->GrpFld) {
                 $Tmp = $this->GrpFld;
                 $Grp = $Row->{$Tmp};
             } else {
                 $Grp = $Sql->Position;
             }
             if ($this->GrpName) {
                 $Name = $this->GrpName;
                 $StatArr[$Grp]['Name'] = $Row->{$Name};
             }
             $StatArr[$Grp]['CntClick'] = $Row->CNT;
             $StatArr[$Grp]['UniClick'] = $Row->UNI;
             $StatArr[$Grp]['CntAction'] = 0;
             $StatArr[$Grp]['UniAction'] = 0;
             $StatArr[$Grp]['CntSale'] = 0;
             $StatArr[$Grp]['UniSale'] = 0;
             $StatArr[$Grp]['Income'] = 0;
             $StatArr[$Grp]['Obj'] = $Row;
             if (count($this->GroupArr)) {
                 $GrpItems[] = $Grp;
             }
         }
         if (count($GrpItems) > 0 && !ValidId($this->GroupArr[0])) {
             $GrpList = "AND " . $this->GroupArr[0] . " IN (" . implode(",", $GrpItems) . ")";
         }
     }
     ///////////////////////////////////////////
     if ($this->ShowActions) {
         $Query = "\n\t\t\t\tSELECT  {$StraightStr}\n\t\t\t\t\t{$SelectStr}\n\t\t\t\t\tCOUNT(S_LOG.ID) CNT,\n\t\t\t\t\tCOUNT(DISTINCT S_LOG.VISITOR_ID) UNI\n\t\t\t\t\t# выбираем точки входа из лога\n\t\t\t\t\tFROM " . PFX . "_tracker_" . $this->CpId . "_stat_log S_LOG\n\t\t\t\t\t# присоединяем ту ветку, которая произошла от S_LOG.ID\n\t\t\t\t\t# по принципу, что в COOKIE_LOG хранится этот самый ID\n\t\t\t\t\tINNER JOIN " . PFX . "_tracker_" . $this->CpId . "_stat_log NODE\n\t\t\t\t\t\tON NODE.COOKIE_LOG=S_LOG.ID\n\t\t\t\t\t# присоединяем таблицу действий\n\t\t\t\t\t# только к выбранным веткам\n\t\t\t\t\tINNER JOIN " . PFX . "_tracker_" . $this->CpId . "_stat_action S_ACTION\n\t\t\t\t\t\tON S_ACTION.LOG_ID=NODE.ID\n\t\t\t\t\t# точки входа определяются путями по сайту\n\t\t\t\t\t# вероятно, с наличием referer set \n\t\t\t\t\t#JOIN " . PFX . "_tracker_stat_path S_PATH\n\t\t\t\t\t#\tON S_PATH.LOG_ID=S_LOG.ID\n\t\t\t\t\tINNER JOIN " . PFX . "_tracker_" . $this->CpId . "_stat_split S_SPLIT\n\t\t\t\t\t\tON S_SPLIT.LOG_ID=S_LOG.ID\n\t\t\t\t{$JoinStr}\n\t\t\t\t{$WhereStr}\n\t\t\t\t{$GrpList}\n\t\t\t\t{$GroupStr}\n\t\t\t\t{$OrderStr}\n\t\t\t\t{$LimitStr}\n\t\t\t";
         //echo HLSQL($Query);
         $Sql = new Query($Query);
         while ($Row = $Sql->Row()) {
             if ($this->GrpFld) {
                 $Tmp = $this->GrpFld;
                 $Grp = $Row->{$Tmp};
             } else {
                 $Grp = $Sql->Position;
             }
             if (!isset($StatArr[$Grp]) && $this->ShowVisitors) {
                 continue;
             }
             if (!$this->ShowVisitors) {
                 if ($this->GrpName) {
                     $Name = $this->GrpName;
                     $StatArr[$Grp]['Name'] = $Row->{$Name};
                 }
             }
             $StatArr[$Grp]['CntAction'] = $Row->CNT;
             $StatArr[$Grp]['UniAction'] = $Row->UNI;
             $StatArr[$Grp]['Obj'] = $Row;
         }
     }
     ///////////////////////////////////////////
     if ($this->ShowSales) {
         $Query = "\n\t\t\t\tSELECT  {$StraightStr}\n\t\t\t\t\t{$SelectStr}\n\t\t\t\t\tCOUNT(S_LOG.ID) CNT,\n\t\t\t\t\tCOUNT(DISTINCT S_LOG.VISITOR_ID) UNI,\n\t\t\t\t\tSUM(S_SALE.COST) AS SALE_SUM\n\t\t\t\t\tFROM " . PFX . "_tracker_" . $this->CpId . "_stat_log S_LOG\n\t\t\t\t\tINNER JOIN " . PFX . "_tracker_" . $this->CpId . "_stat_log NODE\n\t\t\t\t\t\tON NODE.COOKIE_LOG=S_LOG.ID\n\t\t\t\t\tINNER JOIN " . PFX . "_tracker_" . $this->CpId . "_stat_sale S_SALE\n\t\t\t\t\t\tON S_SALE.LOG_ID=NODE.ID\n\t\t\t\t\t#JOIN " . PFX . "_tracker_stat_path S_PATH\n\t\t\t\t\t#\tON S_PATH.LOG_ID=S_LOG.ID\n\t\t\t\t\tINNER JOIN " . PFX . "_tracker_" . $this->CpId . "_stat_split S_SPLIT\n\t\t\t\t\t\tON S_SPLIT.LOG_ID=S_LOG.ID\n\t\t\t\t{$JoinStr}\n\t\t\t\t{$WhereStr}\n\t\t\t\t{$GrpList}\n\t\t\t\t{$GroupStr}\n\t\t\t\t{$OrderStr}\n\t\t\t\t{$LimitStr}\n\t\t\t";
         //echo HLSQL($Query);
         $Sql = new Query($Query);
         while ($Row = $Sql->Row()) {
             if ($this->GrpFld) {
                 $Tmp = $this->GrpFld;
                 $Grp = $Row->{$Tmp};
             } else {
                 $Grp = $Sql->Position;
             }
             if (!isset($StatArr[$Grp]) && $this->ShowVisitors) {
                 continue;
             }
             if (!$this->ShowVisitors) {
                 if ($this->GrpName) {
                     $Name = $this->GrpName;
                     $StatArr[$Grp]['Name'] = $Row->{$Name};
                 }
             }
             $StatArr[$Grp]['CntSale'] = $Row->CNT;
             $StatArr[$Grp]['UniSale'] = $Row->UNI;
             $StatArr[$Grp]['Income'] = $Row->SALE_SUM;
             $StatArr[$Grp]['Obj'] = $Row;
         }
     }
     foreach ($StatArr as $i => $Row) {
         if ($this->ShowActionConv) {
             $StatArr[$i]['ActionConv'] = $this->GetRatio($StatArr[$i]['UniClick'], $StatArr[$i]['UniAction']);
         }
         if ($this->ShowSaleConv) {
             $StatArr[$i]['SaleConv'] = $this->GetRatio($StatArr[$i]['UniClick'], $StatArr[$i]['UniSale']);
         }
         if (!$StatArr[$i]['Income']) {
             $StatArr[$i]['Income'] = 0;
         }
     }
     if (!ValidArr($StatArr) || count($StatArr) == 0) {
         return false;
     }
     if (count($this->GroupArr) < 1) {
         if (!isset($Grp)) {
             $Grp = 0;
         }
         return $StatArr[$Grp];
     }
     return $StatArr;
 }
Beispiel #5
0
function GetUserQuery($Id = false)
{
    global $nsUser;
    $Query = "\n\t\tSELECT \n\t\t\tSU.*,\n\t\t\tTA.SUPER_USER, TA.ID AS MERCH_ID, TA.COMPANY_ID, TA.DEMO, \n\t\t\tUNIX_TIMESTAMP(TA.MODIFIED) AS MODIFIED,\n\t\t\tTC.NAME AS COMP_NAME,\n\t\t\tUC.HITS, UC.SALES, UC.ACTIONS, UC.CLICKS, UC.ROI, UC.CONVERSIONS, UC.GRAPHS,\n\t\t\tUS.ADVANCED_MODE, US.HELP_MODE, US.TIMEZONE, US.DEF_PATH_ORDER,\n\t\t\tUS.PAGE_ENCODING\n\t\t\tFROM " . PFX . "_system_user SU\n\t\t\t\tINNER JOIN " . PFX . "_tracker_user TA\n\t\t\t\t\tON TA.USER_ID= SU.ID\n\t\t\t\tLEFT JOIN " . PFX . "_tracker_client TC\n\t\t\t\t\tON TC.ID = TA.COMPANY_ID\n\t\t\t\tLEFT JOIN " . PFX . "_tracker_user_column UC\n\t\t\t\t\tON UC.USER_ID=SU.ID\n\t\t\t\tLEFT JOIN " . PFX . "_tracker_user_settings US\n\t\t\t\t\tON US.USER_ID=SU.ID\n\t";
    if (ValidId($Id)) {
        $Query .= "WHERE SU.ID = {$Id}";
    }
    if (!ValidId($Id) && !$nsUser->ADMIN) {
        $Query .= "WHERE TA.COMPANY_ID=" . $nsUser->COMPANY_ID;
    }
    return $Query;
}
<tr><td class=SubmitLeftTd>
</td><td class=SubmitRightTd>
<input type=submit value="<?php 
echo $Lang['Save'];
?>
">
</td></tr>

</table>
</form>


</td><td width=50% valign=top>

<?php 
if (ValidId($VisGrp->ID)) {
    ?>


<div class=ListDiv>

<table class=CaptionTable>
<tr><td class=CaptionTd>
<?php 
    echo $Lang['IpList'];
    ?>
</td></tr>
</table>


<table class=ListTable2>
function UpdateHost($Id, &$Arr)
{
    global $Db, $nsProduct, $Logs, $Lang, $EditId, $nsUser;
    extract($Arr);
    if (ValidVar($UseHosts) != 1) {
        $UseHosts = 0;
    }
    if (ValidVar($ShowTitles) != 1) {
        $ShowTitles = 0;
    }
    if (!$Host) {
        $ErrArr['Host'] = $Lang['MustFill'];
    }
    $Host = ToLower($Host);
    $Check = @parse_url($Host);
    if (ValidArr($Check) && ValidVar($Check['scheme'])) {
        $Host = str_replace($Check['scheme'] . "://", "", $Host);
    }
    //$Host=str_replace("http://", "", $Host);
    //if (CheckMiscSymb($Host, "\-\.")) $ErrArr['Host']=$Lang['SymbErr'];
    if (isset($ErrArr)) {
        $Logs->Msg($Lang['FormErr']);
        $GLOBALS['ErrArr'] = $ErrArr;
        return;
    }
    $Query = "UPDATE " . PFX . "_tracker_site SET HOST = ?, USE_HOSTS='{$UseHosts}', COOKIE_DOMAIN=? WHERE ID = {$Id}";
    $Db->Query($Query, $Host, $CookieDomain);
    $CheckId = CheckSiteWatch($Id, $nsUser->UserId());
    $SiteWatch = ValidId($CheckId);
    if (ValidVar($Watch) == 1 && !$SiteWatch) {
        SetSiteWatch($Id, $nsUser->UserId());
    }
    if (ValidVar($Watch) != 1 && $SiteWatch) {
        RemoveSiteWatch($Id, $nsUser->UserId());
    }
    $nsProduct->Redir("company", "EditId={$EditId}&HostId={$Id}&RUpd=1");
}
function GetUserQuery($Id = false)
{
    $Query = "\n\t\tSELECT \n\t\t\tSU.*,\n\t\t\tTA.SUPER_ADMIN, TA.ID AS AGENT_ID, TA.DEMO, \n\t\t\tUNIX_TIMESTAMP(TA.MODIFIED) AS MODIFIED,\n\t\t\tUC.HITS, UC.SALES, UC.ACTIONS, UC.CLICKS, UC.ROI, UC.CONVERSIONS, UC.GRAPHS,\n\t\t\tUS.ADVANCED_MODE, US.HELP_MODE, US.TIMEZONE, US.DEF_PATH_ORDER,\n\t\t\tUS.PAGE_ENCODING\n\t\t\tFROM " . PFX . "_tracker_admin TA\n\t\t\t\tINNER JOIN " . PFX . "_system_user SU\n\t\t\t\t\tON SU.ID = TA.USER_ID\n\t\t\t\tLEFT JOIN " . PFX . "_tracker_user_column UC\n\t\t\t\t\tON UC.USER_ID=SU.ID\n\t\t\t\tLEFT JOIN " . PFX . "_tracker_user_settings US\n\t\t\t\t\tON US.USER_ID=SU.ID\n\t";
    if (ValidId($Id)) {
        $Query .= "WHERE SU.ID = {$Id}";
    }
    return $Query;
}
	<?php 
    GetFORM(false, false, false, "ID=\"REMOVE_FORM\"");
    ?>
	<?php 
    if (count($ClientsArr > 0)) {
        ?>
		<tr>
		<input type=hidden name=DoClear value=1>
		<td><?php 
        echo $Lang['ClearStat'];
        ?>
</td>
		</tr>
		<?php 
        if (!ValidId($CurrentCompany->ID) || $CurrentCompany->SITE_CNT > 0) {
            ?>
			<tr><td>
			<?php 
            if ($nsUser->ADMIN && $nsProduct->LICENSE != 2) {
                ?>
				<select name=ForClient onchange="SwitchSites(this.value);">
				<option value="all" style="background:#d0d0d0;"><?php 
                echo $Lang['DeleteAll'];
                ?>
</option>
				<?php 
                foreach ($ClientsArr as $ClientId => $ClArr) {
                    ?>
					<option value=<?php 
                    echo $ClientId;
<?php 
echo $TableCaption;
?>
</td></tr>
</table>

<table  class=FormTable>
<?php 
PostFORM(false, false, false, "ID=\"EDIT_FORM\"");
?>
<input type=hidden name="VisId" value="<?php 
echo $VisId;
?>
">
<input type=hidden name="AlreadySaved" value="<?php 
echo ValidId($Visitor->CLIENT_VIS_ID) ? "1" : "0";
?>
" Id="AlreadySaved">
<input type=hidden id="VisNewIp" name="NewIp" value="">

<tr><td class=FormLeftTd>
<?php 
echo $Lang['LastAgent'];
?>
</td><td class=FormRightTd>
<a href="<?php 
echo getURL("natural_constructor", "CpId={$CpId}&WhereArr[0][Mode]=Agent&WhereArr[0][Id]=" . $Visitor->USER_AGENT_ID . "&WhereArr[0][OrderTo]=DESC&WhereArr[0][OrderBy]=CNT&GroupBy=Vis&WhereArr[1][OrderTo]=DESC&WhereArr[1][OrderBy]=CNT&ShowAll=1", "report");
?>
" title="<?php 
echo $Lang['OtherWithAgent'];
?>
$ProgPath[1]['Url'] = getURL("incampaign", "CampId={$CampId}", "admin");
$Get = "CampId={$CampId}&";
if (isset($_GET['SortId'])) {
    $SortId = $_GET['SortId'];
}
if (isset($_GET['SortTo'])) {
    $SortTo = $_GET['SortTo'];
}
if (isset($_GET['DeleteId'])) {
    $DeleteId = $_GET['DeleteId'];
}
UserColumns();
/////////////////////////////////////////////
///////// call any process functions
if (!$nsUser->DEMO) {
    if (ValidId($SortId) && isset($SortTo)) {
        SortTable(PFX . "_tracker_camp_piece", false, $SortId, $SortTo, "CAMPAIGN_ID={$CampId}");
    }
}
$PathArr = false;
$PathArr = GrpListPath($CampId);
if (count($PathArr) > 1) {
    $PathArr = array_reverse($PathArr);
} else {
    $PathArr = false;
}
/////////////////////////////////////////////
///////// display section here
$SubMenu[0]['Name'] = $Lang['BackToCamp'];
$SubMenu[0]['Link'] = getURL("campaign");
$SubMenu[1]['Name'] = $Lang['AddNewCamp'];
function UpdateAction($Arr, $Id = false)
{
    global $Db, $Logs, $nsProduct, $HostsArr, $SiteId, $CpId, $Site, $Lang;
    $TPath = "";
    $ActionPath = "";
    $CodeAction = 0;
    $SiteHostId = 0;
    extract($Arr);
    if (!ValidVar($Name)) {
        $Logs->Err($Lang['MustFillName']);
        return;
    }
    if (!ValidVar($Templ) && ValidVar($RedirOnly) != 2) {
        $Logs->Err($Lang['WhatIsAction']);
        return;
    }
    if (ValidVar($RedirOnly) == 1 && !ValidVar($RedirUrl) && !ValidVar($Dynamic)) {
        $Logs->Err($Lang['RedirUrlRequired']);
        return;
    }
    if (!ValidVar($Active)) {
        $Active = 0;
    }
    if (ValidVar($RedirOnly) == 2) {
        $CodeAction = 1;
    }
    if (!$CodeAction) {
        $TmpArr = explode("{a}", $Templ);
        if (ValidArr($TmpArr) && count($TmpArr) > 2) {
            $Logs->Err($Lang['OnlyOneActionTarget']);
            return;
        }
        $NoPage = false;
        $TArr = @parse_url($Templ);
        if (!$TArr) {
            $Logs->Err($Lang['UnableParseTemplate']);
            return;
        }
        if (isset($TArr['path']) && !isset($TArr['host'])) {
            //$Path=ToLower($TArr['path']);
            for ($i = 0; $i < count($HostsArr); $i++) {
                if (strpos($Path, $HostsArr[$i]) !== false) {
                    $Path = str_replace($HostsArr[$i], "", $Path);
                    $TArr['host'] = $HostsArr[$i];
                    $TArr['path'] = $Path;
                    break;
                }
            }
        }
        if (count($TArr) == 1 && substr(ValidVar($TArr['path']), 0, 1) != "/") {
            if (isset($TArr['path']) && !isset($TArr['query'])) {
                $TArr['query'] = $TArr['path'];
            }
            unset($TArr['path']);
            $NoPage = 1;
        }
        if (isset($TArr['fragment'])) {
            unset($TArr['fragment']);
        }
        if (!$NoPage) {
            if (!isset($TArr['host'])) {
                $TArr['host'] = $Site->HOST;
            }
            $TArr['host'] = ToLower($TArr['host']);
            //if (isset($TArr['path'])&&isset($TArr['query'])&&!isset($TArr['host'])) $TArr['host']=$Site->HOST;
            if (isset($TArr['path']) && substr($TArr['path'], 0, 1) != "/") {
                $TArr['path'] = "/" . $TArr['path'];
            }
            if (!ValidVar($TArr['host']) || !in_array($TArr['host'], $HostsArr)) {
                //$Logs->Err($Lang['InvalidDomain']);return;
                $Query = "INSERT INTO " . PFX . "_tracker_site_host (HOST, SITE_ID) VALUES (?, " . $Site->ID . ")";
                $Db->Query($Query, $TArr['host']);
                $NewHostId = $Db->LastInsertId;
                $HostsArr[] = $TArr['host'];
                $Site->Hosts[$NewHostId] = $TArr['host'];
            }
            if (!ValidVar($TArr['path'])) {
                $TArr['path'] = "/";
            }
            if (strpos($TArr['path'], "*") === false && strpos($TArr['path'], "{a}") === false && strpos($TArr['path'], ".") === false && $TArr['path'] != "/" && substr($TArr['path'], -1) != "/") {
                $TArr['path'] .= "/";
            }
            extract($TArr);
            foreach ($Site->Hosts as $SHId => $SHost) {
                if ($host == $SHost) {
                    $SiteHostId = $SHId;
                }
            }
            if (strpos($path, "*") === false && strpos($path, "{a}") === false) {
                $Query = "SELECT ID FROM " . PFX . "_tracker_site_page WHERE SITE_ID={$SiteId} AND PATH='{$path}'";
                $PageId = $Db->ReturnValue($Query);
                if (!ValidId($PageId)) {
                    $Query = "INSERT INTO " . PFX . "_tracker_site_page (SITE_ID, PATH) VALUES ({$SiteId}, '{$path}')";
                    $Db->Query($Query);
                    $PageId = $Db->LastInsertId;
                }
                $ActionPath = $path;
                if (!ValidId($PageId)) {
                    $Logs->Err($Lang['UnableCreatePage']);
                    return;
                }
            } else {
                if (ValidVar($RedirOnly)) {
                    $Logs->Err($Lang['NoRedirWithPageTemp']);
                    return;
                }
                $PageId = 0;
                $TPath = $path;
            }
            if (ValidVar($query)) {
                $query = "?" . $query;
            }
        } else {
            $PageId = 0;
            $query = $Templ;
            if (strpos($query, "?") === false || strpos($query, "?") != 0) {
                $query = "?" . $query;
            }
        }
        if (ValidVar($RedirOnly) != 1 && ValidVar($RedirOnly) != 2) {
            $RedirOnly = 0;
        }
        if (!ValidVar($RedirUrl)) {
            $RedirUrl = "";
        }
        if (!ValidVar($ItemVar)) {
            $ItemVar = "";
        }
        $RedirUrl = urlencode($RedirUrl);
        $LogInfo = "";
    } else {
        $PageId = 0;
        $query = "";
        $RedirUrl = "";
        $TPath = "";
        $ItemVar = "";
        $RedirOnly = 0;
    }
    if (!$Id) {
        $Query = "INSERT INTO " . PFX . "_tracker_visitor_action (SITE_ID, PAGE_ID, NAME, QUERY, PATH, REDIRECT_URL, REDIRECT_CATCH, ITEM_VAR, ACTIVE, CODE_ACTION, SITE_HOST_ID) VALUES ({$SiteId}, {$PageId}, '{$Name}', '{$query}', '{$TPath}', '{$RedirUrl}', '{$RedirOnly}', '{$ItemVar}', '{$Active}', '{$CodeAction}', '{$SiteHostId}')";
        $Db->Query($Query);
        $EditId = $Db->LastInsertId;
        $LogInfo = "&RCrt=1";
    } else {
        $Query = "UPDATE " . PFX . "_tracker_visitor_action SET PAGE_ID={$PageId}, NAME='{$Name}', QUERY='{$query}', PATH='{$TPath}', REDIRECT_URL='{$RedirUrl}', REDIRECT_CATCH='{$RedirOnly}', ITEM_VAR='{$ItemVar}', ACTIVE='{$Active}', CODE_ACTION='{$CodeAction}', SITE_HOST_ID='{$SiteHostId}' WHERE ID = {$Id} AND SITE_ID={$SiteId}";
        $Db->Query($Query);
        $EditId = $Id;
        $LogInfo = "&RUpd=1";
    }
    $WrRes = true;
    $WrErr = false;
    if (!$CodeAction) {
        $UseStore = $Db->ReturnValue("SELECT USE_STORE FROM " . PFX . "_tracker_config WHERE COMPANY_ID=0");
        if ($RedirOnly && $UseStore) {
            $ActionArr['ID'] = $EditId;
            $ActionArr['PAGE_ID'] = $PageId;
            $ActionArr['SITE_ID'] = $SiteId;
            $ActionArr['REDIRECT_URL'] = $RedirUrl;
            $ActionArr['PATH'] = $ActionPath;
            $WrRes = false;
            $WrRes = SaveActionToFile($ActionArr, "redir_action.nodb");
            //if (!$WrRes) $WrErr="&WrErr=1";
        }
    }
    $nsProduct->Redir("actions", "CpId={$CpId}&SiteId={$SiteId}&EditId={$EditId}" . $WrErr . $LogInfo);
}
//// new campaign
if (isset($EditId) && $EditId == "new") {
    if (!isset($EditArr)) {
        $EditArr['Name'] = "";
        $EditArr['Descr'] = "";
        $EditArr['Company'] = 0;
    }
    $EditArr['Name'] = htmlspecialchars($EditArr['Name']);
    $EditArr['Descr'] = htmlspecialchars($EditArr['Descr']);
    if (!isset($ParentId) || !ValidId($ParentId)) {
        $ParentId = 0;
    }
    $TableCaption = $Lang['CaptionNew'];
    $SubMenu[0]['Name'] = $Lang['BackToList'];
    $SubMenu[0]['Link'] = getURL("campaign");
    if (!ValidId($CompId)) {
        $CompArr = GetCompanies();
        $SelectComp = true;
    } else {
        $SelectComp = false;
    }
    include $nsTemplate->Inc("admin.campaign_edit");
}
/////////////////////////////////////////////
///////// process functions here
function CreateCampaign(&$Arr, $ParentId = false)
{
    global $Db, $Lang, $nsProduct, $Logs, $CompId;
    extract($Arr);
    if (!$Name) {
        $ErrArr['Name'] = $Lang['MustFill'];

<tr><td class=FormLeftTd>
<?php 
echo $Lang['BoundHosts'];
?>
</td><td class=FormRightTd>
<input type=checkbox name="EditArr[UseHosts]" value=1 <?php 
echo $EditArr['UseHosts'] == 1 ? "checked" : "";
?>
>
</td></tr>


<?php 
if (ValidId($EditId) && $nsUser->ADMIN) {
    ?>
<tr><td class=FormLeftTd>
<?php 
    echo $Lang['StShow1stPage'];
    ?>
</td><td class=FormRightTd>
<input type=checkbox name="EditArr[Watch]" value=1 <?php 
    echo $EditArr['Watch'] == 1 ? "checked" : "";
    ?>
>
</td></tr>
<?php 
}
?>
function CheckKeyword($Keyword = false)
{
    if (!$Keyword) {
        return false;
    }
    global $Db;
    $Keyword = addslashes($Keyword);
    $Query = "SELECT ID FROM " . PFX . "_tracker_keyword WHERE KEYWORD = '{$Keyword}'";
    $CheckId = $Db->ReturnValue($Query);
    if (ValidId($CheckId)) {
        return $CheckId;
    }
    $Query = "INSERT INTO " . PFX . "_tracker_keyword (KEYWORD) VALUES ('{$Keyword}')";
    $Db->Query($Query);
    return $Db->LastInsertId;
}
<tr><td class=SubmitLeftTd>
</td><td class=SubmitRightTd>
<input type=submit value="<?php 
echo $Lang['Save'];
?>
">
</td></tr>
</table>

</form>




<?php 
if (ValidId($EditId) && count($MoveArr) > 0) {
    include $nsTemplate->Inc("inc/move_camp_piece");
}
?>


</td>
<td><p><IMG SRC="<?php 
echo FileLink("images/0.gif");
?>
" WIDTH="10" HEIGHT="1" BORDER="0" ALT=""></p></td>
<td width=50% valign=top>

<?php 
if ($ShowCosts) {
    ?>
Beispiel #17
0
function GetCurrentCompany($Id = false)
{
    if (!ValidId($Id)) {
        return false;
    }
    global $Db, $nsUser, $nsProduct;
    $Company = $Db->Select("SELECT * FROM " . PFX . "_tracker_client WHERE ID = {$Id}");
    if (!$Company) {
        $nsUser->SetCookie("CompId", '', time() - 1000, "/");
        $nsProduct->Redir("default", "", "admin");
    }
    $Company->SITE_CNT = $Db->ReturnValue("SELECT COUNT(*) FROM " . PFX . "_tracker_site WHERE COMPANY_ID={$Id}");
    $Company->CUR[0] = $Company->CURRENCY;
    $Company->CUR[1] = $Company->CURRENCY_POSITION;
    return $Company;
}
    if (ValidArr($AddToMy) && $Mode == "actions") {
        AddToMy($AddToMy, "ACTION_ID");
    }
    if (ValidId($MyDeleteId) && $Mode == "actions") {
        DeleteFromMy($MyDeleteId, "ACTION_ID");
    }
    if (ValidArr($AddToMy) && $Mode == "action_items") {
        AddToMy($AddToMy, "ACTION_ITEM_ID");
    }
    if (ValidId($MyDeleteId) && $Mode == "action_items") {
        DeleteFromMy($MyDeleteId, "ACTION_ITEM_ID");
    }
    if (ValidArr($AddToMy) && $Mode == "sale_items") {
        AddToMy($AddToMy, "SALE_ITEM_ID");
    }
    if (ValidId($MyDeleteId) && $Mode == "sale_items") {
        DeleteFromMy($MyDeleteId, "SALE_ITEM_ID");
    }
}
/////////////////////////////////////////////
///////// display section here
///////////////////////
if ($Mode == "list") {
    $Query = "\n\t\tSELECT UR.*, C.NAME AS COMP_NAME\n\t\tFROM " . PFX . "_tracker_watch W\n\t\tINNER JOIN  " . PFX . "_tracker_user_report UR\n\t\t\tON UR.ID=W.REPORT_ID\n\t\tINNER JOIN " . PFX . "_tracker_client C\n\t\t\tON C.ID=UR.COMPANY_ID\n\t\tWHERE W.USER_ID=" . $nsUser->UserId() . " \n\t\tORDER BY C.NAME, UR.NAME\n\t";
    $Sql = new Query($Query);
    $Sql->ReadSkinConfig();
    $UserReports = array();
    while ($Row = $Sql->Row()) {
        $Row->_STYLE = $Sql->_STYLE;
        $Row->NAME = stripslashes($Row->NAME);
        if ($Row->CONST_TYPE == "NATURAL") {
Beispiel #19
0
function DeleteSplit($CpId, $Id, $NoRedir = false)
{
    global $Db, $Logs, $nsProduct, $Lang, $CompId, $GrpId;
    $SplitId = $Db->ReturnValue("SELECT ID FROM " . PFX . "_tracker_split_test WHERE SUB_ID={$Id}");
    $Query = "DELETE FROM " . PFX . "_tracker_camp_piece WHERE ID = {$Id}";
    $Db->Query($Query);
    $Query = "DELETE FROM " . PFX . "_tracker_split_test WHERE SUB_ID = {$Id}";
    $Db->Query($Query);
    $Query = "DELETE FROM " . PFX . "_tracker_split_page WHERE SPLIT_ID = {$SplitId}";
    $Db->Query($Query);
    DeleteSplitStat($CpId, $Id);
    if (!$NoRedir && !$GrpId) {
        $nsProduct->Redir("split_list", "CompId={$CompId}&RDlt=1");
    }
    if (!$NoRedir && ValidId($GrpId) && $GrpId > 0) {
        $nsProduct->Redir("incampaign", "CampId={$GrpId}&RDlt=1");
    }
}
<?php 
    for ($i = 0; $i < count($SaleItemsList); $i++) {
        $Row = $SaleItemsList[$i];
        ?>

	<tr>
	<td class=<?php 
        echo $Row->_STYLE;
        ?>
>
	<table width=100% cellpadding=0 cellspacing=0 border=0>
	<tr>

	<td width=25 nowrap>
	<?php 
        if (!ValidId($Row->WATCH_ID)) {
            ?>
		<input type=checkbox value=1 name="AddToMy[<?php 
            echo $Row->ID;
            ?>
]">
	<?php 
        }
        ?>
	</td>

	<td >
	<B style="color:#000000"><?php 
        echo $Row->NAME;
        ?>
</B>
}
if (ValidId($GrpId)) {
    $WhereArr[0]['Mode'] = "Grp";
    $WhereArr[0]['Id'] = $GrpId;
    $WhereArr[0]['OrderBy'] = "CNT";
    $WhereArr[0]['OrderTo'] = "DESC";
    $Query = "\n\t\tSELECT C.COMPANY_ID\n\t\t\tFROM " . PFX . "_tracker_campaign C\n\t\t\tWHERE C.ID={$GrpId}\n\t";
    $CpId = $Db->ReturnValue($Query);
}
if (!ValidId($CpId) && !$nsUser->ADMIN) {
    $nsProduct->Redir("default", "", "admin");
}
if ($CpId) {
    $Client = GetCompany($CpId);
}
if (!ValidId($Client->ID) && !$nsUser->ADMIN) {
    $nsProduct->Redir("default", "", "admin");
}
if (!$CpId) {
    $CpId = 0;
}
$GroupByForm = array();
$WhereForm = array();
UserColumns();
$Report = new Paid_v2();
if ($nsUser->Columns->CLICKS) {
    $Report->ShowVisitors = true;
}
if ($nsUser->Columns->ACTIONS) {
    $Report->ShowActions = true;
}
        $EditArr['Name'] = "";
        $EditArr['Ban'] = 0;
        $EditArr['Regular'] = "";
        $EditArr['Regular2'] = "";
    }
    if (!ValidVar($EditArr['Ban'])) {
        $EditArr['Ban'] = 0;
    }
    $TableCaption = $Lang['CaptionNew'];
    $SubMenu[0]['Name'] = $Lang['BackToList'];
    $SubMenu[0]['Link'] = getURL("user_agent");
    $PageTitle = $Lang['AddNewGrp'];
    include $nsTemplate->Inc("admin.agent_grp");
}
//// edit grp
if ($Mode == "Grp" && ValidId($EditId)) {
    $Query = "SELECT * FROM " . PFX . "_tracker_visitor_agent_grp WHERE ID = {$EditId}";
    $EditGrp = $Db->Select($Query);
    $ProgPath[2]['Name'] = $EditGrp->NAME;
    $ProgPath[2]['Url'] = getURL("user_agent", "Mode=Grp&EditId={$EditId}", "admin");
    if (!ValidArr($EditArr)) {
        $EditArr['Name'] = $EditGrp->NAME;
        $EditArr['Ban'] = $EditGrp->BAN;
        $EditArr['Regular'] = $EditGrp->REGULAR_EXPRESSION;
        $EditArr['Regular2'] = $EditGrp->REGULAR_EXPRESSION2;
    }
    if (!ValidVar($EditArr['Ban'])) {
        $EditArr['Ban'] = 0;
    }
    $TableCaption = $Lang['CaptionEdit'] . $EditGrp->NAME;
    $PageTitle = $EditGrp->NAME;
    include $nsTemplate->Inc("inc/move_camp_piece");
}
?>


</td>
<td width=10><p><IMG SRC="<?php 
echo FileLink("images/0.gif");
?>
" WIDTH="10" HEIGHT="1" BORDER="0" ALT=""></p></td>

<td width=50% valign=top>


<?php 
if (ValidId($SplitTest->ID)) {
    ?>


<table class=CaptionTable>
<tr><td class=CaptionTd>
<?php 
    echo $Lang['PagesList'];
    ?>
</td></tr>
</table>
<div class=ListDiv2>

<?php 
    if (ValidArr($PagesArr)) {
        ?>
Beispiel #24
0
" width="9" height="27" border="0"></p>
		</td></tr>
		</table>
	</td>

	<?php 
    }
}
?>
	
<table width=100% cellpadding=0 cellspacing=0 border=0 height=27>
<tr>


<?php 
if (ValidId($CompId)) {
    MenuTab($Lang['MPaidAdv'], getURL("paid_constructor", "CpId={$CompId}", "report"), $nsProduct->Action == "paid_constructor" ? true : false, "stat", 8, 8);
    MenuTab($Lang['MNatural'], getURL("natural_constructor", "CpId={$CompId}", "report"), $nsProduct->Action == "natural_constructor" ? true : false, "stat", 8, 8);
    MenuTab($Lang['MLogs'], getURL("reports", "CpId={$CompId}", "admin"), ValidVar($MenuSection) == "logs" ? true : false, "logs", 11, 9);
    MenuTab($Lang['MCampaign'], getURL("campaign", "CpId={$CompId}", "admin"), $nsProduct->Action == "campaign" || $nsProduct->Action == "incampaign" || $nsProduct->Action == "sub_camp" || $nsProduct->Action == "campaign_link" ? true : false, "campaign", 8, 7);
    MenuTab($Lang['MActions'], getURL("actions", "CpId={$CompId}", "admin"), $nsProduct->Action == "actions" ? true : false, "actions", 4, 8);
    MenuTab($Lang['MSplits'], getURL("split_list", "", "admin"), ValidVar($MenuSection) == "split_test" ? true : false, "split", 13, 8);
    if ($nsUser->ADMIN || $nsUser->SUPER_USER) {
        MenuTab($Lang['MSettings'], getURL("settings", "CpId={$CompId}", "admin"), ValidVar($MenuSection) == "settings" ? true : false, "settings", 9, 9);
    }
    if (isset($AdditionalTabs)) {
        for ($i = 0; $i < count($AdditionalTabs); $i++) {
            $Row = $AdditionalTabs[$i];
            if (ValidVar($Row['Permit'])) {
                if ($Row['Permit'] == "superuser" && !$nsUser->SUPER_USER) {
                    continue;
    $Comp = $Db->Select($Query);
    $PageTitle = $Comp->NAME;
    $Query = "SELECT ID, HOST FROM " . PFX . "_tracker_site WHERE COMPANY_ID={$CpId}";
    $Sql = new Query($Query);
    while ($Row = $Sql->Row()) {
        $SitesArr[] = $Row;
    }
    if (Count($SitesArr) == 1) {
        $SiteId = $SitesArr[0]->ID;
    }
}
if (ValidId($SiteId)) {
    $Query = "SELECT * FROM " . PFX . "_tracker_site WHERE ID = {$SiteId}";
    $Site = $Db->Select($Query);
    $PageTitle = $Site->HOST;
    $SiteList = $SiteId;
    if (!ValidId($CpId)) {
        $CompId = $CpId = $Site->COMPANY_ID;
    }
}
$PageTitle .= " : " . $Lang['Reports'];
$CompId = ValidId($Comp->ID) ? $Comp->ID : $Site->COMPANY_ID;
/////////////////////////////////////////////
///////// call any process functions
/////////////////////////////////////////////
///////// display section here
include $nsTemplate->Inc();
/////////////////////////////////////////////
///////// process functions here
/////////////////////////////////////////////
///////// library section
Beispiel #26
0
function SetParam($Name, $Type, $Value, $Plg = false)
{
    global $Db, $nsProduct;
    if (!$Type) {
        return false;
    }
    if ($Type != "INTVAL" && $Type != "STRVAL" && $Type != "MEMO") {
        return false;
    }
    $Prd = $nsProduct->ID > 0 ? $nsProduct->ID : "0";
    if (!$Plg || !ValidId($Plg)) {
        $Plg = 0;
    }
    $Query = "SELECT ID FROM " . PFX . "_system_config WHERE PRODUCT_ID={$Prd} AND PLUGIN_ID={$Plg} AND CALLNAME='{$Name}'";
    $Id = $Db->ReturnValue($Query);
    $Name = ereg_replace("[^[:alnum:]_]", "", $Name);
    $Name = addslashes($Name);
    $Value = addslashes($Value);
    if (ValidId($Id)) {
        $Query = "UPDATE " . PFX . "_system_config SET {$Type} = '{$Value}', DATATYPE = '{$Type}' WHERE PRODUCT_ID={$Prd} AND PLUGIN_ID={$Plg} AND CALLNAME='{$Name}'";
    } else {
        $Query = "INSERT INTO " . PFX . "_system_config (PRODUCT_ID, PLUGIN_ID, CALLNAME, DATATYPE, {$Type}) VALUES ({$Prd}, {$Plg}, '{$Name}', '{$Type}', '{$Value}')";
    }
    $Db->Query($Query);
}
DrawPie($SizePie, $Lang['ActionStat'], $ActionsSize, "339933", 1);
DrawPie($SizePie, $Lang['SaleStat'], $SalesSize, "CC6600", 2);
DrawPie($SizePie, $Lang['SplitStat'], $SplitSize, "FF0099", 3);
DrawPie($SizePie, $Lang['CampStat'], $CampSize, "9999FF", 4);
DrawPie($SizePie, $Lang['UndefStat'], $UndefSize, "FFFF00", 5);
DrawPie($SizePie, $Lang['OtherTables'], $OtherSize, "FF0000", 6);
$MinTable = false;
$MaxTable = false;
$MinStamp = 0;
$MaxStamp = 0;
$MinId = 0;
$MaxId = 0;
for ($i = 0; $i < count($StatLogArr); $i++) {
    $Query = "SELECT MIN(ID) AS MIN_ID, MAX(ID) AS MAX_ID FROM " . $StatLogArr[$i];
    $MM = $Db->Select($Query);
    if (ValidId($MM->MIN_ID) && $MM->MIN_ID > 0) {
        $MM->MIN_STAMP = $Db->ReturnValue("SELECT UNIX_TIMESTAMP(STAMP) FROM " . $StatLogArr[$i] . " WHERE ID=" . $MM->MIN_ID);
        $MM->MAX_STAMP = $Db->ReturnValue("SELECT UNIX_TIMESTAMP(STAMP) FROM " . $StatLogArr[$i] . " WHERE ID=" . $MM->MAX_ID);
        if ($MinStamp > $MM->MIN_STAMP || $MinStamp == 0) {
            $MinStamp = $MM->MIN_STAMP;
            $MinTable = $StatLogArr[$i];
            $MinId = $MM->MIN_ID;
        }
        if ($MaxStamp < $MM->MAX_STAMP || $MaxStamp == 0) {
            $MaxStamp = $MM->MAX_STAMP;
            $MaxTable = $StatLogArr[$i];
            $MaxId = $MM->MAX_ID;
        }
    }
}
$MinDays = $MaxDays = false;
function SaveReport($SaveArr, $WhereArr)
{
    global $Db, $Logs, $nsUser, $nsProduct, $NaturalConstPath, $PaidConstPath, $Lang;
    if (ValidVar($SaveArr['SaveMode']) == "NATURAL") {
        $OrderConstPath = $NaturalConstPath;
        $ConstPath = "natural_constructor";
    }
    if (ValidVar($SaveArr['SaveMode']) == "PAID") {
        $OrderConstPath = $PaidConstPath;
        $ConstPath = "paid_constructor";
    }
    if (!ValidVar($SaveArr['Name'])) {
        $Logs->Err($Lang['NameMustFill']);
        return;
    }
    if (ValidVar($SaveArr['SaveMode']) != "NATURAL" && ValidVar($SaveArr['SaveMode']) != "PAID") {
        $Logs->Err($Lang['SaveErr1']);
        return;
    }
    if (!ValidVar($SaveArr['GroupBy'])) {
        $Logs->Err($Lang['SaveErr1']);
        return;
    }
    foreach ($WhereArr as $i => $Row) {
        if (!isset($OrderConstPath[$Row['Mode']])) {
            $Logs->Err($Lang['SaveErr1']);
            return;
        }
    }
    if (ValidVar($SaveArr['ViewDate']) && !ValidDate($SaveArr['ViewDate']) || ValidVar($SaveArr['StartDate']) && !ValidDate($SaveArr['StartDate']) || ValidVar($SaveArr['EndDate']) && !ValidDate($SaveArr['EndDate'])) {
        $Logs->Err($Lang['ValidDates']);
        return;
    }
    $WhereArrStr = serialize($WhereArr);
    $CurrentDate = ValidVar($SaveArr['CurrentDate']) ? $SaveArr['CurrentDate'] : 0;
    $SaveMode = ValidVar($SaveArr['SaveMode']) ? $SaveArr['SaveMode'] : 0;
    $CpId = ValidVar($SaveArr['CpId']) ? $SaveArr['CpId'] : 0;
    $GroupBy = ValidVar($SaveArr['GroupBy']) ? $SaveArr['GroupBy'] : false;
    $DatesUsed = ValidVar($SaveArr['DatesUsed']) ? $SaveArr['DatesUsed'] : false;
    $ViewDate = ValidVar($SaveArr['ViewDate']) ? $SaveArr['ViewDate'] : false;
    $StartDate = ValidVar($SaveArr['StartDate']) ? $SaveArr['StartDate'] : false;
    $EndDate = ValidVar($SaveArr['EndDate']) ? $SaveArr['EndDate'] : false;
    $Filter = ValidVar($SaveArr['Filter']) ? $SaveArr['Filter'] : false;
    $Limit = ValidId($SaveArr['Limit']) ? $SaveArr['Limit'] : 0;
    $ShowAll = ValidVar($SaveArr['ShowAll']) ? $SaveArr['ShowAll'] : 0;
    $OrderBy = ValidVar($SaveArr['OrderBy']) ? $SaveArr['OrderBy'] : false;
    $OrderTo = ValidVar($SaveArr['OrderTo']) ? $SaveArr['OrderTo'] : "ASC";
    $Name = ValidVar($SaveArr['Name']) ? addslashes($SaveArr['Name']) : false;
    $UserId = $nsUser->UserId();
    $AddToMy = ValidVar($SaveArr['AddToMy']) ? $SaveArr['AddToMy'] : false;
    $Query = "\n\t\tINSERT INTO " . PFX . "_tracker_user_report \n\t\t\t(CONST_TYPE, COMPANY_ID, NAME, VIEW_DATE, START_DATE, END_DATE, FILTER, PAGE_LIMIT, SHOW_NO_REF, SORT_BY, SORT_ORDER, USE_CURRENT_DATE, GROUP_BY, WHERE_ARR)\n\t\t\tVALUES \n\t\t\t('{$SaveMode}', {$CpId}, '{$Name}', '{$ViewDate}', '{$StartDate}', '{$EndDate}', '{$Filter}', {$Limit}, '{$ShowAll}', '{$OrderBy}', '{$OrderTo}', '{$CurrentDate}', '{$GroupBy}', '{$WhereArrStr}')\n\t\t";
    $Db->Query($Query);
    $NewId = $Db->LastInsertId;
    if ($AddToMy) {
        $Query = "INSERT INTO " . PFX . "_tracker_watch (USER_ID, REPORT_ID) VALUES ({$UserId}, {$NewId})";
        $Db->Query($Query);
    }
    $nsProduct->Redir($ConstPath, "RUpd=1&ConstId={$NewId}&CpId=" . ValidVar($SaveArr['CpId']), "report");
}
    $Report->SelectArr[] = "RS.REFERER_ID";
    $Report->SelectArr[] = "R.REFERER AS NAME";
    $Report->JoinArr[] = "INNER JOIN " . PFX . "_tracker_referer R ON R.ID=RS.REFERER_ID";
    $Report->GroupArr[] = "RS.REFERER_ID";
    $Report->GrpFld = "REFERER_ID";
    $Report->GrpName = "NAME";
    $Report->OrderArr[] = "{$DefaultOrderBy} {$OrderTo}";
    if (ValidVar($Filter)) {
        $Report->WhereArr[] = "R.REFERER LIKE ('%{$Filter}%')";
    }
}
if (ValidVar($GroupBy) == "Source") {
    $Report->RsNeeded = true;
    $Report->SelectArr[] = "TH.ID";
    $Report->SelectArr[] = "TH.HOST AS NAME";
    if (!ValidId($Report->HostGrp)) {
        $Report->JoinArr[] = "INNER JOIN " . PFX . "_tracker_host TH ON TH.ID=RS.HOST_ID";
    }
    $Report->GroupArr[] = "TH.ID";
    $Report->GrpFld = "ID";
    $Report->GrpName = "NAME";
    $Report->OrderArr[] = "{$DefaultOrderBy} {$OrderTo}";
    if (ValidVar($Filter)) {
        $Report->WhereArr[] = "TH.HOST LIKE ('%{$Filter}%')";
    }
}
if (ValidVar($GroupBy) == "SourceGrp") {
    $Report->RsNeeded = true;
    $Report->SelectArr[] = "TH.GRP_ID";
    $Report->SelectArr[] = "HG.NAME";
    $Report->JoinArr[] = "INNER JOIN " . PFX . "_tracker_host TH ON TH.ID=RS.HOST_ID";
     }
 }
 if ($WhereArr[$i]['Mode'] == "Page") {
     $WhereArr[$i]['Name'] = $Lang['ByPage'];
     $MetaTitle .= ": " . $Lang['ByPage'];
     if (ValidId($WhereArr[$i]['Id'])) {
         //$Report->ByPage=true;
         $WhereArr[$i]['Name2'] = $Db->ReturnValue("SELECT PATH FROM " . PFX . "_tracker_site_page WHERE ID = " . $WhereArr[$i]['Id']);
         $MetaTitle .= ": " . $WhereArr[$i]['Name2'];
         $Report->WhereArr[] = "S_LOG.PAGE_ID=" . $WhereArr[$i]['Id'];
     }
 }
 if ($WhereArr[$i]['Mode'] == "Country") {
     $WhereArr[$i]['Name'] = $Lang['ByCountry'];
     $MetaTitle .= ": " . $Lang['ByCountry'];
     if (ValidId($WhereArr[$i]['Id'])) {
         $WhereArr[$i]['Name2'] = $Db->ReturnValue("SELECT NAME FROM " . PFX . "_tracker_country WHERE ID = " . $WhereArr[$i]['Id']);
         $MetaTitle .= ": " . $WhereArr[$i]['Name2'];
         $Report->WhereArr[] = "V.FIRST_COUNTRY_ID=" . $WhereArr[$i]['Id'];
         $Report->JoinArr[] = "INNER JOIN " . PFX . "_tracker_visitor V ON V.ID=S_LOG.VISITOR_ID";
     }
 }
 if ($WhereArr[$i]['Mode'] == "Resolution") {
     $WhereArr[$i]['Name'] = $Lang['ByResolution'];
     $MetaTitle .= ": " . $Lang['ByResolution'];
     if (ValidVar($WhereArr[$i]['Id'])) {
         $WhereArr[$i]['Name2'] = $WhereArr[$i]['Id'] != "-1" ? $WhereArr[$i]['Id'] : $Lang['Undefined'];
         $MetaTitle .= ": " . ($WhereArr[$i]['Id'] != "-1" ? $WhereArr[$i]['Id'] : $Lang['Undefined']);
         $Report->WhereArr[] = "V.LAST_RESOLUTION='" . $WhereArr[$i]['Id'] . "'";
         $Report->JoinArr[] = "INNER JOIN " . PFX . "_tracker_visitor V ON V.ID=S_LOG.VISITOR_ID";
     }