/** * Load more * * @param int $last * @return Response */ public function loadMore($last = -1) { try { $filter = new Filter(); $filter->includeOwned = 1; $filter->includeCannotRequest = 1; $filter->includeInactive = 0; $filter->includePickUp = null; $filter->includeShipping = null; $type = Input::get('order'); $adtype = Input::get('types'); $filter->searchString = Input::get('keywords'); if (Input::get('category')) { $category = array(Input::get('category')); } else { $category = null; } if ($delivery = Input::get('delivery')) { if ($delivery == "pickup") { $filter->includePickUp = 1; $filter->includeShipping = 0; } else { if ($delivery == "shipping") { $filter->includePickUp = 0; $filter->includeShipping = 1; } } } $filter->categories = $category; if (!$type) { $type = AdController::TYPE_NEWEST; } if ($type == AdController::TYPE_NEWEST) { $filter->orderAsc = false; $filter->orderClosest = false; $filter->filterType = Filter::FILTER_TYPE_ACTIVE; } else { if ($type == AdController::TYPE_OLDEST) { $filter->orderAsc = true; $filter->orderClosest = false; $filter->filterType = Filter::FILTER_TYPE_ACTIVE; } else { if ($type == AdController::TYPE_CLOSEST) { $filter->orderAsc = true; $filter->orderClosest = true; $filter->filterType = Filter::FILTER_TYPE_ACTIVE; $filter->latitude = $currentUser != null && $currentUser->address != null ? $currentUser->address->latitude : null; $filter->longitude = $currentUser != null && $currentUser->address != null ? $currentUser->address->longitude : null; } else { if ($type == AdController::TYPE_GIFTED) { $filter->orderAsc = false; $filter->orderClosest = false; $filter->filterType = Filter::FILTER_TYPE_GIFTED; } } } } if ($adtype) { $filter->types = $adtype; } $adService = new SoapClient(Config::get('wsdl.ad'), array()); $result = $adService->getAdsExDetail(array("lastIndex" => $last, "numberAds" => 15, "filter" => $filter, "includeImages" => true, "includeCreator" => true, "includeCommentsNumber" => 2, "includeCreatorStatistics" => true)); $creators = array(); if (isset($result->ad->type)) { $ads = $result; } elseif (isset($result->ad)) { $ads = $result->ad; } else { $ads = array(); } $results = array(); foreach ($ads as $k => $ad) { $ad = new Ad($ad); $creators[$ad->creator->id] = $ad->creator; if (isset($currentUser->address) && isset($currentUser->address->latitude) && isset($currentUser->address->longitude) && isset($ad->address) && isset($ad->address->latitude) && isset($ad->address->longitude)) { $ad->distance = $this->distance_haversine($currentUser->address->latitude, $currentUser->address->longitude, $ad->address->latitude, $ad->address->longitude); } if (isset($ad->requests)) { if (is_array($ad->requests->item)) { foreach ($ad->requests->item as $k => $v) { $v = new Requested($v); if ($v->user->id == $user_id) { $ad->request = $v; } } } else { $v = new Requested($ad->requests->item); if ($v->user->id == $user_id) { $ad->request = $v; } } } if (isset($ad->comments) && isset($ad->comments->item)) { if (!is_array($ad->comments->item)) { $ad->comments->item = array($ad->comments->item); } } if (!$ad->online) { if ($ad->approved) { $ad->status = "APPROVED"; } else { if ($ad->approval == null) { $ad->status = "PENDING"; } else { $ad->status = "DECLINED"; } } } elseif ($ad->sold && $ad->getAcceptedRequest()) { $requestor = $ad->getAcceptedRequest()->user; $request = $ad->getAcceptedRequest(); if (isset($requestor->avatar)) { $ad->requestor = $requestor->avatar->id; } else { $ad->requestor = null; } if (isset($request)) { $ad->request = $request; } else { $ad->request = null; } $ad->status = "SOLD"; } elseif ($ad->expired) { $ad->status = "EXPIRED"; } elseif (!$ad->hasActiveRequest()) { $ad->status = "NO_REQUESTS"; } elseif ($ad->status == 'FINALIZED') { if (isset($ad->requests)) { $requests = get_object_vars($ad->requests); if (is_array($requests['item'])) { foreach ($requests['item'] as $request) { $request = get_object_vars($request); $usr = get_object_vars($request['user']); if ($usr['id'] == $user_id) { $ad->status = $request['status']; } } } else { $ad->status = $ad->requests->item->status; } } } elseif ($ad->hasSentRequest()) { $requestor = $ad->getAcceptedRequest()->user; if (isset($requestor->avatar)) { $ad->requestor = $requestor->avatar->id; } else { $ad->requestor = null; } if (isset($request)) { $ad->request = $request; } else { $ad->request = null; } $ad->status = "SENT"; } elseif ($ad->hasAcceptedRequest()) { $requestor = $ad->getAcceptedRequest()->user; if (isset($requestor->avatar)) { $ad->requestor = $requestor->avatar->id; } else { $ad->requestor = null; } if (isset($request)) { $ad->request = $request; } else { $ad->request = null; } $ad->status = "SELECTED"; } else { $ad->status = "ACTIVE"; } if (isset($ad->request)) { $request = $ad->request; if ($ad->expired || $request->isExpired) { if ($ad->request->adStatus == "EXPIRED") { $ad->reqStat = "EXPIRED"; } else { if ($ad->request->isCanceled) { $ad->reqStat = "CANCELED"; } else { $ad->reqStat = "DECLINED"; } } } else { if ($ad->sold) { $ad->reqStat = "RECEIVED"; } else { if ($request->isPending) { $ad->reqStat = "PENDING"; } else { if ($request->accepted) { $ad->reqStat = "ACCEPTED"; } } } } } $results[] = $ad; } return Response::json(array('ads' => $results, 'creators' => $creators)); } catch (Exception $ex) { return Response::json(array()); } }