Eddie Shipman
asked on
Help refactoring PHP function
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.
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.
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.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.