Пример #1
0
function threadlog_bit($uid)
{
    global $db, $mybb, $cache;
    $member = new GroupMember($mybb, $db, $cache);
    if ($member->initialize($uid)) {
        $user = $member->get_info();
        return "Viewing <a href='misc.php?action=threadlog&uid=" . $uid . "'>" . $user['username'] . "'s Threadlog</a>";
    } else {
        return "Viewing <a href='misc.php?action=threadlog'>Threadlog</a>";
    }
}
Пример #2
0
/**
 * Sets the user options values in ACP on submit
 */
function admin_user_commit()
{
    global $mybb, $user, $db, $cache;
    // Save new group rank
    if ($mybb->settings['rpgsuite_groupranks']) {
        $rankid = (int) $mybb->input['rank_uid' . $user['uid']];
        $groupuser = new GroupMember($mybb, $db, $cache);
        $groupuser->initialize($user['uid']);
        $groupuser->update_rank($rankid);
    }
}
Пример #3
0
 public function checkEmail($attribute)
 {
     $value = $this->{$attribute};
     $user = Users::model()->findByAttributes(['email' => $value]);
     /*if (!$user) {
           $this->addError($attribute, 'В системе нет пользователя с данной почтой');
           return false;
       }*/
     if ($user) {
         $group_member = GroupMember::model()->findByAttributes(['group_id' => $this->group_id, 'user_id' => $user->id]);
         if ($group_member) {
             $this->addError($attribute, 'Данный пользователь уже член вашей группы');
             return false;
         }
         $group = Group::model()->findByPk($this->group_id);
         if ($group->owner_id == $user->id) {
             $this->addError($attribute, 'Администратор группы не может быть членом группы');
             return false;
         }
     }
     $active_invites = GroupInvite::model()->findByAttributes(['group_id' => $this->group_id, 'email' => $value, 'status' => self::INVITE_CREATE]);
     if ($active_invites) {
         $this->addError($attribute, 'Данный пользователь уже имеет приглашение');
     }
 }
Пример #4
0
 /**
 Add a new member to the group
 */
 public function add_member($uid)
 {
     // Set display group
     $member = new GroupMember($this->mybb, $this->db, $this->cache);
     if ($member->initialize($uid)) {
         $user = $member->get_info();
         // If they are a pm of their old group, they won't be now!
         $this->demote_member($uid);
         // If they are in a group currently, remove it from additional
         leave_usergroup($user['uid'], $user['displaygroup']);
         // add new to additional groups
         join_usergroup($user['uid'], $this->info['gid']);
         $updatearray = array('displaygroup' => $this->info['gid'], 'group_dateline' => time());
         $member->update_member($updatearray);
         $member->update_rank($this->info['defaultrank']);
     }
 }
Пример #5
0
 public function actionInvite($invite_id, $accept)
 {
     $invite = GroupInvite::model()->findByPk($invite_id);
     if (!$invite) {
         throw new CHttpException(404);
     }
     $invite->setAttribute('status', $accept == 1 ? GroupInvite::INVITE_ACCEPT : GroupInvite::INVITE_CANCELED);
     if ($accept == 1) {
         $group_member = new GroupMember();
         $group_member->setAttributes(['group_id' => $invite->group_id, 'user_id' => Yii::app()->user->getId()]);
         $group_member->save();
     }
     if ($invite->save()) {
         Yii::app()->user->setFlash('success', 'Приглашение ' . ($accept == 1 ? 'принято' : 'отклонено'));
     } else {
         Yii::app()->user->setFlash('error', 'Произошла ошибка');
     }
     $this->redirect(['notifications']);
 }
