From 6c0b9b7e8a6323c0a995785ecdd70d61ff8b8563 Mon Sep 17 00:00:00 2001 From: mattf Date: Wed, 6 Jul 2016 18:44:43 +0000 Subject: [PATCH] Started process to redesign the Agent Screen, added Screen Colors definitions, removed san-serif fonts, changed loading/login/logout screens, logging of browser width/height. git-svn-id: svn://192.168.202.10@2558 3d104415-ff17-0410-8863-d5cf3c621b8a --- UPGRADE | 4 + www/agc/css/style.css | 2 + www/agc/images/vicidial_admin_web_logo.png | Bin 0 -> 6252 bytes www/agc/options-example.php | 4 +- www/agc/vdc_db_query.php | 173 +- www/agc/vicidial-grey.php | 18539 +++++++++++++++++++ www/agc/vicidial.php | 462 +- 7 files changed, 18914 insertions(+), 270 deletions(-) create mode 100644 www/agc/images/vicidial_admin_web_logo.png create mode 100644 www/agc/vicidial-grey.php diff --git a/UPGRADE b/UPGRADE index 5b859f06..ef420172 100644 --- a/UPGRADE +++ b/UPGRADE @@ -270,6 +270,10 @@ OTHER CHANGES: 72. Added the ability to copy audio store files with a new name +73. Started process to redesign the Agent Screen, added Screen Colors + definitions, removed san-serif fonts, changed loading/login/logout + screens, logging of browser width/height. + diff --git a/www/agc/css/style.css b/www/agc/css/style.css index d50fe805..bbe14745 100644 --- a/www/agc/css/style.css +++ b/www/agc/css/style.css @@ -17,6 +17,7 @@ div.text_input { overflow: auto; font-size: 10px; font-family: sans-serif; } .log_title { font-size: 12px; font-family: monospace; font-weight: bold; } .sd_text { font-size: 16px; font-family: sans-serif; font-weight: bold; } .sh_text { font-size: 14px; font-family: sans-serif; font-weight: bold; } +.sh_text_white { font-size: 14px; font-family: sans-serif; font-weight: bold; color: white;} .sb_text { font-size: 12px; font-family: sans-serif; } .sk_text { font-size: 11px; font-family: sans-serif; } .skb_text { font-size: 13px; font-family: sans-serif; font-weight: bold; } @@ -24,6 +25,7 @@ div.text_input { overflow: auto; font-size: 10px; font-family: sans-serif; } .OFF_conf { font-size: 11px; font-family: monospace; color: black; background: #FFCC77; } .cust_form { font-family: sans-serif; font-size: 10px; overflow: hidden; } .cust_form_text { font-family: sans-serif; font-size: 10px; overflow: auto; } +.loading_text { font-family: sans-serif; font-size: 20px; overflow: auto; } .blink { -webkit-animation: blink .75s linear infinite; diff --git a/www/agc/images/vicidial_admin_web_logo.png b/www/agc/images/vicidial_admin_web_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a06ebe405cdbcf635dc80e68f1f7880773c60a85 GIT binary patch literal 6252 zcmZu$cQjnz_Z1NmjOfuLOmst-h%$&6Eqd?0_b#Ic5iJOU7%fJkj3CPBHHh9@#zgce zLzK}b+IK#G|9bi-`S;i|dwK3)Fwk%Fba^b!56Tw>Ws_Y1O~0?K-vJ=x1^LwvW_s6r*6x zmX-?qRzJ%Si#<$ou;`WD*4q@I+Q*Uvui<0wv$Zo-HrXtquDx#qtX#D!>xU{kF0N;l zYGacLZ2O(rcIPiserja3*`?P3qd{pl$w>uNycjR4iQnv>P?LrMmm6t9@{zI{neJAx z8vvSW%1+#KKzMjJVCh)Zqw1g)vw;|T&{QN5DUv3h%T=_1|y)eB!7B6AK@wc^tESr6uu5+{F@8GYx&HbMpS5AMMvA@$jSD)lRYzJ$F zqi&Z@lRlp&S%024nj0Q)c0QLJ)OjBK#`t=l2{nt$&Nud~O&s*M-t7fzMjZ605ua#X zMynY;8LW^nU$Cs8Jvl}L&x80fqQ)GOzIth`r<4iL}|0F57VOaIfZnu^qq z=Phutowt01tk_iC!sG6B;I4*$h3He8K1*Pgu(MM1tFc9J$o&Itju-ZW0UFbYqN0M- zi1lJ6D8$F*b)ECrvR~^YI2jISk-IpS$A|K6AA5X^in?W2!=zP8_q1@cJC0+uMEL44 zM&_kwp!J2*!;9Z3ey(6s4pZU#0Z+MGSkLiRxqq!BAcXPX3QEk`815 z005YwW>@nwj(bgr&T{_n;)*0jL0MUO0vtGdy87a6CP{($<-y#Z!u6K6w?OE`r(K&@ zih$_xp58Bz(8w={^~&0mc4?^}lf^2Nf%%h@x~J{!sTvX}M1H@p-+ca4s2z*ji%0om z#X`{b9x}VfCmVhiY-2u$dZdU<+J*7m%w==mT8J$r_ZNl^ch{iFxm~;Q@sjhuuR!UlTk#0h8Tx_G z9#iEI<(G>5PyQxDRMU(Pf!ivzhJFqG+35Hj5Hi{bV~EHwYqIE!udw#U2+P8*5yDNcb-&e zg9B#q{@e;q6_~+TC-reO%GH#zfPe^K`=5qL4^c%fz+2Z(d_0G5qNZJ^m-baYKm!!} zMS=8vP+bkN=Ba;|{Wqb}o%lh+OQwNaydf|9G_aqYaU)QAt|tK5FKHTPgdZnP6MO7Y zkZ1Q^m8lGwjB(A-;&+(E_hk;4uh&W^+NJAL9wD!y(iEn_^pE2Z>os39lccEcF5~bM zCwQglnVHKXnpyB>F|x$f<=+B+0(F7IbrnCi4@8a3cl;jBRVmg0^c!aqI=l=W_%^-+xNN2a&BVu;`V^Xp$&KmDCwICv~WTtFU=rc3}g z<+B*YV1Q9nAESF z88U>3Yu&0$I4c}SYM^-rVzEdh)7z+?6;A5A)a0>c73J1G5|jppO49~;TE>GBelKf+ zEJd)Xy?<0o_1FE#@nIZ2qThrlbm@ItEn)3)ml5)sfKe>1;j{r;$_b8HB_Xj(+Y@u` zp{y%!x#4@bo}sym#{8HN;WhTak6KoexVtB+l8>mrem79GwB>iz7pG@An}Qhz&2JIcbr@J-`t z&Gb~JW&Io!6sT0}oRQkPZ(iF&Io(^jFya*GpxZn2r~E`%b9~#LMtO`kUXW3aE-$^; z!$?IBe7(EmwU%VP%_r48y64q#ISXoOB*kAxvaTjs@2pmZx+N|E4Qa$ZZHRe@IV;sB z(uTP$I>KUea+qt;LM1ie8&G3zON(?%YimOP8dFOYj~i2qZhBe2cAkxo4|S=Ky%{5c z7%QBvjCuQ+SlR9E?4qHNl=N}?4?k-yy`DvM7S7EX{reY!o8W&W=2@Am9f?SjhtL!+wgOdt_)Ap(y;se-Gh>o9 zPxT`Q_p+&ubc*;%$TMT#vnspq8jolUz+aV)U|D1M^%_azHPUoM+8C&Q936(G$c3F! z>|vGPknP|19d5vsms{q5o2FQd8F+2DHUY?A73R|YsSllDFeXF8G)HCvLYlLwba25{ z7R}$+dwVY}KtO(Y)ta!OhYr18GaIbE41b9a3ya}XCsfsSZm4)aD~ zV>21*vL0JX_)c~rFb z@{_ok#qPy?7DzWxBBU9O$muV1AvO*+vfxj5YbfTF`RY-C&Qs#C4ryg)Vp=}lo@Q!E z8Qyq7uN2+Qxwq#@;Fzh!MNM~e)`-r|Z|Wvlu?_Dhvw^SqxDvS1fsdrv9@kxWiCdq@$vBlVWYP8eL@yO73NZ-trc232~jJZ&VvL;3)*v6@aQ9v zc2(T3jPh+2sIBTfFZdVhv%i{{nu_jO;rkE@ zu;gV-dIAYc^WPk^-I7KCX;S-gK7O=#bjt&yJPjsMXzFl4l5~L7zjH2cV=0aWG52IENCUhPNz)J?RD$UXD7jnecT~8Cj;vfwxh3}7=njDtS82Y^yfeNd+8!xz0WL6T{B4wJ2QDB z&RhH|%v{*}+RaHRveG;T@=w)rP)$&2?mJ>~>l*u2tcCQ){R*oV*$DN zg9Q5BRsx6qySOlZA0Q=hb}A+&_8ncfNhrIRh8oXMLqsCNT?PI`A5$yU0BJO*zk{;}TGHYZIqxpj5a4f<&6g0i zqyIF1)>gTn%Vgd+{n1D@Kf3Dtu3Zc=LVj{Pkw;b`=sI2hI4|)~8TB;PFwd z2#si2?qv-8rA*R2#L3J!X+l{&t`dl{AI)?yWvmsNUTk+YyxsC;vA^_T1#g&L6`vR& zFW%P`Z2r|+DOcO8+G)OO2Mg!a6)&sG+TJ49+s}!Km17l-%0Yv@+vNIU&gL?oW^9Ac zWoad=QfJ=!+9y3vXLD5lit<^WAc~2JfpVqY$*>Z9ua^$Y)8aKWG=#NV5xCc@F;^9M z6eYK;cUtiH?)T0*&kHr1P|vRZ+pj#Fc+$Bz)GA*Zq31+rBpX;1i8SKkE3wdGT?og0 ztLj&y4D-K!wINO0;x8f^6K?*^8y{*oXAMY~+KgEiAG@{hc63Jc;XZAwo?>F!^fsRl zGh)jhUTrvfwLk9NEOa%+ohS7$Uk^vN^e(=_2cI@`wE5)>W=(4n4j1Lq;8~27Zn0A4 zsz72{wz0McBm7jI7ocqoQU&U7p1E+H_#Y)aZfe7)y5X#43c-_bK%J5y3W|f`;L>qTcyoMP$A(M#X^PpByTT)OfJSGhJw82 zQ!b(5?|VVh3oX~VPZ~WcRy#u7qz>yw;Co(sWp-zO;j9H^WCTp9N4{ROZ(jYZu8Yrz z6pv4zgzeO^lT;+Vy7$!mXs$!5j_KNXC>K_4w}wNjkOP=MNbgaj!`B;rwy5Il%*#5QkBm%YG`BShhEg6kOA%p;fz`YR@m0=teoH%4s5CQJewQg-(P2{Q2Y4Y@tNk zB}%!ov*Y6JE_m^V1J)EZR*70)5~)le21Ia#mj(6gKa$1agMN3uUn7fr()$j8TSkH&bEXv9igw!YOTg7L+Ltf?nf*hxn0KDZ9z@w8$ zbTaZ|+vVyP1_#S;>`c~wx~)Rxl9b}cA&X;wIOHG1i905@+xJr;Ci$Gl^18vAwash< z$H_rQM+XMatl4c{Q>sP~VL!4cRMm;B*2D^Cg^Ka)={ddrTVG%0^p!RMc-D z+Ar|FXDz77zDBF9FXg&_2o1F6o9heT zW(!IxDg;uX!IO?EE+;=&)$AV|X6NUZ z=mTRh%}RsP*cTmr!AfU2>KYoxF6|S95yRMHmIToUIfBfuht%pNRt;_hO=;yw!9pPw z88r|mJE}?5*E#*59u{5tFP~x-78bU4cH4?F&^2`pI^||5r_yBF;cacgK{Z^cJQtAb zmj*Y_fWu2%`|eMg)xPW>k_R_D#vhE04QkxlAs2&29fuY&twF+r)O{vyb&?U`W`gD0 za27azG45eWWo2@m^SGFtTuO_p-GI7F(j>c+|C<`Rtc|d(0A+l*i30%lO9N@XoyLk4?@~E%F@9+oK zHsV}fggb$@#E~n3wsDDhHPz~8?cW*|s`0~}0?`r>*C1mFXtg>GA2W`s#IM>A?C5Se z$^JFZ&|#faiSqRN(_8YS=}QWs6>+)V_k8;oQNL;{6Bia%$>(!$%n`>ixT zXdnXw55>V5>NO;kU?Ff-;0uAw7xRG*raaVlCuU|;-PL8#7EW?FYd+nO_5y~WB|=}( z1#D&jG#RDMD*%X#i)#vG@?;F!z@1k3%XRpmnwn)U&)TG=l%+F4(9!3jIsuW@?~>n- z{voF*t1B+%TO}VhntQuwLjbcOcuk+9G{ywjeZEWiu^Ic9m-_BkY))3pMk@Z6!9`!~ z&3M<*1KQcPgkj;#@UM<$BfUbqZ7(Af!khA!k6yk(=3}pKC%XG`->|McWR-J4NDxH= zAcW5OWdm&>v+2WG&5OsTv;yK5-DEGP$OXziMgPBHuK$LNab+=zRE$HLa4$flrlbX} IdSMg&Kfy<1>i_@% literal 0 HcmV?d00001 diff --git a/www/agc/options-example.php b/www/agc/options-example.php index a6ff9293..09273439 100644 --- a/www/agc/options-example.php +++ b/www/agc/options-example.php @@ -1,7 +1,7 @@ LICENSE: AGPLv2 +# Copyright (C) 2016 Matt Florell LICENSE: AGPLv2 # # rename this file to options.php for the settings here to go into effect # @@ -11,6 +11,7 @@ # 130903-2015 - Added window validation options # 131007-1346 - Added mrglock_ig_select_ct # 131121-1719 - Fixed defaults mismatched, HKuser_level and FORM_COLOR +# 160619-1010 - Added link_to_grey_version option # $conf_silent_prefix = '5'; # vicidial_conferences prefix to enter silently and muted for recording @@ -45,6 +46,7 @@ $conf_check_attempts = '3'; # number of attempts to try before loosing webserver $focus_blur_enabled = '0'; # set to 1 to enable the focus/blur enter key blocking(some IE instances have issues) $consult_custom_delay = '2'; # number of seconds to delay consultative transfers when custom fields are active $mrglock_ig_select_ct = '4'; # number of seconds to leave in-group select screen open if agent select is disabled +$link_to_grey_version = '1'; # show link to old grey version of agent screen at login screen, next to timeclock link $TEST_all_statuses = '0'; # TEST variable allows all statuses in dispo screen diff --git a/www/agc/vdc_db_query.php b/www/agc/vdc_db_query.php index d813e666..7e8b7fd6 100644 --- a/www/agc/vdc_db_query.php +++ b/www/agc/vdc_db_query.php @@ -406,10 +406,11 @@ # 160331-2130 - Fixed missing start and dispo call url variables, issue #938 # 160414-0944 - Added default_phone_code value instead of hard-coded '1' # 160510-0840 - Added callback_lead_status as dispo_call_url variable +# 160706-1437 - Added font styles to text in many places # -$version = '2.12-300'; -$build = '160510-0840'; +$version = '2.12-301'; +$build = '160706-1437'; $php_script = 'vdc_db_query.php'; $mel=1; # Mysql Error Log enabled = 1 $mysql_log_count=654; @@ -13082,20 +13083,20 @@ if ($ACTION == 'CALLLOGview') $u++; echo ""; echo "$u"; - echo "$ALLcall_date[$i]"; - echo " $ALLlength_in_sec[$i]\n"; - echo " $ALLstatus[$i]\n"; - echo " $ALLphone_code[$i] $phone_number_display \n"; - echo " $Allfirst_name[$i] $Alllast_name[$i] \n"; - echo " $ALLcampaign_id[$i] \n"; - echo " $ALLin_out[$i] \n"; - echo " $ALLalt_dial[$i] \n"; - echo " $ALLhangup_reason[$i] \n"; - echo " "._QXZ("INFO")." \n"; + echo "$ALLcall_date[$i]"; + echo " $ALLlength_in_sec[$i]\n"; + echo " $ALLstatus[$i]\n"; + echo " $ALLphone_code[$i] $phone_number_display \n"; + echo " $Allfirst_name[$i] $Alllast_name[$i] \n"; + echo " $ALLcampaign_id[$i] \n"; + echo " $ALLin_out[$i] \n"; + echo " $ALLalt_dial[$i] \n"; + echo " $ALLhangup_reason[$i] \n"; + echo " "._QXZ("INFO")." \n"; if ($manual_dial_filter > 0) - {echo " "._QXZ("DIAL")." \n";} + {echo " "._QXZ("DIAL")." \n";} else - {echo " "._QXZ("DIAL")." \n";} + {echo " "._QXZ("DIAL")." \n";} echo "\n"; } @@ -13395,7 +13396,7 @@ if ($ACTION == 'SEARCHRESULTSview') } if ($g < 1) - {echo ""._QXZ("No results found")."";} + {echo ""._QXZ("No results found")."";} $u=0; while ($g > $u) @@ -13411,24 +13412,24 @@ if ($ACTION == 'SEARCHRESULTSview') $u++; echo ""; echo "$u"; - echo "$ALLname[$i] \n"; - echo " $ALLphone_code[$i] $ALLphone_number[$i] \n"; - echo " $ALLstatus[$i] \n"; - echo " $ALLcall_date[$i] \n"; - echo " $ALLcity[$i] \n"; - echo " $ALLstate[$i]\n"; - echo " $ALLpostal_code[$i] \n"; - echo " "._QXZ("INFO")." \n"; + echo "$ALLname[$i] \n"; + echo " $ALLphone_code[$i] $ALLphone_number[$i] \n"; + echo " $ALLstatus[$i] \n"; + echo " $ALLcall_date[$i] \n"; + echo " $ALLcity[$i] \n"; + echo " $ALLstate[$i]\n"; + echo " $ALLpostal_code[$i] \n"; + echo " "._QXZ("INFO")." \n"; if ($inbound_lead_search < 1) { if ($manual_dial_filter > 0) - {echo " "._QXZ("DIAL")." \n";} + {echo " "._QXZ("DIAL")." \n";} else - {echo " "._QXZ("DIAL")." \n";} + {echo " "._QXZ("DIAL")." \n";} } else { - echo " "._QXZ("SELECT")." \n"; + echo " "._QXZ("SELECT")." \n"; } echo "\n"; } @@ -13442,7 +13443,7 @@ if ($ACTION == 'SEARCHRESULTSview') if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtL,'00381',$user,$server_ip,$session_name,$one_mysql_log);} } else - {echo ""._QXZ("No results found")."";} + {echo ""._QXZ("No results found")."";} echo ""; echo "
"; @@ -13753,16 +13754,16 @@ if ($ACTION == 'SEARCHCONTACTSRESULTSview') $u++; echo ""; echo "$u "; - echo " $ALLfirst[$i] \n"; - echo " $ALLlast[$i] \n"; - echo "   $ALLoffice_num[$i] \n"; - echo "   $ALLcell_num[$i] \n"; - echo "   $ALLother_num1[$i] \n"; - echo "   $ALLother_num2[$i] \n"; - echo " $ALLbu_name[$i] \n"; + echo " $ALLfirst[$i] \n"; + echo " $ALLlast[$i] \n"; + echo "   $ALLoffice_num[$i] \n"; + echo "   $ALLcell_num[$i] \n"; + echo "   $ALLother_num1[$i] \n"; + echo "   $ALLother_num2[$i] \n"; + echo " $ALLbu_name[$i] \n"; echo "\n"; echo ""; - echo "             "._QXZ("Dept:")." $ALLdepartment[$i]       "._QXZ("Group").": $ALLgroup_name[$i]       "._QXZ("Job:")." $ALLjob_title[$i]       "._QXZ("Location:")." $ALLlocation[$i]"; + echo "             "._QXZ("Dept:")." $ALLdepartment[$i]       "._QXZ("Group").": $ALLgroup_name[$i]       "._QXZ("Job:")." $ALLjob_title[$i]       "._QXZ("Location:")." $ALLlocation[$i]"; echo "\n"; } @@ -13837,11 +13838,11 @@ if ($ACTION == 'LEADINFOview') { $row=mysqli_fetch_row($rslt); echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; echo "
"._QXZ("Callback Status:")."   $row[0]
"._QXZ("Callback Lead Status:")."   $row[7]
"._QXZ("Callback Entry Time:")."   $row[1]
"._QXZ("Callback Trigger Time:")."   $row[2]
"._QXZ("Callback Comments:")."   $row[6]
"._QXZ("Callback Status:")."   $row[0]
"._QXZ("Callback Lead Status:")."   $row[7]
"._QXZ("Callback Entry Time:")."   $row[1]
"._QXZ("Callback Trigger Time:")."   $row[2]
"._QXZ("Callback Comments:")."   $row[6]
"; echo "
"; $hide_dial_links++; @@ -14065,17 +14066,17 @@ if ($ACTION == 'LEADINFOview') } ##### END check for postal_code and phone time zones if alert enabled - $INFOout .= ""._QXZ("Status:")."   $row[0]"; + $INFOout .= ""._QXZ("Status:")."   $row[0]"; if ( ($label_vendor_lead_code!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_vendor_lead_code:   $row[1]";} - $INFOout .= ""._QXZ("List ID:")."   $row[2]"; - $INFOout .= ""._QXZ("Timezone:")."   $row[3]"; - $INFOout .= ""._QXZ("Called Since Last Reset:")."   $row[4]"; + {$INFOout .= "$label_vendor_lead_code:   $row[1]";} + $INFOout .= ""._QXZ("List ID:")."   $row[2]"; + $INFOout .= ""._QXZ("Timezone:")."   $row[3]"; + $INFOout .= ""._QXZ("Called Since Last Reset:")."   $row[4]"; if ( ($label_phone_code!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_phone_code:   $row[5]";} + {$INFOout .= "$label_phone_code:   $row[5]";} if ( ($label_phone_number!='---HIDE---') or ($label_hide_field_logs=='N') ) { - $INFOout .= "$label_phone_number:   $row[6] -         "; + $INFOout .= "$label_phone_number:   $row[6] -         "; if ($hide_dial_links < 1) { if ($manual_dial_filter > 0) @@ -14087,41 +14088,41 @@ if ($ACTION == 'LEADINFOview') if ( ($label_phone_number=='---HIDE---') and ($hide_dial_links < 1) ) { if ($manual_dial_filter > 0) - {$INFOout .= ""._QXZ("Dial Link:")."   "._QXZ("DIAL")." ";} + {$INFOout .= ""._QXZ("Dial Link:")."   "._QXZ("DIAL")." ";} else - {$INFOout .= ""._QXZ("Dial Link:")."   "._QXZ(" DIAL ");} + {$INFOout .= ""._QXZ("Dial Link:")."   "._QXZ(" DIAL ");} } $INFOout .= ""; if ($inbound_lead_search > 0) - {$INFOout .= ""._QXZ("SELECT THIS LEAD")."";} + {$INFOout .= ""._QXZ("SELECT THIS LEAD")."";} if ( ($label_title!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_title:   $row[7]";} + {$INFOout .= "$label_title:   $row[7]";} if ( ($label_first_name!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_first_name:   $row[8]";} + {$INFOout .= "$label_first_name:   $row[8]";} if ( ($label_middle_initial!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_middle_initial:   $row[9]";} + {$INFOout .= "$label_middle_initial:   $row[9]";} if ( ($label_last_name!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_last_name:   $row[10]";} + {$INFOout .= "$label_last_name:   $row[10]";} if ( ($label_address1!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_address1:   $row[11]";} + {$INFOout .= "$label_address1:   $row[11]";} if ( ($label_address2!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_address2:   $row[12]";} + {$INFOout .= "$label_address2:   $row[12]";} if ( ($label_address3!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_address3:   $row[13]";} + {$INFOout .= "$label_address3:   $row[13]";} if ( ($label_city!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_city:   $row[14]";} + {$INFOout .= "$label_city:   $row[14]";} if ( ($label_state!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_state:   $row[15]";} + {$INFOout .= "$label_state:   $row[15]";} if ( ($label_province!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_province:   $row[16]";} + {$INFOout .= "$label_province:   $row[16]";} if ( ($label_postal_code!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_postal_code:   $row[17]";} - $INFOout .= "Country:   $row[18]"; + {$INFOout .= "$label_postal_code:   $row[17]";} + $INFOout .= "Country:   $row[18]"; if ( ($label_gender!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_gender:   $row[19]";} + {$INFOout .= "$label_gender:   $row[19]";} if ( ($label_alt_phone!='---HIDE---') or ($label_hide_field_logs=='N') ) { - $INFOout .= "$label_alt_phone:   $row[20] -         "; + $INFOout .= "$label_alt_phone:   $row[20] -         "; if ($hide_dial_links < 1) { if ($manual_dial_filter > 0) @@ -14132,17 +14133,17 @@ if ($ACTION == 'LEADINFOview') } $INFOout .= ""; if ( ($label_email!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_email:   $row[21]";} + {$INFOout .= "$label_email:   $row[21]";} if ( ($label_security_phrase!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_security_phrase:   $row[22]";} + {$INFOout .= "$label_security_phrase:   $row[22]";} if ( ($label_comments!='---HIDE---') or ($label_hide_field_logs=='N') ) - {$INFOout .= "$label_comments:   $row[23]";} + {$INFOout .= "$label_comments:   $row[23]";} if ($hide_call_log_info=='N') - {$INFOout .= ""._QXZ("Called Count:")."   $row[24]";} - $INFOout .= ""._QXZ("Last Local Call Time:")."   $row[25]"; - # $INFOout .= "Rank:   $row[26]"; - # $INFOout .= "Owner:   $row[27]"; - # $INFOout .= "Entry List ID:   $row[28]"; + {$INFOout .= ""._QXZ("Called Count:")."   $row[24]";} + $INFOout .= ""._QXZ("Last Local Call Time:")."   $row[25]"; + # $INFOout .= "Rank:   $row[26]"; + # $INFOout .= "Owner:   $row[27]"; + # $INFOout .= "Entry List ID:   $row[28]"; $entry_list_id = $row[28]; $CFoutput=''; @@ -14219,7 +14220,7 @@ if ($ACTION == 'LEADINFOview') } } - $INFOout .= "$A_field_name[$o]:   $A_field_value"; + $INFOout .= "$A_field_name[$o]:   $A_field_value"; $o++; } @@ -14387,15 +14388,15 @@ if ($ACTION == 'LEADINFOview') $u++; $NOTESout .= ""; $NOTESout .= "$u"; - $NOTESout .= "$ALLcall_date[$i]"; - $NOTESout .= " $ALLuser[$i]\n"; - $NOTESout .= " $ALLlength_in_sec[$i]\n"; - $NOTESout .= " $ALLstatus[$i]\n"; - $NOTESout .= " $ALLphone_code[$i] $phone_number_display \n"; - $NOTESout .= " $ALLcampaign_id[$i] \n"; - $NOTESout .= " $ALLin_out[$i] \n"; - $NOTESout .= " $ALLalt_dial[$i] \n"; - $NOTESout .= " $ALLhangup_reason[$i] \n"; + $NOTESout .= "$ALLcall_date[$i]"; + $NOTESout .= " $ALLuser[$i]\n"; + $NOTESout .= " $ALLlength_in_sec[$i]\n"; + $NOTESout .= " $ALLstatus[$i]\n"; + $NOTESout .= " $ALLphone_code[$i] $phone_number_display \n"; + $NOTESout .= " $ALLcampaign_id[$i] \n"; + $NOTESout .= " $ALLin_out[$i] \n"; + $NOTESout .= " $ALLalt_dial[$i] \n"; + $NOTESout .= " $ALLhangup_reason[$i] \n"; $NOTESout .= ""; $NOTESout .= ""; $NOTESout .= " $Allcall_notes[$i] "; @@ -14443,10 +14444,10 @@ if ($ACTION == 'LEADINFOview') $NOTESout .= ""; $NOTESout .= "$u"; - $NOTESout .= "   $row[3]"; - $NOTESout .= "   $row[4] \n"; - $NOTESout .= "   $row[7]\n"; - $NOTESout .= "   $row[5]\n"; + $NOTESout .= "   $row[3]"; + $NOTESout .= "   $row[4] \n"; + $NOTESout .= "   $row[7]\n"; + $NOTESout .= "   $row[5]\n"; $NOTESout .= "   $row[8] \n"; $NOTESout .= "\n"; $NOTESout .= ""; diff --git a/www/agc/vicidial-grey.php b/www/agc/vicidial-grey.php new file mode 100644 index 00000000..8e682bf9 --- /dev/null +++ b/www/agc/vicidial-grey.php @@ -0,0 +1,18539 @@ + LICENSE: AGPLv2 +# +# Other scripts that this application depends on: +# - vdc_db_query.php: Updates information in the database +# - manager_send.php: Sends manager actions to the DB for execution +# - conf_exten_check.php: time sync and status updater, calls in queue +# - vdc_script_display.php: displays script with variables +# - vdc_form_display.php: display custom fields form +# - vdc_email_display.php: display email interface +# - vdc_chat_display.php: display chat interface +# - agc_agent_manager_chat_interface.php: display internal chats +# +# CHANGELOG +# 50607-1426 - First Build of VICIDIAL web client basic login process finished +# 50628-1620 - Added some basic formatting and worked on process flow +# 50628-1715 - Startup variables mapped to javascript variables +# 50629-1303 - Added Login Closer in-groups selection box and vla update +# 50629-1530 - Rough layout for customer info form section and button links +# 50630-1453 - Rough Manual Dial/Hangup with customer info displayed +# 50701-1450 - Added vicidial_log entries on dial and hangup +# 50701-1634 - Added Logout function +# 50705-1259 - Added call disposition functionality +# 50705-1432 - Added lead info DB update function +# 50705-1658 - Added web form functionality +# 50706-1043 - Added call park and pickup functions +# 50706-1234 - Added Start/Stop Recording functionality +# 50706-1614 - Added conference channels display option +# 50711-1333 - Removed call check redundancy and fixed a span bug +# 50727-1424 - Added customer channel and participant present sensing/alerts +# 50804-1057 - Added SendDTMF function and reconfigured the transfer span +# 50804-1224 - Added Local and Internal Closer transfer functions +# 50804-1628 - Added Blind transfer, activated LIVE CALL image and fixed bugs +# 50804-1808 - Added button images for left buttons +# 50815-1151 - Added 3Way calling functions to Transfer-conf frame +# 50815-1602 - Added images and buttons for xfer functions +# 50816-1813 - Added basic autodial outbound call pickup functions +# 50817-1113 - Fixes to auto_dialing call receipt +# 50817-1234 - Added inbound call receipt capability +# 50817-1541 - Added customer time display +# 50818-1327 - Added stop-all-recordings-after-each-vicidial-call option +# 50818-1703 - Added pretty login section +# 50825-1200 - Modified form field lengths, added double-click dispositions +# 50831-1603 - Fixed customer time bug and fronter display bug for CLOSER +# 50901-1314 - Fixed CLOSER IN-GROUP Web Form bug +# 50903-0904 - Added preview-lead code for manual dialing +# 50904-0016 - Added ability to hangup manual dials before pickup +# 50906-1319 - Added override for filters on xfer calls, fixed login display bug +# 50909-1243 - Added hotkeys functionality for quick dispoing in auto-dial mode +# 50912-0958 - Modified hotkeys function, agent must have user_level >= 5 to use +# 50913-1212 - Added campaign_cid to 3rd party calls +# 50923-1546 - Modified to work with language translation +# 50926-1656 - Added campaign pull-down at login of active campaigns +# 50928-1633 - Added manual dial alternate number dial option +# 50930-1538 - Added session_id empty login failure and fixed 2 minor bugs +# 51004-1656 - Fixed recording filename bug and new Spanish translation +# 51020-1103 - Added campaign-specific recording control abilities +# 51020-1352 - Added Basic vicidial_agent_log framework +# 51021-1050 - Fixed custtime display and disable Enter/Return keypresses +# 51021-1718 - Allows for multi-line comments (changes \n to !N in database) +# 51110-1432 - Fixed non-standard http port issue +# 51111-1047 - Added vicidial_agent_log lead_id earlier for manual dial +# 51118-1305 - Activate multi-line comments from $multi_line_comments var +# 51118-1313 - Move Transfer DIV to a floating span to preserve 800x600 view +# 51121-1506 - Small PHP optimizations in many scripts and disabled globalize +# 51129-1010 - Added ability to accept calls from other VICIDIAL servers +# 51129-1254 - Fixed Hangups of other agents channels when customer hangs up +# 51208-1732 - Created user-first login that looks for default phone info +# 51219-1526 - Added variable framework for campaign and in-group scripts +# 51221-1200 - Added SCRIPT tab, layout and functionality +# 51221-1714 - Added auto-switch-to-SCRIPT-tab and auto-webform-popup +# 51222-1605 - Added VMail message blind transfer button to xfer-conf frame +# 51229-1028 - Added checks on web_form_address to allow for var in the DB value +# 60117-1312 - Added Transfer-conf frame toggle on button press +# 60208-1152 - Added DTMF-xfernumber preset links to xfer-conf frame +# 60213-1129 - Added vicidial_users.hotkeys_active for any user hotkeys +# 60213-1210 - Added ability to sort routing of calls by user_level +# 60214-0932 - Initial Callback calendar display framework +# 60214-1407 - Added ability to minimize the dispo screen to see info below +# 60215-1104 - Added ANYONE scheduled callbacks functionality +# 60410-1116 - Added persistant pause after dispo option and change dispo text +# - Added web form submit that opens new window with dispo on submit +# - Added PREVIOUS CALLBACK in customer info to flag callbacks +# - Added link to try to hangup the call again in the dispo screen +# - Added link noone-in-session screen to call agent phone again +# - Added link customer-hungup screen to go straight to dispo screen +# 60410-1532 - Added agent status and campaign calls dialing display option +# 60411-1547 - Add ability to set callback as USERONLY and some basic formatting +# 60413-1752 - Add basic USERONLY callback frame and listings +# 60414-1039 - Changed manual dial preview and alt dial checkboxes to spans +# - Added beta-level USERONLY callback functionality +# - Added beta-level manual dialing with lead insertion functionality +# 60415-1534 - Fixed manual dial lead preview and fixed manuald dial override bug +# 60417-1108 - Added capability to do alt-number-dialing in auto-dial mode +# - Changed several permissions to database-defined +# 60419-1529 - Prevent manual dial or callbacks when alt-dial lead not finished +# 60420-1647 - Fixed DiaLDiaLAltPhonE error, Call Agent Again DialControl error +# 60421-1229 - Check GET/POST vars lines with isset to not trigger PHP NOTICES +# 60424-1005 - Fixed Alt phone disabled bug for callbacks and manual dials +# 60426-1058 - Added vicidial_user setting for default blended check for CLOSER +# 60501-1008 - Added option to manual dial screen to manually lookup phone number +# 60503-1653 - Fixed agentonly_callback not-defined bug in scheduled callbacks screen +# 60504-1032 - Fixed manual dial display bug and transfer dispo alert bug +# - Fixed recording filename display to not overrun 25 characters +# 60510-1051 - Added Wrapup timer and wrapup message on wrapup screen after dispo +# 60608-1453 - Added CLOSER campaign allowable in-groups limitations +# 60609-1123 - Added add-number-to-DNC-list function and manual dial check DNC +# 60619-1047 - Added variable filters to close security holes for login form +# 60804-1710 - fixed scheduled CALLBK for other languages build +# 60808-1145 - Added consultative transfers with customer data +# 60808-2232 - Added campaign name to pulldown for login screen +# 60809-1603 - Added option to locally transfer consult xfers +# 60809-1732 - Added recheck of transferred channels before customer gone mesg +# 60810-1011 - Fixed CXFER leave 3way call bugs +# 60816-1602 - Added ALLCALLS recording delay option allcalls_delay +# 60816-1716 - Fixed customer time display bug and client DST setting +# 60821-1555 - Added option to omit phone_code on dialout of leads +# 60821-1628 - Added ALLFORCE recording option +# 60821-1643 - Added no_delete_sessions option to not delete sessions +# 60822-0512 - Changed phone number fields to be maxlength of 12 +# 60829-1531 - Made compatible with WeBRooTWritablE setting in dbconnect.php +# 60906-1152 - Added Previous CallBack info display span +# 60906-1715 - Allow for Local phone extension conferences +# 61004-1729 - Add ability to control volume per channel in "calls in this session" +# 61122-1341 - Added vicidial_user_groups allowed_campaigns restrictions +# 61122-1523 - Added more SCRIPT variables +# 61128-2229 - Added vicidial_live_agents and vicidial_auto_calls manual dial entries +# 61130-1617 - Added lead_id to MonitorConf for recording_log +# 61221-1212 - Changed width to 760 to better fit 800x600 screens, widened SCRIPT +# 70109-1128 - Fixed wrapup timer bug +# 70109-1635 - Added option for HotKeys automatically dialing next number in manual mode +# - Added option for alternate number dialing with hotkeys +# 70111-1600 - Added ability to use BLEND/INBND/*_C/*_B/*_I as closer campaigns +# 70118-1517 - Added vicidial_agent_log and vicidial_user_log logging of user_group +# 70201-1249 - Added FAST DIAL option for manually dialing, added UTF8 compatible code +# 70201-1703 - Fixed cursor bug for most text input fields +# 70202-1453 - Added first portions of Agent Pause Codes +# 70203-0108 - Finished Agent Pause Codes functionality +# 70203-0930 - Added dialed_number to webform output +# 70203-1010 - Added dialed_label to webform output +# 70206-1201 - Fixed allow_closers bug +# 70206-1332 - Added vicidial_recording_override users setting function +# 70212-1252 - Fixed small issue with CXFER +# 70213-1018 - Changed CXFER and AXFER to update customer information before transfer +# 70214-1233 - Added queuemetrics_log_id field for server_id in queue_log +# 70215-1240 - Added queuemetrics_log_id field for server_id in queue_log +# 70222-1617 - Changed queue_log PAUSE/UNPAUSE to PAUSEALL/UNPAUSEALL +# 70226-1252 - Added Mute/UnMute to agent screen +# 70309-1035 - Allow amphersands and questions marks in comments to pass through +# 70313-1052 - Allow pound signs(hash) in comments to pass through +# 70316-1406 - Moved the MUTE button to be accessible during a transfer/conf +# 70319-1446 - Added agent-deactive-display and disable customer info update functions +# 70319-1626 - Added option to allow agent logins to campaigns with no leads in the hopper +# 70320-1501 - Added option to allow retry of leave-3way-call from dispo screen +# 70322-1545 - Added sipsak display ability +# 70510-1319 - Added onUnload force Logout +# 70806-1530 - Added Presets Dial links above agent mute button +# 70823-2118 - Fixed XMLHTTPRequest, HotKeys and Scheduled Callbacks issues with MSIE +# 70828-1443 - Added source_id to output of SCRIPTtab-IFRAME and WEBFORM +# 71022-1427 - Added formatting of the customer phone number in the main status bar +# 71029-1848 - Changed CLOSER-type campaign to not use campaign_id restrictions +# 71101-1204 - Fixed bug in callback calendar with DST +# 71116-0957 - Added campaign_weight and calls_today to the vla table insertion +# 71120-1719 - Added XMLHTPRequest lookup of allowable campaigns for agents during login +# 71122-0256 - Added auto-pause notification +# 71125-1751 - Changed Transfer section to allow for selection of in-groups to send calls to +# 71127-0408 - Added height and width settings for easier modification of screen size +# 71129-2025 - restricted callbacks count and list to campaign only +# 71223-0318 - changed logging of closer calls +# 71226-1117 - added option to kick all calls from conference upon logout +# 80109-1510 - added gender select list +# 80116-1032 - added option on CLOSER-type campaigns to change in-groups when paused +# 80317-2106 - added recording override options for inbound group calls +# 80331-1433 - Added second transfer try for VICIDIAL transfers/hangups on manual dial calls +# 80402-0121 - Fixes for manual dial transfers on some systems +# 80407-2112 - Work on adding phone login load balancing across servers +# 80416-0559 - Added ability to log computer_ip at login, set the $PhonESComPIP variable +# 80428-0413 - UTF8 changes and testing +# 80505-0054 - Added multi-phones load-balanced alias option +# 80507-0932 - Fixed Script display bug (+ instead of space) +# 80519-1425 - Added calls in queue display +# 80523-1630 - Added Timeclock links +# 80625-0047 - Added U option for gender, added date/phone display options +# 80630-2210 - Added queue_log entries for Manual Dial +# 80703-0139 - Added alter customer phone permissions +# 80703-1106 - Added API functionality for Hangup and Dispo, added Agent Display Queue Count +# 80707-2325 - Added vicidial_id to recording_log for tracking of vicidial or closer log to recording +# 80709-0358 - Added Default alt phone dial hard-code option +# 80719-1147 - Changed recording and senddtmf conf prefix +# 80815-1014 - Added manual dial list restriction option +# 80823-2123 - Fixed form scroll for IE, added copy to clipboard(IE-only feature) +# 80831-0548 - Added Extended alt-dial-phone display information for non-manual calls +# 80909-1717 - Added support for campaign-specific DNC lists +# 80915-1754 - Rewrote leave-3way functions for external calling +# 81002-1908 - Fixed double-login bug in some conditions +# 81007-0945 - Added three_way_call_cid option for outbound 3way calls +# 81010-1047 - Fixed conf calling prefix to use settings, other 3way improvements +# 81011-1403 - Fixed bugs in leave3way when transferring a manual dial call +# 81012-1729 - Added INBOUND_MAN dial method to allow manual list dialing and inbound calls +# 81013-1644 - Fixed bug in leave 3way for manual dial fronters +# 81015-0405 - Fixed bug related to hangups on 3way calls +# 81016-0703 - Changed leave 3way to allow function at any time transfer-conf is available +# 81020-1501 - Fixed bugs in queue_log logging +# 81023-0411 - Added compatibility for dial-in agents using AGI, bug fixes +# 81030-0403 - Added option to force Pause Codes on PAUSE +# 81103-1427 - Added 3way call dial prefix +# 81104-0140 - Added mysql error logging capability +# 81104-1618 - Changed MySQL queries logging +# 81106-0411 - Changedthe campaign login list behaviour +# 81110-0057 - Changed Pause time to start new vicidial_agent_log on every pause +# 81110-1514 - Added hangup_all_non_reserved to fix non-Hangup bug +# 81119-1811 - webform backslash fix +# 81124-2213 - Fixes blind transfer bug +# 81209-1617 - Added campaign web form target option and web form address variables +# 81211-0422 - Fixed Manual dial agent_log bug +# 90102-1402 - Added time sync check notification +# 90115-0619 - Added ability to send Local Closer to AGENTDIRECT agent_only +# 90120-1719 - Added API pause/resume and number dial functionality +# 90126-2302 - Added Vtiger login option and agent alert option +# 90128-0230 - Added vendor_lead_code to API dial and manuald dial with lookup +# 90202-0148 - Added option to disable BLENDED checkbox +# 90209-0132 - Changed tab images and color scheme +# 90303-1145 - Fixed rare manual dial live hangup bug +# 90304-1333 - Added user-specific web vars option +# 90305-0917 - Added prefix-choice and group-alias options for calls coming from API +# 90307-1736 - Added Shift enforcement and manager override features +# 90315-1009 - Changed revision for new trunk 2.2.0 +# 90320-0309 - Fixed agent log bug when using wrapup time +# 90323-1555 - Initial call to agent phone now has campaign callerIDnumber +# 90408-0104 - Added Vtiger callback record ability +# 90508-0727 - Changed to PHP long tags +# 90511-1018 - Added restriction not allowing dialing into agent sessions from manual dial +# 90519-0635 - Fixed manual dial status and logging bug +# 90525-1012 - Fixed transfer issue of auto-received call after manual dial call +# 90529-0741 - Added nophone agent phone login that will not show any empty session alerts +# 90531-0635 - Added option to hide customer phone number +# 90611-1422 - Fixed multiple logging bugs +# 90628-0655 - Added Quick Transfer button and Preset Prepopulate option +# 90705-1400 - Added Agent view sidebar option +# 90706-1432 - Added Agent view transfer selection +# 90709-1649 - Fixed alt-number transfers and dispo variable reset for webform +# 90712-2304 - Added ADD-ALL group selection, view calls in queue, grab call from queue, requeue button +# 90717-0640 - Added dialed_label and dialed_number to script variables +# 90721-1114 - Added rank and owner as vicidial_list fields +# 90726-2012 - Added allow_alerts option +# 90729-0647 - Added agent_display_dialable_leads option +# 90730-0145 - Fixed bugs in re-queue and INBOUND_MAN with blended selected +# 90808-0117 - Fixed manual dial calls today bug, added last_state_change to vicidial_live_agents +# 90812-0046 - Added no-delete-sessions = 1 as default, unused sessions cleared out at timeclock end of day +# 90814-0829 - Moved mute button next to hotkeys button +# 90827-0133 - Reworked Script display code +# 90827-1549 - Added list script override option, original_phone_login variable +# 90831-1456 - Added active_agent_login_server option for servers +# 90908-1038 - Added DEAD call display +# 90909-0921 - Fixed park issues +# 90916-1144 - Added Second web form button, Answering Machine Message change +# 90917-1325 - Fixed script loading bug with customer webform at the same time +# 90920-2108 - Changed web forms to use window.open instead of traditional links(IE7 compatibility issue) +# 90923-1310 - Rolled back last change +# 90928-1955 - Added lead update before closer transfer +# 90930-2243 - Added Territory selection functions +# 91108-2118 - Added QM pause code entry +# 91111-1433 - Fixed Gender pulldown list display for IE, remove links for recording channels in SHOW CHANNELS +# 91123-1801 - Added code for outbound_autodial field +# 91130-2021 - Added code for manager override of in-group selection +# 91204-1638 - Added recording_filename and recording_id script variables and script refresh link +# 91205-2055 - Added CONSULTATIVE checkbox in a redesigned Transfer-Conf frame +# 91206-2020 - Fixed vicidial_agent_log logging bug on logout when not paused +# 91211-1412 - Added User custom variables and CRM login popup +# 91219-0657 - Set pause code automatically on ReQueue and INBOUND_MAN Dial-Next-Number +# 91228-1339 - Added API "fields update" functions and "timer action" functions +# 100103-1250 - Added 3 more conf-presets, list ID override presets and call start/dispo URLs +# 100107-0108 - Added dynamic screen size based on login screen browser dimensions +# 100109-0801 - Added ALTNUM alt number status, fixed alt number dialing from setting +# 100109-1338 - Fixed Manual dial live call detection +# 100116-0709 - Added presets to script and web form variables +# 100123-0954 - changes to AGENTDIRECT selection span +# 100131-2233 - Added functions to allow for a webphone loaded in a separate IFRAME +# 100203-0639 - Fixed logging issues related to INBOUND_MAN dial method +# 100207-1103 - Changed Pause Codes function to allow for multiple pause codes per pause period +# 100220-1040 - Added Call Log View and Customer Info View and fixed HotKeys position +# 100221-1107 - Added Custom CID compatibility +# 100301-1330 - Changed AGENTDIRECT user selection launching to AGENTS link next to number-to-dial field +# 100302-2145 - Added scheduled callbacks alert feature +# 100306-0852 - Added options.php optional file for setting interface options that will survive upgrade +# 100309-0525 - Added queuemetrics_loginout option +# 100313-0053 - Added display options for transfer/conf buttons +# 100315-1148 - fix for rare recording_log uniqueid issue on manual dial calls to same number +# 100317-1301 - Added agent_fullscreen User Group option +# 100327-0901 - fix for manual dial answering machine message +# 100331-1220 - Added human-readable hangup codes for manual dial +# 100401-0019 - Added agent_choose_blended option +# 100413-1349 - Various small logging fixes and extended alt-dial fixes +# 100420-1009 - Added scheduled_callbacks_count option +# 100423-1156 - Added more user logging data and manual_dial_override, blind monitor warnings, uniqueid display and codec features +# 100428-0544 - Added uniqueid display option for PRESERVE +# 100513-0714 - Added options.php option to hide the timeclock link +# 100513-2337 - Changed user_login_first to attempt full login if phone_login/pass are filled in +# 100527-2212 - Added API send_dtmf, transfer_conference and park_call functions +# 100616-1622 - Allowed longer manual dial numbers +# 100622-2209 - Added field labels +# 100625-1118 - Added poor-network-connection-mitigating code +# 100629-1158 - Added initial code for custom list fields +# 100702-1315 - Custom List Fields functionality enabled +# 100712-1441 - Added entry_list_id field to vicidial_list to preserve link to custom fields if any +# 100723-1522 - Added LOCKED options for quick transfer button feature +# 100726-1233 - Added HANGUP, CALLMENU, EXTENSION, IN_GROUP timer actions +# 100803-2324 - Cleanup of URLDecode (issue #375) +# 100811-0810 - Added webphone_url_override option from user Groups +# 100813-0554 - Added Campaign presets +# 100815-1015 - Added manual_dial_prefix campaign option +# 100823-1605 - Added DID variables for webform and scripting +# 100827-1436 - Added webphone dialpad options +# 100902-0046 - Added initial loading screen +# 100902-1349 - Added closecallid, xfercallid, agent_log_id as webform and script variables +# 100908-0955 - Added customer 3way hangup +# 100912-1304 - Changed Dispo screen phone number display to dialed_number +# 100927-1616 - Added custom fields ability to web forms and optimized related code +# 101004-1322 - Added "IVR Park Call" button in agent interface +# 101006-1358 - Raised limits on several dynamic items from the database +# 101008-0356 - Added manual_preview_dial and two new variables for recording filenames +# 101012-1656 - Added scroll command at dispo submission to for scrolling to the top of the screen +# 101024-1639 - Added parked call counter +# 101108-0110 - Added ADDMEMBER option for queue_log +# 101124-0436 - Added manual dial queue and manual dial call time check features +# 101125-2151 - Changed CIDname for 3way calls +# 101128-0102 - Added list webform override options +# 101207-1621 - Added scroll to the top after in-group, pause code, etc... selections, and added focus blur to several functions +# 101208-1210 - Fixed focus/blur coding to work after Dispo +# 101216-1758 - Added the ability to hide fields if the label is set to ---HIDE--- in System Settings +# 101227-1645 - Added dialplan off toggle options, and settings and code changes for top bar webphone +# 110109-1205 - Added queuemetrics_loginout NONE option +# 110112-1254 - Added options.php option for focus/blur/enter functions +# 110129-1050 - Changed to XHTML compliant formatting, issue #444 +# 110208-1202 - Made scheduled callbacks notice move when on script/form tabs +# 110212-2206 - Added scheduled callback custom statuses compatibility +# 110215-1412 - Added my_callback_option and per_call_notes options +# 110218-1522 - Added agent_lead_search feature +# 110221-1251 - Changed statuses display to keep track of non-selectable statuses +# 110224-1713 - Added compatibility with QM phone environment logging, QM pause code last call logging and active server twin check +# 110225-1231 - Changed scheduled callbacks list to allow clicking to see lead info without dialing, and separate dial link +# 110303-2321 - Added notice of on-hook phone use, and ability to click 'ring' to call into session, minor queue_log fix +# 110304-1623 - Added callback count notification defer options +# 110310-0331 - Added auto-pause/resume functions in auto-dial mode for pre-call work +# 110310-1627 - Changed most browser alerts to HTML alerts, other bug fixes +# 110322-0923 - Allowed hiding of gender pulldown +# 110413-1244 - Added ALT dialing from scheduled callback list, and other formatting changes +# 110420-1211 - Added web_vars variable +# 110428-1549 - Added use of manual_dial_cid setting +# 110430-1126 - Added ability to use external_dial API function with lead_id and alt_dial options +# 110430-1924 - Added post_phone_time_diff_alert campaign feature +# 110506-1612 - Added custom_3way_button_transfer button feature +# 110510-1637 - Added number validation to custom_3way_button_transfer function +# 110526-1723 - Added webphone_auto_answer option +# 110528-1033 - Added waiting_on_dispo manual dial check +# 110531-2158 - Added callback_days_limit campaign feature +# 110619-2005 - Added disable_dispo_ options +# 110624-2311 - Added screen labels option and status display fields option +# 110626-2234 - Added queuemetrics_pe_phone_append +# 110707-1412 - Added last_inbound_call_time and finish compatibility +# 110713-0048 - Allow for full hiding of the phone number field label +# 110718-1159 - Added logging of skipped leads +# 110719-0854 - Removed debug output and small display alignment changes +# 110723-2308 - Complete hiding of phone numbers in logs when alter phone is set to HIDE +# 110730-2240 - Added option to hide dispo statuses, only to be used with API +# 110802-0122 - Added call_id variable +# 110911-1604 - Added API logout function +# 110916-1514 - Fixed dial timeout to check for dial_timeout setting and greater than 49 seconds +# 110919-1603 - Added Phone login load balancing grouping options +# 111015-2037 - Added contact search functions +# 111018-1528 - Added more contact fields, added code to prevent API transfer duplicates +# 111021-1623 - Fix for rare stuck vac issue with manual alt dial +# 111024-1237 - Added callback_list_calltime option +# 111114-0039 - Added scheduled callback and qm-dispo-code fields to API +# 111202-1444 - Added grade-random next-agent-call options +# 111227-1940 - Added Timer Action for Dx_DIAL_QUIET options +# 120213-2029 - Changed consultative transfer with custom fields behavior for better data updating +# 120223-2119 - Removed logging of good login passwords if webroot writable is enabled +# 120308-1617 - Added compatibility for DAHDI phones using asterisk version for server > 1.4.21.2 +# 120403-1204 - Fixed issue with MANUAL dial method hotkeys, added 1 second delay +# 120420-1621 - Forked 2.4 to branches, changing trunk to 2.6 +# 120427-1718 - Fixed 3-way logging issue +# 120512-0849 - Added In-Group Manual Dial functions +# 120518-1225 - Added transfer call to answering machine message with hotkey (LTMG or XFTAMM) +# 120810-0056 - Added recording api function +# 120819-1747 - Added vicidial_session_data logging for webphone api function +# 120914-1357 - Added group_alias to transfer_conference function +# 121025-2335 - Do not allow AGENTDIRECT transfers without a user defined +# 121029-0122 - Added pause_after_next_call and owner_populate campaign options +# 121114-1759 - Fixed manual dial lead preview script variable issue +# 121114-1937 - Added INGROUP recording option +# 121116-1407 - Added QC functionality +# 121129-2149 - Corrected hotkeys activation conditions +# 121130-0734 - Fixed call notes amphersand issue #612 +# 121206-0634 - Added inbound lead search feature +# 121222-2315 - Added inbound email features +# 130220-1214 - Fixed issue with 3-way call dial timeout +# 130328-0006 - Converted ereg to preg functions +# 130328-0934 - Applied changes from Issue #655 +# 130328-1017 - Added validation for agent manual dial permission on DIAL links +# 130402-2250 - Added user_group variable in scripts, forms and webforms +# 130412-1359 - Added SIP message for failed calls +# 130417-1937 - Changed locked agent choose in-group/closer/territories to auto-close +# 130508-2223 - Cleanup for other language builds +# 130508-2307 - Branched 2.7, trunk becomes 2.8 +# 130603-2209 - Added login lockout for 15 minutes after 10 failed logins, and other security fixes +# 130615-1125 - Added recording_id to dispo url +# 130625-0841 - Added more user log data on login +# 130705-1439 - Added optional encrypted passwords compatibility +# 130718-0745 - Added recording_filename to dispo_call_url +# 130802-1134 - Changed to PHP mysqli functions +# 130822-0656 - Changed all require to require_once in agc directory for PHP backward compatibility +# 130903-1920 - Added security check for browser window name, see launch.php for more information +# 130925-2119 - Fixed span order issue +# 131007-1348 - Added mrglock_ig_select_ct options.php setting +# 131010-2149 - Added option to allow manual dial by lead_id +# 131208-2331 - Added campaign options for max dead, dispo and pause time. Changed CB blink to CSS +# 131209-1604 - Addded called_count logging +# 131210-1354 - Fixed manual dial CID choice issue with AC-CID settings +# 140107-2034 - Added webserver/url login logging +# 140126-0741 - Added pause code API function +# 140204-1230 - Added check for valid date in call log view +# 140214-1851 - Added preview_dial_action API function +# 140301-2059 - Added API functions options for SEARCH for phone within lead_id and Dial Next Number +# 140302-1018 - Changes to allow for & and + in standard fields +# 140312-2109 - Added CALLID as recording filename variable +# 140403-1731 - Added recording filename API append option +# 140418-0937 - Added max inbound calls feature +# 140423-1728 - Added campaign options manual_dial_search_checkbox and hide_call_log_info +# 140428-1514 - Added pause_type +# 140429-2040 - Added called_count and call notes display option as script and form variables +# 140519-1011 - Fixed calls in this session to not count monitoring channels +# 140521-2147 - Added manual alt dial options and more agent login error messages +# 140609-2246 - Fixed issue with webform2 button after manual alt-dial +# 140612-2152 - branched 2.9 version, raised trunk to 2.10 +# 140617-1041 - Fixed issue with non-latin, issue #773 +# 140617-2015 - Added vicidial_users wrapup_seconds_override option +# 140621-1557 - Added update_settings call to grab selected user and campaign settings more frequently +# 140623-1710 - Added wrapup_bypass setting +# 140626-0757 - Added wrapup_after_hotkey setting +# 140630-0921 - Added the FSCREEN option to Wrapup message to allow for message only display +# 140703-1658 - Several logging fixes, mostly related to manual dial calls +# 140706-0932 - Added callback_time_24hour for callback setting screen +# 140811-1219 - Changed to use QXZ function for echoing text +# 140822-0900 - Fixed issue with phone alias login +# 140902-0826 - Added callback_active_limit and callback_active_limit_override +# 140918-1606 - Fixed manual dial pause warning issue +# 141105-1153 - Fixed issue with AGENTDIRECT transfers to agents with IDs over 7 characters long +# 141113-1431 - Added admin_test option to allow login on active_agent=N servers +# 141116-1805 - Fixed issue #801 +# 141118-1229 - Formatting changes for QXZ output +# 141118-1439 - Added agent_email as webform and script variable +# 141121-1005 - Added new QC and comments campaign options +# 141124-1144 - Added new Callback Comments campaign option +# 141124-2146 - Added show_previous_callback campaign option +# 141124-2217 - Fix for issue #798 +# 141124-2234 - Added clear_script campaign option +# 141125-0100 - Added parked_hangup code +# 141125-1235 - Fixed issue with lead info not being updated when Max Dead time is triggered +# 141128-0848 - Code cleanup for QXZ functions +# 141204-1211 - Added more error checking on login +# 141207-1155 - Added pause_trigger to logout to force pause before running logout process +# 141216-1859 - Added agent choose language option +# 141222-2035 - Fix for issue #811 +# 141223-2109 - Fix for hide_gender issue +# 141227-1759 - Found missing phrase for QXZ +# 141229-1429 - Changed single-quote QXZ arguments to double-quotes +# 150101-1516 - Updated for 2015 +# 150108-1725 - Added more validation for API transfer commands +# 150111-1545 - Added manual_dial_search_filter campaign option(Issue #812) +# 150114-2052 - Added list_name web url variable +# 150117-1445 - Added NAME as status display variable +# 150117-1524 - Changed Pause/Resume buttons to single button(Issue #814) +# 150122-0629 - Fixed issue with double dispo warning, Fixed issue with alt-dial/preview-dial custom form reset +# 150123-1505 - Fixed issue with manual dial hotkey usage and agent logs +# 150129-0828 - Added confirmation if agent tries to leave the page without logging out, issue #821 +# 150202-0829 - Reconfigured hotkeys and auto-manual-dial for less delay +# 150203-1331 - Small changes to improve manual dial hotkey use +# 150204-1911 - Changed Manual hotkey auto-manual-dial to a variable delay depending on dispo processing time +# 150210-1225 - Added LOCK options for manual_dial_search_checkbox, fixed missing QXZ tags(issue #827) +# 150212-0034 - Added case-sensitive user validation(issue #682) +# 150218-1356 - Fixes for QXZ enclosed in single-quotes +# 150220-1533 - Fix for leave page confirmation after logout and QXZ fixes +# 150302-0950 - Release of 2.11 stable branch and raising trunk to 2.12 +# 150309-0315 - Added custom agent login prompt option +# 150405-1410 - Fixed issue with API dialing and preview +# 150418-2206 - Fixed issue with manual dial with hotkeys in RATIO method, issue #836 +# 150428-1735 - Added web form three +# 150522-1254 - Fixed issue #859 +# 150608-1126 - Added campaign option to disable the manual dial override field +# 150609-1736 - Added status_display_ingroup option +# 150609-1917 - Added list_description web url variable +# 150610-0940 - Added customer_gone_seconds campaign option +# 150701-1211 - Modified mysqli_error() to mysqli_connect_error() where appropriate +# 150704-0005 - Changed disposubmit to be blocking before resume, Issue #863 +# 150712-2045 - Changed dispo call url to operate through a separate AJAX process +# 150723-1741 - Created method for logging agent button/link clicks +# 150725-1744 - Added Agent Display Fields campaign option +# 150727-0908 - Added default_language +# 150808-1439 - Added compatibility for custom fields data option +# 150909-0212 - Fixed MDlogEPOCH variable issue #882 +# 150917-0926 - Added dynamic default field maxlengths based on DB schema +# 150923-1952 - Added DID custum fields as web and form variables +# 150928-1205 - Fixed issue with API transfers and dial_override flag +# 151022-0004 - Added audio alert when email arrives, issue #899 +# 151028-1458 - Added status groups statuses feature with min/max seconds qualifiers for statuses +# 151119-1925 - Fixed issue with scheduled callbacks and status groups +# 151125-0942 - Fixed manual call only logging bug +# 151212-0922 - Added all chat functionality +# 151218-1200 - Fixes for chat security and language translation +# 151229-2240 - Fixed issue #907, script reload after canceling manual 3way call +# 151229-2331 - Added campaign setting for manual_dial_timeout, Issue #903 +# 151230-0911 - Fixed transfer of parked call logging issue #901 +# 160101-1131 - Added code to handle routing initiated recordings +# 160104-1237 - Added images for live chat and email, and dead chat +# 160106-2215 - Deactivated several call action buttons while Email/Chat handling +# 160306-1019 - Added more webphone options +# 160326-0941 - Fixed issue #933, variables +# 160326-1001 - Fixed issue #934, phone_login +# 160331-2129 - Fixed missing start and dispo call url variables, issue #938 +# 160414-0922 - Added default_phone_code system settings option +# 160420-1342 - Fixed text link overlaps with other languages +# 160428-1826 - Fixed user_authorization bug +# 160618-1006 - Branched old agent screen design, added logging of browser width/height +# NOTE: THIS VERSION WILL EVENTUALLY BECOME UNSUPPORTED!!!!!!!!!! +# + +$version = '2.12-492c-grey'; +$build = '160618-1006'; +$mel=1; # Mysql Error Log enabled = 1 +$mysql_log_count=87; +$one_mysql_log=0; +$DB=0; + +require_once("dbconnect_mysqli.php"); +require_once("functions.php"); + +if (isset($_GET["DB"])) {$DB=$_GET["DB"];} + elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} +if (isset($_GET["JS_browser_width"])) {$JS_browser_width=$_GET["JS_browser_width"];} + elseif (isset($_POST["JS_browser_width"])) {$JS_browser_width=$_POST["JS_browser_width"];} +if (isset($_GET["JS_browser_height"])) {$JS_browser_height=$_GET["JS_browser_height"];} + elseif (isset($_POST["JS_browser_height"])) {$JS_browser_height=$_POST["JS_browser_height"];} +if (isset($_GET["phone_login"])) {$phone_login=$_GET["phone_login"];} + elseif (isset($_POST["phone_login"])) {$phone_login=$_POST["phone_login"];} +if (isset($_GET["phone_pass"])) {$phone_pass=$_GET["phone_pass"];} + elseif (isset($_POST["phone_pass"])) {$phone_pass=$_POST["phone_pass"];} +if (isset($_GET["VD_login"])) {$VD_login=$_GET["VD_login"];} + elseif (isset($_POST["VD_login"])) {$VD_login=$_POST["VD_login"];} +if (isset($_GET["VD_pass"])) {$VD_pass=$_GET["VD_pass"];} + elseif (isset($_POST["VD_pass"])) {$VD_pass=$_POST["VD_pass"];} +if (isset($_GET["VD_campaign"])) {$VD_campaign=$_GET["VD_campaign"];} + elseif (isset($_POST["VD_campaign"])) {$VD_campaign=$_POST["VD_campaign"];} +if (isset($_GET["VD_language"])) {$VD_language=$_GET["VD_language"];} + elseif (isset($_POST["VD_language"])) {$VD_language=$_POST["VD_language"];} +if (isset($_GET["relogin"])) {$relogin=$_GET["relogin"];} + elseif (isset($_POST["relogin"])) {$relogin=$_POST["relogin"];} +if (isset($_GET["MGR_override"])) {$MGR_override=$_GET["MGR_override"];} + elseif (isset($_POST["MGR_override"])) {$MGR_override=$_POST["MGR_override"];} +if (isset($_GET["admin_test"])) {$admin_test=$_GET["admin_test"];} + elseif (isset($_POST["admin_test"])) {$admin_test=$_POST["admin_test"];} +if (!isset($phone_login)) + { + if (isset($_GET["pl"])) {$phone_login=$_GET["pl"];} + elseif (isset($_POST["pl"])) {$phone_login=$_POST["pl"];} + } +if (!isset($phone_pass)) + { + if (isset($_GET["pp"])) {$phone_pass=$_GET["pp"];} + elseif (isset($_POST["pp"])) {$phone_pass=$_POST["pp"];} + } +if (isset($VD_campaign)) + { + $VD_campaign = strtoupper($VD_campaign); + $VD_campaign = preg_replace("/\s/i",'',$VD_campaign); + } +if (!isset($flag_channels)) + { + $flag_channels=0; + $flag_string=''; + } + +### security strip all non-alphanumeric characters out of the variables ### +$DB=preg_replace("/[^0-9a-z]/","",$DB); +$phone_login=preg_replace("/[^\,0-9a-zA-Z]/","",$phone_login); +$phone_pass=preg_replace("/[^-_0-9a-zA-Z]/","",$phone_pass); +$VD_login=preg_replace("/\'|\"|\\\\|;| /","",$VD_login); +$VD_pass=preg_replace("/\'|\"|\\\\|;| /","",$VD_pass); +$VD_campaign = preg_replace("/[^-_0-9a-zA-Z]/","",$VD_campaign); +$VD_language = preg_replace("/\'|\"|\\\\|;/","",$VD_language); +$admin_test = preg_replace("/[^0-9a-zA-Z]/","",$admin_test); + +$forever_stop=0; + +$isdst = date("I"); +$StarTtimE = date("U"); +$NOW_TIME = date("Y-m-d H:i:s"); +$tsNOW_TIME = date("YmdHis"); +$FILE_TIME = date("Ymd-His"); +$loginDATE = date("Ymd"); +$CIDdate = date("ymdHis"); +$month_old = mktime(11, 0, 0, date("m"), date("d")-2, date("Y")); +$past_month_date = date("Y-m-d H:i:s",$month_old); +$minutes_old = mktime(date("H"), date("i")-2, date("s"), date("m"), date("d"), date("Y")); +$past_minutes_date = date("Y-m-d H:i:s",$minutes_old); +$JS_date = $StarTtimE."000"; # milliseconds since epoch or "16,3,31,8,56,1,0" year,month,day,hour,minute,second,millisecond +$webphone_width = 460; +$webphone_height = 500; +$VUselected_language = ''; + +$random = (rand(1000000, 9999999) + 10000000); + + +$stmt="SELECT user,selected_language from vicidial_users where user='$VD_login';"; +if ($DB) {echo "|$stmt|\n";} +$rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01081',$VD_login,$server_ip,$session_name,$one_mysql_log);} +$sl_ct = mysqli_num_rows($rslt); +if ($sl_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $VUuser = $row[0]; + $VUselected_language = $row[1]; + } + +############################################# +##### START SYSTEM_SETTINGS LOOKUP ##### +$stmt = "SELECT use_non_latin,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,webroot_writable,timeclock_end_of_day,vtiger_url,enable_vtiger_integration,outbound_autodial_active,enable_second_webform,user_territories_active,static_agent_url,custom_fields_enabled,pllb_grouping_limit,qc_features_active,allow_emails,callback_time_24hour,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_third_webform,default_language,active_modules,allow_chats,chat_url,default_phone_code FROM system_settings;"; +$rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01001',$VD_login,$server_ip,$session_name,$one_mysql_log);} +if ($DB) {echo "$stmt\n";} +$qm_conf_ct = mysqli_num_rows($rslt); +if ($qm_conf_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $non_latin = $row[0]; + $vdc_header_date_format = $row[1]; + $vdc_customer_date_format = $row[2]; + $vdc_header_phone_format = $row[3]; + $WeBRooTWritablE = $row[4]; + $timeclock_end_of_day = $row[5]; + $vtiger_url = $row[6]; + $enable_vtiger_integration = $row[7]; + $outbound_autodial_active = $row[8]; + $enable_second_webform = $row[9]; + $user_territories_active = $row[10]; + $static_agent_url = $row[11]; + $custom_fields_enabled = $row[12]; + $SSpllb_grouping_limit = $row[13]; + $qc_enabled = $row[14]; + $email_enabled = $row[15]; + $callback_time_24hour = $row[16]; + $SSenable_languages = $row[17]; + $SSlanguage_method = $row[18]; + $meetme_enter_login_filename = $row[19]; + $meetme_enter_leave3way_filename = $row[20]; + $enable_third_webform = $row[21]; + $default_language = $row[22]; + $active_modules = $row[23]; + $chat_enabled = $row[24]; + $chat_URL = $row[25]; + $default_phone_code = $row[26]; + } +else + { + echo _QXZ("ERROR: System Settings missing")."\n"; + exit; + } +##### END SETTINGS LOOKUP ##### +########################################### + +if ($non_latin < 1) + { + $VD_login=preg_replace("/[^-_0-9a-zA-Z]/","",$VD_login); + $VD_pass=preg_replace("/[^-_0-9a-zA-Z]/","",$VD_pass); + } + +if ($force_logout) + { + echo _QXZ("You have now logged out. Thank you")."\n"; + exit; + } + + +##### DEFINABLE SETTINGS AND OPTIONS +########################################### + +# set defaults for hard-coded variables +$conf_silent_prefix = '5'; # vicidial_conferences prefix to enter silently and muted for recording +$dtmf_silent_prefix = '7'; # vicidial_conferences prefix to enter silently +$HKuser_level = '1'; # minimum vicidial user_level for HotKeys +$campaign_login_list = '1'; # show drop-down list of campaigns at login +$manual_dial_preview = '1'; # allow preview lead option when manual dial +$multi_line_comments = '1'; # set to 1 to allow multi-line comment box +$user_login_first = '0'; # set to 1 to have the vicidial_user login before the phone login +$view_scripts = '1'; # set to 1 to show the SCRIPTS tab +$dispo_check_all_pause = '0'; # set to 1 to allow for persistent pause after dispo +$callholdstatus = '1'; # set to 1 to show calls on hold count +$agentcallsstatus = '0'; # set to 1 to show agent status and call dialed count + $campagentstatctmax = '3'; # Number of seconds for campaign call and agent stats +$show_campname_pulldown = '1'; # set to 1 to show campaign name on login pulldown +$webform_sessionname = '1'; # set to 1 to include the session_name in webform URL +$local_consult_xfers = '1'; # set to 1 to send consultative transfers from original server +$clientDST = '1'; # set to 1 to check for DST on server for agent time +$no_delete_sessions = '1'; # set to 1 to not delete sessions at logout +$volumecontrol_active = '1'; # set to 1 to allow agents to alter volume of channels +$PreseT_DiaL_LinKs = '0'; # set to 1 to show a DIAL link for Dial Presets +$LogiNAJAX = '1'; # set to 1 to do lookups on campaigns for login +$HidEMonitoRSessionS = '1'; # set to 1 to hide remote monitoring channels from "session calls" +$hangup_all_non_reserved= '1'; # set to 1 to force hangup all non-reserved channels upon Hangup Customer +$LogouTKicKAlL = '1'; # set to 1 to hangup all calls in session upon agent logout +$PhonESComPIP = '1'; # set to 1 to log computer IP to phone if blank, set to 2 to force log each login +$DefaulTAlTDiaL = '0'; # set to 1 to enable ALT DIAL by default if enabled for the campaign +$AgentAlert_allowed = '1'; # set to 1 to allow Agent alert option +$disable_blended_checkbox='0'; # set to 1 to disable the BLENDED checkbox from the in-group chooser screen +$hide_timeclock_link = '0'; # set to 1 to hide the timeclock link on the agent login screen +$conf_check_attempts = '3'; # number of attempts to try before loosing webserver connection, for bad network setups +$focus_blur_enabled = '0'; # set to 1 to enable the focus/blur enter key blocking(some IE instances have issues) +$consult_custom_delay = '2'; # number of seconds to delay consultative transfers when customfields are active +$mrglock_ig_select_ct = '4'; # number of seconds to leave in-group select screen open if agent select is disabled + +$TEST_all_statuses = '0'; # TEST variable allows all statuses in dispo screen, FOR DEBUG ONLY + +$stretch_dimensions = '1'; # sets the vicidial screen to the size of the browser window +$BROWSER_HEIGHT = 500; # set to the minimum browser height, default=500 +$BROWSER_WIDTH = 770; # set to the minimum browser width, default=770 +$webphone_width = 460; # set the webphone frame width +$webphone_height = 500; # set the webphone frame height +$webphone_pad = 0; # set the table cellpadding for the webphone +$webphone_location = 'right'; # set the location on the agent screen 'right' or 'bar' +$MAIN_COLOR = '#CCCCCC'; # old default is E0C2D6 +$SCRIPT_COLOR = '#E6E6E6'; # old default is FFE7D0 +$FORM_COLOR = '#EFEFEF'; +$SIDEBAR_COLOR = '#F6F6F6'; + +$window_validation = 0; # set to 1 to disallow direct logins to vicidial.php +$win_valid_name = 'subwindow_launch'; # only window name to allow if validation enabled + +# if options file exists, use the override values for the above variables +# see the options-example.php file for more information +if (file_exists('options.php')) + { + require_once('options.php'); + } + +$hide_gender=0; +$US='_'; +$CL=':'; +$AT='@'; +$DS='-'; +$date = date("r"); +$ip = getenv("REMOTE_ADDR"); +$browser = getenv("HTTP_USER_AGENT"); +$script_name = getenv("SCRIPT_NAME"); +$server_name = getenv("SERVER_NAME"); +$server_port = getenv("SERVER_PORT"); +if (preg_match("/443/i",$server_port)) {$HTTPprotocol = 'https://';} + else {$HTTPprotocol = 'http://';} +if (($server_port == '80') or ($server_port == '443') ) {$server_port='';} +else {$server_port = "$CL$server_port";} +$agcPAGE = "$HTTPprotocol$server_name$server_port$script_name"; +$agcDIR = preg_replace('/vicidial\.php/i','',$agcPAGE); +if (strlen($static_agent_url) > 5) + {$agcPAGE = $static_agent_url;} +if (strlen($VUselected_language) < 1) + {$VUselected_language = $default_language;} +$vdc_form_display = 'vdc_form_display.php'; +if (preg_match("/cf_encrypt/",$active_modules)) + {$vdc_form_display = 'vdc_form_display_encrypt.php';} +header ("Content-type: text/html; charset=utf-8"); +header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 +header ("Pragma: no-cache"); // HTTP/1.0 +echo ' + + + + + + +'; +echo "\n"; +echo "\n"; + +if ($campaign_login_list > 0) + { + $camp_form_code = "\n"; + echo "\n"; + echo "\n"; + } + } + + ### code for manager override of shift restrictions + if ($MGR_override > 0) + { + if (isset($_GET["MGR_login$loginDATE"])) {$MGR_login=$_GET["MGR_login$loginDATE"];} + elseif (isset($_POST["MGR_login$loginDATE"])) {$MGR_login=$_POST["MGR_login$loginDATE"];} + if (isset($_GET["MGR_pass$loginDATE"])) {$MGR_pass=$_GET["MGR_pass$loginDATE"];} + elseif (isset($_POST["MGR_pass$loginDATE"])) {$MGR_pass=$_POST["MGR_pass$loginDATE"];} + + $MGR_login = preg_replace("/\'|\"|\\\\|;/","",$MGR_login); + $MGR_pass = preg_replace("/\'|\"|\\\\|;/","",$MGR_pass); + + $MGR_auth=0; + $auth_message = user_authorization($MGR_login,$MGR_pass,'MGR',0,0,0,0); + if (preg_match("/^GOOD/",$auth_message)) + {$MGR_auth=1;} + + if($MGR_auth>0) + { + $stmt="UPDATE vicidial_users SET shift_override_flag='1' where user='$VD_login';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01059',$VD_login,$server_ip,$session_name,$one_mysql_log);} + echo "\n"; + + ### Add a record to the vicidial_admin_log + $SQL_log = "$stmt|"; + $SQL_log = preg_replace('/;/','',$SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date='$NOW_TIME', user='$MGR_login', ip_address='$ip', event_section='AGENT', event_type='OVERRIDE', record_id='$VD_login', event_code='MANAGER OVERRIDE OF AGENT SHIFT ENFORCEMENT', event_sql=\"$SQL_log\", event_notes='user: $VD_login';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01060',$VD_login,$server_ip,$session_name,$one_mysql_log);} + } + } + + + $stmt="SELECT campaign_id,campaign_name from vicidial_campaigns where active='Y' $LOGallowed_campaignsSQL order by campaign_id;"; + if ($non_latin > 0) {$rslt=mysql_to_mysqli("SET NAMES 'UTF8'", $link);} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01004',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $camps_to_print = mysqli_num_rows($rslt); + + $o=0; + while ($camps_to_print > $o) + { + $rowx=mysqli_fetch_row($rslt); + if ($show_campname_pulldown) + {$campname = " - $rowx[1]";} + else + {$campname = '';} + if ($VD_campaign) + { + if ( (preg_match("/$VD_campaign/i",$rowx[0])) and (strlen($VD_campaign) == strlen($rowx[0])) ) + {$camp_form_code .= "\n";} + else + { + if (!preg_match('/login_allowable_campaigns/',$camp_form_code)) + {$camp_form_code .= "\n";} + } + } + else + { + if (!preg_match('/login_allowable_campaigns/',$camp_form_code)) + {$camp_form_code .= "\n";} + } + $o++; + } + $camp_form_code .= "\n"; + } +else + { + $camp_form_code = "\n"; + } + + +if ($LogiNAJAX > 0) + { + ?> + + + + + + + + "._QXZ("Agent web client: Re-Login")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "


"; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\"VICIdial\" "._QXZ("Re-Login")."
 
"._QXZ("Phone Login:")."
"._QXZ("Phone Password:")."
"._QXZ("User Login").":
"._QXZ("User Password:")."
"._QXZ("Campaign:")." $camp_form_code
  \n"; + echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; + echo "
\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } + +if ($user_login_first == 1) + { + if ( (strlen($VD_login)<1) or (strlen($VD_pass)<1) or (strlen($VD_campaign)<1) ) + { + echo ""._QXZ("Agent web client: Campaign Login")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + #echo "\n"; + #echo "\n"; + echo "

"._QXZ("User Login")."

"; + echo ""; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\"VICIdial\" "._QXZ("Campaign Login")."
 
"._QXZ("User Login").":
"._QXZ("User Password:")."
"._QXZ("Campaign:")." $camp_form_code
  \n"; + echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; + echo "\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } + else + { + if ( (strlen($phone_login)<2) or (strlen($phone_pass)<2) ) + { + $stmt="SELECT phone_login,phone_pass from vicidial_users where user='$VD_login' and user_level > 0 and active='Y';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01005',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $phone_login=$row[0]; + $phone_pass=$row[1]; + + if ( (strlen($phone_login) < 1) or (strlen($phone_pass) < 1) ) + { + echo ""._QXZ("Agent web client: Login")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "


"; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\"VICIdial\" "._QXZ("Login")."
 
"._QXZ("Phone Login:")."
"._QXZ("Phone Password:")."
"._QXZ("User Login").":
"._QXZ("User Password:")."
"._QXZ("Campaign:")." $camp_form_code
  \n"; + echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; + echo "
\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } + } + } + } + +if ( (strlen($phone_login)<2) or (strlen($phone_pass)<2) ) + { + echo ""._QXZ("Agent web client: Phone Login")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "


"; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\"VICIdial\" "._QXZ("phone login")."
 
"._QXZ("Phone Login:")."
"._QXZ("Phone Password:")."
  \n"; + echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; + echo "
\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } +else + { + if ($WeBRooTWritablE > 0) + {$fp = fopen ("./vicidial_auth_entries.txt", "a");} + $VDloginDISPLAY=0; + + if ( (strlen($VD_login)<2) or (strlen($VD_pass)<2) or (strlen($VD_campaign)<2) ) + { + $VDloginDISPLAY=1; + } + else + { + $auth=0; + $auth_message = user_authorization($VD_login,$VD_pass,'',1,0,1,0); + if (preg_match("/^GOOD/",$auth_message)) + { + $auth=1; + $pass_hash = preg_replace("/GOOD\|/",'',$auth_message); + } + # case-sensitive check for user + if($auth>0) + { + if ($VD_login != "$VUuser") + { + $auth=0; + $auth_message='ERRCASE'; + } + } + + if($auth>0) + { + ##### grab the full name and other settings of the agent + $stmt="SELECT full_name,user_level,hotkeys_active,agent_choose_ingroups,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,closer_default_blended,user_group,vicidial_recording_override,alter_custphone_override,alert_enabled,agent_shift_enforcement_override,shift_override_flag,allow_alerts,closer_campaigns,agent_choose_territories,custom_one,custom_two,custom_three,custom_four,custom_five,agent_call_log_view_override,agent_choose_blended,agent_lead_search_override,preset_contact_search,max_inbound_calls,wrapup_seconds_override,email,user_choose_language from vicidial_users where user='$VD_login' and active='Y';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01007',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $LOGfullname = $row[0]; + $user_level = $row[1]; + $VU_hotkeys_active = $row[2]; + $VU_agent_choose_ingroups = $row[3]; + $VU_scheduled_callbacks = $row[4]; + $agentonly_callbacks = $row[5]; + $agentcall_manual = $row[6]; + $VU_vicidial_recording = $row[7]; + $VU_vicidial_transfers = $row[8]; + $VU_closer_default_blended = $row[9]; + $VU_user_group = $row[10]; + $VU_vicidial_recording_override = $row[11]; + $VU_alter_custphone_override = $row[12]; + $VU_alert_enabled = $row[13]; + $VU_agent_shift_enforcement_override = $row[14]; + $VU_shift_override_flag = $row[15]; + $VU_allow_alerts = $row[16]; + $VU_closer_campaigns = $row[17]; + $VU_agent_choose_territories = $row[18]; + $VU_custom_one = $row[19]; + $VU_custom_two = $row[20]; + $VU_custom_three = $row[21]; + $VU_custom_four = $row[22]; + $VU_custom_five = $row[23]; + $VU_agent_call_log_view_override = $row[24]; + $VU_agent_choose_blended = $row[25]; + $VU_agent_lead_search_override = $row[26]; + $VU_preset_contact_search = $row[27]; + $VU_max_inbound_calls = $row[28]; + $VU_wrapup_seconds_override = $row[29]; + $LOGemail = $row[30]; + $VU_user_choose_language = $row[31]; + + if ( ($VU_alert_enabled > 0) and ($VU_allow_alerts > 0) ) {$VU_alert_enabled = 'ON';} + else {$VU_alert_enabled = 'OFF';} + $AgentAlert_allowed = $VU_allow_alerts; + + ### Gather timeclock and shift enforcement restriction settings + $stmt="SELECT forced_timeclock_login,shift_enforcement,group_shifts,agent_status_viewable_groups,agent_status_view_time,agent_call_log_view,agent_xfer_consultative,agent_xfer_dial_override,agent_xfer_vm_transfer,agent_xfer_blind_transfer,agent_xfer_dial_with_customer,agent_xfer_park_customer_dial,agent_fullscreen,webphone_url_override,webphone_dialpad_override,webphone_systemkey_override,admin_viewable_groups from vicidial_user_groups where user_group='$VU_user_group';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01052',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $forced_timeclock_login = $row[0]; + $shift_enforcement = $row[1]; + $LOGgroup_shiftsSQL = preg_replace('/\s\s/i','',$row[2]); + $LOGgroup_shiftsSQL = preg_replace('/\s/i',"','",$LOGgroup_shiftsSQL); + $LOGgroup_shiftsSQL = "shift_id IN('$LOGgroup_shiftsSQL')"; + $agent_status_viewable_groups = $row[3]; + $agent_status_viewable_groupsSQL = preg_replace('/\s\s/i','',$agent_status_viewable_groups); + $agent_status_viewable_groupsSQL = preg_replace('/\s/i',"','",$agent_status_viewable_groupsSQL); + $agent_status_viewable_groupsSQL = "user_group IN('$agent_status_viewable_groupsSQL')"; + $agent_status_view = 0; + if (strlen($agent_status_viewable_groups) > 2) + {$agent_status_view = 1;} + $agent_status_view_time=0; + if ($row[4] == 'Y') + {$agent_status_view_time=1;} + if ($row[5] == 'Y') + {$agent_call_log_view=1;} + if ($row[6] == 'Y') + {$agent_xfer_consultative=1;} + if ($row[7] == 'Y') + {$agent_xfer_dial_override=1;} + if ($row[8] == 'Y') + {$agent_xfer_vm_transfer=1;} + if ($row[9] == 'Y') + {$agent_xfer_blind_transfer=1;} + if ($row[10] == 'Y') + {$agent_xfer_dial_with_customer=1;} + if ($row[11] == 'Y') + {$agent_xfer_park_customer_dial=1;} + if ($VU_agent_call_log_view_override == 'Y') + {$agent_call_log_view=1;} + if ($VU_agent_call_log_view_override == 'N') + {$agent_call_log_view=0;} + $agent_fullscreen = $row[12]; + $webphone_url = $row[13]; + $webphone_dialpad_override = $row[14]; + $system_key = $row[15]; + $admin_viewable_groups = $row[16]; + + $admin_viewable_groupsALL=0; + $LOGadmin_viewable_groupsSQL=''; + $whereLOGadmin_viewable_groupsSQL=''; + $valLOGadmin_viewable_groupsSQL=''; + $vmLOGadmin_viewable_groupsSQL=''; + if ( (!preg_match('/\-\-ALL\-\-/i',$admin_viewable_groups)) and (strlen($admin_viewable_groups) > 3) ) + { + $rawLOGadmin_viewable_groupsSQL = preg_replace("/ -/",'',$admin_viewable_groups); + $rawLOGadmin_viewable_groupsSQL = preg_replace("/ /","','",$rawLOGadmin_viewable_groupsSQL); + $LOGadmin_viewable_groupsSQL = "and user_group IN('---ALL---','$rawLOGadmin_viewable_groupsSQL')"; + $whereLOGadmin_viewable_groupsSQL = "where user_group IN('---ALL---','$rawLOGadmin_viewable_groupsSQL')"; + $valLOGadmin_viewable_groupsSQL = "and val.user_group IN('---ALL---','$rawLOGadmin_viewable_groupsSQL')"; + $vmLOGadmin_viewable_groupsSQL = "and vm.user_group IN('---ALL---','$rawLOGadmin_viewable_groupsSQL')"; + } + else + {$admin_viewable_groupsALL=1;} + + if ( ($webphone_dialpad_override != 'DISABLED') and (strlen($webphone_dialpad_override) > 0) ) + {$webphone_dialpad = $webphone_dialpad_override;} + + if ( (strlen($VD_language)>0) and ($VU_user_choose_language == '1') ) + { + $LANGUAGEactive=0; + if ($VD_language == 'default English') + {$LANGUAGEactive=1;} + else + { + $stmt="SELECT count(*) FROM vicidial_languages where language_id='$VD_language' and active='Y' $LOGadmin_viewable_groupsSQL;"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01082',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $LANGUAGEactive=$row[0]; + } + + if ($LANGUAGEactive > 0) + { + $stmt="UPDATE vicidial_users SET selected_language='$VD_language' where user='$VD_login';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01083',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $VUlanguage_affected_rows = mysqli_affected_rows($link); + + echo "\n"; + + $VUselected_language=$VD_language; + } + } + + ### BEGIN - CHECK TO SEE IF AGENT IS LOGGED IN TO TIMECLOCK, IF NOT, OUTPUT ERROR + if ( (preg_match('/Y/',$forced_timeclock_login)) or ( (preg_match('/ADMIN_EXEMPT/',$forced_timeclock_login)) and ($VU_user_level < 8) ) ) + { + $last_agent_event=''; + $HHMM = date("Hi"); + $HHteod = substr($timeclock_end_of_day,0,2); + $MMteod = substr($timeclock_end_of_day,2,2); + + if ($HHMM < $timeclock_end_of_day) + {$EoD = mktime($HHteod, $MMteod, 10, date("m"), date("d")-1, date("Y"));} + else + {$EoD = mktime($HHteod, $MMteod, 10, date("m"), date("d"), date("Y"));} + + $EoDdate = date("Y-m-d H:i:s", $EoD); + + ##### grab timeclock logged-in time for each user ##### + $stmt="SELECT event from vicidial_timeclock_log where user='$VD_login' and event_epoch >= '$EoD' order by timeclock_id desc limit 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01053',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $events_to_parse = mysqli_num_rows($rslt); + if ($events_to_parse > 0) + { + $rowx=mysqli_fetch_row($rslt); + $last_agent_event = $rowx[0]; + } + if ($DB>0) {echo "|$stmt|$events_to_parse|$last_agent_event|";} + if ( (strlen($last_agent_event)<2) or (preg_match('/LOGOUT/',$last_agent_event)) ) + { + $VDloginDISPLAY=1; + $VDdisplayMESSAGE = _QXZ("YOU MUST LOG IN TO THE TIMECLOCK FIRST")."
"; + } + } + ### END - CHECK TO SEE IF AGENT IS LOGGED IN TO TIMECLOCK, IF NOT, OUTPUT ERROR + + ### BEGIN - CHECK TO SEE IF SHIFT ENFORCEMENT IS ENABLED AND AGENT IS OUTSIDE OF THEIR SHIFTS, IF SO, OUTPUT ERROR + if ( ( (preg_match("/START|ALL/",$shift_enforcement)) and (!preg_match("/OFF/",$VU_agent_shift_enforcement_override)) ) or (preg_match("/START|ALL/",$VU_agent_shift_enforcement_override)) ) + { + $shift_ok=0; + if ( (strlen($LOGgroup_shiftsSQL) < 3) and ($VU_shift_override_flag < 1) ) + { + $VDloginDISPLAY=1; + $VDdisplayMESSAGE = _QXZ("ERROR: There are no Shifts enabled for your user group")."
"; + } + else + { + $HHMM = date("Hi"); + $wday = date("w"); + + $stmt="SELECT shift_id,shift_start_time,shift_length,shift_weekdays from vicidial_shifts where $LOGgroup_shiftsSQL order by shift_id"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01056',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $shifts_to_print = mysqli_num_rows($rslt); + + $o=0; + while ( ($shifts_to_print > $o) and ($shift_ok < 1) ) + { + $rowx=mysqli_fetch_row($rslt); + $shift_id = $rowx[0]; + $shift_start_time = $rowx[1]; + $shift_length = $rowx[2]; + $shift_weekdays = $rowx[3]; + + if (preg_match("/$wday/i",$shift_weekdays)) + { + $HHshift_length = substr($shift_length,0,2); + $MMshift_length = substr($shift_length,3,2); + $HHshift_start_time = substr($shift_start_time,0,2); + $MMshift_start_time = substr($shift_start_time,2,2); + $HHshift_end_time = ($HHshift_length + $HHshift_start_time); + $MMshift_end_time = ($MMshift_length + $MMshift_start_time); + if ($MMshift_end_time > 59) + { + $MMshift_end_time = ($MMshift_end_time - 60); + $HHshift_end_time++; + } + if ($HHshift_end_time > 23) + {$HHshift_end_time = ($HHshift_end_time - 24);} + $HHshift_end_time = sprintf("%02s", $HHshift_end_time); + $MMshift_end_time = sprintf("%02s", $MMshift_end_time); + $shift_end_time = "$HHshift_end_time$MMshift_end_time"; + + if ( + ( ($HHMM >= $shift_start_time) and ($HHMM < $shift_end_time) ) or + ( ($HHMM < $shift_start_time) and ($HHMM < $shift_end_time) and ($shift_end_time <= $shift_start_time) ) or + ( ($HHMM >= $shift_start_time) and ($HHMM >= $shift_end_time) and ($shift_end_time <= $shift_start_time) ) + ) + {$shift_ok++;} + } + $o++; + } + + if ( ($shift_ok < 1) and ($VU_shift_override_flag < 1) ) + { + $VDloginDISPLAY=1; + $VDdisplayMESSAGE = _QXZ("ERROR: You are not allowed to log in outside of your shift")."
"; + } + } + if ( ($shift_ok < 1) and ($VU_shift_override_flag < 1) and ($VDloginDISPLAY > 0) ) + { + $VDdisplayMESSAGE.= "

"._QXZ("MANAGER OVERRIDE:")."
\n"; + $VDdisplayMESSAGE.= "
\n"; + $VDdisplayMESSAGE.= "\n"; + $VDdisplayMESSAGE.= "\n"; + $VDdisplayMESSAGE.= "\n"; + $VDdisplayMESSAGE.= "\n"; + $VDdisplayMESSAGE.= "\n"; + $VDdisplayMESSAGE.= "\n"; + $VDdisplayMESSAGE.= "\n"; + $VDdisplayMESSAGE.= "Manager Login:
\n"; + $VDdisplayMESSAGE.= "Manager Password:
\n"; + $VDdisplayMESSAGE.= "
\n"; + } + } + ### END - CHECK TO SEE IF SHIFT ENFORCEMENT IS ENABLED AND AGENT IS OUTSIDE OF THEIR SHIFTS, IF SO, OUTPUT ERROR + + ### BEGIN find any custom field labels ### + $label_title = _QXZ(" Title"); + $label_first_name = _QXZ("First"); + $label_middle_initial = _QXZ("MI"); + $label_last_name = _QXZ("Last "); + $label_address1 = _QXZ("Address1"); + $label_address2 = _QXZ("Address2"); + $label_address3 = _QXZ("Address3"); + $label_city = _QXZ("City"); + $label_state = _QXZ(" State"); + $label_province = _QXZ("Province"); + $label_postal_code = _QXZ("PostCode"); + $label_vendor_lead_code = _QXZ("Vendor ID"); + $label_gender = _QXZ(" Gender"); + $label_phone_number = _QXZ("Phone"); + $label_phone_code = _QXZ("DialCode"); + $label_alt_phone = _QXZ("Alt. Phone"); + $label_security_phrase = _QXZ("Show"); + $label_email = _QXZ("Email"); + $label_comments = _QXZ(" Comments"); + + $stmt="SELECT label_title,label_first_name,label_middle_initial,label_last_name,label_address1,label_address2,label_address3,label_city,label_state,label_province,label_postal_code,label_vendor_lead_code,label_gender,label_phone_number,label_phone_code,label_alt_phone,label_security_phrase,label_email,label_comments from system_settings;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + if (strlen($row[0])>0) {$label_title = $row[0];} + if (strlen($row[1])>0) {$label_first_name = $row[1];} + if (strlen($row[2])>0) {$label_middle_initial = $row[2];} + if (strlen($row[3])>0) {$label_last_name = $row[3];} + if (strlen($row[4])>0) {$label_address1 = $row[4];} + if (strlen($row[5])>0) {$label_address2 = $row[5];} + if (strlen($row[6])>0) {$label_address3 = $row[6];} + if (strlen($row[7])>0) {$label_city = $row[7];} + if (strlen($row[8])>0) {$label_state = $row[8];} + if (strlen($row[9])>0) {$label_province = $row[9];} + if (strlen($row[10])>0) {$label_postal_code = $row[10];} + if (strlen($row[11])>0) {$label_vendor_lead_code = $row[11];} + if (strlen($row[12])>0) {$label_gender = $row[12];} + if (strlen($row[13])>0) {$label_phone_number = $row[13];} + if (strlen($row[14])>0) {$label_phone_code = $row[14];} + if (strlen($row[15])>0) {$label_alt_phone = $row[15];} + if (strlen($row[16])>0) {$label_security_phrase = $row[16];} + if (strlen($row[17])>0) {$label_email = $row[17];} + if (strlen($row[18])>0) {$label_comments = $row[18];} + ### END find any custom field labels ### + if ($label_gender == '---HIDE---') + {$hide_gender=1;} + + if ($WeBRooTWritablE > 0) + { + fwrite ($fp, "vdweb|GOOD|$date|$VD_login|XXXX|$ip|$browser|$LOGfullname|\n"); + fclose($fp); + } + $user_abb = "$VD_login$VD_login$VD_login$VD_login"; + while ( (strlen($user_abb) > 4) and ($forever_stop < 200) ) + {$user_abb = preg_replace("/^\./i","",$user_abb); $forever_stop++;} + + $stmt="SELECT allowed_campaigns from vicidial_user_groups where user_group='$VU_user_group';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01008',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $LOGallowed_campaigns =$row[0]; + + if ( (!preg_match("/\s$VD_campaign\s/i",$LOGallowed_campaigns)) and (!preg_match("/ALL-CAMPAIGNS/i",$LOGallowed_campaigns)) ) + { + echo ""._QXZ("Agent web client: Campaign Login")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo ""._QXZ("Sorry, you are not allowed to login to this campaign:")." $VD_campaign\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo _QXZ("Login").": \n
"; + echo _QXZ("Password").":
\n"; + echo _QXZ("Campaign").": $camp_form_code
\n"; + echo "   \n"; + echo "\n"; + echo "
\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } + + ##### check to see that the campaign is active + $stmt="SELECT count(*) FROM vicidial_campaigns where campaign_id='$VD_campaign' and active='Y';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01009',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $CAMPactive=$row[0]; + if($CAMPactive>0) + { + $VARstatuses=''; + $VARstatusnames=''; + $VARSELstatuses=''; + $VARSELstatuses_ct=0; + $VARCBstatuses=''; + $VARMINstatuses=''; + $VARMAXstatuses=''; + $VARCBstatusesLIST=''; + $cVARstatuses=''; + $cVARstatusnames=''; + $cVARSELstatuses=''; + $cVARSELstatuses_ct=0; + $cVARCBstatuses=''; + $cVARMINstatuses=''; + $cVARMAXstatuses=''; + $cVARCBstatusesLIST=''; + ##### grab the statuses that can be used for dispositioning by an agent + $stmt="SELECT status,status_name,scheduled_callback,selectable,min_sec,max_sec FROM vicidial_statuses WHERE status != 'NEW' order by status limit 500;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01010',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $VD_statuses_ct = mysqli_num_rows($rslt); + $i=0; + while ($i < $VD_statuses_ct) + { + $row=mysqli_fetch_row($rslt); + $statuses[$i] = $row[0]; + $status_names[$i] = $row[1]; + $CBstatuses[$i] = $row[2]; + $SELstatuses[$i] = $row[3]; + $MINsec[$i] = $row[4]; + $MAXsec[$i] = $row[5]; + if ($TEST_all_statuses > 0) {$SELstatuses[$i]='Y';} + $VARstatuses = "$VARstatuses'$statuses[$i]',"; + $VARstatusnames = "$VARstatusnames'$status_names[$i]',"; + $VARSELstatuses = "$VARSELstatuses'$SELstatuses[$i]',"; + $VARCBstatuses = "$VARCBstatuses'$CBstatuses[$i]',"; + $VARMINstatuses = "$VARMINstatuses'$MINsec[$i]',"; + $VARMAXstatuses = "$VARMAXstatuses'$MAXsec[$i]',"; + if ($CBstatuses[$i] == 'Y') + {$VARCBstatusesLIST .= " $statuses[$i]";} + if ($SELstatuses[$i] == 'Y') + {$VARSELstatuses_ct++;} + $i++; + } + + ##### grab the campaign-specific statuses that can be used for dispositioning by an agent + $stmt="SELECT status,status_name,scheduled_callback,selectable,min_sec,max_sec FROM vicidial_campaign_statuses WHERE status != 'NEW' and campaign_id='$VD_campaign' order by status limit 500;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01011',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $VD_statuses_camp = mysqli_num_rows($rslt); + $j=0; + while ($j < $VD_statuses_camp) + { + $row=mysqli_fetch_row($rslt); + $statuses[$i] = $row[0]; + $status_names[$i] = $row[1]; + $CBstatuses[$i] = $row[2]; + $SELstatuses[$i] = $row[3]; + $MINsec[$i] = $row[4]; + $MAXsec[$i] = $row[5]; + if ($TEST_all_statuses > 0) {$SELstatuses[$i]='Y';} + $cVARstatuses = "$cVARstatuses'$statuses[$i]',"; + $cVARstatusnames = "$cVARstatusnames'$status_names[$i]',"; + $cVARSELstatuses = "$cVARSELstatuses'$SELstatuses[$i]',"; + $cVARCBstatuses = "$cVARCBstatuses'$CBstatuses[$i]',"; + $cVARMINstatuses = "$cVARMINstatuses'$MINsec[$i]',"; + $cVARMAXstatuses = "$cVARMAXstatuses'$MAXsec[$i]',"; + if ($CBstatuses[$i] == 'Y') + {$cVARCBstatusesLIST .= " $statuses[$i]";} + if ($SELstatuses[$i] == 'Y') + {$cVARSELstatuses_ct++;} + $i++; + $j++; + } + # $VD_statuses_ct = ($VD_statuses_ct+$VD_statuses_camp); + $VARstatuses = substr("$VARstatuses", 0, -1); + $VARstatusnames = substr("$VARstatusnames", 0, -1); + $VARSELstatuses = substr("$VARSELstatuses", 0, -1); + $VARCBstatuses = substr("$VARCBstatuses", 0, -1); + $VARMINstatuses = substr("$VARMINstatuses", 0, -1); + $VARMAXstatuses = substr("$VARMAXstatuses", 0, -1); + $VARCBstatusesLIST .= " "; + $cVARstatuses = substr("$cVARstatuses", 0, -1); + $cVARstatusnames = substr("$cVARstatusnames", 0, -1); + $cVARSELstatuses = substr("$cVARSELstatuses", 0, -1); + $cVARCBstatuses = substr("$cVARCBstatuses", 0, -1); + $cVARMINstatuses = substr("$cVARMINstatuses", 0, -1); + $cVARMAXstatuses = substr("$cVARMAXstatuses", 0, -1); + $cVARCBstatusesLIST .= " "; + + ##### grab the campaign-specific HotKey statuses that can be used for dispositioning by an agent + $stmt="SELECT hotkey,status,status_name FROM vicidial_campaign_hotkeys WHERE selectable='Y' and status != 'NEW' and campaign_id='$VD_campaign' order by hotkey limit 9;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01012',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $HK_statuses_camp = mysqli_num_rows($rslt); + $w=0; + $HKboxA=''; + $HKboxB=''; + $HKboxC=''; + while ($w < $HK_statuses_camp) + { + $row=mysqli_fetch_row($rslt); + $HKhotkey[$w] =$row[0]; + $HKstatus[$w] =$row[1]; + $HKstatus_name[$w] =$row[2]; + $HKhotkeys = "$HKhotkeys'$HKhotkey[$w]',"; + $HKstatuses = "$HKstatuses'$HKstatus[$w]',"; + $HKstatusnames = "$HKstatusnames'$HKstatus_name[$w]',"; + if ($w < 3) + {$HKboxA = "$HKboxA $HKhotkey[$w] - $HKstatus[$w] - $HKstatus_name[$w]
";} + if ( ($w >= 3) and ($w < 6) ) + {$HKboxB = "$HKboxB $HKhotkey[$w] - $HKstatus[$w] - $HKstatus_name[$w]
";} + if ($w >= 6) + {$HKboxC = "$HKboxC $HKhotkey[$w] - $HKstatus[$w] - $HKstatus_name[$w]
";} + $w++; + } + $HKhotkeys = substr("$HKhotkeys", 0, -1); + $HKstatuses = substr("$HKstatuses", 0, -1); + $HKstatusnames = substr("$HKstatusnames", 0, -1); + + ##### grab the campaign settings + $stmt="SELECT park_ext,park_file_name,web_form_address,allow_closers,auto_dial_level,dial_timeout,dial_prefix,campaign_cid,campaign_vdad_exten,campaign_rec_exten,campaign_recording,campaign_rec_filename,campaign_script,get_call_launch,am_message_exten,xferconf_a_dtmf,xferconf_a_number,xferconf_b_dtmf,xferconf_b_number,alt_number_dialing,scheduled_callbacks,wrapup_seconds,wrapup_message,closer_campaigns,use_internal_dnc,allcalls_delay,omit_phone_code,agent_pause_codes_active,no_hopper_leads_logins,campaign_allow_inbound,manual_dial_list_id,default_xfer_group,xfer_groups,disable_alter_custphone,display_queue_count,manual_dial_filter,agent_clipboard_copy,use_campaign_dnc,three_way_call_cid,dial_method,three_way_dial_prefix,web_form_target,vtiger_screen_login,agent_allow_group_alias,default_group_alias,quick_transfer_button,prepopulate_transfer_preset,view_calls_in_queue,view_calls_in_queue_launch,call_requeue_button,pause_after_each_call,no_hopper_dialing,agent_dial_owner_only,agent_display_dialable_leads,web_form_address_two,agent_select_territories,crm_popup_login,crm_login_address,timer_action,timer_action_message,timer_action_seconds,start_call_url,dispo_call_url,xferconf_c_number,xferconf_d_number,xferconf_e_number,use_custom_cid,scheduled_callbacks_alert,scheduled_callbacks_count,manual_dial_override,blind_monitor_warning,blind_monitor_message,blind_monitor_filename,timer_action_destination,enable_xfer_presets,hide_xfer_number_to_dial,manual_dial_prefix,customer_3way_hangup_logging,customer_3way_hangup_seconds,customer_3way_hangup_action,ivr_park_call,manual_preview_dial,api_manual_dial,manual_dial_call_time_check,my_callback_option,per_call_notes,agent_lead_search,agent_lead_search_method,queuemetrics_phone_environment,auto_pause_precall,auto_pause_precall_code,auto_resume_precall,manual_dial_cid,custom_3way_button_transfer,callback_days_limit,disable_dispo_screen,disable_dispo_status,screen_labels,status_display_fields,pllb_grouping,pllb_grouping_limit,in_group_dial,in_group_dial_select,pause_after_next_call,owner_populate,manual_dial_lead_id,dead_max,dispo_max,pause_max,dead_max_dispo,dispo_max_dispo,max_inbound_calls,manual_dial_search_checkbox,hide_call_log_info,timer_alt_seconds,wrapup_bypass,wrapup_after_hotkey,callback_active_limit,callback_active_limit_override,comments_all_tabs,comments_dispo_screen,comments_callback_screen,qc_comment_history,show_previous_callback,clear_script,manual_dial_search_filter,web_form_address_three,manual_dial_override_field,status_display_ingroup,customer_gone_seconds,agent_display_fields,manual_dial_timeout FROM vicidial_campaigns where campaign_id = '$VD_campaign';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01013',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $row=mysqli_fetch_row($rslt); + $park_ext = $row[0]; + $park_file_name = $row[1]; + $web_form_address = stripslashes($row[2]); + $allow_closers = $row[3]; + $auto_dial_level = $row[4]; + $dial_timeout = $row[5]; + $dial_prefix = $row[6]; + $campaign_cid = $row[7]; + $campaign_vdad_exten = $row[8]; + $campaign_rec_exten = $row[9]; + $campaign_recording = $row[10]; + $campaign_rec_filename = $row[11]; + $campaign_script = $row[12]; + $get_call_launch = $row[13]; + $campaign_am_message_exten = '8320'; + $xferconf_a_dtmf = $row[15]; + $xferconf_a_number = $row[16]; + $xferconf_b_dtmf = $row[17]; + $xferconf_b_number = $row[18]; + $alt_number_dialing = $row[19]; + $VC_scheduled_callbacks = $row[20]; + $wrapup_seconds = $row[21]; + $wrapup_message = $row[22]; + $closer_campaigns = $row[23]; + $use_internal_dnc = $row[24]; + $allcalls_delay = $row[25]; + $omit_phone_code = $row[26]; + $agent_pause_codes_active = $row[27]; + $no_hopper_leads_logins = $row[28]; + $campaign_allow_inbound = $row[29]; + $manual_dial_list_id = $row[30]; + $default_xfer_group = $row[31]; + $xfer_groups = $row[32]; + $disable_alter_custphone = $row[33]; + $display_queue_count = $row[34]; + $manual_dial_filter = $row[35]; + $CopY_tO_ClipboarD = $row[36]; + $use_campaign_dnc = $row[37]; + $three_way_call_cid = $row[38]; + $dial_method = $row[39]; + $three_way_dial_prefix = $row[40]; + $web_form_target = $row[41]; + $vtiger_screen_login = $row[42]; + $agent_allow_group_alias = $row[43]; + $default_group_alias = $row[44]; + $quick_transfer_button = $row[45]; + $prepopulate_transfer_preset = $row[46]; + $view_calls_in_queue = $row[47]; + $view_calls_in_queue_launch = $row[48]; + $call_requeue_button = $row[49]; + $pause_after_each_call = $row[50]; + $no_hopper_dialing = $row[51]; + $agent_dial_owner_only = $row[52]; + $agent_display_dialable_leads = $row[53]; + $web_form_address_two = $row[54]; + $agent_select_territories = $row[55]; + $crm_popup_login = $row[56]; + $crm_login_address = $row[57]; + $timer_action = $row[58]; + $timer_action_message = $row[59]; + $timer_action_seconds = $row[60]; + $start_call_url = $row[61]; + $dispo_call_url = $row[62]; + $xferconf_c_number = $row[63]; + $xferconf_d_number = $row[64]; + $xferconf_e_number = $row[65]; + $use_custom_cid = $row[66]; + $scheduled_callbacks_alert = $row[67]; + $scheduled_callbacks_count = $row[68]; + $manual_dial_override = $row[69]; + $blind_monitor_warning = $row[70]; + $blind_monitor_message = $row[71]; + $blind_monitor_filename = $row[72]; + $timer_action_destination = $row[73]; + $enable_xfer_presets = $row[74]; + $hide_xfer_number_to_dial = $row[75]; + $manual_dial_prefix = $row[76]; + $customer_3way_hangup_logging = $row[77]; + $customer_3way_hangup_seconds = $row[78]; + $customer_3way_hangup_action = $row[79]; + $ivr_park_call = $row[80]; + $manual_preview_dial = $row[81]; + $api_manual_dial = $row[82]; + $manual_dial_call_time_check = $row[83]; + $my_callback_option = $row[84]; + $per_call_notes = $row[85]; + $agent_lead_search = $row[86]; + $agent_lead_search_method = $row[87]; + $qm_phone_environment = $row[88]; + $auto_pause_precall = $row[89]; + $auto_pause_precall_code = $row[90]; + $auto_resume_precall = $row[91]; + $manual_dial_cid = $row[92]; + $custom_3way_button_transfer = $row[93]; + $callback_days_limit = $row[94]; + $disable_dispo_screen = $row[95]; + $disable_dispo_status = $row[96]; + $screen_labels = $row[97]; + $status_display_fields = $row[98]; + $pllb_grouping = $row[99]; + $pllb_grouping_limit = $row[100]; + $in_group_dial = $row[101]; + $in_group_dial_select = $row[102]; + $pause_after_next_call = $row[103]; + $owner_populate = $row[104]; + $manual_dial_lead_id = $row[105]; + $dead_max = $row[106]; + $dispo_max = $row[107]; + $pause_max = $row[108]; + $dead_max_dispo = $row[109]; + $dispo_max_dispo = $row[110]; + $CP_max_inbound_calls = $row[111]; + $manual_dial_search_checkbox = $row[112]; + $hide_call_log_info = $row[113]; + $timer_alt_seconds = $row[114]; + $wrapup_bypass = $row[115]; + $wrapup_after_hotkey = $row[116]; + $callback_active_limit = $row[117]; + $callback_active_limit_override = $row[118]; + $comments_all_tabs = $row[119]; + $comments_dispo_screen = $row[120]; + $comments_callback_screen = $row[121]; + $qc_comment_history = $row[122]; + $show_previous_callback = $row[123]; + $clear_script = $row[124]; + $manual_dial_search_filter =$row[125]; + $web_form_address_three = $row[126]; + $manual_dial_override_field=$row[127]; + $status_display_ingroup = $row[128]; + $customer_gone_seconds = $row[129]; + $agent_display_fields = $row[130]; + $manual_dial_timeout = $row[131]; + + if ( ($manual_dial_timeout < 1) or (strlen($manual_dial_timeout) < 1) ) + {$manual_dial_timeout = $dial_timeout;} + + if ( (strlen($customer_gone_seconds) < 1) or ($customer_gone_seconds < 1) ) + {$customer_gone_seconds=30;} + $customer_gone_seconds_negative = ($customer_gone_seconds * -1); + + if ( ($callback_active_limit_override == 'Y') and ($callback_active_limit > 0) ) + { + $temp_cb_act_lmt_ovrd = preg_replace("/[^0-9]/",'',$VU_custom_three); + if (strlen($temp_cb_act_lmt_ovrd) > 0) + $callback_active_limit = $temp_cb_act_lmt_ovrd; + } + if ($VU_wrapup_seconds_override >= 0) + {$wrapup_seconds = $VU_wrapup_seconds_override;} + if ( ($pause_max < 10) or (strlen($pause_max)<2) ) + {$pause_max=0;} + if ( ($pause_max > 9) and ($pause_max <= $dial_timeout) ) + {$pause_max = ($dial_timeout + 10);} + if ( ($queuemetrics_pe_phone_append > 0) and (strlen($qm_phone_environment)>0) ) + {$qm_phone_environment .= "-$qm_extension";} + + $status_display_NAME=0; + $status_display_CALLID=0; + $status_display_LEADID=0; + $status_display_LISTID=0; + if (preg_match("/NAME/",$status_display_fields)) + {$status_display_NAME=1;} + if (preg_match("/CALLID/",$status_display_fields)) + {$status_display_CALLID=1;} + if (preg_match("/LEADID/",$status_display_fields)) + {$status_display_LEADID=1;} + if (preg_match("/LISTID/",$status_display_fields)) + {$status_display_LISTID=1;} + + if ( ($screen_labels != '--SYSTEM-SETTINGS--') and (strlen($screen_labels)>1) ) + { + $stmt="SELECT label_title,label_first_name,label_middle_initial,label_last_name,label_address1,label_address2,label_address3,label_city,label_state,label_province,label_postal_code,label_vendor_lead_code,label_gender,label_phone_number,label_phone_code,label_alt_phone,label_security_phrase,label_email,label_comments from vicidial_screen_labels where label_id='$screen_labels' and active='Y' limit 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01073',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $screenlabels_count = mysqli_num_rows($rslt); + if ($screenlabels_count > 0) + { + $row=mysqli_fetch_row($rslt); + if (strlen($row[0])>0) {$label_title = $row[0];} + if (strlen($row[1])>0) {$label_first_name = $row[1];} + if (strlen($row[2])>0) {$label_middle_initial = $row[2];} + if (strlen($row[3])>0) {$label_last_name = $row[3];} + if (strlen($row[4])>0) {$label_address1 = $row[4];} + if (strlen($row[5])>0) {$label_address2 = $row[5];} + if (strlen($row[6])>0) {$label_address3 = $row[6];} + if (strlen($row[7])>0) {$label_city = $row[7];} + if (strlen($row[8])>0) {$label_state = $row[8];} + if (strlen($row[9])>0) {$label_province = $row[9];} + if (strlen($row[10])>0) {$label_postal_code = $row[10];} + if (strlen($row[11])>0) {$label_vendor_lead_code = $row[11];} + if (strlen($row[12])>0) {$label_gender = $row[12]; $hide_gender=0;} + if (strlen($row[13])>0) {$label_phone_number = $row[13];} + if (strlen($row[14])>0) {$label_phone_code = $row[14];} + if (strlen($row[15])>0) {$label_alt_phone = $row[15];} + if (strlen($row[16])>0) {$label_security_phrase = $row[16];} + if (strlen($row[17])>0) {$label_email = $row[17];} + if (strlen($row[18])>0) {$label_comments = $row[18];} + ### END find any custom field labels ### + if ($label_gender == '---HIDE---') + {$hide_gender=1;} + } + } + + $hide_dispo_list=0; + if ( ($disable_dispo_screen == 'DISPO_ENABLED') or ($disable_dispo_screen == 'DISPO_SELECT_DISABLED') or (strlen($disable_dispo_status) < 1) ) + { + if ($disable_dispo_screen == 'DISPO_SELECT_DISABLED') + {$hide_dispo_list=1;} + $disable_dispo_screen=0; + $disable_dispo_status=''; + } + if ( ($disable_dispo_screen == 'DISPO_DISABLED') and (strlen($disable_dispo_status) > 0) ) + {$disable_dispo_screen=1;} + + if ( ($VU_agent_lead_search_override == 'ENABLED') or ($VU_agent_lead_search_override == 'LIVE_CALL_INBOUND') or ($VU_agent_lead_search_override == 'LIVE_CALL_INBOUND_AND_MANUAL') or ($VU_agent_lead_search_override == 'DISABLED') ) + {$agent_lead_search = $VU_agent_lead_search_override;} + $AllowManualQueueCalls=1; + $AllowManualQueueCallsChoice=0; + if ($api_manual_dial == 'QUEUE') + { + $AllowManualQueueCalls=0; + $AllowManualQueueCallsChoice=1; + } + if ($manual_preview_dial == 'DISABLED') + {$manual_dial_preview = 0;} + if ($manual_dial_override == 'ALLOW_ALL') + {$agentcall_manual = 1;} + if ($manual_dial_override == 'DISABLE_ALL') + {$agentcall_manual = 0;} + if ($user_territories_active < 1) + {$agent_select_territories = 0;} + if (preg_match("/Y/",$agent_select_territories)) + {$agent_select_territories=1;} + else + {$agent_select_territories=0;} + + if (preg_match("/Y/",$agent_display_dialable_leads)) + {$agent_display_dialable_leads=1;} + else + {$agent_display_dialable_leads=0;} + + if (preg_match("/Y/",$no_hopper_dialing)) + {$no_hopper_dialing=1;} + else + {$no_hopper_dialing=0;} + + if ( (preg_match("/Y/",$call_requeue_button)) and ($auto_dial_level > 0) ) + {$call_requeue_button=1;} + else + {$call_requeue_button=0;} + + if ( (preg_match("/AUTO/",$view_calls_in_queue_launch)) and ($auto_dial_level > 0) ) + {$view_calls_in_queue_launch=1;} + else + {$view_calls_in_queue_launch=0;} + + if ( (!preg_match("/NONE/",$view_calls_in_queue)) and ($auto_dial_level > 0) ) + {$view_calls_in_queue=1;} + else + {$view_calls_in_queue=0;} + + if (preg_match("/Y/",$pause_after_each_call)) + {$dispo_check_all_pause=1;} + + $quick_transfer_button_enabled=0; + $quick_transfer_button_locked=0; + if (preg_match("/IN_GROUP|PRESET_1|PRESET_2|PRESET_3|PRESET_4|PRESET_5/",$quick_transfer_button)) + {$quick_transfer_button_enabled=1;} + if (preg_match("/LOCKED/",$quick_transfer_button)) + {$quick_transfer_button_locked=1;} + + $custom_3way_button_transfer_enabled=0; + $custom_3way_button_transfer_park=0; + $custom_3way_button_transfer_view=0; + $custom_3way_button_transfer_contacts=0; + if (preg_match("/PRESET_|FIELD_/",$custom_3way_button_transfer)) + {$custom_3way_button_transfer_enabled=1;} + if (preg_match("/PARK_/",$custom_3way_button_transfer)) + {$custom_3way_button_transfer_park=1; $custom_3way_button_transfer_enabled=1;} + if (preg_match("/VIEW_PRESET/",$custom_3way_button_transfer)) + {$custom_3way_button_transfer_view=1; $custom_3way_button_transfer_enabled=1;} + if ( (preg_match("/VIEW_CONTACTS/",$custom_3way_button_transfer)) and ($enable_xfer_presets == 'CONTACTS') and ($VU_preset_contact_search != 'DISABLED') ) + {$custom_3way_button_transfer_contacts=1; $custom_3way_button_transfer_enabled=1;} + + $preset_populate=''; + $prepopulate_transfer_preset_enabled=0; + if (preg_match("/PRESET_1|PRESET_2|PRESET_3|PRESET_4|PRESET_5/",$prepopulate_transfer_preset)) + { + $prepopulate_transfer_preset_enabled=1; + if (preg_match("/PRESET_1/",$prepopulate_transfer_preset)) + {$preset_populate = $xferconf_a_number;} + if (preg_match("/PRESET_2/",$prepopulate_transfer_preset)) + {$preset_populate = $xferconf_b_number;} + if (preg_match("/PRESET_3/",$prepopulate_transfer_preset)) + {$preset_populate = $xferconf_c_number;} + if (preg_match("/PRESET_4/",$prepopulate_transfer_preset)) + {$preset_populate = $xferconf_d_number;} + if (preg_match("/PRESET_5/",$prepopulate_transfer_preset)) + {$preset_populate = $xferconf_e_number;} + } + + $VARpreset_names=''; + $VARpreset_numbers=''; + $VARpreset_dtmfs=''; + $VARpreset_hide_numbers=''; + if ($enable_xfer_presets == 'ENABLED') + { + ##### grab the presets for this campaign + $stmt="SELECT preset_name,preset_number,preset_dtmf,preset_hide_number FROM vicidial_xfer_presets WHERE campaign_id='$VD_campaign' order by preset_name limit 500;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01067',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $VD_presets = mysqli_num_rows($rslt); + $j=0; + while ($j < $VD_presets) + { + $row=mysqli_fetch_row($rslt); + $preset_names[$j] = $row[0]; + $preset_numbers[$j] = $row[1]; + $preset_dtmfs[$j] = $row[2]; + $preset_hide_numbers[$j] = $row[3]; + $VARpreset_names = "$VARpreset_names'$preset_names[$j]',"; + $VARpreset_numbers = "$VARpreset_numbers'$preset_numbers[$j]',"; + $VARpreset_dtmfs = "$VARpreset_dtmfs'$preset_dtmfs[$j]',"; + $VARpreset_hide_numbers = "$VARpreset_hide_numbers'$preset_hide_numbers[$j]',"; + $j++; + } + $VARpreset_names = substr("$VARpreset_names", 0, -1); + $VARpreset_numbers = substr("$VARpreset_numbers", 0, -1); + $VARpreset_dtmfs = substr("$VARpreset_dtmfs", 0, -1); + $VARpreset_hide_numbers = substr("$VARpreset_hide_numbers", 0, -1); + $VD_preset_names_ct = $j; + if ($j < 1) + {$enable_xfer_presets='DISABLED';} + } + + $default_group_alias_cid=''; + if (strlen($default_group_alias)>1) + { + $stmt = "select caller_id_number from groups_alias where group_alias_id='$default_group_alias';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01055',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $VDIG_cidnum_ct = mysqli_num_rows($rslt); + if ($VDIG_cidnum_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $default_group_alias_cid = $row[0]; + } + } + + $stmt = "select group_web_vars from vicidial_campaign_agents where campaign_id='$VD_campaign' and user='$VD_login';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01056',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $VDIG_cidogwv = mysqli_num_rows($rslt); + if ($VDIG_cidogwv > 0) + { + $row=mysqli_fetch_row($rslt); + $default_web_vars = $row[0]; + } + + if ( (!preg_match('/DISABLED/',$VU_vicidial_recording_override)) and ($VU_vicidial_recording > 0) ) + { + $campaign_recording = $VU_vicidial_recording_override; + echo "\n"; + } + if ( ($VC_scheduled_callbacks=='Y') and ($VU_scheduled_callbacks=='1') ) + {$scheduled_callbacks='1';} + if ($VU_vicidial_recording=='0') + {$campaign_recording='NEVER';} + if ($VU_alter_custphone_override=='ALLOW_ALTER') + {$disable_alter_custphone='N';} + if (strlen($manual_dial_prefix) < 1) + {$manual_dial_prefix = $dial_prefix;} + if (strlen($three_way_dial_prefix) < 1) + {$three_way_dial_prefix = $dial_prefix;} + if ( ($alt_number_dialing=='Y') or ($alt_number_dialing=='SELECTED') or ($alt_number_dialing=='SELECTED_TIMER_ALT') or ($alt_number_dialing=='SELECTED_TIMER_ADDR3') ) + {$alt_phone_dialing='1';} + else + { + $alt_phone_dialing='0'; + $DefaulTAlTDiaL='0'; + } + if ($display_queue_count=='N') + {$callholdstatus='0';} + if ( ($dial_method == 'INBOUND_MAN') or ($outbound_autodial_active < 1) ) + {$VU_closer_default_blended=0;} + + $closer_campaigns = preg_replace("/^ | -$/","",$closer_campaigns); + $closer_campaigns = preg_replace("/ /","','",$closer_campaigns); + $closer_campaigns = "'$closer_campaigns'"; + + if ( (preg_match('/Y/',$agent_pause_codes_active)) or (preg_match('/FORCE/',$agent_pause_codes_active)) ) + { + ##### grab the pause codes for this campaign + $stmt="SELECT pause_code,pause_code_name FROM vicidial_pause_codes WHERE campaign_id='$VD_campaign' order by pause_code limit 100;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01014',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $VD_pause_codes = mysqli_num_rows($rslt); + $j=0; + while ($j < $VD_pause_codes) + { + $row=mysqli_fetch_row($rslt); + $pause_codes[$i] =$row[0]; + $pause_code_names[$i] =$row[1]; + $VARpause_codes = "$VARpause_codes'$pause_codes[$i]',"; + $VARpause_code_names = "$VARpause_code_names'$pause_code_names[$i]',"; + $i++; + $j++; + } + $VD_pause_codes_ct = ($VD_pause_codes_ct+$VD_pause_codes); + $VARpause_codes = substr("$VARpause_codes", 0, -1); + $VARpause_code_names = substr("$VARpause_code_names", 0, -1); + } + + ##### grab the inbound groups to choose from if campaign contains CLOSER + $VARingroups="''"; + $VARingroup_handlers="''"; + $VARphonegroups="''"; + $VARemailgroups="''"; + $VARchatgroups="''"; + if ( ($campaign_allow_inbound == 'Y') and ($dial_method != 'MANUAL') ) + { + ### validate that the agent has not exceeded their max inbound calls for today + if ( ($VU_max_inbound_calls > 0) or ($CP_max_inbound_calls > 0) ) + { + $max_inbound_calls = $CP_max_inbound_calls; + if ($VU_max_inbound_calls > 0) + {$max_inbound_calls = $VU_max_inbound_calls;} + + $stmt = "SELECT sum(calls_today) FROM vicidial_inbound_group_agents where user='$VD_login' and group_type='C';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01080',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "\n";} + $vigagt_ct = mysqli_num_rows($rslt); + if ($vigagt_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $max_inbound_count = $row[0]; + + if ($max_inbound_count >= $max_inbound_calls) + {$closer_campaigns = "''";} + } + } + + $VARingroups=''; + $VARingroup_handlers=''; + $VARphonegroups=''; + $VARemailgroups=''; + $VARchatgroups=''; + $stmt="SELECT group_id,group_handling from vicidial_inbound_groups where active = 'Y' and group_id IN($closer_campaigns) order by group_id limit 800;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01015',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $closer_ct = mysqli_num_rows($rslt); + $INgrpCT=0; + $EMAILgrpCT=0; + $CHATgrpCT=0; + $PHONEgrpCT=0; + while ($INgrpCT < $closer_ct) + { + $row=mysqli_fetch_row($rslt); + $closer_groups[$INgrpCT] =$row[0]; + $closer_group_handling[$INgrpCT] =$row[1]; // PHONE OR EMAIL OR CHAT - this is important + $VARingroups = "$VARingroups'$closer_groups[$INgrpCT]',"; + $VARingroup_handlers = "$VARingroup_handlers'$closer_group_handling[$INgrpCT]',"; + if ($row[1]=="EMAIL") // Make a list of ingroups for email handling groups, chat handling groups and one for phones, so there is no overlap + { + $VARemailgroups = "$VARemailgroups'$closer_groups[$INgrpCT]',"; + $VARemailgroupsURL = $VARemailgroupsURL."&email_group_ids[]=$closer_groups[$INgrpCT]"; + $EMAILgrpCT++; + } + else if ($row[1]=="CHAT") + { + $VARchatgroups = "$VARchatgroups'$closer_groups[$INgrpCT]',"; + $VARchatgroupsURL = $VARchatgroupsURL."&chat_group_ids[]=$closer_groups[$INgrpCT]"; + $CHATgrpCT++; + } + else + { + $VARphonegroups = "$VARphonegroups'$closer_groups[$INgrpCT]',"; + $VARphonegroupsURL = $VARphonegroupsURL."&phone_group_ids[]=$closer_groups[$INgrpCT]"; + $PHONEgrpCT++; + } + $INgrpCT++; + } + $VARingroups = substr("$VARingroups", 0, -1); + $VARingroup_handlers = substr("$VARingroup_handlers", 0, -1); + $VARphonegroups = substr("$VARphonegroups", 0, -1); + $VARemailgroups = substr("$VARemailgroups", 0, -1); + $VARchatgroups = substr("$VARchatgroups", 0, -1); + } + else + {$closer_campaigns = "''";} + + $in_group_dial_display=0; + if ($in_group_dial != 'DISABLED') + { + $in_group_dial_display=1; + + if ($in_group_dial_select == 'CAMPAIGN_SELECTED') + { + $VARdialingroups=''; + $stmt="select group_id from vicidial_inbound_groups where active = 'Y' and group_id IN($closer_campaigns) order by group_id limit 800;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01076',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $dialcloser_ct = mysqli_num_rows($rslt); + $dialINgrpCT=0; + while ($dialINgrpCT < $dialcloser_ct) + { + $row=mysqli_fetch_row($rslt); + $dial_closer_groups[$dialINgrpCT] =$row[0]; + $VARdialingroups = "$VARdialingroups'$dial_closer_groups[$dialINgrpCT]',"; + $dialINgrpCT++; + } + $VARdialingroups = substr("$VARdialingroups", 0, -1); + } + if ($in_group_dial_select == 'ALL_USER_GROUP') + { + $VARdialingroups=''; + $stmt="select group_id from vicidial_inbound_groups where active = 'Y' and user_group IN('---ALL---','$user_group') order by group_id limit 800;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01077',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $dialcloser_ct = mysqli_num_rows($rslt); + $dialINgrpCT=0; + while ($dialINgrpCT < $dialcloser_ct) + { + $row=mysqli_fetch_row($rslt); + $dial_closer_groups[$dialINgrpCT] =$row[0]; + $VARdialingroups = "$VARdialingroups'$dial_closer_groups[$dialINgrpCT]',"; + $dialINgrpCT++; + } + $VARdialingroups = substr("$VARdialingroups", 0, -1); + } + } + + + ##### gather territory listings for this agent if select territories is enabled + $VARterritories=''; + if ($agent_select_territories > 0) + { + $stmt="SELECT territory from vicidial_user_territories where user='$VD_login';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01062',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $territory_ct = mysqli_num_rows($rslt); + $territoryCT=0; + while ($territoryCT < $territory_ct) + { + $row=mysqli_fetch_row($rslt); + $territories[$territoryCT] =$row[0]; + $VARterritories = "$VARterritories'$territories[$territoryCT]',"; + $territoryCT++; + } + $VARterritories = substr("$VARterritories", 0, -1); + echo "\n"; + } + + ##### grab the allowable inbound groups to choose from for transfer options + $xfer_groups = preg_replace("/^ | -$/","",$xfer_groups); + $xfer_groups = preg_replace("/ /","','",$xfer_groups); + $xfer_groups = "'$xfer_groups'"; + $VARxfergroups="''"; + if ($allow_closers == 'Y') + { + $VARxfergroups=''; + $stmt="select group_id,group_name from vicidial_inbound_groups where active = 'Y' and group_id IN($xfer_groups) order by group_id limit 800;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01016',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $xfer_ct = mysqli_num_rows($rslt); + $XFgrpCT=0; + while ($XFgrpCT < $xfer_ct) + { + $row=mysqli_fetch_row($rslt); + $VARxfergroups = "$VARxfergroups'$row[0]',"; + $VARxfergroupsnames = "$VARxfergroupsnames'$row[1]',"; + if ($row[0] == "$default_xfer_group") {$default_xfer_group_name = $row[1];} + $XFgrpCT++; + } + $VARxfergroups = substr("$VARxfergroups", 0, -1); + $VARxfergroupsnames = substr("$VARxfergroupsnames", 0, -1); + } + + if (preg_match('/Y/',$agent_allow_group_alias)) + { + ##### grab the active group aliases + $stmt="SELECT group_alias_id,group_alias_name,caller_id_number FROM groups_alias WHERE active='Y' order by group_alias_id limit 1000;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01054',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $VD_group_aliases = mysqli_num_rows($rslt); + $j=0; + while ($j < $VD_group_aliases) + { + $row=mysqli_fetch_row($rslt); + $group_alias_id[$i] = $row[0]; + $group_alias_name[$i] = $row[1]; + $caller_id_number[$i] = $row[2]; + $VARgroup_alias_ids = "$VARgroup_alias_ids'$group_alias_id[$i]',"; + $VARgroup_alias_names = "$VARgroup_alias_names'$group_alias_name[$i]',"; + $VARcaller_id_numbers = "$VARcaller_id_numbers'$caller_id_number[$i]',"; + $i++; + $j++; + } + $VD_group_aliases_ct = ($VD_group_aliases_ct+$VD_group_aliases); + $VARgroup_alias_ids = substr("$VARgroup_alias_ids", 0, -1); + $VARgroup_alias_names = substr("$VARgroup_alias_names", 0, -1); + $VARcaller_id_numbers = substr("$VARcaller_id_numbers", 0, -1); + } + + ##### grab the number of leads in the hopper for this campaign + $stmt="SELECT count(*) FROM vicidial_hopper where campaign_id = '$VD_campaign' and status='READY';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01017',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $row=mysqli_fetch_row($rslt); + $campaign_leads_to_call = $row[0]; + echo "\n"; + } + else + { + $VDloginDISPLAY=1; + $VDdisplayMESSAGE = _QXZ("Campaign not active, please try again")."
"; + } + } + else + { + if ($WeBRooTWritablE > 0) + { + fwrite ($fp, "vdweb|FAIL|$date|$VD_login|XXXX|$ip|$browser|\n"); + fclose($fp); + } + $VDloginDISPLAY=1; + + $VDdisplayMESSAGE = _QXZ("Login incorrect, please try again")."
"; + if ($auth_message == 'LOCK') + {$VDdisplayMESSAGE = _QXZ("Too many login attempts, try again in 15 minutes")."
";} + if ($auth_message == 'ERRNETWORK') + {$VDdisplayMESSAGE = _QXZ("Too many network errors, please contact your administrator")."
";} + if ($auth_message == 'ERRSERVERS') + {$VDdisplayMESSAGE = _QXZ("No available servers, please contact your administrator")."
";} + if ($auth_message == 'ERRPHONES') + {$VDdisplayMESSAGE = _QXZ("No available phones, please contact your administrator")."
";} + if ($auth_message == 'ERRDUPLICATE') + {$VDdisplayMESSAGE = _QXZ("You are already logged in, please log out of your other session first")."
";} + if ($auth_message == 'ERRAGENTS') + {$VDdisplayMESSAGE = _QXZ("Too many agents logged in, please contact your administrator")."
";} + if ($auth_message == 'ERRCASE') + {$VDdisplayMESSAGE = _QXZ("Login incorrect, user names are case sensitive")."
";} + } + } + if ($VDloginDISPLAY) + { + echo ""._QXZ("Agent web client: Campaign Login")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "

$VDdisplayMESSAGE

"; + echo ""; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\"VICIdial\" "._QXZ("Campaign Login")."
 
"._QXZ("User Login").":
"._QXZ("User Password:")."
"._QXZ("Campaign:")." $camp_form_code
  \n"; + echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; + echo "\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } + + $original_phone_login = $phone_login; + + # code for parsing load-balanced agent phone allocation where agent interface + # will send multiple phones-table logins so that the script can determine the + # server that has the fewest agents logged into it. + # login: ca101,cb101,cc101 + $alias_found=0; + $stmt="select count(*) from phones_alias where alias_id = '$phone_login';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01018',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $alias_ct = mysqli_num_rows($rslt); + if ($alias_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $alias_found = $row[0]; + } + if ($alias_found > 0) + { + $stmt="select alias_name,logins_list from phones_alias where alias_id = '$phone_login' limit 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01019',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $alias_ct = mysqli_num_rows($rslt); + if ($alias_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $alias_name = $row[0]; + $phone_login = $row[1]; + } + } + + $pa=0; + if ( (preg_match('/,/i',$phone_login)) and (strlen($phone_login) > 2) ) + { + $phoneSQL = "("; + $phones_auto = explode(',',$phone_login); + $phones_auto_ct = count($phones_auto); + while($pa < $phones_auto_ct) + { + if ($pa > 0) + {$phoneSQL .= " or ";} + $desc = ($phones_auto_ct - $pa - 1); # traverse in reverse order + $phoneSQL .= "(login='$phones_auto[$desc]' and pass='$phone_pass')"; + $pa++; + } + $phoneSQL .= ")"; + } + else {$phoneSQL = "login='$phone_login' and pass='$phone_pass'";} + + $authphone=0; + #$stmt="SELECT count(*) from phones where $phoneSQL and active = 'Y';"; + + $active_agentSQL = "and active_agent_login_server='Y'"; + if ($admin_test == 'YES') + {$active_agentSQL='';} + $stmt="SELECT count(*) from phones,servers where $phoneSQL and phones.active = 'Y' and phones.server_ip=servers.server_ip $active_agentSQL;"; + if ($DB) {echo "|$stmt|\n";} + echo "\n"; + + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01020',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $authphone=$row[0]; + if (!$authphone) + { + echo ""._QXZ("Agent web client: Phone Login Error")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "


"; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\"VICIdial\" "._QXZ("Login Error")."
 
"._QXZ("Sorry, your phone login and password are not active in this system, please try again:")."
 
"._QXZ("Phone Login:")."
"._QXZ("Phone Password:")."

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; + echo "
\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } + else + { + ##### BEGIN phone login load balancing functions ##### + ### go through the phones logins list to figure out which server has + ### fewest non-remote agents logged in and use that phone login account + if ($pa > 0) + { + $pb=0; + $pb_login=''; + $pb_server_ip=''; + $pb_count=0; + $pb_log=''; + $pb_valid_server_ips=''; + $pb_force_set=0; + while ( ($pb < $phones_auto_ct) and ($pb_force_set < 1) ) + { + ### find the server_ip of each phone_login + $stmtn="SELECT count(*) from phones where login = '$phones_auto[$pb]';"; + if ($DB) {echo "|$stmtx|\n";} + if ($non_latin > 0) {$rslt=mysql_to_mysqli("SET NAMES 'UTF8'", $link);} + $rslt=mysql_to_mysqli($stmtn, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01084',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rown=mysqli_fetch_row($rslt); + if ($rown[0] > 0) + { + $stmtx="SELECT server_ip from phones where login = '$phones_auto[$pb]';"; + if ($DB) {echo "|$stmtx|\n";} + $rslt=mysql_to_mysqli($stmtx, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01021',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rowx=mysqli_fetch_row($rslt); + } + else + {$rowx[0]='0.0.0.0';} + + ### get number of agents logged in to each server + $stmt="SELECT count(*) from vicidial_live_agents where server_ip = '$rowx[0]' and extension NOT LIKE \"R%\";"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01022',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + + ### find out whether the server is set to active + $stmt="SELECT count(*) from servers where server_ip = '$rowx[0]' and active='Y' $active_agentSQL;"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01023',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rowy=mysqli_fetch_row($rslt); + + $stmt="SELECT count(*) FROM vicidial_conferences where server_ip='$rowx[0]' and ((extension='') or (extension is null));"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01085',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rowys=mysqli_fetch_row($rslt); + + ### find out if this server has a twin + $twin_not_live=0; + if ($rowy[0] > 0) + { + $stmt="SELECT active_twin_server_ip from servers where server_ip = '$rowx[0]';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01070',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rowyy=mysqli_fetch_row($rslt); + if (strlen($rowyy[0]) > 4) + { + ### find out whether the twin server_updater is running + $stmt="SELECT count(*) from server_updater where server_ip = '$rowyy[0]' and last_update > '$past_minutes_date';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01071',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rowyz=mysqli_fetch_row($rslt); + if ($rowyz[0] < 1) {$twin_not_live=1;} + } + } + + ### find out whether the server_updater is running + $stmt="SELECT count(*) from server_updater where server_ip = '$rowx[0]' and last_update > '$past_minutes_date';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01024',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rowz=mysqli_fetch_row($rslt); + + $pb_log .= "$phones_auto[$pb]|$rowx[0]|$row[0]|$rowy[0]|$rowys[0]|$rowz[0]|$twin_not_live| "; + + if ( ($rowy[0] > 0) and ($rowys[0] > 0) and ($rowz[0] > 0) and ($twin_not_live < 1) ) + { + if ( ($pllb_grouping == 'ONE_SERVER_ONLY') or ($pllb_grouping == 'CASCADING') ) + { + if ($pllb_grouping == 'ONE_SERVER_ONLY') + { + ### one-server-only plib check + ### get number of agents logged in to each server + $stmt="SELECT count(*) from vicidial_live_agents where server_ip = '$rowx[0]' and campaign_id='$VD_campaign' and extension NOT LIKE \"R%\";"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01074',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rowG=mysqli_fetch_row($rslt); + + if ($rowG[0] > 0) + { + $pb_count=$row[0]; + $pb_server_ip=$rowx[0]; + $phone_login=$phones_auto[$pb]; + $pb_force_set++; + echo "\n"; + } + } + else + { + ### cascading plib check + ### get number of agents logged in to each server + $stmt="SELECT count(*) from vicidial_live_agents where server_ip = '$rowx[0]' and campaign_id='$VD_campaign' and extension NOT LIKE \"R%\";"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01075',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $rowG=mysqli_fetch_row($rslt); + + echo "\n"; + if ( ($rowG[0] > 0) and ($rowG[0] < $pllb_grouping_limit) and ($row[0] < $SSpllb_grouping_limit) ) + { + $pb_count=$row[0]; + $pb_server_ip=$rowx[0]; + $phone_login=$phones_auto[$pb]; + $pb_force_set++; + echo "\n"; + } + } + } + if ($DB > 0) {echo "($pb_count <> $row[0]) $pb|$pb_force_set|$phones_auto[$pb]|$pb_server_ip|$pb_count| -->\n";} + if ($pb_force_set < 1) + { + if ( ($pb_count >= $row[0]) or (strlen($pb_server_ip) < 4) ) + { + $pb_count=$row[0]; + $pb_server_ip=$rowx[0]; + $phone_login=$phones_auto[$pb]; + } + } + } + $pb++; + } + + + echo "\n"; + } + ##### END phone login load balancing functions ##### + + echo "Agent web client\n"; + $stmt="SELECT extension,dialplan_number,voicemail_id,phone_ip,computer_ip,server_ip,login,pass,status,active,phone_type,fullname,company,picture,messages,old_messages,protocol,local_gmt,ASTmgrUSERNAME,ASTmgrSECRET,login_user,login_pass,login_campaign,park_on_extension,conf_on_extension,VICIDIAL_park_on_extension,VICIDIAL_park_on_filename,monitor_prefix,recording_exten,voicemail_exten,voicemail_dump_exten,ext_context,dtmf_send_extension,call_out_number_group,client_browser,install_directory,local_web_callerID_URL,VICIDIAL_web_URL,AGI_call_logging_enabled,user_switching_enabled,conferencing_enabled,admin_hangup_enabled,admin_hijack_enabled,admin_monitor_enabled,call_parking_enabled,updater_check_enabled,AFLogging_enabled,QUEUE_ACTION_enabled,CallerID_popup_enabled,voicemail_button_enabled,enable_fast_refresh,fast_refresh_rate,enable_persistant_mysql,auto_dial_next_number,VDstop_rec_after_each_call,DBX_server,DBX_database,DBX_user,DBX_pass,DBX_port,DBY_server,DBY_database,DBY_user,DBY_pass,DBY_port,outbound_cid,enable_sipsak_messages,email,template_id,conf_override,phone_context,phone_ring_timeout,conf_secret,is_webphone,use_external_server_ip,codecs_list,webphone_dialpad,phone_ring_timeout,on_hook_agent,webphone_auto_answer,webphone_dialbox,webphone_mute,webphone_volume,webphone_debug from phones where login='$phone_login' and pass='$phone_pass' and active = 'Y';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01025',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $extension=$row[0]; + $dialplan_number=$row[1]; + $voicemail_id=$row[2]; + $phone_ip=$row[3]; + $computer_ip=$row[4]; + $server_ip=$row[5]; + $login=$row[6]; + $pass=$row[7]; + $status=$row[8]; + $active=$row[9]; + $phone_type=$row[10]; + $fullname=$row[11]; + $company=$row[12]; + $picture=$row[13]; + $messages=$row[14]; + $old_messages=$row[15]; + $protocol=$row[16]; + $local_gmt=$row[17]; + $ASTmgrUSERNAME=$row[18]; + $ASTmgrSECRET=$row[19]; + $login_user=$row[20]; + $login_pass=$row[21]; + $login_campaign=$row[22]; + $park_on_extension=$row[23]; + $conf_on_extension=$row[24]; + $VICIDiaL_park_on_extension=$row[25]; + $VICIDiaL_park_on_filename=$row[26]; + $monitor_prefix=$row[27]; + $recording_exten=$row[28]; + $voicemail_exten=$row[29]; + $voicemail_dump_exten=$row[30]; + $ext_context=$row[31]; + $dtmf_send_extension=$row[32]; + $call_out_number_group=$row[33]; + $client_browser=$row[34]; + $install_directory=$row[35]; + $local_web_callerID_URL=$row[36]; + $VICIDiaL_web_URL=$row[37]; + $AGI_call_logging_enabled=$row[38]; + $user_switching_enabled=$row[39]; + $conferencing_enabled=$row[40]; + $admin_hangup_enabled=$row[41]; + $admin_hijack_enabled=$row[42]; + $admin_monitor_enabled=$row[43]; + $call_parking_enabled=$row[44]; + $updater_check_enabled=$row[45]; + $AFLogging_enabled=$row[46]; + $QUEUE_ACTION_enabled=$row[47]; + $CallerID_popup_enabled=$row[48]; + $voicemail_button_enabled=$row[49]; + $enable_fast_refresh=$row[50]; + $fast_refresh_rate=$row[51]; + $enable_persistant_mysql=$row[52]; + $auto_dial_next_number=$row[53]; + $VDstop_rec_after_each_call=$row[54]; + $DBX_server=$row[55]; + $DBX_database=$row[56]; + $DBX_user=$row[57]; + $DBX_pass=$row[58]; + $DBX_port=$row[59]; + $outbound_cid=$row[65]; + $enable_sipsak_messages=$row[66]; + $conf_secret=$row[72]; + $is_webphone=$row[73]; + $use_external_server_ip=$row[74]; + $codecs_list=$row[75]; + $webphone_dialpad=$row[76]; + $phone_ring_timeout=$row[77]; + $on_hook_agent=$row[78]; + $webphone_auto_answer=$row[79]; + $webphone_dialbox=$row[80]; + $webphone_mute=$row[81]; + $webphone_volume=$row[82]; + $webphone_debug=$row[83]; + + $login_context = $ext_context; + if (strlen($meetme_enter_login_filename) > 0) + {$login_context = 'meetme-enter-login';} + + $no_empty_session_warnings=0; + if ( ($phone_login == 'nophone') or ($on_hook_agent == 'Y') ) + { + $no_empty_session_warnings=1; + } + if ($PhonESComPIP == '1') + { + if (strlen($computer_ip) < 4) + { + $stmt="UPDATE phones SET computer_ip='$ip' where login='$phone_login' and pass='$phone_pass' and active = 'Y';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01026',$VD_login,$server_ip,$session_name,$one_mysql_log);} + } + } + if ($PhonESComPIP == '2') + { + $stmt="UPDATE phones SET computer_ip='$ip' where login='$phone_login' and pass='$phone_pass' and active = 'Y';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01027',$VD_login,$server_ip,$session_name,$one_mysql_log);} + } + if ($clientDST) + { + $local_gmt = ($local_gmt + $isdst); + } + + $stmt="SELECT asterisk_version,web_socket_url from servers where server_ip='$server_ip';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01028',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $asterisk_version=$row[0]; + $web_socket_url=$row[1]; + + if ($protocol == 'EXTERNAL') + { + $protocol = 'Local'; + $extension = "$dialplan_number$AT$ext_context"; + } + if (preg_match("/Zap/i",$protocol)) + { + if (preg_match("/^1\.0|^1\.2|^1\.4\.1|^1\.4\.20|^1\.4\.21/i",$asterisk_version)) + {$do_nothing=1;} + else + { + $protocol = 'DAHDI'; + } + } + + $SIP_user = "$protocol/$extension"; + $SIP_user_DiaL = "$protocol/$extension"; + $qm_extension = "$extension"; + if ( (preg_match('/8300/',$dialplan_number)) and (strlen($dialplan_number)<5) and ($protocol == 'Local') ) + { + $SIP_user = "$protocol/$extension$VD_login"; + $qm_extension = "$extension$VD_login"; + } + + # If a park extension is not set, use the default one + if ( (strlen($park_ext)>0) && (strlen($park_file_name)>0) ) + { + $VICIDiaL_park_on_extension = "$park_ext"; + $VICIDiaL_park_on_filename = "$park_file_name"; + echo "\n"; + } + echo "\n"; + + # If a web form address is not set, use the default one + if (strlen($web_form_address)>0) + { + $VICIDiaL_web_form_address = "$web_form_address"; + echo "\n"; + } + else + { + $VICIDiaL_web_form_address = "$VICIDiaL_web_URL"; + print "\n"; + $VICIDiaL_web_form_address_enc = rawurlencode($VICIDiaL_web_form_address); + } + $VICIDiaL_web_form_address_enc = rawurlencode($VICIDiaL_web_form_address); + + # If a web form address two is not set, use the first one + if (strlen($web_form_address_two)>0) + { + $VICIDiaL_web_form_address_two = "$web_form_address_two"; + echo "\n"; + } + else + { + $VICIDiaL_web_form_address_two = "$VICIDiaL_web_form_address"; + echo "\n"; + $VICIDiaL_web_form_address_two_enc = rawurlencode($VICIDiaL_web_form_address_two); + } + $VICIDiaL_web_form_address_two_enc = rawurlencode($VICIDiaL_web_form_address_two); + + # If a web form address three is not set, use the first one + if (strlen($web_form_address_three)>0) + { + $VICIDiaL_web_form_address_three = "$web_form_address_three"; + echo "\n"; + } + else + { + $VICIDiaL_web_form_address_three = "$VICIDiaL_web_form_address"; + echo "\n"; + $VICIDiaL_web_form_address_three_enc = rawurlencode($VICIDiaL_web_form_address_three); + } + $VICIDiaL_web_form_address_three_enc = rawurlencode($VICIDiaL_web_form_address_three); + + # If closers are allowed on this campaign + if ($allow_closers=="Y") + { + $VICIDiaL_allow_closers = 1; + echo "\n"; + } + else + { + $VICIDiaL_allow_closers = 0; + echo "\n"; + } + + + $session_ext = preg_replace("/[^a-z0-9]/i", "", $extension); + if (strlen($session_ext) > 10) {$session_ext = substr($session_ext, 0, 10);} + $session_rand = (rand(1,9999999) + 10000000); + $session_name = "$StarTtimE$US$session_ext$session_rand"; + + if ($webform_sessionname) + {$webform_sessionname = "&session_name=$session_name";} + else + {$webform_sessionname = '';} + + $stmt="DELETE from web_client_sessions where start_time < '$past_month_date' and extension='$extension' and server_ip = '$server_ip' and program = 'vicidial';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01029',$VD_login,$server_ip,$session_name,$one_mysql_log);} + + $stmt="INSERT INTO web_client_sessions values('$extension','$server_ip','vicidial','$NOW_TIME','$session_name');"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01030',$VD_login,$server_ip,$session_name,$one_mysql_log);} + + if ( ( ($campaign_allow_inbound == 'Y') and ($dial_method != 'MANUAL') ) || ($campaign_leads_to_call > 0) || (preg_match('/Y/',$no_hopper_leads_logins)) ) + { + ##### check to see if the user has a conf extension already, this happens if they previously exited uncleanly + $stmt="SELECT conf_exten FROM vicidial_conferences where extension='$SIP_user' and server_ip = '$server_ip' LIMIT 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01032',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $prev_login_ct = mysqli_num_rows($rslt); + $i=0; + while ($i < $prev_login_ct) + { + $row=mysqli_fetch_row($rslt); + $session_id =$row[0]; + $i++; + } + if ($prev_login_ct > 0) + {echo "\n";} + else + { + ##### grab the next available vicidial_conference room and reserve it + $stmt="SELECT count(*) FROM vicidial_conferences where server_ip='$server_ip' and ((extension='') or (extension is null));"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01033',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + if ($row[0] > 0) + { + $stmt="UPDATE vicidial_conferences set extension='$SIP_user', leave_3way='0' where server_ip='$server_ip' and ((extension='') or (extension is null)) limit 1;"; + if ($format=='debug') {echo "\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01034',$VD_login,$server_ip,$session_name,$one_mysql_log);} + + $stmt="SELECT conf_exten from vicidial_conferences where server_ip='$server_ip' and ( (extension='$SIP_user') or (extension='$VD_login') );"; + if ($format=='debug') {echo "\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01035',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $session_id = $row[0]; + } + echo "\n"; + } + + ### mark leads that were not dispositioned during previous calls as ERI + $stmt="UPDATE vicidial_list set status='ERI', user='' where status IN('QUEUE','INCALL') and user ='$VD_login';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01036',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $vlERIaffected_rows = mysqli_affected_rows($link); + echo "\n"; + + $stmt="DELETE from vicidial_hopper where status IN('QUEUE','INCALL','DONE') and user ='$VD_login';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01037',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $vhICaffected_rows = mysqli_affected_rows($link); + echo "\n"; + + $stmt="DELETE from vicidial_live_agents where user ='$VD_login';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01038',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $vlaLIaffected_rows = mysqli_affected_rows($link); + echo "\n"; + + $stmt="DELETE from vicidial_live_inbound_agents where user ='$VD_login';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01039',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $vliaLIaffected_rows = mysqli_affected_rows($link); + echo "\n"; + + $stmt="UPDATE routing_initiated_recordings set processed='2' where user='$VD_login' and processed='0';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01086',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $RIRaffected_rows = mysqli_affected_rows($link); + echo "\n"; + + $VULhostname = php_uname('n'); + $VULservername = $_SERVER['SERVER_NAME']; + if (strlen($VULhostname)<1) {$VULhostname='X';} + if (strlen($VULservername)<1) {$VULservername='X';} + + $stmt="SELECT webserver_id FROM vicidial_webservers where webserver='$VULservername' and hostname='$VULhostname' LIMIT 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01080',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $webserver_id_ct = mysqli_num_rows($rslt); + if ($webserver_id_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $webserver_id = $row[0]; + } + else + { + ##### insert webserver entry + $stmt="INSERT INTO vicidial_webservers (webserver,hostname) values('$VULservername','$VULhostname');"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01081',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($link); + $webserver_id = mysqli_insert_id($link); + echo "\n"; + } + + $stmt="SELECT url_id FROM vicidial_urls where url='$agcPAGE' LIMIT 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01082',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $url_id_ct = mysqli_num_rows($rslt); + if ($url_id_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $url_id = $row[0]; + } + else + { + ##### insert url entry + $stmt="INSERT INTO vicidial_urls (url) values('$agcPAGE');"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01083',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($link); + $url_id = mysqli_insert_id($link); + echo "\n"; + } + + ### insert an entry into the user log for the login event + $vul_data = "$vlERIaffected_rows|$vhICaffected_rows|$vlaLIaffected_rows|$vliaLIaffected_rows"; + $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group,session_id,server_ip,extension,computer_ip,browser,data,phone_login,server_phone,phone_ip,webserver,login_url,browser_width,browser_height) values('$VD_login','LOGIN','$VD_campaign','$NOW_TIME','$StarTtimE','$VU_user_group','$session_id','$server_ip','$protocol/$extension','$ip','$browser','$vul_data','$original_phone_login','$phone_login','LOOKUP','$webserver_id','$url_id','$JS_browser_width','$JS_browser_height');"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01031',$VD_login,$server_ip,$session_name,$one_mysql_log);} + + # echo "You have logged in as user: $VD_login on phone: $SIP_user to campaign: $VD_campaign
\n"; + $VICIDiaL_is_logged_in=1; + + ### set the callerID for manager middleware-app to connect the phone to the user + $SIqueryCID = "S$CIDdate$session_id"; + + ############################################# + ##### START SYSTEM_SETTINGS LOOKUP ##### + $stmt = "SELECT enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_log_id,vicidial_agent_disable,allow_sipsak_messages,queuemetrics_loginout,queuemetrics_addmember_enabled,queuemetrics_pe_phone_append,queuemetrics_pause_type FROM system_settings;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01040',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $qm_conf_ct = mysqli_num_rows($rslt); + if ($qm_conf_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $enable_queuemetrics_logging = $row[0]; + $queuemetrics_server_ip = $row[1]; + $queuemetrics_dbname = $row[2]; + $queuemetrics_login = $row[3]; + $queuemetrics_pass = $row[4]; + $queuemetrics_log_id = $row[5]; + $vicidial_agent_disable = $row[6]; + $allow_sipsak_messages = $row[7]; + $queuemetrics_loginout = $row[8]; + $queuemetrics_addmember_enabled = $row[9]; + $queuemetrics_pe_phone_append = $row[10]; + $queuemetrics_pause_type = $row[11]; + } + ##### END QUEUEMETRICS LOGGING LOOKUP ##### + ########################################### + + if ( ($enable_sipsak_messages > 0) and ($allow_sipsak_messages > 0) and (preg_match("/SIP/i",$protocol)) ) + { + $extension = preg_replace("/\'|\"|\\\\|;/","",$extension); + $phone_ip = preg_replace("/\'|\"|\\\\|;/","",$phone_ip); + $SIPSAK_prefix = 'LIN-'; + echo "\n"; + passthru("/usr/local/bin/sipsak -M -O desktop -B \"$SIPSAK_prefix$VD_campaign\" -r 5060 -s sip:$extension@$phone_ip > /dev/null"); + $SIqueryCID = "$SIPSAK_prefix$VD_campaign$DS$CIDdate"; + } + + $WebPhonEurl=''; + $webphone_content=''; + $TEMP_SIP_user_DiaL = $SIP_user_DiaL; + if ($on_hook_agent == 'Y') + {$TEMP_SIP_user_DiaL = 'Local/8300@default';} + ### insert a NEW record to the vicidial_manager table to be processed + $agent_login_data="||$NOW_TIME|NEW|N|$server_ip||Originate|$SIqueryCID|Channel: $SIP_user_DiaL|Context: $login_context|Exten: $session_id|Priority: 1|Callerid: \"$SIqueryCID\" <$campaign_cid>|||||"; + $agent_login_stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','Originate','$SIqueryCID','Channel: $TEMP_SIP_user_DiaL','Context: $login_context','Exten: $session_id','Priority: 1','Callerid: \"$SIqueryCID\" <$campaign_cid>','','','','','');"; + if ( ($is_webphone != 'Y') and ($is_webphone != 'Y_API_LAUNCH') ) + { + if ($DB) {echo "$agent_login_stmt\n";} + $rslt=mysql_to_mysqli($agent_login_stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01041',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($link); + echo "\n"; + } + else + { + ### build Iframe variable content for webphone here + $codecs_list = preg_replace("/ /",'',$codecs_list); + $codecs_list = preg_replace("/-/",'',$codecs_list); + $codecs_list = preg_replace("/&/",'',$codecs_list); + $webphone_server_ip = $server_ip; + if ($use_external_server_ip=='Y') + { + ##### find external_server_ip if enabled for this phone account + $stmt="SELECT external_server_ip FROM servers where server_ip='$server_ip' LIMIT 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01065',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $exip_ct = mysqli_num_rows($rslt); + if ($exip_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $webphone_server_ip =$row[0]; + } + } + if (strlen($webphone_url) < 6) + { + ##### find webphone_url in system_settings and generate IFRAME code for it ##### + $stmt="SELECT webphone_url FROM system_settings LIMIT 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01066',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $wu_ct = mysqli_num_rows($rslt); + if ($wu_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $webphone_url =$row[0]; + } + } + if (strlen($system_key) < 1) + { + ##### find system_key in system_settings if populated ##### + $stmt="SELECT webphone_systemkey FROM system_settings LIMIT 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01068',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $wsk_ct = mysqli_num_rows($rslt); + if ($wsk_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $system_key =$row[0]; + } + } + $webphone_options='INITIAL_LOAD'; + if ($webphone_dialpad == 'Y') {$webphone_options .= "--DIALPAD_Y";} + if ($webphone_dialpad == 'N') {$webphone_options .= "--DIALPAD_N";} + if ($webphone_dialpad == 'TOGGLE') {$webphone_options .= "--DIALPAD_TOGGLE";} + if ($webphone_dialpad == 'TOGGLE_OFF') {$webphone_options .= "--DIALPAD_OFF_TOGGLE";} + if ($webphone_auto_answer == 'Y') {$webphone_options .= "--AUTOANSWER_Y";} + if ($webphone_auto_answer == 'N') {$webphone_options .= "--AUTOANSWER_N";} + if ($webphone_dialbox == 'Y') {$webphone_options .= "--DIALBOX_Y";} + if ($webphone_dialbox == 'N') {$webphone_options .= "--DIALBOX_N";} + if ($webphone_mute == 'Y') {$webphone_options .= "--MUTE_Y";} + if ($webphone_mute == 'N') {$webphone_options .= "--MUTE_N";} + if ($webphone_volume == 'Y') {$webphone_options .= "--VOLUME_Y";} + if ($webphone_volume == 'N') {$webphone_options .= "--VOLUME_N";} + if ($webphone_debug == 'Y') {$webphone_options .= "--DEBUG";} + if (strlen($web_socket_url) > 5) {$webphone_options .= "--WEBSOCKETURL$web_socket_url";} + + ### base64 encode variables + $b64_phone_login = base64_encode($extension); + $b64_phone_pass = base64_encode($conf_secret); + $b64_session_name = base64_encode($session_name); + $b64_server_ip = base64_encode($webphone_server_ip); + $b64_callerid = base64_encode($outbound_cid); + $b64_protocol = base64_encode($protocol); + $b64_codecs = base64_encode($codecs_list); + $b64_options = base64_encode($webphone_options); + $b64_system_key = base64_encode($system_key); + + $WebPhonEurl = "$webphone_url?phone_login=$b64_phone_login&phone_login=$b64_phone_login&phone_pass=$b64_phone_pass&server_ip=$b64_server_ip&callerid=$b64_callerid&protocol=$b64_protocol&codecs=$b64_codecs&options=$b64_options&system_key=$b64_system_key"; + + if ($is_webphone == 'Y') + { + if ($webphone_location == 'bar') + { + $webphone_content = ""; + } + else + { + $webphone_content = ""; + } + } + } + + $stmt="DELETE from vicidial_session_data where user='$VD_login';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01078',$VD_login,$server_ip,$session_name,$one_mysql_log);} + + $stmt="INSERT INTO vicidial_session_data SET session_name='$session_name',user='$VD_login',campaign_id='$VD_campaign',server_ip='$server_ip',conf_exten='$session_id',extension='$extension',login_time='$NOW_TIME',webphone_url='$WebPhonEurl',agent_login_call='$agent_login_data';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01079',$VD_login,$server_ip,$session_name,$one_mysql_log);} + + ##### grab the campaign_weight and number of calls today on that campaign for the agent + $stmt="SELECT campaign_weight,calls_today,campaign_grade FROM vicidial_campaign_agents where user='$VD_login' and campaign_id = '$VD_campaign';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01042',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $vca_ct = mysqli_num_rows($rslt); + if ($vca_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $campaign_weight = $row[0]; + $calls_today = $row[1]; + $campaign_grade = $row[2]; + $i++; + } + else + { + $campaign_weight = '0'; + $calls_today = '0'; + $campaign_grade = '1'; + $stmt="INSERT INTO vicidial_campaign_agents (user,campaign_id,campaign_rank,campaign_weight,calls_today,campaign_grade) values('$VD_login','$VD_campaign','0','0','$calls_today','$campaign_grade');"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01043',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($link); + echo "\n"; + } + + if ($auto_dial_level > 0) + { + echo "\n"; + + $closer_chooser_string=''; + $stmt="INSERT INTO vicidial_live_agents (user,server_ip,conf_exten,extension,status,lead_id,campaign_id,uniqueid,callerid,channel,random_id,last_call_time,last_update_time,last_call_finish,closer_campaigns,user_level,campaign_weight,calls_today,last_state_change,outbound_autodial,manager_ingroup_set,on_hook_ring_time,on_hook_agent,last_inbound_call_time,last_inbound_call_finish,campaign_grade,pause_code) values('$VD_login','$server_ip','$session_id','$SIP_user','PAUSED','','$VD_campaign','','','','$random','$NOW_TIME','$tsNOW_TIME','$NOW_TIME','$closer_chooser_string','$user_level','$campaign_weight','$calls_today','$NOW_TIME','Y','N','$phone_ring_timeout','$on_hook_agent','$NOW_TIME','$NOW_TIME','$campaign_grade','LOGIN');"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01044',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($link); + echo "\n"; + + if ($enable_queuemetrics_logging > 0) + { + $QM_LOGIN = 'AGENTLOGIN'; + $QM_PHONE = "$VD_login@agents"; + if ( ($queuemetrics_loginout=='CALLBACK') or ($queuemetrics_loginout=='NONE') ) + { + $QM_LOGIN = 'AGENTCALLBACKLOGIN'; + $QM_PHONE = "$SIP_user_DiaL"; + } + $linkB=mysqli_connect("$queuemetrics_server_ip", "$queuemetrics_login", "$queuemetrics_pass"); + if (!$linkB) {die(_QXZ("Could not connect: ")."$queuemetrics_server_ip|$queuemetrics_login" . mysqli_connect_error());} + mysqli_select_db($linkB, "$queuemetrics_dbname"); + + if ( ($queuemetrics_pe_phone_append > 0) and (strlen($qm_phone_environment)>0) ) + {$qm_phone_environment .= "-$qm_extension";} + + if ($queuemetrics_loginout!='NONE') + { + $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='NONE',agent='Agent/$VD_login',verb='$QM_LOGIN',data1='$QM_PHONE',serverid='$queuemetrics_log_id',data4='$qm_phone_environment';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $linkB); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$linkB,$mel,$stmt,'01045',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($linkB); + echo "\n"; + } + + $pause_typeSQL=''; + if ($queuemetrics_pause_type > 0) + {$pause_typeSQL=",data5='AGENT'";} + $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='NONE',agent='Agent/$VD_login',verb='PAUSEALL',serverid='$queuemetrics_log_id',data4='$qm_phone_environment' $pause_typeSQL;"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $linkB); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$linkB,$mel,$stmt,'01046',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($linkB); + echo "\n"; + + if ($queuemetrics_addmember_enabled > 0) + { + $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='$VD_campaign',agent='Agent/$VD_login',verb='ADDMEMBER2',data1='$QM_PHONE',serverid='$queuemetrics_log_id',data4='$qm_phone_environment';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $linkB); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$linkB,$mel,$stmt,'01069',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($linkB); + echo "\n"; + } + + mysqli_close($linkB); + mysqli_select_db($link, "$VARDB_database"); + } + + + if ( ($campaign_allow_inbound == 'Y') and ($dial_method != 'MANUAL') ) + { + print "\n"; + } + } + else + { + print "\n"; + + $stmt="INSERT INTO vicidial_live_agents (user,server_ip,conf_exten,extension,status,lead_id,campaign_id,uniqueid,callerid,channel,random_id,last_call_time,last_update_time,last_call_finish,user_level,campaign_weight,calls_today,last_state_change,outbound_autodial,manager_ingroup_set,on_hook_ring_time,on_hook_agent,campaign_grade) values('$VD_login','$server_ip','$session_id','$SIP_user','PAUSED','','$VD_campaign','','','','$random','$NOW_TIME','$tsNOW_TIME','$NOW_TIME','$user_level', '$campaign_weight', '$calls_today','$NOW_TIME','N','N','$phone_ring_timeout','$on_hook_agent','$campaign_grade');"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01047',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($link); + echo "\n"; + + if ($enable_queuemetrics_logging > 0) + { + $QM_LOGIN = 'AGENTLOGIN'; + $QM_PHONE = "$VD_login@agents"; + if ( ($queuemetrics_loginout=='CALLBACK') or ($queuemetrics_loginout=='NONE') ) + { + $QM_LOGIN = 'AGENTCALLBACKLOGIN'; + $QM_PHONE = "$SIP_user_DiaL"; + } + $linkB=mysqli_connect("$queuemetrics_server_ip", "$queuemetrics_login", "$queuemetrics_pass"); + if (!$linkB) {die(_QXZ("Could not connect: ")."$queuemetrics_server_ip|$queuemetrics_login" . mysqli_connect_error());} + mysqli_select_db($linkB, "$queuemetrics_dbname"); + + if ($queuemetrics_loginout!='NONE') + { + $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='$VD_campaign',agent='Agent/$VD_login',verb='$QM_LOGIN',data1='$QM_PHONE',serverid='$queuemetrics_log_id',data4='$qm_phone_environment';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $linkB); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$linkB,$mel,$stmt,'01048',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($linkB); + echo "\n"; + } + + $pause_typeSQL=''; + if ($queuemetrics_pause_type > 0) + {$pause_typeSQL=",data5='AGENT'";} + $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='NONE',agent='Agent/$VD_login',verb='PAUSEALL',serverid='$queuemetrics_log_id',data4='$qm_phone_environment' $pause_typeSQL;"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $linkB); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$linkB,$mel,$stmt,'01049',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($linkB); + echo "\n"; + + if ($queuemetrics_addmember_enabled > 0) + { + $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='$VD_campaign',agent='Agent/$VD_login',verb='ADDMEMBER2',data1='$QM_PHONE',serverid='$queuemetrics_log_id',data4='$qm_phone_environment';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $linkB); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$linkB,$mel,$stmt,'01072',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($linkB); + echo "\n"; + } + + mysqli_close($linkB); + mysqli_select_db($link, "$VARDB_database"); + } + } + } + else + { + echo ""._QXZ("Agent web client: Campaign Login")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo ""._QXZ("Sorry, there are no leads in the hopper for this campaign")."\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo _QXZ("Login:")." \n
"; + echo _QXZ("Password:")."
\n"; + echo _QXZ("Campaign:")." $camp_form_code
\n"; + echo "   \n"; + echo "\n"; + echo "
\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } + if (strlen($session_id) < 1) + { + echo ""._QXZ("Agent web client: Campaign Login")."\n"; + echo "\n"; + echo "\n"; + if ($hide_timeclock_link < 1) + {echo " "._QXZ("Timeclock")."
\n";} + echo "\n"; + echo "\n"; + echo "
\n"; + echo ""._QXZ("Sorry, there are no available sessions").": |$session_id|$server_ip|$extension|$SIP_user|\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo _QXZ("Login:")." \n
"; + echo _QXZ("Password:")."
\n"; + echo _QXZ("Campaign:")." $camp_form_code
\n"; + echo "   \n"; + echo "\n"; + echo "
\n\n"; + echo "\n\n"; + echo "\n\n"; + exit; + } + + if (preg_match('/MSIE/',$browser)) + { + $useIE=1; + echo "\n"; + } + else + { + $useIE=0; + echo "\n"; + } + + $StarTtimE = date("U"); + $NOW_TIME = date("Y-m-d H:i:s"); + ##### Agent is going to log in so insert the vicidial_agent_log entry now + $stmt="INSERT INTO vicidial_agent_log (user,server_ip,event_time,campaign_id,pause_epoch,pause_sec,wait_epoch,user_group,sub_status,pause_type) values('$VD_login','$server_ip','$NOW_TIME','$VD_campaign','$StarTtimE','0','$StarTtimE','$VU_user_group','LOGIN','AGENT');"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01050',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($link); + $agent_log_id = mysqli_insert_id($link); + echo "\n"; + + ##### update vicidial_campaigns to show agent has logged in + $stmt="UPDATE vicidial_campaigns set campaign_logindate='$NOW_TIME' where campaign_id='$VD_campaign';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01064',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $VCaffected_rows = mysqli_affected_rows($link); + echo "\n"; + + if ($enable_queuemetrics_logging > 0) + { + $StarTtimEpause = ($StarTtimE + 1); + $linkB=mysqli_connect("$queuemetrics_server_ip", "$queuemetrics_login", "$queuemetrics_pass"); + if (!$linkB) {die(_QXZ("Could not connect: ")."$queuemetrics_server_ip|$queuemetrics_login" . mysqli_connect_error());} + mysqli_select_db($linkB, "$queuemetrics_dbname"); + + $pause_typeSQL=''; + if ($queuemetrics_pause_type > 0) + {$pause_typeSQL=",data5='AGENT'";} + + $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimEpause',call_id='NONE',queue='NONE',agent='Agent/$VD_login',verb='PAUSEREASON',data1='LOGIN',data3='$QM_PHONE',serverid='$queuemetrics_log_id'$pause_typeSQL;"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $linkB); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$linkB,$mel,$stmt,'01063',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $affected_rows = mysqli_affected_rows($linkB); + echo "\n"; + + mysqli_close($linkB); + mysqli_select_db($link, "$VARDB_database"); + } + + $stmt="UPDATE vicidial_live_agents SET agent_log_id='$agent_log_id' where user='$VD_login';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01061',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $VLAaffected_rows_update = mysqli_affected_rows($link); + + $stmt="UPDATE vicidial_users SET shift_override_flag='0' where user='$VD_login' and shift_override_flag='1';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01057',$VD_login,$server_ip,$session_name,$one_mysql_log);} + $VUaffected_rows = mysqli_affected_rows($link); + + $S='*'; + $D_s_ip = explode('.', $server_ip); + if (strlen($D_s_ip[0])<2) {$D_s_ip[0] = "0$D_s_ip[0]";} + if (strlen($D_s_ip[0])<3) {$D_s_ip[0] = "0$D_s_ip[0]";} + if (strlen($D_s_ip[1])<2) {$D_s_ip[1] = "0$D_s_ip[1]";} + if (strlen($D_s_ip[1])<3) {$D_s_ip[1] = "0$D_s_ip[1]";} + if (strlen($D_s_ip[2])<2) {$D_s_ip[2] = "0$D_s_ip[2]";} + if (strlen($D_s_ip[2])<3) {$D_s_ip[2] = "0$D_s_ip[2]";} + if (strlen($D_s_ip[3])<2) {$D_s_ip[3] = "0$D_s_ip[3]";} + if (strlen($D_s_ip[3])<3) {$D_s_ip[3] = "0$D_s_ip[3]";} + $server_ip_dialstring = "$D_s_ip[0]$S$D_s_ip[1]$S$D_s_ip[2]$S$D_s_ip[3]$S"; + + ##### grab the datails of all active scripts in the system + $stmt="SELECT script_id,script_name FROM vicidial_scripts WHERE active='Y' order by script_id limit 1000;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01051',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $MM_scripts = mysqli_num_rows($rslt); + $e=0; + while ($e < $MM_scripts) + { + $row=mysqli_fetch_row($rslt); + $MMscriptid[$e] =$row[0]; + $MMscriptname[$e] = urlencode($row[1]); + $MMscriptids = "$MMscriptids'$MMscriptid[$e]',"; + $MMscriptnames = "$MMscriptnames'$MMscriptname[$e]',"; + $e++; + } + $MMscriptids = substr("$MMscriptids", 0, -1); + $MMscriptnames = substr("$MMscriptnames", 0, -1); + + + ##### BEGIN vicidial_list FIELD LENGTH LOOKUP ##### + $MAXvendor_lead_code = '20'; + $MAXphone_code = '10'; + $MAXphone_number = '18'; + $MAXtitle = '4'; + $MAXfirst_name = '30'; + $MAXmiddle_initial = '1'; + $MAXlast_name = '30'; + $MAXaddress1 = '100'; + $MAXaddress2 = '100'; + $MAXaddress3 = '100'; + $MAXcity = '50'; + $MAXstate = '2'; + $MAXprovince = '50'; + $MAXpostal_code = '10'; + $MAXalt_phone = '12'; + $MAXemail = '70'; + $MAXsecurity_phrase = '100'; + + $stmt = "SHOW COLUMNS FROM vicidial_list;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01087',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $scvl_ct = mysqli_num_rows($rslt); + $s=0; + while ($scvl_ct > $s) + { + $row=mysqli_fetch_row($rslt); + $vl_field = $row[0]; + $vl_type = preg_replace("/[^0-9]/",'',$row[1]); + if (strlen($vl_type) > 0) + { + if ( ($vl_field == 'vendor_lead_code') and ($MAXvendor_lead_code != $vl_type) ) + {$MAXvendor_lead_code = $vl_type;} + if ( ($vl_field == 'phone_code') and ($MAXphone_code != $vl_type) ) + {$MAXphone_code = $vl_type;} + if ( ($vl_field == 'phone_number') and ($MAXphone_number != $vl_type) ) + {$MAXphone_number = $vl_type;} + if ( ($vl_field == 'title') and ($MAXtitle != $vl_type) ) + {$MAXtitle = $vl_type;} + if ( ($vl_field == 'first_name') and ($MAXfirst_name != $vl_type) ) + {$MAXfirst_name = $vl_type;} + if ( ($vl_field == 'middle_initial') and ($MAXmiddle_initial != $vl_type) ) + {$MAXmiddle_initial = $vl_type;} + if ( ($vl_field == 'last_name') and ($MAXlast_name != $vl_type) ) + {$MAXlast_name = $vl_type;} + if ( ($vl_field == 'address1') and ($MAXaddress1 != $vl_type) ) + {$MAXaddress1 = $vl_type;} + if ( ($vl_field == 'address2') and ($MAXaddress2 != $vl_type) ) + {$MAXaddress2 = $vl_type;} + if ( ($vl_field == 'address3') and ($MAXaddress3 != $vl_type) ) + {$MAXaddress3 = $vl_type;} + if ( ($vl_field == 'city') and ($MAXcity != $vl_type) ) + {$MAXcity = $vl_type;} + if ( ($vl_field == 'state') and ($MAXstate != $vl_type) ) + {$MAXstate = $vl_type;} + if ( ($vl_field == 'province') and ($MAXprovince != $vl_type) ) + {$MAXprovince = $vl_type;} + if ( ($vl_field == 'postal_code') and ($MAXpostal_code != $vl_type) ) + {$MAXpostal_code = $vl_type;} + if ( ($vl_field == 'alt_phone') and ($MAXalt_phone != $vl_type) ) + {$MAXalt_phone = $vl_type;} + if ( ($vl_field == 'email') and ($MAXemail != $vl_type) ) + {$MAXemail = $vl_type;} + if ( ($vl_field == 'security_phrase') and ($MAXsecurity_phrase != $vl_type) ) + {$MAXsecurity_phrase = $vl_type;} + } + $s++; + } + ##### END vicidial_list FIELD LENGTH LOOKUP ##### + } + } + + +### SCREEN WIDTH AND HEIGHT CALCULATIONS ### +### DO NOT EDIT! ### +if ($stretch_dimensions > 0) + { + if ($agent_status_view < 1) + { + if ($JS_browser_width >= 510) + {$BROWSER_WIDTH = ($JS_browser_width - 80);} + } + else + { + if ($JS_browser_width >= 730) + {$BROWSER_WIDTH = ($JS_browser_width - 300);} + } + if ($JS_browser_height >= 340) + {$BROWSER_HEIGHT = ($JS_browser_height - 40);} + } +if ($agent_fullscreen=='Y') + { + $BROWSER_WIDTH = ($JS_browser_width - 10); + $BROWSER_HEIGHT = $JS_browser_height; + } +$MASTERwidth=($BROWSER_WIDTH - 340); +$MASTERheight=($BROWSER_HEIGHT - 200); +if ($MASTERwidth < 430) {$MASTERwidth = '430';} +if ($MASTERheight < 300) {$MASTERheight = '300';} +if ($per_call_notes == 'ENABLED') + { + if ($MASTERheight < 340) {$MASTERheight = '340';} + } +if ($webphone_location == 'bar') {$MASTERwidth = ($MASTERwidth + $webphone_height);} + +$CAwidth = ($MASTERwidth + 340); # 770 - cover all (none-in-session, customer hunngup, etc...) +$SBwidth = ($MASTERwidth + 331); # 761 - SideBar starting point +$MNwidth = ($MASTERwidth + 330); # 760 - main frame +$XFwidth = ($MASTERwidth + 320); # 750 - transfer/conference +$HCwidth = ($MASTERwidth + 310); # 740 - hotkeys and callbacks +$CQwidth = ($MASTERwidth + 300); # 730 - calls in queue listings +$AMwidth = ($MASTERwidth + 270); # 700 - refresh links +$SCwidth = ($MASTERwidth + 230); # 670 - live call seconds counter, sidebar link +$PDwidth = ($MASTERwidth + 210); # 650 - preset-dial links +$MUwidth = ($MASTERwidth + 180); # 610 - agent mute +$SSwidth = ($MASTERwidth + 176); # 606 - scroll script +$SDwidth = ($MASTERwidth + 170); # 600 - scroll script, customer data and calls-in-session +$HKwidth = ($MASTERwidth + 20); # 450 - Hotkeys button +$HSwidth = ($MASTERwidth + 1); # 431 - Header spacer +$PBwidth = ($MASTERwidth + 0); # 430 - Presets list +$CLwidth = ($MASTERwidth - 120); # 310 - Calls in queue link + + +$GHheight = ($MASTERheight + 1260);# 1560 - Gender Hide span +$DBheight = ($MASTERheight + 260); # 560 - Debug span +$WRheight = ($MASTERheight + 210); # 510 - Warning boxes +$CQheight = ($MASTERheight + 140); # 440 - Calls in queue section +$SLheight = ($MASTERheight + 122); # 422 - SideBar link, Agents view link +$QLheight = ($MASTERheight + 112); # 412 - Calls in queue link +$HKheight = ($MASTERheight + 105); # 405 - HotKey active Button +$AMheight = ($MASTERheight + 100); # 400 - Agent mute buttons +$PBheight = ($MASTERheight + 90); # 390 - preset dial links +$MBheight = ($MASTERheight + 65); # 365 - Manual Dial Buttons +$CBheight = ($MASTERheight + 50); # 350 - Agent Callback, pause code, volume control Buttons and agent status +$SSheight = ($MASTERheight + 31); # 331 - script content +$HTheight = ($MASTERheight + 10); # 310 - transfer frame, callback comments and hotkey +$BPheight = ($MASTERheight - 250); # 50 - bottom buffer, Agent Xfer Span +$SCheight = 49; # 49 - seconds on call display +$SFheight = 65; # 65 - height of the script and form contents +$SRheight = 69; # 69 - height of the script and form refrech links +$CHheight = ($JS_browser_height - 50); +if ($webphone_location == 'bar') + { + $SCheight = ($SCheight + $webphone_height); +# $SFheight = ($SFheight + $webphone_height); + $SRheight = ($SRheight + $webphone_height); + } +$AVTheight = '0'; +if ($is_webphone) {$AVTheight = '20';} + + +################################################################ +### BEGIN - build the callback calendar (12 months) ### +################################################################ +define ('ADAY', (60*60*24)); +$CdayARY = getdate(); +$Cmon = $CdayARY['mon']; +$Cyear = $CdayARY['year']; +$CTODAY = date("Y-m"); +$CTODAYmday = date("j"); +$CINC=0; +$live_days=0; +$limit_days=999; +if ($callback_days_limit > 0) + {$limit_days=$callback_days_limit;} + +$Cmonths = Array('0','January','February','March','April','May','June', + 'July','August','September','October','November','December'); +$Cdays = Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); + +$CCAL_OUT = ''; + +$CCAL_OUT .= ""; + +while ($CINC < 12) + { + if ( ($CINC == 0) || ($CINC == 4) ||($CINC == 8) ) + {$CCAL_OUT .= "";} + + $CCAL_OUT .= ""; + + if ( ($CINC == 3) || ($CINC == 7) ||($CINC == 11) ) + {$CCAL_OUT .= "";} + $CINC++; + } + +$CCAL_OUT .= "
"; + + $CYyear = $Cyear; + $Cmonth= ($Cmon + $CINC); + if ($Cmonth > 12) + { + $Cmonth = ($Cmonth - 12); + $CYyear++; + } + $Cstart= mktime(11,0,0,$Cmonth,1,$CYyear); + $CfirstdayARY = getdate($Cstart); + #echo "|$Cmon|$Cmonth|$CINC|\n"; + $CPRNTDAY = date("Y-m", $Cstart); + + $CCAL_OUT .= ""; + $CCAL_OUT .= ""; + $CCAL_OUT .= ""; + $CCAL_OUT .= ""; + + foreach($Cdays as $Cday) + { + $CDCLR="#ffffff"; + $CCAL_OUT .= ""; + } + + for( $Ccount=0;$Ccount<(6*7);$Ccount++) + { + $Cdayarray = getdate($Cstart); + if((($Ccount) % 7) == 0) + { + if($Cdayarray['mon'] != $CfirstdayARY['mon']) + break; + $CCAL_OUT .= ""; + } + if($Ccount < $CfirstdayARY['wday'] || $Cdayarray['mon'] != $Cmonth) + { + $CCAL_OUT .= ""; + } + else + { + if( ($Cdayarray['mday'] == $CTODAYmday) and ($CPRNTDAY == $CTODAY) ) + { + $CPRNTmday = $Cdayarray['mday']; + if ($CPRNTmday < 10) {$CPRNTmday = "0$CPRNTmday";} + if ($limit_days > $live_days) + { + $CB_date_onclick="onclick=\"CB_date_pick('$CPRNTDAY-$CPRNTmday');return false;\""; + $CBL = ""; + $CEL = ""; + } + else + {$CBL=''; $CEL=''; $CB_date_onclick='';} + $CCAL_OUT .= ""; + $Cstart += ADAY; + $live_days++; + } + else + { + $CDCLR="#ffffff"; + if ( ($Cdayarray['mday'] < $CTODAYmday) and ($CPRNTDAY == $CTODAY) ) + { + $CDCLR="$MAIN_COLOR"; + $CBL = ''; + $CEL = ''; + $CB_date_onclick=''; + } + else + { + $CPRNTmday = $Cdayarray['mday']; + if ($CPRNTmday < 10) {$CPRNTmday = "0$CPRNTmday";} + if ($limit_days > $live_days) + { + $CB_date_onclick="onclick=\"CB_date_pick('$CPRNTDAY-$CPRNTmday');return false;\""; + $CBL = ""; + $CEL = ""; + } + else + {$CBL=''; $CEL=''; $CB_date_onclick='';} + $live_days++; + } + + $CCAL_OUT .= ""; + $Cstart += ADAY; + } + } + } + $CCAL_OUT .= ""; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= $Cmonths[$CfirstdayARY[mon]]." $CfirstdayARY[year]"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "$Cday"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "
 "; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "$CBL$Cdayarray[mday]$CEL"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "$CBL$Cdayarray[mday]$CEL"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "
"; + $CCAL_OUT .= "
"; + +#echo "$CCAL_OUT\n"; +################################################################ +### END - build the callback calendar (12 months) ### +################################################################ + + +?> + + + + +\n"; + +$zi=2; + +?> + + +
+ + +
+
+
+
+
+
+
+           " height="90px" width="545px" alt="Loading" /> +
+
+
+
+ + + + + + +
+ + + + + "._QXZ("ring").")";} + echo "  "._QXZ("to campaign").": $VD_campaign  "; + ?>     + 0) {echo ""._QXZ("TERRITORIES")."     \n";} ?> + 0) {echo ""._QXZ("GROUPS")."     \n";} ?> + "._QXZ("LOGOUT")."\n"; ?> +
+
+ + + + + + + 0) + {echo "\n";} + ?> + 0) + {echo "\n";} + ?> + 0) + { + # INTERNAL CHAT + echo "\n"; + + # CUSTOMER CHAT + echo "\n"; + } + ?> + + + +
" alt="MAIN" width="115px" height="30px" border="0" />" alt="SCRIPT" width="67px" height="30px" border="0" />\"FORM\"\"EMAIL\"\"CHAT\"\"CHAT\"     
      
" name="livecall" alt="Live Call" width="109px" height="30px" border="0" />
+
+ + +

+
+ + + + + + + + + + + + + +
+
\n"; + } + $alt_phone_selected=''; + if ( ($alt_number_dialing=='SELECTED') or ($alt_number_dialing=='SELECTED_TIMER_ALT') or ($alt_number_dialing=='SELECTED_TIMER_ADDR3') ) + {$alt_phone_selected='CHECKED';} + ?> + +
+
+ " border="0" alt="Dial Next Number" />
+ + +
+ />
+
+ + +
+
+
+
+
+ + " border="0" alt="Start Recording" />
+ " width="145px" height="16px" border="0" />
+ " border="0" alt="Web Form" />
+ 0) + {echo "\"Web
\n";} + if ($enable_third_webform > 0) + {echo "\"Web
\n";} + ?> +  
+ " border="0" alt="Park Call" />
+ \"IVR
\n";} + else + {echo "\n";} + ?> + " border="0" alt="Transfer - Conference" />
+ + 0) + {echo "\"Quick
\n";} + if ($custom_3way_button_transfer_enabled > 0) + {echo "\"Custom
\n";} + ?> + + + + 0) + {echo "
\n";} + ?> + + " width="145px" height="16px" border="0" />
+ " border="0" alt="Hangup Customer" />
+ " width="145px" height="16px" border="0" />
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
                         
        + "._QXZ("LEAD SEARCH")."";} + ?> +
+ + + + + +
+ ";} + else + {echo "$label_title: ";} + if ($label_first_name == '---HIDE---') + {echo "  ";} + else + {echo "  $label_first_name: ";} + if ($label_middle_initial == '---HIDE---') + {echo "  ";} + else + {echo "  $label_middle_initial: ";} + if ($label_last_name == '---HIDE---') + {echo "  ";} + else + {echo "  $label_last_name: ";} + + echo "
"; + + if ($label_address1 == '---HIDE---') + {echo " ";} + else + {echo "$label_address1: ";} + + echo "
"; + + if ($label_address2 == '---HIDE---') + {echo " ";} + else + {echo "$label_address2: ";} + + echo ""; + + if ($label_address3 == '---HIDE---') + {echo " ";} + else + {echo "$label_address3: ";} + + echo "
"; + + if ($label_city == '---HIDE---') + {echo " ";} + else + {echo "$label_city: ";} + + echo ""; + + if ($label_state == '---HIDE---') + {echo " ";} + else + {echo "$label_state: ";} + + echo ""; + + if ($label_postal_code == '---HIDE---') + {echo " ";} + else + {echo "$label_postal_code: ";} + + echo "
"; + + if ($label_province == '---HIDE---') + {echo " ";} + else + {echo "$label_province: ";} + + echo ""; + + if ($label_vendor_lead_code == '---HIDE---') + {echo " ";} + else + {echo "$label_vendor_lead_code: ";} + + echo ""; + + if ($label_gender == '---HIDE---') + { + echo ""; + } + else + { + echo "$label_gender: "; + } + + echo "
"; + + if ($label_phone_number == '---HIDE---') + { + echo " "; + echo "   "; + } + else + { + echo "$label_phone_number: "; + + if ( (preg_match('/Y/',$disable_alter_custphone)) or (preg_match('/HIDE/',$disable_alter_custphone)) ) + { + echo "                     "; + echo ""; + } + else + { + echo ""; + } + } + + echo ""; + + if ($label_phone_code == '---HIDE---') + {echo " ";} + else + {echo "$label_phone_code: ";} + + echo ""; + + if ($label_alt_phone == '---HIDE---') + {echo " ";} + else + {echo "$label_alt_phone: ";} + + echo "
"; + + if ($label_security_phrase == '---HIDE---') + {echo " ";} + else + {echo "$label_security_phrase: ";} + + echo ""; + + if ($label_email == '---HIDE---') + {echo " ";} + else + {echo "$label_email: ";} + + if (strlen($agent_display_fields) > 3) + { + echo "
"; + + if (preg_match("/entry_date/",$agent_display_fields)) + { + echo _QXZ("Entry Date").":                       "; + } + if (preg_match("/source_id/",$agent_display_fields)) + { + echo _QXZ("Source ID").":                       "; + } + if (preg_match("/date_of_birth/",$agent_display_fields)) + { + echo _QXZ("Date of Birth").":               "; + } + if (preg_match("/rank/",$agent_display_fields)) + { + echo _QXZ("Rank").":         "; + } + if (preg_match("/owner/",$agent_display_fields)) + { + echo _QXZ("Owner").":               "; + } + } + + echo "
"; + + if ($label_comments == '---HIDE---') + { + echo " "; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + } + else + { + echo "$label_comments:
+
"; + if ( ($multi_line_comments) ) + {echo "\n";} + else + {echo "\n";} + } + echo "
\n"; + + if ($per_call_notes == 'ENABLED') + { + echo _QXZ("Call Notes: "); + if ($agent_call_log_view == '1') + {echo "
"._QXZ("view notes")." ";} + echo "
"; + echo "\n"; + } + else + { + echo " \n"; + } + + + ?> + +
+
+ +
+
+  
+  
+ + +
+ + + + + +        +
+
+ + +
+
+ + +     + + + +
                   
+ + +

 
+
+ 0) ) + {echo ""._QXZ("Alert is ON")."";} + else + {echo ""._QXZ("Alert is OFF")."";} + ?> +
+ + +
+
+ + +     +
+ +" border="0" />
" border="0" /> +
+ + +
+
+ + + "._QXZ("D1 - DIAL")."\n"; + echo "   \n"; + echo ""._QXZ("D2 - DIAL")."\n"; + } + else {echo "
\n";} + ?> +

 
+
+ +
   
 
+ + + 0) + { + if ($view_calls_in_queue_launch > 0) + {echo ""._QXZ("Hide Calls In Queue")."\n";} + else + {echo ""._QXZ("Show Calls In Queue")."\n";} + } +?> + + + +
+
+ + +\n"; + echo "$label_comments:
+
"; + if ( ($multi_line_comments) ) + {echo "\n";} + else + {echo "\n";} + echo "\n"; + } + else + { + echo "\n"; + } +?> +
+ +
  +  
 
