index.php

<?php

require_once( 'lib/DataAccess.php' );
require_once( 'lib/baseModel.php' );
require_once( 'lib/baseView.php' );
require_once( 'lib/baseController.php' );

require_once( 'site.php' );

$dao =& new DataAccess( $db_host, $db_user, $db_password, $db_database );

$baseModel =& new baseModel( $dao );

$baseController =& new baseController( $baseModel, $_REQUEST, $file_storage, $text_title );

echo $baseController->display();


?>

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/baseController.php


          switch ( $action ) {

            case "info":
              phpinfo();
              exit;
              break;

            case "view":
              switch ( $what ) {
                case "document":
                  if ( ! empty( $getvars[document . 'id'] ) ) {
                    $docid = intval( $getvars[document . 'id'] );
                    $this->DocumentItem( $docid );
                  } else {
                    if ( ! empty( $getvars[package . 'id'] ) ) {
                      $packageid = intval( $getvars[package . 'id'] );
                      $this->DocumentTable( $packageid );
                    }
                  }
                  break;
                case "packagestatus":
                  if ( $_SESSION['usertype'] == 'admin' ) {
                    if ( ! empty( $getvars['packageid'] ) ) {
                      $packageid = intval( $getvars['packageid'] );
                      $this->AdminPackageReport( $packageid );
                    }
                  } else {
                    $this->PackageTable();
                  }
                  break;
                case "packageactivity":
                  if ( $_SESSION['usertype'] == 'admin' ) {
                    if ( ! empty( $getvars['packageid'] ) ) {
                      $packageid = intval( $getvars['packageid'] );
                      $this->AdminPackageActivity( $packageid );
                    }
                  } else {
                    $this->PackageTable();
                  }
                  break;
                case "package":
                  if ( ! empty( $getvars['packageid'] ) ) {
                    $packageid = intval( $getvars['packageid'] );
                    $_SESSION['packageid'] = $packageid;
                    if ( $_SESSION['usertype'] == 'admin' ) {
                      $this->AdminPackageItem( $packageid );
                    } else {
                      $this->UserPackageItem( $packageid );
                    }
                  } else {
                    $this->PackageTable();
                  }
                  break;
                default:
                  $this->HomePage( $logged_in );
                  break;
              }
              break;

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> | ";
    }