I have the following PHP function from an ExpressionEngine plugin and having a little difficulty figuring out how to refactor this to be more efficient, and shorter.
public function checkuser() { $first_name = $this->EE->input->post("FirstName"); $last_name = $this->EE->input->post("LastName"); $DOB = $this->EE->input->post("DOB"); $email = $this->EE->input->post("Email"); $this->return_data['error'] = ''; $senddata = array("SearchBy" => "FIND", "UserID" => null, "Username" => null, "Sha1Password" => null, "FirstName" => $first_name, "LastName" => $last_name, "DOB" => $DOB, "Address" => null, "Zip" => null, "Phone" => null, "Email" => $email ); $url = $this->scic_db_url.'SC2/FindUser'; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); curl_setopt($ch, CURLOPT_USERAGENT, 'HAC'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($senddata)); $re = curl_exec($ch); $curl_err = curl_error($ch); curl_close($ch); $part = json_decode($re, true); if($curl_err) return $curl_err; if(!array_key_exists("Exception", $part)) { // User exists. check email for the $part to see if it matches one passed? if($part["Primary_Email_Address"] !== $email) { $this->return_data['error'] = "* Your account information is in our database, however, it contains a different email address."; } else { $this->return_data['error'] = "* An Account with this email has already been created"; } } elseif(strpos($part["Message"],"No records found") > -1) { // Person with that information doesn't exist but let's check for the email addy once again, for safeties sake $senddata = array("SearchBy" => "EMAIL", "UserID" => null, "Username" => null, "Sha1Password" => null, "FirstName" => null, "LastName" => null, "DOB" => null, "Address" => null, "Zip" => null, "Phone" => null, "Email" => $email // ONLY REQUIRED parameter for EMAIL searches ); $url = $this->scic_db_url.'SC2/FindUser'; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); curl_setopt($ch, CURLOPT_USERAGENT, 'HAC'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($senddata)); $re = curl_exec($ch); $curl_err = curl_error($ch); curl_close($ch); $part = json_decode($re, true); if($part["Primary_Email_Address"] === $email) { $this->return_data['error'] = "* An Account with this email has already been created"; } } else { $this->return_data['success'] = true; } return json_encode($this->return_data); }
I'd preferably like to have a function that I could pass the method, "FIND" or "EMAIL" and the arguments and have it return either the error message or success.