Пример #1
0
 /**
  * Sets an UserSetting
  *
  * @param String $name
  * @param String $value
  * @param String $moduleId
  */
 public function setSetting($name, $value, $moduleId = "")
 {
     Setting::Set($this->owner->id, $name, $value, $moduleId);
 }
 /**
  * Reads out all users from configured ldap backend and creates or update
  * existing users.
  * 
  * Also disabling deleted ldap users in humhub
  */
 public function refreshUsers()
 {
     $ldapUserIds = array();
     try {
         $items = $this->ldap->search(Setting::Get('userFilter', 'authentication_ldap'), Setting::Get('baseDn', 'authentication_ldap'), \Zend\Ldap\Ldap::SEARCH_SCOPE_SUB);
         foreach ($items as $item) {
             $node = \Zend\Ldap\Node::fromArray($item);
             $user = $this->handleLdapUser($node);
             if ($user != null) {
                 $ldapUserIds[] = $user->id;
             }
         }
         foreach (User::find()->where(['auth_mode' => User::AUTH_MODE_LDAP])->each() as $user) {
             if (!in_array($user->id, $ldapUserIds)) {
                 if ($user->status != User::STATUS_DISABLED) {
                     // User no longer available in ldap
                     $user->status = User::STATUS_DISABLED;
                     \humhub\modules\user\models\Setting::Set($user->id, 'disabled_by_ldap', true, 'user');
                     $user->save();
                     Yii::warning('Disabled user ' . $user->username . ' (' . $user->id . ') - Not found in LDAP!');
                 }
             } else {
                 if ($user->status == User::STATUS_DISABLED && \humhub\modules\user\models\Setting::Get($user->id, 'disabled_by_ldap', 'user', false)) {
                     // User no longer available in ldap
                     $user->status = User::STATUS_ENABLED;
                     \humhub\modules\user\models\Setting::Set($user->id, 'disabled_by_ldap', '', 'user');
                     $user->save();
                     Yii::info('Reenabled disabled user ' . $user->username . ' (' . $user->id . ') - Found again in LDAP!');
                 }
             }
         }
     } catch (Exception $ex) {
         Yii::error($ex->getMessage());
     }
 }