Example #1
0
 public function buildUsers()
 {
     /**
      * Build a list of users.
      *
      * This builds a list of users with options to perform changes to their account.
      *
      * @author	Mark O'Russa	<*****@*****.**>
      *
      * @return	boolean	Returns a list of users with pagination, otherwise throws a customException.
      */
     global $debug, $message, $Dbc;
     try {
         $output = '';
         //Get the user count.
         $userCountStmt = $Dbc->query("SELECT\n\tcount(userId) AS 'count'\nFROM\n\tusers");
         $row = $userCountStmt->fetch(PDO::FETCH_ASSOC);
         $itemCount = $row['count'];
         //Get the pagination info.
         $pagination = new Adrlist_Pagination('buildUsers', 'buildUsers', $itemCount, 'Search Users');
         list($offset, $limit) = $pagination->offsetLimit();
         //Get the users.
         $usersStmt = $Dbc->prepare("SELECT\n\tuserId AS 'userId',\n\tprimaryEmail AS 'primaryEmail',\n\tsecondaryEmail AS 'secondaryEmail',\n\tfirstName AS 'firstName',\n\tlastName AS 'lastName',\n\tdateAdded AS 'dateAdded'\nFROM\n\tusers\nLIMIT " . $offset . ', ' . $limit);
         $usersStmt->execute();
         $userRows = array();
         while ($row = $usersStmt->fetch(PDO::FETCH_ASSOC)) {
             $userRows[] = array($row['userId'], '<span class="blue bold">P:</span> ' . $row['primaryEmail'] . '<br><span class="blue bold">S:</span> ' . $row['secondaryEmail'], '<span class="blue bold">F:</span> ' . $row['firstName'] . '<br><span class="blue bold">L:</span> ' . $row['lastName'], $row['dateAdded']);
         }
         $pagination->setParameters($itemCount, $offset, $limit, 'buildUsers');
         $titleArray = array('userId', 'Email', 'Name', 'Date Added');
         $cssWidths = array('3em', '18em', '10em', '8em');
         $buildRows = new Adrlist_BuildRows($titleArray, $userRows, $cssWidths);
         $pagination = $pagination->output();
         return $pagination['paginationTop'] . $buildRows->outputTitleRow() . $buildRows->outputRows() . $pagination['paginationBottom'];
     } catch (Adrlist_CustomException $e) {
     } catch (PDOException $e) {
         error(__LINE__, '', '<pre class="red">' . $e . '</pre>');
     }
 }
