function handler_create($page) { global $globals; $page->changeTpl('lists/create.tpl'); $user_promo = S::user()->profile()->yearPromo(); $year = date('Y'); $month = date('m'); // scolar year starts in september $scolarmonth = ($year - $user_promo) * 12 + ($month - 8); $young_promo = $very_young_promo = 0; // binet are accessible only in april in the first year and until // march of the 5th year if ($scolarmonth >= 8 && $scolarmonth < 56) { $young_promo = 1; } // PSC aliases are accesible only between september and june of the second // year of scolarity if ($scolarmonth >= 12 && $scolarmonth < 22) { $very_young_promo = 1; } $page->assign('young_promo', $young_promo); $page->assign('very_young_promo', $very_young_promo); $owners = preg_split("/[\\s]+/", Post::v('owners'), -1, PREG_SPLIT_NO_EMPTY); $members = preg_split("/[\\s]+/", Post::v('members'), -1, PREG_SPLIT_NO_EMPTY); // click on validate button 'add_owner_sub' or type <enter> if (Post::has('add_owner_sub') && Post::has('add_owner')) { // if we want to add an owner and then type <enter>, then both // add_owner_sub and add_owner are filled. $oforlifes = User::getBulkForlifeEmailsFromEmail(Post::v('add_owner')); $mforlifes = User::getBulkForlifeEmailsFromEmail(Post::v('add_member')); if (!is_null($oforlifes)) { $owners = array_merge($owners, $oforlifes); } // if we want to add a member and then type <enter>, then // add_owner_sub is filled, whereas add_owner is empty. if (!is_null($mforlifes)) { $members = array_merge($members, $mforlifes); } } // click on validate button 'add_member_sub' if (Post::has('add_member_sub') && Post::has('add_member')) { $forlifes = User::getBulkForlifeEmailsFromEmail(Post::v('add_member')); if (!is_null($forlifes)) { $members = array_merge($members, $forlifes); } } if (Post::has('add_member_sub') && 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 { $forlifes = User::getBulkForlifeEmailsFromEmail($upload->getContents()); if (!is_null($forlifes)) { $members = array_merge($members, $forlifes); } } } ksort($owners); $owners = array_unique($owners); ksort($members); $members = array_unique($members); $page->assign('owners', join("\n", $owners)); $page->assign('members', join("\n", $members)); if (!Post::has('submit')) { return; } else { S::assert_xsrf_token(); } $asso = Post::t('asso'); $list = strtolower(Post::t('liste')); if (empty($list)) { $page->trigError('Le champ « adresse souhaitée » est vide.'); } if (!preg_match("/^[a-zA-Z0-9\\-]*\$/", $list)) { $page->trigError('Le nom de la liste ne doit contenir que des lettres non accentuées, chiffres et tirets.'); } if ($asso == 'binet' || $asso == 'alias') { $promo = Post::i('promo'); $domain = $promo . '.' . $globals->mail->domain; if ($promo < 1921 || $promo > date('Y')) { $page->trigError('La promotion est mal renseignée, elle doit être du type : 2004.'); } } elseif ($asso == 'groupex') { $domain = XDB::fetchOneCell('SELECT mail_domain FROM groups WHERE nom = {?}', Post::t('groupex_name')); if (!$domain) { $page->trigError('Il n\'y a aucun groupe de ce nom sur Polytechnique.net.'); } } else { $domain = $globals->mail->domain; } require_once 'emails.inc.php'; if (list_exist($list, $domain)) { $page->trigError("L'« adresse souhaitée » est déjà prise."); } if (!Post::t('desc')) { $page->trigError('Le sujet est vide.'); } if (!count($owners)) { $page->trigError('Il n\'y a pas de gestionnaire.'); } if (count($members) < 4) { $page->trigError('Il n\'y a pas assez de membres.'); } if (!$page->nb_errs()) { $page->trigSuccess('Demande de création envoyée !'); $page->assign('created', true); $req = new ListeReq(S::user(), $asso, $list, $domain, Post::t('desc'), Post::i('advertise'), Post::i('modlevel'), Post::i('inslevel'), $owners, $members); $req->submit(); } }
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software * * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ require_once dirname(__FILE__) . '/connect.db.inc.php'; global $globals; $opt = getopt('p:o:h'); if (empty($opt['p']) || empty($opt['o']) || isset($opt['h'])) { echo <<<EOF usage: lists.create_promo.php -p promo -o owner create mailing list for promo "promo" with initial owner "owner" EOF; exit; } // Retrieves list parameters. $promo = intval($opt['p']); $owner = $opt['o']; $owner_user = User::getSilent($owner); if (!$owner_user) { echo "Supplied owner is not valid, aborting.\n"; exit(1); } // Creates the list. $req = new ListeReq($owner_user, false, "promo", $promo . '.' . $globals->mail->domain, "Liste de la promotion {$promo}", 1, 2, 0, array($owner), array()); $req->submit(); // vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8: