Example #1
0
 /**
  * Pass Query, ParseQuery or Closure, as params or in an
  * array. If Closure is passed, a new Query will be passed
  * as parameter.
  * First element must be an instance of Query.
  *
  * ```
  * Query::orQueries($query, $parseQuery);
  * Query::orQueries([$query, $parseQuery]);
  * Query::orQueries($query, function(Query $query) { $query->where(...); });
  * ```
  *
  * @param mixed $queries
  *
  * @return static
  */
 public static function orQueries()
 {
     $queries = func_get_args();
     if (is_array($queries[0])) {
         $queries = $queries[0];
     }
     $q = $queries[0];
     $parseQueries = [];
     foreach ($queries as $query) {
         if ($query instanceof Closure) {
             $closure = $query;
             $query = new static($q->parseClassName, $q->fullClassName, $q->useMasterKey);
             $closure($query);
             $parseQueries[] = $query;
         } else {
             $parseQueries[] = $q->parseQueryFromQuery($query);
         }
     }
     $orQuery = new static($queries[0]->parseClassName, $queries[0]->fullClassName, $queries[0]->useMasterKey);
     $orQuery->parseQuery = ParseQuery::orQueries($parseQueries);
     return $orQuery;
 }
Example #2
0
 public function __construct()
 {
     // Get contact points
     $creator = Flight::get('creator');
     $contactPoints = $creator->fetch()->contactPoints;
     $orQueryAry = array();
     if ($contactPoints) {
         foreach ($contactPoints as $point) {
             $q = ListItem::query();
             $q->equalTo('objectId', $point->getObjectId());
             $orQueryAry[] = $q;
         }
         $orQuery = ParseQuery::orQueries($orQueryAry);
         $orQuery->includeKey('itemType');
         $contactList = $orQuery->find();
         foreach ($contactList as $c) {
             $contact[$c->itemType->value]['name'] = $c->itemType->value;
             $contact[$c->itemType->value]['link'] = Creator::contactPointLink($c);
         }
     }
     $this->contact = $contact;
 }
Example #3
0
 public function testComplexQueries()
 {
     Helper::clearClass("Child");
     Helper::clearClass("Parent");
     $this->saveObjects(10, function ($i) {
         $child = new ParseObject("Child");
         $child->set("x", $i);
         $parent = new ParseObject("Parent");
         $parent->set("y", $i);
         $parent->set("child", $child);
         return $parent;
     });
     $subQuery = new ParseQuery("Child");
     $subQuery->equalTo("x", 4);
     $query1 = new ParseQuery("Parent");
     $query1->matchesQuery("child", $subQuery);
     $query2 = new ParseQuery("Parent");
     $query2->lessThan("y", 2);
     $orQuery = ParseQuery::orQueries([$query1, $query2]);
     $results = $orQuery->find();
     $this->assertEquals(3, count($results), 'Did not return correct number of objects.');
 }
