/** * 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); } }