예제 #1
0
function server_admin_add()
{
    extract($_REQUEST);
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Servers');
    $lilo_mongo->selectCollection('GameServer');
    if ($submitted == 1) {
        $game_server = array('name' => $server_admin_add_name, 'ip' => $server_admin_add_ip, 'port' => $server_admin_add_port, 'max_ccu' => $server_admin_add_max_ccu);
        $game_server_id = $lilo_mongo->insert($game_server);
        $lilo_mongo->update($game_server, array_merge($game_server, array('lilo_id' => (string) $game_server_id)), array("multiple" => false));
    }
    $_SESSION['pop_status_msg'][] = "New server added.";
    header("Location: " . $_SESSION['basepath'] . 'server/admin');
    exit;
}
예제 #2
0
function message_guest_shout($session_id = NULL, $shout = NULL, $circle = '')
{
    // hanya menerima $_POST
    // variable yg diterima:
    //	- session_id: diproses hanya jika session_id masih valid & aktif, meskipun nanti yg disimpan di db adalah user_id
    //	- circle: '', 'public', [circle_name_1], [circle_name_2]
    //	- shout = text status
    if (!isset($session_id) || trim($session_id) == '') {
        // dapatkan $session_id dari $_POST
        $session_id = $_POST['session_id'];
    }
    if (!isset($session_id) || trim($session_id) == '') {
        $session_id = $_SESSION['session_id'];
    }
    if (!isset($shout) || trim($shout) == '') {
        $shout = $_POST['shout'];
    }
    if (!isset($circle) || trim($circle) == '') {
        $circle = $_POST['circle'];
    }
    // cek apakah $session_id masih berlaku: Users.Session.time_end == '' || strtotime() - strtotime(Users.Session.time_end) < 3 * 60;
    $user_id = message_guest_sessionvalidation($session_id);
    if (!$user_id || trim($user_id) == '') {
        write_log(array('log_text' => "Invalid session_id: {$session_id}"));
        return "ERROR - Validation failed.";
    }
    $shout = trim($shout);
    if ($shout == '') {
        return "ERROR - Shout should not be empty.";
    }
    $mentioned_friends = message_guest_mentionedfriends($shout);
    if (strlen($shout) > 500) {
        $shout = substr($shout, 0, 500);
    }
    $shout = htmlspecialchars($shout);
    $shout = message_guest_shoutlinktomentioneduser($shout);
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Social');
    $lilo_mongo->selectCollection('Shout');
    $shout_data = array('user_id' => $user_id, 'shout_time' => date("Y-m-d - H:i:s"), 'shout' => $shout, 'circle' => $circle, 'mentioned_friends' => $mentioned_friends, 'mentioned_friends_notified' => 0);
    // notify mentioned friends dengan CRON
    $lilo_id = $lilo_mongo->insert($shout_data);
    $lilo_mongo->update($shout_data, array_merge($shout_data, array('lilo_id' => (string) $lilo_id)), array("multiple" => false));
    return "OK";
}
예제 #3
0
function mobile_query_setconfavatar()
{
    $user_email = func_arg(0);
    $id_user = _get_id_user($user_email);
    $get_type = func_arg(1);
    $get_field = func_arg(2);
    $get_field = $get_field == "all" ? "" : $get_field;
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Users');
    $lilo_mongo->selectCollection('Avatar');
    $filter = array("user_id" => $id_user);
    $data = $lilo_mongo->findOne($filter);
    $datareturn['isSuccsesUpdate'] = FALSE;
    if ($data) {
        $datatinsert = array();
        $datareturn['isSuccsesUpdate'] = TRUE;
        if ($get_type == "configurations") {
            $conf = json_decode(str_replace("'", '"', $data['configuration']));
            if ($get_field != "") {
                if (strtolower($get_field) == "all") {
                    $datanew = "";
                    $temp = isset($_GET['massage']) ? $_GET['massage'] : "";
                    $datatemparray = explode("|", $temp);
                    if ($datatemparray) {
                        foreach ($datatemparray as $jml_json) {
                            $datanew .= "{";
                            $datatemp = explode(",", $jml_json);
                            if ($datatemp) {
                                foreach ($datatemp as $dttemp) {
                                    $dtinsert = explode(":", $dttemp);
                                    $key = $dtinsert[0];
                                    $value = isset($dtinsert[1]) ? $dtinsert[1] : "";
                                    $datanew .= "'" . $key . "':'" . $value . "',";
                                }
                                $datanew = substr($datanew, 0, strlen($datanew) - 1);
                            }
                            $datanew .= "},";
                        }
                        $datanew = substr($datanew, 0, strlen($datanew) - 1);
                    }
                    $datatinsert = array("configuration" => "[" . $datanew . "]");
                } else {
                    foreach ($conf as $dt => $listtemp) {
                        if ($listtemp->tipe == $get_field) {
                            continue;
                        }
                        $datanew .= "{";
                        foreach ($listtemp as $dt_json => $value_key) {
                            $datanew .= "'" . $dt_json . "':'" . $value_key . "',";
                        }
                        $datanew = substr($datanew, 0, strlen($datanew) - 1);
                        $datanew .= "},";
                    }
                    $datanew .= "{";
                    $datamessage = isset($_GET['massage']) ? $_GET['massage'] : "";
                    $datajson = explode(",", $datamessage);
                    if ($datajson) {
                        foreach ($datajson as $dttemp) {
                            $dtinsert = explode(":", $dttemp);
                            $key = $dtinsert[0];
                            $value = isset($dtinsert[1]) ? $dtinsert[1] : "";
                            $datanew .= "'" . $key . "':'" . $value . "',";
                        }
                        $datanew = substr($datanew, 0, strlen($datanew) - 1);
                    }
                    $datanew .= "}";
                    $datatinsert = array("configuration" => "[" . $datanew . "]");
                }
            }
        } else {
            if ($get_type == "size") {
                $datasize = isset($_GET['massage']) ? $_GET['massage'] : "medium";
                $datatinsert = array("size" => $datasize);
            }
        }
        $lilo_mongo->update_set($filter, $datatinsert);
    } else {
        $size = "medium";
        $gender = "female";
        $lilo_mongo->selectDB("Assets");
        $lilo_mongo->selectCollection("DefaultAvatar");
        $data3 = $lilo_mongo->findOne(array('gender' => $gender, 'size' => $size));
        if ($data3) {
            $lilo_mongo->selectDB('Users');
            $lilo_mongo->selectCollection('Avatar');
            $lilo_mongo->update(array("size" => $size, "user_id" => $id_user), array('$set' => array("configuration" => $data3['configuration'])), array('upsert' => TRUE));
        }
    }
    return json_encode($datareturn);
}
예제 #4
0
function friend_user_ws_invitation_approval($args = NULL)
{
    if (!isset($args)) {
        $args = $_REQUEST;
    }
    extract($args);
    // $invitation_id, $circle_array
    // masukkan ke tabel Friends
    // 2 record:
    //	1. inviter -> invitee: circle sesuai data di table FriendInvitations
    //	2. invitee -> inviter: circle sesuai $circle_array
    // dapatkan data dari FriendInvitations
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Social');
    // Social: Circles, Friends, FriendInvitations, PersonalMessages, Shout
    $lilo_mongo->selectCollection('FriendInvitations');
    //	FriendInvitation: lilo_id, inviter_user_id, invitee_user_id, circle_array, invite_time
    $invitation_detail = $lilo_mongo->findOne(array('lilo_id' => $invitation_id));
    // sampe seneee...
    // return print_r($invitation_detail, true);
    /*
    Array
    (
        [inviter_user_id] => 4e1df4c1c1b4bab417000000
        [invitee_user_id] => 4df6e7192cbfd4e6c000fd9b
        [circle_array] => Array
            (
                [0] => Acquaintance
            )
    
        [invite_time] => 1316761193
        [_id] => MongoId Object
            (
                [$id] => 4e7c2e69c1b4ba7409000002
            )
    
        [lilo_id] => 4e7c2e69c1b4ba7409000002
    )
    */
    $lilo_mongo->selectCollection('Friends');
    // Friends: user_id, friend_id, circle_array, approval_time
    $approval_time = time();
    // inviter -> invitee
    $inviter_to_invitee_data = array('user_id' => $invitation_detail['inviter_user_id'], 'friend_id' => $invitation_detail['invitee_user_id'], 'circle_array' => $invitation_detail['circle_array'], 'approval_time' => $approval_time);
    $friends_id = $lilo_mongo->insert($inviter_to_invitee_data);
    $lilo_mongo->update($inviter_to_invitee_data, array_merge($inviter_to_invitee_data, array('lilo_id' => (string) $friends_id)), array("multiple" => false));
    // invitee -> inviter
    $invitee_to_inviter_data = array('user_id' => $invitation_detail['invitee_user_id'], 'friend_id' => $invitation_detail['inviter_user_id'], 'circle_array' => $circle_array, 'approval_time' => $approval_time);
    $friends_id = $lilo_mongo->insert($invitee_to_inviter_data);
    $lilo_mongo->update($invitee_to_inviter_data, array_merge($invitee_to_inviter_data, array('lilo_id' => (string) $friends_id)), array("multiple" => false));
    // hapus dari table FriendInvitations
    $lilo_mongo->selectCollection('FriendInvitations');
    //	FriendInvitation: lilo_id, inviter_user_id, invitee_user_id, circle_array, invite_time
    $lilo_mongo->remove(array('lilo_id' => $invitation_id));
    return '1';
}
예제 #5
0
function user_user_add_lilo_id_to_users()
{
    // loop semua row di table users
    // tambahkan field lilo_id di tiap row tersebut
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Users');
    $lilo_mongo->selectCollection('Account');
    $users_cursor = $lilo_mongo->find(array());
    while ($curr = $users_cursor->getNext()) {
        if (trim($curr['lilo_id']) == '') {
            $ret .= "<br />" . print_r($curr, true) . "<br />";
            $lilo_id = (string) $curr['_id'];
            $lilo_mongo->update($curr, array_merge($curr, array('lilo_id' => (string) $lilo_id)), array("multiple" => false));
        }
    }
    return "beres..." . $ret;
}
예제 #6
0
function asset_admin_inventory()
{
    // CRUD for Assets.Inventory
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Assets');
    $lilo_mongo->selectCollection('Inventory');
    // delete
    $delete = trim($_REQUEST['delete']);
    if ($delete != '') {
        $lilo_mongo->delete(array('lilo_id' => $delete));
        return "1";
    }
    // detail
    $detail = trim($_REQUEST['detail']);
    if ($detail != '') {
        $data = $lilo_mongo->findOne(array('lilo_id' => $detail));
        return json_encode($data);
    }
    // new_inventory
    $new_inventory = trim($_REQUEST['new_inventory']);
    if ($new_inventory == "1") {
        extract($_POST);
        // tipe, description, icon
        if (trim($tipe) != '') {
            $inventory_data = array('tipe' => $tipe, 'description' => $description, 'icon' => $icon);
            $lilo_id_ = $lilo_mongo->insert($inventory_data);
            $lilo_mongo->update($inventory_data, array_merge($inventory_data, array('lilo_id' => (string) $lilo_id_)), array("multiple" => false));
        }
    }
    // dapatkan data Assets.Inventory
    $inventory_array = $lilo_mongo->find();
    $html = '';
    $template = new Template();
    $template->basepath = $_SESSION['basepath'];
    $template->inventory_array = $inventory_array;
    $html = $template->render("modules/002_asset_management/templates/asset_admin_inventory.php");
    $html = ui_admin_default(NULL, $html);
    return $html;
}
예제 #7
0
function message_user_shout_reply()
{
    /*
    die(print_r($_REQUEST, true));
    
    Array
    (
        [q] => message/user/shout_reply
        [comment] => Reply to testsdfsdfsdfsdf
        [circle] => 
        [shout_id] => 4fa0897cc1b4ba341b000000
        [__utma] => 111872281.1470462402.1327380803.1336389708.1336418449.37
        [__utmz] => 111872281.1327380803.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
        [MANTIS_STRING_COOKIE] => d51124df32701606e74f6e86a7da46f7bfb7835038e6ea4748643db7e4c2f0c0
        [POSTNUKESID] => d365816dbaef684d8522d130c239fc29
        [PHPSESSID] => ibi020pgc7hiesda9dmih8gip1
        [__utmc] => 111872281
        [__utmb] => 111872281.0.10.1336418449
    )
    */
    extract($_REQUEST);
    if (!isset($shout_id)) {
        die("Error");
    }
    if (trim($comment) == '') {
        die('Error: empty comment');
    }
    $user_id = $_SESSION['user_id'];
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Social');
    $lilo_mongo->selectCollection('ShoutComment');
    $reply_data = array('shout_id' => $shout_id, 'datetime' => date("Y-m-d - H:i:s"), 'comment' => $comment, 'time' => time());
    $lilo_id = $lilo_mongo->insert($reply_data);
    $lilo_mongo->update($reply_data, array_merge($reply_data, array('lilo_id' => (string) $lilo_id)), array("multiple" => false));
    // delete all related comments
    print "OK";
    exit;
}
예제 #8
0
function asset_admin_lobbysetting($op = null, $ip = null, $port = null, $ret_type = null, $room_history = null)
{
    if (!isset($op)) {
        $op = func_arg(0);
    }
    if (!isset($ip)) {
        $ip = func_arg(1);
    }
    if (!isset($port)) {
        $port = func_arg(2);
    }
    if (!isset($ret_type)) {
        $ret_type = func_arg(3);
    }
    if (!isset($room_history)) {
        $room_history = func_arg(4);
    }
    // die("$op, $ip, $port");	// Data: set, 127.0.0.1, 12027
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Game');
    $lilo_mongo->selectCollection('LobbySetting');
    switch (trim(strtolower($op))) {
        case 'get':
            $lobbysetting = $lilo_mongo->findOne();
            if ($ret_type == 'array') {
                return $lobbysetting;
            } else {
                // default: json
                return json_encode($lobbysetting);
            }
            break;
        case 'set':
            if (isset($ip) && isset($port)) {
                $data = array('ip' => $ip, 'port' => $port, 'room_history' => $room_history);
                $lilo_mongo->update(array(), $data, array('upsert' => true));
                return 'OK';
            }
            break;
    }
}
예제 #9
0
function quest_admin_ws_dialogstory($op = NULL, $id = NULL, $data = NULL)
{
    // quest/admin/ws_dialogstory							=> list all dialog_story
    // quest/admin/ws_dialogstory/read				=> -- idem --
    // quest/admin/ws_dialogstory/create			=> menerima $_POST untuk dimasukkan ke db
    // quest/admin/ws_dialogstory/update/$id	=> menerima $_POST untuk update dialog_story dgn id = $id
    // quest/admin/ws_dialogstory/delete/$id	=> menghapus dialog_story dgn id = $id
    if (!isset($op)) {
        $op = func_arg(0) != '' ? func_arg(0) : 'read';
    }
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Game');
    // Game: DialogStory, Dialog, DialogOption, Quest
    $lilo_mongo->selectCollection('DialogStory');
    switch ($op) {
        case 'create':
            // sementara baru data di Game.DialogStory dulu belum sampe ke anak2nya...
            if (!isset($data)) {
                // data = array(name, description);
                $data = $_POST;
            }
            //			return $data['all_variable'];
            if (!isset($data['name'])) {
                return false;
            }
            //			$data['all_variable'] = parse_str($data['all_variable']);
            $a = explode('&', $data['all_variable']);
            $i = 0;
            while ($i < count($a)) {
                $b = split('=', $a[$i]);
                //					echo 'Value for parameter ', htmlspecialchars(urldecode($b[0])),
                //							 ' is ', htmlspecialchars(urldecode($b[1])), "<br />\n";
                $i++;
                $key = urldecode($b[0]);
                $val = urldecode($b[1]);
                // option_content_quest_
                if (substr($key, 0, 21) == 'option_content_quest_') {
                    $val_expl = explode('-', $val);
                    $val = trim($val_expl[0]);
                }
                $data['all_variable_2'][$key] = $val;
            }
            $dialog_story_id = $lilo_mongo->insert($data);
            $lilo_mongo->update($data, array_merge($data, array('lilo_id' => (string) $dialog_story_id)), array("multiple" => false));
            return "1";
            //$dialog_story_id;
            break;
        case 'update':
            // sementara baru data di Game.DialogStory dulu belum sampe ke anak2nya...
            if (!isset($id)) {
                $id = func_arg(1);
            }
            if (!isset($data)) {
                // data = array(name, description);
                $data = $_POST;
            }
            $lilo_mongo->update(array('lilo_id' => $id), $data, array("multiple" => false));
            return "1";
            break;
        case 'delete':
            if (!isset($id)) {
                $id = func_arg(1);
            }
            $lilo_mongo->delete(array('lilo_id' => $id));
            return "1";
            break;
    }
    // op == 'read'
    $dialog_stories = array();
    $dialog_stories_cursor = $lilo_mongo->find();
    while ($dialog_story = $dialog_stories_cursor->getNext()) {
        $dialog_stories[] = $dialog_story;
    }
    //	return json_encode($dialog_stories);
    $dialog_stories = json_encode($dialog_stories);
    return $dialog_stories;
    //	return str_replace('"', "'", $dialog_stories);
}
예제 #10
0
function user_guest_login($uname = NULL, $passwd = NULL)
{
    // bisa diakses lewat web dgn path: /user/user/login/[username/password]
    // atau dipanggil langsung dgn fungsi user_guest_login('username','password')
    $username = isset($uname) ? (string) $uname : (string) func_arg(0);
    $password = isset($passwd) ? (string) $passwd : (string) func_arg(1);
    if (!isset($username) || trim($username) == '') {
        $username = $_POST['username'];
    }
    if (!isset($password) || trim($password) == '') {
        $password = $_POST['password'];
    }
    //	die("$username, $password");
    if (strlen(trim($username)) == 0 || strlen(trim($password)) == 0) {
        unset($_SESSION['session_id']);
        unset($_SESSION['username']);
        unset($_SESSION['user_id']);
        return "0";
    }
    unset($_SESSION['pop_error_msg']);
    unset($_SESSION['pop_status_msg']);
    // connect to mongodb using default setting
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Users');
    $lilo_mongo->selectCollection('Account');
    $user_exists = $lilo_mongo->findOne(array('username' => $username, 'password' => md5($password)));
    // revisi 04072012: jika username tidak ditemukan, gunakan email
    if (!is_array($user_exists) || count($user_exists) == 0) {
        $user_exists = $lilo_mongo->findOne(array('email' => $username, 'password' => md5($password)));
        $username = $user_exists['username'];
    }
    $session_id = $_SESSION['session_id'];
    $session_username = $_SESSION['username'];
    // bagaimana jika $session_username berbeda dengan $username?
    $cur_date = date("Y-m-d H:i:s");
    if (is_array($user_exists) && count($user_exists)) {
        //    die("<pre>".print_r($user_exists, true)."</pre>");
        if (trim($session_id) == '' || trim($session_username) == '') {
            $user_id = (string) $user_exists['_id'] . '';
            // generate session_id
            $session_id = md5($cur_date . " - " . $username);
            $_SESSION['session_id'] = $session_id;
            $_SESSION['username'] = $username;
            $_SESSION['user_id'] = $user_id;
            // simpan di table session
            //    array(session_id, username, time_start, time_end)
            //	untuk mencegah user login di lebih dari satu browser, jika data session utk user_id sudah ada, maka lakukan hanya update
            //	lakukan insert hanya bila data session utk user_id belum ada
            $lilo_mongo->selectCollection('Session');
            $exist_user_id = $lilo_mongo->findOne(array('user_id' => $user_id));
            if (is_array($exist_user_id) && count($exist_user_id)) {
                //				$lilo_mongo->update_set(
                //					array(
                //						'user_id'     => $user_id,
                //					),
                //					array(
                //						'session_id'  => $session_id,
                ////						'user_id'     => $user_id,
                ////						'username'    => $username,
                ////						'time_start'  => $cur_date,
                ////						'time_end'    => ''
                //					)
                //				);
                $lilo_mongo->selectCollection('SessionLog');
                $lilo_mongo->insert($exist_user_id);
            }
            //			else {
            $lilo_mongo->selectCollection('Session');
            $lilo_mongo->remove(array('user_id' => $user_id));
            $lilo_mongo->insert(array('session_id' => $session_id, 'user_id' => $user_id, 'username' => $username, 'time_start' => $cur_date, 'time_end' => '', 'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT'], 'REMOTE_ADDR' => $_SERVER['REMOTE_ADDR'], 'REMOTE_HOST' => $_SERVER['REMOTE_HOST']));
            //			}
            report_admin_countuseronlinetime($user_id);
            return $session_id;
        } else {
            // sepertinya kondisi ini tidak akan terpenuhi... :P
            if ($session_username == $username) {
                // mencoba login, padahal sudah terdaftar...
                // biarkan saja, sepertinya orang ini ga ada kerjaan
                return $session_id;
            } else {
                // sudah terdaftar, kemudian mencoba login dengan username dan password yg lain
                // logout dulu, baru login dengan username yg baru
                //    update($array_criteria, $array_newobj, $array_options)
                $array_criteria = array('session_id' => $session_id);
                $array_newobj = array('$set' => array('time_end' => $cur_date));
                $array_options = array('upsert' => true);
                $lilo_mongo->selectCollection('Session');
                $lilo_mongo->update($array_criteria, $array_newobj, $array_options);
                $session_id = md5($cur_date . " - " . $username);
                $_SESSION['session_id'] = $session_id;
                $_SESSION['username'] = $username;
                // simpan di table session
                //    array(session_id, username, time_start, time_end)
                $lilo_mongo->selectCollection('Session');
                $lilo_mongo->insert(array('session_id' => $session_id, 'username' => $username, 'time_start' => $cur_date, 'time_end' => '', 'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT'], 'REMOTE_ADDR' => $_SERVER['REMOTE_ADDR'], 'REMOTE_HOST' => $_SERVER['REMOTE_HOST']));
                return $session_id;
            }
        }
    } else {
        unset($_SESSION['session_id']);
        unset($_SESSION['username']);
        unset($_SESSION['user_id']);
        return "0";
    }
}
예제 #11
0
function article_admin_addslide($no = NULL, $title = NULL, $image = NULL, $description = NULL, $link = NULL)
{
    if (!isset($no) || !isset($title) || !isset($image) || !isset($description) || !isset($link)) {
        $no = $_POST['no'];
        $title = $_POST['title'];
        $image = $_POST['image'];
        $description = $_POST['description'];
        $link = $_POST['link'];
    }
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Articles');
    $lilo_mongo->selectCollection('Slideshow');
    $slide = array('no' => $no, 'title' => $title, 'image' => $image, 'description' => $description, 'link' => $link);
    $lilo_id = $lilo_mongo->insert($slide);
    $lilo_mongo->update($slide, array_merge($slide, array('lilo_id' => (string) $lilo_id)), array('multiple' => false));
    return (string) $lilo_id;
}
예제 #12
0
function avatar_user_set_animation($animation_conf = NULL)
{
    if (!isset($animation_conf)) {
        $animation_conf = $_REQUEST['animation_conf'];
    }
    $lilo_mongo = new LiloMongo();
    $lilo_mongo->selectDB('Users');
    $lilo_mongo->selectCollection('Animation');
    $insert_id = $lilo_mongo->update(array('user_id' => $_SESSION[user_id]), array('user_id' => $_SESSION[user_id], 'configuration' => $animation_conf), array('upsert' => true));
    if (isset($_REQUEST['redirect_url'])) {
        $_SESSION['pop_status_msg'][] = "Configuration saved.";
        header("Location: " . $_SESSION['basepath'] . $_REQUEST['redirect_url']);
        exit;
    }
    if ($insert_id) {
        return "1";
    }
    return 0;
}