diff --git a/includes/CallbackHandler.php b/includes/CallbackHandler.php index 7cdfa8a..6a9e55c 100755 --- a/includes/CallbackHandler.php +++ b/includes/CallbackHandler.php @@ -1,67 +1,67 @@ -calls[$type][] = $params; - if (!in_array($type, $this->types)) { - $this->types[] = $type; - } - } - - /** - * Appels des fonctions des mods - * - */ - public function apply() { - global $io, $db, $get_dev, $server_config; - if (empty($this->calls)) return; - $success = array(); - $errors = array(); - - $query = $db->sql_query('SELECT c.id, c.function, c.type, c.mod_id, m.root, m.title FROM '.TABLE_XTENSE_CALLBACKS.' c LEFT JOIN '.TABLE_MOD.' m ON c.mod_id = m.id WHERE c.active = 1 AND m.active = 1 AND c.type IN ("'.implode('", "', $this->types).'")'); - while ($call = $db->sql_fetch_assoc($query)) { - foreach ($this->calls[$call['type']] as $params) { - $this->currentCallback = $call; - - try { - $instance = Callback::load($call['root']); - - if (!method_exists($instance, $call['function']) || !is_callable(array($instance, $call['function']))) throw new Exception('Invalid method "'.$call['function'].'"'); - - $execReturn = $instance->{$call['function']}($params); - - $io->append_call($call, $execReturn); - } catch (mysqli_sql_exception $e) { - $io->append_call_error($call, 'Erreur MySQL lors de l\'execution'."\n".$e->getFile().' @ '.$e->getLine()."\n".$e->getMessage()); - } catch (Exception $e) { - $io->append_call_error($call, $e->getMessage(), $e); - } - - $this->currentCallback = false; - } // Foreach - } // while - - } // Method "apply" -} +calls[$type][] = $params; + if (!in_array($type, $this->types)) { + $this->types[] = $type; + } + } + + /** + * Appels des fonctions des mods + * + */ + public function apply() { + global $io, $db, $get_dev, $server_config; + if (empty($this->calls)) return; + $success = array(); + $errors = array(); + + $query = $db->sql_query('SELECT c.`id`, c.`function`, c.`type`, c.`mod_id`, m.`root`, m.`title` FROM '.TABLE_XTENSE_CALLBACKS.' c LEFT JOIN '.TABLE_MOD.' m ON c.`mod_id` = m.`id` WHERE c.`active` = 1 AND m.`active` = 1 AND c.`type` IN ("'.implode('", "', $this->types).'")'); + while ($call = $db->sql_fetch_assoc($query)) { + foreach ($this->calls[$call['type']] as $params) { + $this->currentCallback = $call; + + try { + $instance = Callback::load($call['root']); + + if (!method_exists($instance, $call['function']) || !is_callable(array($instance, $call['function']))) throw new Exception('Invalid method "'.$call['function'].'"'); + + $execReturn = $instance->{$call['function']}($params); + + $io->append_call($call, $execReturn); + } catch (mysqli_sql_exception $e) { + $io->append_call_error($call, 'Erreur MySQL lors de l\'execution'."\n".$e->getFile().' @ '.$e->getLine()."\n".$e->getMessage()); + } catch (Exception $e) { + $io->append_call_error($call, $e->getMessage(), $e); + } + + $this->currentCallback = false; + } // Foreach + } // while + + } // Method "apply" +} diff --git a/includes/check_callbacks.php b/includes/check_callbacks.php index d519b38..9564d16 100755 --- a/includes/check_callbacks.php +++ b/includes/check_callbacks.php @@ -1,49 +1,49 @@ -sql_query('TRUNCATE TABLE `'.TABLE_XTENSE_CALLBACKS.'`'); - - - $insert = array(); - $callInstall = array('errors' => array(), 'success' => array()); - - $query = $db->sql_query('SELECT action, root, id, title FROM '.TABLE_MOD.' WHERE active = 1'); - while ($data = $db->sql_fetch_assoc($query)) { - if (!file_exists('mod/'.$data['root'].'/_xtense.php')) continue; - try { - $call = Callback::load($data['root']); - $error = false; - } catch (Exception $e) { - $callInstall['errors'][] = $data['title'].' (erreur lors du chargement du lien) : '.$e->getMessage(); - $error = true; - } - if(!$error) - foreach ($call->getCallbacks() as $k => $c) { - try { - if (empty($c)) continue; - if (!isset($c['function'], $c['type'])) throw new Exception('Données sur le lien invalides : '.$k); - if (!in_array($c['type'], $callbackTypesNames)) throw new Exception('Type de lien ('.$c['type'].') invalide'); - if (!isset($c['active'])) $c['active'] = 1; - if (!method_exists($call, $c['function'])) throw new Exception('La méthode "'.$c['function'].'" n'existe pas'); - $insert[] = '('.$data['id'].', "'.$c['function'].'", "'.$c['type'].'", '.$c['active'].')'; - $callInstall['success'][] = $data['title'].' (#'.$k.') : '.$c['type']; - } catch (Exception $e) { - $callInstall['errors'][] = $data['title'].' : '.$e->getMessage(); - } - } - } - - if (!empty($insert)) { - $db->sql_query('REPLACE INTO '.TABLE_XTENSE_CALLBACKS.' (mod_id, function, type, active) VALUES '.implode(', ', $insert)); - } - return $callInstall; - +sql_query('TRUNCATE TABLE `'.TABLE_XTENSE_CALLBACKS.'`'); + + + $insert = array(); + $callInstall = array('errors' => array(), 'success' => array()); + + $query = $db->sql_query('SELECT `action`, `root`, `id`, `title` FROM '.TABLE_MOD.' WHERE `active` = 1'); + while ($data = $db->sql_fetch_assoc($query)) { + if (!file_exists('mod/'.$data['root'].'/_xtense.php')) continue; + try { + $call = Callback::load($data['root']); + $error = false; + } catch (Exception $e) { + $callInstall['errors'][] = $data['title'].' (erreur lors du chargement du lien) : '.$e->getMessage(); + $error = true; + } + if(!$error) + foreach ($call->getCallbacks() as $k => $c) { + try { + if (empty($c)) continue; + if (!isset($c['function'], $c['type'])) throw new Exception('Données sur le lien invalides : '.$k); + if (!in_array($c['type'], $callbackTypesNames)) throw new Exception('Type de lien ('.$c['type'].') invalide'); + if (!isset($c['active'])) $c['active'] = 1; + if (!method_exists($call, $c['function'])) throw new Exception('La méthode "'.$c['function'].'" n'existe pas'); + $insert[] = '('.$data['id'].', "'.$c['function'].'", "'.$c['type'].'", '.$c['active'].')'; + $callInstall['success'][] = $data['title'].' (#'.$k.') : '.$c['type']; + } catch (Exception $e) { + $callInstall['errors'][] = $data['title'].' : '.$e->getMessage(); + } + } + } + + if (!empty($insert)) { + $db->sql_query('REPLACE INTO '.TABLE_XTENSE_CALLBACKS.' (`mod_id`, `function`, `type`, `active`) VALUES '.implode(', ', $insert)); + } + return $callInstall; + diff --git a/includes/functions.php b/includes/functions.php index bd3c985..9e8214e 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -1,296 +1,296 @@ -sql_query('SELECT id FROM '.TABLE_MOD.' WHERE action = "'.$action.'"'); - list($mod_id) = $db->sql_fetch_row($query); - - $replace = array(); - foreach ($data as $k => $call) { - if (!isset($call['function'], $call['type'])) return false; - if (!isset($call['active'])) $call['active'] = 1; - $replace[] = '('.$mod_id.', "'.$call['function'].'", "'.$call['type'].'", '.$call['active'].')'; - } - - $db->sql_query('INSERT IGNORE INTO '.TABLE_XTENSE_CALLBACKS.' (mod_id, function, type, active) VALUES '.implode(',', $replace)); - return $db->sql_affectedrows(); -} - -/** - * @param $string - * @return mixed - */ -function js_compatibility($string){ - return str_replace('
','\n',(htmlspecialchars_decode($string))); -} - -/** - * @param $date - * @return int - */ -function parseOgameDate($date) { - preg_match('!([0-9]+)-([0-9]+) ([0-9]+):([0-9]+):([0-9]+)!i', $date, $parts); - return mktime($parts[3], $parts[4], $parts[5], $parts[1], $parts[2], date('Y') - ($parts[1] == 12 && date('n') == 1 ? 1 : 0)); -} - -/** - * @param $str - * @return int - */ -function clean_nb($str) { - return (int)str_replace('.', '', $str); -} - -/** - * Amélioration de var_dump() - * - */ -function dump() { - $n = func_num_args(); - ob_start(); - for ($i = 0; $i < $n; $i++) - var_dump(func_get_arg($i)); - $content = ob_get_clean()."\n"; - //echo str_replace(array('<', '>'), array('<', '>'), $content)."\n"; - echo $content."\n"; -} - - -/** - * Echappement forcé pour la syntaxe Json - * - * @param string $str - * @return string - */ -function json_quote($str) { - return str_replace('"', '\\"', $str); -} - - -/** - * Verification de l'empire (Mise à jour, rajout, empire plein) - * - * @param int $type - * @param string $coords - * @return mixed(bool/int) - */ - -function home_check($type, $coords) { - global $db, $user_data; - - $empty_planets = array(101=>1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); - $empty_moons = array(201=>1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); - $planets = $moons = array(); - $offset = ($type == TYPE_PLANET ? 100 : 200); - - $query = $db->sql_query("SELECT `planet_id`, `coordinates` FROM ".TABLE_USER_BUILDING." WHERE `user_id` = ".$user_data['user_id']." ORDER BY planet_id ASC"); - while ($data = $db->sql_fetch_assoc($query)) { - if ($data['planet_id'] < 200) { - $planets[$data['planet_id']] = $data['coordinates']; - unset($empty_planets[$data['planet_id']], $empty_moons[$data['planet_id']+100]); - } - else { - $moons[$data['planet_id']] = $data['coordinates']; - unset($empty_moons[$data['planet_id']], $empty_planets[$data['planet_id']-100]); - } - } - foreach ($planets as $id => $p) { - if ($p == $coords || $coords == "unknown") { - // Si c'est une lune on check si une lune existe déjà - if ($type == TYPE_MOON) { - if (isset($moons[$id+100])) return array('update', 'id' => $id+100); - else return array('add', 'id' => $id+100); - } - - return array('update', 'id' => $id); - } - } - - // Si une lune correspond a la planete, on place la planete sous la lune - foreach ($moons as $id => $m) { - if ($m == $coords) { - return array($type == TYPE_PLANET ? 'add' : 'update', 'id' => $id-200+$offset); - } - } - - if ($type == TYPE_PLANET) { - if (count($empty_planets) == 0) return array('full'); - foreach ($empty_planets as $p) return array('add', 'id' => $p+$offset); - } - else { - if (count($empty_moons) == 0) return array('full'); - foreach ($empty_moons as $p) return array('add', 'id' => $p+$offset); - } -} - -/** - * @param $coords - * @param int $exp - * @return bool - */ -function check_coords($coords, $exp = 0) { - global $server_config; - if (!preg_match('!^([0-9]{1,2}):([0-9]{1,3}):([0-9]{1,2})$!Usi', $coords, $match)) return false; - //$row_error = ($exp ? ($match[3] != 16) : ($match[3] > 15) ); - //if ($match[1] < 1 || $match[2] < 1 || $match[3] < 1 || $match[1] > $server_config['num_of_galaxies'] || $match[2] > $server_config['num_of_systems'] || ($exp ? ($match[3] != 16) : ($match[3] > 15))) return false; - return !($match[1] < 1 || $match[2] < 1 || $match[3] < 1 || $match[1] > $server_config['num_of_galaxies'] || $match[2] > $server_config['num_of_systems'] || ($exp ? ($match[3] != 16) : ($match[3] > 15))); - //return true; -} - -/** - * @param $name - */ -function icon($name) { - global $root; - echo ""; -} - -/** - * @return float - */ -function get_microtime() { - $t = explode(' ', microtime()); - return ((float)$t[1] + (float)$t[0]); -} - - -/** - * @param $type - * @param null $data - */ -function add_log($type, $data = null) { - global $server_config, $user_data, $root; - $message = ''; - if(!isset($data['toolbar'])) {$data['toolbar'] = "";} - if ($type == 'buildings' || $type == 'overview' || $type == 'defense' || $type == 'research' || $type == 'fleet'||$type == 'info') { - if (!$server_config['xtense_log_empire']) return; - - if ($type == 'buildings') $message = 'envoie les batiments de sa planète '.$data['planet_name'].' ('.$data['coords'].')'; - if ($type == 'overview') $message = 'envoie les informations de sa planète '.$data['planet_name'].' ('.$data['coords'].')'; - if ($type == 'defense') $message = 'envoie les defenses de sa planète '.$data['planet_name'].' ('.$data['coords'].')'; - if ($type == 'research') $message = 'envoie ses recherches'; - if ($type == 'fleet') $message = 'envoie la flotte de sa planète '.$data['planet_name'].' ('.$data['coords'].')'; - if ($type == 'info') $message = $data['message']; - } - - if ($type == 'system') { - if (!$server_config['xtense_log_system']) return; - - $message = 'envoie le système solaire '.$data['coords']; - } - - if ($type == 'ranking') { - if (!$server_config['xtense_log_ranking']) return; - - $message = 'envoie le classement '.$data['type2'].' des '.$data['type1'].' ('.$data['offset'].'-'.($data['offset']+99).') : '.date('H', $data['time']).'h'; - } - - if ($type == 'ally_list') { - $message = 'envoie la liste des membres de l\'alliance '.$data['tag']; - } - - if ($type == 'rc') { - $message = 'envoie un rapport de combat'; - } - - if ($type == 'messages') { - $message = 'envoie sa page de messages'; - - $extra = array(); - if (array_key_exists('msg', $data)) $extra[] = 'messages : '.$data['msg']; - if (array_key_exists('ally_msg', $data)) $extra[] = $data['ally_msg'].' messages d\'alliance'; - if (array_key_exists('ennemy_spy', $data)) $extra[] = $data['ennemy_spy'].' espionnages ennemis'; - if (array_key_exists('rc_cdr', $data)) $extra[] = $data['rc_cdr'].' rapports de recyclages'; - if (array_key_exists('expedition', $data)) $extra[] = $data['expedition'].' rapports d\'expedition'; - if (array_key_exists('added_spy', $data)) $extra[] = ' Rapport d\'espionnage ajouté : '.$data['added_spy_coords']; - if (array_key_exists('ignored_spy', $data)) $extra[] = $data['ignored_spy'].' rapports d\'espionnage ignorés'; - - if (!empty($extra)) $message .= ' ('.implode(', ', $extra).')'; - } - if (!empty($message)) { - $dir = date('ymd'); - - $file = 'log_'.date('ymd').'.log'; - if (!file_exists('journal/'.$dir)) @mkdir('journal/'.$dir); - if (file_exists('journal/'.$dir)) { - @chmod('journal/'.$dir, 0777); - $fp = @fopen('journal/'.$dir.'/'.$file, 'a+'); - if ($fp) { - fwrite($fp, '/*'.date('d/m/Y H:i:s').'*/'.'[Xtense]'.'['.$data['toolbar'].'] '.$user_data['user_name'].' '.$message."\n"); - fclose($fp); - @chmod('journal/'.$dir.'/'.$file, 0777); - } - } - - } -} - -/** - * @param $size - * @return string - */ -function format_size ($size) { - if ($size < 1024) $size .= ' octets'; - elseif ($size < 1024*1024) $size = round($size/1024, 2).' Ko'; - else $size = round($size/1024/1024, 2).'Mo'; - return $size; -} - -/** - * @param $stats - * @param $value - */ -function update_statistic($stats, $value){ - global $db; - $request = "update ".TABLE_STATISTIC." set statistic_value = statistic_value + {$value}"; - $request .= " where statistic_name = '{$stats}'"; - $db->sql_query($request); - if ($db->sql_affectedrows() == 0) { - $request = "insert ignore into ".TABLE_STATISTIC." values ('{$stats}', '{$value}')"; - $db->sql_query($request); - } -} - -/** - * @param $boosterdata - * @param $current_time - * @return null|\tableau - */ -function update_boosters($boosterdata, $current_time ){ - - $boosters = booster_decode(); - - foreach($boosterdata as $booster) { - if(!booster_is_uuid($booster[0])) { - log_("mod","Booster Inconnu"); - } else { - if(!isset($booster[1])) - $boosters = booster_uuid($boosters, $booster[0]); - else - $boosters = booster_uuid($boosters, $booster[0], booster_lire_date($booster[1]) + $current_time); - - } - }/*$booster_table = array('booster_m_val', 'booster_m_date', 'booster_c_val', 'booster_c_date', 'booster_d_val', 'booster_d_date', 'extention_p', 'extention_m');*/ - return $boosters; -} \ No newline at end of file +sql_query('SELECT `id` FROM '.TABLE_MOD.' WHERE `action` = "'.$action.'"'); + list($mod_id) = $db->sql_fetch_row($query); + + $replace = array(); + foreach ($data as $k => $call) { + if (!isset($call['function'], $call['type'])) return false; + if (!isset($call['active'])) $call['active'] = 1; + $replace[] = '('.$mod_id.', "'.$call['function'].'", "'.$call['type'].'", '.$call['active'].')'; + } + + $db->sql_query('INSERT IGNORE INTO '.TABLE_XTENSE_CALLBACKS.' (`mod_id`, `function`, `type`, `active`) VALUES '.implode(',', $replace)); + return $db->sql_affectedrows(); +} + +/** + * @param $string + * @return mixed + */ +function js_compatibility($string){ + return str_replace('
','\n',(htmlspecialchars_decode($string))); +} + +/** + * @param $date + * @return int + */ +function parseOgameDate($date) { + preg_match('!([0-9]+)-([0-9]+) ([0-9]+):([0-9]+):([0-9]+)!i', $date, $parts); + return mktime($parts[3], $parts[4], $parts[5], $parts[1], $parts[2], date('Y') - ($parts[1] == 12 && date('n') == 1 ? 1 : 0)); +} + +/** + * @param $str + * @return int + */ +function clean_nb($str) { + return (int)str_replace('.', '', $str); +} + +/** + * Amélioration de var_dump() + * + */ +function dump() { + $n = func_num_args(); + ob_start(); + for ($i = 0; $i < $n; $i++) + var_dump(func_get_arg($i)); + $content = ob_get_clean()."\n"; + //echo str_replace(array('<', '>'), array('<', '>'), $content)."\n"; + echo $content."\n"; +} + + +/** + * Echappement forcé pour la syntaxe Json + * + * @param string $str + * @return string + */ +function json_quote($str) { + return str_replace('"', '\\"', $str); +} + + +/** + * Verification de l'empire (Mise à jour, rajout, empire plein) + * + * @param int $type + * @param string $coords + * @return mixed(bool/int) + */ + +function home_check($type, $coords) { + global $db, $user_data; + + $empty_planets = array(101=>1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); + $empty_moons = array(201=>1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); + $planets = $moons = array(); + $offset = ($type == TYPE_PLANET ? 100 : 200); + + $query = $db->sql_query("SELECT `planet_id`, `coordinates` FROM ".TABLE_USER_BUILDING." WHERE `user_id` = ".$user_data['user_id']." ORDER BY `planet_id` ASC"); + while ($data = $db->sql_fetch_assoc($query)) { + if ($data['planet_id'] < 200) { + $planets[$data['planet_id']] = $data['coordinates']; + unset($empty_planets[$data['planet_id']], $empty_moons[$data['planet_id']+100]); + } + else { + $moons[$data['planet_id']] = $data['coordinates']; + unset($empty_moons[$data['planet_id']], $empty_planets[$data['planet_id']-100]); + } + } + foreach ($planets as $id => $p) { + if ($p == $coords || $coords == "unknown") { + // Si c'est une lune on check si une lune existe déjà + if ($type == TYPE_MOON) { + if (isset($moons[$id+100])) return array('update', 'id' => $id+100); + else return array('add', 'id' => $id+100); + } + + return array('update', 'id' => $id); + } + } + + // Si une lune correspond a la planete, on place la planete sous la lune + foreach ($moons as $id => $m) { + if ($m == $coords) { + return array($type == TYPE_PLANET ? 'add' : 'update', 'id' => $id-200+$offset); + } + } + + if ($type == TYPE_PLANET) { + if (count($empty_planets) == 0) return array('full'); + foreach ($empty_planets as $p) return array('add', 'id' => $p+$offset); + } + else { + if (count($empty_moons) == 0) return array('full'); + foreach ($empty_moons as $p) return array('add', 'id' => $p+$offset); + } +} + +/** + * @param $coords + * @param int $exp + * @return bool + */ +function check_coords($coords, $exp = 0) { + global $server_config; + if (!preg_match('!^([0-9]{1,2}):([0-9]{1,3}):([0-9]{1,2})$!Usi', $coords, $match)) return false; + //$row_error = ($exp ? ($match[3] != 16) : ($match[3] > 15) ); + //if ($match[1] < 1 || $match[2] < 1 || $match[3] < 1 || $match[1] > $server_config['num_of_galaxies'] || $match[2] > $server_config['num_of_systems'] || ($exp ? ($match[3] != 16) : ($match[3] > 15))) return false; + return !($match[1] < 1 || $match[2] < 1 || $match[3] < 1 || $match[1] > $server_config['num_of_galaxies'] || $match[2] > $server_config['num_of_systems'] || ($exp ? ($match[3] != 16) : ($match[3] > 15))); + //return true; +} + +/** + * @param $name + */ +function icon($name) { + global $root; + echo ""; +} + +/** + * @return float + */ +function get_microtime() { + $t = explode(' ', microtime()); + return ((float)$t[1] + (float)$t[0]); +} + + +/** + * @param $type + * @param null $data + */ +function add_log($type, $data = null) { + global $server_config, $user_data, $root; + $message = ''; + if(!isset($data['toolbar'])) {$data['toolbar'] = "";} + if ($type == 'buildings' || $type == 'overview' || $type == 'defense' || $type == 'research' || $type == 'fleet'||$type == 'info') { + if (!$server_config['xtense_log_empire']) return; + + if ($type == 'buildings') $message = 'envoie les batiments de sa planète '.$data['planet_name'].' ('.$data['coords'].')'; + if ($type == 'overview') $message = 'envoie les informations de sa planète '.$data['planet_name'].' ('.$data['coords'].')'; + if ($type == 'defense') $message = 'envoie les defenses de sa planète '.$data['planet_name'].' ('.$data['coords'].')'; + if ($type == 'research') $message = 'envoie ses recherches'; + if ($type == 'fleet') $message = 'envoie la flotte de sa planète '.$data['planet_name'].' ('.$data['coords'].')'; + if ($type == 'info') $message = $data['message']; + } + + if ($type == 'system') { + if (!$server_config['xtense_log_system']) return; + + $message = 'envoie le système solaire '.$data['coords']; + } + + if ($type == 'ranking') { + if (!$server_config['xtense_log_ranking']) return; + + $message = 'envoie le classement '.$data['type2'].' des '.$data['type1'].' ('.$data['offset'].'-'.($data['offset']+99).') : '.date('H', $data['time']).'h'; + } + + if ($type == 'ally_list') { + $message = 'envoie la liste des membres de l\'alliance '.$data['tag']; + } + + if ($type == 'rc') { + $message = 'envoie un rapport de combat'; + } + + if ($type == 'messages') { + $message = 'envoie sa page de messages'; + + $extra = array(); + if (array_key_exists('msg', $data)) $extra[] = 'messages : '.$data['msg']; + if (array_key_exists('ally_msg', $data)) $extra[] = $data['ally_msg'].' messages d\'alliance'; + if (array_key_exists('ennemy_spy', $data)) $extra[] = $data['ennemy_spy'].' espionnages ennemis'; + if (array_key_exists('rc_cdr', $data)) $extra[] = $data['rc_cdr'].' rapports de recyclages'; + if (array_key_exists('expedition', $data)) $extra[] = $data['expedition'].' rapports d\'expedition'; + if (array_key_exists('added_spy', $data)) $extra[] = ' Rapport d\'espionnage ajouté : '.$data['added_spy_coords']; + if (array_key_exists('ignored_spy', $data)) $extra[] = $data['ignored_spy'].' rapports d\'espionnage ignorés'; + + if (!empty($extra)) $message .= ' ('.implode(', ', $extra).')'; + } + if (!empty($message)) { + $dir = date('ymd'); + + $file = 'log_'.date('ymd').'.log'; + if (!file_exists('journal/'.$dir)) @mkdir('journal/'.$dir); + if (file_exists('journal/'.$dir)) { + @chmod('journal/'.$dir, 0777); + $fp = @fopen('journal/'.$dir.'/'.$file, 'a+'); + if ($fp) { + fwrite($fp, '/*'.date('d/m/Y H:i:s').'*/'.'[Xtense]'.'['.$data['toolbar'].'] '.$user_data['user_name'].' '.$message."\n"); + fclose($fp); + @chmod('journal/'.$dir.'/'.$file, 0777); + } + } + + } +} + +/** + * @param $size + * @return string + */ +function format_size ($size) { + if ($size < 1024) $size .= ' octets'; + elseif ($size < 1024*1024) $size = round($size/1024, 2).' Ko'; + else $size = round($size/1024/1024, 2).'Mo'; + return $size; +} + +/** + * @param $stats + * @param $value + */ +function update_statistic($stats, $value){ + global $db; + $request = "update ".TABLE_STATISTIC." set statistic_value = statistic_value + {$value}"; + $request .= " where statistic_name = '{$stats}'"; + $db->sql_query($request); + if ($db->sql_affectedrows() == 0) { + $request = "insert ignore into ".TABLE_STATISTIC." values ('{$stats}', '{$value}')"; + $db->sql_query($request); + } +} + +/** + * @param $boosterdata + * @param $current_time + * @return null|\tableau + */ +function update_boosters($boosterdata, $current_time ){ + + $boosters = booster_decode(); + + foreach($boosterdata as $booster) { + if(!booster_is_uuid($booster[0])) { + log_("mod","Booster Inconnu"); + } else { + if(!isset($booster[1])) + $boosters = booster_uuid($boosters, $booster[0]); + else + $boosters = booster_uuid($boosters, $booster[0], booster_lire_date($booster[1]) + $current_time); + + } + }/*$booster_table = array('booster_m_val', 'booster_m_date', 'booster_c_val', 'booster_c_date', 'booster_d_val', 'booster_d_date', 'extention_p', 'extention_m');*/ + return $boosters; +} diff --git a/index.php b/index.php index f3a6627..049b796 100755 --- a/index.php +++ b/index.php @@ -1,4 +1,4 @@ -sql_query('REPLACE INTO ' . TABLE_CONFIG . ' (config_name, config_value) VALUES ("xtense_universe", "' . $universe . '")' . $replace); + $db->sql_query('REPLACE INTO ' . TABLE_CONFIG . ' (`config_name`, `config_value`) VALUES ("xtense_universe", "' . $universe . '")' . $replace); generate_config_cache(); $server_config['xtense_universe'] = $universe; @@ -69,8 +69,8 @@ if (isset($pub_do)) { if ($pub_do == 'repair') { - $db->sql_query('DELETE FROM ' . TABLE_USER_BUILDING . ' WHERE planet_id < 1'); - $db->sql_query('DELETE FROM ' . TABLE_USER_DEFENCE . ' WHERE planet_id < 1'); + $db->sql_query('DELETE FROM ' . TABLE_USER_BUILDING . ' WHERE `planet_id` < 1'); + $db->sql_query('DELETE FROM ' . TABLE_USER_DEFENCE . ' WHERE `planet_id` < 1'); $action = 'repair'; } @@ -94,14 +94,14 @@ $empire = (isset($_POST['empire_' . $group_id]) ? 1 : 0); $messages = (isset($_POST['messages_' . $group_id]) ? 1 : 0); - $db->sql_query('REPLACE INTO ' . TABLE_XTENSE_GROUPS . ' (group_id, system, ranking, empire, messages) VALUES (' . $group_id . ', ' . $system . ', ' . $ranking . ', ' . $empire . ', ' . $messages . ')'); + $db->sql_query('REPLACE INTO ' . TABLE_XTENSE_GROUPS . ' (`group_id`, `system`, `ranking`, `empire`, `messages`) VALUES (' . $group_id . ', ' . $system . ', ' . $ranking . ', ' . $empire . ', ' . $messages . ')'); } $update = true; } - $query = $db->sql_query('SELECT g.group_id, group_name, system, ranking, empire, messages FROM ' . TABLE_GROUP . ' g LEFT JOIN ' . TABLE_XTENSE_GROUPS . ' x ON x.group_id = g.group_id ORDER BY g.group_name ASC'); + $query = $db->sql_query('SELECT g.`group_id`, `group_name`, `system`, `ranking`, `empire`, `messages` FROM ' . TABLE_GROUP . ' g LEFT JOIN ' . TABLE_XTENSE_GROUPS . ' x ON x.`group_id` = g.`group_id` ORDER BY g.`group_name` ASC'); $groups = array(); $groups_id = array(); @@ -119,12 +119,12 @@ if (isset($pub_toggle, $pub_state)) { $mod_id = (int)$pub_toggle; $state = $pub_state == 1 ? 1 : 0; - $db->sql_query('UPDATE ' . TABLE_XTENSE_CALLBACKS . ' SET active = ' . $state . ' WHERE id = ' . $mod_id); + $db->sql_query('UPDATE ' . TABLE_XTENSE_CALLBACKS . ' SET `active` = ' . $state . ' WHERE id = ' . $mod_id); $update = true; } - $query = $db->sql_query('SELECT c.id, c.type, c.active AS callback_active, m.title, m.active, m.version FROM ' . TABLE_XTENSE_CALLBACKS . ' c LEFT JOIN ' . TABLE_MOD . ' m ON m.id = c.mod_id ORDER BY m.title ASC'); + $query = $db->sql_query('SELECT c.`id`, c.`type`, c.`active` AS callback_active, m.`title`, m.`active`, m.`version` FROM ' . TABLE_XTENSE_CALLBACKS . ' c LEFT JOIN ' . TABLE_MOD . ' m ON m.`id` = c.`mod_id` ORDER BY m.`title` ASC'); $callbacks = array(); $calls_id = array(); diff --git a/uninstall.php b/uninstall.php index 18588ba..960bcd1 100755 --- a/uninstall.php +++ b/uninstall.php @@ -1,20 +1,21 @@ -sql_query('DELETE FROM '.TABLE_CONFIG.' WHERE config_name LIKE "xtense_%"'); -generate_config_cache(); - +sql_query('DELETE FROM '.TABLE_CONFIG.' WHERE `config_name` LIKE "xtense_%"'); +generate_config_cache(); + diff --git a/update.php b/update.php index 188885d..edab9ea 100755 --- a/update.php +++ b/update.php @@ -1,34 +1,34 @@ -sql_query("ALTER TABLE ".$table_prefix."parsedRec"." CONVERT TO CHARACTER SET utf8"); -$db->sql_query("ALTER TABLE ".TABLE_XTENSE_CALLBACKS." CONVERT TO CHARACTER SET utf8"); -$db->sql_query("ALTER TABLE ".$table_prefix."xtense_groups"." CONVERT TO CHARACTER SET utf8"); -$db->sql_query("ALTER TABLE ".$table_prefix."parsedSpyEn"." CONVERT TO CHARACTER SET utf8"); - - -$db->sql_query('DELETE FROM '.TABLE_CONFIG.' WHERE config_name LIKE "xtense_log_ogspy"'); -$db->sql_query('DELETE FROM '.TABLE_CONFIG.' WHERE config_name LIKE "xtense_keep_log"'); - -$result = $db->sql_query("SELECT `version` FROM ".TABLE_MOD." WHERE `title` = 'xtense'"); -list($version) = $db->sql_fetch_row($result); - -if(version_compare($version, '2.7.2', '<')){ - $db->sql_query("ALTER TABLE ".TABLE_XTENSE_CALLBACKS." MODIFY `type` enum('overview','system','ally_list','buildings','research','fleet','fleetSending','defense','spy', 'spy_shared', 'ennemy_spy','rc', 'rc_shared','rc_cdr', 'msg', 'ally_msg', 'expedition','expedition_shared', 'ranking', 'trade', 'trade_me','hostiles') NOT NULL"); -} - -update_mod($mod_folder, $mod_name); - +sql_query("ALTER TABLE ".$table_prefix."parsedRec"." CONVERT TO CHARACTER SET utf8"); +$db->sql_query("ALTER TABLE ".TABLE_XTENSE_CALLBACKS." CONVERT TO CHARACTER SET utf8"); +$db->sql_query("ALTER TABLE ".$table_prefix."xtense_groups"." CONVERT TO CHARACTER SET utf8"); +$db->sql_query("ALTER TABLE ".$table_prefix."parsedSpyEn"." CONVERT TO CHARACTER SET utf8"); + + +$db->sql_query('DELETE FROM '.TABLE_CONFIG.' WHERE `config_name` LIKE "xtense_log_ogspy"'); +$db->sql_query('DELETE FROM '.TABLE_CONFIG.' WHERE `config_name` LIKE "xtense_keep_log"'); + +$result = $db->sql_query("SELECT `version` FROM ".TABLE_MOD." WHERE `title` = 'xtense'"); +list($version) = $db->sql_fetch_row($result); + +if(version_compare($version, '2.7.2', '<')){ + $db->sql_query("ALTER TABLE ".TABLE_XTENSE_CALLBACKS." MODIFY `type` enum('overview','system','ally_list','buildings','research','fleet','fleetSending','defense','spy', 'spy_shared', 'ennemy_spy','rc', 'rc_shared','rc_cdr', 'msg', 'ally_msg', 'expedition','expedition_shared', 'ranking', 'trade', 'trade_me','hostiles') NOT NULL"); +} + +update_mod($mod_folder, $mod_name); + diff --git a/version.txt b/version.txt index dad3e59..76f0698 100755 --- a/version.txt +++ b/version.txt @@ -1,5 +1,5 @@ Xtense -2.9.7 +2.9.8 Xtense,Xtense,xtense,xtense,index.php,1,1 3.3.6 2.9.0 diff --git a/xtense.php b/xtense.php index afbd455..2083bcd 100755 --- a/xtense.php +++ b/xtense.php @@ -1,4 +1,5 @@ mktime(0, 0, 0) && $time < mktime(8, 0, 0)) { @@ -87,6 +89,7 @@ //print_r($data); + switch ($received_game_data['type']) { case 'overview': { //PAGE OVERVIEW if (!$user_data['grant']['empire']) { @@ -592,8 +595,8 @@ VALUES (" . $galaxy . ", " . $system . ", " . $row . ", '" . $v['planet_name'] . "', '" . $v['player_name'] . "', '" . $v['ally_tag'] . "', '" . $statusTemp . "', " . $time . ", " . $user_data['user_id'] . ", '" . $v['moon'] . "')"); else { $db->sql_query( - "UPDATE " . TABLE_UNIVERSE . " SET name = '" . $v['planet_name'] . "', player = '" . $v['player_name'] . "' , ally = '" . $v['ally_tag'] . "', status = '" . $statusTemp . "', moon = '" . $v['moon'] . "', last_update = " . $time . ", last_update_user_id = " . $user_data['user_id'] - . " WHERE galaxy = " . $galaxy . " AND system = " . $system . " AND row = " . $row + "UPDATE " . TABLE_UNIVERSE . " SET `name` = '" . $v['planet_name'] . "', `player` = '" . $v['player_name'] . "' , `ally` = '" . $v['ally_tag'] . "', `status` = '" . $statusTemp . "', `moon` = '" . $v['moon'] . "', `last_update` = " . $time . ", `last_update_user_id` = " . $user_data['user_id'] + . " WHERE `galaxy` = " . $galaxy . " AND `system` = " . $system . " AND `row` = " . $row ); } } @@ -604,10 +607,10 @@ $toDelete[] = $galaxy . ':' . $system . ':' . $n; } - $db->sql_query("UPDATE " . TABLE_PARSEDSPY . " SET active = 0 WHERE coordinates IN ('" . implode("', '", $toDelete) . "')"); + $db->sql_query("UPDATE " . TABLE_PARSEDSPY . " SET `active` = 0 WHERE coordinates IN ('" . implode("', '", $toDelete) . "')"); } - $db->sql_query("UPDATE " . TABLE_USER . " SET planet_added_ogs = planet_added_ogs + 15 WHERE user_id = " . $user_data['user_id']); + $db->sql_query("UPDATE " . TABLE_USER . " SET `planet_added_ogs` = `planet_added_ogs` + 15 WHERE `user_id` = " . $user_data['user_id']); $call->add('system', array( 'data' => $data['rows'], @@ -819,7 +822,7 @@ update_statistic('rankimport_ogs', 100); add_log('ranking', array('type1' => $type1, 'type2' => $type2, 'offset' => $offset, 'time' => $timestamp, 'toolbar' => $toolbar_info)); - + break; case 'rc': //PAGE RC @@ -1180,7 +1183,7 @@ $test = $db->sql_numrows($db->sql_query("SELECT `id_spy` FROM " . TABLE_PARSEDSPY . " WHERE `coordinates` = '$coords' AND `dateRE` = '$spy_time'")); if (!$test) { $db->sql_query("INSERT INTO " . TABLE_PARSEDSPY . " ( " . $fields . ") VALUES (" . $values . ")"); - $query = $db->sql_query('SELECT last_update' . ($moon ? '_moon' : '') . ' FROM ' . TABLE_UNIVERSE . ' WHERE galaxy = ' . $spy['coords'][0] . ' AND system = ' . $spy['coords'][1] . ' AND row = ' . $spy['coords'][2]); + $query = $db->sql_query('SELECT `last_update`' . ($moon ? '_moon' : '') . ' FROM ' . TABLE_UNIVERSE . ' WHERE `galaxy` = ' . $spy['coords'][0] . ' AND `system` = ' . $spy['coords'][1] . ' AND `row` = ' . $spy['coords'][2]); //log_('debug', 'SELECT last_update' . ($moon ? '_moon' : '') . ' FROM ' . TABLE_UNIVERSE . ' WHERE galaxy = ' . $spy['coords'][0] . ' AND system = ' . $spy['coords'][1] . ' AND row = ' . $spy['coords'][2]); if ($db->sql_numrows($query) > 0) { $assoc = $db->sql_fetch_assoc($query); @@ -1189,13 +1192,13 @@ (isset($spy['content'][42]) ? $phalanx = $spy['content'][42] : $phalanx = 0); (isset($spy['content'][43]) ? $gate = $spy['content'][43] : $gate = 0); //log_('debug', "Lune détectée avec phalange $phalanx et porte $gate"); - $db->sql_query('UPDATE ' . TABLE_UNIVERSE . ' SET moon = "1", phalanx = ' . $phalanx . ', gate = "' . $gate . '", last_update_moon = ' . $date . ', last_update_user_id = ' . $user_data['user_id'] . ' WHERE galaxy = ' . $spy['coords'][0] . ' AND system = ' . $spy['coords'][1] . ' AND row = ' . $spy['coords'][2]); + $db->sql_query('UPDATE ' . TABLE_UNIVERSE . ' SET `moon` = "1", `phalanx` = ' . $phalanx . ', `gate` = "' . $gate . '", `last_update_moon` = ' . $date . ', `last_update_user_id` = ' . $user_data['user_id'] . ' WHERE `galaxy` = ' . $spy['coords'][0] . ' AND `system` = ' . $spy['coords'][1] . ' AND `row` = ' . $spy['coords'][2]); } else { //we do nothing if buildings are not in the report - $db->sql_query('UPDATE ' . TABLE_UNIVERSE . ' SET name = "' . $spy['planet_name'] . '", last_update_user_id = ' . $user_data['user_id'] . ' WHERE galaxy = ' . $spy['coords'][0] . ' AND system = ' . $spy['coords'][1] . ' AND row = ' . $spy['coords'][2]); + $db->sql_query('UPDATE ' . TABLE_UNIVERSE . ' SET `name` = "' . $spy['planet_name'] . '", `last_update_user_id` = ' . $user_data['user_id'] . ' WHERE `galaxy` = ' . $spy['coords'][0] . ' AND `system` = ' . $spy['coords'][1] . ' AND `row` = ' . $spy['coords'][2]); } } } - $db->sql_query('UPDATE ' . TABLE_USER . ' SET spy_added_ogs = spy_added_ogs + 1 WHERE user_id = ' . $user_data['user_id']); + $db->sql_query('UPDATE ' . TABLE_USER . ' SET `spy_added_ogs` = spy_added_ogs + 1 WHERE `user_id` = ' . $user_data['user_id']); update_statistic('spyimport_ogs', '1'); add_log('messages', array('added_spy' => $spy['planet_name'], 'added_spy_coords' => $coords, 'toolbar' => $toolbar_info)); }