public function index($project = null) { if (empty($project)) { throw new Redirection('/discover', Redirection::TEMPORARY); } $message = ''; $projectData = Model\Project::get($project); $methods = static::_methods(); // si no está en campaña no pueden esta qui ni de coña if ($projectData->status != 3) { throw new Redirection('/project/' . $project, Redirection::TEMPORARY); } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $errors = array(); $los_datos = $_POST; $method = \strtolower($_POST['method']); if (!isset($methods[$method])) { Message::Error(Text::get('invest-method-error')); throw new Redirection(SEC_URL . "/project/{$project}/invest/?confirm=fail", Redirection::TEMPORARY); } if (empty($_POST['amount'])) { Message::Error(Text::get('invest-amount-error')); throw new Redirection(SEC_URL . "/project/{$project}/invest/?confirm=fail", Redirection::TEMPORARY); } // dirección de envio para las recompensas // o datoas fiscales del donativo $address = array('name' => $_POST['fullname'], 'nif' => $_POST['nif'], 'address' => $_POST['address'], 'zipcode' => $_POST['zipcode'], 'location' => $_POST['location'], 'country' => $_POST['country']); if ($projectData->owner == $_SESSION['user']->id) { Message::Error(Text::get('invest-owner-error')); throw new Redirection(SEC_URL . "/project/{$project}/invest/?confirm=fail", Redirection::TEMPORARY); } // añadir recompensas que ha elegido $chosen = $_POST['selected_reward']; if ($chosen == 0) { // renuncia a las recompensas, bien por el/ella $resign = true; $reward = false; } else { // ya no se aplica esto de recompensa es de tipo Reconocimiento para donativo $resign = false; $reward = true; } // insertamos los datos personales del usuario si no tiene registro aun Model\User::setPersonal($_SESSION['user']->id, $address, false); $invest = new Model\Invest(array('amount' => $_POST['amount'], 'user' => $_SESSION['user']->id, 'project' => $project, 'method' => $method, 'status' => '-1', 'invested' => date('Y-m-d'), 'anonymous' => $_POST['anonymous'], 'resign' => $resign)); if ($reward) { $invest->rewards = array($chosen); } $invest->address = (object) $address; if ($invest->save($errors)) { $invest->urlOK = SEC_URL . "/invest/confirmed/{$project}/{$invest->id}"; $invest->urlNOK = SEC_URL . "/invest/fail/{$project}/{$invest->id}"; Model\Invest::setDetail($invest->id, 'init', 'Se ha creado el registro de aporte, el usuario ha clickado el boton de tpv o paypal. Proceso controller/invest'); switch ($method) { case 'tpv': // redireccion al tpv if (Tpv::preapproval($invest, $errors)) { die; } else { Message::Error(Text::get('invest-tpv-error_fatal')); } break; case 'paypal': // Petición de preapproval y redirección a paypal if (Paypal::preapproval($invest, $errors)) { die; } else { Message::Error(Text::get('invest-paypal-error_fatal')); } break; case 'cash': // En betatest aceptamos cash para pruebas if (GOTEO_ENV != 'real') { $invest->setStatus('1'); throw new Redirection($invest->urlOK); } else { throw new Redirection('/'); } break; } } else { Message::Error(Text::get('invest-create-error')); } } else { Message::Error(Text::get('invest-data-error')); } throw new Redirection("/project/{$project}/invest/?confirm=fail"); }