예제 #1
0
function addDomain($domain)
{
    if (!isSiteAdmin()) {
        print json_encode(array('success' => FALSE, 'errors' => array('domain' => 'Permission denied')));
        return;
    }
    if (!$domain) {
        print json_encode(array('success' => FALSE, 'errors' => array('domain' => 'This field is required')));
        return;
    }
    $domain = strtolower($domain);
    if (!validDomain($domain)) {
        print json_encode(array('success' => FALSE, 'errors' => array('domain' => 'Invalid domain')));
        return;
    }
    if (domainExists($domain)) {
        print json_encode(array('success' => FALSE, 'errors' => array('domain' => 'Domain already exists')));
        return;
    }
    $user = $_SESSION['user'];
    if ($domain == $user['domain']) {
        print json_encode(array('success' => FALSE, 'errors' => array('domain' => 'Can not delete your own domain')));
        return;
    }
    $add = array('domain' => $domain);
    beginTransaction();
    $domain_id = db_insert('virtual_domains', $add, 'domain_id');
    if (!$domain_id) {
        cancelTransaction();
        print json_encode(array('success' => FALSE, 'errors' => array('domain' => 'Unknown error')));
        return;
    }
    $transport = array('subdomain' => 'autoreply', 'domain_id' => $domain_id, 'destination' => 'autoreply:', 'active' => 't');
    $transport_id = db_insert('transport_maps', $transport, 'transport_id');
    if (!$transport_id) {
        cancelTransaction();
        print json_encode(array('success' => FALSE, 'errors' => array('domain' => 'Unknown error')));
        return;
    }
    endTransaction();
    print json_encode(array('success' => true));
}
예제 #2
0
 function transferir($idOrigem, $cadastroOrigem, $valor, $idDestino, $cadastroDestino)
 {
     if ($this->isPessoaJuridica($cadastroDestino)) {
         try {
             beginTransaction();
             $ps = $this->executar('SELECT * FROM conta WHERE id_conta = ?', array($idOrigem));
             $p = $ps->fetchObject();
             if ($p->saldo < $valor) {
                 rollBack();
                 throw new TransferenciaException('Saldo da conta de origem insuficiente');
             }
             $ps = $this->executar('UPDATE conta SET saldo = saldo - ? WHERE id_conta = ?', array($valor, $idOrigem));
             $valorDoisPorCento = $valor * 0.02;
             $valorNovo = $valor - $valor * 0.02;
             $ps = $this->executar('UPDATE conta SET saldo = saldo + ? WHERE id_conta = ?', array($valorDoisPorCento, 0));
             $ps = $this->executar('UPDATE conta SET saldo = saldo + ? WHERE id_conta = ?', array($valorNovo, $idDestino));
             commit();
         } catch (Exception $e) {
             rollBack();
             throw new TransferenciaException('Erro ao realizar transferencia');
         }
     } else {
         try {
             beginTransaction();
             $ps = $this->executar('SELECT * FROM conta WHERE id_conta = ?', array($idOrigem));
             $p = $ps->fetchObject();
             if ($p->saldo < $valor) {
                 rollBack();
                 throw new TransferenciaException('Saldo da conta de origem insuficiente');
             }
             $ps = $this->executar('UPDATE conta SET saldo = saldo - ? WHERE id_conta = ?', array($valor, $idOrigem));
             $ps = $this->executar('UPDATE conta SET saldo = saldo + ? WHERE id_conta = ?', array($valor, $idDestino));
             commit();
         } catch (Exception $e) {
             rollBack();
             throw new TransferenciaException('Erro ao realizar transferencia');
         }
     }
 }
