Example #1
0
 function handler_admin($page, $liste = null)
 {
     global $globals;
     if (is_null($liste)) {
         return PL_NOT_FOUND;
     }
     $mlist = $this->prepare_list($liste);
     $this->is_group_admin($page);
     if (!$this->is_group_admin($page)) {
         $this->verify_list_owner($page, $mlist);
     }
     $page->changeTpl('lists/admin.tpl');
     if (Env::has('send_mark')) {
         S::assert_xsrf_token();
         $actions = Env::v('mk_action');
         $uids = Env::v('mk_uid');
         $mails = Env::v('mk_email');
         foreach ($actions as $key => $action) {
             switch ($action) {
                 case 'none':
                     break;
                 case 'marketu':
                 case 'markets':
                     require_once 'emails.inc.php';
                     $user = User::get($uids[$key]);
                     $mail = valide_email($mails[$key]);
                     if (isvalid_email_redirection($mail, $user)) {
                         $from = $action == 'marketu' ? 'user' : 'staff';
                         $market = Marketing::get($uids[$key], $mail);
                         if (!$market) {
                             $market = new Marketing($uids[$key], $mail, 'list', $mlist->address, $from, S::v('uid'));
                             $market->add();
                             break;
                         }
                     }
                 default:
                     XDB::execute('INSERT IGNORE INTO  register_subs (uid, type, sub, domain)
                                           VALUES  ({?}, \'list\', {?}, {?})', $uids[$key], $mlist->mbox, $mlist->domain);
             }
         }
     }
     if (Env::has('add_member') || isset($_FILES['add_member_file']) && $_FILES['add_member_file']['tmp_name']) {
         S::assert_xsrf_token();
         if (isset($_FILES['add_member_file']) && $_FILES['add_member_file']['tmp_name']) {
             $upload =& PlUpload::get($_FILES['add_member_file'], S::user()->login(), 'list.addmember', true);
             if (!$upload) {
                 $page->trigError("Une erreur s'est produite lors du téléchargement du fichier.");
             } else {
                 $logins = $upload->getContents();
             }
         } else {
             $logins = Env::v('add_member');
         }
         $logins = preg_split("/[; ,\r\n\\|]+/", $logins);
         $members = User::getBulkForlifeEmails($logins, true, array('ListsModule', 'no_login_callback'));
         $unfound = array_diff_key($logins, $members);
         // Make sure we send a list (array_values) of unique (array_unique)
         // emails.
         $members = array_values(array_unique($members));
         $arr = $mlist->subscribeBulk($members);
         $successes = array();
         if (is_array($arr)) {
             foreach ($arr as $addr) {
                 $successes[] = $addr[1];
                 $page->trigSuccess("{$addr[0]} inscrit.");
             }
         }
         $already = array_diff($members, $successes);
         if (is_array($already)) {
             foreach ($already as $item) {
                 $page->trigWarning($item . ' est déjà inscrit.');
             }
         }
         if (is_array($unfound)) {
             foreach ($unfound as $item) {
                 if (trim($item) != '') {
                     $page->trigError($item . " ne correspond pas à un compte existant et n'est pas une adresse email.");
                 }
             }
         }
     }
     if (Env::has('del_member')) {
         S::assert_xsrf_token();
         if (strpos(Env::v('del_member'), '@') === false) {
             if ($del_member = User::getSilent(Env::t('del_member'))) {
                 $mlist->unsubscribeBulk(array($del_member->forlifeEmail()));
             }
         } else {
             $mlist->unsubscribeBulk(array(Env::v('del_member')));
         }
         pl_redirect('lists/admin/' . $liste);
     }
     if (Env::has('add_owner')) {
         S::assert_xsrf_token();
         $owners = User::getBulkForlifeEmails(Env::v('add_owner'), false, array('ListsModule', 'no_login_callback'));
         if ($owners) {
             foreach ($owners as $forlife_email) {
                 if ($mlist->addOwner($forlife_email)) {
                     $page->trigSuccess($login . " ajouté aux modérateurs.");
                 }
             }
         }
     }
     if (Env::has('del_owner')) {
         S::assert_xsrf_token();
         if (strpos(Env::v('del_owner'), '@') === false) {
             if ($del_owner = User::getSilent(Env::t('del_owner'))) {
                 $mlist->removeOwner($del_owner->forlifeEmail());
             }
         } else {
             $mlist->removeOwner(Env::v('del_owner'));
         }
         pl_redirect('lists/admin/' . $liste);
     }
     if (list($det, $mem, $own) = $mlist->getMembers()) {
         global $list_unregistered;
         if ($list_unregistered) {
             $page->assign_by_ref('unregistered', $list_unregistered);
         }
         $membres = list_sort_members($mem, @$tri_promo);
         $moderos = list_sort_owners($own, @$tri_promo);
         $page->assign_by_ref('details', $det);
         $page->assign_by_ref('members', $membres);
         $page->assign_by_ref('owners', $moderos);
         $page->assign('np_m', count($mem));
     } else {
         $page->kill("La liste n'existe pas ou tu n'as pas le droit de l'administrer.<br />" . " Si tu penses qu'il s'agit d'une erreur, " . "<a href='mailto:support@polytechnique.org'>contact le support</a>.");
     }
 }
Example #2
0
 public function commit()
 {
     require_once 'emails.inc.php';
     if ($this->asso == 'alias') {
         foreach ($this->members as $member) {
             add_to_list_alias($member, $this->liste, $this->domain);
         }
     } else {
         $members = User::getBulkForlifeEmails($this->members, true, array('ListsModule', 'no_login_callback'));
         $owners = User::getBulkForlifeEmails($this->owners, true, array('ListsModule', 'no_login_callback'));
         // Make sure we send a list (array_values) of unique (array_unique)
         // emails.
         $owners = array_values(array_unique($owners));
         $members = array_values(array_unique($members));
         $success = MailingList::create($this->liste, $this->domain, S::user(), $this->desc, $this->advertise, $this->modlevel, $this->inslevel, $owners, $members);
         if ($success) {
             create_list($this->liste, $this->domain);
         }
         return $success;
     }
 }