Пример #1
0
 /**
  * Modify current reservation time
  * If this reservation is part of a recurring group, all reservations in the
  *  group will be modified that havent already passed
  * @param Object $res reservation that we are modifying
  * @param array $users_to_invite hashtable of users to invite to this reservation
  * @param array $users_to_remove hashtable of users to remove from this reservation
  * @param array $resources_to_add array of resourceids to add to this reservation
  * @param array $resources_to_remove array of resourceids to remove from this reservation	
  * @param string $accept_code acceptance code to be used for reservation accept/decline
  */
 function mod_res($res, $users_to_invite, $users_to_remove, $resources_to_add, $resources_to_remove, $accept_code)
 {
     $t = new Timer("mod_res()");
     $t->start();
     $id = $res->get_id();
     // Update the main reservation data
     $values = array($res->get_start_date(), $res->get_end_date(), $res->get_start(), $res->get_end(), mktime(), $res->get_summary(), $res->get_pending(), $res->get_allow_participation(), $res->get_allow_anon_participation(), $id);
     $query = 'UPDATE ' . $this->get_table(TBL_RESERVATIONS) . ' SET ' . ' start_date=?,' . ' end_date=?,' . ' starttime=?,' . ' endtime=?,' . ' modified=?,' . ' summary=?,' . ' is_pending=?,' . ' allow_participation=?,' . ' allow_anon_participation=?' . ' WHERE resid=?';
     $q = $this->db->prepare($query);
     $result = $this->db->execute($q, $values);
     $this->check_for_error($result);
     // Update the owner of the reservation
     $query = 'UPDATE ' . $this->get_table(TBL_RESERVATION_USERS) . ' SET memberid=? WHERE resid=? AND owner = 1';
     $q = $this->db->prepare($query);
     $result = $this->db->execute($q, array($res->get_memberid(), $res->get_id()));
     $this->check_for_error($result);
     //die('updated owner');
     // Insert all new invitees
     if (count($users_to_invite) > 0) {
         $values = array();
         // Reset values
         foreach ($users_to_invite as $memberid => $email) {
             $values[] = array($id, $memberid, 0, 1, 0, 0, $accept_code, $id, $memberid);
         }
         // Equivalent to 'INSERT INTO ' . $this->get_table(TBL_RESERVATION_USERS) . ' VALUES(?,?,?,?,?,?,?) WHERE NOT EXISTS (SELECT 1 FROM ' . $this->get_table(TBL_RESERVATION_USERS) . ' WHERE resid=? AND memberid=?)';
         // This is needed in case a user is being added to a group of recurring reservations and already exsits on another one
         $query = 'INSERT INTO ' . $this->get_table(TBL_RESERVATION_USERS) . ' SELECT ?,?,?,?,?,?,? FROM ' . $this->get_table(TBL_MUTEX) . ' mutex' . ' LEFT OUTER JOIN ' . $this->get_table(TBL_RESERVATION_USERS) . ' ru ON ru.resid=? AND ru.memberid=?' . ' WHERE mutex.i = 1 AND ru.resid IS NULL AND ru.memberid IS NULL';
         $q = $this->db->prepare($query);
         $result = $this->db->executeMultiple($q, $values);
         $this->check_for_error($result);
     }
     // Delete all removed/uninvited users
     if (count($users_to_remove) > 0) {
         $userids = array();
         // Reset values
         $userids = array_keys($users_to_remove);
         $query = 'DELETE FROM ' . $this->get_table(TBL_RESERVATION_USERS) . ' WHERE resid=? AND memberid IN (' . $this->make_del_list($userids) . ')';
         $q = $this->db->prepare($query);
         $result = $this->db->execute($q, array($id));
         $this->check_for_error($result);
     }
     // Insert all new additional resource records
     if (count($resources_to_add) > 0) {
         $values = null;
         for ($i = 0; $i < count($resources_to_add); $i++) {
             $values[] = array($id, $resources_to_add[$i], 0, $id, $resources_to_add[$i]);
         }
         // Equivalent to 'INSERT INTO ' . $this->get_table(TBL_RESERVATION_RESOURCES) . ' VALUES(?,?,?) WHERE NOT EXISTS (SELECT 1 FROM ' . $this->get_table(TBL_RESERVATION_RESOURCES) . ' WHERE resid=? AND resourceid=?)';
         // This is needed in case a resource is being added to a group of recurring reservations and already exsits on another one
         $query = 'INSERT INTO ' . $this->get_table(TBL_RESERVATION_RESOURCES) . ' SELECT ?,?,? FROM ' . $this->get_table(TBL_MUTEX) . ' mutex' . ' LEFT OUTER JOIN ' . $this->get_table(TBL_RESERVATION_RESOURCES) . ' ar ON ar.resid=? AND ar.resourceid=?' . ' WHERE mutex.i = 1 AND ar.resid IS NULL AND ar.resourceid IS NULL';
         $q = $this->db->prepare($query);
         $result = $this->db->executeMultiple($q, $values);
         $this->check_for_error($result);
     }
     // Delete all removed additional resources
     if (count($resources_to_remove) > 0) {
         $query = 'DELETE FROM ' . $this->get_table(TBL_RESERVATION_RESOURCES) . ' WHERE resid=? AND resourceid IN (' . $this->make_del_list($resources_to_remove) . ')';
         $q = $this->db->prepare($query);
         $result = $this->db->execute($q, array($id));
         $this->check_for_error($result);
     }
     $t->stop();
     $t->print_comment();
     unset($values, $query);
 }
Пример #2
0
// Connect to database
$link = CmnFns::getNewLink();
// Get Link object
// Perform function based on if search button has been pressed
if (isset($_POST['search']) || isset($_GET['text'])) {
    search($_POST['outputtype'], $_POST['searchtype']);
} else {
    showForm($db->get_min_max(), $db->get_table_data('login', array('memberid', 'fname', 'lname'), array('lname', 'fname')), $db->get_table_data('resources', array('machid', 'name'), array('name')), $db->get_table_data('schedules', array('scheduleid', 'scheduletitle'), array('scheduletitle')));
}
$t->endMain();
// End main table
$t->printHTMLFooter();
// Print HTML footer
/****** END MAIN CODE ******/
$timer->stop();
$timer->print_comment();
/**
* Perform search and print out results
* This function will perform the search for given
* criteria and print out formatted results.
* @param string $type output type
* @global $_POST['memberid'] array array of memberid's
* @global $_POST['piid'] array array of piID's
* @global $_POST['machid'] array array of machID's
* @global $_POST['startYear'] int starting year
* @global $_POST['startMonth'] int starting month
* @global $_POST['startDay'] int starting day
* @global $_POST['endYear'] int ending year
* @global $_POST['endMonth'] int ending month
* @global $_POST['endDay'] int ending day
* @global $_POST['starttime'] double starting time