Пример #1
0
 function attrs()
 {
     $this->load->library('POI');
     $this->load->library('geo/*');
     $this->load->model('POIModel');
     $pois = POIModel::loadAll();
     $con = new MongoClient();
     $db = $con->pocketsail;
     $tbl = $db->poi;
     $tbl->remove([]);
     $tbl->ensureIndex(['id' => 1, 'lat' => 1, 'lng' => 1, 'contact.type' => 1]);
     foreach ($pois as $poi) {
         //            $id = $poi->id();
         //            $url = $poi->url();
         //            $name = $poi->name();
         //            $label = $poi->label();
         //            $nearId = $poi->nearId();
         //            $countryId = $poi->countryId();
         //            $cat = $poi->cat();
         //            $sub = $poi->sub();
         //            $userId = $poi->userId();
         //            $lat = $poi->lat();
         //            $lng = $poi->lng();
         //            $border = $poi->border();
         //            $rank = $poi->rank();
         //            $timestamp = $poi->timestamp();
         $attrs = $poi->attrs();
         $new = [];
         $new['id'] = (int) $poi->id();
         $new['url'] = (string) $poi->url();
         $new['name'] = (string) $poi->name();
         $new['label'] = (string) $poi->label();
         $new['near'] = (string) $poi->nearName();
         $new['country'] = (string) $poi->countryName();
         $new['cat'] = (string) $poi->cat();
         $new['sub'] = (string) $poi->cat();
         $new['lat'] = (double) $poi->lat();
         $new['lng'] = (double) $poi->lng();
         if (gettype($attrs) === 'object') {
             /**
              * Description
              */
             if (isset($attrs->description->details)) {
                 $new["description"] = $attrs->description->details;
             }
             /**
              * Approach
              */
             if (isset($attrs->approach)) {
                 $new['approach']['text'] = $attrs->approach->details;
                 $new['approach']['drying']['value'] = @$attrs->approach->drying->value;
                 $new['approach']['drying']['details'] = @$attrs->approach->drying->details;
             }
             /**
              * Hazards
              */
             if (isset($attrs->hazards->details)) {
                 $new['hazards']['val'] = $attrs->hazards->details;
             }
             /**
              * Exposure
              */
             if (isset($attrs->exposure)) {
                 // Wind
                 $winds = explode(",", @$attrs->exposure->wind);
                 if (count($winds) > 0 && $winds[0] != "") {
                     //                        echo "Specific, yet ";
                     //                        print_r($winds);
                     $new['exposure']['wind']['value'] = 'specific';
                     foreach ($winds as $wind) {
                         $new['exposure']['wind']['dir'][] = trim($wind);
                     }
                 } else {
                     $new['exposure']['wind']['value'] = 'na';
                 }
                 // Swell
                 $swells = explode(",", @$attrs->exposure->swell);
                 if (count($swells) > 0) {
                     $new['exposure']['swell']['value'] = 'specific';
                     foreach ($swells as $swell) {
                         $new['exposure']['swell']['dir'][] = trim($swell);
                     }
                 } else {
                     $new['exposure']['swell']['value'] = 'na';
                 }
             }
             /**
              * Attractions & Nightlife
              */
             if (isset($attrs->attractions->details)) {
                 $new['attractions'] = $attrs->attractions->details;
             }
             /**
              * Nightlife
              */
             if (isset($attrs->nightlife->details)) {
                 $new['nightlife'] = $attrs->nightlife->details;
             }
             /**
              * Contact
              */
             if (isset($attrs->contact->types)) {
                 $new['contact']['type'] = [];
                 $new['contact']['value'] = [];
                 for ($i = 0; $i < count($attrs->contact->types); $i++) {
                     $new['contact']['value'][] = $attrs->contact->values[$i];
                     $new['contact']['type'][] = $attrs->contact->types[$i];
                 }
             }
             /**
              * Facilities
              */
             if (isset($attrs->facilities->water->value)) {
                 $new['facilities']['water']['val'] = $attrs->facilities->water->value;
                 $new['facilities']['water']['details']['val'] = @$attrs->facilities->water->details;
             }
             if (isset($attrs->facilities->electricity->value)) {
                 $new['facilities']['electricity']['val'] = $attrs->facilities->electricity->value;
                 $new['facilities']['electricity']['details']['val'] = @$attrs->facilities->electricity->details;
             }
             if (isset($attrs->facilities->showers->value)) {
                 $new['facilities']['showers']['val'] = $attrs->facilities->showers->value;
                 $new['facilities']['showers']['details']['val'] = @$attrs->facilities->showers->details;
             }
             if (isset($attrs->facilities->toilets->value)) {
                 $new['facilities']['toilets']['val'] = $attrs->facilities->toilets->value;
                 $new['facilities']['toilets']['details']['val'] = @$attrs->facilities->toilets->details;
             }
             if (isset($attrs->facilities->waste->value)) {
                 $new['facilities']['waste']['val'] = $attrs->facilities->waste->value;
                 $new['facilities']['waste']['details']['val'] = @$attrs->facilities->waste->details;
             }
             if (isset($attrs->facilities->reception->value)) {
                 $new['facilities']['reception']['val'] = $attrs->facilities->reception->value;
                 $new['facilities']['reception']['details']['val'] = @$attrs->facilities->reception->details;
             }
             if (isset($attrs->facilities->customs->value)) {
                 $new['facilities']['customs']['val'] = $attrs->facilities->customs->value;
                 $new['facilities']['customs']['details']['val'] = @$attrs->facilities->customs->details;
             }
             if (isset($attrs->facilities->enquiries->value)) {
                 $new['facilities']['enquiries']['val'] = $attrs->facilities->enquiries->value;
                 $new['facilities']['enquiries']['details']['val'] = @$attrs->facilities->enquiries->details;
             }
             if (isset($attrs->facilities->laundry->value)) {
                 $new['facilities']['laundry']['val'] = $attrs->facilities->laundry->value;
                 $new['facilities']['laundry']['details']['val'] = @$attrs->facilities->laundry->details;
             }
             if (isset($attrs->facilities->wifi->value)) {
                 $new['facilities']['wifi']['val'] = $attrs->facilities->wifi->value;
                 $new['facilities']['wifi']['details']['val'] = @$attrs->facilities->wifi->details;
             }
             if (isset($attrs->facilities->disability->value)) {
                 $new['facilities']['disability']['val'] = $attrs->facilities->disability->value;
                 $new['facilities']['disability']['details']['val'] = @$attrs->facilities->disability->details;
             }
             if (isset($attrs->facilities->pets->value)) {
                 $new['facilities']['pets']['val'] = $attrs->facilities->pets->value;
                 $new['facilities']['pets']['details']['val'] = @$attrs->facilities->pets->details;
             }
             /**
              * Sources
              */
             if (isset($attrs->sources->details)) {
                 $sources = explode("\r\n", $attrs->sources->details);
                 foreach ($sources as $source) {
                     $new['sources'][] = trim($source);
                 }
             }
             /**
              * Charts
              */
             if (isset($attrs->charts->details)) {
                 $chartsStr = trim($attrs->charts->details, " .");
                 $charts = explode(",", $chartsStr);
                 foreach ($charts as $chart) {
                     $charts_and = $charts = explode(" and ", $chart);
                     foreach ($charts_and as $chart_and) {
                         $new['charts'][] = trim($chart_and, " .");
                     }
                 }
             }
             /**
              * Anchoring info
              */
             if (isset($attrs->anchoring)) {
                 $new['anchoring']['depth']['from'] = $attrs->anchoring->depth->from;
                 $new['anchoring']['depth']['to'] = $attrs->anchoring->depth->to;
                 $new['anchoring']['holding']['value'] = @$attrs->anchoring->holding->values;
                 $new['anchoring']['holding']['details'] = @$attrs->anchoring->holding->details;
                 $new['anchoring']['cost']['value'] = @$attrs->anchoring->price->value !== "";
                 $new['anchoring']['cost']['price'] = @$attrs->anchoring->price->value;
                 $new['anchoring']['cost']['currency'] = @$attrs->anchoring->price->currency;
                 $new['anchoring']['cost']['type'] = @$attrs->anchoring->price->type;
                 $new['anchoring']['cost']['details'] = @$attrs->anchoring->price->details;
                 $new['anchoring']['tax']['value'] = @$attrs->berthing->soujourn->value;
                 $new['anchoring']['tax']['currency'] = @$attrs->berthing->soujourn->currency;
                 $new['anchoring']['tax']['type'] = @$attrs->berthing->soujourn->type;
                 $new['anchoring']['tax']['details'] = @$attrs->berthing->soujourn->details;
             }
             /**
              * Buoys mooring
              */
             if (isset($attrs->mooring)) {
                 $new['mooring']['number']['val'] = $attrs->mooring->number->value;
                 $new['mooring']['number']['details']['val'] = @$attrs->mooring->number->details;
                 $new['mooring']['maxdraught']['val'] = $attrs->mooring->maxdraught->value;
                 $new['mooring']['maxdraught']['type']['val'] = $attrs->mooring->maxdraught->type;
                 $new['mooring']['maxdraught']['details']['val'] = @$attrs->mooring->maxdraught->details;
                 $new['mooring']['maxlength']['val'] = $attrs->mooring->maxlength->value;
                 $new['mooring']['maxlength']['type']['val'] = $attrs->mooring->maxlength->type;
                 $new['mooring']['maxlength']['details']['val'] = @$attrs->mooring->maxlength->details;
                 $new['mooring']['price']['val'] = @$attrs->mooring->price->value;
                 $new['mooring']['price']['currency']['val'] = @$attrs->mooring->price->currency;
                 $new['mooring']['price']['type']['val'] = @$attrs->mooring->price->type;
                 $new['mooring']['price']['details']['val'] = @$attrs->mooring->price->details;
                 $new['mooring']['soujourn']['val'] = @$attrs->mooring->soujourn->value;
                 $new['mooring']['soujourn']['currency']['val'] = @$attrs->mooring->soujourn->currency;
                 $new['mooring']['soujourn']['type']['val'] = @$attrs->mooring->soujourn->type;
                 $new['mooring']['soujourn']['details']['val'] = @$attrs->mooring->soujourn->details;
             }
             /**
              * Berthing, mooring, anchoring
              */
             if (isset($attrs->mba->details) && $attrs->mba->details !== '') {
                 $new['bma']['val'] = $attrs->mba->details;
             }
             /**
              * Services
              */
             if (isset($attrs->services->slipway->value)) {
                 $new['services']['slipway']['val'] = $attrs->services->slipway->value;
                 $new['services']['slipway']['details']['val'] = @$attrs->services->slipway->details;
             }
             if (isset($attrs->services->pumpout->value)) {
                 $new['services']['pumpout']['val'] = $attrs->services->pumpout->value;
                 $new['services']['pumpout']['details']['val'] = @$attrs->services->pumpout->details;
             }
             if (isset($attrs->services->repairs->value)) {
                 $new['services']['repairs']['val'] = $attrs->services->repairs->value;
                 $new['services']['repairs']['details']['val'] = @$attrs->services->repairs->details;
             }
             if (isset($attrs->services->travelift->value)) {
                 $new['services']['travelift']['val'] = $attrs->services->travelift->value;
                 $new['services']['travelift']['maxtonnage']['val'] = @$attrs->services->travelift->maxtonnage;
                 $new['services']['travelift']['details']['val'] = @$attrs->services->travelift->details;
             }
             if (isset($attrs->services->storage->value)) {
                 $new['services']['storage']['val'] = $attrs->services->storage->value;
                 $new['services']['storage']['details']['val'] = @$attrs->services->storage->details;
             }
             if (isset($attrs->services->divers->value)) {
                 $new['services']['divers']['val'] = $attrs->services->divers->value;
                 $new['services']['divers']['details']['val'] = @$attrs->services->divers->details;
             }
             /**
              * Opening
              */
             if (isset($attrs->opening)) {
                 $new['opening']['val'] = $attrs->opening->value;
                 $new['opening']['details']['val'] = @$attrs->opening->details;
                 if (isset($attrs->opening->everyday)) {
                     $new['opening']['everyday']['val'] = $attrs->opening->everyday->value;
                     $new['opening']['everyday']['from']['val'] = @$attrs->opening->everyday->from;
                     $new['opening']['everyday']['to']['val'] = @$attrs->opening->everyday->to;
                 }
                 if (isset($attrs->opening->somedays)) {
                     foreach (['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'] as $day) {
                         $new['opening']['somedays'][$day]['val'] = $attrs->opening->somedays->{$day}->value;
                         $new['opening']['somedays'][$day]['from']['val'] = @$attrs->opening->somedays->{$day}->from;
                         $new['opening']['somedays'][$day]['to']['val'] = @$attrs->opening->somedays->{$day}->to;
                     }
                 }
             }
             /**
              * Season
              */
             if (isset($attrs->season)) {
                 $new['season']['val'] = $attrs->season->value;
                 $new['season']['details']['val'] = @$attrs->season->details;
                 $new['season']['from']['val'] = @$attrs->season->from;
                 $new['season']['to']['val'] = @$attrs->season->to;
             }
             /**
              * Berthing info
              */
             if (isset($attrs->berthing)) {
                 // Assistance
                 if (isset($attrs->berthing->assistance)) {
                     $new['berthing']['assistance']['val'] = $attrs->berthing->assistance->value;
                 } else {
                     $new['berthing']['assistance']['val'] = 'na';
                 }
                 $new['berthing']['assistance']['details']['val'] = @$attrs->berthing->assistance->details;
                 // Type
                 if (isset($attrs->berthing->type)) {
                     $new['berthing']['type']['val'] = $attrs->berthing->type->values;
                 } else {
                     $new['berthing']['type']['val'] = 'na';
                 }
                 $new['berthing']['type']['details']['val'] = @$attrs->berthing->type->details;
                 // Seaberths
                 if (isset($attrs->berthing->seaberths)) {
                     $new['berthing']['seaberths']['total']['val'] = $attrs->berthing->seaberths->total->value;
                     $new['berthing']['seaberths']['visitor']['val'] = $attrs->berthing->seaberths->total->value;
                 }
                 $new['berthing']['seaberths']['details']['val'] = @$attrs->berthing->seaberths->details;
                 // Dryberths
                 if (isset($attrs->berthing->dryberths)) {
                     $new['berthing']['dryberths']['val'] = $attrs->berthing->dryberths->value;
                     $new['berthing']['dryberths']['details']['val'] = @$attrs->berthing->dryberths->details;
                 }
                 // Maxdraught
                 if (isset($attrs->berthing->maxdraught)) {
                     $new['berthing']['maxdraught']['val'] = $attrs->berthing->maxdraught->value;
                     $new['berthing']['maxdraught']['type']['val'] = $attrs->berthing->maxdraught->type;
                     $new['berthing']['maxdraught']['details']['val'] = @$attrs->berthing->maxdraught->details;
                 }
                 // Maxlength
                 if (isset($attrs->berthing->maxlength)) {
                     $new['berthing']['maxlength']['val'] = $attrs->berthing->maxlength->value;
                     $new['berthing']['maxlength']['type']['val'] = $attrs->berthing->maxlength->type;
                     $new['berthing']['maxlength']['details']['val'] = @$attrs->berthing->maxlength->details;
                 }
                 // Price
                 if (isset($attrs->berthing->price)) {
                     if (isset($attrs->berthing->price->value)) {
                         $new['berthing']['price']['val'] = $attrs->berthing->price->value;
                         $new['berthing']['price']['currency']['val'] = $attrs->berthing->price->currency;
                         $new['berthing']['price']['type']['val'] = $attrs->berthing->price->type;
                     } else {
                         $new['berthing']['price']['val'] = 0;
                         $new['berthing']['price']['currency']['val'] = 'gbp';
                         $new['berthing']['price']['type']['val'] = 'm';
                     }
                     $new['berthing']['price']['details']['val'] = @$attrs->berthing->price->details;
                 }
                 // Soujourn
                 if (isset($attrs->berthing->soujourn)) {
                     if (isset($attrs->berthing->soujourn->value)) {
                         $new['berthing']['soujourn']['val'] = $attrs->berthing->soujourn->value;
                         $new['berthing']['soujourn']['currency']['val'] = $attrs->berthing->soujourn->currency;
                         $new['berthing']['soujourn']['type']['val'] = $attrs->berthing->soujourn->type;
                     } else {
                         $new['berthing']['soujourn']['val'] = 0;
                         $new['berthing']['soujourn']['currency']['val'] = 'gbp';
                         $new['berthing']['soujourn']['type']['val'] = 'person';
                     }
                     $new['berthing']['soujourn']['details']['val'] = @$attrs->berthing->soujourn->details;
                 }
             }
         }
         //$new = json_decode(json_encode($new), TRUE);
         $attributes = POI::fromPostData($new);
         //            print_r($attributes->toDoc());
         //            var_dump($tbl->insert($attributes->toDoc()));
         //            print_r($new);
         //            echo "<br /><br />";
     }
     $con->close();
 }