public function mysql_save()
 {
     $prev = UserShare::from_mysql_id($this->id);
     if ($this->id != 0 && $prev != null) {
         if ($this->UserWorkspace_id != $prev->UserWorkspace_id || $this->invitee_id != $prev->invitee_id) {
             $shares = UserShare::from_property(array("UserWorkspace_id" => $prev->UserWorkspace_id, "invitee_id" => $prev->invitee_id));
             $ws = $prev->get_UserWorkspace();
             if ($ws != null && count($shares) <= 1) {
                 $ws->revoke_privileges_db_user($prev->invitee_id);
             }
         }
     }
     $ws = UserWorkspace::from_mysql_id($this->UserWorkspace_id);
     if ($ws != null) {
         $ws->grant_privileges_db_user($this->invitee_id);
     }
     parent::mysql_save();
 }
function get_returns($sid, $hash, $pass, $wid)
{
    if (!authorize_WS($pass)) {
        return -1;
    }
    $workspace = UserWorkspace::from_mysql_id($wid);
    if ($workspace != null) {
        mysql_select_db($workspace->db_name);
    }
    $session = TestSession::from_property(array("id" => $sid, "hash" => $hash), false);
    if ($session == null) {
        return false;
    }
    $return = TestSessionReturn::from_property(array("TestSession_id" => $sid));
    $result = array();
    foreach ($return as $ret) {
        $result[$ret->name] = $ret->value;
    }
    return json_encode($result);
}
 public static function forward($tid, $sid, $hash, $values, $btn_name, $debug, $time, $wid = null, $resume_from_last_template = false, $code = null)
 {
     $workspace = UserWorkspace::from_mysql_id($wid);
     if ($workspace != null) {
         mysql_select_db($workspace->db_name);
     } else {
         return false;
     }
     if (is_string($values)) {
         $values = json_decode($values, true);
     }
     $session = null;
     $result = array();
     if ($wid != null && $sid != null && $hash != null) {
         $session = TestSession::authorized_session($wid, $sid, $hash);
         if ($session != null) {
             if ($btn_name != null) {
                 if ($values != null) {
                     $values["LAST_PRESSED_BUTTON_NAME"] = $btn_name;
                 }
             }
             if (Ini::$timer_tamper_prevention && $session->time_limit > 0 && $time - $session->time_tamper_prevention - Ini::$timer_tamper_prevention_tolerance > $session->time_limit) {
                 if ($session->debug == 1) {
                     TestSession::unregister($session->UserWorkspace_id . "-" . $session->id, $session->UserWorkspace_id);
                 } else {
                     $session->close();
                 }
                 $result = array("data" => array("HASH" => $hash, "TIME_LIMIT" => 0, "HTML" => "", "TEST_ID" => 0, "TEST_SESSION_ID" => $sid, "STATUS" => TestSession::TEST_SESSION_STATUS_TAMPERED, "TEMPLATE_ID" => 0, "HEAD" => "", "FINISHED" => 1));
                 if ($session->debug == 1) {
                     $result["debug"] = array("return" => 0, "output" => "", "state" => "[]");
                 }
             } else {
                 $result = $session->RCall($values, $code, $resume_from_last_template);
             }
         } else {
             $result = array("data" => array("HASH" => $hash, "TIME_LIMIT" => 0, "HTML" => "", "TEST_ID" => 0, "TEST_SESSION_ID" => $sid, "STATUS" => TestSession::TEST_SESSION_STATUS_TAMPERED, "TEMPLATE_ID" => 0, "HEAD" => "", "FINISHED" => 1), "debug" => array("return" => 0, "output" => "", "state" => "[]"));
         }
     } else {
         if ($wid != null && $tid != null) {
             if ($debug == 1) {
                 $debug = true;
             } else {
                 $debug = false;
             }
             $test = Test::from_mysql_id($tid);
             if ($test->type != 2) {
                 $session = TestSession::start_new($wid, $tid, $debug);
             }
             if ($values == null) {
                 $values = array();
             }
             if ($test != null && $test->type != 2) {
                 $values = $test->verified_input_values($values);
             } else {
                 $result = array("data" => array("HASH" => $hash, "TIME_LIMIT" => 0, "HTML" => "", "TEST_ID" => $tid, "TEST_SESSION_ID" => $sid, "STATUS" => TestSession::TEST_SESSION_STATUS_TAMPERED, "TEMPLATE_ID" => 0, "HEAD" => "", "FINISHED" => 1), "debug" => array("return" => 0, "output" => "", "state" => "[]"));
                 return $result;
             }
             $result = $result = $session->RCall($values, $code, $resume_from_last_template);
         }
     }
     return $result;
 }
Exemple #4
0
 public function mysql_save_from_post($post)
 {
     $is_new = $this->id == 0;
     if (array_key_exists("superuser", $post)) {
         $logged_user = User::get_logged_user();
         if ($logged_user == null || $logged_user->superuser == 0) {
             $post['superuser'] = 0;
         }
     }
     $post['oid'] = parent::mysql_save_from_post($post);
     $obj = User::from_mysql_id($post['oid']);
     if ($post['modify_password'] == 1) {
         $obj->password = $obj->calculate_password_hash($post['password_hash']);
         $obj->mysql_save();
     }
     if (array_key_exists("deleteShare", $post)) {
         $rows = json_decode($post["deleteShare"]);
         foreach ($rows as $row) {
             $share = UserShare::from_mysql_id($row);
             if ($share != null) {
                 $share->mysql_delete();
             }
         }
     }
     if (array_key_exists("updateShare", $post)) {
         $rows = json_decode($post["updateShare"], true);
         foreach ($rows as $row) {
             if ($row["id"] != 0) {
                 $share = UserShare::from_mysql_id($row['id']);
                 $share->invitee_id = $row['invitee_id'];
                 $share->UserWorkspace_id = $row['workspace_id'];
                 $share->mysql_save();
             } else {
                 $share = new UserShare();
                 $share->invitee_id = $row['invitee_id'];
                 $share->UserWorkspace_id = $row['workspace_id'];
                 $share->mysql_save();
             }
         }
     }
     if ($is_new) {
         $ws = new UserWorkspace();
         $ws->owner_id = $post['oid'];
         $ws->main = 1;
         $ws->name = "main";
         $ws->mysql_save();
     } else {
         if (array_key_exists("deleteWorkspace", $post)) {
             $rows = json_decode($post["deleteWorkspace"]);
             foreach ($rows as $row) {
                 $ws = UserWorkspace::from_mysql_id($row);
                 if ($ws != null) {
                     $ws->mysql_delete();
                 }
             }
         }
         if (array_key_exists("updateWorkspace", $post)) {
             $rows = json_decode($post["updateWorkspace"], true);
             foreach ($rows as $row) {
                 if ($row["id"] != 0) {
                     $ws = UserWorkspace::from_mysql_id($row['id']);
                     $ws->name = $row['name'];
                     $ws->owner_id = $this->id;
                     $ws->mysql_save();
                 } else {
                     $ws = new UserWorkspace();
                     $ws->name = $row['name'];
                     $ws->owner_id = $this->id;
                     $ws->mysql_save();
                 }
             }
         }
     }
     return $post['oid'];
 }
 public function get_UserWorkspace()
 {
     return UserWorkspace::from_mysql_id($this->UserWorkspace_id);
 }