Ejemplo n.º 1
0
 /**
  * User list page controller
  *
  * @param array $params
  */
 public function index(array $params)
 {
     $language = OW::getLanguage();
     $userService = BOL_UserService::getInstance();
     OW::getDocument()->getMasterPage()->getMenu(OW_Navigation::ADMIN_USERS)->getElement('sidebar_menu_item_users')->setActive(true);
     // invite members
     $form = new Form('invite-members');
     $hidden = new HiddenField('invite_members');
     $hidden->setValue('1');
     $form->addElement($hidden);
     $emails = new Textarea('emails');
     $form->addElement($emails);
     $emails->setRequired();
     $emails->setHasInvitation(true);
     $emails->setInvitation($language->text('admin', 'invite_members_textarea_invitation_text', array('limit' => (int) OW::getConfig()->getValue('base', 'user_invites_limit'))));
     $submit = new Submit('submit');
     $submit->setValue($language->text('admin', 'invite_members_submit_label'));
     $form->addElement($submit);
     $this->addForm($form);
     if (OW::getRequest()->isPost() && isset($_POST['invite_members'])) {
         if ($form->isValid($_POST)) {
             $data = $form->getValues();
             $emails = array_unique(preg_split('/\\n/', $data['emails']));
             $emailList = array();
             foreach ($emails as $email) {
                 if (UTIL_Validator::isEmailValid(trim($email))) {
                     $emailList[] = trim($email);
                 }
             }
             if (sizeof($emailList) > (int) OW::getConfig()->getValue('base', 'user_invites_limit')) {
                 OW::getFeedback()->error($language->text('admin', 'invite_members_max_limit_message', array('limit' => (int) OW::getConfig()->getValue('base', 'user_invites_limit'))));
                 $form->getElement('emails')->setValue($data['emails']);
                 $this->redirect();
             }
             if (empty($emailList)) {
                 OW::getFeedback()->error($language->text('admin', 'invite_members_min_limit_message'));
                 $form->getElement('emails')->setValue($data['emails']);
                 $this->redirect();
             }
             foreach ($emailList as $email) {
                 BOL_UserService::getInstance()->sendAdminInvitation($email);
             }
             OW::getFeedback()->info($language->text('admin', 'invite_members_success_message'));
             $this->redirect();
         }
     }
     $language->addKeyForJs('admin', 'invite_members_cap_label');
     $language->addKeyForJs('admin', 'admin_suspend_floatbox_title');
     $menu = $this->getMenu();
     $this->addComponent('menu', $menu);
     if (!empty($_GET['search']) && !empty($_GET['search_by'])) {
         $extra = array('question' => $_GET['search_by'], 'value' => $_GET['search']);
         $type = 'search';
     } else {
         $extra = null;
         $type = isset($params['list']) ? $params['list'] : 'recent';
     }
     $buttons['suspend'] = array('name' => 'suspend', 'id' => 'suspend_user_btn', 'label' => $language->text('base', 'suspend_user_btn'), 'class' => 'ow_mild_red');
     $buttons['suspend']['js'] = ' $("#suspend_user_btn").click(function(e){ 
         e.preventDefault();
         OW.ajaxFloatBox("ADMIN_CMP_SetSuspendMessage", [],{width: 520, title: OW.getLanguageText(\'admin\', \'admin_suspend_floatbox_title\')}); 
         return false;
     }); ';
     $buttons['unverify'] = array('name' => 'email_unverify', 'id' => 'email_unverify_user_btn', 'label' => $language->text('base', 'mark_email_unverified_btn'), 'class' => 'ow_mild_red');
     $buttons['unsuspend'] = array('name' => 'reactivate', 'id' => 'unsuspend_user_btn', 'label' => $language->text('base', 'unsuspend_user_btn'), 'class' => 'ow_mild_green');
     $buttons['verify'] = array('name' => 'email_verify', 'id' => 'email_verify_user_btn', 'label' => $language->text('base', 'mark_email_verified_btn'), 'class' => 'ow_mild_green');
     $buttons['approve'] = array('name' => 'approve', 'id' => 'approve_user_btn', 'label' => $language->text('base', 'approve_user_btn'), 'class' => 'ow_mild_green');
     //$buttons['disapprove'] = array('name' => 'disapprove', 'id' => 'disapprove_user_btn', 'label' => $language->text('base', 'disapprove_user_btn'), 'class' => 'ow_mild_red');
     $par = new ADMIN_UserListParams();
     $par->setType($type);
     $par->setExtra($extra);
     switch ($type) {
         case 'recent':
         case 'search':
             $par->addButton($buttons['suspend']);
             $par->addButton($buttons['unsuspend']);
             $par->addButton($buttons['unverify']);
             $par->addButton($buttons['verify']);
             $par->addButton($buttons['approve']);
             //$par->addButton($buttons['disapprove']);
             break;
         case 'suspended':
             $par->addButton($buttons['unsuspend']);
             break;
         case 'unverified':
             $par->addButton($buttons['verify']);
             break;
         case 'unapproved':
             $par->addButton($buttons['approve']);
             break;
     }
     $usersCmp = new ADMIN_CMP_UserList($par);
     $this->addComponent('userList', $usersCmp);
     if (!OW::getRequest()->isAjax()) {
         OW::getDocument()->setHeading(OW::getLanguage()->text('admin', 'heading_browse_users'));
         OW::getDocument()->setHeadingIconClass('ow_ic_user');
         $menuElement = $menu->getElement($type);
         if ($menuElement) {
             $menuElement->setActive(true);
         }
     }
     $this->assign('totalUsers', BOL_UserService::getInstance()->count(true));
     $question = OW::getConfig()->getValue('base', 'display_name_question');
     $searchQ = array($question => $language->text('base', 'questions_question_' . $question . '_label'), 'email' => $language->text('base', 'questions_question_email_label'));
     $this->assign('searchQ', $searchQ);
     $this->assign('currentSearch', array('question' => !empty($_GET['search_by']) ? $_GET['search_by'] : '', 'value' => !empty($_GET['search']) ? htmlspecialchars($_GET['search']) : ''));
     $this->assign('userSearchUrl', OW::getRouter()->urlForRoute('admin_users_browse'));
 }