From 7d3a1e509b8d99fd8b51d60768a543521bda0b08 Mon Sep 17 00:00:00 2001 From: mattf Date: Thu, 6 Feb 2014 20:15:25 +0000 Subject: [PATCH] Added update_user function to non-agent api Added check for valid date on vicidial.php call log view Added filter for dashes in new campaigns and in-groups git-svn-id: svn://192.168.202.10@2064 3d104415-ff17-0410-8863-d5cf3c621b8a --- UPGRADE | 3 + docs/NON-AGENT_API.txt | 70 +++- extras/MySQL_AST_CREATE_tables.sql | 5 +- extras/upgrade_2.8.sql | 4 + www/agc/vicidial.php | 35 +- www/vicidial/admin.php | 11 +- www/vicidial/non_agent_api.php | 559 ++++++++++++++++++++++++++++- 7 files changed, 675 insertions(+), 12 deletions(-) diff --git a/UPGRADE b/UPGRADE index ac5d69af..14211670 100644 --- a/UPGRADE +++ b/UPGRADE @@ -183,6 +183,9 @@ OTHER CHANGES: to allow no instructions to be played on direct extension calls that go to voicemail. +32. Added Non-Agent API function update_user to allow updating of the major + user fields + diff --git a/docs/NON-AGENT_API.txt b/docs/NON-AGENT_API.txt index 869c5b9e..bf000728 100644 --- a/docs/NON-AGENT_API.txt +++ b/docs/NON-AGENT_API.txt @@ -1,4 +1,4 @@ -NON-AGENT API DOCUMENT Started: 2008-07-24 Updated: 2014-01-24 +NON-AGENT API DOCUMENT Started: 2008-07-24 Updated: 2014-02-06 This document describes the functions of an API(Application Programming Interface) for all functions NOT directly relating to the VICIDIAL Agent screen. @@ -24,6 +24,7 @@ recording_lookup - looks up recordings based upon user and date or lead_id did_log_export - exports all calls inbound to a DID for one day agent_stats_export - exports agent statistics for set time period add_user - adds a user to the system +update_user - updates some user settings in the system add_phone - adds a phone to the system update_phone - updates or deletes an existing phone record in the system add_phone_alias - adds a phone alias record to the system @@ -86,6 +87,7 @@ Changes: 130614-0907 - Added pause code to output of agent_status function 130617-2232 - Added real-time sub-statuses to output of agent_status function 140124-1057 - Added callid_info function +140206-1205 - Added update_user function API Functions use the 'function' variable @@ -806,6 +808,71 @@ SUCCESS: add_user USER HAS BEEN ADDED - 6666|1000|1234|8|Testing+Person|AGENTS + +-------------------------------------------------------------------------------- +update_user - updates or deletes a user entry already in the system + +NOTE: api user for this function must have user_level set to 8 or higher and "modify user" enabled + +REQUIRED FIELDS- +agent_user - 2-20 characters + +OPTIONAL FIELDS- +agent_pass - 1-20 characters +agent_user_level - 1 through 9, one digit only +agent_full_name - 1-50 characters +agent_user_group - 1-20 characters, must be a valid user group +phone_login - 1-20 characters +phone_pass - 1-20 characters +hotkeys_active - 0 or 1 +voicemail_id - 1-10 digits +email - 1-100 characters +custom_one - 1-100 characters +custom_two - 1-100 characters +custom_three - 1-100 characters +custom_four - 1-100 characters +custom_five - 1-100 characters +active - 'Y' or 'N' +campaign_rank - from -9 to 9, this will change the campaign rank for this user on all campaigns +campaign_grade - from 1 to 10, this will change the campaign grade for this user on all campaigns + +Example URL strings for API calls: +http://server/vicidial/non_agent_api.php?source=test&function=update_user&user=6666&pass=1234&agent_user=2424&agent_pass=9876 +http://server/vicidial/non_agent_api.php?source=test&function=update_user&user=6666&pass=1234&agent_user=2424&agent_user_level=3 +http://server/vicidial/non_agent_api.php?source=test&function=update_user&user=6666&pass=1234&agent_user=2424&agent_full_name=Testing&hotkeys_active=1&active=Y +http://server/vicidial/non_agent_api.php?source=test&function=update_user&user=6666&pass=1234&agent_user=2424&campaign_rank=3&campaign_grade=4 + +Example responses: +ERROR: update_user USER DOES NOT HAVE PERMISSION TO UPDATE USERS - 6666|0 +ERROR: update_user USER DOES NOT HAVE PERMISSION TO DELETE USERS - 6666|7878 +ERROR: update_user YOU MUST USE ALL REQUIRED FIELDS - 6666|| +ERROR: update_user USER DOES NOT EXIST - 6666|78789 +ERROR: update_user USER DOES NOT HAVE PERMISSION TO UPDATE THIS USER - 6666|7878 +ERROR: update_user YOU MUST USE A VALID FULL NAME, THIS IS AN OPTIONAL FIELD - 6666| +ERROR: update_user YOU MUST USE A VALID USER LEVEL, THIS IS AN OPTIONAL FIELD - 6666|0|9|1 +ERROR: update_user YOU MUST USE A VALID USER GROUP, THIS IS AN OPTIONAL FIELD - 6666|FAKEGROUP|0 +ERROR: update_user YOU MUST USE A VALID PHONE LOGIN, THIS IS AN OPTIONAL FIELD - 6666|fakephone|0|0 +ERROR: update_user YOU MUST USE A VALID PHONE PASSWORD, THIS IS AN OPTIONAL FIELD - 6666|0 +ERROR: update_user YOU MUST USE A VALID HOTKEYS SETTING, THIS IS AN OPTIONAL FIELD - 6666|2 +ERROR: update_user YOU MUST USE A VALID VOICEMAIL ID, THIS IS AN OPTIONAL FIELD - 6666 +ERROR: update_user YOU MUST USE A VALID EMAIL, THIS IS AN OPTIONAL FIELD - 6666 +ERROR: update_user YOU MUST USE A VALID CUSTOM ONE, THIS IS AN OPTIONAL FIELD - 6666 +ERROR: update_user YOU MUST USE A VALID CUSTOM TWO, THIS IS AN OPTIONAL FIELD - 6666 +ERROR: update_user YOU MUST USE A VALID CUSTOM THREE, THIS IS AN OPTIONAL FIELD - 6666 +ERROR: update_user YOU MUST USE A VALID CUSTOM FOUR, THIS IS AN OPTIONAL FIELD - 6666 +ERROR: update_user YOU MUST USE A VALID CUSTOM FIVE, THIS IS AN OPTIONAL FIELD - 6666 +ERROR: update_user ACTIVE MUST BE Y OR N, THIS IS AN OPTIONAL FIELD - 6666 +ERROR: update_user YOU MUST USE A VALID CAMPAIGN RANK, THIS IS AN OPTIONAL FIELD - 6666|0 +ERROR: update_user YOU MUST USE A VALID CAMPAIGN GRADE, THIS IS AN OPTIONAL FIELD - 6666|0 +ERROR: update_user NO UPDATES DEFINED - 6666|0 +NOTICE: update_user USER CAMPAIGN RANKS HAVE BEEN UPDATED - 6666|9|10 +SUCCESS: update_user USER HAS BEEN UPDATED - 6666|7878 +SUCCESS: update_user USER HAS BEEN DELETED - 6666|7878 + + + + + -------------------------------------------------------------------------------- add_group_alias - adds group alias to the system @@ -924,6 +991,7 @@ ERROR: update_phone YOU MUST USE A VALID PHONE CONTEXT - 6666|0 ERROR: update_phone NO UPDATES DEFINED - 6666|0 SUCCESS: update_phone PHONE HAS BEEN UPDATED - 6666|cc100|10.0.9.8|SIP|100 SUCCESS: update_phone PHONE HAS BEEN DELETED - 6666|cc100|10.0.9.8| +NOTICE: update_phone USER DOES NOT HAVE PERMISSION TO DELETE PHONES - 6666|7878 diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index efccd5db..6896e9cb 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -1660,7 +1660,8 @@ calls_today SMALLINT(5) UNSIGNED default '0', group_web_vars VARCHAR(255) default '', campaign_grade TINYINT(2) UNSIGNED default '1', index (campaign_id), -index (user) +index (user), +unique index vlca_user_campaign_id (user, campaign_id) ) ENGINE=MyISAM; CREATE TABLE vicidial_user_closer_log ( @@ -3252,4 +3253,4 @@ UPDATE vicidial_configuration set value='1766' where name='qc_database_version'; UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1367',db_schema_update_date=NOW(); +UPDATE system_settings SET db_schema_version='1368',db_schema_update_date=NOW(); diff --git a/extras/upgrade_2.8.sql b/extras/upgrade_2.8.sql index 88150286..3154094f 100644 --- a/extras/upgrade_2.8.sql +++ b/extras/upgrade_2.8.sql @@ -200,3 +200,7 @@ UPDATE system_settings SET db_schema_version='1366',db_schema_update_date=NOW() ALTER TABLE phones ADD voicemail_instructions ENUM('Y','N') default 'Y'; UPDATE system_settings SET db_schema_version='1367',db_schema_update_date=NOW() where db_schema_version < 1367; + +CREATE UNIQUE INDEX vlca_user_campaign_id on vicidial_campaign_agents (user, campaign_id); + +UPDATE system_settings SET db_schema_version='1368',db_schema_update_date=NOW() where db_schema_version < 1368; diff --git a/www/agc/vicidial.php b/www/agc/vicidial.php index ec639ff2..972965b7 100644 --- a/www/agc/vicidial.php +++ b/www/agc/vicidial.php @@ -418,10 +418,11 @@ # 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 # -$version = '2.8-387c'; -$build = '140126-0741'; +$version = '2.8-388c'; +$build = '140204-1230'; $mel=1; # Mysql Error Log enabled = 1 $mysql_log_count=79; $one_mysql_log=0; @@ -12726,13 +12727,37 @@ function phone_number_format(formatphone) { // alert("debug: " + AutoDialWaiting + "|" + VD_live_customer_call + "|" + alt_dial_active + "|" + MD_channel_look + "|" + in_lead_preview_state); } } + + if (formdate=='form') + {logdate = document.vicidial_form.calllogdate.value;} + + if (typeof logdate != 'undefined') + { + var validformat=/^\d{4}\-\d{2}\-\d{2}$/ //Basic check for format validity YYYY-MM-DD + var returnval=false + if (!validformat.test(logdate)) + { + move_on=0; + alert_box("Invalid Date Format. Please correct and submit again.") + } + else + { //Detailed check for valid date ranges + var monthfield=logdate.split("-")[1] + var dayfield=logdate.split("-")[2] + var yearfield=logdate.split("-")[0] + var dayobj = new Date(yearfield, monthfield-1, dayfield) + if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield)) + { + move_on=0; + alert_box("Invalid Day, Month, or Year range detected. Please correct and submit again.") + } + } + } + if (move_on == 1) { showDiv('CalLLoGDisplaYBox'); - if (formdate=='form') - {logdate = document.vicidial_form.calllogdate.value;} - var xmlhttp=false; /*@cc_on @*/ /*@if (@_jscript_version >= 5) diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index 2fddc36a..ae0b7b74 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -3272,12 +3272,13 @@ else # 140117-0840 - Added option for Lists Pass Report # 140126-0939 - Added VMAIL_NO_INST options # 140126-2253 - Added voicemail_instructions option for phones +# 140206-1357 - Filter dashes from new or copied campaigns and in-groups # # make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time -$admin_version = '2.8-424a'; -$build = '140126-2253'; +$admin_version = '2.8-425a'; +$build = '140206-1357'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -7796,6 +7797,7 @@ if ($ADD=="2A") if ($ADD==21) { + $campaign_id = preg_replace("/\-/",'',$campaign_id); if ($add_copy_disabled > 0) { echo "
You do not have permission to add records on this system -system_settings-\n"; @@ -7885,6 +7887,7 @@ if ($ADD==21) if ($ADD==20) { + $campaign_id = preg_replace("/\-/",'',$campaign_id); if ($add_copy_disabled > 0) { echo "
You do not have permission to add records on this system -system_settings-\n"; @@ -8557,6 +8560,7 @@ if ($ADD==211) if ($ADD==2111) { + $group_id = preg_replace("/\-/",'',$group_id); if ($add_copy_disabled > 0) { echo "
You do not have permission to add records on this system -system_settings-\n"; @@ -8631,6 +8635,7 @@ if ($ADD==2111) if ( ($ADD==2811) and ($SSallow_emails>0) ) { + $group_id = preg_replace("/\-/",'',$group_id); if ($add_copy_disabled > 0) { echo "
You do not have permission to add records on this system -system_settings-\n"; @@ -8706,6 +8711,7 @@ if ( ($ADD==2811) and ($SSallow_emails>0) ) if ($ADD==2011) { + $group_id = preg_replace("/\-/",'',$group_id); if ($add_copy_disabled > 0) { echo "
You do not have permission to add records on this system -system_settings-\n"; @@ -8780,6 +8786,7 @@ if ($ADD==2011) if ( ($ADD==2911) and ($SSallow_emails>0) ) { + $group_id = preg_replace("/\-/",'',$group_id); if ($add_copy_disabled > 0) { echo "
You do not have permission to add records on this system -system_settings-\n"; diff --git a/www/vicidial/non_agent_api.php b/www/vicidial/non_agent_api.php index 7b21713c..58949f80 100644 --- a/www/vicidial/non_agent_api.php +++ b/www/vicidial/non_agent_api.php @@ -83,10 +83,11 @@ # 130831-0825 - Changed to mysqli PHP functions # 140107-2143 - Added webserver and url logging # 140124-1057 - Added callid_info function +# 140206-1205 - Added update_user function # -$version = '2.8-59'; -$build = '140124-1057'; +$version = '2.8-60'; +$build = '140206-1205'; $api_url_log = 0; $startMS = microtime(); @@ -341,6 +342,12 @@ if (isset($_GET["nanpa_ac_prefix_check"])) {$nanpa_ac_prefix_check=$_GET["nanp elseif (isset($_POST["nanpa_ac_prefix_check"])) {$nanpa_ac_prefix_check=$_POST["nanpa_ac_prefix_check"];} if (isset($_GET["detail"])) {$detail=$_GET["detail"];} elseif (isset($_POST["detail"])) {$detail=$_POST["detail"];} +if (isset($_GET["delete_user"])) {$delete_user=$_GET["delete_user"];} + elseif (isset($_POST["delete_user"])) {$delete_user=$_POST["delete_user"];} +if (isset($_GET["campaign_rank"])) {$campaign_rank=$_GET["campaign_rank"];} + elseif (isset($_POST["campaign_rank"])) {$campaign_rank=$_POST["campaign_rank"];} +if (isset($_GET["campaign_grade"])) {$campaign_grade=$_GET["campaign_grade"];} + elseif (isset($_POST["campaign_grade"])) {$campaign_grade=$_POST["campaign_grade"];} header ("Content-type: text/html; charset=utf-8"); @@ -497,6 +504,9 @@ if ($non_latin < 1) $group = preg_replace('/[^-\|\_0-9a-zA-Z]/','',$group); $expiration_date = preg_replace('/[^-_0-9a-zA-Z]/','',$expiration_date); $nanpa_ac_prefix_check = preg_replace('/[^A-Z]/','',$nanpa_ac_prefix_check); + $delete_user = preg_replace('/[^A-Z]/','',$delete_user); + $campaign_rank = preg_replace('/[^-_0-9]/','',$campaign_rank); + $campaign_grade = preg_replace('/[^0-9]/','',$campaign_grade); } else { @@ -1765,6 +1775,551 @@ if ($function == 'add_user') + + +################################################################################ +### update_user - updates user entry already in the system +################################################################################ +if ($function == 'update_user') + { + if(strlen($source)<2) + { + $result = 'ERROR'; + $result_reason = "Invalid Source"; + echo "$result: $result_reason - $source\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + echo "ERROR: Invalid Source: |$source|\n"; + exit; + } + else + { + $stmt="SELECT count(*) from vicidial_users where user='$user' and vdc_agent_api_access='1' and modify_users='1' and user_level >= 8 and active='Y';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $allowed_user=$row[0]; + if ($allowed_user < 1) + { + $result = 'ERROR'; + $result_reason = "update_user USER DOES NOT HAVE PERMISSION TO UPDATE USERS"; + $data = "$allowed_user"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + { + if ( (strlen($agent_user)<2) or (strlen($agent_user)>20) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE ALL REQUIRED FIELDS"; + $data = "$agent_user|"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + { + $stmt="SELECT user_group from vicidial_users where user='$user' and user_level >= 8;"; + if ($DB>0) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $LOGuser_group = $row[0]; + + $stmt="SELECT allowed_campaigns,admin_viewable_groups from vicidial_user_groups where user_group='$LOGuser_group';"; + if ($DB>0) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $LOGallowed_campaigns = $row[0]; + $LOGadmin_viewable_groups = $row[1]; + + $LOGadmin_viewable_groupsSQL=''; + $whereLOGadmin_viewable_groupsSQL=''; + if ( (!preg_match('/\-\-ALL\-\-/i',$LOGadmin_viewable_groups)) and (strlen($LOGadmin_viewable_groups) > 3) ) + { + $rawLOGadmin_viewable_groupsSQL = preg_replace("/ -/",'',$LOGadmin_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')"; + } + + $stmt="SELECT count(*) from vicidial_users where user='$agent_user';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $user_exists=$row[0]; + if ($user_exists < 1) + { + $result = 'ERROR'; + $result_reason = "update_user USER DOES NOT EXIST"; + $data = "$server_ip"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + { + $user_level_modify_gt='<='; + $stmt="SELECT user_level,modify_same_user_level from vicidial_users where user='$user';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $api_user_level = $row[0]; + $api_modify_same_user_level = $row[1]; + if ($api_modify_same_user_level < 1) + {$user_level_modify_gt='<';} + + $stmt="SELECT count(*) from vicidial_users where user='$agent_user' and user_level $user_level_modify_gt '$api_user_level' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $phone_exists=$row[0]; + if ($phone_exists < 1) + { + $result = 'ERROR'; + $result_reason = "update_user USER DOES NOT HAVE PERMISSION TO UPDATE THIS USER"; + $data = "$agent_user|$user_level_modify_gt|$api_user_level\n"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + { + if ($delete_user == 'Y') + { + $stmt="SELECT count(*) from vicidial_users where user='$user' and vdc_agent_api_access='1' and delete_users='1' and modify_users='1' and user_level >= 8 and active='Y';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $allowed_user=$row[0]; + if ($allowed_user < 1) + { + $result = 'ERROR'; + $result_reason = "update_user USER DOES NOT HAVE PERMISSION TO DELETE USERS"; + $data = "$allowed_user"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + { + $stmt="DELETE FROM vicidial_users WHERE user='$agent_user';"; + $rslt=mysql_to_mysqli($stmt, $link); + $affected_rows = mysqli_affected_rows($link); + if ($DB) {echo "|$stmt|\n";} + + ### LOG INSERTION Admin Log Table ### + $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='$user', ip_address='$ip', event_section='USERS', event_type='DELETE', record_id='$agent_user', event_code='ADMIN API DELETE USER', event_sql=\"$SQL_log\", event_notes='user: $agent_user';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + $result = 'SUCCESS'; + $result_reason = "update_user USER HAS BEEN DELETED"; + $data = "$agent_user|"; + echo "$result: $result_reason - $user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + } + exit; + } + + $passSQL=''; + $pass_hashSQL=''; + $full_nameSQL=''; + $user_levelSQL=''; + $user_groupSQL=''; + $phone_loginSQL=''; + $phone_passSQL=''; + $hotkeys_activeSQL=''; + $voicemail_idSQL=''; + $emailSQL=''; + $custom_oneSQL=''; + $custom_twoSQL=''; + $custom_threeSQL=''; + $custom_fourSQL=''; + $custom_fiveSQL=''; + $activeSQL=''; + + if (strlen($agent_pass) > 0) + { + $pass_hash=''; + if ($SSpass_hash_enabled > 0) + { + $agent_pass = preg_replace("/\'|\"|\\\\|;| /","",$agent_pass); + $pass_hash = exec("../agc/bp.pl --pass=$agent_pass"); + $pass_hash = preg_replace("/PHASH: |\n|\r|\t| /",'',$pass_hash); + $pass_hashSQL = ",pass_hash='$pass_hash'"; + $passSQL=",pass=''"; + } + else + { + $passSQL = " ,pass='$agent_pass'"; + } + } + if (strlen($agent_full_name) > 0) + { + if ($agent_full_name == '--BLANK--') + {$full_nameSQL = " ,full_name=''";} + else + { + if ( (strlen($agent_full_name) > 50) or (strlen($agent_full_name) < 1) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID FULL NAME, THIS IS AN OPTIONAL FIELD"; + $data = "$agent_full_name"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$full_nameSQL = " ,full_name='$agent_full_name'";} + } + } + if (strlen($agent_user_level) > 0) + { + if ( ($agent_user_level > 9) or ($agent_user_level < 1) or ($agent_user_level > $api_user_level) or ( ($agent_user_level == $api_user_level) and ($api_modify_same_user_level < 1) ) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID USER LEVEL, THIS IS AN OPTIONAL FIELD"; + $data = "$agent_user_level|$api_user_level|$api_modify_same_user_level"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$user_levelSQL = " ,user_level='$agent_user_level'";} + } + if (strlen($agent_user_group) > 0) + { + $stmt="SELECT count(*) from vicidial_user_groups where user_group='$agent_user_group' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $valid_user_group = $row[0]; + + if ( (strlen($agent_user_group) > 20) or (strlen($agent_user_group) < 1) or ($valid_user_group < 1) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID USER GROUP, THIS IS AN OPTIONAL FIELD"; + $data = "$agent_user_group|$valid_user_group"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$user_groupSQL = " ,user_group='$agent_user_group'";} + } + if (strlen($phone_login) > 0) + { + if ($phone_login == '--BLANK--') + {$phone_loginSQL = " ,phone_login=''";} + else + { + $stmt="SELECT count(*) from phones where login='$phone_login';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $valid_phone_login = $row[0]; + + $stmt="SELECT count(*) from phones_alias where alias_id='$phone_login';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $valid_phone_alias = $row[0]; + + if ( (strlen($phone_login) > 20) or (strlen($phone_login) < 1) or ( ($valid_phone_login < 1) and ($valid_phone_alias < 1) ) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID PHONE LOGIN, THIS IS AN OPTIONAL FIELD"; + $data = "$phone_login|$valid_phone_login|$valid_phone_alias"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$phone_loginSQL = " ,phone_login='$phone_login'";} + } + } + if (strlen($phone_pass) > 0) + { + if ($phone_pass == '--BLANK--') + {$phone_passSQL = " ,phone_pass=''";} + else + { + if ( (strlen($phone_pass) > 20) or (strlen($phone_pass) < 1) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID PHONE PASSWORD, THIS IS AN OPTIONAL FIELD"; + $data = "$phone_pass"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$phone_passSQL = " ,phone_pass='$phone_pass'";} + } + } + if (strlen($hotkeys_active) > 0) + { + if ( ($hotkeys_active > 1) or ($hotkeys_active < 0) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID HOTKEYS SETTING, THIS IS AN OPTIONAL FIELD"; + $data = "$hotkeys_active"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$hotkeys_activeSQL = " ,hotkeys_active='$hotkeys_active'";} + } + if (strlen($voicemail_id) > 0) + { + if ($voicemail_id == '--BLANK--') + {$voicemail_idSQL = " ,voicemail_id=''";} + else + { + if ( (strlen($voicemail_id) > 10) or (strlen($voicemail_id) < 2) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID VOICEMAIL ID, THIS IS AN OPTIONAL FIELD"; + $data = "$voicemail_id"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$voicemail_idSQL = " ,voicemail_id='$voicemail_id'";} + } + } + if (strlen($email) > 0) + { + if ($email == '--BLANK--') + {$emailSQL = " ,email=''";} + else + { + if ( (strlen($email) > 100) or (strlen($email) < 5) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID EMAIL, THIS IS AN OPTIONAL FIELD"; + $data = "$email"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$emailSQL = " ,email='$email'";} + } + } + if (strlen($custom_one) > 0) + { + if ($custom_one == '--BLANK--') + {$custom_oneSQL = " ,custom_one=''";} + else + { + if (strlen($custom_one) > 100) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID CUSTOM ONE, THIS IS AN OPTIONAL FIELD"; + $data = "$custom_one"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$custom_oneSQL = " ,custom_one='$custom_one'";} + } + } + if (strlen($custom_two) > 0) + { + if ($custom_two == '--BLANK--') + {$custom_twoSQL = " ,custom_two=''";} + else + { + if (strlen($custom_two) > 100) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID CUSTOM TWO, THIS IS AN OPTIONAL FIELD"; + $data = "$custom_two"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$custom_twoSQL = " ,custom_two='$custom_two'";} + } + } + if (strlen($custom_three) > 0) + { + if ($custom_three == '--BLANK--') + {$custom_threeSQL = " ,custom_three=''";} + else + { + if (strlen($custom_three) > 100) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID CUSTOM THREE, THIS IS AN OPTIONAL FIELD"; + $data = "$custom_three"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$custom_threeSQL = " ,custom_three='$custom_three'";} + } + } + if (strlen($custom_four) > 0) + { + if ($custom_four == '--BLANK--') + {$custom_fourSQL = " ,custom_four=''";} + else + { + if (strlen($custom_four) > 100) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID CUSTOM FOUR, THIS IS AN OPTIONAL FIELD"; + $data = "$custom_four"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$custom_fourSQL = " ,custom_four='$custom_four'";} + } + } + if (strlen($custom_five) > 0) + { + if ($custom_five == '--BLANK--') + {$custom_fiveSQL = " ,custom_five=''";} + else + { + if (strlen($custom_five) > 100) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID CUSTOM FIVE, THIS IS AN OPTIONAL FIELD"; + $data = "$custom_five"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$custom_fiveSQL = " ,custom_five='$custom_five'";} + } + } + if (strlen($active) > 0) + { + if ( ($active != 'Y') and ($active != 'N') ) + { + $result = 'ERROR'; + $result_reason = "update_user ACTIVE MUST BE Y OR N, THIS IS AN OPTIONAL FIELD"; + $data = "$active"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + {$activeSQL = " ,active='$active'";} + } + + if ( (strlen($campaign_rank) > 0) or (strlen($campaign_grade) > 0) ) + { + $rank_BEGIN_SQL=''; + $rank_MID_SQL=''; + $rank_END_SQL=''; + $grade_BEGIN_SQL=''; + $grade_MID_SQL=''; + $grade_END_SQL=''; + if (strlen($campaign_rank) > 0) + { + if ( ($campaign_rank > 9) or ($campaign_rank < -9) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID CAMPAIGN RANK, THIS IS AN OPTIONAL FIELD"; + $data = "$campaign_rank"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + $rank_BEGIN_SQL=',campaign_rank,campaign_weight'; + $rank_MID_SQL=",'$campaign_rank','$campaign_rank'"; + $rank_END_SQL="campaign_rank='$campaign_rank',campaign_weight='$campaign_rank'"; + } + if (strlen($campaign_grade) > 0) + { + if ( ($campaign_grade > 10) or ($campaign_grade < 1) ) + { + $result = 'ERROR'; + $result_reason = "update_user YOU MUST USE A VALID CAMPAIGN GRADE, THIS IS AN OPTIONAL FIELD"; + $data = "$campaign_grade"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + if (strlen($rank_END_SQL)>0) + {$grade_END_SQL .= ",";} + $grade_BEGIN_SQL=',campaign_grade'; + $grade_MID_SQL=",'$campaign_grade'"; + $grade_END_SQL.="campaign_grade='$campaign_grade'"; + } + $stmt="INSERT INTO vicidial_campaign_agents(user,campaign_id $rank_BEGIN_SQL $grade_BEGIN_SQL) SELECT '$agent_user',campaign_id $rank_MID_SQL $grade_MID_SQL from vicidial_campaigns ON DUPLICATE KEY UPDATE $rank_END_SQL $grade_END_SQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $affected_rows = mysqli_affected_rows($linkB); + if ($DB) {echo "|$stmt|$affected_rows|\n";} + + ### LOG INSERTION Admin Log Table ### + $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='$user', ip_address='$ip', event_section='USERS', event_type='MODIFY', record_id='$agent_user', event_code='ADMIN API UPDATE USER RANK', event_sql=\"$SQL_log\", event_notes='user: $agent_user|rank: $campaign_rank|grade: $campaign_grade|rows: $affected_rows';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + $result = 'NOTICE'; + $result_reason = "update_user USER CAMPAIGN RANKS HAVE BEEN UPDATED"; + $data = "$agent_user|$campaign_rank|$campaign_grade"; + echo "$result: $result_reason - $user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + } + + $updateSQL = "$passSQL$pass_hashSQL$full_nameSQL$user_levelSQL$user_groupSQL$phone_loginSQL$phone_passSQL$hotkeys_activeSQL$voicemail_idSQL$emailSQL$custom_oneSQL$custom_twoSQL$custom_threeSQL$custom_fourSQL$custom_fiveSQL$activeSQL"; + + if (strlen($updateSQL)< 3) + { + $result = 'ERROR'; + $result_reason = "update_user NO UPDATES DEFINED"; + $data = "$updateSQL"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + { + $stmt="UPDATE vicidial_users SET failed_login_count='0' $updateSQL WHERE user='$agent_user';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($DB) {echo "|$stmt|\n";} + + ### LOG INSERTION Admin Log Table ### + $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='$user', ip_address='$ip', event_section='USERS', event_type='MODIFY', record_id='$agent_user', event_code='ADMIN API UPDATE USER', event_sql=\"$SQL_log\", event_notes='user: $agent_user';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + $result = 'SUCCESS'; + $result_reason = "update_user USER HAS BEEN UPDATED"; + $data = "$agent_user|"; + echo "$result: $result_reason - $user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + } + } + } + } + } + } + exit; + } +################################################################################ +### END update_user +################################################################################ + + + + ################################################################################ ### add_group_alias - adds group alias to the system ################################################################################