protected function do_add($data) { if (empty($data['text'])) { return array('success' => false); } $user = $this->user; $room = $this->id; $text = $data['text']; if ($room > 0 && !Database::get_count('game_user', 'id_game = ? and id_user = ?', array($room, $user))) { return array('success' => false); } $replace = array('&' => '&', '"' => '"', '<' => '<', '>' => '>', '\\' => '\', "'" => '''); $text = str_replace(array_keys($replace), array_values($replace), $text); $text = trim($text); $lines = explode("\n", $text); $first_line = array_shift($lines); if (!$first_line) { return array('success' => false); } if (preg_match('/^.{200}/ui', $first_line, $result)) { $header = $result[0]; } elseif (!empty($lines)) { $header = $first_line; } else { $header = ''; } Database::insert('note', array('id_game' => $room, 'id_user' => $user, 'text' => $text, 'header' => $header)); return array('success' => true); }
function edit_art_groups() { global $check; if ($check->num(query::$post['id']) && query::$post['type'] == 'art' && is_array(query::$post['group'])) { $qroups = array_filter(array_unique(query::$post['group'])); foreach ($qroups as $key => $group) { if (Database::get_count('art_pool', 'id = ? and password != "" and password != ?', array($group, md5(query::$post['password']))) ) { unset($qroups[$key]); } } foreach ($qroups as $group) { $order = Database::order('order')-> get_field('art_in_pool', 'order', 'pool_id = ?', $group); Database::insert('art_in_pool', array( 'art_id' => query::$post['id'], 'pool_id' => $group, 'order' => $order + 1 )); } } }
public function __construct($url) { parent::__construct($url); if (isset($url[2]) && is_numeric($url[2]) && Database::get_count('game', $url[2])) { $this->game = $url[2]; } }
protected function do_delete($data) { if (!isset($data['id']) || !is_numeric($data['id']) || !Database::get_count('game', 'id_user = ? and id = ? and state != ?', array($this->user, $data['id'], 4))) { return array('success' => false); } Database::update('game', array('state' => 4), 'id_user = ? and id = ?', array($this->user, $data['id'])); return array('success' => true); }
protected function do_add($data) { $time = date('Y-m-d G:i:s', time() - Config::get('chat', 'loadtime')); $presense = Database::get_count('presense', 'time > ? and id_user = ? and id_game = ?', array($time, $this->user, $this->id)); if (!isset($data['text']) || preg_match('/<>&\\n\\r/', $data['text']) || !$presense) { return array('success' => false); } Database::insert('message', array('id_game' => $this->id, 'id_user' => $this->user, 'text' => $data['text'])); return array('success' => true, 'id' => Database::last_id()); }
protected function do_login($data) { $password = $this->encode_password($data['password']); $login = preg_replace('/[^a-zа-яё_\\s\\d]/ui', '', $data['login']); if (!Database::get_count('user', 'login = ?', $login)) { return array('error' => 'login_not_exist', 'success' => false); } $cookie = Database::get_field('user', 'cookie', 'login = ? and password = ?', array($login, $password)); if (empty($cookie)) { return array('error' => 'password_incorrect', 'success' => false); } setcookie('user', $cookie, time() + MONTH, '/'); return array('success' => true); }
function edit_personal_menu () { $id = (int) query::$get['id']; $return = Database::get_full_row('head_menu_user', $id); if (!empty($return)) { $return['count'] = Database::get_count('head_menu_user', 'cookie = ?', query::$cookie ); if ($return['url']{0} == '/') { $return['url'] = 'http://'.def::site('domain').$return['url']; } } return $return; }
public function parse_images() { $params = array('pack_art', $this->id); $art = Database::get_full_table('misc', 'type = ? and data1 = ? order by data4 limit ' . rand(4, 9), $params); $total = Database::get_field('misc', 'data4', 'type = ? and data2 = ?', array('pack_status', $this->id)); $current_order = Database::get_field('art_in_pack', 'max(`order`)', 'pack_id = ?', $this->id); $next_order = !is_numeric($current_order) ? 0 : $current_order + 1; if (is_array($art)) { $insert_in_pack = array(); foreach ($art as $one) { Database::delete('misc', 'type = ? and id = ?', array('pack_art', $one['id'])); try { $worker = new Transform_Upload_Art($one['data2'], $one['data4']); $data = $worker->process_file(); $art = new Model_Art(array('md5' => $data['md5'], 'thumb' => $data['thumb'], 'extension' => $data['extension'], 'resized' => $data['resized'], 'animated' => $data['animated'], 'author' => '|', 'category' => '|nsfw|game_cg|', 'tag' => '|prostavte_tegi|', 'area' => 'cg')); $art->insert(); } catch (Error $e) { $data = array(); if ($e->getCode() == Error_Upload::ALREADY_EXISTS) { $art = new Model_Art($e->getMessage()); if ($art['area'] == 'deleted') { $art['area'] = 'cg'; $art->commit(); } } else { continue; } } $insert_in_pack[] = array($art->get_id(), $this->id, $next_order, pathinfo($one['data2'], PATHINFO_BASENAME)); $next_order++; } Database::bulk_insert('art_in_pack', $insert_in_pack, array('art_id', 'pack_id', 'order', 'filename')); } if ($count = Database::get_count('misc', 'type = ? and data1 = ?', array('pack_art', $this->id))) { Database::update('misc', array('data3' => $total - $count), 'type = ? and data2 = ?', array('pack_status', $this->id)); } else { Database::update('misc', array('data1' => 'done'), 'type = ? and data2 = ?', array('pack_status', $this->id)); Database::update('art_pack', array('weight' => 0), $this->id); } }
public function insert() { if (!Check::is_hash($this->get('md5')) || !Check::is_hash($this->get('thumb')) || !$this->get('extension') || Database::get_count('art', 'md5 = ?', $this->get('md5'))) { return $this; } if ($this->get('resized') == 1) { $this->calculate_resize(); } $this->set('pretty_date', Transform_Text::rudate()); $this->set('sortdate', ceil(microtime(true) * 1000)); if (!$this->get('area')) { $this->set('area', def::area(1)); } $this->correct_tags(); parent::insert(); if (function_exists('puzzle_fill_cvec_from_file') && function_exists('puzzle_compress_cvec')) { $imagelink = IMAGES . SL . 'booru' . SL . 'thumbs' . SL . 'large_' . $this->get('thumb') . '.jpg'; $vector = puzzle_fill_cvec_from_file($imagelink); $vector = base64_encode(puzzle_compress_cvec($vector)); Database::insert('art_similar', array('id' => $this->get_id(), 'vector' => $vector)); } return $this; }
public function is_ready($user) { return Database::get_count('game_user', 'id_game = ? and id_user = ? and created_deck = 1', array($this->get_id(), $user)) > 0; }
public function pick($user, $card, $set, $shift) { $user_data = Database::get_row('game_user', array('order', 'force_picks'), 'id_user = ? and id_game = ?', array($user, $this->get_id())); $max = Database::get_field('game_user', 'max(`order`)', 'id_game = ?', $this->get_id()); $order = ($user_data['order'] + ($max + 1) * 15 + $shift * ($set % 2 ? 1 : -1)) % ($max + 1); $user_booster = Database::get_field('game_user', 'id_user', '`order` = ? and id_game = ?', array($order, $this->get_id())); $id_booster = Database::join('game_set', 'gs.id = gb.id_game_set')->get_field('game_booster', 'gb.`id`', 'gs.`order` = ? and gs.id_game = ? and gb.id_user = ?', array($set, $this->get_id(), $user_booster)); $pick = $shift + ($set - 1) * 15; Database::update('game_booster_card', array('id_user' => $user, 'pick' => $pick, 'forced' => 0), 'id = ? and id_user = 0 and not exists (select 1 from (select * from `game_booster_card` where id_game_booster = ?) as t where t.pick = ? and t.id_user > 0)', array($card, $id_booster, $shift)); $success = Database::count_affected() > 0; if ($user_data['force_picks']) { Database::update('game_user', array('force_picks' => 0), 'id_user = ? and id_game = ?', array($user, $this->get_id())); } if ($success) { $picked_count = Database::join('game_booster', 'gb.id_game_set = gs.id')->join('game_booster_card', 'gbc.id_game_booster = gb.id')->get_count('game_set', 'gs.id_game = ? and gs.order = ? and gbc.pick = ? and gbc.id_user > 0', array($this->get_id(), $set, $pick)); $force_users = Database::get_vector('game_user', 'id_user', 'id_game = ? and force_picks > ?', array($this->get_id(), 1)); $user_count = Database::get_count('game_user', 'id_game = ?', $this->get_id()); $cache_key = 'force_lock_' . $this->get_id() . '_' . $pick; if (count($force_users) + $picked_count >= $user_count && !Cache::get($cache_key)) { Cache::set($cache_key, 1); if (!empty($force_users)) { $this->force_picks($force_users, $set, $shift); } $this->shift_game_steps(); Cache::delete($cache_key); } } return $success; }
protected function get_random_art($type) { $data = false; $attempts = 0; while (!$data && ++$attempts < 5) { $count = Database::get_count('art', 'area = ?', $type); if (!$count) { continue; } $position = mt_rand(0, $count - 1); $data = Database::limit(1, $position)->get_full_row('art', 'area = ?', $type); } return $data; }
public function sort_pool () { if (!Check::num(query::$get['id'])) { return; } $arts = array_values(array_unique(query::$post['art'])); $id = query::$get['id']; if ( count($arts) != Database::get_count('art_in_pool', 'pool_id = ?', $id) ) { return; } foreach ($arts as $order => $art) { Database::update('art_in_pool', array('order' => $order), 'art_id = ? and pool_id = ?', array($art, $id)); } }
public function merge_tag() { if ( empty(query::$get['master']) || !is_numeric(query::$get['master']) || empty(query::$get['slave']) || !is_numeric(query::$get['slave']) ) { return; } if (query::$get['master'] != query::$get['slave']) { $master = Database::get_full_row('tag', query::$get['master']); $slave = Database::get_full_row('tag', query::$get['slave']); $old_count = $master['post_main'] + $master['post_flea_market'] + $master['video_main'] + $master['video_flea_market'] + $master['art_main'] + $master['art_flea_market']; $params = array( '%|'.$master['alias'].'|%', '|'.$slave['alias'].'|', '|'.$slave['alias'].'|', '|'.$master['alias'].'|', ); Database::sql('update post set tag = if (tag like ?, replace(tag, ?, "|"), replace(tag, ?, ?))', $params); Database::sql('update video set tag = if (tag like ?, replace(tag, ?, "|"), replace(tag, ?, ?))', $params); Database::sql('update art set tag = if (tag like ?, replace(tag, ?, "|"), replace(tag, ?, ?))', $params); $variants = explode('|', $master['variants'].$slave['variants']); if ($slave['name'] != $master['name']) { $variants[] = $slave['name']; } $params_main = array('|'.$master['alias'].'|', 'main'); $params_flea = array('|'.$master['alias'].'|', 'flea_market'); $update = array( 'post_main' => Database::get_count('post', 'locate(?, tag) and area = ?', $params_main), 'post_flea_market' => Database::get_count('post', 'locate(?, tag) and area = ?', $params_flea), 'video_main' => Database::get_count('video', 'locate(?, tag) and area = ?', $params_main), 'video_flea_market' => Database::get_count('video', 'locate(?, tag) and area = ?', $params_flea), 'art_main' => Database::get_count('art', 'locate(?, tag) and area = ?', $params_main), 'art_flea_market' => Database::get_count('art', 'locate(?, tag) and area = ?', $params_flea), 'variants' => '|'.implode('|',array_unique(array_filter($variants))).'|', 'color' => empty($master['color']) ? $slave['color'] : $master['color'] ); Database::update('tag', $update, query::$get['master']); Database::delete('tag', query::$get['slave']); $add_count = array_sum(array_slice($update,0,6)) - $old_count; engine::add_res("Тег {$slave['name']} успешно влит в {$master['name']}. ". "Счет {$master['name']} подрос на $add_count нахождений.", false, true); } }