function uploadFile() { $request = Slim::getInstance()->request(); $user = json_decode($request->getBody()); $content = $user->content; $filename = $user->filename ? $user->filename : time(); $piva = trim_string($user->piva); $username = $user->username; $AppModel = new Model(); $Assoc = new AssociazioneModel(); $id_utente = $AppModel->getIdUtente($username); $id_database = $AppModel->getIdDbbyCodice($piva); $id_associazione = $Assoc->getIDAssociazione((int) $id_database, (int) $id_utente); if (!is_null($id_associazione)) { $upload_folder = PATH_BASE . DS . CSV . DS . $piva; if (file_exists($upload_folder)) { if ($content !== NULL) { $res = file_put_contents($upload_folder . '/' . $filename . '.zip', base64_decode($content)); if ($res !== FALSE) { $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "I file sono stati inviati correttamente.", "data" => array("size" => $res))); echo json_encode($status); } else { $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "Errore scrittura dati su filesystem.", "data" => array("size" => $res))); echo json_encode($status); } } else { $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "I file sono vuoti o in formato non riconosciuto.", "data" => array("size" => 0))); echo json_encode($status); } } else { mkdir(PATH_BASE . DS . CSV . DS . $piva, 0777, true); if ($content !== NULL) { $res = file_put_contents($upload_folder . '/' . $filename . '.zip', base64_decode($content)); if ($res !== FALSE) { $status = array("statuscode" => 200, "response" => array("success" => true, "msg" => "Nuova cartella creata e i dati sono stati importati con successo.", "data" => array("size" => $res))); echo json_encode($status); } else { $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "Errore scrittura dati su filesystem.", "data" => array("size" => $res))); echo json_encode($status); } } else { $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "I file sono vuoti o in formato non riconosciuto.", "data" => array("size" => 0))); echo json_encode($status); } } } else { $status = array("statuscode" => 200, "response" => array("success" => false, "msg" => "L'utente non dispone dei permessi di scrittura. Verificare che le credenziali di accesso e la Partita IVA siano impostate correttamente.", "data" => array("size" => 0))); 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); } }