<?php
##############################################################
##In-portal						##
##############################################################
##      In-portal					##
##Intechnic Corporation					##
##All Rights Reserved, 1998-2002			##
##							##
##No portion of this code may be copied, reproduced or	##
##  otherwise redistributed without proper written	##
##  consent of Intechnic Corporation.  Violation will	##
##   result in revocation of the license and support	##
## privileges along maximum prosecution allowed by law.	##
##############################################################
if(!strlen($pathtoroot))
{
  $path=dirname(realpath(__FILE__));
  if(strlen($path))
  {
    /* determine the OS type for path parsing */
    $pos = strpos($path,":");
    if ($pos === false)
    {
      $gOS_TYPE="unix";
      $pathchar = "/";
    }
    else
    {
      $gOS_TYPE="win";
      $pathchar="\\";
    }
    $p = $path.$pathchar;
    /*Start looking for the root flag file */
    while(!strlen($pathtoroot) && strlen($p))
    {
      $sub = substr($p,strlen($pathchar)*-1);
      if($sub==$pathchar)
      {
        $filename = $p."root.flg";
      }
      else
        $filename = $p.$pathchar."root.flg";
      if(file_exists($filename))
      {
        $pathtoroot = $p;
      }
      else
      {
        $parent = realpath($p.$pathchar."..".$pathchar);
	if($parent!=$p)
	{
	  $p = $parent;
	}
	else
	  $p = "";
      }
    }
    if(!strlen($pathtoroot))
      $pathtoroot = ".".$pathchar;
  }
  else
  {
    $pathtoroot = ".".$pathchar;
  }
}

$sub = substr($pathtoroot,strlen($pathchar)*-1);
if($sub!=$pathchar)
{
  $pathtoroot = $pathtoroot.$pathchar;
}
//echo $pathtoroot;

require_once($pathtoroot."kernel/startup.php");

$rootURL="http://".ThisDomain().$objConfig->Get("Site_Path");

$admin = $objConfig->Get("AdminDirectory");
if(!strlen($admin))
    $admin = "admin";

$adminURL = $rootURL.$admin;
$localURL=$rootURL."kernel/";

$imagesURL = $adminURL."/images";

//admin only includes
require_once ($pathtoroot.$admin."/include/elements.php");
require_once ($pathtoroot."kernel/admin/include/navmenu.php");
require_once($pathtoroot.$admin."/toolbar.php");
require_once($pathtoroot.$admin."/listview/listview.php");

$pathtolocal = $pathtoroot;

/* -------------------------------------- Section configuration ------------------------------------------- */
$section = 'in-portal:sessionlog'; 
$envar = "env=" . BuildEnv(); 

$SortFieldVar = "Session_SortField";
$SortOrderVar = "Session_SortOrder";
$DefaultSortField = "UserName";
$PerPageVar = "Perpage_Sessions";
$CurrentPageVar = "Page_Sessions";
$CurrentFilterVar = "Session_View";

$ListForm = "sessionlistform";
$CheckClass = "UserChecks";

/* ------------------------------------- Configure the toolbar ------------------------------------------- */
$objListToolBar = new clsToolBar();

$objListToolBar->Set("section",$section);
$objListToolBar->Set("load_menu_func","");
$objListToolBar->Set("CheckClass",$CheckClass);
$objListToolBar->Set("CheckForm",$ListForm);
  
$listImages = array();
                    //$img, $alt, $link, $onMouseOver, $onMouseOut, $onClick

$objListToolBar->Add("log_refresh", "la_ToolTip_Refresh","#","swap('log_refresh','toolbar/tool_refresh_f2.gif');",
                    "swap('log_refresh', 'toolbar/tool_refresh.gif');","window.location.reload(true);",
                     "tool_refresh.gif");

$objListToolBar->Add("log_reset","la_ToolTip_Reset","#", "if (UserChecks.itemChecked()) swap('log_reset','toolbar/tool_disconnect_f2.gif');",
                    "if (UserChecks.itemChecked()) swap('log_reset', 'toolbar/tool_disconnect.gif');","if (UserChecks.itemChecked()) $CheckClass.check_submit('session_list', 'm_session_delete');",
                    "tool_disconnect.gif",TRUE,TRUE);
                    