+ +$webphone_content\n"; + } +else + { + echo "
  + Web Phone:  
$webphone_content
\n"; + } +?> + + +
+ + + +
 
+ + + + + 0) + { + echo _QXZ("Dialable Leads:")."
 \n"; + } +?> +
+ + + + +
\n";} + ?> +
+
+ + + + + + +
\n";} + ?> +
+
+ + +
\n";} + ?> +
+
+ + +
\n";} + ?> +
+
+ + +
\n";} + ?> +
+
+ + + + + + + + + + + + + +


+ - + + +
+
+
+ + + + + + + +
+
+ + + + + +
+
+ + 0) && ($user_level>=$HKuser_level) && ($VU_hotkeys_active > 0) ) { ?> +" border="0" alt="HOT KEYS INACTIVE" /> + + + + + + + +
+ + + " border="0" alt="Transfer - Conference" style="vertical-align:middle" />            
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + " border="0" alt="LOCAL CLOSER" style="vertical-align:middle" />     + + " border="0" alt="Hangup Xfer Line" style="vertical-align:middle" /> +
+ " border="0" alt="seconds" style="vertical-align:middle" /> +   + " border="0" alt="channel" style="vertical-align:middle" /> + +   + + " border="0" alt="Hangup Both Lines" style="vertical-align:middle" /> +
+ " border="0" alt="Number to call" style="vertical-align:middle" /> +   + +                     + +   + + + + + + + + + " border="0" alt="LEAVE 3-WAY CALL" style="vertical-align:middle" /> +
+ " border="0" alt="Dial Blind Transfer" style="vertical-align:middle" /> +   + " border="0" alt="Dial With Customer" style="vertical-align:middle" /> +   + " border="0" alt="Park Customer Dial" style="vertical-align:middle" /> +   + + " border="0" alt="Presets Button" style="vertical-align:middle" /> + + " border="0" alt="Contacts Button" style="vertical-align:middle" /> + + + D1 + D2 + D3 + D4 + D5 + + +   + " border="0" alt="Blind Transfer VMail Message" style="vertical-align:middle" /> +
+ +
+
+
+
+ +
+
+ + + + + + + + + +
+
+
+
+
+ +
+
+ + + + + +

+
+ + +

+ +

+ +
+
+ + +

+ +

+ +
+
+ + +


+ +

+ +
+
+ +
+ + +
+


+ +
+
+ + +



+
+
+ + +



+
+
+ + +



+
+ + +
+
+ + +
 
+
+ + +
+
+ + +
           
+
\n";} + ?> + + + + + +
+
+ | + +

+ +

  +
+
+ + +

+
\n";} + ?> + + +   +     + +   + +   + + + + +  
+ "._QXZ("MY CALLBACK ONLY")."
";} + + if ($comments_callback_screen != 'REPLACE_CB_NOTES') + {echo _QXZ("CB Comments:")."

\n";} + else + {echo "
\n";} + + echo "
\n"; + ?> + +

+ +

  +
+
+ + + + px height='px' cellpadding=3 cellspacing=4> + + + + + + +
 
+ +
+
+ + + + + + + + + +
+
+
+
+
+ +
+
+ + +
To see information on one of the callbacks below, click on the INFO link. To call the customer back now, click on the DIAL link. If you click on a record below to dial it, it will be removed from the list.",0,'',$VD_login); ?> +
+
\n";} + ?> +
+
  + +                 + +
+
+ + +


+
+ \n"; + } + ?> +

+ + + + + + \n"; + echo " \n"; + echo " + + + + + + + + + +
 
+   + + + + "; + echo "
"._QXZ("Dial Lead ID:")." \n"; + echo "   "._QXZ("(digits only)")."\n"; + } + else + { + echo "\n"; + } + + $LeadLookuPXtra=''; + if ($manual_dial_search_checkbox == 'SELECTED_LOCK') + {$LeadLookuPXtra = 'CHECKED DISABLED ';} + if ($manual_dial_search_checkbox == 'UNSELECTED_LOCK') + {$LeadLookuPXtra = 'DISABLED ';} + ?> +
/> 
+

+     +

+     +

+ +
+


 
+ +   + +   + + +
+
+ +                 + +                 + +
+
+ + +

+
\n";} + ?> + +
+ 0) and ($disable_blended_checkbox < 1) and ($dial_method != 'INBOUND_MAN') and ($VU_agent_choose_blended > 0) ) + { + ?> +
+ + | + +



  +
+
+ + +

+
\n";} + ?> + +
+ | + +



  +
+
+ + + + + "._QXZ("MY CALLBACK ONLY")."
";} + if ( ($outbound_autodial_active < 1) or ($disable_blended_checkbox > 0) or ($dial_method == 'INBOUND_MAN') or ($VU_agent_choose_blended < 1) ) + {echo " "._QXZ("BLENDED CALLING")."
";} + ?> +
+ + +
                  [X]
+
\n";} + ?> +
+

  +
+
+ + +
                  close [X]
+
\n";} + ?> +

+ Contact search requests are all logged in the system."); ?> +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

           
+

  +
+
+ + +
                  [X]
+
\n";} + ?> +
+

  +
+
+ + +
                  [X]
+
\n";} + ?> +

+

+

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
:
:
:
:
:
:

           
+

  +
+
+ + +
                  [X]
+
\n";} + ?> +
+

  +
+
+ + +
                  [X]
+
\n";} + ?> +
+

  + +
+
+ + +
                  [X] +
+
\n";} + ?> + +

  + +
+
+ + +

+
\n";} + ?> + + +

  +
+
+ + +

+
\n";} + ?> + + +
+
+ + +

+
\n";} + ?> + + +

  +
+
+ + +

+
\n";} + ?> + + +

  +
+
+ + +

+     +

+
+
+ + +

--> +
+
+ + +

+
+
+ + + + + + + + +
+ + + + + + +
+ +
+ + + + + +
+   +
+ + + + + + +
  +

+" alt="alert" border="0"> +
  +

+ + + +

+
+ +
  + +
+
+
+ +
+ + + + + + + + diff --git a/www/agc/vicidial.php b/www/agc/vicidial.php index f824cbba..0ecb1fa4 100644 --- a/www/agc/vicidial.php +++ b/www/agc/vicidial.php @@ -523,10 +523,11 @@ # 160414-0922 - Added default_phone_code system settings option # 160420-1342 - Fixed text link overlaps with other languages # 160428-1826 - Fixed user_authorization bug +# 160706-1438 - Redesign for loading, login and logout screens. Added Screen Colors. Logging of browser width/height # -$version = '2.12-492c'; -$build = '160428-1826'; +$version = '2.12-493c'; +$build = '160706-1438'; $mel=1; # Mysql Error Log enabled = 1 $mysql_log_count=87; $one_mysql_log=0; @@ -625,7 +626,7 @@ if ($sl_ct > 0) ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,webroot_writable,timeclock_end_of_day,vtiger_url,enable_vtiger_integration,outbound_autodial_active,enable_second_webform,user_territories_active,static_agent_url,custom_fields_enabled,pllb_grouping_limit,qc_features_active,allow_emails,callback_time_24hour,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_third_webform,default_language,active_modules,allow_chats,chat_url,default_phone_code FROM system_settings;"; +$stmt = "SELECT use_non_latin,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,webroot_writable,timeclock_end_of_day,vtiger_url,enable_vtiger_integration,outbound_autodial_active,enable_second_webform,user_territories_active,static_agent_url,custom_fields_enabled,pllb_grouping_limit,qc_features_active,allow_emails,callback_time_24hour,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_third_webform,default_language,active_modules,allow_chats,chat_url,default_phone_code,agent_screen_colors FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01001',$VD_login,$server_ip,$session_name,$one_mysql_log);} if ($DB) {echo "$stmt\n";} @@ -660,6 +661,7 @@ if ($qm_conf_ct > 0) $chat_enabled = $row[24]; $chat_URL = $row[25]; $default_phone_code = $row[26]; + $agent_screen_colors = $row[27]; } else { @@ -718,6 +720,7 @@ $conf_check_attempts = '3'; # number of attempts to try before loosing webserver $focus_blur_enabled = '0'; # set to 1 to enable the focus/blur enter key blocking(some IE instances have issues) $consult_custom_delay = '2'; # number of seconds to delay consultative transfers when customfields are active $mrglock_ig_select_ct = '4'; # number of seconds to leave in-group select screen open if agent select is disabled +$link_to_grey_version = '1'; # show link to old grey version of agent screen at login screen, next to timeclock link $TEST_all_statuses = '0'; # TEST variable allows all statuses in dispo screen, FOR DEBUG ONLY @@ -743,6 +746,67 @@ if (file_exists('options.php')) require_once('options.php'); } +##### BEGIN Define colors and logo ##### +$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 ($agent_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='$agent_screen_colors';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01XXX',$VD_login,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $qm_conf_ct = mysqli_num_rows($rslt); + if ($qm_conf_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"; +$logo_new=0; +$logo_old=0; +if (file_exists('../vicidial/images/vicidial_admin_web_logo.png')) {$logo_new++;} +if (file_exists('vicidial_admin_web_logo.gif')) {$logo_old++;} +if ($SSweb_logo=='default_new') + { + $selected_logo = "./images/vicidial_admin_web_logo.png"; + } +if ( ($SSweb_logo=='default_old') and ($logo_old > 0) ) + { + $selected_logo = "../vicidial/vicidial_admin_web_logo.gif"; + } +if ( ($SSweb_logo!='default_new') and ($SSweb_logo!='default_old') ) + { + if (file_exists("../vicidial/images/vicidial_admin_web_logo$SSweb_logo")) + { + $selected_logo = "../vicidial/images/vicidial_admin_web_logo$SSweb_logo"; + } + } +##### END Define colors and logo ##### + $hide_gender=0; $US='_'; $CL=':'; @@ -998,13 +1062,17 @@ else } +$grey_link=''; +if ($link_to_grey_version > 0) + {$grey_link = " | "._QXZ("Old Agent Screen")."";} + if ($relogin == 'YES') { echo ""._QXZ("Agent web client: Re-Login")."\n"; echo "\n"; - echo "\n"; + echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; @@ -1013,24 +1081,24 @@ if ($relogin == 'YES') echo "\n"; echo "\n"; echo "\n"; - echo "


"; - echo ""; - echo ""; + echo "


\"VICIdial\" "._QXZ("Re-Login")."
"; + echo ""; + echo ""; echo "\n"; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; - echo "\n"; + echo ""; + echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "
\"Agent "._QXZ("Re-Login")."
 
"._QXZ("Phone Login:")."
"._QXZ("Phone Login:")."
"._QXZ("Phone Password:")."
"._QXZ("Phone Password:")."
"._QXZ("User Login").":
"._QXZ("User Login").":
"._QXZ("User Password:")."
"._QXZ("User Password:")."
"._QXZ("Campaign:")." $camp_form_code
"._QXZ("Campaign:")." $camp_form_code
  \n"; echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; echo "\n\n"; echo "\n\n"; @@ -1046,7 +1114,7 @@ if ($user_login_first == 1) echo "\n"; echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; @@ -1057,20 +1125,20 @@ if ($user_login_first == 1) #echo "\n"; #echo "\n"; echo "

"._QXZ("User Login")."

"; - echo ""; - echo ""; - echo ""; + echo "
\"VICIdial\" "._QXZ("Campaign Login")."
"; + echo ""; + echo ""; echo "\n"; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; - echo "\n"; + echo ""; + echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "
\"Agent "._QXZ("Campaign Login")."
 
"._QXZ("User Login").":
"._QXZ("User Login").":
"._QXZ("User Password:")."
"._QXZ("User Password:")."
"._QXZ("Campaign:")." $camp_form_code
"._QXZ("Campaign:")." $camp_form_code
  \n"; echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; echo "\n\n"; echo "\n\n"; @@ -1095,7 +1163,7 @@ if ($user_login_first == 1) echo "\n"; echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; @@ -1103,24 +1171,24 @@ if ($user_login_first == 1) echo "\n"; echo "\n"; echo "\n"; - echo "


"; - echo ""; - echo ""; + echo "


\"VICIdial\" "._QXZ("Login")."
"; + echo ""; + echo ""; echo "\n"; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; - echo "\n"; + echo ""; + echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "
\"Agent "._QXZ("Login")."
 
"._QXZ("Phone Login:")."
"._QXZ("Phone Login:")."
"._QXZ("Phone Password:")."
"._QXZ("Phone Password:")."
"._QXZ("User Login").":
"._QXZ("User Login").":
"._QXZ("User Password:")."
"._QXZ("User Password:")."
"._QXZ("Campaign:")." $camp_form_code
"._QXZ("Campaign:")." $camp_form_code
  \n"; echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; echo "\n\n"; echo "\n\n"; @@ -1137,7 +1205,7 @@ if ( (strlen($phone_login)<2) or (strlen($phone_pass)<2) ) echo "\n"; echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; @@ -1145,18 +1213,18 @@ if ( (strlen($phone_login)<2) or (strlen($phone_pass)<2) ) echo "\n"; echo "\n"; echo "\n"; - echo "


"; - echo ""; - echo ""; + echo "


\"VICIdial\" "._QXZ("phone login")."
"; + echo ""; + echo ""; echo "\n"; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "
\"Agent "._QXZ("phone login")."
 
"._QXZ("Phone Login:")."
"._QXZ("Phone Login:")."
"._QXZ("Phone Password:")."
"._QXZ("Phone Password:")."
  \n"; echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; echo "\n\n"; echo "\n\n"; @@ -1512,20 +1580,20 @@ else echo "\n"; echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; - echo ""._QXZ("Sorry, you are not allowed to login to this campaign:")." $VD_campaign\n"; + echo ""._QXZ("Sorry, you are not allowed to login to this campaign:")." $VD_campaign\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; - echo _QXZ("Login").": \n
"; - echo _QXZ("Password").":
\n"; - echo _QXZ("Campaign").": $camp_form_code
\n"; + echo ""._QXZ("Login").": \n
"; + echo ""._QXZ("Password").":
\n"; + echo ""._QXZ("Campaign").": $camp_form_code
\n"; echo "   \n"; echo "\n"; echo "\n\n"; @@ -2333,7 +2401,7 @@ else echo "\n"; echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; @@ -2344,20 +2412,20 @@ else echo "\n"; echo "\n"; echo "

$VDdisplayMESSAGE

"; - echo ""; - echo ""; - echo ""; + echo "
\"VICIdial\" "._QXZ("Campaign Login")."
"; + echo ""; + echo ""; echo "\n"; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; - echo "\n"; + echo ""; + echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "
\"Agent "._QXZ("Campaign Login")."
 
"._QXZ("User Login").":
"._QXZ("User Login").":
"._QXZ("User Password:")."
"._QXZ("User Password:")."
"._QXZ("Campaign:")." $camp_form_code
"._QXZ("Campaign:")." $camp_form_code
  \n"; echo "

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; echo "\n\n"; echo "\n\n"; @@ -2433,7 +2501,7 @@ else echo "\n"; echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; @@ -2444,17 +2512,17 @@ else echo "\n"; echo "\n"; echo "\n"; - echo "


"; - echo ""; - echo ""; + echo "


\"VICIdial\" "._QXZ("Login Error")."
"; + echo ""; + echo ""; echo "\n"; echo "\n"; - echo ""; + echo ""; echo "\n"; - echo ""; + echo ""; echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "
\"Agent "._QXZ("Login Error")."
 
"._QXZ("Sorry, your phone login and password are not active in this system, please try again:")."
 
"._QXZ("Phone Login:")."
"._QXZ("Phone Login:")."
"._QXZ("Phone Password:")."
"._QXZ("Phone Password:")."

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build

"._QXZ("VERSION:")." $version       "._QXZ("BUILD:")." $build
\n"; echo "\n\n"; echo "\n\n"; @@ -2965,7 +3033,7 @@ else ### insert an entry into the user log for the login event $vul_data = "$vlERIaffected_rows|$vhICaffected_rows|$vlaLIaffected_rows|$vliaLIaffected_rows"; - $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group,session_id,server_ip,extension,computer_ip,browser,data,phone_login,server_phone,phone_ip,webserver,login_url) values('$VD_login','LOGIN','$VD_campaign','$NOW_TIME','$StarTtimE','$VU_user_group','$session_id','$server_ip','$protocol/$extension','$ip','$browser','$vul_data','$original_phone_login','$phone_login','LOOKUP','$webserver_id','$url_id');"; + $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group,session_id,server_ip,extension,computer_ip,browser,data,phone_login,server_phone,phone_ip,webserver,login_url,browser_width,browser_height) values('$VD_login','LOGIN','$VD_campaign','$NOW_TIME','$StarTtimE','$VU_user_group','$session_id','$server_ip','$protocol/$extension','$ip','$browser','$vul_data','$original_phone_login','$phone_login','LOOKUP','$webserver_id','$url_id','$JS_browser_width','$JS_browser_height');"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01031',$VD_login,$server_ip,$session_name,$one_mysql_log);} @@ -3018,7 +3086,7 @@ else if ($on_hook_agent == 'Y') {$TEMP_SIP_user_DiaL = 'Local/8300@default';} ### insert a NEW record to the vicidial_manager table to be processed - $agent_login_data="||$NOW_TIME|NEW|N|$server_ip||Originate|$SIqueryCID|Channel: $TEMP_SIP_user_DiaL|Context: $login_context|Exten: $session_id|Priority: 1|Callerid: \"$SIqueryCID\" <$campaign_cid>|||||"; + $agent_login_data="||$NOW_TIME|NEW|N|$server_ip||Originate|$SIqueryCID|Channel: $SIP_user_DiaL|Context: $login_context|Exten: $session_id|Priority: 1|Callerid: \"$SIqueryCID\" <$campaign_cid>|||||"; $agent_login_stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','Originate','$SIqueryCID','Channel: $TEMP_SIP_user_DiaL','Context: $login_context','Exten: $session_id','Priority: 1','Callerid: \"$SIqueryCID\" <$campaign_cid>','','','','','');"; if ( ($is_webphone != 'Y') and ($is_webphone != 'Y_API_LAUNCH') ) { @@ -3289,20 +3357,20 @@ else echo "\n"; echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; - echo ""._QXZ("Sorry, there are no leads in the hopper for this campaign")."\n"; + echo ""._QXZ("Sorry, there are no leads in the hopper for this campaign")."\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; - echo _QXZ("Login:")." \n
"; - echo _QXZ("Password:")."
\n"; - echo _QXZ("Campaign:")." $camp_form_code
\n"; + echo ""._QXZ("Login:")." \n
"; + echo ""._QXZ("Password:")."
\n"; + echo ""._QXZ("Campaign:")." $camp_form_code
\n"; echo "   \n"; echo "\n"; echo "\n\n"; @@ -3316,20 +3384,20 @@ else echo "\n"; echo "\n"; if ($hide_timeclock_link < 1) - {echo " "._QXZ("Timeclock")."
\n";} + {echo " "._QXZ("Timeclock")."$grey_link
\n";} echo "\n"; echo "\n"; echo "
\n"; - echo ""._QXZ("Sorry, there are no available sessions").": |$session_id|$server_ip|$extension|$SIP_user|\n"; + echo ""._QXZ("Sorry, there are no available sessions").": |$session_id|$server_ip|$extension|$SIP_user|\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; - echo _QXZ("Login:")." \n
"; - echo _QXZ("Password:")."
\n"; - echo _QXZ("Campaign:")." $camp_form_code
\n"; + echo ""._QXZ("Login:")." \n
"; + echo ""._QXZ("Password:")."
\n"; + echo ""._QXZ("Campaign:")." $camp_form_code
\n"; echo "   \n"; echo "\n"; echo "\n\n"; @@ -4378,7 +4446,9 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";} var DiaLControl_auto_HTML_OFF = "\" border=\"0\" alt=\"pause button disabled\" />"; var DiaLControl_manual_HTML = "\" border=\"0\" alt=\"Dial Next Number\" />"; var image_loading = new Image(); - image_loading.src="./images/"; + image_loading.src="./images/"; + var image_loading_done = new Image(); + image_loading_done.src="./images/"; var image_blank = new Image(); image_blank.src="./images/"; var image_livecall_OFF = new Image(); @@ -11886,8 +11956,9 @@ function set_length(SLnumber,SLlength_goal,SLdirection) var CBflag = ''; var MINMAXbegin=''; var MINMAXend=''; - var VD_statuses_ct_half = parseInt(VARSELstatuses_ct / 2); - var dispo_HTML = "
"; + var VD_statuses_ct_onethird = parseInt(VARSELstatuses_ct / 3); + var VD_statuses_ct_twothird = (VD_statuses_ct_onethird * 2); + var dispo_HTML = "
"; var loop_ct = 0; var print_ct = 0; if (hide_dispo_list < 1) @@ -11908,15 +11979,17 @@ function set_length(SLnumber,SLlength_goal,SLdirection) { if (taskDSgrp == VARstatuses[loop_ct]) { - dispo_HTML = dispo_HTML + "" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + " " + CBflag + "

