foreach ($result as $myrow) { $data['aaData'][] = array('0' => date('d-m-Y', strtotime($myrow->date)), '1' => '<a href="' . $_SERVER['SCRIPT_NAME'] . '?course=' . $course_code . '&an_id=' . $myrow->id . '">' . q($myrow->title) . '</a>'); } } echo json_encode($data); exit; } load_js('tools.js'); //check if Datables code is needed if (!isset($_GET['addAnnounce']) && !isset($_GET['modify']) && !isset($_GET['an_id'])) { load_js('datatables'); load_js('datatables_filtering_delay'); $head_content .= "<script type='text/javascript'>\n \$(document).ready(function() {\n var oTable = \$('#ann_table{$course_id}').dataTable ({\n " . ($is_editor ? "'aoColumnDefs':[{'sClass':'option-btn-cell', 'aTargets':[-1]}]," : "") . "\n 'bStateSave': true,\n 'bProcessing': true,\n 'bServerSide': true,\n 'sScrollX': true,\n 'responsive': true,\n 'sAjaxSource': '{$_SERVER['REQUEST_URI']}',\n 'aLengthMenu': [\n [10, 15, 20 , -1],\n [10, 15, 20, '{$langAllOfThem}'] // change per page values here\n ],\n 'fnDrawCallback': function( oSettings ) {\n popover_init();\n \$('#ann_table8_filter label input').attr({\n class : 'form-control input-sm',\n placeholder : '{$langSearch}...'\n });\n},\n 'sPaginationType': 'full_numbers',\n 'bSort': false,\n 'oLanguage': {\n 'sLengthMenu': '{$langDisplay} _MENU_ {$langResults2}',\n 'sZeroRecords': '" . $langNoResult . "',\n 'sInfo': '{$langDisplayed} _START_ {$langTill} _END_ {$langFrom2} _TOTAL_ {$langTotalResults}',\n 'sInfoEmpty': '{$langDisplayed} 0 {$langTill} 0 {$langFrom2} 0 {$langResults2}',\n 'sInfoFiltered': '',\n 'sInfoPostFix': '',\n 'sSearch': '',\n 'sUrl': '',\n 'oPaginate': {\n 'sFirst': '«',\n 'sPrevious': '‹',\n 'sNext': '›',\n 'sLast': '»'\n }\n }\n }).fnSetFilteringDelay(1000);\n \$(document).on( 'click','.delete_btn', function (e) {\n e.preventDefault();\n var row_id = \$(this).data('id');\n bootbox.confirm('{$langSureToDelAnnounce}', function(result) {\n if(result) { \n \$.ajax({\n type: 'POST',\n url: '',\n datatype: 'json',\n data: {\n action: 'delete', \n value: row_id\n },\n success: function(data){\n var num_page_records = oTable.fnGetData().length;\n var per_page = oTable.fnPagingInfo().iLength;\n var page_number = oTable.fnPagingInfo().iPage;\n if(num_page_records==1){\n if(page_number!=0) {\n page_number--;\n }\n }\n console.log(page_number);\n oTable.fnPageChange(page_number);\n },\n error: function(xhr, textStatus, error){\n console.log(xhr.statusText);\n console.log(textStatus);\n console.log(error);\n }\n });\n \$.ajax({\n type: 'POST',\n url: '{$urlAppend}/modules/search/idxasync.php'\n });\n } \n }); \n });\n \$(document).on( 'click','.vis_btn', function (g) {\n g.preventDefault();\n var vis = \$(this).data('vis');\n var row_id = \$(this).data('id');\n \$.ajax({\n type: 'POST',\n url: '',\n datatype: 'json',\n data: {\n action: 'visible', \n value: row_id, \n visible: vis\n },\n success: function(data){\n var page_number = oTable.fnPagingInfo().iPage;\n var per_page = oTable.fnPagingInfo().iLength\n oTable.fnPageChange(page_number);\n },\n error: function(xhr, textStatus, error){\n console.log(xhr.statusText);\n console.log(textStatus);\n console.log(error);\n }\n });\n \$.ajax({\n type: 'POST',\n url: '{$urlAppend}/modules/search/idxasync.php'\n });\n });\n \$('.success').delay(3000).fadeOut(1500);\n \$('.dataTables_filter input').attr('placeholder', '{$langTitle}');\n });\n </script>"; } ModalBoxHelper::loadModalBox(); $public_code = course_id_to_public_code($course_id); $toolName = $langAnnouncements; if (isset($_GET['an_id'])) { !$is_editor ? $student_sql = "AND visible = '1' AND start_display<=CURDATE() AND stop_display>=CURDATE()" : ($student_sql = ""); $row = Database::get()->querySingle("SELECT * FROM announcement WHERE course_id = ?d AND id = " . intval($_GET['an_id']) . " " . $student_sql, $course_id); if (empty($row)) { redirect_to_home_page("modules/announcements/"); } } if ($is_editor) { $head_content .= '<script type="text/javascript">var langEmptyGroupName = "' . $langEmptyAnTitle . '";</script>'; $displayForm = true; /* up and down commands */ if (isset($_GET['down'])) { $thisAnnouncementId = $_GET['down']; $sortDirection = "DESC";
/** * @brief send emails to course prof * @global type $langSendingMessage * @global type $langHeaderMessage * @global type $langContactIntro * @param type $course_id * @param type $content * @param type $from_name * @param type $from_address * @return type */ function email_profs($course_id, $content, $from_name, $from_address) { global $langSendingMessage, $langHeaderMessage, $langContactIntro; $title = course_id_to_title($course_id); $ret = "<div class='alert alert-info'>$langSendingMessage $title</div>"; $public_code = course_id_to_public_code($course_id); $profs = Database::get()->queryArray("SELECT user.id AS prof_uid, user.email AS email, user.surname, user.givenname FROM course_user JOIN user ON user.id = course_user.user_id WHERE course_id = ?d AND course_user.status = " . USER_TEACHER . "", $course_id); $message = sprintf($langContactIntro, $from_name, $from_address, $content); $subject = "$langHeaderMessage ($public_code - $title)"; foreach ($profs as $prof) { if (!get_user_email_notification_from_courses($prof->prof_uid) or (!get_user_email_notification($prof->prof_uid, $course_id))) { continue; } else { $to_name = $prof->givenname . ' ' . $prof->surname; $ret .= "<div class='alert alert-success'>" . icon('fa-university') . " " . q($to_name) . "</div>"; if (!send_mail($from_name, $from_address, $to_name, $prof->email, $subject, $message, $GLOBALS['charset'])) { $ret .= "<div class='alert alert-warning'>$GLOBALS[langErrorSendingMessage]</div>"; } } } return $ret; }