Пример #6
0
 public function membersOperate(Model $Model, $ownerId = null)
 {
     if (isset($Model->data[$Model->alias]['user_id']) && !empty($Model->data[$Model->alias]['user_id'])) {
         $ownerId = $Model->data[$Model->alias]['user_id'];
     }
     if (empty($ownerId)) {
         return false;
     }
     $remoteModel = $this->settings[$Model->alias]['remoteModel'];
     App::import('Model', $remoteModel);
     $remoteModel = new $remoteModel();
     $limits = $remoteModel->findByOwnerId($ownerId);
     App::import('Model', 'Group');
     App::import('Model', 'GroupMember');
     $groupModel = new Group();
     $groupMemberModel = new GroupMember();
     $groupModel->recursive = -1;
     $groups = $groupModel->findAllByOwnerId($ownerId);
     if ($limits['GroupLimit']['members_limit'] == 0 && $limits['GroupLimit']['members_used'] > 0) {
         //verify all groups for limit overload
         foreach ($groups as $group) {
             $groupMemberModel->recursive = -1;
             $groupMembers = $groupMemberModel->find('all', array('conditions' => array('GroupMember.group_id' => $group['Group']['id'], 'GroupMember.approved' => true, 'GroupMember.is_deleted' => false), 'order' => array('GroupMember.approve_date' => 'ASC')));
             $groupMembers = array_slice($groupMembers, 6);
             if (count($groupMembers) > 0) {
                 foreach ($groupMembers as $key => $member) {
                     $groupMembers[$key]['GroupMember'] = Hash::merge($member['GroupMember'], array('approved' => false, 'is_invited' => false, 'approve_date' => '0000-00-00 00:00:00'));
                 }
                 $groupMemberModel->saveMany($groupMembers, array('callbacks' => true, 'counterCache' => true));
             }
         }
     } elseif ($limits['GroupLimit']['members_limit'] < $limits['GroupLimit']['members_used']) {
         //we need to decrease group members by some algorythm
     }
     //debug($groups);
 }
Пример #7
0
 /**
  * Create
  * @param integer $groupId
  * @param integer $courseId
  */
 public function actionCreate($groupId, $courseId)
 {
     $model = new GroupCourse();
     $course = Course::model()->findByPk($courseId);
     $group = Group::model()->findByPk($groupId);
     //		$member = $group->findMember(array('userId'=>Yii::app()->user->id));
     $member = GroupMember::model()->findByAttributes(array('groupId' => $groupId, 'userId' => Yii::app()->user->id));
     if ($course && $member && $member->inRoles(array('admin', 'superAdmin'))) {
         $model->groupId = $groupId;
         $model->courseId = $courseId;
         $model->userId = Yii::app()->user->id;
         $model->addTime = time();
         echo $model->save();
         Yii::app()->user->setFlash('success', '收藏成功!');
     }
     echo false;
 }
Пример #8
0
 /**
  * 获取本member中角色权限不比$userId低的角色,如果操作者不是同一组织的成员,则返回本成员所有roles
  * Enter description here ...
  * @param unknown_type $userId
  */
 public function getNoLowerRoles()
 {
     if (Yii::app()->user->checkAccess('admin')) {
         return array();
     }
     $userId = Yii::app()->user->id;
     //		$operateMember = Member::model()->findByAttributes(array('userId'=>$userId,'memberableEntityId'=>$this->memberableEntityId));
     $operateMember = GroupMember::model()->findByAttributes(array('userId' => $userId, 'groupId' => $this->groupId));
     $objectMember = $this->isNewRecord ? $this : Member::model()->findByPk($this->id);
     if ($operateMember) {
         $result = array();
         if ($objectMember->inRoles(array('superAdmin'))) {
             $result[] = 'superAdmin';
         }
         //if($operateMember->inRoles(array('superAdmin'))) return array('superAdmin');
         if ($operateMember->inRoles(array('admin'))) {
             if ($objectMember->inRoles(array('admin'))) {
                 $result[] = 'admin';
             }
         }
         return $result;
     }
     return $objectMember->arrRoles;
 }
Пример #9
0
function queue_details()
{
    global $mybb, $db, $cache, $templates, $approval_page, $theme, $lang, $header, $headerinclude, $footer, $parser;
    if ($mybb->settings['rpgsuite_approval']) {
        $currentuser = new GroupMember($mybb, $db, $cache, $mybb->user);
        if ($currentuser->is_admin() && $mybb->input['action'] == 'activationqueue') {
            if ($mybb->request_method == "post") {
                $userid = (int) $mybb->input['userid'];
                $username = $db->escape_string($mybb->input['username']);
                $type = $mybb->input['type'];
                if (isset($mybb->input['approve'])) {
                    approve($userid, $username, $type);
                } else {
                    if (isset($mybb->input['deny'])) {
                        deny($userid, $username);
                    }
                }
            }
            add_breadcrumb('Approve New Members');
            $rpgsuite = new RPGSuite($mybb, $db, $cache);
            $accounts = $rpgsuite->get_awaiting_approval();
            foreach ($accounts as $user) {
                eval("\$userlist .= \"" . $templates->get("rpgapprove_user") . "\";");
            }
            eval("\$approval_page = \"" . $templates->get("rpgapprove_page") . "\";");
            output_page($approval_page);
            exit;
        }
    }
}
Пример #10
0
 public function addMember($userId, $role = null)
 {
     $groupMember = $this->findMemberByUserId($userId);
     if (!$groupMember) {
         if (is_null($role)) {
             throw new \Exception("You must provide a role if adding a new member");
         }
         if (!isset($this->id) || empty($this->id)) {
             throw new \Exception("The group must have a ID set in order to add a member");
         }
         $groupMember = new GroupMember();
         $groupMember->user_id = $userId;
         $groupMember->role = Group::ROLE_OWNER;
         $groupMember->group_id = $this->id;
     } else {
         if (!is_null($role)) {
             $groupMember->role = $role;
         }
     }
     $groupMember->save();
 }