"; + dispo_HTML = dispo_HTML + "" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + " " + CBflag + "

"; } else { - dispo_HTML = dispo_HTML + "" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + " " + CBflag + "

"; + dispo_HTML = dispo_HTML + "" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + " " + CBflag + "

"; } } - if (print_ct == VD_statuses_ct_half) + if (print_ct == VD_statuses_ct_onethird) {dispo_HTML = dispo_HTML + "
";} + if (print_ct == VD_statuses_ct_twothird) + {dispo_HTML = dispo_HTML + "";} print_ct++; } loop_ct++; @@ -11975,11 +12048,11 @@ function set_length(SLnumber,SLlength_goal,SLdirection) PauseCode_HTML = ''; document.vicidial_form.PauseCodeSelection.value = ''; var VD_pause_codes_ct_half = parseInt(VD_pause_codes_ct / 2); - PauseCode_HTML = "
"; + PauseCode_HTML = "
"; var loop_ct = 0; while (loop_ct < VD_pause_codes_ct) { - PauseCode_HTML = PauseCode_HTML + "" + VARpause_codes[loop_ct] + " - " + VARpause_code_names[loop_ct] + "

"; + PauseCode_HTML = PauseCode_HTML + "" + VARpause_codes[loop_ct] + " - " + VARpause_code_names[loop_ct] + "

