function addUserFromCommerce() { $AppModel = new Model(); $Utente = new UtenteModel(); $Uform = new UtenteForm(); $Dbase = new DatabaseModel(); $Dform = new DatabaseForm(); $Assoc = new AssociazioneModel(); $Aform = new AssociazioneForm(); $request = Slim::getInstance()->request(); $user = json_decode($request->getBody()); //Utente $Uform->email = trim_string($user->email); $Uform->id_utente = null; $pwd = Password::randomPassword(); $Uform->passwd = Password::hashPassword($pwd); $Uform->nome = $user->nome; $numdb = (int) $user->num_db; //TODO: Check for empty number of databases $id_utente = $AppModel->getIdUtente($Uform->email); $piva = trim_string($user->piva); $dbprogr = $AppModel->getNumDB($user->email); $INI = $dbprogr; $FIN = $dbprogr + $numdb; /////////////////////////////////////////////////////////////////////////check if fields are not empty/////////////////////////////// if (!empty($user->email) && !empty($user->piva) && !empty($user->num_db)) { try { ///////////////////////////////////////////////////checks if user exist already or no /////////////////////////////////////// if (empty($id_utente)) { $Utente->saveDb($Uform, 1, 1); $testo = "<p>Salve {$user->email},</p>\r\n <p>i tuoi dati di accesso presso <b>" . NAME . ":</b><br><br>\r\n <b>Nome utente</b>: {$user->email}<br>\r\n <b>Password:</b> {$pwd}</p>\r\n <p>Una volta effettuato l'accesso ti verrà richiesto di cambiare la password tramite l'apposita funzionalità</p>\r\n <p>Adesso puoi effettuare il login al seguente indirizzo: <a href=\"" . URL . "index.php?section=login\">" . URL . "index.php?section=login</a></p>"; Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo); //////////////////////////////////////////////////////////////creates number of databases rquested///////////////////////////////////////////////// $Dform->alias = (string) $user->ragsoc; $dbnames = createDBName($INI, $FIN, $piva); foreach ($dbnames as $key => $value) { $id_database = $AppModel->getIdDb($value); if (empty($id_database)) { $Dform->nome = $value; $Dform->codice = explode("_", $value)[1]; if (!$Dbase->esisteDatabase($Dform->nome)) { $Dbase->saveDb($Dform); if (!file_exists(PATH_BASE . DS . CSV . DS . $Dform->codice) && !is_dir(PATH_BASE . DS . CSV . DS . $Dform->codice)) { mkdir(PATH_BASE . DS . CSV . DS . $Dform->codice, 0777, true); } } } $Aform->id_utente = $AppModel->getIdUtente($user->email); $Aform->id_database = $AppModel->getIdDb($Dform->nome); // use name inserted into db ...not something else $Aform->id_associazione = $Assoc->getIDAssociazione($Aform->id_database, $Aform->id_utente); $Aform->data_scadenza = (string) $user->data_scadenza; if (!$Assoc->controllaUnicita($Aform->id_utente, $Aform->id_database, $Aform->id_associazione)) { $Assoc->saveDb($Aform, 1, 1); } // Check if flight is set, enable menu and impose other conditions. if ($user->tipo_gest == '1') { $Dbase->setAuth($AppModel->getIdDb($Dform->nome), 3, 1); $Dbase->ImpostazioneFlight($Dform->nome); } } //check for errors $AppModel->updateNumDB($Uform->email, $numdb); // TODO: Use error checks to send different jsons that is 1 .error in utente, 2. error in database 3.associazione $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Richiesta eseguita con successo. E stato creato un utente, un database e un abbinamento/associazione.", "data" => array())); echo json_encode($status); } else { // if user doesn't exist // 3. send email //2. create db, //create assocciazione with all $Dform->alias = (string) $user->ragsoc; $dbnames = createDBName($INI, $FIN, $piva); foreach ($dbnames as $key => $value) { $id_database = $AppModel->getIdDb($value); if (empty($id_database)) { $Dform->nome = $value; $Dform->codice = explode("_", $value)[1]; if (!$Dbase->esisteDatabase($Dform->nome)) { $Dbase->saveDb($Dform); if (!file_exists(PATH_BASE . DS . CSV . DS . $Dform->codice) && !is_dir(PATH_BASE . DS . CSV . DS . $Dform->codice)) { mkdir(PATH_BASE . DS . CSV . DS . $Dform->codice, 0777, true); } } // else check for errors } //$checkdbname = $Dbase->getDatabase($id_database); // check if database exist already // if so try create associasion //else create db and create association $Aform->id_utente = $AppModel->getIdUtente($user->email); $Aform->id_database = $AppModel->getIdDb($Dform->nome); // use name inserted into db ...not something else $Aform->id_associazione = $Assoc->getIDAssociazione($Aform->id_database, $Aform->id_utente); $Aform->data_scadenza = (string) $user->data_scadenza; if (!$Assoc->controllaUnicita($Aform->id_utente, $Aform->id_database, $Aform->id_associazione)) { $Assoc->saveDb($Aform, 1, 1); } // user alreadey exist send check if database exist and check if associzoine exist then send email $testo = "<p>Salve {$user->email},</p>\r\n <p>La sua richiesta è stata accettata. Abbiamo abbinato una nuova basi di dati a questo utente.</p>\r\n <p>i tuoi dati di accesso presso <b>" . NAME . ":</b><br>\r\n <p>Si potrebbe usare le tue credenziali già esistente per accedere.</p>\r\n <p></p>\r\n <p>Adesso puoi effettuare il login al seguente indirizzo: <a href=\"" . URL . "index.php?section=login\">" . URL . "index.php?section=login</a></p>"; Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo); // Check if flight is set, enable menu and impose other conditions. if ($user->tipo_gest == '1') { $Dbase->setAuth($AppModel->getIdDb($Dform->nome), 3, 1); $Dbase->ImpostazioneFlight($Dform->nome); } } // for each $AppModel->updateNumDB($Uform->email, $numdb); // TODO: Use error checks to send different jsons that is 1 .error in utente, 2. error in database 3.associazione $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Richiesta eseguita con successo.E stato creato un database e un abbinamento/associazione. ", "data" => array())); echo json_encode($status); } // else } catch (Exception $e) { $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "Iscrizione negato, email/utente già esistente!", "errmsg" => $e->getMessage(), "data" => null)); echo json_encode($status); } } else { $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "I campi email, numero di database e partita IVA non possono essere vuoti", "data" => null)); echo json_encode($status); } }
/** * Write a wrapper function that * 1. Adds users * 2. Adds database * 3. Creates association between users and database using existing models * Added more checks 14/09/2015 . Must be rewritten if there is time. */ function addUser() { $request = Slim::getInstance()->request(); $user = json_decode($request->getBody()); $AppModel = new Model(); $Utente = new UtenteModel(); $Uform = new UtenteForm(); $Dbase = new DatabaseModel(); $Dform = new DatabaseForm(); $Assoc = new AssociazioneModel(); $Aform = new AssociazioneForm(); //Utente $Uform->email = trim_string($user->email); $Uform->id_utente = null; $pwd = Password::randomPassword(); $Uform->passwd = Password::hashPassword($pwd); //Database $piva = (string) trim_string($user->piva); $Dform->nome = INIDB_WKI . "{$piva}"; $Dform->alias = !empty($user->ragsoc) ? $user->ragsoc : $user->piva; $Dform->codice = $user->piva; //$Dform->id_database = $AppModel->getIdDb($Dform->nome); $Dform->id_database = $AppModel->getIdDbbyCodice($Dform->codice); $id_utente = $AppModel->getIdUtente($Uform->email); if (!empty($user->email) && !empty($user->piva)) { try { if (empty($id_utente)) { ///////////////////////////// User doesn't exist, save user and send and email with password////////////////////////////////////////////////// if ($Utente->saveDb($Uform, 1, 1)) { $testo = "<p>Salve {$user->email},</p>\r\n <p>i tuoi dati di accesso presso <b>" . NAME . ":</b><br><br>\r\n <b>Nome utente</b>: {$user->email}<br>\r\n <b>Password:</b> {$pwd}</p>\r\n <p>Una volta effettuato l'accesso ti verrà richiesto di cambiare la password tramite l'apposita funzionalità</p>\r\n <p>Adesso puoi effettuare il login al seguente indirizzo: <a href=\"" . URL . "index.php?section=login\">" . URL . "index.php?section=login</a></p>"; Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo); } ///////////////////////////// If database exist already, then create association of user and database and date of expiry////////////////////////// if (!empty($Dform->id_database)) { $Aform->id_utente = $AppModel->getIdUtente($user->email); $Aform->id_database = $AppModel->getIdDbbyCodice($Dform->codice); $Aform->data_scadenza = (string) $user->data_scadenza; $Assoc->saveDb($Aform, 1, 1); } else { //////////////////////////// If database does not exist , create datbase and associate it with the user /////////////////////////////////////////// $Dbase->saveDb($Dform); if (!file_exists(PATH_BASE . DS . CSV . DS . $Dform->codice) && !is_dir(PATH_BASE . DS . CSV . DS . $Dform->codice)) { mkdir(PATH_BASE . DS . CSV . DS . $Dform->codice, 0777, true); } $Aform->id_utente = $AppModel->getIdUtente($user->email); $Aform->id_database = $AppModel->getIdDbbyCodice($Dform->codice); $Aform->data_scadenza = (string) $user->data_scadenza; $Assoc->saveDb($Aform, 1, 1); } ////////////////////////// If request is for complete application(f-light), launch this procedure to modify application //////////////////////////////////// if ($user->tipo_gest == '1') { $Dbase->setAuth($AppModel->getIdDbbyCodice($Dform->codice), 3, 1); $Dbase->ImpostazioneFlight($Dform->nome); // maintain name as in name of Database } //////////////////////// If all this is done we are sure that a user, database and their association has been succefully done so throw out json /////////// $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "E stato creato un utente, database e un abbinamento/associazione.", "data" => array())); echo json_encode($status); } else { //////////////////////// We arrived here because user id was found, so we send a message to the user saying we added a database/company to them and they can use old password////// $testo = "<p>Salve {$user->email},</p>\r\n <p>La sua richiesta è stata accettata. Abbiamo abbinato una nuova basi di dati a questo utente.</p>\r\n <p>i tuoi dati di accesso presso <b>" . NAME . ":</b><br>\r\n <p>Si potrebbe usare le tue credenziali già esistente per accedere.</p>\r\n <p></p>\r\n <p>Adesso puoi effettuare il login al seguente indirizzo: <a href=\"" . URL . "index.php?section=login\">" . URL . "index.php?section=login</a></p>"; $Aform->id_utente = $AppModel->getIdUtente($user->email); $Aform->id_database = $AppModel->getIdDbbyCodice($Dform->codice); $Aform->data_scadenza = (string) $user->data_scadenza; $Dform->id_database = $AppModel->getIdDbbyCodice($Dform->codice); ///////////////////////// If a database already exist, we send and email and create and create and association with the user /////////////////////////////////////////////////// if (!empty($Dform->id_database)) { Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo); if (!$Assoc->controllaUnicita($Aform->id_utente, $Aform->id_database, $Aform->id_associazione)) { $Assoc->saveDb($Aform, 1, 1); $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Un abbinamento/associazione è stato creato.", "data" => array())); echo json_encode($status); } else { $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Operazione eseguito con succeso, esiste già un associazione", "data" => array())); echo json_encode($status); } ///////////////////////////// If there is no database, then we create database , send email and create folder and association//////////// } else { $Dform->id_database = $AppModel->getIdDbbyCodice($Dform->codice); $Dbase->saveDb($Dform); Mailer::sendMail($user->email, NAME, EMAIL, false, NAME . ' - Utente e password', $testo); if (!file_exists(PATH_BASE . DS . CSV . DS . $Dform->codice) && !is_dir(PATH_BASE . DS . CSV . DS . $Dform->codice)) { mkdir(PATH_BASE . DS . CSV . DS . $Dform->codice, 0777, true); } $Assoc->saveDb($Aform, 1, 1); $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "E stato creato un database e un abbinamento/associazione. ", "data" => array($Dform->id_database))); echo json_encode($status); } } } catch (Exception $e) { // TODO: What to return $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "Errori nel inserimento su database o nella creazione della cartella !", "errmsg" => $e->getMessage(), "data" => null)); echo json_encode($status); } } else { $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "I campi email e partita IVA non possono essere vuoti", "data" => null)); echo json_encode($status); } }