| 1 | <?php
|
|---|
| 2 |
|
|---|
| 3 | // Настройки
|
|---|
| 4 | require_once 'configs/config.php';
|
|---|
| 5 | // Библиотека для работы с БД - http://dklab.ru/lib/DbSimple
|
|---|
| 6 | require_once 'includes/DbSimple/Generic.php';
|
|---|
| 7 |
|
|---|
| 8 | // Массив настроек
|
|---|
| 9 | global $AoWoWconf;
|
|---|
| 10 |
|
|---|
| 11 | // Подключение к БД мангос (версия 3 :) )
|
|---|
| 12 | $DB = DbSimple_Generic::connect("mysql://".$AoWoWconf['mangos']['user'].":".$AoWoWconf['mangos']['pass']."@".$AoWoWconf['mangos']['host']."/".$AoWoWconf['mangos']['db']);
|
|---|
| 13 | $DB->setErrorHandler('databaseErrorHandler');
|
|---|
| 14 | $DB->setIdentPrefix($AoWoWconf['mangos']['aowow']);
|
|---|
| 15 | $DB->query('SET NAMES ?', 'utf8');
|
|---|
| 16 | // Подключение к БД realmd
|
|---|
| 17 | if($AoWoWconf['realmd'])
|
|---|
| 18 | {
|
|---|
| 19 | $rDB = DbSimple_Generic::connect("mysql://".$AoWoWconf['realmd']['user'].":".$AoWoWconf['realmd']['pass']."@".$AoWoWconf['realmd']['host']."/".$AoWoWconf['realmd']['db']);
|
|---|
| 20 | $rDB->setErrorHandler('databaseErrorHandler');
|
|---|
| 21 | $rDB->query('SET NAMES ?', 'utf8');
|
|---|
| 22 | }
|
|---|
| 23 | // Код обработчика ошибок SQL.
|
|---|
| 24 | function databaseErrorHandler($message, $info)
|
|---|
| 25 | {
|
|---|
| 26 | // Если использовалась @, ничего не делать.
|
|---|
| 27 | if (!error_reporting()) return;
|
|---|
| 28 | // Выводим подробную информацию об ошибке.
|
|---|
| 29 | echo "SQL Error: $message<br><pre>";
|
|---|
| 30 | print_r($info);
|
|---|
| 31 | echo "</pre>";
|
|---|
| 32 | exit();
|
|---|
| 33 | }
|
|---|
| 34 | // Для отладки разкомментировать строку ниже
|
|---|
| 35 | if($AoWoWconf['debug'])
|
|---|
| 36 | $DB->setLogger('myLogger');
|
|---|
| 37 | function myLogger($db, $sql)
|
|---|
| 38 | {
|
|---|
| 39 | global $smarty;
|
|---|
| 40 | $smarty->uDebug('!DbSimple', $sql,5000);
|
|---|
| 41 | }
|
|---|
| 42 |
|
|---|
| 43 | // КЕШИРОВАНИЕ // PRECACHING
|
|---|
| 44 | /*
|
|---|
| 45 | Содержание файла:
|
|---|
| 46 | =========================
|
|---|
| 47 | cache_delete_timestamp
|
|---|
| 48 | serialized data
|
|---|
| 49 | serialized allitems
|
|---|
| 50 | serialized allspells
|
|---|
| 51 | serialized exdata
|
|---|
| 52 | serialized zonedata
|
|---|
| 53 | =========================
|
|---|
| 54 | */
|
|---|
| 55 | $cache_types = array(
|
|---|
| 56 | 1 => 'npc_page',
|
|---|
| 57 | 2 => 'npc_listing',
|
|---|
| 58 |
|
|---|
| 59 | 3 => 'object_page',
|
|---|
| 60 | 4 => 'object_listing',
|
|---|
| 61 |
|
|---|
| 62 | 5 => 'item_page',
|
|---|
| 63 | 6 => 'item_tooltip',
|
|---|
| 64 | 7 => 'item_listing',
|
|---|
| 65 |
|
|---|
| 66 | 8 => 'itemset_page',
|
|---|
| 67 | 9 => 'itemset_listing',
|
|---|
| 68 |
|
|---|
| 69 | 10 => 'quest_page',
|
|---|
| 70 | 11 => 'quest_tooltip',
|
|---|
| 71 | 12 => 'quest_listing',
|
|---|
| 72 |
|
|---|
| 73 | 13 => 'spell_page',
|
|---|
| 74 | 14 => 'spell_tooltip',
|
|---|
| 75 | 15 => 'spell_listing',
|
|---|
| 76 |
|
|---|
| 77 | 16 => 'zone_page',
|
|---|
| 78 | 17 => 'zone_listing',
|
|---|
| 79 |
|
|---|
| 80 | 18 => 'faction_page',
|
|---|
| 81 | 19 => 'faction_listing'
|
|---|
| 82 | );
|
|---|
| 83 | function save_cache($type, $type_id, $data, $prefix = '')
|
|---|
| 84 | {
|
|---|
| 85 | global $cache_types, $allitems, $allspells, $AoWoWconf, $exdata, $zonedata;
|
|---|
| 86 |
|
|---|
| 87 | $type_str = $cache_types[$type];
|
|---|
| 88 |
|
|---|
| 89 | if(empty($type_str))
|
|---|
| 90 | return false;
|
|---|
| 91 |
|
|---|
| 92 | // {$type_str}_{$type_id}.aww
|
|---|
| 93 | $file = fopen($prefix.'cache/mangos/'.$type_str.'_'.$type_id.'_'.$_SESSION['locale'].'.aww', 'w+');
|
|---|
| 94 |
|
|---|
| 95 | $time = time()+$AoWoWconf['aowow']['cache_time'];
|
|---|
| 96 |
|
|---|
| 97 | if(!$file)
|
|---|
| 98 | return false;
|
|---|
| 99 |
|
|---|
| 100 | // записываем дату в файл
|
|---|
| 101 | fputs($file, $time);
|
|---|
| 102 | fputs($file, "\n".serialize($data)."\n");
|
|---|
| 103 | if($allitems)
|
|---|
| 104 | fputs($file, serialize($allitems));
|
|---|
| 105 | fputs($file, "\n");
|
|---|
| 106 | if($allspells)
|
|---|
| 107 | fputs($file, serialize($allspells));
|
|---|
| 108 | fputs($file, "\n");
|
|---|
| 109 | if($exdata)
|
|---|
| 110 | fputs($file, serialize($exdata));
|
|---|
| 111 | fputs($file, "\n");
|
|---|
| 112 | if($zonedata)
|
|---|
| 113 | fputs($file, serialize($zonedata));
|
|---|
| 114 |
|
|---|
| 115 | fclose($file);
|
|---|
| 116 |
|
|---|
| 117 | return true;
|
|---|
| 118 | }
|
|---|
| 119 | function load_cache($type, $type_id)
|
|---|
| 120 | {
|
|---|
| 121 | global $cache_types, $smarty, $allitems, $allspells, $exdata, $zonedata;
|
|---|
| 122 |
|
|---|
| 123 | $type_str = $cache_types[$type];
|
|---|
| 124 |
|
|---|
| 125 | if(empty($type_str))
|
|---|
| 126 | return false;
|
|---|
| 127 |
|
|---|
| 128 | $data = @file_get_contents($prefix.'cache/mangos/'.$type_str.'_'.$type_id.'_'.$_SESSION['locale'].'.aww');
|
|---|
| 129 | if(!$data)
|
|---|
| 130 | return false;
|
|---|
| 131 |
|
|---|
| 132 | $data = explode("\n", $data);
|
|---|
| 133 |
|
|---|
| 134 | if($data[0] < time())
|
|---|
| 135 | return false;
|
|---|
| 136 |
|
|---|
| 137 | if($data[2])
|
|---|
| 138 | $allitems = unserialize($data[2]);
|
|---|
| 139 | if($data[3])
|
|---|
| 140 | $allspells = unserialize($data[3]);
|
|---|
| 141 | if($data[4])
|
|---|
| 142 | $smarty->assign('exdata', unserialize($data[4]));
|
|---|
| 143 | if($data[5])
|
|---|
| 144 | $smarty->assign('zonedata', unserialize($data[5]));
|
|---|
| 145 |
|
|---|
| 146 | return unserialize($data[1]);
|
|---|
| 147 | }
|
|---|
| 148 | ?>
|
|---|