<?php /* * * Данный файл является частью проекта Веб Мессенджер. * * Все права защищены. (c) 2005-2009 ООО "ТОП". * Данное программное обеспечение и все сопутствующие материалы * предоставляются на условиях лицензии, доступной по адресу * http://webim.ru/license.html * */ EventController::getInstance()->addEventListener(EventController::EVENT_OPERATOR_STATUS, array(Operator::getInstance(), "UpdateOperatorStatus")); EventController::getInstance()->addEventListener(EventController::EVENT_OPERATOR_STATUS, array(Operator::getInstance(), "updateOperatorOnlineStats")); EventController::getInstance()->addEventListener(EventController::EVENT_OPERATOR_PING, array(Operator::getInstance(), "updateOperatorOnlineStatsForThread")); EventController::getInstance()->addEventListener(EventController::EVENT_OPERATOR_PING, array(ThreadProcessor::getInstance(), "ProcessThread"));
* * Данный файл является частью проекта Веб Мессенджер. * * Все права защищены. (c) 2005-2009 ООО "ТОП". * Данное программное обеспечение и все сопутствующие материалы * предоставляются на условиях лицензии, доступной по адресу * http://webim.ru/license.html * */ require_once '../classes/functions.php'; require_once '../classes/class.operator.php'; require_once '../classes/class.thread.php'; require_once '../classes/class.threadprocessor.php'; require_once '../classes/class.eventcontroller.php'; require_once '../classes/events_register.php'; ThreadProcessor::getInstance()->ProcessOpenThreads(); $o = Operator::getInstance(); $operator = $o->GetLoggedOperator(false); $f = "i" . "s" . "Op" . "er" . "a" . "to" . "rsL" . "im" . "it" . "E" . "x" . "ce" . "ed" . "ed"; if ($o->{$f}()) { die; } $status = verify_param("status", "/^\\d{1,9}\$/", OPERATOR_STATUS_ONLINE); EventController::getInstance()->dispatchEvent(EventController::EVENT_OPERATOR_STATUS, array($operator)); if ($status != 0) { $since = verify_param("since", "/^\\d{1,9}\$/", 0); $xml = Thread::getInstance()->buildPendingThreadsXml($since, $operator); Browser::SendXmlHeaders(); echo $xml; } exit;
if ($o->{$f}()) { die; } } $thread = Thread::getInstance()->GetThreadById($threadid); if (empty($thread) || !isset($thread['token']) || $token != $thread['token']) { die("wrong thread in thread.php"); } if ($isvisitor && !visitorHasAccess($thread)) { show_error("server: visitor has no access to the thread"); } if ($isvisitor) { ThreadProcessor::getInstance()->ProcessThread($threadid, 'visitor_ping', array('istyping' => !empty($istyping))); } if (!$isvisitor && !$viewonly) { EventController::getInstance()->dispatchEvent(EventController::EVENT_OPERATOR_PING, array($threadid, 'operator_ping', array('istyping' => !empty($istyping), 'operatorid' => $operator['operatorid']))); } $operator = null; if (!$isvisitor && !$viewonly) { $operator = Operator::getInstance()->GetLoggedOperator(); $viewonly = $thread['operatorid'] != $operator['operatorid'] && !empty($thread['operatorid']); } //$visitSession = VisitSession::GetInstance()->GetVisitSessionById($thread['visitsessionid']); $v = GetVisitorFromRequestAndSetCookie(); if ($act == "refresh") { $lastid = verify_param("lastid", "/^\\d{1,9}\$/", -1); if ($isvisitor && !empty($thread['operatorid'])) { setcookie('WEBIM_LAST_OPERATOR_ID', $thread['operatorid'], time() + 60 * 60 * 24 * 365, '/'); } Thread::getInstance()->PrintThreadMessages($thread, $token, $lastid, $isvisitor, $outformat, $viewonly); exit;