✏️ 正在编辑: NotifyParents.php
路径:
/home/eblama1/sms.karnplayinland.com/modules/Custom/NotifyParents.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php require_once 'ProgramFunctions/Template.fnc.php'; require_once 'ProgramFunctions/SendEmail.fnc.php'; require_once 'ProgramFunctions/Substitutions.fnc.php'; // This was a quick hack to email parents who were assigned accounts but had never logged in // Warning: the passwords associated to the accounts will be reset DrawHeader( ProgramTitle() ); if ( $_REQUEST['modfunc'] === 'save' ) { // If $test email is set then this script will only 'go through the motions' // and email the results to the $test_email address instead of parents. $test_email = issetVal( $_REQUEST['test_email'] ); // Set the from and cc emails here - the emails can be comma separated list of emails. $reply_to = ''; if ( filter_var( User( 'EMAIL' ), FILTER_VALIDATE_EMAIL ) ) { $reply_to = User( 'NAME' ) . ' <' . User( 'EMAIL' ) . '>'; } elseif ( ! filter_var( $test_email, FILTER_VALIDATE_EMAIL ) ) { $error[] = _( 'You must set the <b>test mode email</b> or have a user email address to use this script.' ); ErrorMessage( $error, 'fatal' ); } $subject = _( 'New Parent Account' ); if ( isset( $_REQUEST['inputnotifyparentstext'] ) ) { SaveTemplate( $_REQUEST['inputnotifyparentstext'] ); } $message = GetTemplate(); if ( ! empty( $_REQUEST['staff'] ) ) { $st_list = implode( ',', array_map( 'intval', $_REQUEST['staff'] ) ); $extra['SELECT'] = "," . DisplayNameSQL( 's' ) . " AS NAME,s.USERNAME,s.PASSWORD,s.EMAIL"; $extra['WHERE'] = " AND s.STAFF_ID IN (" . $st_list . ")"; $RET = GetStaffList( $extra ); //echo '<pre>'; var_dump($RET); echo '</pre>'; $LO_result = [ 0 => [] ]; $i = 0; foreach ( (array) $RET as $staff ) { $staff_id = $staff['STAFF_ID']; // Use big random number for parent password generation. $password = $staff['USERNAME'] . rand( 1, 9999999999 ); $password_encrypted = encrypt_password( $password ); DBQuery( "UPDATE staff SET PASSWORD='" . $password_encrypted . "' WHERE STAFF_ID='" . (int) $staff_id . "'" ); $students_RET = DBGet( "SELECT " . DisplayNameSQL( 's' ) . " AS FULL_NAME FROM students s,student_enrollment sse,students_join_users sju WHERE sju.STAFF_ID='" . (int) $staff_id . "' AND s.STUDENT_ID=sju.STUDENT_ID AND sse.STUDENT_ID=sju.STUDENT_ID AND sse.SYEAR='" . UserSyear() . "' AND sse.END_DATE IS NULL" ); //echo '<pre>'; var_dump($students_RET); echo '</pre>'; $student_list = ''; foreach ( (array) $students_RET as $student ) { $student_list .= $student['FULL_NAME'] . "\r"; } $substitutions = [ '__PARENT_NAME__' => $staff['NAME'], '__ASSOCIATED_STUDENTS__' => $student_list, '__SCHOOL_ID__' => SchoolInfo( 'TITLE' ), '__USERNAME__' => $staff['USERNAME'], '__PASSWORD__' => $password, ]; $msg = SubstitutionsTextMake( $substitutions, $message ); $to = empty( $test_email ) ? $staff['EMAIL'] : $test_email; $result = SendEmail( $to, $subject, $msg, $reply_to ); $LO_result[] = [ 'PARENT' => $staff['FULL_NAME'], 'USERNAME' => $staff['USERNAME'], 'EMAIL' => $to, 'RESULT' => $result ? _( 'Success' ) : _( 'Fail' ), ]; $i++; } unset( $LO_result[0] ); $columns = [ 'PARENT' => _( 'Parent' ), 'USERNAME' => _( 'Username' ), 'EMAIL' => _( 'Email' ), 'RESULT' => _( 'Result' ), ]; ListOutput( $LO_result, $columns, 'Notification Result', 'Notification Results', false, [], [ 'save' => false, 'search' => false, 'sort' => false ] ); // Unset staff, inputnotifyparentstext & redirect URL. RedirectURL( [ 'staff', 'inputnotifyparentstext' ] ); } else { $error[] = _( 'You must choose at least one user' ); // Unset modfunc, staff, inputnotifyparentstext & redirect URL. RedirectURL( [ 'modfunc', 'staff', 'inputnotifyparentstext' ] ); } } echo ErrorMessage( $error ); if ( ! $_REQUEST['modfunc'] || $_REQUEST['search_modfunc'] === 'list' ) { if ( $_REQUEST['search_modfunc'] === 'list' ) { echo '<form action="' . URLEscape( 'Modules.php?modname=' . $_REQUEST['modname'] . '&modfunc=save' ) . '" method="POST">'; $extra['header_right'] = SubmitButton( _( 'Notify Selected Parents' ) ); $extra['extra_header_left'] = '<table class="width-100p">'; $template = GetTemplate(); $extra['extra_header_left'] .= '<tr class="st"><td>' . '<textarea name="inputnotifyparentstext" id="inputnotifyparentstext" cols="97" rows="5">' . $template . '</textarea>' . FormatInputTitle( _( 'New Parent Account' ) . ' - ' . _( 'Email Text' ), 'inputnotifyparentstext' ) . '<br /><br /></td></tr>'; $substitutions = [ '__PARENT_NAME__' => _( 'Parent Name' ), '__ASSOCIATED_STUDENTS__' => _( 'Associated Students' ), '__SCHOOL_ID__' => _( 'School' ), '__USERNAME__' => _( 'Username' ), '__PASSWORD__' => _( 'Password' ), ]; $extra['extra_header_left'] .= '<tr class="st"><td class="valign-top">' . SubstitutionsInput( $substitutions ) . '<hr></td></tr>'; $extra['extra_header_left'] .= '<tr class="st"><td>' . _( 'Test Mode' ) . ':<br />' . TextInput( '', 'test_email', _( 'Email' ), 'maxlength=255 type="email" placeholder="' . AttrEscape( _( 'Email' ) ) . '" size="24"', false ) . '</td></tr>'; $extra['extra_header_left'] .= '</table>'; } $extra['SELECT'] = ",s.STAFF_ID AS CHECKBOX,s.USERNAME,s.EMAIL"; $extra['SELECT'] .= ",(SELECT COUNT(st.STUDENT_ID) FROM students st,student_enrollment sse,students_join_users sju WHERE sju.STAFF_ID=s.STAFF_ID AND st.STUDENT_ID=sju.STUDENT_ID AND sse.STUDENT_ID=sju.STUDENT_ID AND sse.SYEAR='" . UserSyear() . "' AND sse.END_DATE IS NULL) AS ASSOCIATED"; $extra['WHERE'] = " AND s.LAST_LOGIN IS NULL"; $extra['functions'] = [ 'CHECKBOX' => '_makeChooseCheckbox', 'ASSOCIATED' => '_makeAssociated', 'EMAIL' => '_makeEmail', ]; $extra['columns_before'] = [ 'CHECKBOX' => MakeChooseCheckbox( 'required', '', 'staff' ) ]; $extra['columns_after'] = [ 'ASSOCIATED' => _( 'Associated Students' ), 'USERNAME' => _( 'Username' ), 'EMAIL' => _( 'Email' ), ]; $extra['link'] = [ 'FULL_NAME' => false ]; $extra['profile'] = 'parent'; $extra['search_title'] = _( 'Find Parents who never logged in' ); $extra['new'] = true; Search( 'staff_id', $extra ); if ( $_REQUEST['search_modfunc'] === 'list' ) { echo '<br /><div class="center">' . SubmitButton( _( 'Notify Selected Parents' ) ) . '</div>'; echo '</form>'; } } /** * Make Choose Checkbox * * Local function * DBGet() callback * * @uses MakChooseCheckbox * * @param string $value STAFF_ID value. * @param string $column 'CHECKBOX'. * * @return string Checkbox or empty string if no Email or has no Children */ function _makeChooseCheckbox( $value, $column ) { global $THIS_RET; if ( ! empty( $THIS_RET['USERNAME'] ) && filter_var( $THIS_RET['EMAIL'], FILTER_VALIDATE_EMAIL ) && $THIS_RET['ASSOCIATED'] > 0 ) { return MakeChooseCheckbox( $value, $column ); } else { return ''; } } /** * Make Associated Students * * Local function * DBGet() callback * * @since 4.3 * * @param string $value Number of Associated students. * @param string $column 'ASSOCIATED'. * @return string Number or 0 in red plus link to Associate Students with Parents program. */ function _makeAssociated( $value, $column ) { global $THIS_RET; if ( $value > 0 || isset( $_REQUEST['_ROSARIO_PDF'] ) ) { return $value; } $link = ''; if ( AllowEdit( 'Users/AddStudents.php' ) ) { // Link to Associate Students with Parents program. $link = ' <a href="' . URLEscape( 'Modules.php?modname=Users/AddStudents.php&staff_id=' . $THIS_RET['STAFF_ID'] ) . '">' . _( 'Associate Students with Parents' ) . '</a>'; } return '<span style="color:red">' . $value . '</span>' . $link; } /** * Make Email address * * Local function * DBGet() callback * * @since 4.3 * * @param string $value Parent email address. * @param string $column 'EMAIL'. * @return string Email address or red cross plus link to User Info program. */ function _makeEmail( $value, $column ) { global $THIS_RET; if ( filter_var( $value, FILTER_VALIDATE_EMAIL ) || isset( $_REQUEST['_ROSARIO_PDF'] ) ) { return $value; } if ( ! $value ) { $return = button( 'x' ); } else { $return = '<span style="color:red">' . $value . '</span>'; } if ( AllowEdit( 'Users/User.php' ) ) { // Link to User Info program. $return .= ' <a href="' . URLEscape( 'Modules.php?modname=Users/User.php&staff_id=' . $THIS_RET['STAFF_ID'] ) . '">' . _( 'User Info' ) . '</a>'; } return $return; }
💾 保存文件
← 返回文件管理器