$listImages[] = "$CheckClass.addImage('log_reset','$imagesURL/toolbar/tool_disconnect.gif','$imagesURL/toolbar/tool_disconnect_f3.gif',1);\n ";

$objListToolBar->Add("divider");

$objListToolBar->Add("user_print", "la_ToolTip_Print","#","swap('user_print','toolbar/tool_print_f2.gif');",
                    "swap('user_print', 'toolbar/tool_print.gif');","window.print();","tool_print.gif");

$objListToolBar->Add("viewmenubutton", "la_ToolTip_View","#","swap('viewmenubutton','toolbar/tool_view_f2.gif'); ",
                    "swap('viewmenubutton', 'toolbar/tool_view.gif');",
                     "ShowViewMenu();","tool_view.gif");

$objListToolBar->AddToInitScript($listImages);
$objListToolBar->AddToInitScript("fwLoadMenus();");

/* ----------------------------------------- Set the View Filter ---------------------------------------- */

/* bit place holders for category view menu */
$Bit_Active=1;
$Bit_Inactive=2;
$Bit_Guest=4;
$Bit_All = 7;

$FilterLabels = array();

$FilterLabels[0] = admin_language("la_Text_Active");
$FilterLabels[1] = admin_language("la_Text_Expired");
$FilterLabels[2] = admin_language("la_Text_Guest");

if($_GET["resetpage"]==1)
    $objSession->SetVariable("Page_Sessions","1");

/* determine current view menu settings */
$SessionView = $objConfig->Get("Session_View");

if(!is_numeric($SessionView))
{   
   $SessionView = $Bit_All; //Set all bits ON
   $SessionFilter = "";
}

$filter = array();
$status=array();

if($SessionView & $Bit_Active)
{
    $status[] = 1;
}
if($SessionView & $Bit_Inactive)
{
    $status[] = 0;
}

$status = count($status) ? implode(',',$status) : '-1';
$filter[] = 'us.Status IN ('.$status.')';

if(!($SessionView & $Bit_Guest))
    $filter[] = "p.Login IS NOT NULL";

$SessionFilter = join(" AND ",$filter);


$order = $objConfig->Get("Session_SortOrder");
$SearchWords = $objSession->GetVariable("SessionSearchWord");
if(strlen($SearchWords))
{
    $where = " HAVING ".$objSession->AdminSearchWhereClause($SearchWords);
}
else
  $where = "";

if(strlen($SessionFilter)>0)
{
    //if(strlen($where))
      //  $SessionFilter.= " AND ";
    $where = $SessionFilter.$where;
}

//echo $where;

$sql = "SELECT us.*,if (p.Login IS NULL,'".admin_language("la_Text_Guest")."',p.Login) as UserName, ";
$sql .="if(g.Name IS NULL,'".admin_language("la_Text_GuestUsers")."',g.Name) as GroupName, "; 
$sql .="ELT(us.Status+1,'".admin_language("la_Text_Expired")."','".admin_language("la_Text_Active")."') as SessionStatus, ";
$sql .="FROM_UNIXTIME(us.LastAccessed,'%m-%d-%Y') as DateCreated ";
$sql .="FROM ".GetTablePrefix()."UserSession ";
$sql .=" as us LEFT JOIN ".GetTablePrefix()."PortalUser as p USING (PortalUserId) ";
$sql .="LEFT JOIN ".GetTablePrefix()."UserGroup as u ON (p.PortalUserId=u.PortalUserId AND u.PrimaryGroup=1) ";
$sql .="LEFT JOIN ".GetTablePrefix()."PortalGroup as g ON (u.GroupId=g.GroupId) ";
$sql .= " WHERE us.Status = 1 ";
if(strlen($where)) {
	$sql .= "AND ".$where;
}


$orderBy = trim($objConfig->Get("Session_SortField")." ".$objConfig->Get("Session_SortOrder"));
if(strlen($orderBy))
    $sql .=" ORDER BY ".$orderBy;

//$sql .=" ".GetLimitSQL($objSession->GetVariable("Page_Sessionlist"),$objConfig->Get("Perpage_Sessionlist"));

if($objSession->HasSystemPermission("DEBUG.LIST"))
   echo htmlentities($sql,ENT_NOQUOTES)."<br>\n";