Пример #11
0
 public function actionInvite($hash, $type = 1)
 {
     if (!in_array($type, [1, 2])) {
         throw new CHttpException(404, 'Данный тип не существует');
     }
     if ($type == 1) {
         $invite = GroupInvite::model()->with('group')->findByAttributes(['status' => GroupInvite::INVITE_CREATE, 'hash' => $hash]);
     } elseif ($type == 2) {
         $invite = Invite::model()->findByAttributes(['status' => Invite::INVITE_ACCEPT, 'hash' => $hash]);
     }
     if (!isset($invite)) {
         throw new CHttpException(404, 'Данное приглашение не найдено или было отменено');
     }
     $model = new Users();
     if (Yii::app()->request->isPostRequest) {
         $user = Yii::app()->request->getParam('Users');
         $model->setAttributes($user);
         $model->setAttributes(['email' => $invite->email, 'password' => md5($user['password'])]);
         if ($model->save()) {
             Yii::app()->authManager->assign('user', $model->id);
             $user_identity = new UserIdentity($model->username, $model->password);
             $user_identity->authenticate();
             Yii::app()->user->login($user_identity, 60 * 60 * 24 * 7);
             switch ($type) {
                 case 1:
                     $invite->setAttribute('status', GroupInvite::INVITE_ACCEPT);
                     $invite->save();
                     $group_member = new GroupMember();
                     $group_member->setAttributes(['group_id' => $invite->group_id, 'user_id' => $model->id]);
                     $group_member->save();
                     break;
                 case 2:
                     $invite->setAttribute('status', Invite::INVITE_USED);
                     $invite->save(false);
                     $group = new Group();
                     $group->setAttributes(['number' => $invite->group_number, 'owner_id' => $model->id]);
                     $group->save();
             }
             $this->redirect(['site/dashboard']);
         }
     }
     $this->render('invite', ['model' => $model]);
 }
Пример #12
0
 public function actionDeleteModerator($member_id, $confirm = 0)
 {
     $model = GroupMember::model()->findByPk($member_id);
     if (!$model) {
         throw new CHttpException(404, 'Элемент не найден');
     }
     if ($confirm) {
         if ($model->delete()) {
             Yii::app()->user->setFlash('success', 'Модератор успешно удален');
         } else {
             Yii::app()->user->setFlash('error', 'Ошибка удаления модератора');
         }
         $this->redirect(['moderators', 'id' => self::$group->number]);
     }
     $this->render('moderator/delete', ['model' => $model]);
 }
