Показать сообщение отдельно
Старый 26.05.2010, 06:56   #97
seirge
Гость
 
Сообщений: n/a
По умолчанию

Так, там след. ошибки:
1. при проверке уровня доступа записи может не быть (по крайней мере в тринити). поэтому нужно по умолчанию считать, что уровень доступа равен 0 (а не писать "персонаж не найден"
2. с точки зрения php: 0 == false, соответственно, проверку на фракцию нужно переделать.

После нижеприведенных изменений у меня по крайней мере профиль попытался начать грузиться.
Код:
diff --git a/includes/classes/class.characters.php b/includes/classes/class.characters.php
index 1fd50e0..32aeb59 100644
--- a/includes/classes/class.characters.php
+++ b/includes/classes/class.characters.php
@@ -162,6 +162,7 @@ Class Characters extends Connector {
         if(!is_string($name)) {
             return false;
         }
+
         $player_data = $this->cDB->selectRow("
         SELECT
         `characters`.`guid`,
@@ -191,30 +192,15 @@ Class Characters extends Connector {
             return false;
         }
         // Is character allowed to be displayed in Armory?
-        $gmLevel = false;
+        $gmLevel = 0;
         $gmLevel_mangos = $this->rDB->selectCell("SELECT `gmlevel` FROM `account` WHERE `id`=?d LIMIT 1", $player_data['account']);
         $gmLevel_trinity = $this->rDB->selectCell("SELECT `gmlevel` FROM `account_access` WHERE `id`=? AND `RealmID` IN (-1, ?d)", $player_data['account'], $this->connectionData['id']);
-        if($gmLevel_mangos && $gmLevel_trinity) {
-            // MaNGOS doesn't have `account_access` table in `realmd` DB
-            if($this->currentRealmInfo['type'] == 'trinity') {
-                $gmLevel = $gmLevel_trinity;
-            }
-            else {
-                // error?
-                $gmLevel = $gmLevel_mangos;
-            }
-        }
-        elseif($gmLevel_mangos && !$gmLevel_trinity) {
-            $gmLevel = $gmLevel_mangos;
-        }
-        elseif($gmLevel_trinity && !$gmLevel_mangos) {
-            $gmLevel = $gmLevel_trinity;
-        }
-        if(!$gmLevel) {
-            unset($player_data);
-            // Unknown account
-            return false;
+        if ($this->currentRealmInfo['type'] == 'trinity') {
+            $gmLevel = $gmLevel_trinity || 0;
+        } else {
+            $gmLevel = $gmLevel_mangos || 0;
         }
+
         $allowed = ($gmLevel <= $this->armoryconfig['minGmLevelToShow']) ? true : false;
         if(!$allowed || $player_data['level'] < $this->armoryconfig['minlevel']) {
             unset($player_data);
@@ -232,7 +218,7 @@ Class Characters extends Connector {
             return false;
         }
         $this->faction = Utils::GetFactionId($player_data['race']);
-        if(!$this->faction) {
+        if($this->faction === false) {
             // Unknown faction
             unset($player_data);
             return false;
@@ -255,6 +241,7 @@ Class Characters extends Connector {
         if($this->chosenTitle > 0) {
             $this->__GetTitleInfo();
         }
+
         return true;
     }
     
@@ -2248,4 +2235,4 @@ Class Characters extends Connector {
         return true;
     }
 }
-?>
\ No newline at end of file
+?>