<?

header("Location: https://cx.rightnow.com/app/answers/detail/a_id/12986");

//-----------------------------------------------
// FILE:enduser_compliance.php
// --
// Purpose: display the license compliance dashboard
// to the customer.
// Authentication is built from auth_enduser.php which
// brings in the contact id and org id.
// --
//-----------------------------------------------

//use our own error handler so that PHP doesn't hide stuff from us
//set_error_handler(myErrorHandler);

//uncomment to debug
//error_reporting(E_ERROR | E_PARSE);
//ini_set('display_errors', 'On');

/////////////////////////////////////////////////////////////
// FUNCTION: write_access_log
// --
// this is just a quick function for writing and entry
// into the access log.
/////////////////////////////////////////////////////////////

function write_access_log($page_name, $message, $login_type=NULL){

    global $auth_csi, $c_id;

    if (!$auth_csi)
        $auth_csi = authorize("BAM");

    if (!$login_type)
        $login_type = 1;

    $insert_columns = array("login_type"=>$login_type,
        "login_id"=>$c_id,
        "page_name"=>$page_name,
        "accessed"=>"sysdate",
        "name"=>$staff_full_name,
        "extra"=>$message);

    //$sql = "INSERT INTO access_log (login_type, login_id, page_name, accessed, name, extra)
    //    VALUES($login_type, '$staff_id_val', '$page_name', now(), '$staff_full_name', '$message')";

    $rv = sql_prepare("INSERT INTO access_log", $auth_csi, $insert_columns, 1);
}

//----------------------------
// function: myErrorHandler
// purpose: override strict php settings
//  so we can determine the error that's occuring.
//  should be disabled when live
//----------------------------

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    if (!(error_reporting() & $errno))
    {
        // This error code is not included in error_reporting
        return;
    }

    switch ($errno)
    {
        case E_USER_ERROR:
            echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
            echo "  Fatal error on line $errline in file $errfile";
            echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
            echo "Aborting...<br />\n";
            exit(1);
            break;

        case E_USER_WARNING:
            echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
            break;

        case E_USER_NOTICE:
            echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
            break;

        default:
            echo "error: [$errno] $errstr - Line $errline<br />\n";
            break;
    }

    /* Don't execute PHP internal error handler */
    return true;
}

//----------------------------
// Inits and Authenticate User
//-----------------------------

if (ereg('hms-admin', $_SERVER['HTTP_HOST']))
{

    if ($_POST['company_id'])
        $org_id = $_POST['company_id'];
    elseif ($_POST['org_id'])
        $org_id = $_POST['org_id'];

    $PAGE_PERMISSION = 1;
    require("/nfscommon/html/admin/bam/includes/report_init.php");
    require("/nfscommon/html/admin/bam/includes/check_permissions.php");
    require_once("/nfscommon/html/admin/bam/includes/license_functions_customer.php");
    require_once("/nfscommon/html/admin/bam/includes/e2b_functions_customer.php");
    print_page_title("Customer Compliance", 0, $perm);
    
}
else
{

    require("/nfscommon/html/admin/bam/compliance_blines/includes/report_init.php");
    require("/nfscommon/html/admin/bam/compliance_blines/includes/entitlements_init.php");

    require("/nfscommon/html/enduser/csi/enduser_include.phph");
    #require("/nfscommon/html/enduser/csi/csi_init.php");

    //require("/nfscommon/html/enduser/csi/blines/includes/license_functions.php");
    require("/nfscommon/html/enduser/csi/blines_license_functions.php");
    require("/nfscommon/html/enduser/csi/blines/includes/e2b_functions.php");
    require("/nfscommon/html/enduser/csi/blines/includes/display_functions.php");

    $org_id = $_SESSION['auth_company_id'];
    $c_id = $_SESSION['auth_c_id'];

}

// we should always have a company_id either posted from internal CSI or from the endusers SESSION
if (!$org_id)
{
    die("We have encountered an error processing your request.  Please contact technical support regarding this issue.");
}

// remove the spreadsheet data if it already exists
unset($_SESSION["XLS_ARRAY"]);

//---------------------------
// set inputs coming from report submit form
//---------------------------