예제 #3
0
function getFormaRecargarSaldo()
{
    if (isset($_GET['cnt']) && isset($_GET['des']) && isset($_GET['tipo'])) {
        $cantidad = removeBadHtmlTags($_GET['cnt']);
        $descripcion = removeBadHtmlTags($_GET['des']);
        $usuario = getUsuarioActual();
        if (isset($usuario)) {
            if ($cantidad >= 50) {
                require_once 'modulos/pagos/modelos/operacionModelo.php';
                require_once 'modulos/pagos/modelos/PayPalModelo.php';
                require_once 'bd/conex.php';
                beginTransaction();
                $operacion = new Operacion();
                $operacion->cantidad = $cantidad;
                $operacion->detalle = $descripcion;
                $operacion->completada = 0;
                $operacion->idUsuario = $usuario->idUsuario;
                $operacion->idTipoOperacion = 1;
                $operacion->idOperacion = altaOperacion($operacion);
                switch ($_GET['tipo']) {
                    case 'paypal':
                        commitTransaction();
                        $encrypted = encriptarInformacionBotonPago($descripcion, "", $cantidad, $operacion->idOperacion);
                        require_once 'modulos/pagos/vistas/formaRecargarSaldoPaypal.php';
                        break;
                        //not supported yet
                        //                    case 'mercadopago':
                        //                        break;
                    //not supported yet
                    //                    case 'mercadopago':
                    //                        break;
                    default:
                        rollBackTransaction();
                        echo '<div class="center" style="text-align:center"><h3 class="error">No es una opción válida</h3><br><h4>Ocurrió un error en tu solicitud</h4></div>';
                        break;
                }
            } else {
                //No es una cantidad valida
                echo '<div class="center" style="text-align:center"><h3 class="error">No es una cantidad válida</h3><br><h4>La cantidad mínima para recargar es de $50.00</h4></div>';
            }
        } else {
            echo 'no hay usuario loggeado';
            //No hay un usuario loggeado
        }
    } else {
        //no hay datos..
    }
}
예제 #4
0
function inscribirUsuario()
{
    if (isset($_GET['i'])) {
        if (validarUsuarioLoggeado()) {
            $usuario = getUsuarioActual();
            $idCurso = removeBadHtmlTags($_GET['i']);
            require_once 'modulos/cursos/modelos/CursoModelo.php';
            $curso = getCurso($idCurso);
            if ($usuario->activado == 1) {
                if (isset($curso)) {
                    if ($curso->idUsuario != $usuario->idUsuario) {
                        require_once 'modulos/usuarios/modelos/UsuarioCursosModelo.php';
                        if (!esUsuarioUnAlumnoDelCurso($usuario->idUsuario, $idCurso)) {
                            //iniciar transacción
                            //si el curso tiene precio:
                            //  -validar que el usuario tenga saldo suficiente
                            //  -actualizar el saldo
                            //  -agregamos la operación
                            //despues, si tiene precio o no
                            //  -se inscribe el usuario
                            //  -se envia el mail
                            //
                            //ESTO SE DEBE DE HACER DENTRO DE UNA TRANSACCIÓN PARA QUE TODO SÉA VÁLIDO
                            try {
                                require_once 'bd/conex.php';
                                beginTransaction();
                                require_once 'funcionesPHP/CargarInformacionSession.php';
                                cargarUsuarioSession();
                                $usuario = getUsuarioActual();
                                $huboError = false;
                                $suscribirAlumno = true;
                                if ($curso->precio > 0) {
                                    //validar que el saldo del usuario sea suficiente para inscribirse a este curso
                                    if ($usuario->saldo >= $curso->precio) {
                                        //Actualizamos el saldo del usuario
                                        require_once 'modulos/usuarios/modelos/usuarioModelo.php';
                                        if (actualizaSaldoUsuario($usuario->idUsuario, -$curso->precio)) {
                                            //Se actualizó correctamente el saldo del usuario, procedemos
                                            //a guardar la operación
                                            require_once 'modulos/pagos/modelos/operacionModelo.php';
                                            $operacion = new Operacion();
                                            $operacion->cantidad = $curso->precio;
                                            $operacion->detalle = "Curso: <a href='/curso/" . $curso->uniqueUrl . "'>" . $curso->titulo . '</a>';
                                            $operacion->idUsuario = $usuario->idUsuario;
                                            $operacion->completada = 1;
                                            $operacion->idTipoOperacion = 2;
                                            if (altaOperacion($operacion) < 0) {
                                                $huboError = true;
                                            }
                                        } else {
                                            $huboError = true;
                                        }
                                    } else {
                                        //No tiene saldo suficiente para suscribirse al curso, lo enviamos a
                                        //una página donde puede recargar saldo
                                        $suscribirAlumno = false;
                                        setSessionMessage("<h4 class='error'>No tienes el saldo suficiente para suscribirte</h4>");
                                        redirect("/usuarios/saldo");
                                    }
                                }
                                if ($suscribirAlumno) {
                                    //ahora a inscribir al usuario
                                    if (inscribirUsuarioCurso($usuario->idUsuario, $idCurso, $curso->precio)) {
                                        require_once 'funcionesPHP/CargarInformacionSession.php';
                                        cargarCursosSession();
                                        cargarUsuarioSession();
                                        setSessionMessage("<h4 class='success'>Haz quedado inscrito a este curso</h4>");
                                        require_once 'modulos/email/modelos/envioEmailModelo.php';
                                        //enviar email al usuario que se suscribió
                                        enviarMailSuscripcionCurso($usuario->email, $curso->titulo, $curso->imagen, 'www.unova.mx/curso/' . $curso->uniqueUrl);
                                    } else {
                                        $huboError = true;
                                        setSessionMessage("<h4 class='error'>Ocurrió un error al inscribirte al curso</h4>");
                                    }
                                }
                            } catch (Exception $e) {
                                $huboError = true;
                                setSessionMessage("<h4 class='error'>Ocurrió un error al inscribirte al curso. Excepción " . $e->getMessage() . ".</h4>");
                            }
                            //validamos si hubo algun error
                            if ($huboError) {
                                rollBackTransaction();
                            } else {
                                commitTransaction();
                            }
                            redirect("/curso/" . $curso->uniqueUrl);
                        } else {
                            //el usuario ya está inscrito
                            setSessionMessage("<h4 class='error'>Ya estás suscrito a este curso</h4>");
                            redirect("/curso/" . $curso->uniqueUrl);
                        }
                    } else {
                        //el curso pertenece al usuario
                        setSessionMessage("<h4 class='error'>No puedes inscribirte a tu propio curso</h4>");
                        goToIndex();
                    }
                } else {
                    //el curso no existe
                    setSessionMessage("<h4 class='error'>Curso no válido</h4>");
                    goToIndex();
                }
            } else {
                //El usuario no ha confirmado su cuenta
                setSessionMessage("<h4 class='error'>Debes confirmar tu cuenta para poder inscribirte a este curso</h4><h4 class='notice'><a href='/usuarios/usuario/enviarCorreoConfirmacion'>Click aquí para confirmar cuenta</a></h4>");
                redirect("/curso/" . $curso->uniqueUrl);
            }
        } else {
            ////no hay usuario loggeado, pero esto se valida dentro de la función
        }
    } else {
        //no hay i, ir a index
        goToIndex();
    }
}
예제 #5
0
function modifyUser($userId, $description, $local, $active)
{
    if (!$active) {
        $active = 'f';
    } else {
        $active = 't';
    }
    if (!$userId) {
        return FALSE;
    } else {
        if (!isSiteAdmin() && isSiteAdmin($userId)) {
            return FALSE;
        }
    }
    $userObj = loadUser($userId);
    if (!$userObj) {
        return FALSE;
    }
    $adminDomains = getAdminDomains();
    $domain = $userObj['domain'];
    if (!in_array($domain, $adminDomains)) {
        return FALSE;
    }
    $oldActive = userIsActive($userId);
    $updates = array('description' => $description, 'active' => $active);
    $conditions = array('user_id' => $userId);
    $activeChanged = FALSE;
    if ($oldActive && $active == 'f') {
        $activeChanged = TRUE;
    } else {
        if (!$oldActive && $active == 't') {
            $activeChanged = TRUE;
        }
    }
    $aliasUpdates = array('active' => $active);
    $username = $userObj['user'];
    $aliasConditions = array('username' => $username, 'domain_id' => $userObj['domain_id']);
    $email = $username . '@' . $domain;
    beginTransaction();
    db_update('virtual_users', $updates, $conditions);
    if ($activeChanged) {
        db_update('virtual_aliases', $aliasUpdates, $aliasConditions);
    }
    setUserLocal($local, $email);
    endTransaction();
}
예제 #6
0
function setRatingUsuario($idUsuario, $idCurso, $rating)
{
    require_once 'bd/conex.php';
    global $conex;
    //tratamos de insertar en la tabla puntuación
    beginTransaction();
    $stmt = $conex->prepare("INSERT into puntuacion\n                            (idUsuario, idCurso, rating)\n                            VALUES(:idUsuario, :idCurso, :rating)");
    $stmt->bindParam(':rating', $rating);
    $stmt->bindParam(':idUsuario', $idUsuario);
    $stmt->bindParam(':idCurso', $idCurso);
    if (!$stmt->execute()) {
        //si NO se pudo ejecutar es que ya había una tupla con esos ids, actualizamos el rating
        $stmt = $conex->prepare("UPDATE puntuacion \n                            SET rating = :rating\n                            WHERE idUsuario = :idUsuario AND idCurso = :idCurso");
        $stmt->bindParam(':rating', $rating);
        $stmt->bindParam(':idUsuario', $idUsuario);
        $stmt->bindParam(':idCurso', $idCurso);
        $stmt->execute();
    }
    //Ahora, hacemos el update de la variable rating de la tabla curso
    $stmt = $conex->prepare("SELECT count(rating) as cuenta, sum(rating) as suma\n                            FROM puntuacion\n                            WHERE idCurso = :idCurso");
    $stmt->bindParam(':idCurso', $idCurso);
    $stmt->execute();
    $row = $stmt->fetch();
    $n = $row['cuenta'];
    $sum = $row['suma'];
    $prom = $sum / $n;
    $stmt = $conex->prepare("UPDATE curso \n                            SET rating = :rating\n                            WHERE idCurso = :idCurso");
    $stmt->bindParam(':rating', $prom);
    $stmt->bindParam(':idCurso', $idCurso);
    if ($stmt->execute()) {
        commitTransaction();
        return true;
    } else {
        rollBackTransaction();
        return false;
    }
}
예제 #7
0
 public static function eraseByURIPrefix($libraryID, $prefix, $ignorePredicates = false)
 {
     Zotero_DB . beginTransaction();
     $prefix = $prefix . '%';
     $sql = "SELECT relationID FROM relations WHERE libraryID=? AND subject LIKE ?";
     $params = [$libraryID, $prefix];
     if ($ignorePredicates) {
         foreach ($ignorePredicates as $ignorePredicate) {
             $sql .= " AND predicate != ?";
             $params[] = $ignorePredicate;
         }
     }
     $sql .= " UNION SELECT relationID FROM relations WHERE libraryID=? AND object LIKE ?";
     $params = array_merge($params, [$libraryID, $prefix]);
     if ($ignorePredicates) {
         foreach ($ignorePredicates as $ignorePredicate) {
             $sql .= " AND predicate != ?";
             $params[] = $ignorePredicate;
         }
     }
     $ids = Zotero_DB::columnQuery($sql, $params, Zotero_Shards::getByLibraryID($libraryID));
     foreach ($ids as $id) {
         $relation = self::get($libraryID, $id);
         Zotero_Relations::delete($libraryID, $relation->key);
     }
     Zotero_DB::commit();
 }