"; loop_ct++; if (loop_ct == VD_pause_codes_ct_half) {PauseCode_HTML = PauseCode_HTML + "
";} @@ -11988,7 +12061,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection) if (agent_pause_codes_active=='FORCE') {var Go_BacK_LinK = '';} else - {var Go_BacK_LinK = "";} + {var Go_BacK_LinK = "";} PauseCode_HTML = PauseCode_HTML + "


" + Go_BacK_LinK; document.getElementById("PauseCodeSelectContent").innerHTML = PauseCode_HTML; @@ -12071,7 +12144,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection) var loop_ct = 0; while (loop_ct < VD_preset_names_ct) { - Presets_HTML = Presets_HTML + "" + VARpreset_names[loop_ct]; + Presets_HTML = Presets_HTML + "" + VARpreset_names[loop_ct]; if (VARpreset_hide_numbers[loop_ct]=='N') {Presets_HTML = Presets_HTML + " - " + VARpreset_numbers[loop_ct];} Presets_HTML = Presets_HTML + "
"; @@ -12080,41 +12153,41 @@ function set_length(SLnumber,SLlength_goal,SLdirection) if ( (CalL_XC_a_NuMber.length > 0) || (CalL_XC_a_Dtmf.length > 0) ) { - Presets_HTML = Presets_HTML + "D1"; + Presets_HTML = Presets_HTML + "D1"; if (hide_xfer_number_to_dial=='DISABLED') {Presets_HTML = Presets_HTML + " - " + CalL_XC_a_NuMber;} Presets_HTML = Presets_HTML + "
"; } if ( (CalL_XC_b_NuMber.length > 0) || (CalL_XC_b_Dtmf.length > 0) ) { - Presets_HTML = Presets_HTML + "D2"; + Presets_HTML = Presets_HTML + "D2"; if (hide_xfer_number_to_dial=='DISABLED') {Presets_HTML = Presets_HTML + " - " + CalL_XC_b_NuMber;} Presets_HTML = Presets_HTML + "
"; } if (CalL_XC_c_NuMber.length > 0) { - Presets_HTML = Presets_HTML + "D3"; + Presets_HTML = Presets_HTML + "D3"; if (hide_xfer_number_to_dial=='DISABLED') {Presets_HTML = Presets_HTML + " - " + CalL_XC_c_NuMber;} Presets_HTML = Presets_HTML + "
"; } if (CalL_XC_d_NuMber.length > 0) { - Presets_HTML = Presets_HTML + "D4"; + Presets_HTML = Presets_HTML + "D4"; if (hide_xfer_number_to_dial=='DISABLED') {Presets_HTML = Presets_HTML + " - " + CalL_XC_d_NuMber;} Presets_HTML = Presets_HTML + "
"; } if (CalL_XC_e_NuMber.length > 0) { - Presets_HTML = Presets_HTML + "D5"; + Presets_HTML = Presets_HTML + "D5"; if (hide_xfer_number_to_dial=='DISABLED') {Presets_HTML = Presets_HTML + " - " + CalL_XC_e_NuMber;} Presets_HTML = Presets_HTML + "
"; } - Presets_HTML = Presets_HTML + "