Пример #13
0
 /**
  * 创建小组页面和处理
  */
 public function actionCreate()
 {
     $model = new Group();
     if (isset($_POST['Group'])) {
         $model->attributes = $_POST['Group'];
         $model->addTime = time();
         $model->userId = Yii::app()->user->id;
         $model->status = "apply";
         if ($model->save()) {
             //			$model->addMember(Yii::app()->user->id,array('superAdmin'));
             $member = new GroupMember();
             $member->groupId = $model->id;
             $member->userId = Yii::app()->user->id;
             $member->setArrRoles(array('superAdmin'));
             $member->save();
             $admins = UserInfo::getAllAdmins();
             foreach ($admins as $user) {
                 Notice::send($user->id, 'group_apply', array('groupId' => $model->getPrimaryKey()));
             }
             Yii::app()->user->setFlash('success', '申请已提交,请继续完善小组资料');
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $user = UserInfo::model()->findByPk(Yii::app()->user->id);
     $this->render('create', array('model' => $model, 'user' => $user));
 }
Пример #14
0
 public function getIndex()
 {
     if (!Auth::check()) {
         return Redirect::to('user/login')->with('error', 'Please log in to view groups');
     }
     $userGroups = GroupMember::where('user_id', '=', Auth::user()->id)->get();
     return View::make('groups.index', compact('userGroups'));
 }
Пример #15
0
 public function actionMembers_manage($book_id)
 {
     $this->loadBook($book_id);
     if (!$this->book->can("membership")) {
         throw new CHttpException(403, "Вы не можете управлять группой перевода, это прерогатива " . ($this->book->ac_membership == "m" ? "модераторов" : "создателя перевода"));
     }
     $back = $this->book->getUrl("members") . "?User_page=" . intval($_POST["User_page"]);
     if (count($_POST["id"]) == 0) {
         $this->redirect($back);
     }
     /** var integer $status - какой статус ставим / удаляем */
     $status = (int) $_POST["status"];
     // Нельзя удалять людей из открытого перевода и назначать модераторов, если ты не владелец
     if ($status == GroupMember::CONTRIBUTOR and $this->book->facecontrol == Book::FC_OPEN or $status == GroupMember::MODERATOR and !$this->book->can("owner")) {
         $this->redirect($back);
     }
     // Загружаем всех, кто был в таблице
     /** var array $ids - ID всех пользователей, которые были в таблице на странице */
     /** var GroupMember[] $members - члены */
     $ids = array_filter(array_keys($_POST["id"]), function ($n) {
         return is_numeric($n);
     });
     if (count($ids) == 0) {
         $this->redirect($back);
     }
     $members = GroupMember::model()->with("user")->book($this->book->id)->findAllByAttributes(array("user_id" => $ids));
     $update = array();
     $delete = array();
     foreach ($members as $member) {
         // С создателем перевода никаких действий делать нельзя, а модераторов может мучить только создатель
         if ($member->user_id == $this->book->owner_id) {
             continue;
         }
         if ($member->status == GroupMember::MODERATOR and !$this->book->can("owner")) {
             continue;
         }
         $set = (int) $_POST["id"][$member->user_id];
         if ($status == GroupMember::CONTRIBUTOR) {
             // Выгнать из группы
             // Пустые чекбоксы пропускаем
             if ($set == 0) {
                 continue;
             }
             // Если это уже удалённый пользователь, то не пинаем труп.
             if ($member->status == GroupMember::CONTRIBUTOR) {
                 continue;
             }
             // Если у члена группы были переводы, то ставим ему status = 0, если не было - удаляем нахуй
             if ($member->n_trs == 0) {
                 $delete[] = $member->user_id;
             } else {
                 $update[GroupMember::CONTRIBUTOR][] = $member->user_id;
             }
             $member->user->Notify(Notice::EXPELLED, $this->book);
         } elseif ($status == GroupMember::BANNED or $status == GroupMember::MODERATOR) {
             // Забанить или сделать модератором
             // Нельзя сделать модератором вышедшего члена
             // 				   -- А с какого это хуя нельзя-то? При facecontrol == FC_OPEN - можно.
             //				if($status == GroupMember::MODERATOR and $member->status == GroupMember::CONTRIBUTOR) continue;
             // Весёлая карусель! Баним незабаненных или коронуем пастухов.
             if ($set and $member->status != $status) {
                 $update[$status][] = $member->user_id;
                 if ($status == GroupMember::MODERATOR) {
                     $member->user->Notify(Notice::CROWNED, $this->book);
                 } elseif ($status == GroupMember::BANNED) {
                     $member->user->Notify(Notice::BANNED, $this->book);
                 }
             }
             // Разбаниваем забаненных, а королей отправляем пасти свиней.
             if (!$set and $member->status == $status) {
                 $update[$this->book->facecontrol == Book::FC_OPEN ? GroupMember::CONTRIBUTOR : GroupMember::MEMBER][] = $member->user_id;
                 if ($status == GroupMember::MODERATOR) {
                     $member->user->Notify(Notice::DEPOSED, $this->book);
                 } elseif ($status == GroupMember::BANNED) {
                     $member->user->Notify(Notice::UNBANNED, $this->book);
                 }
             }
         }
     }
     if (count($delete) > 0) {
         Yii::app()->db->createCommand("DELETE FROM groups WHERE book_id = '{$this->book->id}' AND user_id IN(" . join(",", $delete) . ")")->execute();
     }
     if (count($update) > 0) {
         foreach ($update as $k => $V) {
             Yii::app()->db->createCommand("UPDATE groups SET status = '{$k}' WHERE book_id = '{$this->book->id}' AND user_id IN(" . join(",", $V) . ")")->execute();
         }
     }
     $this->redirect($back);
 }
Пример #16
0
 /**
  * 获取成员数量,计入超级管理员
  */
 public function getMemberCount()
 {
     $result = GroupMember::model()->count("memberableEntityId=:entityId and (find_in_set('superAdmin',roles) or find_in_set('admin',roles) or find_in_set('member',roles))", array(':entityId' => $this->getOwner()->entityId));
     return intval($result);
 }
Пример #17
0
 /**
  *	getValidSponsors.
  *
  *	@todo I'm not sure what exactly this does at first glance
  */
 public function getValidSponsors()
 {
     $collection = new Collection();
     $groups = GroupMember::where('user_id', '=', $this->id)->whereIn('role', array(Group::ROLE_EDITOR, Group::ROLE_OWNER))->get();
     foreach ($groups as $groupMember) {
         $collection->add($groupMember->group()->first());
     }
     $users = UserMeta::where('user_id', '=', $this->id)->where('meta_key', '=', UserMeta::TYPE_INDEPENDENT_SPONSOR)->where('meta_value', '=', '1')->get();
     foreach ($users as $userMeta) {
         $collection->add($userMeta->user()->first());
     }
     return $collection;
 }
Пример #18
0
 public function actionBooks($id)
 {
     $user = $this->loadUser($id);
     $orderOptions = array(1 => array("t.last_tr desc NULLS LAST", "По дате последнего перевода от {$user->login}"), 2 => array("t.n_trs desc NULLS LAST", "По количеству версий от {$user->login}"), 3 => array("CASE WHEN book.n_verses <> 0 THEN book.d_vars::float / book.n_verses::float ELSE null END DESC NULLS LAST", "По готовности перевода"), 4 => array("t.since DESC", "По дате вступления в перевод"));
     $statusOptions = array(0 => array("", "все", "не участвует ни в одном переводе"), 1 => array("t.status = 2", "там, где {$user->login} &ndash; модератор", "не модерирует ни один перевод"), 2 => array("book.owner_id = {$user->id}", "там, где {$user->login} &ndash; создатель", "не создал" . $user->sexy() . " ни одного проекта перевода"));
     $order = (int) $_GET["order"];
     if (!isset($orderOptions[$order])) {
         $order = 1;
     }
     $status = (int) $_GET["status"];
     if (!isset($statusOptions[$status])) {
         $status = 0;
     }
     $f = new GroupMember();
     $f->user($user->id)->with("book");
     $c = new CDbCriteria();
     if ($order) {
         $c->order = $orderOptions[$order][0];
     }
     if ($status) {
         $c->addCondition($statusOptions[$status][0]);
     }
     $groups_dp = new CActiveDataProvider($f, array("criteria" => $c, "pagination" => array("pageSize" => 30)));
     // $groups_dp->totalItemCount = Yii::app()->db->createCommand("SELECT COUNT(*) FROM groups WHERE user_id = :user_id")->queryScalar(array(":user_id" => $user->id));
     $this->side_view = array("profile_side" => array("user" => $user, "userinfo" => $user->userinfo), "books_side" => array("orderOptions" => $orderOptions, "order" => $order, "statusOptions" => $statusOptions, "status" => $status));
     $this->render("books", array("user" => $user, "groups_dp" => $groups_dp, "order" => $order, "statusOptions" => $statusOptions, "status" => $status));
 }
Пример #19
0
 public function loadMember($uid)
 {
     $gid = $this->id;
     if (empty($uid)) {
         $uid = Yii::app()->user->id;
     }
     $model = new GroupMember();
     $criteria = new CDbCriteria();
     $criteria->condition .= " 1 AND gid = :gid AND uid = :uid";
     $criteria->params = array(':gid' => $gid, ':uid' => $uid);
     $member = $model->find($criteria);
     return $member;
 }
 /**
  * Registration user
  */
 public function actionRegistration()
 {
     $model = new RegistrationForm();
     $profile = new Profile();
     $profile->regMode = true;
     $org = new Organisation();
     // ajax validator
     //if(isset($_POST['ajax']) && $_POST['ajax']==='registration-form')
     //{
     //        echo UActiveForm::validate(array($model,$profile));
     //        Yii::app()->end();
     //}
     if (isset($_POST['ajax']) && $_POST['ajax'] === 'registration-form') {
         if ($_POST['RegistrationForm']['service'] == 2) {
             ////////////////////////////////////////////////////////////////////////////////
             //$name = trim($org->name);
             $name = trim($_POST['Organisation']['name']);
             $exOrgCount = Organisation::model()->count('name=:param_name', array(':param_name' => $name));
             if ($exOrgCount > 0) {
                 $org->validatorList->add(CValidator::createValidator('unique', $org, 'name', array('message' => Yii::t('app', 'Group Name already exists'))));
             } else {
                 if (strlen($name) == 0) {
                     $org->validatorList->add(CValidator::createValidator('required', $org, 'name', array('message' => Yii::t('app', 'Group Name canot be blank'))));
                 }
             }
             ////////////////////////////////////////////////////////////////////////////////
             echo UActiveForm::validate(array($model, $profile, $org));
             Yii::app()->end();
         } else {
             echo UActiveForm::validate(array($model, $profile));
             Yii::app()->end();
         }
     }
     if (Yii::app()->user->id) {
         $this->redirect(Yii::app()->controller->module->profileUrl);
     } else {
         if (isset($_POST['RegistrationForm'])) {
             $model->attributes = $_POST['RegistrationForm'];
             $profile->attributes = isset($_POST['Profile']) ? $_POST['Profile'] : array();
             $valid = $model->validate();
             $valid = $profile->validate() && $valid;
             if ($_POST['RegistrationForm']['service'] == 2) {
                 $org->name = trim($_POST['Organisation']['name']);
                 $valid = $org->validate() && $valid;
             }
             //if($model->validate()&&$profile->validate())
             if ($valid) {
                 $soucePassword = $model->password;
                 $model->activkey = UserModule::encrypting(microtime() . $model->password);
                 $model->password = UserModule::encrypting($model->password);
                 $model->verifyPassword = UserModule::encrypting($model->verifyPassword);
                 $model->superuser = 0;
                 $model->status = Yii::app()->controller->module->activeAfterRegister ? User::STATUS_ACTIVE : User::STATUS_NOACTIVE;
                 $orgDuplicateCheck = false;
                 $flag = true;
                 $role = 'Authenticated';
                 if ($model->service == 1) {
                     $orgDuplicateCheck = true;
                     $role = 'Individual';
                 } else {
                     if ($model->service == 2 && isset($_POST['Organisation']['name'])) {
                         $org->name = trim($_POST['Organisation']['name']);
                         $flag = Organisation::model()->exists('name=:param_name_check', array(':param_name_check' => $org->name));
                         if (!$flag) {
                             $orgDuplicateCheck = true;
                         }
                         $role = 'Org_Admin';
                     } else {
                         //$org->validatorList->add(CValidator::createValidator('unique', $org, 'name', array('message'=>Yii::t('app','Group Name Already Exists'))));
                         $org->validate();
                         Yii::app()->user->setFlash('registration', UserModule::t("Group Name already exists"));
                     }
                 }
                 if ($orgDuplicateCheck) {
                     if ($model->save()) {
                         $profile->user_id = $model->id;
                         $profile->firstname = $model->firstname;
                         $profile->lastname = $model->lastname;
                         $profile->save();
                         $this->assignRole($model->id, $role);
                         //If Service=2 ~ Organisation Save New (Non-Existent) Organisation
                         if (!$flag) {
                             $org->created_by = $model->id;
                             $org->type = 'Other';
                             //$org->timestamp_create = date('Y-m-d H:i:s');
                             if ($org->save()) {
                                 $model->organisation_id = $org->id;
                                 $model->organisation_administrator = 1;
                                 $model->save(false);
                                 try {
                                     //Create Organisation Group
                                     $group = new Group();
                                     $group->group_name = $org->name;
                                     $group->parent_group_id = 0;
                                     $group->organisation_id = $org->id;
                                     $group->timestamp_created = date('Y-m-d H:i":');
                                     $group->save(false);
                                     $groupMember = new GroupMember();
                                     $groupMember->group_id = $group->group_id;
                                     $groupMember->user_id = $model->id;
                                     $groupMember->manager_flag = 1;
                                     //$groupMember->created_by = 0;
                                     //$groupMember->timestamp_created = date('Y-m-d H:i:s');
                                     $groupMember->save(false);
                                 } catch (Exception $ex) {
                                     Yii::log($ex->getMessage(), 'error', 'Custom');
                                 }
                             } else {
                                 Yii::app()->user->setFlash('registration', UserModule::t("Oop! Soemthing Went Wrong"));
                             }
                         }
                         if (Yii::app()->controller->module->sendActivationMail) {
                             $activation_url = $this->createAbsoluteUrl('/user/activation/activation', array("activkey" => $model->activkey, "email" => $model->email));
                             UserModule::sendMail($model->email, UserModule::t("You registered from {site_name}", array('{site_name}' => Yii::app()->name)), UserModule::t("Please activate your account by going to {activation_url}", array('{activation_url}' => $activation_url)));
                         }
                         if ((Yii::app()->controller->module->loginNotActiv || Yii::app()->controller->module->activeAfterRegister && Yii::app()->controller->module->sendActivationMail == false) && Yii::app()->controller->module->autoLogin) {
                             $identity = new UserIdentity($model->username, $soucePassword);
                             $identity->authenticate();
                             Yii::app()->user->login($identity, 0);
                             $this->redirect(Yii::app()->controller->module->returnUrl);
                         } else {
                             if (!Yii::app()->controller->module->activeAfterRegister && !Yii::app()->controller->module->sendActivationMail) {
                                 Yii::app()->user->setFlash('registration', UserModule::t("Thank you for your registration. Contact Admin to activate your account."));
                             } elseif (Yii::app()->controller->module->activeAfterRegister && Yii::app()->controller->module->sendActivationMail == false) {
                                 Yii::app()->user->setFlash('registration', UserModule::t("Thank you for your registration. Please {{login}}.", array('{{login}}' => CHtml::link(UserModule::t('Login'), Yii::app()->controller->module->loginUrl))));
                             } elseif (Yii::app()->controller->module->loginNotActiv) {
                                 Yii::app()->user->setFlash('registration', UserModule::t("Thank you for your registration. Please check your email to login."));
                             } else {
                                 //Yii::app()->user->setFlash('registration',UserModule::t("Thank you for your registration. Please check your email."));
                                 Yii::app()->user->setFlash('registration', UserModule::t("Thank you for your registration. Please check your spam/junk folder if you email is not in inbox."));
                             }
                             $this->refresh();
                         }
                     }
                 }
             } else {
                 $profile->validate();
             }
         }
         $this->render('/user/registration', array('model' => $model, 'profile' => $profile, 'org' => $org));
     }
 }
Пример #21
0
 /**
  * 查看一个帖子
  * @param integer $id 帖子ID
  */
 public function actionView($id)
 {
     $post = $this->loadModel($id);
     //$group = $post->postableEntity->getModel();
     $group = $post->group;
     $member = GroupMember::model()->findByAttributes(array('groupId' => $id, 'userId' => Yii::app()->user->id));
     if (!$member) {
         $member = new GroupMember();
     }
     $followDataProvider = $post->getFollowDataProvider();
     $this->render('view', array('post' => $post, 'group' => $group, 'member' => $member, 'followDataProvider' => $followDataProvider));
 }
Пример #22
0
 /**
  * 检查权限
  */
 public function allowOnlyAdmin()
 {
     if (Yii::app()->user->checkAccess('admin')) {
         return true;
     }
     $group = $this->loadModel($_GET['id']);
     //		$member = $group->findMember(array('userId'=>Yii::app()->user->id));
     $member = GroupMember::model()->findByAttributes(array('groupId' => $group->id, 'userId' => Yii::app()->user->id));
     if ($member && $member->inRoles(array('admin', 'superAdmin'))) {
         return true;
     }
     return false;
 }
Пример #23
0
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  */
 public function loadModel()
 {
     if ($this->_model === null) {
         if (isset($_GET['id'])) {
             $this->_model = GroupMember::model()->findbyPk($_GET['id']);
         }
         if ($this->_model === null) {
             throw new CHttpException(404, 'The requested page does not exist.');
         }
     }
     return $this->_model;
 }