diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index 1b6d6a88..6c90baed 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -1859,7 +1859,8 @@ manager_user VARCHAR(20), manager_ip VARCHAR(15), event_datestamp TIMESTAMP NOT NULL, tcid_link INT(9) UNSIGNED, -index (user) +index (user), +index (event_epoch) ) ENGINE=MyISAM; CREATE TABLE vicidial_timeclock_status ( @@ -3802,4 +3803,4 @@ UPDATE vicidial_configuration set value='1766' where name='qc_database_version'; UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1470',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1471',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/extras/upgrade_2.12.sql b/extras/upgrade_2.12.sql index fe7f2c0b..59f28b7d 100644 --- a/extras/upgrade_2.12.sql +++ b/extras/upgrade_2.12.sql @@ -716,3 +716,7 @@ ALTER TABLE system_settings MODIFY label_comments VARCHAR(60) default ''; ALTER TABLE vicidial_campaigns ADD allow_required_fields ENUM('Y','N') default 'N'; UPDATE system_settings SET db_schema_version='1470',db_schema_update_date=NOW() where db_schema_version < 1470; + +CREATE INDEX vtl_event_epoch on vicidial_timeclock_log (event_epoch); + +UPDATE system_settings SET db_schema_version='1471',db_schema_update_date=NOW() where db_schema_version < 1471; diff --git a/www/vicidial/timeclock_report.php b/www/vicidial/timeclock_report.php index f14be2a5..7520e74b 100644 --- a/www/vicidial/timeclock_report.php +++ b/www/vicidial/timeclock_report.php @@ -1,7 +1,7 @@ LICENSE: AGPLv2 +# Copyright (C) 2016 Matt Florell LICENSE: AGPLv2 # # CHANGES # @@ -27,6 +27,7 @@ # 141114-0028 - Finalized adding QXZ translation to all admin files # 141230-0948 - Added code for on-the-fly language translations display # 160714-2348 - Added and tested ChartJS features for more aesthetically appealing graphs +# 161019-2253 - Added screen colors # $startMS = microtime(); @@ -69,7 +70,7 @@ $db_source = 'M'; ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,webroot_writable,enable_languages,language_method FROM system_settings;"; +$stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,webroot_writable,enable_languages,language_method,admin_screen_colors FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {$MAIN.="$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -83,6 +84,7 @@ if ($qm_conf_ct > 0) $webroot_writable = $row[4]; $SSenable_languages = $row[5]; $SSlanguage_method = $row[6]; + $SSadmin_screen_colors = $row[7]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -288,6 +290,72 @@ while ($i < $user_groups_to_print) $i++; } + +$SSmenu_background='015B91'; +$SSframe_background='D9E6FE'; +$SSstd_row1_background='9BB9FB'; +$SSstd_row2_background='B9CBFD'; +$SSstd_row3_background='8EBCFD'; +$SSstd_row4_background='B6D3FC'; +$SSstd_row5_background='A3C3D6'; +$SSalt_row1_background='BDFFBD'; +$SSalt_row2_background='99FF99'; +$SSalt_row3_background='CCFFCC'; + +if ($SSadmin_screen_colors != 'default') + { + $stmt = "SELECT menu_background,frame_background,std_row1_background,std_row2_background,std_row3_background,std_row4_background,std_row5_background,alt_row1_background,alt_row2_background,alt_row3_background,web_logo FROM vicidial_screen_colors where colors_id='$SSadmin_screen_colors';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($DB) {echo "$stmt\n";} + $colors_ct = mysqli_num_rows($rslt); + if ($colors_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $SSmenu_background = $row[0]; + $SSframe_background = $row[1]; + $SSstd_row1_background = $row[2]; + $SSstd_row2_background = $row[3]; + $SSstd_row3_background = $row[4]; + $SSstd_row4_background = $row[5]; + $SSstd_row5_background = $row[6]; + $SSalt_row1_background = $row[7]; + $SSalt_row2_background = $row[8]; + $SSalt_row3_background = $row[9]; + $SSweb_logo = $row[10]; + } + } +$Mhead_color = $SSstd_row5_background; +$Mmain_bgcolor = $SSmenu_background; +$Mhead_color = $SSstd_row5_background; + +$selected_logo = "./images/vicidial_admin_web_logo.png"; +$selected_small_logo = "./images/vicidial_admin_web_logo.png"; +$logo_new=0; +$logo_old=0; +$logo_small_old=0; +if (file_exists('./images/vicidial_admin_web_logo.png')) {$logo_new++;} +if (file_exists('vicidial_admin_web_logo_small.gif')) {$logo_small_old++;} +if (file_exists('vicidial_admin_web_logo.gif')) {$logo_old++;} +if ($SSweb_logo=='default_new') + { + $selected_logo = "./images/vicidial_admin_web_logo.png"; + $selected_small_logo = "./images/vicidial_admin_web_logo.png"; + } +if ( ($SSweb_logo=='default_old') and ($logo_old > 0) ) + { + $selected_logo = "./vicidial_admin_web_logo.gif"; + $selected_small_logo = "./vicidial_admin_web_logo_small.gif"; + } +if ( ($SSweb_logo!='default_new') and ($SSweb_logo!='default_old') ) + { + if (file_exists("./images/vicidial_admin_web_logo$SSweb_logo")) + { + $selected_logo = "./images/vicidial_admin_web_logo$SSweb_logo"; + $selected_small_logo = "./images/vicidial_admin_web_logo$SSweb_logo"; + } + } + + ##### START HTML ##### $HEADER.="\n"; @@ -545,9 +613,9 @@ if (!$report_display_type || $report_display_type=="TEXT") $i = $hours_split[1]; if (preg_match("/1$|3$|5$|7$|9$/i", $j)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor='bgcolor="#'.$SSstd_row3_background.'"';} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor='bgcolor="#'.$SSstd_row4_background.'"';} $MAIN.="\n"; $MAIN.="$j\n"; diff --git a/www/vicidial/timeclock_status.php b/www/vicidial/timeclock_status.php index b40a6ade..cdc44403 100644 --- a/www/vicidial/timeclock_status.php +++ b/www/vicidial/timeclock_status.php @@ -1,7 +1,7 @@ LICENSE: AGPLv2 +# Copyright (C) 2016 Matt Florell LICENSE: AGPLv2 # # CHANGES # @@ -22,6 +22,7 @@ # 140108-0719 - Added webserver and hostname to report logging # 141007-2216 - Finalized adding QXZ translation to all admin files # 141229-1853 - Added code for on-the-fly language translations display +# 161019-2254 - Added screen colors # #header ("Content-type: text/html; charset=utf-8"); @@ -56,7 +57,7 @@ $db_source = 'M'; ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,webroot_writable,timeclock_end_of_day,enable_languages,language_method FROM system_settings;"; +$stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,webroot_writable,timeclock_end_of_day,enable_languages,language_method,admin_screen_colors FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {$MAIN.="$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -71,6 +72,7 @@ if ($qm_conf_ct > 0) $timeclock_end_of_day = $row[5]; $SSenable_languages = $row[6]; $SSlanguage_method = $row[7]; + $SSadmin_screen_colors = $row[8]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -287,6 +289,72 @@ if (strlen($user_group) > 0) $group_name = $row[0]; } + +$SSmenu_background='015B91'; +$SSframe_background='D9E6FE'; +$SSstd_row1_background='9BB9FB'; +$SSstd_row2_background='B9CBFD'; +$SSstd_row3_background='8EBCFD'; +$SSstd_row4_background='B6D3FC'; +$SSstd_row5_background='A3C3D6'; +$SSalt_row1_background='BDFFBD'; +$SSalt_row2_background='99FF99'; +$SSalt_row3_background='CCFFCC'; + +if ($SSadmin_screen_colors != 'default') + { + $stmt = "SELECT menu_background,frame_background,std_row1_background,std_row2_background,std_row3_background,std_row4_background,std_row5_background,alt_row1_background,alt_row2_background,alt_row3_background,web_logo FROM vicidial_screen_colors where colors_id='$SSadmin_screen_colors';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($DB) {echo "$stmt\n";} + $colors_ct = mysqli_num_rows($rslt); + if ($colors_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $SSmenu_background = $row[0]; + $SSframe_background = $row[1]; + $SSstd_row1_background = $row[2]; + $SSstd_row2_background = $row[3]; + $SSstd_row3_background = $row[4]; + $SSstd_row4_background = $row[5]; + $SSstd_row5_background = $row[6]; + $SSalt_row1_background = $row[7]; + $SSalt_row2_background = $row[8]; + $SSalt_row3_background = $row[9]; + $SSweb_logo = $row[10]; + } + } +$Mhead_color = $SSstd_row5_background; +$Mmain_bgcolor = $SSmenu_background; +$Mhead_color = $SSstd_row5_background; + +$selected_logo = "./images/vicidial_admin_web_logo.png"; +$selected_small_logo = "./images/vicidial_admin_web_logo.png"; +$logo_new=0; +$logo_old=0; +$logo_small_old=0; +if (file_exists('./images/vicidial_admin_web_logo.png')) {$logo_new++;} +if (file_exists('vicidial_admin_web_logo_small.gif')) {$logo_small_old++;} +if (file_exists('vicidial_admin_web_logo.gif')) {$logo_old++;} +if ($SSweb_logo=='default_new') + { + $selected_logo = "./images/vicidial_admin_web_logo.png"; + $selected_small_logo = "./images/vicidial_admin_web_logo.png"; + } +if ( ($SSweb_logo=='default_old') and ($logo_old > 0) ) + { + $selected_logo = "./vicidial_admin_web_logo.gif"; + $selected_small_logo = "./vicidial_admin_web_logo_small.gif"; + } +if ( ($SSweb_logo!='default_new') and ($SSweb_logo!='default_old') ) + { + if (file_exists("./images/vicidial_admin_web_logo$SSweb_logo")) + { + $selected_logo = "./images/vicidial_admin_web_logo$SSweb_logo"; + $selected_small_logo = "./images/vicidial_admin_web_logo$SSweb_logo"; + } + } + + $HEADER.="\n"; $HEADER.="\n"; $HEADER.="\n"; @@ -316,13 +384,13 @@ $subcamp_color = '#C6C6C6'; $MAIN.="
\n"; -$MAIN.="
\n"; +$MAIN.="\n"; -$MAIN.="
\n"; $MAIN.=""._QXZ("Timeclock Status for")." $user_group            \n"; $MAIN.=""._QXZ("TIMECLOCK REPORT")." | "; $MAIN.=""._QXZ("USER GROUP")."\n"; $MAIN.="
  \n"; +$MAIN.="
  \n"; $MAIN.="
\n"; $MAIN.="\n"; @@ -392,7 +460,7 @@ while ($users_to_print > $o) { $total_login_time = 0; ##### grab timeclock status record for this user ##### - $stmt="SELECT event_epoch,event_date,status,ip_address from vicidial_timeclock_status where user='$users[$o]' and event_epoch >= '$EoD';"; + $stmt="SELECT event_epoch,event_date,status,ip_address from vicidial_timeclock_status where user='$users[$o]' and event_epoch >= '$EoD' limit 1;"; if ($DB>0) {$MAIN.="|$stmt|";} $rslt=mysql_to_mysqli($stmt, $link); $stats_to_print = mysqli_num_rows($rslt); @@ -405,13 +473,13 @@ while ($users_to_print > $o) $Tip_address[$o] = $row[3]; if ( ($row[2]=='START') or ($row[2]=='LOGIN') ) - {$bgcolor[$o]='bgcolor="#B9CBFD"';} + {$bgcolor[$o]='bgcolor="#'. $SSstd_row3_background .'"';} else - {$bgcolor[$o]='bgcolor="#9BB9FB"';} + {$bgcolor[$o]='bgcolor="#'. $SSstd_row3_background .'"';} } ##### grab timeclock logged-in time for each user ##### - $stmt="SELECT event,event_epoch,login_sec from vicidial_timeclock_log where user='$users[$o]' and event_epoch >= '$EoD';"; + $stmt="SELECT event,event_epoch,login_sec from vicidial_timeclock_log where user='$users[$o]' and event_epoch >= '$EoD' order by user;"; if ($DB>0) {$MAIN.="|$stmt|";} $rslt=mysql_to_mysqli($stmt, $link); $logs_to_parse = mysqli_num_rows($rslt); @@ -623,143 +691,4 @@ $rslt=mysql_to_mysqli($stmt, $link); exit; - - - - - - - - - - -##### vicidial_timeclock log records for user ##### - -$SQday_ARY = explode('-',$begin_date); -$EQday_ARY = explode('-',$end_date); -$SQepoch = mktime(0, 0, 0, $SQday_ARY[1], $SQday_ARY[2], $SQday_ARY[0]); -$EQepoch = mktime(23, 59, 59, $EQday_ARY[1], $EQday_ARY[2], $EQday_ARY[0]); - -$MAIN.="

\n"; - -$MAIN.="
\n"; - -$MAIN.=""._QXZ("TIMECLOCK LOGIN/LOGOUT TIME").":\n"; -$MAIN.="\n"; -$MAIN.="\n"; - - $stmt="SELECT event,event_epoch,user_group,login_sec,ip_address,timeclock_id,manager_user from vicidial_timeclock_log where user='" . mysqli_real_escape_string($link, $user) . "' and event_epoch >= '$SQepoch' and event_epoch <= '$EQepoch';"; - if ($DB>0) {$MAIN.="|$stmt|";} - $rslt=mysql_to_mysqli($stmt, $link); - $events_to_print = mysqli_num_rows($rslt); - - $total_logs=0; - $o=0; - while ($events_to_print > $o) { - $row=mysqli_fetch_row($rslt); - if ( ($row[0]=='START') or ($row[0]=='LOGIN') ) - {$bgcolor='bgcolor="#B9CBFD"';} - else - {$bgcolor='bgcolor="#9BB9FB"';} - - $TC_log_date = date("Y-m-d H:i:s", $row[1]); - - $manager_edit=''; - if (strlen($row[6])>0) {$manager_edit = ' * ';} - - if (preg_match('/LOGIN/', $row[0])) - { - $login_sec=''; - $MAIN.=""; - $MAIN.=""; - $MAIN.=""; - $MAIN.="\n"; - $MAIN.="\n"; - $MAIN.="\n"; - $MAIN.="\n"; - } - if (preg_match('/LOGOUT/', $row[0])) - { - $login_sec = $row[3]; - $total_login_time = ($total_login_time + $login_sec); - $event_hours = ($login_sec / 3600); - $event_hours_int = round($event_hours, 2); - $event_hours_int = intval("$event_hours_int"); - $event_minutes = ($event_hours - $event_hours_int); - $event_minutes = ($event_minutes * 60); - $event_minutes_int = round($event_minutes, 0); - if ($event_minutes_int < 10) {$event_minutes_int = "0$event_minutes_int";} - $MAIN.=""; - $MAIN.=""; - $MAIN.=""; - $MAIN.="\n"; - $MAIN.="\n"; - $MAIN.="\n"; - $MAIN.="\n"; - } - $o++; - } -if (strlen($login_sec)<1) - { - $login_sec = ($STARTtime - $row[1]); - $total_login_time = ($total_login_time + $login_sec); - } -$total_login_hours = ($total_login_time / 3600); -$total_login_hours_int = round($total_login_hours, 2); -$total_login_hours_int = intval("$total_login_hours"); -$total_login_minutes = ($total_login_hours - $total_login_hours_int); -$total_login_minutes = ($total_login_minutes * 60); -$total_login_minutes_int = round($total_login_minutes, 0); -if ($total_login_minutes_int < 10) {$total_login_minutes_int = "0$total_login_minutes_int";} - -$MAIN.=""; -$MAIN.="\n"; -$MAIN.="\n"; -$MAIN.="\n"; -$MAIN.="\n"; -$MAIN.="\n"; - -$MAIN.="
"._QXZ("ID")." "._QXZ("EDIT")." "._QXZ("EVENT")." "._QXZ("DATE")." "._QXZ("IP ADDRESS")." "._QXZ("GROUP").""._QXZ("HOURS:MINUTES")."
$row[5]$manager_edit$row[0] $TC_log_date $row[4] $row[2]
$row[5]$manager_edit$row[0] $TC_log_date $row[4] $row[2] $event_hours_int:$event_minutes_int
"._QXZ("TOTAL")." $total_login_hours_int:$total_login_minutes_int
\n"; - - - - - - - -$ENDtime = date("U"); - -$RUNtime = ($ENDtime - $STARTtime); - -$MAIN.="\n\n\n


\n\n"; - - -$MAIN.="\n\n\n


\n"._QXZ("script runtime").": $RUNtime "._QXZ("seconds")."|$db_source
"; - -$MAIN.="
\n"; -$MAIN.="\n"; -$MAIN.="\n"; - -if ($db_source == 'S') - { - mysqli_close($link); - $use_slave_server=0; - $db_source = 'M'; - require("dbconnect_mysqli.php"); - } - -$endMS = microtime(); -$startMSary = explode(" ",$startMS); -$endMSary = explode(" ",$endMS); -$runS = ($endMSary[0] - $startMSary[0]); -$runM = ($endMSary[1] - $startMSary[1]); -$TOTALrun = ($runS + $runM); - -$stmt="UPDATE vicidial_report_log set run_time='$TOTALrun' where report_log_id='$report_log_id';"; -if ($DB) {echo "|$stmt|\n";} -$rslt=mysql_to_mysqli($stmt, $link); - -exit; - - ?>