<?php
namespace nur\ldap\app;

use nur\A;
use nur\ldap\LdapConn;

trait TLdapApplication {
  protected $config;
  protected $uri, $binddn, $password;

  protected function fixConfig(?string &$config): void {
  }

  function getConn(?array $supplParams=null): LdapConn {
    $config = $this->config;
    $this->fixConfig($config);
    $loadParams = static::LOAD_PARAMS;
    $autoconnect = $autofillParams = null;
    if ($config === null) {
      $params = [];
    } else {
      $params = require $config;
      if (!$loadParams) $autoconnect = $autofillParams = false;
    }
    A::merge($params, A::filter_n([
      "uri" => $this->uri,
      "binddn" => $this->binddn,
      "password" => $this->password,
      "autoconnect" => $autoconnect,
      "autofill_params" => $autofillParams,
    ]), $supplParams);
    return new LdapConn($params);
  }
}