From 53d2fbe3a55b6cd82804a417efa6b4e6802ce155 Mon Sep 17 00:00:00 2001
From: Thibault Couraud <1036233+couraudt@users.noreply.github.com>
Date: Tue, 6 Nov 2018 13:57:54 +0000
Subject: [PATCH] [FindACrewBridge] Implement bridge for findacrew.net (#901)
* [FindACrewBridge] Implement bridge for findacrew.net - sailing boats offers
---
bridges/FindACrewBridge.php | 82 +++++++++++++++++++++++++++++++++++++
1 file changed, 82 insertions(+)
create mode 100644 bridges/FindACrewBridge.php
diff --git a/bridges/FindACrewBridge.php b/bridges/FindACrewBridge.php
new file mode 100644
index 00000000..c245c84a
--- /dev/null
+++ b/bridges/FindACrewBridge.php
@@ -0,0 +1,82 @@
+ array(
+ 'name' => 'Type of search',
+ 'title' => 'Choose between finding a boat or a crew',
+ 'type' => 'list',
+ 'values' => array(
+ 'Find a boat' => 'boat',
+ 'Find a crew' => 'crew'
+ )
+ ),
+ 'long' => array(
+ 'name' => 'Longitude of the searched location',
+ 'title' => 'Center the search at that longitude (e.g: -42.02)'
+ ),
+ 'lat' => array(
+ 'name' => 'Latitude of the searched location',
+ 'title' => 'Center the search at that latitude (e.g: 12.42)'
+ ),
+ 'distance' => array(
+ 'name' => 'Limit boundary of search in KM',
+ 'title' => 'Boundary of the search in kilometers when using longitude and latitude'
+ )
+ )
+ );
+
+ public function collectData() {
+ $url = $this->getURI();
+
+ if ($this->getInput('type') == 'boat') {
+ $data = array('SrhLstBtAction' => 'Create');
+ } else {
+ $data = array('SrhLstCwAction' => 'Create');
+ }
+
+ if ($this->getInput('long') && $this->getInput('lat')) {
+ $data['real_LocSrh_Lng'] = $this->getInput('long');
+ $data['real_LocSrh_Lat'] = $this->getInput('lat');
+ if ($this->getInput('distance')) {
+ $data['LocDis'] = (int)$this->getInput('distance') * 1000;
+ }
+ }
+
+ $header = array(
+ 'Content-Type: application/x-www-form-urlencoded'
+ );
+
+ $opts = array(
+ CURLOPT_CUSTOMREQUEST => 'POST',
+ CURLOPT_POSTFIELDS => http_build_query($data) . "\n"
+ );
+
+ $html = getSimpleHTMLDOM($url, $header, $opts) or returnClientError('No results for this query.');
+
+ $annonces = $html->find('.css_SrhRst');
+ foreach ($annonces as $annonce) {
+ $item = array();
+
+ $img = parent::getURI() . $annonce->find('.css_LstPic img', 0)->getAttribute('src');
+ $item['title'] = $annonce->find('.css_LstCtrls span', 0)->plaintext;
+ $item['uri'] = parent::getURI() . $annonce->find('.css_PnlCtrls a', 0)->href;
+ $content = $annonce->find('.css_LstDtl div', 2)->innertext;
+ $item['content'] = "
$content";
+ $item['enclosures'] = array($img);
+ $item['categories'] = array($annonce->find('.css_AccLocCur', 0)->plaintext);
+ $this->items[] = $item;
+ }
+ }
+
+ public function getURI() {
+ $uri = parent::getURI();
+ // Those params must be in the URL
+ $uri .= '/en/' . $this->getInput('type') . '/search?srhtyp=srhrst&mdl=2';
+ return $uri;
+ }
+}