if ($_POST['site_id'])
    $site_id = $_POST['site_id'];
if ($_POST['generate_report'])
    $generate_report = $_POST['generate_report'];

//---------------------------
// find sites for org/site
//---------------------------

if ($org_id > 0)
    $where = "'$org_id'";
else
    $where = "(SELECT company_id FROM siteinfo.sites WHERE site_id = '$site_id')";

$sql = "SELECT s.site_id,
    s.site_name,
    SUBSTRING_INDEX(p.product_version, '.', 2) product_version
    FROM siteinfo.sites s,
    siteinfo.products p
    WHERE s.company_id = $where
    AND p.product_name IN ('rnw', 'ig', 'opa')
    AND p.product_id = s.product_id
    $site_exclude
    ORDER BY site_name";

$site_results = sql_execute($sql, $auth_csi, 1);

$sql = "Select old_billing, missing_session_data from custserv.rnw_data where company_id = ".$org_id;
$old_billing = sql_execute($sql, $auth_csi, 1);

$obilling = json_decode($old_billing[1]['old_billing']);
$missing_data = json_decode($old_billing[1]['missing_session_data'], true);
//---------------------------
// Set site_id to either posted 
// value or first value in above query
//---------------------------

if (is_array($site_results))
{

    if (!isset($site_id))
    {
        $site_id = $site_results[1]['site_id'];
        //$site_name = $site_results[1]['site_name'];
        //$product_version = $site_results[1]['product_version'];
    }

    $site_count = 0;
    foreach ($site_results as $index => $key)
    {

        $site_name = $key['site_name'];
        $product_version = $key['product_version'];

        $selected = (++$site_count > 1) ? '' : 'SELECTED';
        $siteOption = "$site_name ($product_version)";
        $site_options .= "<option value=" . $key['site_id'] . ">" . $key['site_name'] . "</option>\n";
        #$multi_site_options  .= "<option $selected value=" . $key['site_id'] . ">" . $siteOption . "</option>\n";
    }
}
else
{
    die("Warning: No sites were found.  Please contact or your account representative.");
}

//----------------------------------------------------
// Security Check
// Doesn't allow cross posting of a site_id for the wrong org.
//----------------------------------------------------

$sql = "SELECT COUNT(1) total
    FROM siteinfo.sites s
    WHERE s.site_id = '$site_id'
    AND s.company_id = '$org_id'";

$check_results = sql_execute($sql, $auth_csi, 1);

if ($check_results[1]['total'] < 1)
{
    die("Access Denied: Code 2");
}

//---------------------------
// build report array list
//---------------------------

//portal usage
//$reports = array(RPT_SESSIONS); //RPT_HITS

//universal acs sessions
$reports = array(RPT_SESSIONS_TIER1, RPT_SESSIONS_TIER2, RPT_SESSIONS_TIER3);
//$reports = array();
//user usage
array_push($reports, RPT_NAMED, RPT_NONCC_NAMED, RPT_CONCURRENT);
//array_push($reports, RPT_NAMED, RPT_NONCC_NAMED); //removing concurrent users per James McDowell
//add shared concurrency for ticketmasterus
if ($org_id == 8089)
{
    array_push($reports, RPT_SHARED_CONCURRENT);
}

//chat
array_push($reports, RPT_CHATNAMED);

//mkt feedback
array_push($reports, RPT_EMAILS_SENT, RPT_SURVEYS_RECEIVED);

//api & storage
array_push($reports, RPT_CUSTOM_OBJECTS, RPT_PHPAPI);
array_push($reports, RPT_STORAGE, RPT_DATABASE_STORAGE, RPT_FILE_STORAGE);

//bandwidth -- hidden for now
array_push($reports, RPT_BANDWIDTH);

//-------------------
// get e2b data from org
//-------------------

$e2b_data = get_e2b_data($org_id, "org");

//when the contract was originally purchased
$e2b_contract_start_date = $e2b_data['e2b_contract_start_date'];

//yearly or monthly
$e2b_capacity = $e2b_data['e2b_capacity'];
$is_e2b = ($e2b_contract_start_date) ? 'Yes' : 'No';

//---------------------------
// build html
//---------------------------

