/** * 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; }
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; }
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.'); }
/** * 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"; } } }