Файл: vigre/common.php
Строк: 162
<?php
/**
* Общие функции используемые роботами.
* Не менять.
*
*/
define('VGR_INT_MESSAGE_INFO', 'info');
define('VGR_INT_MESSAGE_WARN', 'warn');
define('VGR_INT_MESSAGE_ERROR', 'error');
//Коды ошибок
define('VGR_CORE_XML_API_ERROR_GENERAL', -2);
define('VGR_CORE_XML_API_ERROR_SUCCESS', -1);
define('VGR_CORE_XML_API_ERROR_PARAM_NOT_PASSED', 2);
define('VGR_CORE_XML_API_ERROR_SIGN_CHECK', 3);
define('VGR_CORE_XML_API_ERROR_DOS_ATTACK', 4);
define('VGR_CORE_INT_BOT_TYPE_VOTES', 1);
define('VGR_CORE_INT_BOT_TYPE_BONUS', 2);
define('VGR_CORE_INT_VOTE_STATUS_BONUS_RECEIVED', 2);
//Соединение с БД голосований
static $vgrInt_SQLLink;
/**
* Выводит форматированное сообщение с помощью echo
* Используется для журналирования работы роботов
*
* @param string $tag Метка сообщения
* @param int $level Уровень ошибки (info, warn, error)
* @param string $message Собщение
*/
function vgrInt_printMessage($tag, $level, $message)
{
$date = time();
$date = date("d.m.y H:i:s", $date);
echo $date;
echo " ";
echo $tag;
echo " ";
echo $level;
echo ": ";
echo $message;
echo "rn";
}
/**
* Закачивает содержимое файла с удаленного сервера по URL.
*
* @param string $url URL удаленного сервера.
* @param int $maxlength Максимальная длина данных в закачке. Если null -- закачиваются все данные.
* @param int $timeout Таймаут на закачку. Если 0 -- бесконечный таймаут.
* @param bool $disableWarnings Показывать или нет предупреждения.
*
* @return string Данные закачки.
*/
function vgrInt_getFileContentByURL($url, $maxlength = null, $timeout = 0, $disableWarnings = false)
{
$url = trim($url);
if($timeout > 0)
{
ini_set('default_socket_timeout', $timeout);
}
if($disableWarnings)
{
error_reporting(E_ERROR);
}
$context = null;
$ret = null;
if($maxlength == null)
{
$ret = file_get_contents($url, False, $context);
}
else
{
$ret = file_get_contents($url, False, $context, 0, $maxlength);
}
if($ret !== FALSE)
{
if($ret != null)
{
$ret = trim($ret);
}
}
return $ret;
}
/**
* Открывает соединение с БД для хранения голосов
*
*/
function vgrInt_openVotesSQLConnection()
{
$dbHost = VGR_INT_VOTES_SQL_SERVER_HOST;
$dbUser = VGR_INT_VOTES_SQL_SERVER_USER;
$dbPass = VGR_INT_VOTES_SQL_SERVER_PASS;
$dbName = VGR_INT_VOTES_SQL_SERVER_DB;
global $vgrInt_SQLLink;
$vgrInt_SQLLink = mysql_connect($dbHost, $dbUser, $dbPass, true);
if($vgrInt_SQLLink)
{
mysql_select_db($dbName, $vgrInt_SQLLink) or vgrInt_throwMySQLError();
}
else
{
$errorMessage = "vgrInt_openVotesSQLConnection failed. host: $dbHost, user: $dbUser";
throw new Exception($errorMessage);
}
}
/**
* Закрывает соединение с БД игры
*
*/
function vgrInt_closeVotesSQLConnection()
{
global $vgrInt_SQLLink;
if($vgrInt_SQLLink != null)
{
mysql_close($vgrInt_SQLLink);
}
}
/**
* Открывает соединение с БД игры
*
*/
function vgrInt_openGameSQLConnection()
{
$dbHost = VGR_INT_GAME_SQL_SERVER_HOST;
$dbUser = VGR_INT_GAME_SQL_SERVER_USER;
$dbPass = VGR_INT_GAME_SQL_SERVER_PASS;
$dbName = VGR_INT_GAME_SQL_SERVER_DB;
if(mysql_connect($dbHost, $dbUser, $dbPass))
{
mysql_select_db($dbName) or vgrInt_throwMySQLError();
}
else
{
$errorMessage = "vgrInt_openGameSQLConnection failed. host: $dbHost, user: $dbUser";
throw new Exception($errorMessage);
}
}
/**
* Закрывает соединение с БД игры
*
*/
function vgrInt_closeGameSQLConnection()
{
mysql_close();
}
/**
* Создает SQL таблицы (если они еще не были созданы) БД голосов
*
*/
function vgrInt_createSQLTables()
{
global $vgrInt_SQLLink;
$query =
"
CREATE TABLE IF NOT EXISTS vigre_votes (
id int(11) NOT NULL default '0',
`date` datetime default NULL,
charname varchar(255) default NULL,
ip varchar(255) default NULL,
`status` int(11) default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
mysql_query($query, $vgrInt_SQLLink) or vgrInt_throwMySQLError();
$query = "ALTER TABLE `vigre_votes` ADD `sms` BOOL NULL DEFAULT NULL;";
mysql_query($query, $vgrInt_SQLLink);
$query = "
CREATE TABLE IF NOT EXISTS vigre_votes_bot (
running tinyint(1) default NULL,
last_run datetime default NULL,
`type` int(11) NOT NULL default '0',
PRIMARY KEY (`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
mysql_query($query, $vgrInt_SQLLink) or vgrInt_throwMySQLError();
$query = "CREATE TABLE IF NOT EXISTS vigre_bonus (
charname varchar(255) NOT NULL default '',
bonus_date datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (charname)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
mysql_query($query, $vgrInt_SQLLink) or vgrInt_throwMySQLError();
}
/**
* Генерит исключение с mysql ошибкой.
* Использовать ТОЛЬКО при работе с БД голосований
*
*/
function vgrInt_throwMySQLError()
{
global $vgrInt_SQLLink;
throw new Exception(mysql_error($vgrInt_SQLLink));
}
?>