JAXL::__construct PHP Method

__construct() public method

public __construct ( array $config )
$config array
    public function __construct(array $config)
    {
        $cfg_defaults = array('auth_type' => 'PLAIN', 'bosh_hold' => null, 'bosh_rid' => null, 'bosh_url' => null, 'bosh_wait' => null, 'domain' => null, 'force_tls' => false, 'host' => null, 'jid' => null, 'log_colorize' => $this->log_colorize, 'log_level' => $this->log_level, 'log_path' => JAXLLogger::$path, 'multi_client' => false, 'pass' => false, 'port' => null, 'priv_dir' => getcwd() . '/.jaxl', 'protocol' => null, 'resource' => null, 'stream_context' => null, 'strict' => true);
        $this->cfg = array_merge($cfg_defaults, $config);
        // setup logger
        JAXLLogger::$path = $this->cfg['log_path'];
        JAXLLogger::$level = $this->log_level = $this->cfg['log_level'];
        JAXLLogger::$colorize = $this->log_colorize = $this->cfg['log_colorize'];
        // env
        if ($this->cfg['strict']) {
            JAXLLogger::info("strict mode enabled, adding exception handlers. ' .\n                'Set 'strict' => false inside JAXL config to disable this");
            JAXLException::addHandlers();
        }
        $this->mode = PHP_SAPI;
        $this->local_ip = gethostbyname(php_uname('n'));
        $this->pid = getmypid();
        // jid object
        $jid = $this->cfg['jid'] !== null ? new XMPPJid($this->cfg['jid']) : null;
        // handle signals
        if (extension_loaded('pcntl')) {
            pcntl_signal(SIGHUP, array($this, 'signal_handler'));
            pcntl_signal(SIGINT, array($this, 'signal_handler'));
            pcntl_signal(SIGTERM, array($this, 'signal_handler'));
        }
        // Create .jaxl directory for our /tmp, /run and /log folders
        // overwrite these using jaxl config array
        $this->priv_dir = $this->cfg['priv_dir'];
        $this->tmp_dir = $this->priv_dir . "/tmp";
        $this->pid_dir = $this->priv_dir . "/run";
        $this->log_dir = $this->priv_dir . "/log";
        $this->sock_dir = $this->priv_dir . "/sock";
        if (!is_dir($this->priv_dir)) {
            mkdir($this->priv_dir);
        }
        if (!is_dir($this->tmp_dir)) {
            mkdir($this->tmp_dir);
        }
        if (!is_dir($this->pid_dir)) {
            mkdir($this->pid_dir);
        }
        if (!is_dir($this->log_dir)) {
            mkdir($this->log_dir);
        }
        if (!is_dir($this->sock_dir)) {
            mkdir($this->sock_dir);
        }
        // touch pid file
        if ($this->mode == "cli") {
            touch($this->get_pid_file_path());
            JAXLLogger::info("created pid file " . $this->get_pid_file_path());
        }
        // include mandatory xmpp xeps
        // service discovery and entity caps
        // are recommended for every xmpp entity
        $this->require_xep(array('0030', '0115'));
        // do dns lookup, update $cfg['host'] and $cfg['port'] if not already specified
        if (($this->cfg['host'] === null || $this->cfg['port'] === null) && $jid) {
            // this dns lookup is blocking
            JAXLLogger::info("dns srv lookup for " . $jid->domain);
            list($host, $port) = JAXLUtil::get_dns_srv($jid->domain);
            if ($this->cfg['host'] === null) {
                $this->cfg['host'] = $host;
            }
            if ($this->cfg['port'] === null) {
                $this->cfg['port'] = $port;
            }
        }
        // choose appropriate transport
        // if 'bosh_url' cfg is defined include 0206
        if (isset($this->cfg['bosh_url'])) {
            JAXLLogger::debug("including bosh xep");
            $this->require_xep('0206');
            $transport = $this->xeps['0206'];
        } else {
            $transport = new JAXLSocketClient($this->cfg['stream_context']);
        }
        // lifecycle events callback
        $this->ev = new JAXLEvent($this->cfg['multi_client'] ? array(&$this) : array());
        // initialize xmpp stream with configured transport
        parent::__construct($transport, $jid, $this->cfg['pass'], $this->cfg['resource'] !== null ? 'jaxl#' . $this->cfg['resource'] : 'jaxl#' . md5(time()), $this->cfg['force_tls']);
    }