예제 #8
0
function retirarSaldoSubmit()
{
    if (validarUsuarioLoggeadoParaSubmits() && !empty($_POST['cantidad'])) {
        $cantidad = str_replace("\$", "", $_POST['cantidad']);
        $cantidad = floatval($cantidad);
        $huboError = false;
        $usuario = getUsuarioActual();
        if (isset($usuario->emailPaypal) && strlen($usuario->emailPaypal) > 0) {
            if ($cantidad >= 50 && $cantidad <= $usuario->saldo) {
                require_once 'modulos/pagos/modelos/solicitudSaldoModelo.php';
                require_once 'modulos/usuarios/modelos/usuarioModelo.php';
                require_once 'modulos/pagos/modelos/operacionModelo.php';
                require_once 'funcionesPHP/CargarInformacionSession.php';
                require_once 'bd/conex.php';
                beginTransaction();
                if (actualizaSaldoUsuario($usuario->idUsuario, -$cantidad)) {
                    //Se actualizó correctamente el saldo, entonces generamos una operación
                    $operacion = new Operacion();
                    $operacion->idUsuario = $usuario->idUsuario;
                    $operacion->cantidad = $cantidad;
                    $operacion->idTipoOperacion = 4;
                    $operacion->completada = 1;
                    $operacion->detalle = "Retiro de saldo";
                    $operacion->idOperacion = altaOperacion($operacion);
                    if ($operacion->idOperacion >= 0) {
                        //se dio de alta correctamente la operacion, generamos la solicitud
                        $solicitudSaldo = new SolicitudSaldo();
                        $solicitudSaldo->idUsuario = $usuario->idUsuario;
                        $solicitudSaldo->cantidad = $cantidad;
                        $solicitudSaldo->entregado = 0;
                        //0=no entregado
                        if (altaSolicitudSaldo($solicitudSaldo)) {
                            commitTransaction();
                            setSessionMessage("<h4 class='success'>Tu solicitud de retirar saldo fue enviada correctamente</h4>");
                            cargarUsuarioSession();
                        } else {
                            $huboError = true;
                        }
                    } else {
                        $huboError = true;
                    }
                } else {
                    $huboError = true;
                }
                if ($huboError) {
                    rollBackTransaction();
                    setSessionMessage("<h4 class='error'>Ocurrió un error al realizar tu solicitud. Intenta de nuevo más tarde</h4>");
                }
            } else {
                //no es una cantidad válida
                setSessionMessage("<h4 class='error'>La cantidad que se quiere retirar no es válida</h4>");
            }
            redirect("/usuarios/saldo");
        } else {
            setSessionMessage("<h4 class='error'>Debes establecer tu correo electrónico asociado a Paypal para poder retirar tu saldo</h4>");
            redirect("/usuarios/usuario/cambiarCorreoPaypal");
        }
    } else {
        goToIndex();
    }
}
예제 #9
0
    if ($dumpmode) {
        $body = file_get_contents($pagefile);
    }
    $pagename = $DBInfo->keyToPagename($file);
    $idx++;
    $tmp = "('" . _escape_string($type, $pagename) . "',";
    if ($dumpmode) {
        $tmp .= "'" . _escape_string($type, $body) . "',";
    }
    $tmp .= $mtime . ")";
    $buffer[] = $tmp;
    if ($idx > 50) {
        dump('INSERT INTO ' . $tablename . ' (' . $vals . ') VALUES ' . implode(",\n", $buffer) . ";\n");
        $idx = 0;
        $buffer = array();
    }
    if ($j % 10000 == 0) {
        endTransaction($type);
        beginTransaction($type);
    }
}
if (sizeof($buffer) > 0) {
    dump('INSERT INTO ' . $tablename . ' (' . $vals . ') VALUES ' . implode(",\n", $buffer) . ";\n");
}
endTransaction($type);
fclose($fp);
closedir($handle);
echo "\t", 'titleindex_init.sql generated', "\n";
$params['timer']->Check('done');
echo $params['timer']->Write();
// vim:et:sts=4:sw=4:
예제 #10
0
<?php

