write_group_cache(); jump("修改成功", "index.php?lfj=group&job=edit&gid={$gid}"); } elseif ($action == "delete" && $Apower[group_list]) { $db->query(" DELETE FROM `{$pre}group` WHERE gid='{$gid}' "); $db->query(" DELETE FROM `{$pre}admin_menu` WHERE groupid='{$gid}' "); unlink(ROOT_PATH . "data/group/{$gid}.php"); write_group_cache(); jump("删除成功", "index.php?lfj={$lfj}&job=list"); } elseif ($action == "list" && $Apower[group_list]) { foreach ($postdb as $key => $rs) { $db->query("UPDATE `{$pre}group` SET grouptitle='{$rs['grouptitle']}',levelnum='{$rs['levelnum']}' WHERE gid='{$key}' "); } write_group_cache(); jump("修改成功", "index.php?lfj={$lfj}&job=list"); } elseif ($job == "edit" && $Apower[group_list]) { $select_group = select_group("gid", $gid, "index.php?lfj=group&job=edit"); $rsdb = $db->get_one(" SELECT * FROM `{$pre}group` WHERE gid='{$gid}' "); $powerdb = @unserialize($rsdb[powerdb]); if ($gid == 3 || $gid == 4) { $powerdb[comment_yz] = $powerdb[PassContribute] = 1; $powerdb[comment_img] = 0; } $powerdb[PassContribute] = intval($powerdb[PassContribute]); $PassContribute[$powerdb[PassContribute]] = " checked "; $rsdb_gptype[$rsdb[gptype]] = " checked "; $allowseerch[$rsdb[allowsearch]] = ' checked '; $allowadmin[$rsdb[allowadmin]] = ' checked '; $EditPassPower[intval($powerdb[EditPassPower])] = ' checked '; $AllowUploadMax[intval($powerdb[AllowUploadMax])] = ' checked '; $comment_yz[intval($powerdb[comment_yz])] = ' checked '; $comment_img[intval($powerdb[comment_img])] = ' checked ';
<form id="filter" class="center" action="filter.php" method="post"> <fieldset class="smallround"> <legend>Filter by</legend> <?php echo select_client(); echo select_domain(); echo select_cache(); echo select_tbl(TBL_PREFIX . TBL_OS, "os_id", "OS"); echo select_tbl(TBL_PREFIX . TBL_BROWSERS, "browser_id", "Browser"); echo select_fps(); ?> </fieldset> <fieldset class="clear smallround"> <legend>Grouping</legend> <?php echo select_group(); ?> <?php echo select_records(); ?> <?php echo checkbox("ftu", "Display only first-time users"); ?> </fieldset> <fieldset class="clear smallround"> <legend>Date range</legend> <?php echo select_date("from"); ?> <?php echo select_date("to");
if (!$postdb['linkurl']) { //showmsg("链接地址不能为空"); } $postdb[name] = filtrate($postdb[name]); $postdb[linkurl] = filtrate($postdb[linkurl]); $db->query("UPDATE {$pre}admin_menu SET fid='{$fid}',name='{$postdb['name']}',linkurl='{$postdb['linkurl']}',color='{$postdb['color']}',target='{$postdb['target']}',list='{$postdb['list']}',iftier='{$postdb['iftier']}',`groupid`='-{$gid}' WHERE id='{$id}'"); jump("修改成功", "?lfj={$lfj}&job=list&gid={$gid}", 1); } elseif ($job == 'add' && $Apower[membermenu_list]) { if (!$gid) { showmsg("没有指定的用户组!"); } $target[0] = ' checked '; $iftier[0] = ' checked '; $atc = "add"; $selected = select_fupmenu('fid', $rsdb[fid]); $select_group = select_group("gid", abs($gid), ''); require dirname(__FILE__) . "/" . "head.php"; require dirname(__FILE__) . "/" . "template/memberguidemenu/menu.htm"; require dirname(__FILE__) . "/" . "template/memberguidemenu/edit.htm"; require dirname(__FILE__) . "/" . "foot.php"; } elseif ($action == 'add' && $Apower[membermenu_list]) { if ($gid == 2) { showmsg("不能是游客组"); } if (!$postdb[name]) { showmsg("名称不能为空"); } if ($fid && !$postdb['linkurl']) { showmsg("链接地址不能为空"); } if (!$addsort && !$fid) {
$DivTpl != 1 && ($DivTpl = 0); $stype || ($stype = 4); $div_width && ($div_w = $div_width); $div_height && ($div_h = $div_height); $yzdb[$yz] = "checked"; $ascdb[$asc] = "checked"; $orderdb[$order] = " selected "; $levelsdb[$levels] = " selected "; $titleflooddb["{$titleflood}"] = "checked"; $hidedb[$hide] = "checked"; $divtpldb[$DivTpl] = "checked"; $stypedb[$stype] = " checked "; $fiddb = explode(",", $codedb[fiddb]); //$select_news=select_group("fiddb[]",$rsdb[groupid]); $select_group = select_group("group_1", $group_1); $select_group2 = select_group("group_2", $group_2); $tplpart_1 = str_replace(" ", "&nbsp;", $tplpart_1); $tplpart_2 = str_replace(" ", "&nbsp;", $tplpart_2); $getLabelTpl = getLabelTpl($inc, array("common_title", "common_pic")); //幻灯片样式 $rollpicStyle = "<select name='RollStyleType' id='RollStyleType' onChange='rollpictypes(this)'><option value=''>默认</option>"; $dir = opendir(ROOT_PATH . "template/default/rollpic/"); while ($file = readdir($dir)) { if (eregi("\\.htm\$", $file)) { $rollpicStyle .= "<option value='{$file}'>" . str_replace(".htm", "", $file) . "</option>"; } } $rollpicStyle .= "</select>"; require "head.php"; require "template/label/member.htm"; require "foot.php";
/** * Maintenance view for the manual insert parameters * */ function manual_action() { $_request = Request::GetInstance(); if (Request::submitted('submit')) { $filters = array_filter(Request::getArray('filter')); if (!Request::get('sem_id') || Request::get('sem_id') == 'false') { $this->flash['error'] = _('Ungültiger Aufruf'); } elseif (!count($filters)) { $this->flash['error'] = _('Keine Filterkriterien gewählt'); } else { $seminar = Seminar::GetInstance(Request::option('sem_id')); $group = select_group($seminar->getSemesterStartTime()); $userlookup = new UserLookup(); foreach ($filters as $type => $values) { $userlookup->setFilter($type, $values); } $user_ids = $userlookup->execute(); $real_users = 0; foreach ($user_ids as $user_id) { if (!AutoInsert::checkAutoInsertUser(Request::option('sem_id'), $user_id)) { $seminar->addMember($user_id); $real_users += AutoInsert::saveAutoInsertUser(Request::option('sem_id'), $user_id); } } //messagebox $text = sprintf(_('Es wurden %u von %u möglichen Personen in die Veranstaltung %s eingetragen.'), $real_users, count($user_ids), sprintf('<a href="%s">%s</a>', URLHelper::getLink('dispatch.php/course/details/', array('cid' => $seminar->getId())), htmlReady($seminar->getName()))); if ($real_users > 0) { $this->flash['success'] = $text; } else { $this->flash['message'] = $text; } $this->flash['detail'] = array(_('Etwaige Abweichungen der Personenzahlen enstehen durch bereits vorhandene bzw. wieder ausgetragene Personen.')); $this->redirect('admin/autoinsert/manual'); } } $this->sem_id = Request::option('sem_id'); $this->sem_search = Request::get('sem_search'); $this->sem_select = Request::option('sem_select'); $this->filtertype = Request::getArray('filtertype'); $this->filter = Request::getArray('filter'); if (count(Request::getArray('remove_filter'))) { $this->filtertype = array_diff($this->filtertype, array_keys(Request::getArray('remove_filter'))); } elseif (Request::submitted('add_filter')) { array_push($this->filtertype, Request::get('add_filtertype')); } if (Request::get('sem_search') and Request::get('sem_select')) { if (Request::get('sem_search')) { $search = new SeminarSearch('number-name'); $this->seminar_search = $search->getResults(Request::get('sem_search'), array('search_sem_sem' => $this->sem_select)); if (count($this->seminar_search) == 0) { $this->flash['message'] = _("Es wurden keine Veranstaltungen gefunden."); } } else { $this->flash['error'] = _("Im Suchfeld wurde nichts eingetragen!"); } } $this->values = array(); foreach ($this->filtertype as $type) { $this->values[$type] = UserLookup::getValuesForType($type); } $this->available_filtertypes = array('fach' => _('Studienfach'), 'abschluss' => _('Studienabschluss'), 'fachsemester' => _('Studienfachsemester'), 'institut' => _('Einrichtung'), 'status' => _('Statusgruppe'), 'domain' => _('Domäne')); }
/** * Enregisters a user in a certain seminar by checking his status and the * seminar's permissions * @param string $user_status Current user status * @param string $user_id Id of the user * @param Array $seminar Array representation of the seminar * @return boole Indicating whether the user was actually inserted */ private static function _saveUser($user_status, $user_id, $seminar) { if (!in_array($user_status, $seminar['status']) or $seminar['Schreibzugriff'] >= 2) { return false; } // insert the user in the seminar_user table $query = "INSERT IGNORE INTO seminar_user (Seminar_id, user_id, status, gruppe, mkdate)"; $query .= " VALUES (?, ?, 'autor', ?, UNIX_TIMESTAMP())"; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar['seminar_id'], $user_id, select_group($seminar['start_time']))); return true; }
showmsg("你不能选择游客组"); } elseif ($postdb[groupid] == '3' && $userdb[groupid] != 3 && !$founder) { showmsg("你无权限选择超级管理员用户组,请更换其他的用户组"); } elseif ($postdb[groupid] == '4' && $userdb[groupid] != 3 && $userdb[groupid] != 4 && !$founder) { showmsg("你无权限选择此用户组,请更换其他的用户组"); } $array = array('password' => $postdb[passwd], 'username' => $postdb[username], 'groupid' => $postdb[groupid], 'email' => $postdb[email]); $uid = $userDB->register_user($array); if (!is_numeric($uid)) { showmsg($uid); } jump("创建成功", "index.php?lfj=member&job=list", 3); } elseif ($job == "editmember" && $Apower[member_list]) { $rsdb = $userDB->get_allInfo($uid); $rsdb[money] = get_money($rsdb[uid]); $select_group = select_group("postdb[groupid]", $rsdb[groupid]); $select_group2 = group_box("postdb[groups]", explode(",", $rsdb[groups]), 1); $sexdb[intval($rsdb[sex])] = ' checked '; $yzdb[intval($rsdb[yz])] = ' checked '; $ConfigDB = unserialize($rsdb[config]); $rsdb[totalspace] = floor($rsdb[totalspace] / (1024 * 1024)); $ConfigDB[begintime] && ($ConfigDB[begintime] = date("Y-m-d H:i:s", $ConfigDB[begintime])); $ConfigDB[endtime] && ($ConfigDB[endtime] = date("Y-m-d H:i:s", $ConfigDB[endtime])); $email_yz[$rsdb[email_yz]] = ' checked '; $mob_yz[$rsdb[mob_yz]] = ' checked '; $idcard_yz[$rsdb[idcard_yz]] = ' checked '; require dirname(__FILE__) . "/" . "head.php"; require dirname(__FILE__) . "/" . "template/member/menu.htm"; require dirname(__FILE__) . "/" . "template/member/editmember.htm"; require dirname(__FILE__) . "/" . "foot.php"; } elseif ($action == "editmember" && $Apower[member_list]) {
function index_action() { if (!$GLOBALS['perm']->have_perm("admin")) { throw new AccessDeniedException(_("Sie sind nicht berechtigt, dieses Plugin zu benutzen.")); } $db = DBManager::get(); if (Request::submitted('do_search_source')) { $result = search_range(Request::quoted('search_source')); if (is_array($result)) { $result = array_filter($result, function ($r) { return $r["type"] == "sem"; }); if (count($result)) { PageLayout::postMessage(MessageBox::success(sprintf(_("Ihre Sucher ergab %s Treffer."), count($result)))); $show_source_result = true; } } else { PageLayout::postMessage(MessageBox::info(_("Ihre Suche ergab keine Treffer."))); } } if (Request::submitted('do_choose_source')) { $source_id = Request::option('search_source_result'); $copy_count = 5; Request::set('to_copy', null); } else { if (Request::submitted('source_id')) { $source_id = Request::option('source_id'); $copy_count = Request::int('copy_count'); if ($copy_count < 1) { $copy_count = 1; } } } if ($source_id) { $source = Seminar::getInstance($source_id); $source_name = $source->getName() . ' (' . $source->getStartSemesterName() . ')'; $copy_type = Request::int('copy_type', $source->status); if (SeminarCategories::getByTypeId($copy_type)->course_creation_forbidden) { $copy_type = 0; } if (SeminarCategories::getByTypeId($source->status)->only_inst_user) { $search_template = "user_inst"; } else { $search_template = "user"; } $bet_inst = $db->query("SELECT institut_id FROM seminar_inst WHERE seminar_id=" . $db->quote($source_id))->fetchAll(PDO::FETCH_COLUMN); $source_dozenten = array_keys($source->getMembers('dozent')); if ($copy_count) { $r = Request::getArray('to_copy'); $delete_lecturer = Request::getArray('delete_lecturer'); $add_lecturer = count(Request::getArray('add_lecturer')) ? (int) key(Request::getArray('add_lecturer')) : null; for ($i = 0; $i < $copy_count; $i++) { $to_copy['nr'][$i] = isset($r['nr'][$i]) ? $r['nr'][$i] : $source->getNumber(); $to_copy['name'][$i] = isset($r['name'][$i]) ? $r['name'][$i] : $source->getName(); $to_copy['participants'][$i] = isset($r['participants'][$i]) ? 1 : 0; $to_copy['lecturers'][$i] = $r['lecturers'][$i]; if (empty($to_copy['lecturers'][$i])) { $to_copy['lecturers'][$i] = $source_dozenten; } else { if (isset($delete_lecturer[$i]) && count($to_copy['lecturers'][$i]) > 1) { $to_delete = array_search(key($delete_lecturer[$i]), $to_copy['lecturers'][$i]); if ($to_delete !== false) { unset($to_copy['lecturers'][$i][$to_delete]); } } } if ($add_lecturer === $i && Request::option('add_doz_' . $add_lecturer)) { $to_copy['lecturers'][$i][] = Request::option('add_doz_' . $add_lecturer); } $to_copy['search_lecturer'][$i] = new PermissionSearch($search_template, sprintf(_("%s auswählen"), get_title_for_status('dozent', 1, $source->status)), "user_id", array('permission' => 'dozent', 'exclude_user' => $to_copy['lecturers'][$i], 'institute' => $bet_inst)); } } if (Request::submitted('do_copy') && count($to_copy)) { $copied = array(); $lecturer_insert = $db->prepare("INSERT INTO seminar_user (seminar_id,user_id,status,position,gruppe,comment,visible,mkdate) VALUES (?,?,'dozent',?,?,'','yes',UNIX_TIMESTAMP())"); $copy_seminar_inst = $db->prepare("INSERT INTO seminar_inst (seminar_id,institut_id) SELECT ?,institut_id FROM seminar_inst WHERE seminar_id=?"); $copy_seminar_sem_tree = $db->prepare("INSERT INTO seminar_sem_tree (seminar_id,sem_tree_id) SELECT ?,sem_tree_id FROM seminar_sem_tree WHERE seminar_id=?"); $copy_seminar_user = $db->prepare("INSERT IGNORE INTO seminar_user (seminar_id,user_id,status,gruppe, mkdate,comment,position) SELECT ?,user_id,status,gruppe,UNIX_TIMESTAMP(),'',0 FROM seminar_user WHERE status IN ('user','autor','tutor') AND seminar_id=?"); $copy_seminar_userdomains = $db->prepare("INSERT INTO seminar_userdomains (seminar_id,userdomain_id) SELECT ?,userdomain_id FROM seminar_userdomains WHERE seminar_id=?"); $copy_statusgruppen = $db->prepare("INSERT INTO statusgruppen (statusgruppe_id,name,range_id,position,size,selfassign,mkdate) SELECT MD5(CONCAT(statusgruppe_id, ?)),name,?,position,size,selfassign,UNIX_TIMESTAMP() FROM statusgruppen WHERE range_id=?"); $copy_statusgruppe_user = $db->prepare("INSERT INTO statusgruppe_user (statusgruppe_id,user_id,position) SELECT MD5(CONCAT(statusgruppe_user.statusgruppe_id, ?)),user_id,statusgruppe_user.position FROM statusgruppen INNER JOIN statusgruppe_user USING(statusgruppe_id) WHERE range_id=?"); for ($i = 0; $i < $copy_count; $i++) { $new_sem = Course::build($source->toArray()); $new_sem->setId($new_sem->getNewId()); $new_sem_id = $new_sem->id; $new_sem->status = Request::int('copy_type', 1); $new_sem->name = $to_copy['name'][$i]; $new_sem->veranstaltungsnummer = $to_copy['nr'][$i]; $new_sem->store(); if (!$new_sem->isNew()) { log_event("SEM_CREATE", $new_sem_id); $gruppe = (int) select_group($new_sem->start_time); $position = 1; foreach ($to_copy['lecturers'][$i] as $lecturer) { $lecturer_insert->execute(array($new_sem_id, $lecturer, $position, $gruppe)); } $copy_seminar_inst->execute(array($new_sem_id, $source_id)); $copy_seminar_sem_tree->execute(array($new_sem_id, $source_id)); $copy_seminar_userdomains->execute(array($new_sem_id, $source_id)); if ($to_copy['participants'][$i]) { $copy_seminar_user->execute(array($new_sem_id, $source_id)); $copy_statusgruppen->execute(array($new_sem_id, $new_sem_id, $source_id)); $copy_statusgruppe_user->execute(array($new_sem_id, $source_id)); } $copied[] = $new_sem; } } PageLayout::postMessage(MessageBox::success(sprintf(_("Es wurden %s Kopien erstellt."), count($copied)))); $source_id = null; } } PageLayout::setTitle(_("Veranstaltungs-Vervielfältiger")); $template_factory = new Flexi_TemplateFactory(dirname(__FILE__) . "/templates"); $template = $template_factory->open('index.php'); $template->set_layout($GLOBALS['template_factory']->open('layouts/base.php')); echo $template->render(compact('source_id', 'source_name', 'show_source_result', 'result', 'copy_count', 'copy_type', 'to_copy', 'copied')); }
if (isset($_POST["key"])) { if ($_POST["key"] == "group") { $OUTPUT = get_data($_POST); } elseif ($_POST["key"] == "process") { $OUTPUT = process_data($_POST); } elseif ($_POST["key"] == "modify") { if (isset($_POST["done"])) { $OUTPUT = get_email($_POST); } else { $OUTPUT = process_data($_POST); } } elseif ($_POST["key"] == "send_mail") { $OUTPUT = send_emails($_POST); } } else { $OUTPUT = select_group(); } $OUTPUT .= "<p>" . mkQuickLinks(ql("email-queue-manage.php", "Send Emails In Queue"), ql("email-queue-failures.php", "Resend Failed Emails In Queue"), ql("email-groups.php", "Send Email To Group"), ql("email-group-new.php", "Add Email Group"), ql("email-group-view.php", "View Email Groups")); require "template.php"; function select_group() { db_connect(); $groups = ""; #get list of groups $get_groups = "SELECT * from egroups ORDER BY groupname"; $run_egroups = db_exec($get_groups) or errDie("Unable to get group information."); if (pg_numrows($run_egroups) > 0) { while ($garr = pg_fetch_array($run_egroups)) { $groups .= "<option value='{$garr['grouptitle']}'>{$garr['groupname']}</option>"; } }
/** * adds a user to the seminar with the given status * @param user_id string: ID of the user * @param status string: status of the user for the seminar "user", "autor", "tutor", "dozent" * @param force bool: if false (default) the user will only be upgraded and not degraded in his/her status */ public function addMember($user_id, $status = 'autor', $force = false) { if (in_array(get_global_perm($user_id), array("admin", "root"))) { $this->createError(_("Admin und Root dürfen nicht Mitglied einer Veranstaltung sein.")); return false; } $db = DBManager::get(); $rangordnung = array_flip(array('user', 'autor', 'tutor', 'dozent')); if ($rangordnung[$status] > $rangordnung['autor'] && SeminarCategories::getByTypeId($this->status)->only_inst_user) { //überprüfe, ob im richtigen Institut: $user_institute_stmt = $db->prepare( "SELECT Institut_id " . "FROM user_inst " . "WHERE user_id = :user_id " . ""); $user_institute_stmt->execute(array('user_id' => $user_id)); $user_institute = $user_institute_stmt->fetchAll(PDO::FETCH_COLUMN, 0); if (!in_array($this->institut_id, $user_institute) && !count(array_intersect($user_institute, $this->getInstitutes()))) { $this->createError(_("Einzutragender Nutzer stammt nicht einem beteiligten Institut an.")); return false; } } if (!$force) { $query = "SELECT status FROM seminar_user WHERE user_id = ? AND Seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($user_id, $this->id)); $old_status = $statement->fetchColumn(); } $query = "SELECT MAX(position) + 1 FROM seminar_user WHERE status = ? AND Seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($status, $this->id)); $new_position = $statement->fetchColumn(); $query = "SELECT COUNT(*) FROM seminar_user WHERE Seminar_id = ? AND status = 'dozent'"; $statement = DBManager::get()->prepare($query); $statement->execute(array($this->id)); $numberOfTeachers = $statement->fetchColumn(); if (!$old_status) { $query = "INSERT INTO seminar_user (Seminar_id, user_id, status, position, gruppe, visible, mkdate) VALUES (?, ?, ?, ?, ?, ?, UNIX_TIMESTAMP())"; $statement = DBManager::get()->prepare($query); $statement->execute(array( $this->id, $user_id, $status, $new_position ?: 0, (int)select_group($this->getSemesterStartTime()), in_array($status, words('tutor dozent')) ? 'yes' : 'unknown', )); // delete the entries, user is now in the seminar $stmt = DBManager::get()->prepare('DELETE FROM admission_seminar_user WHERE user_id = ? AND seminar_id = ?'); $stmt->execute(array($user_id, $this->getId())); if ($stmt->rowCount()) { //renumber the waiting/accepted/lot list, a user was deleted from it renumber_admission($this->getId()); } $cs = $this->getCourseSet(); if ($cs) { $prio_delete = AdmissionPriority::unsetPriority($cs->getId(), $user_id, $this->getId()); } removeScheduleEntriesMarkedAsVirtual($user_id, $this->getId()); NotificationCenter::postNotification("CourseDidGetMember", $this, $user_id); NotificationCenter::postNotification('UserDidEnterCourse', $this->id, $user_id); StudipLog::log('SEM_USER_ADD', $this->id, $user_id, $status, 'Wurde in die Veranstaltung eingetragen'); $this->course->resetRelation('members'); $this->course->resetRelation('admission_applicants'); return $this; } elseif (($force || $rangordnung[$old_status] < $rangordnung[$status]) && ($old_status !== "dozent" || $numberOfTeachers > 1)) { $query = "UPDATE seminar_user SET status = ?, visible = IFNULL(?, visible), position = ? WHERE Seminar_id = ? AND user_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array( $status, in_array($status, words('tutor dozent')) ? 'yes' : null, $new_position, $this->id, $user_id, )); if ($old_status === 'dozent') { $query = "SELECT termin_id FROM termine WHERE range_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($this->id)); $termine = $statement->fetchAll(PDO::FETCH_COLUMN); $query = "DELETE FROM termin_related_persons WHERE range_id = ? AND user_id = ?"; $statement = DBManager::get()->prepare($query); foreach ($termine as $termin_id) { $statement->execute(array($termin_id, $user_id)); } } NotificationCenter::postNotification("CourseDidChangeMember", $this, $user_id); $this->course->resetRelation('members'); $this->course->resetRelation('admission_applicants'); return $this; } else { if ($old_status === "dozent" && $numberOfTeachers <= 1) { $this->createError(sprintf(_("Die Veranstaltung muss wenigstens <b>einen/eine</b> VeranstaltungsleiterIn (%s) eingetragen haben!"), get_title_for_status('dozent', 1, $this->status)) . ' ' . _("Tragen Sie zunächst einen anderen ein, um diesen herabzustufen.")); } return false; } }
/** * This function updates an admission procedure * * The function checks, if user could be insert to the seminar. * The User gets a message, if he is inserted to the seminar * * @param string seminar_id the seminar_id of the seminar to calculate * @param boolean send_message should a system-message be send? * */ function normal_update_admission($seminar_id, $send_message = TRUE) { $messaging=new messaging; //Daten holen / Abfrage ob ueberhaupt begrenzt $seminar = Seminar::GetInstance($seminar_id); if($seminar->isAdmissionEnabled()){ $sem_preliminary = ($seminar->admission_prelim == 1); $cs = $seminar->getCourseSet(); //Veranstaltung einfach auffuellen (nach Lostermin und Ende der Kontingentierung) if (!$seminar->admission_disable_waitlist_move && $cs->hasAlgorithmRun()) { //anzahl der freien Plaetze holen $count = (int)$seminar->getFreeAdmissionSeats(); //Studis auswaehlen, die jetzt aufsteigen koennen $query = "SELECT user_id, username FROM admission_seminar_user LEFT JOIN auth_user_md5 USING (user_id) WHERE seminar_id = ? AND status = 'awaiting' ORDER BY position LIMIT " . (int)$count; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar->getId())); $temp = $statement->fetchAll(PDO::FETCH_ASSOC); foreach ($temp as $row) { //ok, here ist the "colored-group" meant (for grouping on meine_seminare), not the grouped seminars as above! $group = select_group($seminar->getSemesterStartTime()); if (!$sem_preliminary) { $query = "INSERT INTO seminar_user (user_id, Seminar_id, status, gruppe, mkdate) VALUES (?, ?, 'autor', ?, UNIX_TIMESTAMP())"; $statement = DBManager::get()->prepare($query); $statement->execute(array( $row['user_id'], $seminar->getId(), $group )); $affected = $statement->rowCount(); NotificationCenter::postNotification('UserDidEnterCourse', $seminar->getId(), $row['user_id']); } else { $query = "UPDATE admission_seminar_user SET status = 'accepted' WHERE user_id = ? AND seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array( $row['user_id'], $seminar->getId() )); $affected = $statement->rowCount(); } if ($affected > 0) { $log_message = 'Wurde automatisch aus der Warteliste in die Veranstaltung eingetragen.'; StudipLog::log('SEM_USER_ADD', $seminar->getId(), $row['user_id'], $sem_preliminary ? 'accepted' : 'autor', $log_message); if (!$sem_preliminary) { $query = "DELETE FROM admission_seminar_user WHERE user_id = ? AND seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array( $row['user_id'], $seminar->getId() )); $affected = $statement->rowCount(); } else { $affected = 0; } //User benachrichtigen if (($sem_preliminary || $affected > 0) && $send_message) { setTempLanguage($row['user_id']); if (!$sem_preliminary) { $message = sprintf (_('Sie sind in die Veranstaltung **%s (%s)** eingetragen worden, da für Sie ein Platz frei geworden ist. Ab sofort finden Sie die Veranstaltung in der Übersicht Ihrer Veranstaltungen. Damit sind Sie auch für die Präsenzveranstaltung zugelassen.'), $seminar->getName(), $seminar->getFormattedTurnus(true)); } else { $message = sprintf (_('Sie haben den Status vorläufig akzeptiert in der Veranstaltung **%s (%s)** erhalten, da für Sie ein Platz freigeworden ist.'), $seminar->getName(), $seminar->getFormattedTurnus(true)); } $subject = sprintf(_("Teilnahme an der Veranstaltung %s"),$seminar->getName()); restoreLanguage(); $messaging->insert_message($message, $row['username'], '____%system%____', FALSE, FALSE, '1', FALSE, $subject, true); } } } //Warteposition der restlichen User neu eintragen renumber_admission($seminar_id, FALSE); } $seminar->restore(); } }