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 | ?>
|
---|