Example #4
0
 /**
  * Devuelve todos los usuarios que se han interesado en alguna casa del 
  * $arrendador y que aun no se ha autorizado su contact. Los datos se devuelven
  * en forma de relacion de la tabla UsuarioVeDatosCasa, contiene idInmueble
  * (el inmueble que le intereso al usuario), idUsuario (el usuario interesado),
  * y arrendador (el usuario dueƱo del inmueble).
  * @param type $usuario
  * @return type
  */
 public static function getNotificaciones($usuario)
 {
     $queryArrendador = new ParseQuery("UsuarioVeDatosCasa");
     //si el usuario puso en renta una casa, se le devuelve informacion al respecto
     $queryArrendador->equalTo("arrendador", $usuario);
     //$queryArrendador->equalTo("validado",false); //se le devuelven las que no estan validadas para que sepa que las tiene que validar
     $queryArrendador->ascending("idInmueble");
     //importante
     $queryCliente = new ParseQuery("UsuarioVeDatosCasa");
     //si el usuario solicito una casa y ya estan listos los datos se le envian
     $queryCliente->equalTo("idUsuario", $usuario);
     $queryCliente->equalTo("validado", true);
     $mainQuery = ParseQuery::orQueries([$queryArrendador, $queryCliente]);
     $mainQuery->descending("createdAt");
     $res = $mainQuery->find();
     $fin = count($res);
     $inmuebleAct = null;
     $nNoti = 0;
     $notificaciones = [];
     for ($i = 0; $i < $fin; $i++) {
         $arrendador = $res[$i]->get("arrendador");
         $arrendador->fetch();
         $inm = $res[$i]->get("idInmueble");
         $inm->fetch();
         if ($arrendador == $usuario) {
             //si el usuario es arrendador y tiene un cliente nuevo ***
             if ($res[$i]->get("validado")) {
                 $user = $res[$i]->get("idUsuario");
                 $user->fetch();
                 $mensaje = "Ahora puedes ponerte en contacto con el usuario " . $user->get("username") . " que se interesa en la casa que esta en " . $inm->get("direccion") . ". <br>";
                 $mensaje .= "Puedes contactar al usuario con el correo: " . $user->get("email") . ".<br>";
                 //echo $mensaje;
                 $notificaciones[] = new Notificacion($mensaje, Notificacion::CONTACTO_NUEVO, $inm);
             } else {
                 if ($inmuebleAct != null && $inm->getObjectId() === $inmuebleAct->getObjectId()) {
                     //no usar ==, se acaba el stack, usar === porque php es mamon
                     $nNoti++;
                     //si es otra notificacion del mismo inmueble, las agrupa mostrando solamente el numero de notificaciones de ese inmueble
                     continue;
                 }
                 //else ...
                 $mensaje = APIUsuario::generaNotificacionClientesPot($nNoti, $inmuebleAct);
                 if ($mensaje != null) {
                     $notificaciones[] = new Notificacion($mensaje, Notificacion::CLIENTE_POTENCIAL, $inmuebleAct);
                 }
                 $inmuebleAct = $inm;
                 $nNoti = 1;
             }
         } else {
             $mensaje = "El usuario " . $arrendador->get("username") . " ha decidido ponerce en contacto contigo para la " . " negociacion de la casa que solicitaste que se encuentra en " . $inm->get("direccion") . " contactalo a este correo: " . $arrendador->get("email") . ". <br>";
             //echo $mensaje;
             $notificaciones[] = new Notificacion($mensaje, Notificacion::CONTACTO_ARRENDADOR, $inm);
         }
     }
     $mensaje = APIUsuario::generaNotificacionClientesPot($nNoti, $inmuebleAct);
     if ($mensaje != null) {
         $notificaciones[] = new Notificacion($mensaje, Notificacion::CLIENTE_POTENCIAL, $inmuebleAct);
     }
     return $notificaciones;
 }
$app_id = "YiutbXLU5r5ofy1JdpRzCWq3w4ypjmNLajS5fwpl";
$rest_key = "k4Y8vkkSxjbSm5ShOfqCdkIWgjnLYMIOfEnT7SR6";
$master_key = "2nHXLv737mlU2mJJ7qsNFlAnd8WPfUs3YBPV0ROL";
session_start();
// Starting Session
$error = '';
// Variable To Store Error Message
if (isset($_POST['submit'])) {
    if (empty($_POST['username']) || empty($_POST['password'])) {
        $error = "Username or Password is invalid";
    } else {
        // Define $username and $password
        $username = $_POST['username'];
        $password = $_POST['password'];
        ParseClient::initialize($app_id, $rest_key, $master_key);
        $query1 = new ParseQuery("user");
        $query1->equalTo("user_name", $username);
        $query2 = new ParseQuery("user");
        $query2->equalTo("user_id", $password);
        $mainQuery = ParseQuery::orQueries([$query1, $query2]);
        $results = $mainQuery->find();
        if (count($results) > 0) {
            $_SESSION['login_user'] = $username;
            // Initializing Session
            header("location: profile.php?user="******"Username or Password is invalid";
        }
    }
}