/** * Конструктор класса * * @param externalSession $sess объект сессии. */ function __construct($sess) { parent::__construct($sess); require_once ABS_PATH . '/classes/session.php'; session_start(); $this->_oSession = $session; }
/** * Вызывается для проверки доступности авторизации данного пользователя. * * @param object $user пользователь (инициализированный экземпляр класса users). * * @return int код ошибки или 0 -- можно авторизировать. */ protected function _authDenied($user) { $err = parent::_authDenied($user); if (!$err) { if (is_emp($user->role)) { $err = EXTERNAL_ERR_ONLYFRL; } } return $err; }
/** * Обработка запроса, отправка ответа клиенту. */ public function handle() { $sName = 'http://www.free-lance.ru/external/api/' . $this->_sApi; if ($api = externalApi::getInst($sName, $this->_sess)) { $this->_aRespData = $api->invoke($this->_sMethod, $this->_aParams); $this->response(); } else { $this->error(EXTERNAL_WARN_UNDEFINED_API); } }
/** * Обработка метода. Инициализирует api, соотвествующее пространству имен данного метода, * делает вызов, формирует тег результата. * * @param DOMNode $m тег метода. */ public function handleMethod($m) { static $pos = 1; $name = $m->localName; $this->errorSetContext(array('tag' => $name, 'ns' => $m->namespaceURI, 'pos' => $pos)); if ($api = externalApi::getInst($m->namespaceURI, $this->_sess)) { $args = null; foreach ($m->childNodes as $pr) { if ($pr->localName == self::XML_VAR_PRM_TAG) { $args[] = $this->varXml2Php($pr); } } $result = $api->invoke($name, $args); if ($u = $m->getAttribute(self::XML_METHOD_U_ATT)) { $uatt = ' ' . self::XML_METHOD_U_ATT . '="' . $u . '"'; } $xml_prefix = $api->getDefaultPrefix(); $this->_responseBody .= "<{$xml_prefix}:{$name}{$uatt}>" . $this->varPhp2Xml($result, self::XML_VAR_RES_TAG) . "</{$xml_prefix}:{$name}>"; $this->_responseXmlns[$xml_prefix] = $m->namespaceURI; } else { $this->warning(EXTERNAL_WARN_UNDEFINED_API); } $this->errorSetContext(null); ++$pos; }