/** * 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; }
/** * 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; }
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(); } } } }
/** * 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; }