if (!ereg('hms-admin', $_SERVER['SERVER_NAME']))
{
    include "/nfscommon/html/admin/bam/uma_header_oracle.phph";
}

?>

<style>

body { 
    color: #303030;
    text-align: left;
}

.selected {background-color: #abd5f1}
.section_header {background-color: #e6e6e6}

table { font-size: 14px }

h1, h2, h3, h4, h5, h6 { margin:0px; }
h1 { font-size:200%}
h2 { font-size:170%; font-weight: normal; background-color: #e6e6e6; border-bottom: 1px solid #999}
h3 { font-size:105%; border-bottom: 1px solid #ddd}
h4 { font-size:120%}
h5 { font-size:100%}

.header { text-align: left; text-decoration: underline}
.selection_text { vertical-align: top}
.div_margin {margin: 5px}

.comp_report { padding: 1px; margin: 0px; border: 1px solid #888; border-collapse:collapse; border-spacing: 0em; font: 0.8em/1.5 "arial",sans-serif;}
.comp_button { margin: 0px; padding: 0px; background-image: none}

.tb { display:inline; }
.strong { font-weight: bold }
.redbg { background-color: #ff9999; color: black;
        font-family: verdana,helvetica,arial,sans-serif; font-size: 8pt }
.orangebg { background-color: #ffaa66; color: black;
        font-family: verdana,helvetica,arial,sans-serif; font-size: 8pt }
</style>

<!-- JS -->
<script type="text/javascript" src="/csi/includes/yui/build/yui-base/yui-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/oop/oop-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/intl-base/intl-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/event-custom-base/event-custom-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/event-custom-complex/event-custom-complex-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/intl/intl-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/features/features-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/dom-core/dom-core-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/dom-base/dom-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/dom-style/dom-style-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/dom-screen/dom-screen-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/selector-native/selector-native-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/selector/selector-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/datatype-number-parse/datatype-number-parse-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/datatype-number-format/datatype-number-format-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/datatype-date-parse/datatype-date-parse-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/datatype-date-format/lang/datatype-date-format_en-US.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/datatype-date-format/datatype-date-format-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/node-core/node-core-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/node-base/node-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/event-base/event-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/event-synthetic/event-synthetic-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/event-mouseenter/event-mouseenter-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/attribute-base/attribute-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/attribute-complex/attribute-complex-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/event-focus/event-focus-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/base-base/base-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/pluginhost-base/pluginhost-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/pluginhost-config/pluginhost-config-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/base-pluginhost/base-pluginhost-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/node-style/node-style-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/classnamemanager/classnamemanager-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/widget-base/widget-base-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/widget-htmlparser/widget-htmlparser-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/event-delegate/event-delegate-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/node-event-delegate/node-event-delegate-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/widget-uievents/widget-uievents-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/widget-skin/widget-skin-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/base-build/base-build-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/node-screen/node-screen-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/widget-position/widget-position-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/widget-stack/widget-stack-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/node-pluginhost/node-pluginhost-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/graphics/graphics-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/graphics-svg/graphics-svg-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/graphics-svg-default/graphics-svg-default-min.js"></script>
<script type="text/javascript" src="/csi/includes/yui/build/charts/charts-min.js"></script>

<script type='text/javascript' src='/csi/includes/custom-yui-charts.js'></script>

<script language='JavaScript'>
function toggleDiv(div){
    var group_name = "group_" + div;
    var img_name = "img_" + div;

    if (document.getElementById(group_name).style.display == "none"){
        document.getElementById(group_name).style.display = "inline";
        document.getElementById(img_name).src = "/csi/img/minus.gif";
    }else{
        document.getElementById(group_name).style.display = "none";
        document.getElementById(img_name).src = "/csi/img/plus.gif";
    }
}

function showDiv(div){
    var group_name = "group_" + div;
    var img_name = "img_" + div;

    document.getElementById(group_name).style.display = "inline";
    document.getElementById(img_name).src = "/csi/img/minus.gif";
}
</script>

<body>

<div id="layout">
<div id="main" name="main" style='padding: 10px'>

<a href="http://cx.rightnow.com/app/">Support</a>&nbsp;&gt;&nbsp;<a href="https://hms.custhelp.com/csi/enduser_mystuff.php">My Site Tools</a>&nbsp;&gt;&nbsp;License Compliance Dashboard 
<br><br>

<form id='report_selection_form' name='report_selection_form' method='post'>
<input type='hidden' name='org_id' value='<?= $org_id ?>'>
<table id='report_selection' valign='top'>
 <tr>

<!-- Single Site Selection -->

  <td valign='top' id='single_site_selection'>
   <table style='display:inline' valign='top'>
    <tr><th class='header'>Select Site</th></tr>
    <tr><td valign='top'><select id='site_id' name='site_id'><?= $site_options ?></select></td></tr>
   </table>
  </td>

<!-- Multi Site Selection -->

<!-- Run Report -->

  <td valign='top' id='run_report'>
   <table style='display:inline' valign='top'>
    <tr><td valign='top'><input style="border: 1px solid black; margin: 0px; padding: 4px; width: auto; background-color: #eee; background-image: none" type='submit' name='generate_report' value='Generate Report'></span></td></tr>
    <? if($obilling) { ?> <tr><td valign='top'><input type='submit' name='generate_historical_usage' value='Get Historical Tier1/Tier2 Usage' title="Use this button for usage prior to 10/9/2020"></span></td></tr> <? } ?>
   </table>
  </td>
 </tr>
</table>
</form>

<p>If you have any questions regarding licensing or the data presented on this page, please contact your Account Representative.</p>


<?

if ($site_id > 0)
{
    print "<script type='text/javascript'>document.getElementById('site_id').value = '$site_id';</script>\n";
}

?>

<?

//---------------------------
// display reports
//---------------------------

if ($generate_report || $_POST['generate_historical_usage'])
{

    write_access_log("External Compliance Page", "Report generated for site: $site_id", 2);

    print_loading_bar("Generating Compliance Report.");
    print "<div id='report_content'>\n";
    
    $site_results = get_site_info($site_id, $org_id);
    $site_name = $site_results[1]['site_name'];
    $site_version = $site_results[1]['product_version'];
    $version_int = $site_results[1]['version_int'];
    $billing_id = $site_results[1]['billing_id'];

    $missing_data_msg = null;
    if(array_key_exists($billing_id, $missing_data)) {
     if($missing_data[$billing_id]) {
      unset($reports[0]);
      unset($reports[1]);
      unset($reports[2]);
      
      $missing_data_msg = "Please contact your account represenative for help with sessions regarding this site.";
     }
    }

    if($_POST['generate_historical_usage']) {
     if(!isset($obilling->$site_id)) {
      echo "<b>This site (".$site_name.") does not have historical usage. Please use \"Generate Report\" button.</b>";        hide_loading_bar();
      return false;
     }
     $billing_id = $obilling->$site_id;
    }

    //-------------------
    // get baselines
    //-------------------

    $baselines = exec_rpt_query(QRY_BASELINES, $site_id, $org_id);
    $blines_start_date = $baselines[1]['start_date'];
    $blines_end_date = $baselines[1]['end_date'];

    if($blines_start_date){
    $diff = strtotime("now") - strtotime($blines_start_date);
    if($diff > 86277200)
    {
        $newStart =  strtotime("-998 days");

        $blines_start_date = date("Y-m-d", $newStart);
        $baselines[1]['start_date'] = $blines_start_date;
        $baselines[1]['end_date'] = date("Y-m-01", strtotime("now"));
        $blines_end_date = $baselines[1]['end_date'];
    }
	}


    //------------------
    // determine start date to use
    // via new baselines date vs e2b logic
    //------------------

    if ($blines_start_date)
        $report_start_date = $blines_start_date;
    elseif ($e2b_contract_start_date)
        $report_start_date = $e2b_contract_start_date;

    //----------------------------------
    // Swap session for universal/old sessions
    //----------------------------------

    //debug
    //print "version_int: $version_int<br>\n";
    //print_r($baselines);

    //if the customer isn't on 12.2 but is on universal sessions, let's swap the universal sessions into regular sessions

    if ($version_int < '12.02' && $baselines[1]['sessions_t1'] > 0)
    {
        $baselines[1]['sessions'] = $baselines[1]['sessions_t1'];
        unset($baselines[1]['sessions_t1']);
    }
    //the customer is on universial sessions, but has both sessions fields filled out.  Hide the old sessions
    elseif ($version_int >= '12.02' && $baselines[1]['sessions_t1'] > 0 && $baselines[1]['sessions'] > 0)
    {
        //display both graphs for navyfed
        if ($site_id != 55071)
            unset($baselines[1]['sessions']);
    }

    //---------------------------------
    // print report
    //---------------------------------
    print "<table cellpadding='0' cellspacing='0' class='comp_report' width='950'>
        <tr>
        <td>
        <table cellpadding='0' cellspacing='0' style='background-color: #fff; width: 100%'><tr><td><h2>
        <table cellpadding='2' cellspacing='2' style='width: 100%; background-color: #bbb; border-bottom: 1px solid #999'>";
        print "<tr><td class=\"redbg\" colspan=\"2\" style=\"font-weight: bold;text-align:center;\"> If you are on 20B or later, please refer to the <a href=\"https://documentation.custhelp.com/euf/assets/devdocs/bui/topicrefs/c_bui_rpt_svc_usage_metrics.html\" target=\"_blank\">Service Usage Metrics</a> feature for usage data. If not, please contact your account team for assistance.</td></tr>";
       !is_null($missing_data_msg) ? print "<tr><td class=\"redbg\" colspan=\"2\" style=\"font-weight: bold;text-align:center;\">".$missing_data_msg."</td></tr>" : "";  
       print "<tr>
        <td style='font-size:150%'>Usage Report</td>
        <td align='right' style='font-size: 9pt'>";
    print_compliance_export();
    print"</td>
        </tr>
        </table>
        </h2>
        </td></tr>
        <tr>
        <td><div>\n";

    print "<div class='div_margin'><span class='strong'>Site Name: </span>$site_name<br />";
    print "<span class='strong'>Version: </span>$site_version<br />";
    
    if ($report_start_date)
        print "<span class='strong'>Start Date: </span>$report_start_date\n";

    print "</div>\n";

    //loop through each report type (hits, sessions, etc) and build section headers.
    foreach ($reports as $reportIndex => $reportID)
    {
        //function print_license_report($report_id, $site_id, $org_id, $baselines, $billing_id, $report_start_date=NULL, $display_licensed=NULL, $override_e2b=NULL){
        print_license_report($reportID, $site_id, $org_id, $baselines, $billing_id, $report_start_date, true, false, $blines_end_date);
    }

    print "</td></tr></table></td></tr></table></div>\n";

    hide_loading_bar();
}

?>

</div>
</div>

<? $_SESSION['XLS_ARRAY']['columns']['Sessions'] = array('value' => 'Service Sessions', 'value2' => 'Marketing Sessions', 'value3' => 'Feedback Sessions',  'value4' => 'KF API Sessions'); ?>

<!-- Hidden frame for XLS export -->
<IFRAME id='_iframe' name='_iframe' src='xls/export_xls.php?".SID."' style='display:none'></IFRAME>

<?
if (!ereg('hms-admin', $_SERVER['SERVER_NAME']))
{
    include "/nfscommon/html/admin/bam/uma_footer_oracle.phph";
}
?>

</body>
</html>

<?

//-----------------------------------------------
// FUNCTION: print_compliance_export.php
// --
// Displays the export button.
//-----------------------------------------------

function print_compliance_export(){

    global $site_id, $site_name, $org_id;

    ?>
        <form target='_iframe' class='tb' method='post' action='/csi/xls/export_xls.php'>
        <input type="hidden" name="site_id" value='<?= $site_id ?>'>
        <input type="hidden"  name="site_name" value='<?= $site_name ?>'>
        <input type='hidden' name='title' value="License Data for site '<?= $site_name ?>'">
        <input type='hidden' name='company_id' value='<?= $org_id ?>'>
        <input style="border: 1px solid black; margin: 0px; padding: 4px; width: auto; background-color: #eee; background-image: none"  type='submit' name='xls_submit' value='Export Site Compliance'>
        </form>

    <?

}

?>