[X]
"; + Presets_HTML = Presets_HTML + "


[X]
"; document.getElementById("PresetsSelectBoxContent").innerHTML = Presets_HTML; } @@ -12157,24 +12230,24 @@ function set_length(SLnumber,SLlength_goal,SLdirection) GroupAlias_HTML = ''; document.vicidial_form.GroupAliasSelection.value = ''; var VD_group_aliases_ct_half = parseInt(VD_group_aliases_ct / 2); - GroupAlias_HTML = "
"; + GroupAlias_HTML = "
"; if (task3way > 0) { VD_group_aliases_ct_half = (VD_group_aliases_ct_half - 1); - GroupAlias_HTML = GroupAlias_HTML + " - " + campaign_cid + "

"; - GroupAlias_HTML = GroupAlias_HTML + " - " + document.vicidial_form.phone_number.value + "

"; - GroupAlias_HTML = GroupAlias_HTML + " - " + outbound_cid + "

"; + GroupAlias_HTML = GroupAlias_HTML + " - " + campaign_cid + "

"; + GroupAlias_HTML = GroupAlias_HTML + " - " + document.vicidial_form.phone_number.value + "

"; + GroupAlias_HTML = GroupAlias_HTML + " - " + outbound_cid + "

"; } var loop_ct = 0; while (loop_ct < VD_group_aliases_ct) { - GroupAlias_HTML = GroupAlias_HTML + "" + VARgroup_alias_ids[loop_ct] + " - " + VARgroup_alias_names[loop_ct] + " - " + VARcaller_id_numbers[loop_ct] + "

