- Модуль: xmpp
- Путь к файлу: ~/bitrix/modules/xmpp/classes/factory.php
- Класс: CXMPPFactory
- Вызов: CXMPPFactory::Initialize
private function Initialize()
{
if ($this->isInitialized)
return;
CModule::IncludeModule('socialnetwork');
CModule::IncludeModule('iblock');
$this->arReceiveClasses = array();
$this->arProcessServerClasses = array();
$this->arClearCacheClasses = array();
if ($handle = @opendir($_SERVER["DOCUMENT_ROOT"].$this->classesDir))
{
while (($file = readdir($handle)) !== false)
{
if ($file == "." || $file == "..")
continue;
if (!is_file($_SERVER["DOCUMENT_ROOT"].$this->classesDir."/".$file))
continue;
$className = "";
$classVersion = 1;
include($_SERVER["DOCUMENT_ROOT"].$this->classesDir."/".$file);
if ($className == '')
continue;
$c = new $className();
$c->Initialize();
if (is_subclass_of($c, "CXMPPFactoryHandler"))
{
if ($c instanceof IXMPPFactoryHandler)
$this->arReceiveClasses[] = $c;
if ($c instanceof IXMPPFactoryServerHandler)
$this->arProcessServerClasses[] = $c;
if ($c instanceof IXMPPFactoryCleanableHandler)
$this->arClearCacheClasses[] = $c;
}
else
{
if (method_exists($c, "ReceiveMessage"))
$this->arReceiveClasses[] = $c;
if (method_exists($c, "ProcessServerMessage"))
$this->arProcessServerClasses[] = $c;
if (method_exists($c, "ClearCaches"))
$this->arClearCacheClasses[] = $c;
}
}
closedir($handle);
}
$cnt = count($this->arReceiveClasses);
for ($i = 0; $i < $cnt - 1; $i++)
{
for ($j = $i + 1; $j < $cnt; $j++)
{
$ix1 = (is_subclass_of($this->arReceiveClasses[$i], "CXMPPFactoryHandler") ? $this->arReceiveClasses[$i]->GetIndex() : $this->arReceiveClasses[$i]->receiveMessageIndex);
$ix2 = (is_subclass_of($this->arReceiveClasses[$j], "CXMPPFactoryHandler") ? $this->arReceiveClasses[$j]->GetIndex() : $this->arReceiveClasses[$j]->receiveMessageIndex);
if ($ix1 > $ix2)
{
$t = $this->arReceiveClasses[$i];
$this->arReceiveClasses[$i] = $this->arReceiveClasses[$j];
$this->arReceiveClasses[$j] = $t;
}
}
}
$cnt = count($this->arProcessServerClasses);
for ($i = 0; $i < $cnt - 1; $i++)
{
for ($j = $i + 1; $j < $cnt; $j++)
{
$ix1 = (is_subclass_of($this->arProcessServerClasses[$i], "CXMPPFactoryHandler") ? $this->arProcessServerClasses[$i]->GetServerIndex() : $this->arProcessServerClasses[$i]->processServerMessageIndex);
$ix2 = (is_subclass_of($this->arProcessServerClasses[$j], "CXMPPFactoryHandler") ? $this->arProcessServerClasses[$j]->GetServerIndex() : $this->arProcessServerClasses[$j]->processServerMessageIndex);
if ($ix1 > $ix2)
{
$t = $this->arProcessServerClasses[$i];
$this->arProcessServerClasses[$i] = $this->arProcessServerClasses[$j];
$this->arProcessServerClasses[$j] = $t;
}
}
}
$this->isInitialized = true;
}