function buildDailyDigest()
{
    /*
    Returns error logs for the day.
    All times are UTC.
    */
    global $debug, $message, $success, $errorDbc, $returnThis;
    $output = '';
    try {
        $midnight = strtotime('-1 day', mktime(0, 0, 0));
        $startDate = isset($_POST['startDate']) ? $_POST['startDate'] : date('Y-m-d H:i:s', $midnight);
        $endDate = isset($_POST['endDate']) ? $_POST['endDate'] : date('Y-m-d H:i:s', $midnight + 86399);
        $params = array($startDate, $endDate);
        //$time = new Adrlist_MeasureTime('countStmt');
        $countStmt = $errorDbc->prepare("SELECT COUNT(errorId) AS 'count' FROM errorReporting WHERE errorDatetime BETWEEN ? AND ?");
        $countStmt->execute($params);
        $row = $countStmt->fetch(PDO::FETCH_ASSOC);
        //$debug->add($time->output());
        $itemCount = $row['count'];
        $pagination = new Adrlist_Pagination('buildDailyDigest', 'dailyDigest', $itemCount);
        $offsetLimit = $pagination->offsetLimit();
        list($offset, $limit) = $offsetLimit;
        $dailyDigestStmt = "SELECT\n\terrorId AS 'errorId',\n\terrorDatetime AS 'datetime',\n\tserverName AS 'serverName',\n\thttpHost AS 'httpHost',\n\thttpResponseStatusCode AS 'httpResponseStatusCode',\n\tuserAgent AS 'userAgent',\n\trequestUri AS 'requestUri',\n\tremoteAddress AS 'remoteAddress',\n\thttpReferrer AS 'httpReferrer',\n\tdebug AS 'debug'\nFROM\n\terrorReporting\nWHERE\n\tdatetime BETWEEN ? AND ?\nORDER BY\n\tserverName,httpHost,errorDatetime\nLIMIT " . $offset . ', ' . $limit;
        //Get all of the items for statistics.
        $debug->add($dailyDigestStmt);
        $debug->printArray($params, '$params');
        $dailyDigestStatsStmt = $errorDbc->prepare($dailyDigestStmt);
        //$time = new Adrlist_MeasureTime('dailyDigestStatsStmt');
        $dailyDigestStatsStmt->execute($params);
        //$debug->add($time->output());
        //General Statistics like how many errors per domain.
        $errors = array();
        $serverNameArray = array();
        $sucker = 0;
        /*
        		 array(
        *		0 => array(
        *				Name,
        *				Date,
        *				etc
        *			),
        *		1 => array(
        *				Name,
        *				Date,
        *				etc
        *			)
        *	)
        */
        while ($row = $dailyDigestStatsStmt->fetch(PDO::FETCH_ASSOC)) {
        }
        //Get just the server names to count them.
        $serverNamesStmt = $errorDbc->prepare("SELECT\n\tserverName AS 'serverName'\nFROM\n\terrorReporting\nWHERE\n\terrorDatetime BETWEEN ? AND ?");
        $serverNamesStmt->execute($params);
        while ($row = $serverNamesStmt->fetch(PDO::FETCH_ASSOC)) {
            if (!array_key_exists($row['serverName'], $serverNameArray)) {
                $serverNameArray[$row['serverName']] = 0;
            }
            $serverNameArray[$row['serverName']] = $serverNameArray[$row['serverName']] + 1;
        }
        $debug->printArray(array($serverNameArray), '$serverNameArray');
        $newServerNameArray = array();
        foreach ($serverNameArray as $key => $value) {
            $newServerNameArray[] = array($key, $value);
        }
        $generalStatsTitleRow = array('Server Name', '# of Records');
        $generalStatsCssWidths = array(20, 5);
        $generalStatsBuildRows = new Adrlist_BuildRows($generalStatsTitleRow, $newServerNameArray, $generalStatsCssWidths);
        $generalStats = '<div class="bold textCenter textLarge" style="margin-top:2em">General Statistics</div>
' . $generalStatsBuildRows->output();
        $dailyDigestStmt = $errorDbc->prepare($dailyDigestStmt);
        $dailyDigestStmt->execute(array($startDate, $endDate));
        //$pagination = new BuildPagination($itemCount,$offset,$limit,'dailyDigest');
        //$pagination->setPagesNumbersToDisplay(25);
        //$pagination = $pagination->output();
        //Column widths in em.
        $widthDatetime = 8;
        $widthServerName = '18';
        $widthHttpHost = 18;
        $widthHttpResponse = 8;
        $widthUserAgent = 15;
        $widthRequestUri = 18;
        $widthRemoteAddress = 8;
        $widthHttpReferrer = 20;
        $widthDebug = 8;
        $cssWidths = array(2, 8, 18, 18, 8, 15, 18, 8, 20, 8);
        $titleRow = array('', 'Datetime', 'Server Name', 'Http Host', 'HTTP Response Status Code', 'User Agent', 'Request URI', 'Remote Address', 'Http Referrer');
        $pagination = $pagination->output();
        $buildRows = new Adrlist_BuildRows($titleRow, '', $cssWidths);
        $table = $buildRows->outputTitleRow();
        $class = 'rowAlt';
        $x = $offset + 1;
        while ($row = $dailyDigestStmt->fetch(PDO::FETCH_ASSOC)) {
            if ($class == 'rowWhite') {
                $class = 'rowAlt';
            } else {
                $class = 'rowWhite';
            }
            $table .= '<div class="hand ' . $class . ' clear relative" style="overflow:hidden" id="errorTrigger' . $row['errorId'] . '" errorId="' . $row['errorId'] . '">
	<div class="row">' . $x . '</div>
	<div class="row" style="width:' . $widthDatetime . 'em;">' . $row['datetime'] . '</div>
	<div class="row" style="width:' . $widthServerName . 'em;">' . $row['serverName'] . '</div>
	<div class="row" style="width:' . $widthHttpHost . 'em;">
		<span id="httpHostShortShowHide' . $row['errorId'] . '">' . shortenText($row['httpHost'], $widthHttpHost, false, true, true) . '</span>
		<span class="hide" id="HttpHostLongShowHide' . $row['errorId'] . '">' . $row['httpHost'] . '</span>
	</div>
	<div class="row" style="width:' . $widthHttpResponse . 'em;">' . $row['httpResponseStatusCode'] . '</div>
	<div class="row" style="width:' . $widthUserAgent . 'em;">
		<span id="userAgentShortShowHide' . $row['errorId'] . '">' . shortenText($row['userAgent'], $widthUserAgent, false, true, true) . '</span>
		<span class="hide" id="userAgentLongShowHide' . $row['errorId'] . '">' . $row['userAgent'] . '</span>
	</div>
	<div class="row" style="width:' . $widthRequestUri . 'em;">
		<span id="requestUriShortShowHide' . $row['errorId'] . '">' . shortenText($row['requestUri'], $widthRequestUri, false, true, true) . '</span>
		<span class="hide" id="requestUriLongShowHide' . $row['errorId'] . '">' . urldecode($row['requestUri']) . '</span>
	</div>
	<div class="row" style="width:' . $widthRemoteAddress . 'em;">' . $row['remoteAddress'] . '</div>
	<div class="row" style="width:' . $widthHttpReferrer . 'em;">
		<span id="httpReferrerShortShowHide' . $row['errorId'] . '">' . shortenText($row['httpReferrer'], $widthHttpReferrer, false, true, true) . '</span>
		<span class="hide" id="httpReferrerLongShowHide' . $row['errorId'] . '">' . $row['httpReferrer'] . '</span>
	</div>
	<div class="break hide textLeft" id="debugShowHide' . $row['errorId'] . '">' . $row['debug'] . '</div>
</div>
';
            $x++;
        }
        $output .= 'Showing <input type="text" id="startDate" value="' . $startDate . '"> to <input type="text"  id="endDate" value="' . $endDate . '"> <span class="buttonBlueThin" id="dateRangeGo">Go</span>' . $generalStats . '<div class="hr3"></div><div class="bold textCenter textLarge" style="margin-top:1em">Errors</div>' . $pagination . $table . $pagination;
        if (MODE == 'buildDailyDigest') {
            $success = true;
            $returnThis['output'] = $output;
            $returnThis['container'] = 'dailyDigestHolder';
        }
    } catch (PDOException $e) {
        error(__LINE__, '', '<pre>' . $e . '</pre>');
    }
    if (MODE == 'buildDailyDigest') {
        returnData();
    } else {
        return $output;
    }
}
function buildUsers()
{
    global $debug, $message, $success, $Dbc, $returnThis;
    try {
        $output = '';
        //Get the user count.
        $userCountStmt = $Dbc->query("SELECT\n\tcount(userId) AS 'count'\nFROM\n\tusers");
        $row = $userCountStmt->fetch(PDO::FETCH_ASSOC);
        $itemCount = $row['count'];
        //Get the pagination info.
        $pagination = new Adrlist_Pagination();
        $offsetLimit = $pagination->getOffsetLimit($_SESSION['userId'], $_SERVER['SCRIPT_NAME'], 'buildUsers');
        if (isset($_POST['offset'])) {
            $offset = $_POST['offset'];
            $pagination->setOffset($_SESSION['userId'], $_SERVER['SCRIPT_NAME'], 'buildUsers', $offset);
        } else {
            $offset = $offsetLimit[0];
        }
        $offset = $offset > $itemCount ? 0 : $offset;
        //When changing list viewing options the offset may be larger than the count.
        if (isset($_POST['limit'])) {
            $limit = $_POST['limit'];
            $pagination->setLimit($_SESSION['userId'], $_SERVER['SCRIPT_NAME'], 'buildUsers', $limit);
            $offset = 0;
            //We must reset the offset when changing the limit.
        } else {
            $limit = $offsetLimit[1];
        }
        //Get the users.
        $usersStmt = $Dbc->prepare("SELECT\n\tuserId AS 'userId',\n\tprimaryEmail AS 'primaryEmail',\n\tsecondaryEmail AS 'secondaryEmail',\n\tfirstName AS 'firstName',\n\tlastName AS 'lastName',\n\tdateAdded AS 'dateAdded'\nFROM\n\tusers\nLIMIT " . $offset . ', ' . $limit);
        $usersStmt->execute();
        $userRows = array();
        while ($row = $usersStmt->fetch(PDO::FETCH_ASSOC)) {
            $userRows[] = array($row['userId'], '<span class="blue bold">P:</span> ' . $row['primaryEmail'] . '<br><span class="blue bold">S:</span> ' . $row['secondaryEmail'], '<span class="blue bold">F:</span> ' . $row['firstName'] . '<br><span class="blue bold">L:</span> ' . $row['lastName'], $row['dateAdded']);
        }
        $pagination->setParameters($itemCount, $offset, $limit, 'buildUsers');
        $titleArray = array('userId', 'Email', 'Name', 'Date Added');
        $cssWidths = array('3em', '18em', '10em', '8em');
        $buildRows = new Adrlist_BuildRows($titleArray, $userRows, $cssWidths);
        $pagination = $pagination->output();
        $output .= $pagination['paginationTop'] . $buildRows->outputTitleRow() . $buildRows->outputRows() . $pagination['paginationBottom'];
    } catch (Adrlist_CustomException $e) {
    } catch (PDOException $e) {
        error(__LINE__, '', $debug->printArray($e) . '<pre class="red">' . $e . '</pre>');
    }
    if (MODE == 'buildUsers') {
        $success = true;
        $returnThis['output'] = $output;
        $returnThis['container'] = 'buildUsersHolder';
        returnData();
    } else {
        return $output;
    }
}