Changeset 98
- Timestamp:
- 10/24/06 22:21:07 (2 years ago)
- Files:
-
- branches/com_mls_seatmap/eventTimes/images (deleted)
- branches/com_mls_seatmap/eventTimes/lang (deleted)
- branches/com_mls_seatmap/eventTimes/mls_seatmap.class.php (modified) (2 diffs)
- branches/com_mls_seatmap/eventTimes/mls_seatmap.html.php (modified) (5 diffs)
- branches/com_mls_seatmap/eventTimes/mls_seatmap.php (modified) (13 diffs)
- branches/com_mls_seatmap/eventTimes/mls_seatmap.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/com_mls_seatmap/eventTimes/mls_seatmap.class.php
r62 r98 193 193 } 194 194 195 function getStatusTime($seatid = 0) { 196 global $database, $mosConfig_offset, $my; 197 if($this) { 198 $seatid = @$this->id ? $this->id : $seatid; 199 } 200 $database->setQuery( "SELECT * FROM `#__mls_seatmap_room_elements_users` WHERE `seatid`='".$seatid."'" ); 201 $rows = $database->loadObjectList(); 202 foreach($rows as $row) { 203 if($row->userid == $my->id && $row->status == 1) { 204 //I am on this seat 205 $return = 1; 206 break; 207 } elseif($row->userid != $my->id && $row->status == 1) { 208 echo "hihi"; 209 } 210 } 211 } 212 213 /** 214 * This function simply checks, whether I can occupy a seat or not 215 * I can occupy a seat, if I havent already occupied it or somebody occupied it for the whole event 216 */ 217 function canioccupy($seatid = 0) { 218 global $database, $mosConfig_offset, $my; 219 if($this) { 220 $seatid = @$this->id ? $this->id : $seatid; 221 } 222 $database->setQuery( "SELECT `id`" 223 ."\n FROM `#__mls_seatmap_room_elements_users`" 224 ."\n WHERE" 225 ."\n `seatid`='".$seatid."'" 226 ."\n AND ((`userid`='".$my->id."' AND `status`='1')" 227 ."\n OR (`whole_event`='1' AND `status`='1'))" ); 228 $database->query(); 229 230 if($database->getnumrows()) { 231 return 0; 232 } else { 233 return 1; 234 } 235 } 236 237 /** 238 * This function simply checks, whether I can release a seat or not 239 * I can release a seat, when I occupy it or if it has been reserved for me 240 */ 241 function canirelease($seatid = 0) { 242 global $database, $mosConfig_offset, $my; 243 if($this) { 244 $seatid = @$this->id ? $this->id : $seatid; 245 } 246 $now = date( "Y-m-d H:i:s", time()+$mosConfig_offset*60*60 ); 247 $database->setQuery( "SELECT `id`" 248 ."\n FROM `#__mls_seatmap_room_elements_users`" 249 ."\n WHERE" 250 ."\n `seatid`='".$seatid."'" 251 ."\n AND ((`userid`='".$my->id."' AND `status`='1')" 252 ."\n OR (`res_userid`='".$my->id."' AND `status`='2'))" ); 253 $database->query(); 254 255 if($database->getnumrows()) { 256 return 1; 257 } else { 258 return 0; 259 } 260 } 261 262 195 263 function getStatus($seatid = 0) { 196 264 global $database, $mosConfig_offset, $my; 197 $seatid = @$this->id ? $this->id : $seatid; 265 if($this) { 266 $seatid = @$this->id ? $this->id : $seatid; 267 } 198 268 $database->setQuery( "SELECT * FROM `#__mls_seatmap_room_elements` WHERE `id`='".$seatid."'" ); 199 269 $seat = $database->loadObjectList(); … … 224 294 return $return; 225 295 } 296 297 function getOccupiedTimes() { 298 global $database; 299 $database->setQuery( "SELECT people.*, time.name AS `timename`, u.name, u.username, u.email," 300 ."\n IF(people.whole_event = 1,event.start,time.start) AS `start`," 301 ."\n IF(people.whole_event = 1,event.end,time.end) AS `end`" 302 ."\n FROM `#__mls_seatmap_room_elements_users` AS `people`" 303 ."\n INNER JOIN `#__users` AS `u` ON u.id=people.userid" 304 ."\n INNER JOIN `#__mls_seatmap_room_elements` AS `seat` ON seat.id=people.seatid" 305 ."\n INNER JOIN `#__mls_seatmap_rooms` AS `room` ON room.id=seat.roomid" 306 ."\n INNER JOIN `#__mls_events` AS `event` ON event.id=room.eventid" 307 ."\n LEFT JOIN `#__mls_events_times` AS `time` ON time.id=people.timeid" 308 ."\n WHERE people.seatid='".$this->id."' AND people.status='1'" ); 309 310 $rows = $database->loadObjectList(); 311 312 return $rows; 313 } 314 315 function getReservedTimes() { 316 global $database, $mosConfig_offset; 317 $now = date( "Y-m-d H:i:s", time()+$mosConfig_offset*60*60 ); 318 $database->setQuery( "SELECT people.*, time.name AS `timename`, u.name, u.username, u.email,people.res_userid," 319 ."\n IF(people.whole_event = 1,event.start,time.start) AS `start`," 320 ."\n IF(people.whole_event = 1,event.end,time.end) AS `end`" 321 ."\n FROM `#__mls_seatmap_room_elements_users` AS `people`" 322 ."\n INNER JOIN `#__users` AS `u` ON u.id=people.userid" 323 ."\n INNER JOIN `#__mls_seatmap_room_elements` AS `seat` ON seat.id=people.seatid" 324 ."\n INNER JOIN `#__mls_seatmap_rooms` AS `room` ON room.id=seat.roomid" 325 ."\n INNER JOIN `#__mls_events` AS `event` ON event.id=room.eventid" 326 ."\n LEFT JOIN `#__mls_events_times` AS `time` ON time.id=people.timeid" 327 ."\n WHERE people.seatid='".$this->id."' AND people.status='2' AND people.res_end_time > '".$now."'" ); 328 329 $rows = $database->loadObjectList(); 330 331 return $rows; 332 } 333 334 /** 335 * Checks, at which times a seat is free and return them in an array of objects 336 * if the second argument $userid is given, reserved times for the given userid will be treated as 'free' times 337 */ 338 function getFreeTimes($occupied = 0, $userid = 0) { 339 global $database, $mosConfig_offset; 340 //if we do not already know which times are occupied, fetch them now 341 if(!$occupied) { 342 $occupied = $this->getOccupiedTimes(); 343 $reserved = $this->getReservedTimes(); 344 foreach($reserved as $res) { 345 if($userid && $res->res_userid != $userid) { 346 array_push($occupied, $res); 347 } 348 } 349 } 350 351 //now, get the times available 352 $database->setQuery( "SELECT time.id,time.name," 353 ."\n IF(time.id IS NULL,event.start,time.start) AS `start`," 354 ."\n IF(time.id IS NULL,event.end,time.end) AS `end`" 355 ."\n FROM `#__mls_seatmap_room_elements` AS `seat`" 356 ."\n INNER JOIN `#__mls_seatmap_rooms` AS `room` ON room.id=seat.roomid" 357 ."\n INNER JOIN `#__mls_events` AS `event` ON event.id=room.eventid" 358 ."\n LEFT JOIN `#__mls_events_times` AS `time` ON time.eventid=room.eventid" 359 ."\n WHERE seat.id='".$this->id."'" ); 360 361 $rows = $database->loadObjectList(); 362 $freetimes = array(); 363 364 //and here comes the buggy stuff. Match them agains each other 365 foreach($rows as $row) { 366 $free = 1; 367 foreach($occupied as $occ) { 368 if(($occ->start < $row->start) && ($occ->end > $row->start && $occ->end < $row->end)) { 369 //starts before, ends in the middle 370 $free = 0; 371 } elseif(($occ->start > $row->start && $occ->start < $row->end) && ($occ->end > $row->end)) { 372 //starts in the middle, ends after 373 $free = 0; 374 } elseif(($occ->start > $row->start && $occ->start < $row->end) && ($occ->end > $row->start && $occ->end < $row->end)) { 375 //starts in the middle, ends in the middle 376 $free = 0; 377 } elseif($occ->start < $row->start && $occ->end > $row->end) { 378 //starts before, ends after 379 $free = 0; 380 } elseif($occ->start == $row->start && ($occ->end > $row->start && $occ->end < $row->end)) { 381 //starts same time, ends in the middle 382 $free = 0; 383 } elseif(($occ->start > $row->start && $occ->start < $row->end) && $occ->end == $row->end) { 384 //starts in the middle, ends same time 385 $free = 0; 386 } elseif($occ->start < $row->start && $occ->end == $row->end) { 387 //starts before, ends same time 388 $free = 0; 389 } elseif($occ->start == $row->start && $occ->end > $row->end) { 390 //starts same time, ends after 391 $free = 0; 392 } elseif($occ->start == $row->start && $occ->end == $row->end) { 393 //starts same time, ends same time 394 $free = 0; 395 } 396 } 397 if($free) { 398 $freetimes[] = $row; 399 } 400 } 401 402 return $freetimes; 403 } 226 404 }; 227 405 406 /** 407 * MLS Seatmap Seat-User table class 408 */ 409 class mosMLS_seatmap_seat_user extends mosDBTable { 410 /** @var int Primary key */ 411 var $id=null; 412 /** @var int */ 413 var $seatid=null; 414 /** @var int */ 415 var $userid=null; 416 /** @var int */ 417 var $res_userid=null; 418 /** @var int */ 419 var $status=null; 420 /** @var date */ 421 var $res_start_time=null; 422 /** @var date */ 423 var $res_end_time=null; 424 /** @var int */ 425 var $timeid=null; 426 427 /** 428 * @param database A database connector object 429 */ 430 function mosMLS_seatmap_seat_user( &$db ) { 431 $this->mosDBTable( '#__mls_seatmap_room_elements_users', 'id', $db ); 432 } 433 }; 228 434 ?> branches/com_mls_seatmap/eventTimes/mls_seatmap.html.php
r66 r98 220 220 } 221 221 222 function showSeatDetails($seat, $ option, $Itemid) {223 global $my, $l, $task, $database, $mosConfig_live_site ;222 function showSeatDetails($seat, $users, $option, $Itemid) { 223 global $my, $l, $task, $database, $mosConfig_live_site, $mosConfig_offset; 224 224 $l->setBlock("rooms"); 225 switch($seat->status) {226 case "0":227 $status = $l->m("status_free");228 break;229 case "1":230 $status = $l->m("status_occupied");231 break;232 case "2":233 $status = $l->m("status_reserved");234 break;235 }236 237 225 ?> 238 226 <div align="center"> … … 247 235 <table border="0" cellspacing="1" cellpadding="3" width="100%"> 248 236 <tr> 249 <td class="sectiontableheader" align="right" width="150"><?=$l->m("status");?>:</td>250 <td class="sectiontableentry2"><?=$status;?></td>251 </tr>252 <tr>253 237 <td class="sectiontableheader" align="right" width="150"><?=$l->m("name");?>:</td> 254 238 <td class="sectiontableentry2"><?=$seat->name;?></td> … … 258 242 <td class="sectiontableentry2"><?=$seat->ip;?></td> 259 243 </tr> 260 <?php 261 $check = mosMLS_seatmap_seat::getStatus($seat->id); 262 if($check == 3 OR $check == 4 OR $check == 5) { 263 //this seat is reserved 264 ?> 265 <tr> 266 <td class="sectiontableheader" align="right" width="150"><?=$l->m("reserved_by");?>:</td> 267 <td class="sectiontableentry2"><?=$seat->username;?></td> 268 </tr> 269 <tr> 270 <td class="sectiontableheader" align="right" width="150"><?=$l->m("reserved_for");?>:</td> 271 <td class="sectiontableentry2"><?=$seat->res_username;?></td> 272 </tr> 273 <tr> 274 <td class="sectiontableheader" align="right" width="150"><?=$l->m("reserved_at");?>:</td> 275 <td class="sectiontableentry2"><?=$seat->res_start_time;?></td> 276 </tr> 277 <tr> 278 <td class="sectiontableheader" align="right" width="150"><?=$l->m("reserved_until");?>:</td> 279 <td class="sectiontableentry2"><?=$seat->res_end_time;?></td> 280 </tr> 281 <?php 282 } 283 if($check == 1 OR $check == 2) { 284 //this seat is occupied, either by me or someone else 285 ?> 286 <tr> 287 <td class="sectiontableheader" align="right" width="150"><?=$l->m("occupied_by");?>:</td> 288 <td class="sectiontableentry2"><?=$seat->username;?></td> 289 </tr> 290 <?php 291 } 244 </table> 245 246 <h3><?=$l->m("users_on_seat");?></h3> 247 <table border="0" cellspacing="1" cellpadding="3" width="100%"> 248 <tr> 249 <td class="sectiontableheader"><?=$l->m("user");?>:</td> 250 <td class="sectiontableheader"><?=$l->m("time");?>:</td> 251 <td class="sectiontableheader"><?=$l->m("status");?>:</td> 252 <td class="sectiontableheader"><?=$l->m("reservation");?>:</td> 253 </tr> 254 <?php 255 $k = 0; 256 for($i = 0; $i < count($users); $i++) { 257 $row = $users[$i]; 258 $class = $k ? "sectiontableentry2" : "sectiontableentry1"; 259 $user = $row->res_username ? $row->res_username : $row->username; 260 if($row->timeid) { 261 $time = $row->timename."<br />"; 262 $time .= "<nobr>" . $row->timestart . "</nobr> - <nobr>" . $row->timeend . "</nobr>"; 263 } else { 264 $time = $l->m("whole_event")."<br />"; 265 $time .= "<nobr>" . $row->eventstart . "</nobr> - <nobr>" . $row->eventend . "</nobr>"; 266 } 267 $now = date( "Y-m-d H:i:s", time()+$mosConfig_offset*60*60 ); 268 if($row->status == 1) { 269 $status = $l->m("status_occupied"); 270 } elseif($row->status == 2 AND $row->res_end_time > $now) { 271 $status = $l->m("status_reserved"); 272 } elseif($row->status == 2 AND $row->res_end_time < $now) { 273 $status = $l->m("status_reservation_ended"); 274 } 275 if($row->status == 2) { 276 $reservation = "<nobr>" . $row->res_start_time . "</nobr> - <nobr>" . $row->res_end_time . "</nobr>"; 277 } else { 278 $reservation = " "; 279 } 280 ?> 281 <tr> 282 <td class="<?=$class;?>" valign="top"><?=$user;?></td> 283 <td class="<?=$class;?>" valign="top"><?=$time;?></td> 284 <td class="<?=$class;?>" valign="top"><?=$status;?></td> 285 <td class="<?=$class;?>" valign="top"><?=$reservation; ?></td> 286 </tr> 287 <?php 288 } 289 ?> 290 <table border="0" cellspacing="1" cellpadding="3" width="100%"> 291 <?php 292 292 //print administrative links 293 if($ check == 0) {293 if($seat->can_occupy) { 294 294 //seat is free 295 295 //I can occupy or reserve … … 306 306 } 307 307 308 if($ check == 1 OR $check == 5) {308 if($seat->can_release) { 309 309 //I am on this seat or it is reserved for me 310 310 //I can release … … 313 313 <td></td> 314 314 <td class="td_mark"><a href="?option=<?=$option;?>&Itemid=<?=$Itemid;?>&task=release_seat&seatid=<?=$seat->id;?>"><?= $l->m("release"); ?></a></td> 315 </tr>316 <?php317 }318 if($check == 5) {319 //this seat is reserved for me320 //I can occupy321 ?>322 <tr>323 <td></td>324 <td class="td_mark"><a href="?option=<?=$option;?>&Itemid=<?=$Itemid;?>&task=occupy_seat&seatid=<?=$seat->id;?>"><?= $l->m("occupy"); ?></a></td>325 315 </tr> 326 316 <?php branches/com_mls_seatmap/eventTimes/mls_seatmap.php
r62 r98 14 14 //we need the events class 15 15 require_once( $mainframe->getPath( 'class', 'com_mls_events' ) ); 16 //get config 17 require_once( $mosConfig_absolute_path."/components/com_mls_seatmap/mls_seatmap.config.php" ); 16 18 17 19 $Itemid = mosGetParam($_REQUEST,'Itemid'); … … 25 27 occupySeat( $seatid, $option, $Itemid ); 26 28 break; 29 case "save_occupy_seat": 30 saveOccupySeat( $seatid, $option, $Itemid ); 31 break; 27 32 case "reserve_seat": 28 33 reserveSeat( $seatid, $option, $Itemid ); … … 59 64 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$room->eventid."&mosmsg=".urlencode($l->m("err_not_paid","general")) ); 60 65 } 61 $check = mosMLS_seatmap_seat::getStatus($id); 66 if(mosMLS_seatmap_seat::canirelease($id)) { 67 $database->setQuery( "DELETE FROM `#__mls_seatmap_room_elements_users` WHERE `seatid`='".$id."' AND ((`userid`='".$my->id."' AND `status`='1') OR (`res_userid`='".$my->id."' AND `status`='2'))" ); 68 $database->query(); 69 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("msg_seat_released")) ); 70 } 71 /** $check = mosMLS_seatmap_seat::getStatus($id); 62 72 if($check == 2) { 63 73 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("err_occupied")) ); … … 65 75 if($check == 3) { 66 76 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("err_reserved")) ); 67 } 68 if($check == 1 OR $check == 5) { 69 $database->setQuery( "UPDATE `#__mls_seatmap_room_elements` SET `status`='0', `userid`='', `res_userid`='', `res_start_time`='', `res_end_time`='' WHERE `id`='".$id."'" ); 70 $database->query(); 71 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("msg_seat_released")) ); 72 } 77 } */ 73 78 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid ); 74 79 } … … 78 83 $l->setBlock("general"); 79 84 85 /** get some data (seat, room, event) */ 80 86 $row = new mosMLS_seatmap_seat( $database ); 81 87 $row->load( $id ); … … 87 93 $event->load($room->eventid); 88 94 95 /** check, whether the user has paid or not */ 89 96 if(!mosMLS_events_participant::checkPaid($my->id, $room->eventid)) { 90 97 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$room->eventid."&mosmsg=".urlencode($l->m("err_not_paid","general")) ); … … 99 106 } 100 107 if($check == 0) { 101 / /show a select list of users which have paid for this event and which don't occupy another seat108 /** show a select list of users which have paid for this event and which don't occupy another seat */ 102 109 $now = date( "Y-m-d H:i:s", time()+$mosConfig_offset*60*60 ); 103 110 $database->setQuery( "SELECT u.id,u.username" … … 123 130 124 131 function saveReserveSeat( $option, $Itemid ) { 125 global $database, $my, $mainframe, $l ;132 global $database, $my, $mainframe, $l, $cnf_mls_sm; 126 133 $l->setBlock("general"); 127 134 $row = new mosMLS_seatmap_seat( $database ); … … 131 138 } 132 139 $row->res_start_time = $now = date( "Y-m-d H:i:s", time()+$mosConfig_offset*60*60 ); 133 $row->res_end_time = $now = date( "Y-m-d H:i:s", time()+86400* 3+$mosConfig_offset*60*60 );140 $row->res_end_time = $now = date( "Y-m-d H:i:s", time()+86400*$cnf_mls_sm["reservation_time"]+$mosConfig_offset*60*60 ); 134 141 $row->status = 2; 135 142 $row->userid = $my->id; … … 148 155 149 156 function occupySeat( $id, $option, $Itemid) { 157 global $database, $my, $l, $mosConfig_offset, $gid; 158 $l->setBlock("general"); 159 160 /** First, load some data */ 161 $database->setQuery( "SELECT s.*,e.access, r.eventid" 162 ."\n FROM `#__mls_seatmap_room_elements` AS `s`" 163 ."\n INNER JOIN `#__mls_seatmap_elements` AS `e` ON e.id=s.elementid" 164 ."\n INNER JOIN `#__mls_seatmap_elements_categories` AS `c` ON c.id=e.categoryid" 165 ."\n INNER JOIN `#__mls_seatmap_rooms` AS `r` ON r.id=s.roomid" 166 ."\n WHERE s.id='".$id."'"); 167 $seat = $database->loadObjectList(); 168 $seat = $seat[0]; 169 $room = new mosMLS_seatmap_room( $database ); 170 $room->load($seat->roomid); 171 172 /** check, whether the person has paid or not */ 173 if(!mosMLS_events_participant::checkPaid($my->id, $room->eventid)) { 174 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("err_not_paid","general")) ); 175 } 176 177 /** check, whether the person already occupies another seat for this event */ 178 $database->setQuery( "SELECT COUNT(*) FROM `#__mls_seatmap_room_elements_users` AS `people`" 179 ."\n INNER JOIN `#__mls_seatmap_room_elements` AS `seat` ON seat.id=people.seatid" 180 ."\n INNER JOIN `#__mls_seatmap_rooms` AS `room` ON room.id=seat.roomid" 181 ."\n WHERE room.eventid='".$room->eventid."' AND people.status='1' AND people.userid='".$my->id."'" ); 182 if($database->loadResult()) { 183 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("err_occupy_seat")) ); 184 } 185 186 /** now get the free times */ 187 $myseat = new mosMLS_seatmap_seat( $database ); 188 $myseat->load($seat->id); 189 $free = $myseat->getFreeTimes(0,$my->id); 190 191 /** check, which times the user has paid for */ 192 $database->setQuery( "SELECT * FROM `#__mls_events_participants` WHERE `userid`='".$my->id."' AND `eventid`='".$room->eventid."'" ); 193 $participant = array(); 194 $database->loadObject($participant); 195 if($participant->id && $participant->timeid) { 196 /** the user has paid for a specific time. Lets see if this one is free */ 197 foreach($free as $time) { 198 if($time->id == $participant->timeid) { 199 $valid_time = $time; 200 } 201 } 202 if(!$valid_time) { 203 /** the time, the user has paid for is not free anymore */ 204 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("err_not_free_for_your_time","general")) ); 205 } else { 206 /** the time the user paid for is free, occupy it (but first delete any existing reservations) */ 207 $database->setQuery( "DELETE FROM `#__mls_seatmap_room_elements_users` WHERE `seatid`='".$seat->id."' AND `res_userid`='".$my->id."' AND `status`='2'" ); 208 $database->query(); 209 $database->setQuery( "INSERT INTO `#__mls_seatmap_room_elements_users` (`id`,`seatid`,`userid`,`status`,`timeid`) VALUES ('','".$seat->id."','".$my->id."','1','".$valid_time->id."')" ); 210 $database->query(); 211 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("msg_seat_occupied")) ); 212 } 213 } elseif($participant->id) { 214 /** There is no defined time, therefore user has paid for the whole event */ 215 $database->setQuery( "DELETE FROM `#__mls_seatmap_room_elements_users` WHERE `seatid`='".$seat->id."' AND `res_userid`='".$my->id."' AND `status`='2'" ); 216 $database->query(); 217 $database->setQuery( "INSERT INTO `#__mls_seatmap_room_elements_users` (`id`,`seatid`,`userid`,`status`,`whole_event`) VALUES ('','".$seat->id."','".$my->id."','1','1')" ); 218 $database->query(); 219 mosRedirect( "index.php?option=$option&Itemid=$Itemid&eventid=".$seat->eventid."&mosmsg=".urlencode($l->m("msg_seat_occupied")) ); 220 } 221 HTML_MLS_seatmap_front::occupyForm($row, $event, $room, $user_select, $option, $Itemid); 222 } 223 224 function occupySeat2( $id, $option, $Itemid) { 150 225 global $database, $my, $l, $mosConfig_offset, $gid; 151 226 $l->setBlock("general"); … … 220 295 $search_result = $database->loadObjectList(); 221 296 $search_result = $search_result[0]; 297 } else { 298 $search_result = 0; 222 299 } 223 300 … … 339 416 340 417 function showSeatDetails( $seatid, $option, $Itemid ) { 341 global $database, $my ;418 global $database, $my, $cnf_mls_sm, $mosConfig_offset; 342 419 343 420 $database->setQuery( "SELECT s.*," 344 ."\n u1.id AS `userid`, u1.username, u2.id AS `res_userid`," 345 ."\n u2.username AS `res_username`," 346 ."\n e.name AS `eventname`," 421 ."\n e.id AS `eventid`, e.name AS `eventname`," 347 422 ."\n r.name AS `roomname`" 348 423 ."\n FROM `#__mls_seatmap_room_elements` AS `s`" 349 ."\n LEFT JOIN `#__users` AS `u1` ON u1.id=s.userid"350 ."\n LEFT JOIN `#__users` AS `u2` ON u2.id=s.res_userid"351 424 ."\n INNER JOIN `#__mls_seatmap_rooms` AS `r` ON r.id=s.roomid" 352 425 ."\n INNER JOIN `#__mls_events` AS `e` ON e.id=r.eventid" … … 355 428 $seat = $seat[0]; 356 429 357 HTML_MLS_seatmap_front::showSeatDetails($seat, $option, $Itemid); 430 //users on this seat 431 $database->setQuery( "SELECT su.*, u1.username, u2.username AS `res_username`," 432 ."\n e.name AS `eventname`,DATE_FORMAT(e.start,'%a %D %H:%i') AS `eventstart`,DATE_FORMAT(e.end,'%a %D %H:%i') AS `eventend`," 433 ."\n t.name AS `timename`,DATE_FORMAT(t.start,'%a %D %H:%i') AS `timestart`,DATE_FORMAT(t.end,'%a %D %H:%i') AS `timeend`" 434 ."\n FROM `#__mls_seatmap_room_elements_users`AS `su`" 435 ."\n LEFT JOIN `#__users` AS `u1` ON u1.id=su.userid" 436 ."\n LEFT JOIN `#__users` AS `u2` ON u2.id=su.res_userid" 437 ."\n LEFT JOIN `#__mls_events_times` AS `t` ON t.id=su.timeid" 438 ."\n INNER JOIN `#__mls_seatmap_room_elements` AS `s` ON s.id=su.seatid" 439 ."\n INNER JOIN `#__mls_seatmap_rooms` AS `r` ON r.id=s.roomid" 440 ."\n INNER JOIN `#__mls_events` AS `e` ON e.id=r.eventid" 441 ."\n WHERE su.seatid='".$seatid."'" ); 442 $users = $database->loadObjectList(); 443 444 $myseat = new mosMLS_seatmap_seat( $database ); 445 $myseat->load($seat->id); 446 $occupied = $myseat->getOccupiedTimes(); 447 $reserved = $myseat->getReservedTimes(); 448 foreach($reserved as $res) { 449 array_push($occupied, $res); 450 } 451 $seat->can_occupy = $myseat->canioccupy(); 452 $seat->can_release = $myseat->canirelease(); 453 $free = $myseat->getFreeTimes($occupied); 454 455 HTML_MLS_seatmap_front::showSeatDetails($seat, $users, $option, $Itemid); 358 456 } 359 457 ?> branches/com_mls_seatmap/eventTimes/mls_seatmap.xml
r66 r98 190 190 ) TYPE=MyISAM; 191 191 </query> 192 <query>CREATE TABLE `mos_mls_seatmap_room_elements_users` ( 193 `id` int(11) NOT NULL auto_increment, 194 `seatid` int(11) NOT NULL default '0', 195 `userid` int(11) NOT NULL default '0', 196 `res_userid` int(11) NOT NULL default '0', 197 `status` tinyint(1) NOT NULL default '0', 198 `res_start_time` datetime NOT NULL default '0000-00-00 00:00:00', 199 `res_end_time` datetime NOT NULL default '0000-00-00 00:00:00', 200 `timeid` int(11) NOT NULL default '0', 201 `whole_event` tinyint(1) NOT NULL default '0', 202 PRIMARY KEY (`id`) 203 ) TYPE=MyISAM;</query> 192 204 <query>INSERT INTO `#__mls_seatmap_elements` (`id`, `categoryid`, `name`, `access`, `is_free`, `is_reserved`, `is_occupied`) VALUES (3, 1, 'Seat Free', 1, 1, 0, 0);</query> 193 205 <query>INSERT INTO `#__mls_seatmap_elements` (`id`, `categoryid`, `name`, `access`, `is_free`, `is_reserved`, `is_occupied`) VALUES (4, 1, 'Seat Reserved', 1, 0, 1, 0);</query>