echo 'getProduct 1';
// 登録済み届け先住所を取得
// 操作者のIDを返すAPIをコール, またはここで直接取得 author:あつお
// $operatorId = *****API;
$operatorId = 1;
// temporary value
$sqlGetAddress = "\nSELECT store_address\nFROM company\nWHERE operator_id = {$operatorId}\nAND delete_flag = 0;\n";
echo 'getProduct 2';
$connectObj = dbConnect();
echo 'getProduct 2-1';
beginTransaction();
echo 'getProduct 2-2';
$resGetAddress = executeDb($sqlGetAddress);
echo 'getProduct 2-3';
if (!$resGetAddress || $resGetAddress == null) {
    echo 'getProduct 2-4';
    rollback();
    close();
    echo 'getProduct 2-5';
    // redirect to error page
    // 届け先情報の取得に失敗
}
echo 'getProduct 3';
while ($row = mysqli_fetch_array($resGetAddress)) {
    $address = $row["store_address"];
}
echo 'getProduct 4';
// 商品情報を取得
// 現在有効な商品の商品ID, 商品名, 金額を取得
예제 #11
0
function removeForward($aliasId)
{
    if (!$aliasId) {
        return FALSE;
    }
    $email = getAliasEmail($aliasId);
    if (!$email) {
        return FALSE;
    }
    if ($email != $_SESSION['user']['email']) {
        $adminDomains = getAdminDomains();
        $emailParts = split('@', $email);
        $domain = $emailParts[1];
        if (!in_array($domain, $adminDomains)) {
            return FALSE;
        }
    }
    $conditions = array('alias_id' => $aliasId);
    beginTransaction();
    $ret = db_delete('virtual_aliases', $conditions);
    setUserLocalIfNecessary($email);
    endTransaction();
    return $ret;
}
예제 #12
0
/**
 * @post update
 */