"; + GroupAlias_HTML = GroupAlias_HTML + "" + VARgroup_alias_ids[loop_ct] + " - " + VARgroup_alias_names[loop_ct] + " - " + VARcaller_id_numbers[loop_ct] + "

"; loop_ct++; if (loop_ct == VD_group_aliases_ct_half) {GroupAlias_HTML = GroupAlias_HTML + "
";} } - var Go_BacK_LinK = ""; + var Go_BacK_LinK = ""; GroupAlias_HTML = GroupAlias_HTML + "


" + Go_BacK_LinK; document.getElementById("GroupAliasSelectContent").innerHTML = GroupAlias_HTML; @@ -12197,17 +12270,17 @@ function set_length(SLnumber,SLlength_goal,SLdirection) DiaLInGrouP_HTML = ''; document.vicidial_form.DiaLInGrouPSelection.value = ''; var VD_dial_ingroups_ct_half = parseInt(dialINgroupCOUNT / 2); - DiaLInGrouP_HTML = "
"; + DiaLInGrouP_HTML = "
"; var loop_ct = 0; while (loop_ct < dialINgroupCOUNT) { - DiaLInGrouP_HTML = DiaLInGrouP_HTML + "" + VARdialingroups[loop_ct] + "

"; + DiaLInGrouP_HTML = DiaLInGrouP_HTML + "" + VARdialingroups[loop_ct] + "