$objListView = new clsListView($objListToolBar);
$objListView->CurrentPageVar = "Page_Sessionlist";
$objListView->PerPageVar = "Perpage_Sessionlist";

$objUsers->Query_Item( $sql, $objListView->GetLimitSQL() );

$itemcount = 0;

foreach ($objUsers->Items as $value) {
	$itemcount++;
}


$objListView->SetListItems($objUsers);
$objListView->IdField = "SessionKey";
$objListView->PageLinkTemplate = $pathtoroot.$admin."/templates/user_page_link.tpl";

$objListView->ColumnHeaders->Add("UserName",admin_language("la_prompt_Username"),1,0,$order,"width=\"35%\"","Session_SortField","Session_SortOrder","UserName");
$objListView->ColumnHeaders->Add("GroupName",admin_language("la_prompt_PrimaryGroup"),1,0,$order,"width=\"20%\"","Session_SortField","Session_SortOrder","GroupName");
$objListView->ColumnHeaders->Add("SessionStatus",admin_language("la_prompt_Status"),1,0,$order,"width=\"10%\"","Session_SortField","Session_SortOrder","SessionStatus");
$objListView->ColumnHeaders->Add("IpAddress",admin_language("la_prompt_IPAddress"),1,0,$order,"width=\"15%\"","Session_SortField","Session_SortOrder","IPAddress");
$objListView->ColumnHeaders->Add("DateCreated",admin_language("la_prompt_CreatedOn"),1,0,$order,"width=\"20%\"","Session_SortField","Session_SortOrder","us.LastAccessed");
$objListView->ColumnHeaders->SetSort($objConfig->Get("Session_SortField"),$order);

$objListView->PrintToolBar = FALSE;
$objListView->SearchBar = TRUE;
$objListView->SearchKeywords = $SearchWords;
$objListView->SearchAction="m_session_search";
$objListView->CheckboxName = "itemlist[]";
$objListView->TotalItemCount = $itemcount;

  $objListView->ConfigureViewMenu($SortFieldVar,$SortOrderVar,$DefaultSortField,
  								  $CurrentFilterVar,$SessionView,$Bit_All);

  foreach($FilterLabels as $Bit=>$Label)
  {
  	$objListView->AddViewMenuFilter($Label,$Bit);
  }	
  
$filter = false; // always initialize variables before use
if($objSession->GetVariable("SessionSearchWord") != '') {
	$filter = true;
} 
else {
	if ($SessionView != $Bit_All) {
		$filter = true;
	}
}	

$title = admin_language("la_Show_Log")." (".$objUsers->NumItems().")";
$h = "\n\n<SCRIPT Language=\"JavaScript1.2\">\n".$objListView->GetViewMenu($imagesURL)."\n</SCRIPT>\n";
int_header($objListToolBar,NULL, $title,NULL,$h);
if ($filter) { ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="toolbar">
  <tr>
    <td valign="top">
      <?php int_hint_red(admin_language("la_Warning_Filter")); ?>
    </td>
  </tr>
</table>
<?php } ?>
<FORM method="POST" ACTION="" NAME="sessionlistform" ID="sessionlistform">
<?php
  print $objListView->PrintList();
?>
<input type="hidden" name="Action" value="">
</FORM>

<!-- CODE FOR VIEW MENU -->
<form ID="viewmenu" method="post" action="<?php echo $_SERVER["PHP_SELF"]."?env=".BuildEnv(); ?>" name="viewmenu">
  <input type="hidden" name="fieldname" value="">
  <input type="hidden" name="varvalue" value="">
  <input type="hidden" name="varvalue2" value="">
  <input type="hidden" name="Action" value="">
</form>
<FORM ID="ListSearchForm" NAME="ListSearchForm" method="POST" action="<?php echo $_SERVER["PHP_SELF"]."?env=".BuildEnv(); ?>">
   <INPUT TYPE="HIDDEN" NAME="Action" VALUE="">
   <INPUT TYPE="HIDDEN" NAME="list_search">
</FORM>
<script src="<?php echo $adminURL; ?>/listview/listview.js"></script>
<script>
initSelectiorContainers();
<?php echo $objListToolBar->Get("CheckClass").".setImages();"; ?>
</script>
<!-- END CODE-->
<?php int_footer(); ?>