PDA

Просмотр полной версии : Територия


Tem
07.10.2006, 22:02
Значить так ст авлю у себя на локалке територию всё ок , но когда вхожу даётся такая ошибка:

PHP Parse error: syntax error, unexpected T_THROW, expecting T_STRING in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\include\\common_small.inc on line 47, referer: http://localhost/project.php

вот содиржания файла common_small.inc

<?php
include_once(dirname(__FILE__)."/config.inc");
include_once(dirname(__FILE__)."/constant.inc");
include_once(dirname(__FILE__)."/ipcookie.inc");
include_once(dirname(__FILE__)."/debug.inc");
/* include_once(dirname(__FILE__)."/cache.inc"); */
include_once(dirname(__FILE__)."/database_small.inc");

$container = new Database(HOST_NAME, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$container_session = new Database(SESSION_HOST_NAME, SESSION_DATABASE_NAME, SESSION_DATABASE_USER,

SESSION_DATABASE_PASSWORD);
$container_fight = new Database(FIGHT_HOST_NAME, FIGHT_DATABASE_NAME, FIGHT_DATABASE_USER,

FIGHT_DATABASE_PASSWORD);

include_once(dirname(__FILE__)."/cgi.inc");
include_once(dirname(__FILE__)."/theme.inc");
include_once(dirname(__FILE__)."/module_small.inc");

include_module(array('session', 'personage', 'area', 'file'));

function include_module($arr) {
if (is_array($arr))
foreach ($arr as $item) module_include($item);
}


function print_r1($data) {
print "<pre>"; print_r($data); print "</pre>";
}

function make_seed() {
list($usec,$sec) = explode(" ", microtime());
return ((float)$sec+(float)$usec) * 100000;
}

function print_r2($data) {
global $DOCUMENT_ROOT;

ob_start();
print_r($data);
$s = ob_get_contents();
ob_end_clean();
$f = fopen($DOCUMENT_ROOT."/dbg.log", "a+");
fwrite($f, $s);
fclose($f);
}


function throw($exception) {
global $DOCUMENT_ROOT;
if (EXCEPTION_STREAM == 1) {
ob_start();
trigger_error($exception, E_USER_WARNING);
$s = ob_get_contents();
ob_end_clean();
$f = fopen($DOCUMENT_ROOT."/exception.log", "a+");
fwrite($f, date("H:i:s").": ".$s.'\n');
fclose($f);
} elseif (EXCEPTION_STREAM == 0) {
if (EXCEPTION_LEVEL == 0) {
} elseif (EXCEPTION_LEVEL == 1) {
// $theme = new BaseTheme();
// print $theme->error($exception);
// trigger_error($exception, E_USER_WARNING);
} elseif (EXCEPTION_LEVEL == 2) {
// trigger_error($exception, E_USER_ERROR);
}
}
if (EXCEPTION_STOP) die;
}

function moneyFormat($amount = 0)
{
return sprintf("%.2f", $amount);
}

function moneyValue($amount = 0)
{
return abs(floatval($amount));
}

function _pages($total, $offset, $limit) {
$result = array();

if ($limit < $total) {
$result[0] = array();
$result[0]["OFFSET"] = 0;

$index = 0;
for ($i = 0; $i < $total; $i += $limit) {
$result[$index] = array();
$result[$index]["OFFSET"] = $i;
if ($i == $offset) {
$result[$index]["SELECTED"] = 1;
$result["NEXT"] = array();
$result["NEXT"]["OFFSET"] = (($i+$limit) > $total)? $i : $i+$limit;
$result["PREV"] = array();
$result["PREV"]["OFFSET"] = ($i == 0)? 0 : $i-$limit;
} else {
$result[$index]["SELECTED"] = 0;
}
$index++;
}
}

return $result;
}

function getContainerChat($area_id) {
global $container, $container_chat;

if (!$area_id) return $container;

$arr = getContainerParam($area_id);
if ($arr['HOST'] == '') {
$container_chat = &$container;
} else
if (($container->host_name != '') && ($container->host_name == $arr['HOST']) && ($container->database_name == $arr['DATABASE']) &&

($container->database_user == $arr['USER'])) {
$container_chat = &$container;
// $container_chat = new Database($arr['HOST'], $arr['DATABASE'], $arr['USER'], $arr['PASSWORD']);
} else {
$container_chat = new Database($arr['HOST'], $arr['DATABASE'], $arr['USER'], $arr['PASSWORD']);
}


return $container_chat;
}

function getContainerParam($area_id) {
global $container, $container_chat, $servers;

/*
для скорости берем напрямую из global $servers

$list = module_invoke('server', 'list_chat', false, 0, $area_id);
if (!$list || (count($list) == 0)) return false; # если не определены серверы для чата, то считаем, что чат не разделяется на сервера!

$area = area_get($area_id);
$container_array = array('HOST' => $area['CHAT_HOST'], 'DATABASE' => $area['CHAT_DATABASE'], 'USER' => $area['CHAT_USER'],

'PASSWORD' => $area['CHAT_PASSWORD']);
if (!$container_array['HOST']) {
$container_array['HOST'] = $list[0]['HOST_NAME'];
$container_array['DATABASE'] = $list[0]['DATABASE_NAME'];
$container_array['USER'] = $list[0]['USER'];
$container_array['PASSWORD'] = $list[0]['PASSWORD'];
}
*/
$container_array['HOST'] = $servers[0]['HOST_NAME'];
$container_array['DATABASE'] = $servers[0]['DATABASE_NAME'];
$container_array['USER'] = $servers[0]['USER'];
$container_array['PASSWORD'] = $servers[0]['PASSWORD'];

return $container_array;
}


/**
* Посылка специального сообщения. Функцию можно вызывать откуда угодно, даже оттуда, где нет залогиненной
* сессии (например из кронов). Также фукнцию можно вызывать для посылки сообщения игроку, находящемуся
* где угодно, не обязательно в той же точке местоположения, что и текущий залогиненный игрок
* @param integer $recipient_id - код персонажа, которому посылать сообщение
* @param string $text - текст сообщение
*/
function send_chat_special($recipient_id,
$text,
$recipient_nick = '',
$area_id = 0,
$service = 100) {
global $container_chat;

$tmp_container_chat = $container_chat;

if (!$recipient_nick || !$area_id) {
$recipient = module_invoke('personage', 'get', $recipient_id);
if (!$recipient_nick) $recipient_nick = $recipient['LOGIN'];

if (!$area_id) {
$container_chat = getContainerChat($recipient['AREA_ID']); # так как chat_save_system() использует глобальную $container_chat
$area_id = $recipient['AREA_ID'];
}
}

$res = module_invoke('chat', 'save_special', array(
"AREA_ID" => $area_id,
"PERSONAGE_ID" => 0,
"PERSONAGE_LOGIN" => '',
"RECIPIENT_ID" => $recipient_id,
"RECIPIENT_LOGIN" => $recipient_nick,
"SERVICE" => $service,
"MESSAGE" => "private [".$recipient_nick."]: ".$text,
));

$container_chat = $tmp_container_chat;

return $res;
}

/**
* Посылка системного сообщения сообщения. Аналог send_chat_special()
* @param string $text - текст сообщение
* @param integer $recipient_id - код персонажа, которому посылать сообщение
*/
function send_chat_system($recipient_id,
$text,
$service,
$recipient_nick = '',
$area_id = 0) {
global $container_chat;

$tmp_container_chat = $container_chat;

if (!$recipient_nick || !$area_id) {
$recipient = module_invoke('personage', 'get', $recipient_id);
if (!$recipient_nick) $recipient_nick = $recipient['LOGIN'];

if (!$area_id) {
$container_chat = getContainerChat($recipient['AREA_ID']); # так как chat_save_system() использует глобальную $container_chat
$area_id = $recipient['AREA_ID'];
}
}

$res = module_invoke('chat', 'save_system', array(
"AREA_ID" => $area_id,
"PERSONAGE_ID" => 0,
"PERSONAGE_LOGIN" => '',
"RECIPIENT_ID" => $recipient_id,
"RECIPIENT_LOGIN" => $recipient_nick,
"SERVICE" => $service,
"MESSAGE" => $text,
));

$container_chat = $tmp_container_chat;

return $res;
}

function areInTheSameDistrict($area1_id, $area2_id) {

$parents1 = module_invoke('area', 'list_parent', false, $area1_id, " AND A.TYPE_ID=1");
#print_r2($parents1);
$parents2 = module_invoke('area', 'list_parent', false, $area2_id, " AND A.TYPE_ID=1");
#print_r2($parents2);

return ($parents1[0]['ID'] && $parents2[0]['ID'] && ($parents1[0]['ID'] == $parents2[0]['ID'])) ? true : false;
}

/**
* Посылка простого сообщения. Функцию "настигает" получателя приватного сообщения в пределах района
* @param integer $area_id - в какую комнату нужно отправлять сообщение
* @param integer $sender_id - код персонажа - отправителя сообщения
* @param string $sender_nick - ник персонажа - отправителя сообщения
* @param string $sender_color - цвет сообщения персонажа - отправителя сообщения
* @param integer $recipient_id - код персонажа, которому посылать сообщение
* @param string $recipient_nick - ник персонажа, которому посылать сообщение
* @param integer $service - 100 - private, 101 - to
* @param string $full_msg_text - само сообщение полностью
* @param string $ip - ip-адрес отправителя
*/
function send_chat_message($area_id,
$sender_id,
$sender_nick,
$sender_color,
$recipient_id,
$recipient_nick,
$service,
$full_msg_text,
$ip = '') {
global $container_chat, $session_personage;

# код отправителя должен быть задан всегда!
if (!$sender_id) $sender_id = $session_personage['ID'];

# код комнаты назначения и сервис должны быть установлены всегда!
# if (!isset($area_id) || !isset($service))
# return false;
# текст сообщения должен быть задан всегда! (если код отправителя 0 - значит, посылает администратор)
if (!trim(strval($full_msg_text)))
return false;

# если не задан ник отправителя, вычисляем его здесь!
if (!$sender_nick && $sender_id) {
$sender = module_invoke('personage', 'get', $sender_id);
$sender_nick = $sender['LOGIN'];
}
# если не задан ник получателя, пытаемся вычислить его здесь; может оказаться пустым, если не задан код получателя - это

нормальная ситуация
if (!$recipient_nick && !$recipient_id) {
$recipient = module_invoke('personage', 'get', $recipient_id);
$recipient_nick = $recipient['LOGIN'];
}

$tmp_container_chat = $container_chat;
$ip = $ip ? $ip : getIP();

$full_msg_text = '<font color="'.$sender_color.'">'.$full_msg_text.'</font>';

# специальная обработка для приватных сообщений - они должны "настигать" получателя в пределах района!
if ($service == 100) {
if (!$sender)
$sender = module_invoke('personage', 'get', $sender_id);

if ($sender['AREA_ID'] != $area_id) {
if (!areInTheSameDistrict($sender['AREA_ID'], $area_id)) {

return module_invoke('chat', 'save_message', array( # дубль отправителю привата идет всегда!
"AREA_ID" => intval($sender['AREA_ID']),
"PERSONAGE_ID" => intval($sender_id),
"PERSONAGE_LOGIN" => strval($sender_nick),
# "PERSONAGE_COLOR" => strval($sender_color),
"RECIPIENT_ID" => intval($recipient_id),
"RECIPIENT_LOGIN" => strval($recipient_nick),
"SERVICE" => intval($service),
"MESSAGE" => strval($full_msg_text),
"IP" => strval($ip),
));
}

$container_chat = getContainerChat($area_id);
}
}

$res = module_invoke('chat', 'save_message', array(
"AREA_ID" => intval($area_id),
"PERSONAGE_ID" => intval($sender_id),
"PERSONAGE_LOGIN" => strval($sender_nick),
# "PERSONAGE_COLOR" => strval($sender_color),
"RECIPIENT_ID" => intval($recipient_id),
"RECIPIENT_LOGIN" => strval($recipient_nick),
"SERVICE" => intval($service),
"MESSAGE" => strval($full_msg_text),
"IP" => strval($ip),
));

$container_chat = $tmp_container_chat;

if ($service == 100 && $sender['AREA_ID'] != $area_id) { # дубль отправителю привата
module_invoke('chat', 'save_message', array(
"AREA_ID" => intval($sender['AREA_ID']),
"PERSONAGE_ID" => intval($sender_id),
"PERSONAGE_LOGIN" => strval($sender_nick),
# "PERSONAGE_COLOR" => strval($sender_color),
"RECIPIENT_ID" => 0,
"RECIPIENT_LOGIN" => '',
"SERVICE" => intval($service),
"MESSAGE" => strval($full_msg_text),
"IP" => strval($ip),
));
}

return $res;
}

function check_html_msg($msg) {
return $msg;
}

/**
* Печатает 5 input полей - день, месяц, год, час, минуты
* @param string $name - база для имен input полей
* @param string $value - дата, отдельные части которой подставляются в качестве значений input-полей
* @return string - результат
*/
function _form_date($name, $value) {
if ($value) { # value = date("Y-m-d h:m");
$day1 = substr($value, 8);
$month1 = substr($value, 5, 2);
$year1 = substr($value, 0, 4);
$hour1 = substr($value, 11, 2);
$min1 = substr($value, 14, 2);
}
$result .= "<select name=\"".$name."_day\">\n";
for ($i = 1; $i < 32; $i++) {
$result .= "<option value=\"$i\" ".(($day1 == $i)? "SELECTED" : "").">$i\n";
}
$result .= "</select>\n";
$result .= ".&nbsp;<select name=\"".$name."_month\">\n";
$result .= "<option value=\"01\" ".((intval($month1) == 1)? "SELECTED" : "").">Январь\n";
$result .= "<option value=\"02\" ".((intval($month1) == 2)? "SELECTED" : "").">Февраль\n";
$result .= "<option value=\"03\" ".((intval($month1) == 3)? "SELECTED" : "").">Март\n";
$result .= "<option value=\"04\" ".((intval($month1) == 4)? "SELECTED" : "").">Апрель\n";
$result .= "<option value=\"05\" ".((intval($month1) == 5)? "SELECTED" : "").">Май\n";
$result .= "<option value=\"06\" ".((intval($month1) == 6)? "SELECTED" : "").">Июнь\n";
$result .= "<option value=\"07\" ".((intval($month1) == 7)? "SELECTED" : "").">Июль\n";
$result .= "<option value=\"08\" ".((intval($month1) == 8)? "SELECTED" : "").">Авгутс\n";
$result .= "<option value=\"09\" ".((intval($month1) == 9)? "SELECTED" : "").">Сентябрь\n";
$result .= "<option value=\"10\" ".((intval($month1) == 10)? "SELECTED" : "").">Октябрь\n";
$result .= "<option value=\"11\" ".((intval($month1) == 11)? "SELECTED" : "").">Ноябрь\n";
$result .= "<option value=\"12\" ".((intval($month1) == 12)? "SELECTED" : "").">Декабрь\n";
$result .= "</select>\n";
$result .= ".&nbsp;<select name=\"".$name."_year\">\n";
$y = date("Y");
for ($i = $y; $i < ($y+4); $i++) {
$result .= "<option value=\"$i\" ".(($year1 == $i)? "SELECTED" : "").">$i\n";
}
$result .= "</select>\n";
$result .= "&nbsp;<select name=\"".$name."_hour\">\n";
for ($i = 0; $i < 24; $i++) {
$result .= "<option value=\"$i\" ".(($hour1 == $i)? "SELECTED" : "").">$i\n";
}
$result .= "</select>\n";
$result .= ":&nbsp;<select name=\"".$name."_min\">\n";
for ($i = 0; $i < 60; $i++) {
$result .= "<option value=\"$i\" ".(($min1 == $i)? "SELECTED" : "").">$i\n";
}
$result .= "</select>\n";

return $result;
}

function initGlobalVariables($sid) { # используется также в ботах
global $session, $session_user, $session_personage, $session_area, $container_chat, $session_position;

if ($sid) {
$session = module_invoke("session", "get", $sid);
$session_user = module_invoke("session", "get_user", $session["UID"]);
$session_personage = module_invoke("personage", "get", $session["UID"]);
$session_area = module_invoke("area", "get", $session_user["AREA_ID"]);
$session_position = module_invoke("area", "get_position", $session_user["AREA_ID"]);

$container_chat = getContainerChat($session['AREA_ID']);
}
}

function varSet($varName = false)
{
global $_GET, $_POST;
if (!$varName)
{
return false;
};
return isset($_GET[$varName]) || isset($_POST[$varName]) ? true : false;
}

function getVar($varName = false)
{
global $_GET, $_POST;
if (!$varName)
{
return false;
};
if (isset($_GET[$varName]))
{
return $_GET[$varName];
};
if(isset($_POST[$varName]))
{
return $_POST[$varName];
};
return false;
}

function nick2html($nick) {
return str_replace('"', '&quot;', $nick);
}

global $cronTag, $activeCookie;
if (!isset($cronTag) || ($cronTag == false))
{
$ipaddr = ip2long(getIP());
if (!isset($_COOKIE["active"]) ||
(!checkActiveCookie($_COOKIE["active"], $ipaddr)))
{
$cookie = generateActiveCookie($ipaddr);
setcookie("active", $cookie);
$activeCookie = $cookie;
}
else
{
$activeCookie = $_COOKIE["active"];
};
};
$cgi = new CGI();
$theme = new BaseTheme();
$cache = false;
/* $cache = new Cache(); */
$cache = false;
initGlobalVariables($sid);
if ($session_user['LOGIN'] == 'root') {
$container->is_debug = true;
$container_fight->is_debug = true;
$container_session->is_debug = true;
$container_chat->is_debug = true;
}
?>


Вот не разберусь в чём тама проблема, кто поможит в проблеме подкину 3 WMZ, жду ответов.

Digimortal
07.10.2006, 22:15
используешь Php5?

Tem
07.10.2006, 22:24
да пхп 5 версия.

Digimortal
07.10.2006, 22:28
попробуй пхп четверку

Tem
07.10.2006, 22:40
Так проверить я проверю проблем нет, если всё заработает в пм тебе постучюсь, ешё есть придложения ?

blackybr
08.10.2006, 09:05
я так понял, что у тебя переменная уже занята либо невозможно ее инициализировать) попробуй изменить ее на чтолибо другое

SMiX
08.10.2006, 09:36
Ошибка в этой строке:
function throw($exception) {
В пятом php нельзя использовать throw как название функции.
Читай здесь:
http://ru.php.net/throw

GOOFY
02.11.2006, 18:57
раз тема зашла о территории, то вопрос такой - как можно сделать бэкап баз на денвер? а то 12 метров он не тянят, подкиньте идею...