"; loop_ct++; if (loop_ct == VD_dial_ingroups_ct_half) {DiaLInGrouP_HTML = DiaLInGrouP_HTML + "
";} } - var Go_BacK_LinK = ""; + var Go_BacK_LinK = ""; DiaLInGrouP_HTML = DiaLInGrouP_HTML + "


" + Go_BacK_LinK; document.getElementById("DiaLInGrouPSelectContent").innerHTML = DiaLInGrouP_HTML; @@ -13138,7 +13211,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection) HidEGenDerPulldown(); if ( (VU_agent_choose_ingroups == '1') && (manager_ingroups_set < 1) ) { - var live_CSC_HTML = "
  --- ---
"; + var live_CSC_HTML = "
  --- ---
"; var loop_ct = 0; while (loop_ct < INgroupCOUNT) { @@ -13353,7 +13426,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection) HidEGenDerPulldown(); if (agent_choose_territories > 0) { - var live_TERR_HTML = "
  --- ---
"; + var live_TERR_HTML = "
  --- ---
"; var loop_ct = 0; while (loop_ct < territoryCOUNT) { @@ -13602,7 +13675,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection) } else { - document.getElementById("LogouTProcess").innerHTML = ""; + document.getElementById("LogouTProcess").innerHTML = "



          \" height=\"206px\" width=\"206px\" alt=\"\" />"; + // document.getElementById("LogouTProcess").innerHTML = ""; var xmlhttp=false; /*@cc_on @*/ /*@if (@_jscript_version >= 5) @@ -13635,8 +13709,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection) // alert(VDlogout_query); // alert(xmlhttp.responseText); needToConfirmExit = false; - - document.getElementById("LogouTProcess").innerHTML = ""; + + document.getElementById("LogouTProcess").innerHTML = "



          \" height=\"206px\" width=\"206px\" alt=\"\" />"; } } delete xmlhttp; @@ -13653,7 +13727,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection) if (tempreason=='TIMEOUT') {logout_content="

";} - document.getElementById("LogouTBoxLink").innerHTML = logout_content + "
\n"; + document.getElementById("LogouTBoxLink").innerHTML = logout_content + "\n"; logout_stop_timeouts = 1; @@ -15185,7 +15259,7 @@ function phone_number_format(formatphone) { { showDiv('SearcHResultSDisplaYBox'); - document.getElementById('SearcHResultSSpan').innerHTML = "Searching...\n"; + document.getElementById('SearcHResultSSpan').innerHTML = "\n"; var phone_search_fields = ''; if (document.vicidial_form.search_main_phone.checked==true) @@ -17126,8 +17200,8 @@ function phone_number_format(formatphone) { div.noscroll_script {height: px; width: px; background: #FFF5EC; overflow: hidden; font-size: 12px; font-family: sans-serif;} --> + \n"; $zi=2; @@ -17137,19 +17211,19 @@ $zi=2;
-
+


+

-
-
-           " height="90px" width="545px" alt="Loading" /> +           " height="206px" width="206px" alt="" />

+ @@ -17172,6 +17246,7 @@ $zi=2;
+ @@ -17226,7 +17301,7 @@ $zi=2;
/>
-
+
+
-
                         
        +         "._QXZ("LEAD SEARCH")."";} @@ -17538,6 +17616,8 @@ $zi=2; + + @@ -17903,50 +17983,57 @@ if ($agent_display_dialable_leads > 0) -

+



- +
-

+



- +
-


+




- +
-
-


- +
+


+
-



+



-



+



-



+

+
+
+ +
+
+           " height="206px" width="206px" alt="" /> +


@@ -17958,15 +18045,16 @@ if ($agent_display_dialable_leads > 0) -
+
-
           
+
           

\n";} ?> + @@ -17978,19 +18066,19 @@ if ($agent_display_dialable_leads > 0)

-

  +

 
-

+


\n";} ?> -   +      
@@ -18111,22 +18199,23 @@ if ($agent_display_dialable_leads > 0) -
To see information on one of the callbacks below, click on the INFO link. To call the customer back now, click on the DIAL link. If you click on a record below to dial it, it will be removed from the list.",0,'',$VD_login); ?> +
To see information on one of the callbacks below, click on the INFO link. To call the customer back now, click on the DIAL link. If you click on a record below to dial it, it will be removed from the list.",0,'',$VD_login); ?>

\n";} ?>
-
  +
                  +
-


+ +


 



0)
+

   

