예제 #1
0
파일: User.php 프로젝트: ahdail/humhub
 /**
  * Notifies groups admins for approval of new user via e-mail.
  * This should be done after a new user is created and approval is required.
  *
  * @todo Create message template, move message into translation
  */
 private function notifyGroupAdminsForApproval()
 {
     // No admin approval required
     if ($this->status != User::STATUS_NEED_APPROVAL || !HSetting::Get('needApproval', 'authentication_internal')) {
         return;
     }
     foreach (GroupAdmin::model()->findAllByAttributes(array('group_id' => $this->group_id)) as $admin) {
         $adminUser = User::model()->findByPk($admin->user_id);
         if ($adminUser !== null) {
             $approvalUrl = Yii::app()->createAbsoluteUrl("//admin/approval");
             $html = "Hello {$adminUser->displayName},<br><br>\n\n" . "a new user {$this->displayName} needs approval.<br><br>\n\n" . "Click here to validate:<br>\n\n" . HHtml::link($approvalUrl, $approvalUrl) . "<br/> <br/>\n";
             $message = new HMailMessage();
             $message->addFrom(HSetting::Get('systemEmailAddress', 'mailing'), HSetting::Get('systemEmailName', 'mailing'));
             $message->addTo($adminUser->email);
             $message->view = "application.views.mail.TextOnly";
             $message->subject = Yii::t('UserModule.models_User', "New user needs approval");
             $message->setBody(array('message' => $html), 'text/html');
             Yii::app()->mail->send($message);
         } else {
             Yii::log("Could not load Group Admin User. Inconsistent Group Admin Record! User Id: " . $admin->user_id, CLogger::LEVEL_ERROR);
         }
     }
     return true;
 }
예제 #2
0
 /**
  * Checks if the can approve new users
  * @todo Add caching support
  *
  * @return boolean
  */
 public function canApproveUsers()
 {
     if ($this->isAdmin()) {
         return true;
     }
     $user = $this->loadUser(Yii::app()->user->id);
     $adminGroups = GroupAdmin::model()->countByAttributes(array('user_id' => $user->id));
     if ($adminGroups != 0) {
         return true;
     }
     return false;
 }
예제 #3
0
 public function afterSave()
 {
     if ($this->scenario == 'edit') {
         GroupAdmin::model()->deleteAllByAttributes(array('group_id' => $this->id));
         $adminUsers = array();
         foreach (explode(",", $this->adminGuids) as $adminGuid) {
             // Ensure guids valid characters
             $adminGuid = preg_replace("/[^A-Za-z0-9\\-]/", '', $adminGuid);
             // Try load user
             $user = User::model()->findByAttributes(array('guid' => $adminGuid));
             if ($user != null) {
                 $groupAdmin = new GroupAdmin();
                 $groupAdmin->user_id = $user->id;
                 $groupAdmin->group_id = $this->id;
                 $groupAdmin->save();
             }
         }
     }
 }
예제 #4
0
 /**
  * Used in Approvals, to get Groups Filter
  *
  * @return Array of groups
  */
 public static function gridItems()
 {
     $items = array();
     $selectedAdminGroups = array();
     if (!Yii::app()->user->isAdmin()) {
         foreach (GroupAdmin::model()->findAllByAttributes(array('user_id' => Yii::app()->user->id)) as $ga) {
             $selectedAdminGroups[] = $ga->group_id;
         }
     }
     foreach (Group::model()->findAll() as $g) {
         // Bypass group without rights
         if (!Yii::app()->user->isAdmin() && !in_array($g->id, $selectedAdminGroups)) {
             continue;
         }
         $items[$g->id] = $g->name;
     }
     return $items;
 }