} // no id given else { $user_error_msg = $langMailVerifyNoId; } $res = Database::get()->querySingle($qry); if ($res) { $username = $res->username; $email = $res->email; // success if (token_validate($username . $email . $id, $code)) { $verified_mail = intval($res->verified_mail); // update user's application if (!empty($req_id) and ($verified_mail !== 1)) { Database::get()->query("UPDATE user_request SET verified_mail = 1 WHERE id = ?d", $req_id); $department = $tree->getFullPath($res->faculty_id); $prof = isset($res->status) && intval($res->status) === 1 ? 1 : NULL; $givenname = $res->givenname; $surname = $res->surname; $am = $res->am; $usercomment = $res->comment; $usermail = $res->email; $userphone = $res->phone; $subject = $prof ? $mailsubject : $mailsubject2; $MailMessage = $mailbody1 . $mailbody2 . "$givenname $surname\n\n" . $mailbody3 . $mailbody4 . $mailbody5 . ($prof ? $mailbody6 : $mailbody8) . "\n\n$langFaculty: $department\n$langComments: $usercomment\n" . "$langAm: $am\n" . "$langProfUname: $username\n$langProfEmail : $usermail\n" .
$tool_content .= action_bar(array( array('title' => $langBack, 'url' => $urlServer, 'icon' => 'fa-reply', 'level' => 'primary-label', 'button-class' => 'btn-default') ),false); if (count($tree->buildRootsArray()) > 1) { $tool_content .= $tree->buildRootsSelectForm($fc); } $tool_content .= " <div class='row'> <div class='col-xs-12'> <ul class='list-group'> <li class='list-group-item list-header'>$langFaculty: <b>" . $tree->getFullPath($fc, false, $_SERVER['SCRIPT_NAME'] . '?fc=') . "</b>"; $tool_content .= $tree->buildDepartmentChildrenNavigationHtml($fc, 'opencourses', $countCallback, $showEmpty); $tool_content .= "</ul> </div> </div>"; $queryCourseIds = ''; $queryExtraSelect = ''; $queryExtraJoin = ''; $queryExtraJoinWhere = ''; $runQuery = true; if ($isInOpenCoursesMode) { // find subnode's certified opencourses
</div> <!-- end of pers_info row -->"; if (!empty($userdata->description)) { $tool_content .= "<div id='profile-about-me' class='row'> <div class='col-xs-12 col-md-10 col-md-offset-2 profile-pers-info'> <h4>$langProfileAboutMe</h4><div> ".standard_text_escape($userdata->description)."</div></div></div>"; } $tool_content .= " <div id='profile-departments' class='row'> <div class='col-xs-12 col-md-10 col-md-offset-2 profile-pers-info'> <div><span class='tag'>$langHierarchyNode : </span>"; $departments = $user->getDepartmentIds($id); $i = 1; foreach ($departments as $dep) { $br = ($i < count($departments)) ? '<br/>' : ''; $tool_content .= $tree->getFullPath($dep) . $br; $i++; } $tool_content .= "</div> <div> <span class='tag'>$langProfileMemberSince : </span><span class='tag-value'>$userdata->registered_at</span> </div> </div> </div>"; //render custom profile fields content $tool_content .= render_profile_fields_content(array('user_id' => $id)); $tool_content .= "</div> </div> </div> </div>"; }
if (!empty($email) and !email_seems_valid($email)) { $tool_content .= "<div class='alert alert-danger'>{$langEmailWrong}</div>"; user_info_form(); draw($tool_content, 0, null, $head_content); exit; } else { $email = mb_strtolower(trim($email)); } // Record user request $q1 = Database::get()->query("INSERT INTO user_request SET\n givenname = ?s, surname = ?s, username = ?s, password = '******',\n email = ?s, faculty_id = ?d, phone = ?s,\n am = ?s, state = 1, status = ?d, verified_mail = ?d,\n date_open = " . DBHelper::timeAfter() . ", comment = ?s, lang = ?s,\n request_ip = ?s", $givenname_form, $surname_form, $uname, $email, $depid, $userphone, $am, $status, $verified_mail, $usercomment, $language, $_SERVER['REMOTE_ADDR']); $request_id = $q1->lastInsertID; // email does not need verification -> mail helpdesk if (!$email_verification_required) { $emailAdministrator = get_config('email_sender'); // send email $MailMessage = $mailbody1 . $mailbody2 . "{$givenname_form} {$surname_form}\n\n" . $mailbody3 . $mailbody4 . $mailbody5 . "{$mailbody6}\n\n" . "{$langFaculty}: " . $tree->getFullPath($depid) . "\n \n{$langComments}: {$usercomment}\n" . "{$langProfUname} : {$uname}\n{$langProfEmail} : {$email}\n" . "{$contactphone} : {$userphone}\n\n\n{$logo}\n\n"; if (!send_mail($siteName, $emailAdministrator, $gunet, $emailhelpdesk, $mailsubject, $MailMessage, $charset, "Reply-To: {$email}")) { $tool_content .= "<div class='alert alert-warning'>{$langMailErrorMessage} <a href='mailto:{$emailhelpdesk}'>{$emailhelpdesk}</a></div>"; draw($tool_content, 0); exit; } $tool_content .= "<div class='alert alert-success'>{$greeting},<br />{$success}<br /></div><p>{$infoprof}</p><br />\n <p>« <a href='{$urlServer}'>{$langBack}</a></p>"; } else { // email needs verification -> mail user $hmac = token_generate($uname . $email . $request_id); $emailhelpdesk = get_config('email_helpdesk'); $emailAdministrator = get_config('email_sender'); $subject = $langMailVerificationSubject; $MailMessage = sprintf($mailbody1 . $langMailVerificationBody1, $urlServer . 'modules/auth/mail_verify.php?ver=' . $hmac . '&rid=' . $request_id); if (!send_mail($siteName, $emailAdministrator, '', $email, $subject, $MailMessage, $charset, "Reply-To: {$emailhelpdesk}")) { $mail_ver_error = sprintf("<div class='alert alert-warning'>" . $langMailVerificationError, $email, $urlServer . "modules/auth/registration.php", "<a href='mailto:{$emailhelpdesk}' class='mainpage'>{$emailhelpdesk}</a>.</div>");
if ($all_set) { $email_verification_required = get_config('email_verification_required'); $emailhelpdesk = get_config('email_helpdesk'); if (!$email_verification_required) { $verified_mail = 2; } else { $verified_mail = 0; } // register user request $status = $prof ? USER_TEACHER : USER_STUDENT; $res = Database::get()->query("INSERT INTO user_request SET\n\t\t\tgivenname = ?s, surname = ?s, username = ?s, email = ?s,\n\t\t\tam = ?s, faculty_id = ?d, phone = ?s,\n\t\t\tstate = 1, status = {$status},\n\t\t\tverified_mail = ?d, date_open = " . DBHelper::timeAfter() . ",\n\t\t\tcomment = ?s, lang = ?s, request_ip = ?s", $givenname, $surname, $username, $usermail, $am, $department, $userphone, $verified_mail, $usercomment, $language, $_SERVER['REMOTE_ADDR']); $request_id = $res->lastInsertID; // email does not need verification -> mail helpdesk if (!$email_verification_required) { //----------------------------- Email Request Message -------------------------- $dep_body = $tree->getFullPath($department); $subject = $prof ? $mailsubject : $mailsubject2; $MailMessage = $mailbody1 . $mailbody2 . "{$givenname} {$surname}\n\n" . $mailbody3 . $mailbody4 . $mailbody5 . ($prof ? $mailbody6 : $mailbody8) . "\n\n{$langFaculty}: {$dep_body}\n{$langComments}: {$usercomment}\n" . "{$langAm}: {$am}\n" . "{$langProfUname}: {$username}\n{$langProfEmail} : {$usermail}\n" . "{$contactphone}: {$userphone}\n\n\n{$logo}\n\n"; $emailAdministrator = get_config('email_sender'); if (!send_mail($siteName, $emailAdministrator, '', $emailhelpdesk, $subject, $MailMessage, $charset, "Reply-To: {$usermail}")) { $tool_content .= "<div class='alert alert-warning'>{$langMailErrorMessage} <a href='mailto:{$emailhelpdesk}' class='mainpage'>{$emailhelpdesk}</a>.</div>"; } // User Message $tool_content .= "<div class='alert alert-success'>" . ($prof ? $langDearProf : $langDearUser) . "!<br />{$success}</div><p>{$infoprof}<br /><br />{$click} <a href='{$urlServer}' class='mainpage'>{$langHere}</a> {$langBackPage}</p>"; } else { $hmac = token_generate($username . $usermail . $request_id); //----------------------------- Email Verification ----------------------- $subject = $langMailVerificationSubject; $MailMessage = sprintf($mailbody1 . $langMailVerificationBody1, $urlServer . 'modules/auth/mail_verify.php?h=' . $hmac . '&rid=' . $request_id); $emailhelpdesk = get_config('email_helpdesk'); $emailAdministrator = get_config('email_sender');
} else { if (count($roots) == 1) { header("Location:" . $urlServer . "modules/auth/courses.php?fc=" . intval($roots[0])); exit; } else { $tool_content .= $tree->buildNodesNavigationHtml($tree->buildRootsArray(), 'opencourses'); } } } else { // department exists $numofcourses = getdepnumcourses($fc); if (count($tree->buildRootsArray()) > 1) { $tool_content .= $tree->buildRootsSelectForm($fc); } $tool_content .= "<form action='{$_SERVER['SCRIPT_NAME']}' method='post'>"; $tool_content .= "<table class='table-default'>\n <tr><th><a name='top'></a>{$langFaculty}: " . $tree->getFullPath($fc, false, $_SERVER['SCRIPT_NAME'] . '?fc=') . "\n </th></tr></table><br />"; if ($numofcourses > 0) { $tool_content .= expanded_faculte($fc, $uid); $tool_content .= "<br /><div align='right'><input class='btn btn-primary' type='submit' name='submit' value='{$langRegistration}' /> </div>"; } else { $tool_content .= $tree->buildDepartmentChildrenNavigationHtml($fc, 'courses'); $subTrees = $tree->buildSubtrees(array($fc)); if (count($subTrees) <= 1) { // is leaf $tool_content .= "<br /><div class=alert1>{$langNoCoursesAvailable}</div>\n"; } } $tool_content .= "</form>"; } // end of else (department exists) }
*/ require_once '../../include/baseTheme.php'; header('Content-Type: application/json; charset=utf-8'); if (!isset($_REQUEST['nodeid'])) { exit(); } $nodeid = intval($_REQUEST['nodeid']); if ($nodeid <= 0) { exit(); } require_once 'include/lib/hierarchy.class.php'; $tree = new Hierarchy(); $fullpath = $tree->getFullPath($nodeid); if (strlen($fullpath) <= 0) { exit(); } $data = array( "nodefullpath" => $fullpath ); echo json_encode($data); exit();
$row = Database::get()->querySingle("SELECT course.code as code, course.title as title , course.prof_names as prof_names, course.visible as visible FROM course WHERE course.code = ?s", $_GET['c']); // Display course information and link to edit $tool_content .= "<table class='table-default'> <th colspan='2'>" . $langCourseInfo . " ".icon('fa-gear',$langModify, "infocours.php?c=" . q($c) . "")."</th>"; $departments = $course->getDepartmentIds($cId); $i = 1; foreach ($departments as $dep) { $thtitle = ($i == 1) ? $langFaculty . ':' : ''; $tool_content .= " <tr> <th width='250'>$thtitle</th> <td>" . $tree->getFullPath($dep) . "</td> </tr>"; $i++; } $tool_content .= " <tr> <th>$langCode:</th> <td>" . q($row->code) . "</td> </tr> <tr> <th><b>$langTitle:</b></th> <td>" . q($row->title) . "</td> </tr> <tr> <th><b>" . $langTutor . ":</b></th>
$q = "SELECT id, givenname, surname, username, email, faculty_id, phone, am, date_open, date_closed, comment FROM user_request WHERE (state = 2 AND status = $list_status)"; $q .= "ORDER BY date_open DESC"; $sql = Database::get()->queryArray($q); $tool_content .= "<div class='table-responsive'><table id = 'requests_table' class='table-default'>"; $tool_content .= table_header(1, $langDateClosed_small); foreach ($sql as $req) { $tool_content .= "<tr>"; $tool_content .= '<td>' . q($req->givenname) . " " . q($req->surname) . ""; $tool_content .= '<td>' . q($req->username) . '</td>'; $tool_content .= '<td>' . $tree->getFullPath($req->faculty_id) . '</td>'; $tool_content .= "<td align='center'> <small>" . nice_format(date('Y-m-d', strtotime($req->date_open))) . "</small></td>"; $tool_content .= "<td align='center'> <small>" . nice_format(date('Y-m-d', strtotime($req->date_closed))) . "</small></td>"; $tool_content .= "<td class='option-btn-cell'>"; $tool_content .= action_button(array( array('title' => $langRestore, 'url' => "$_SERVER[SCRIPT_NAME]?id=$req->id&show=closed$reqtype", 'icon' => 'fa-retweet'))); $tool_content .= "</td></tr>"; } $tool_content .= "</table></div>"; } // -----------------------------------
break; case COURSE_OPEN: $icon = 'lock_open'; $title = $langOpenCourse; break; case COURSE_INACTIVE: $icon = 'lock_inactive'; $title = $langInactiveCourse; break; } $departments = $course->getDepartmentIds($logs->id); $i = 1; $dep = ''; foreach ($departments as $department) { $br = $i < count($departments) ? '<br/>' : ''; $dep .= $tree->getFullPath($department) . $br; $i++; } // Add links to course users, delete course and course edit $icon_content = icon('fa-user', $langUsers, "listusers.php?c={$logs->id}") . " "; if (!isDepartmentAdmin()) { $icon_content .= icon('fa-list', $langUsersLog, "../usage/displaylog.php?c={$logs->id}&from_admin=TRUE") . " "; } $icon_content .= icon('fa-edit', $langEdit, "editcours.php?c={$logs->code}") . " "; $icon_content .= icon('fa-times', $langDelete, "delcours.php?c={$logs->id}"); $data['aaData'][] = array('0' => $course_title, '1' => icon_old_style($icon, $title), '2' => $dep, '3' => $icon_content); } echo json_encode($data); exit; } load_js('tools.js');
mkdir($restoreThis, 0755, true); archiveTables($course_id, $course_code, $restoreThis); recurse_copy($webDir . '/courses/' . $course_code, $restoreThis . '/html'); register_posted_variables(array( 'course_code' => true, 'course_lang' => true, 'course_title' => true, 'course_desc' => true, 'course_vis' => true, 'course_prof' => true), 'all'); create_restored_course($tool_content, $restoreThis, $course_code, $course_lang, $course_title, $course_desc, $course_vis, $course_prof); $course_code = $currentCourseCode; // revert course code to the correct value } else { $desc = Database::get()->querySingle("SELECT description FROM course WHERE id = ?d", $course_id)->description; $old_deps = array(); Database::get()->queryFunc("SELECT department FROM course_department WHERE course = ?d", function ($dep) use ($treeObj, &$old_deps) { $old_deps[] = array('name' => $treeObj->getFullPath($dep->department)); }, $course_id); $tool_content = course_details_form($public_code, $currentCourseName, $titulaires, $currentCourseLanguage, null, $visible, $desc, $old_deps); } load_js('jstree3'); list($js, $html) = $treeObj->buildCourseNodePicker(); $head_content .= $js; draw($tool_content, 2, null, $head_content);
$courses = $ruleInput = ''; } $tree = new Hierarchy(); list($jsTree, $htmlTree) = $tree->buildUserNodePicker(array('defaults' => $department, 'multiple' => true)); // The following code is modified from Hierarchy::buildJSNodePicker() $options = array('defaults' => $deps, 'where' => 'AND node.allow_course = true'); $joptions = json_encode($options); $htmlTreeCourse = "<div id='nodCnt2'>"; $i = 0; foreach ($deps as $dep) { $htmlTreeCourse .= "<p id='nc_$i'> <input type='hidden' name='rule_deps[]' value='$dep'>" . $tree->getFullPath($dep) . " <a href='#nodCnt2'><span class='fa fa-times' data-toggle='tooltip' data-original-title='".q($langNodeDel)."' data-placement='top' title='".q($langNodeDel)."'></span></a></p>"; $i++; } $htmlTreeCourse .= "</div> <div><p><a id='ndAdd2' href='#add'><span class='fa fa-plus' data-toggle='tooltip' data-placement='top' title='".q($langNodeAdd)."'></i></a></p></div> <div class='modal fade' id='treeCourseModal' tabindex='-1' role='dialog' aria-labelledby='treeModalLabel' aria-hidden='true'> <div class='modal-dialog'> <div class='modal-content'> <div class='modal-header'> <button type='button' class='close treeCourseModalClose'><span aria-hidden='true'>×</span><span class='sr-only'>$langCancel</span></button> <h4 class='modal-title' id='treeCourseModalLabel'>" . q($langNodeAdd) . "</h4> </div> <div class='modal-body'> <div id='js-tree-course'></div> </div>
// This is needed in case the user decides to switch language. if (isset($fc)) { $_SESSION['fc_memo'] = $fc; } else { $fc = $_SESSION['fc_memo']; } $fac = Database::get()->querySingle("SELECT name FROM hierarchy WHERE id = ?d", $fc)->name; if (!($fac = $fac[0])) { die("ERROR: no faculty with id {$fc}"); } // use the following array for the legend icons $icons = array(2 => "<img src='{$themeimg}/lock_open.png' alt='" . $langOpenCourse . "' title='" . $langOpenCourse . "' width='16' height='16' />", 1 => "<img src='{$themeimg}/lock_registration.png' alt='" . $langRegCourse . "' title='" . $langRegCourse . "' width='16' height='16' />", 0 => "<img src='{$themeimg}/lock_closed.png' alt='" . $langClosedCourse . "' title='" . $langClosedCourse . "' width='16' height='16' />"); if (count($tree->buildRootsArray()) > 1) { $tool_content .= $tree->buildRootsSelectForm($fc); } $tool_content .= "<table class='table table-striped table-bordered table-hover'>\n <tr>\n <th><a name='top'></a>{$langFaculty}: <b>" . $tree->getFullPath($fc, false, $_SERVER['SCRIPT_NAME'] . '?fc=') . "</b></th>\n </tr>\n </table>"; $tool_content .= $tree->buildDepartmentChildrenNavigationHtml($fc, 'opencourses', $countCallback); $queryCourseIds = ''; $queryExtraSelect = ''; $queryExtraJoin = ''; $queryExtraJoinWhere = ''; $runQuery = true; if ($isInOpenCoursesMode) { // find subnode's certified opencourses $opencourses = array(); Database::get()->queryFunc("SELECT course.id, course.code\n FROM course, course_department, course_review\n WHERE course.id = course_department.course\n AND course.id = course_review.course_id\n AND course_department.department = ?d\n AND course_review.is_certified = 1", function ($course) use(&$opencourses) { $opencourses[$course->id] = $course->code; }, $fc); // construct comma seperated string with open courses ids $commaIds = ""; $i = 0;
$q1 = Database::get()->query("INSERT INTO user_request SET givenname = ?s, surname = ?s, username = ?s, password = ?s, email = ?s, faculty_id = ?d, phone = ?s, am = ?s, state = 1, status = ?d, verified_mail = ?d, date_open = " . DBHelper::timeAfter() . ", comment = ?s, lang = ?s, request_ip = ?s", $givenname_form, $surname_form, $uname, $password, $email, $depid, $userphone, $am, $status, $verified_mail, $usercomment, $language, $_SERVER['REMOTE_ADDR']); $request_id = $q1->lastInsertID; // email does not need verification -> mail helpdesk if (!$email_verification_required) { $emailAdministrator = get_config('email_sender'); $emailhelpdesk = get_config('email_helpdesk'); // send email $MailMessage = $mailbody1 . $mailbody2 . "$givenname_form $surname_form\n\n" . $mailbody3 . $mailbody4 . $mailbody5 . "$mailbody6\n\n" . "$langFaculty: " . $tree->getFullPath($depid) . " \n$langComments: $usercomment\n" . "$langProfUname : $uname\n$langProfEmail : $email\n" . "$contactphone : $userphone\n\n\n$logo\n\n"; if (!send_mail($siteName, $emailAdministrator, $gunet, $emailhelpdesk, $mailsubject, $MailMessage, $charset, "Reply-To: $email")) { $tool_content .= "<div class='alert alert-warning'>$langMailErrorMessage <a href='mailto:$emailhelpdesk'>$emailhelpdesk</a></div>"; draw($tool_content, 0); exit(); } $tool_content .= "<div class='alert alert-success'>$greeting,<br />$success<br /></div><p>$infoprof</p><br /> <p>« <a href='$urlServer'>$langBack</a></p>"; } else { // email needs verification -> mail user $hmac = token_generate($uname . $email . $request_id); $emailhelpdesk = get_config('email_helpdesk');
// department exists $numofcourses = getdepnumcourses($fc); $tool_content .= action_bar(array( array('title' => $langBack, 'url' => $urlServer, 'icon' => 'fa-reply', 'level' => 'primary-label', 'button-class' => 'btn-default') ),false); if (count($roots) > 1) { $tool_content .= $tree->buildRootsSelectForm($fc); } $tool_content .= "<form action='$_SERVER[SCRIPT_NAME]' method='post'>"; $tool_content .= "<ul class='list-group'> <li class='list-group-item list-header'><a name='top'></a>$langFaculty: " . $tree->getFullPath($fc, false, $_SERVER['SCRIPT_NAME'] . '?fc=') . " </li>"; $tool_content .= $tree->buildDepartmentChildrenNavigationHtml($fc, 'courses'); $subTrees = $tree->buildSubtrees(array($fc)); $tool_content .= "</ul></form>"; if ($numofcourses > 0) { $tool_content .= expanded_faculte($fc, $uid); $tool_content .= "<br /><div align='right'><input class='btn btn-primary' type='submit' name='submit' value='$langRegistration'> </div>"; } else { $tool_content .= "<div class='alert alert-warning text-center'>- $langNoCourses -</div>\n"; } } // end of else (department exists) } $tool_content .= "<script type='text/javascript'>$(course_list_init);
validateCourseNodes($cId, isDepartmentAdmin()); $toolName = $langCourseEdit; $navigation[] = array('url' => 'index.php', 'name' => $langAdmin); $navigation[] = array('url' => 'listcours.php', 'name' => $langListCours); $tool_content .= action_bar(array(array('title' => $langBack, 'url' => "searchcours.php", 'icon' => 'fa-reply', 'level' => 'primary-label'))); // A course has been selected if (isset($c)) { // Get information about selected course $row = Database::get()->querySingle("SELECT course.code as code, course.title as title , course.prof_names as prof_names, course.visible as visible\n\t\t FROM course\n\t\t WHERE course.code = ?s", $_GET['c']); // Display course information and link to edit $tool_content .= "<table class='table-default'>\n <th colspan='2'>" . $langCourseInfo . " " . icon('fa-gear', $langModify, "infocours.php?c=" . q($c) . "") . "</th>"; $departments = $course->getDepartmentIds($cId); $i = 1; foreach ($departments as $dep) { $thtitle = $i == 1 ? $langFaculty . ':' : ''; $tool_content .= "\n <tr>\n <th width='250'>{$thtitle}</th>\n <td>" . $tree->getFullPath($dep) . "</td>\n </tr>"; $i++; } $tool_content .= "\n <tr>\n\t <th>{$langCode}:</th>\n\t <td>" . q($row->code) . "</td>\n\t</tr>\n\t<tr>\n\t <th><b>{$langTitle}:</b></th>\n\t <td>" . q($row->title) . "</td>\n\t</tr>\n\t<tr>\n\t <th><b>" . $langTutor . ":</b></th>\n\t <td>" . q($row->prof_names) . "</td>\n\t</tr>\n\t</table>"; // Display course quota and link to edit $tool_content .= "<table class='table-default'>\n\t<th colspan='2'>{$langQuota} " . icon('fa-gear', $langModify, "quotacours.php?c=" . q($c) . "") . "\n\t<tr>\n\t <td colspan='2'><div class='sub_title1'>{$langTheCourse} " . q($row->title) . " {$langMaxQuota}</div></td>\n\t </tr>"; // Get information about course quota $q = Database::get()->querySingle("SELECT code, title, doc_quota, video_quota, group_quota, dropbox_quota\n\t\t\tFROM course WHERE code=?s", $c); $dq = format_file_size($q->doc_quota); $vq = format_file_size($q->video_quota); $gq = format_file_size($q->group_quota); $drq = format_file_size($q->dropbox_quota); $tool_content .= "\n\t<tr>\n\t <td>{$langLegend} <b>{$langDoc}</b>:</td>\n\t <td>" . $dq . "</td>\n\t</tr>"; $tool_content .= "\n\t<tr>\n\t <td>{$langLegend} <b>{$langVideo}</b>:</td>\n\t <td>" . $vq . "</td>\n\t</tr>"; $tool_content .= "\n\t<tr>\n\t <td width='250'>{$langLegend} <b>{$langGroups}</b>:</td>\n\t <td>" . $gq . "</td>\n\t</tr>"; $tool_content .= "\n\t<tr>\n\t <td>{$langLegend} <b>{$langDropBox}</b>:</td>\n\t <td>" . $drq . "</td>\n\t</tr>";