@@ -18179,7 +18269,7 @@ if ($agent_display_dialable_leads > 0)

-


 
@@ -18207,16 +18297,17 @@ if ($agent_display_dialable_leads > 0)                                 - +
-

+


\n";} ?> +
0) ?> | -



  +



 
-

+


\n";} ?> +
| -



  +



 
@@ -18259,18 +18351,18 @@ if ($agent_display_dialable_leads > 0) -
                  [X]
+
                  [X]

\n";} ?>
-

  +

 
-
                  close [X]
+
                  close [X]

\n";} @@ -18281,50 +18373,50 @@ if ($agent_display_dialable_leads > 0)
- + - + - + - + - + - + - + - + - +

           

           
-

  +

 
-
                  [X]
+
                  [X]

\n";} ?>
-

  +

 
-
                  [X]
+
                  [X]

\n";} @@ -18335,39 +18427,40 @@ if ($agent_display_dialable_leads > 0)
- + - - + - + - + - + - + - + - + - + - +
+ +
: :
: :
: :
: :
: :
: :

           

           


  @@ -18375,18 +18468,18 @@ if ($agent_display_dialable_leads > 0) -
                  [X]
+
                  [X]

\n";} ?>
-

  +

 
-
                  [X]
+
                  [X]

\n";} @@ -18394,11 +18487,12 @@ if ($agent_display_dialable_leads > 0)


  +
-
                  [X] +
                  [X]
0)

  +
-

+


\n";} ?> -

  +

 
-

+


\n";} ?> - +
-

+


\n";} ?> -

  +

 
-

+


\n";} ?> -

  +

 
-

+

   

+
-

--> +

-->
-

+