<?php
/*
* Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
* This program is free software distributed under the GPL version 2.
* See http://gpl.openslx.org/
*
* If you have any feedback please consult http://feedback.openslx.org/ and
* send your suggestions, praise, or complaints to feedback@openslx.org
*
* General information about OpenSLX can be found at http://openslx.org/
*/
class Fbgui_IndexController extends Zend_Controller_Action {
protected $membership;
public function init() {
/* Initialize action controller here */
$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
$membershipMapper = new Application_Model_MembershipMapper();
$this->membership = new Application_Model_Membership();
$membershipMapper->find($userIDsNamespace['membershipID'], $this->membership);
}
public function errorAction() {
$result = $this->_request->getParam('serialresult');
if($result != "") {
$this->view->notification = Pbs_Notifier::notify('serial', $result);
}
}
public function indexAction() {
$mySession = new Zend_Session_Namespace('pbs');
$this->view->notification = array();
if(count($mySession->postdata) <= 0) {
$mySession->postdata = $_POST;
}
$result = $this->_request->getParam('notify');
if($result == 'nomember') {
$this->view->notification[] = Pbs_Notifier::notify('You have no membership, therefore you have no own BootMenu', 'info');
}
$d = new Pbs_Debug();
$d->debug(array('FBGuiIndexController', $_SERVER['REMOTE_ADDR'], implode("\t", $mySession->postdata)));
if(isset($mySession->postdata['serialnumber'])) {
// Create a session
$n = new Pbs_Session();
print_a($_SERVER);
$bootisomapper = new Application_Model_BootIsoMapper();
$bootiso = new Application_Model_BootIso();
if(isset($mySession->postdata['serialnumber'])) {
$results = $bootisomapper->findBy(array('serialnumber' => $mySession->postdata['serialnumber']), true);
if(count($results) == 0) {
$this->_redirect('/fbgui/index/error/serialresult/noserial2');
}
$bootiso->setOptions($results[0]);
$bootiso->setID($results[0]['bootisoID']);
$groupID = $bootiso->getGroupID();
}
if($_SERVER['SSL_CLIENT_VERIFY'] === 'SUCCESS'){
//TODO User provides authentication data
}
$client = new Application_Model_Client();
$client->setMacadress($mySession->postdata['mac']);
$client->setHardwarehash($mySession->postdata['hardwarehash']);
$client->setGroupID($groupID);
$client->setCreated(time());
$client = $n->createClient($client);
$clientID = $client->getID();
$userIDsNamespace = Zend_Session::namespaceGet('userIDs');
if(!isset($_SESSION['alphasessionID'])) {
$session = new Application_Model_Session();
$session->setBootisoID($bootiso->getID());
$session->setClientID($clientID);
$session->setTime(time());
if($this->membership->getID() != '') {
$session->setMembershipID($this->membership->getID());
}
$session->setIp($_SERVER['REMOTE_ADDR']);
$session = $n->createSession($session);
$_SESSION['alphasessionID'] = $session->getAlphasessionID();
} else {
$session = new Application_Model_Session();
$sessionMapper = new Application_Model_SessionMapper();
$sessions = $sessionMapper->findBy(array('alphasessionID' => $_SESSION['alphasessionID']));
$session = $sessions[0];
if($this->membership->getID() != '' && $session->getMembershipID() == '') {
$session->setMembershipID($this->membership->getID());
$sessionMapper->save($session);
}
}
// Request Bootmenu
$pbsFilter = new Pbs_Filter();
$bootmenuID = $pbsFilter->evaluate();
if($bootmenuID != null) {
$this->view->alphasessionID = $_SESSION['alphasessionID'];
// print_a('Debug Output',
// 'Session is now set',
// 'Your sessionID is '.$session->getID(),
// 'Your alphasessionID is '.$session->getAlphasessionID(),
// 'Your client is '.$session->getClientID(),
// 'goto bootmenu '.$bootmenuID);
$bootmenuMapper = new Application_Model_BootMenuMapper();
$bm = $bootmenuMapper->find($bootmenuID);
$this->view->title = $bm->getTitle();
$this->view->startcounter = $bm->getStartcounter();
$bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
$res = $bootmenuentriesMapper->findBy(array('bootmenuID' => $bootmenuID), false);
$this->view->entries = $res;
if (!Zend_Auth::getInstance()->hasIdentity()) {
$this->view->loginmenu = true;
}
if(Zend_Auth::getInstance()->hasIdentity()) {
if($bm->MembershipID != '' && $bm->MembershipID == $this->membership->getID()) {
} else {
$this->view->notification[] = Pbs_Notifier::notify("This is not your Bootmenu. There is currently a BootMenu with a higher priority active.", 'info');
}
}
if(count($res) == 0) {
$this->view->notification[] = Pbs_Notifier::notify("There are no entries in the bootmenu.", 'info');
$this->view->nobootmenu = true;
unset($this->view->entries);
}
} else {
// print_a('Debug Output',
// 'Session is now set',
// 'Your sessionID is '.$session->getID(),
// 'Your alphasessionID is '.$session->getAlphasessionID(),
// 'Your client is '.$session->getClientID(),
// 'there is no bootmenu for you');
if (!Zend_Auth::getInstance()->hasIdentity()) {
$this->view->loginmenu = true;
$this->view->notification[] = Pbs_Notifier::notify("There is no default BootMenu, please Login to get your BootMenu.", 'info');
} else {
$this->view->notification[] = Pbs_Notifier::notify("You have no BootMenu.", 'info');
}
$this->view->nobootmenu = true;
}
} else {
$this->_redirect('/fbgui/index/error/serialresult/noserial');
}
}
public function startAction() {
$bootmenuntryID = $this->_request->getParam('bme');
$a = $_SESSION['alphasessionID'];
$bootmenuentriesMapper = new Application_Model_BootMenuEntriesMapper();
$bootmenuentry = new Application_Model_BootMenuEntries();
$bootmenuentriesMapper->find($bootmenuntryID, $bootmenuentry);
$sessionMapper = new Application_Model_SessionMapper();
$session_k = $sessionMapper->findBy(array('alphasessionID' => $a), true);
$session = new Application_Model_Session();
$session->setOptions($session_k[0]);
$session->setID($session_k[0]['sessionID']);
$session->setBootmenuentryID($bootmenuntryID);
$session->setBootosID($bootmenuentry->getBootosID());
$sessionMapper->save($session);
$this->view->host = $_SERVER['REMOTE_HOST'];
$this->view->alphasessionID = $a;
}
}