Exemplo n.º 1
0
 /**
  * Method to stop tool session
  *
  * @apiMethod DELETE
  * @apiUri    /tools/{session}
  * @return    void
  */
 public function deleteTask()
 {
     //get the userid and attempt to load user profile
     $userid = App::get('authn')['user_id'];
     $result = User::getInstance($userid);
     //make sure we have a user
     if (!$result->get('id')) {
         throw new Exception(Lang::txt('Unable to find user.'), 404);
     }
     //include needed libraries
     require_once dirname(dirname(__DIR__)) . '/models/middleware/session.php';
     //instantiate middleware database object
     $mwdb = \Components\Tools\Helpers\Utils::getMWDBO();
     //get request vars
     $sessionid = Request::getVar('sessionid', '');
     //make sure we have the session
     if (!$sessionid) {
         throw new Exception('Missing session ID.', 400);
     }
     //load the session we are trying to stop
     $ms = new \Components\Tools\Models\Middleware\Session($mwdb);
     $ms->load($sessionid, $result->get("username"));
     //check to make sure session exists and it belongs to the user
     if (!$ms->username || $ms->username != $result->get("username")) {
         throw new Exception('Session Doesn\'t Exist or Does Not Belong to User', 400);
     }
     //get middleware plugins
     Plugin::import('mw', $ms->appname);
     // Trigger any events that need to be called before session stop
     Event::trigger('mw.onBeforeSessionStop', array($ms->appname));
     //run command to stop session
     $status = \Components\Tools\Helpers\Utils::middleware("stop {$sessionid}", $out);
     // Trigger any events that need to be called after session stop
     Event::trigger('mw.onAfterSessionStop', array($ms->appname));
     // was the session stopped successfully
     if ($status == 1) {
         $object = new stdClass();
         $object->session = array('session' => $sessionid, 'status' => 'stopped', 'stopped' => with(new Date())->toSql());
         $this->send($object);
     }
 }