function update_post_controller($id)
{
    __is_guest();
    if (!empty($_POST)) {
        if (checked_token($_POST['_token'])) {
            __session_start();
            $_SESSION['old'] = [];
            $_SESSION['errors'] = [];
            $rules = ['title' => FILTER_SANITIZE_STRING, 'content' => FILTER_SANITIZE_STRING, 'status' => ['filter' => FILTER_CALLBACK, 'options' => function ($s) {
                if (in_array($s, ['published', 'unpublished'])) {
                    return $s;
                } else {
                    return 'unpublished';
                }
            }], 'published_at' => ['filter' => FILTER_CALLBACK, 'options' => function ($checkbox) {
                if ($checkbox == 'yes') {
                    return new DateTime('now');
                }
            }]];
            $sanitize = filter_input_array(INPUT_POST, $rules);
            $id = (int) $id;
            // test if errors
            if (empty($_POST['title'])) {
                $_SESSION['errors']['title'] = 'title is required';
            }
            if (!empty($_SESSION['errors'])) {
                $_SESSION['old'] = $sanitize;
                redirect('post/create');
                // exit
            }
            if (!empty($_FILES['file']) && is_uploaded_file($_FILES['file']['tmp_name'])) {
                try {
                    $dateFile = upload($_FILES['file']);
                    beginTransaction();
                    update_post_model($id, $sanitize);
                    create_media_model(['filename' => $dateFile['filename'], 'post_id' => $id, 'size' => $dateFile['size']]);
                    commit();
                    setFlashMessage("success stored");
                    redirect('dashboard');
                } catch (Exception $e) {
                    if ($e instanceof RuntimeException) {
                        $_SESSION['old'] = $sanitize;
                        $_SESSION['errors']['upload'] = $e->getMessage();
                        redirect('post/create');
                    }
                    rollback();
                    $_SESSION['old'] = $sanitize;
                    $_SESSION['errors']['file'] = $e->getMessage();
                    redirect('post/create');
                }
            } else {
                try {
                    beginTransaction();
                    update_post_model($id, $sanitize);
                    $media_id = (int) $_POST['m_id'];
                    if (!empty($_POST['m_id']) && !empty($_POST['delete_filename'])) {
                        $media = find_model($media_id, 'medias');
                        $m = $media->fetch();
                        destroy_model($media_id, 'medias');
                    }
                    commit();
                    if (!empty($m)) {
                        unlink(getEnv('UPLOAD_DIRECTORY') . '/' . htmlentities($m['m_filename']));
                    }
                    setFlashMessage(trans('success_updated_post', $sanitize['title']));
                    redirect('dashboard');
                } catch (Exception $e) {
                    rollback();
                    $_SESSION['old'] = $sanitize;
                    $_SESSION['errors']['file'] = $e->getMessage();
                    redirect('post/create');
                }
                throw new RuntimeException('418');
            }
        }
    }
}