lib/DataAccess.php
<?php
/**
* A simple class for querying MySQL
*/
class DataAccess {
/**
* Private
* $db stores a database resource
*/
var $db;
/**
* Private
* $query stores a query resource
*/
var $query; // Query resource
//! A constructor.
/**
* Constucts a new DataAccess object
* @param $host string hostname for dbserver
* @param $user string dbserver user
* @param $pass string dbserver user password
* @param $db string database name
*/
function DataAccess ( $host, $user, $pass, $db ) {
$this->db = mysql_pconnect( $host, $user, $pass );
mysql_select_db( $db, $this->db );
}
//! An accessor
/**
* Fetches a query resources and stores it in a local member
* @param $sql string the database query to run
* @return void
*/
function fetch( $sql ) {
// Perform query here
$this->query = mysql_query( $sql, $this->db );
$numrows = mysql_num_rows( $this->query );
$error = mysql_error( $this->db );
return $numrows;
}
//! An accessor
/**
* Returns the id for the last row inserted
* @return mixed
*/
function getID() {
$id = mysql_insert_id( $this->db );
return $id;
}
//! An accessor
/**
* Returns an associative array of a query row
* @return mixed
*/
function free() {
mysql_free_result( $this->query );
return true;
}
//! An accessor
/**
* Returns an associative array of a query row
* @return mixed
*/
function getRow() {
if ( $row = mysql_fetch_array( $this->query, MYSQL_ASSOC ) ) {
return $row;
} else {
return false;
}
}
}
?>
lib/baseModel.php
//! A manipulator
/**
* Tells the $dboject to store this query as a resource
* Retrieves the set of documents associated with a Package
* @param $packageid the id of the package to list documents for
* @return void
*/
function listPackageActivity( $packageid ) {
$sql = "
SELECT
ActivityLog.*,
Users.FirstName,
Users.LastName,
Users.Username,
Users.UserType
FROM
ActivityLog,
Users
LEFT JOIN
UserPackages
ON
ActivityLog.User_ID = UserPackages.User_ID
WHERE
UserPackages.Package_ID = $packageid
AND
ActivityLog.User_ID = Users.ID
ORDER BY
ActivityLog.ModifiedDate ASC
";
$numrows = $this->dao->fetch( $sql );
return $numrows;
}
//! A manipulator
/**
* Tells the $dboject to store this query as a resource
* Retrieves the set of documents associated with a Package
* @param $packageid the id of the package to list documents for
* @return void
*/
function listUserPackageUsers( $packageid ) {
$sql = "
SELECT
Users.*,
UserPackages.UserType
FROM
Users
LEFT JOIN
UserPackages
ON
Users.ID = UserPackages.User_ID
WHERE
UserPackages.Package_ID = $packageid
AND
Users.Status = 1
ORDER BY
Users.LastName ASC
";
$numrows = $this->dao->fetch( $sql );
return $numrows;
}
lib/baseView.php
//! A manipulator
/**
* Displays a single Package
* @return void
*/
function AdminPackageReport( $packageid ) {
global $popup_options;
$this->page_title = "Admin: Package Report";
$action = $_SERVER['PHP_SELF'];
$userid = $_SESSION['userid'];
$_SESSION['packageid'] = $packageid;
$numrows = $this->model->listPackage( $packageid );
$packagePackage = $this->model->getData();
$_SESSION['packageshort'] = $packagePackage['ShortName'];
$_SESSION['approvaltype'] = $packagePackage['ApprovalType'];
$this->body .= "
<table>
<tr>
<td colspan=\"2\">
<h2>" . "Package Status: " . htmlentities( $packagePackage['Name'] ) . "</h2>
<p/>
<table>
<tr>
<th class=\"text\">Target Date</th>
<td>" . $this->hard_spaces( $this->date_format( strtotime( $packagePackage['TargetDate'] ) ) ) . "</td>
</tr>
<tr>
<th class=\"text\">Description</th>
<td valign=\"top\">" . htmlentities( $packagePackage['Description'] ) . "<p/></td>
</tr>
</table>
<p/>
";
$numrows = $this->model->listPackagePermissions( $packageid );
while ( $packagePermission = $this->model->getData() ) {
$key = $packagePermission['DocumentClass_ID'] . "-" . $packagePermission['UserClass_ID'] ;
$package_permissions[$key] = $packagePermission['Permission'];
}
$numrows = $this->model->listUserPackageUsers( $packageid );
$cnt = 0;
while ( $packagePackageUser = $this->model->getData() ) {
if ( $packagePackageUser['UserType'] != "admin" ) {
$package_users[$cnt]['Name'] = $packagePackageUser['FirstName'] . " " . $packagePackageUser['LastName'];
$package_users[$cnt]['ID'] = $packagePackageUser['ID'];
$package_users[$cnt]['popup_msg'] =
"<table>" .
"<tr>" .
"<th align=left>Loginname:</th>" .
"<td>" .
$packagePackageUser['Username'] .
"</td>" .
"</tr>" .
"<tr>" .
"<th align=left>Password:</th>" .
"<td>" . $packagePackageUser['Password'] . "</td>" .
"</tr>"
;
if ( $_SESSION['approvaltype'] == 'pin' ) {
$package_users[$cnt]['popup_msg'] .=
"<tr>" .
"<th align=left>PIN:</th>" .
"<td>" . $packagePackageUser['SigningKey'] . "</td>" .
"</tr>";
}
if ( $packagePackageUser['EMailAddress'] != "" ) {
$package_users[$cnt]['popup_msg'] .=
"<tr>" .
"<th align=left>EMailAddress:</th>" .
"<td>" . $packagePackageUser['EMailAddress'] . "</td>" .
"</tr>";
}
if ( $packagePackageUser['WorkPhone'] != "" ) {
$package_users[$cnt]['popup_msg'] .=
"<tr>" .
"<th align=left>WorkPhone:</th>" .
"<td>" . $packagePackageUser['WorkPhone'] . "</td>" .
"</tr>";
}
if ( $packagePackageUser['MobilePhone'] != "" ) {
$package_users[$cnt]['popup_msg'] .=
"<tr>" .
"<th align=left>MobilePhone:</th>" .
"<td>" . $packagePackageUser['MobilePhone'] . "</td>" .
"</tr>";
}
if ( $packagePackageUser['FAXPhone'] != "" ) {
$package_users[$cnt]['popup_msg'] .=
"<tr>" .
"<th align=left>FAXPhone:</th>" .
"<td>" . $packagePackageUser['FAXPhone'] . "</td>" .
"</tr>";
}
if ( $packagePackageUser['TZ'] != "" ) {
$package_users[$cnt]['popup_msg'] .=
"<tr>" .
"<th align=left>TimeZone:</th>" .
"<td>" . $packagePackageUser['TZ'] . "</td>" .
"</tr>";
}
if ( $packagePackageUser['Addr1'] != "" ) {
$package_users[$cnt]['popup_msg'] .=
"<tr>" .
"<th align=left valign=top>Address:</th>" .
"<td>" . $packagePackageUser['Addr1'] . "<br/>";
if ( $packagePackageUser['Addr2'] != "" ) {
$package_users[$cnt]['popup_msg'] .= $packagePackageUser['Addr2'] . "<br/>\n";
}
if ( $packagePackageUser['City'] != "" ) {
$package_users[$cnt]['popup_msg'] .= $packagePackageUser['City'] . ", " .
$packagePackageUser['State'] . " " . $packagePackageUser['Country'] . " " . $packagePackageUser['PostalCode'];
}
$package_users[$cnt]['popup_msg'] .=
"</td>" .
"</tr>";
}
$package_users[$cnt]['popup_msg'] .= "</table>";
$cnt++;
}
}
$this->model->listUserPackageDocuments( $packageid );
$cnt = 0;
while ( $packageDocument = $this->model->getData() ) {
$pid = $packageDocument['ID'];
$package_documents[$pid]['Description'] = $packageDocument['Description'];
$package_documents[$pid]['Name'] = $packageDocument['Name'];
$package_documents[$pid]['popup_msg'] =
"<table>" .
"<tr>" .
"<th align=left>Name:</th>" .
"<td>" . htmlentities( $packageDocument['Name'] ) . "</td>" .
"</tr>" .
"<tr>" .
"<th align=left>Size:</th>" .
"<td>" . $this->number_format_km( $packageDocument['Size'] ) . "</td>" .
"</tr>" .
"<tr>" .
"<th align=left>UploadDate:</th>" .
"<td>" . $this->hard_spaces( $this->date_format( strtotime( $packageDocument['UploadDate'] ) ) ) . "</td>" .
"</tr>";
$package_documents[$pid]['popup_msg'] .= "</table>";
if ( (int) $packageDocument['User_ID'] > 0 ) {
$uid = $packageDocument['User_ID'];
$package_documents[$pid][$uid]['DownloadDate'] = $packageDocument['DownloadDate'];
$package_documents[$pid][$uid]['ApprovalDate'] = $packageDocument['ApprovalDate'];
}
$cnt++;
}
$cnt = 0;
$this->body .= "
<p/>
<table>
<tr>
<td>
<h3>Documents / Users:</h3>
</td>
";
for ( $i = 0; $i < count($package_users); $i++ ) {
$this->body .= "<td>" . $this->popup( $package_users[$i]['popup_msg'], $package_users[$i]['Name'], "javascript:void(0);", $popup_options ) . "</td>";
}
$this->body .= "
</tr>
";
foreach ( $package_documents as $pdoc ) {
$this->body .= "<!-- pdoc=[" . print_r( $pdoc, true ) . "] -->\n";
$this->body .= "<tr>";
$this->body .= "<td>" . $this->popup( $pdoc['popup_msg'], $pdoc['Description'], "javascript:void(0);", $popup_options ) . "</td>";
for ( $k = 0; $k < count($package_users); $k++ ) {
$uid = $package_users[$k]['ID'];
$this->body .= "<!-- uid=[" . print_r( $uid, true ) . "] -->\n";
if ( isset( $pdoc[$uid]['ApprovalDate'] ) ) {
$this->body .= "<td bgcolor=\"green\">";
$this->body .= "<font color=\"white\">" . $this->hard_spaces( $this->date_format_short( strtotime( $pdoc[$uid]['ApprovalDate'] ) ) ) . "</font>";
} else if ( isset( $pdoc[$uid]['DownloadDate'] ) ) {
$this->body .= "<td bgcolor=\"yellow\">";
$this->body .= "<font color=\"black\">" . $this->hard_spaces( $this->date_format_short( strtotime( $pdoc[$uid]['DownloadDate'] ) ) ) . "</font>";
} else {
$this->body .= "<td bgcolor=\"red\">";
$this->body .= "<font color=\"white\">" . " " . "</font>";
}
$this->body .= "</td>";
}
$this->body .= "</tr>";
$cnt++;
}
if ( 0 == $cnt ) {
$this->body .= "
<tr>
<td colspan=\"3\">
</p>There are currently no documents assigned to this package!</p>
</td>
</tr>
";
}
$this->body .= "
<tr>
<td colspan=\"100\" align=\"right\">
<table>
<tr>
<td width=\"10\" bgcolor=\"green\"><font color=\"white\">Approved</font></td>
<td width=\"10\" bgcolor=\"yellow\">Downloaded</td>
<td width=\"10\" bgcolor=\"red\"><font color=\"white\">No Action</font></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=\"10\"> </td>
</tr>
</table>
";
$this->menumiddle .= "
<h3>Admin:</h3>
<ul>
<li><a href=\"$action?action=view&what=package&packageid=" . $packageid . "\">Show Package</a>
<li><a href=\"javascript:void(0);\">Email Documents</a>
<li><a href=\"javascript:void(0);\">Email Users</a>
<li><a href=\"$action?action=new&what=documentform&packageid=" . $packageid . "\">Add Documents</a>
<li><a href=\"$action?action=new&what=userform&packageid=" . $packageid . "\">Add User</a>
</ul>
<p/>
<h3>Reports:</h3>
<ul>
<li><a href=\"$action?action=view&what=packageactivity&packageid=" . $packageid . "\">Activity</a>
";
$this->sect_nav .= "
<a href=\"$action?action=view&what=package"\">Show Packages</a> | " .
"<a href=\"$action?action=new&what=packageform\">Add Package</a> | ";
}