summaryrefslogblamecommitdiffstats
path: root/application/modules/fbgui/controllers/IndexController.php
blob: 8c909e3835acb92a9e2e98f30d164224ea510066 (plain) (tree)
1
2
3
     

                                                     























                                                                                  

                                                                          













                                                   

                                                                                                                               




















































































                                                                                                               

                                                                                                                                                                  



                              

                                                                                                              













                                                                            

                                                                                                                                         
                

                                                                                              


























                                                                             
                                                

                                     

 
<?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['bootisoID']) || isset($mySession->postdata['serialnumber'])) {
      // Create a session
      $n = new Pbs_Session();

      $bootisomapper = new Application_Model_BootIsoMapper();
      $bootiso = new Application_Model_BootIso();
      if(isset($mySession->postdata['bootisoID'])) {
        $bootisomapper->find($mySession->postdata['bootisoID'], $bootiso);
        $groupID = $bootiso->getGroupID();
      }
      elseif(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();

      }

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

}