/** * @param string $result * * @return bool */ public function doUpdate($result) { $return = true; $xml = $this->createXmlObject($result); $stations = $xml->result->rowset->row; foreach ($stations as $station) { $data = self::getXmlAttr($station); /** @var ConquerableStation $conquerableStation */ $conquerableStation = ConquerableStation::findOne(['stationID' => $data['stationID']]); if (!$conquerableStation) { $conquerableStation = new ConquerableStation(); $conquerableStation->stationID = $data['stationID']; $conquerableStation->timeUpdate = time(); } else { if ($conquerableStation->stationName != $data['stationName'] || $conquerableStation->corporationID != $data['corporationID']) { // only owner and name can be changed in game, all others data is not changeable $conquerableStation->timeUpdate = time(); } } $conquerableStation->stationID = $data['stationID']; $conquerableStation->stationName = $data['stationName']; $conquerableStation->stationTypeID = $data['stationTypeID']; $conquerableStation->solarSystemID = $data['solarSystemID']; $conquerableStation->corporationID = $data['corporationID']; $conquerableStation->corporationName = $data['corporationName']; $return = $conquerableStation->save() && $return; } return $return; }
/** * @param array|null $params * * @return ActiveDataProvider */ public function search($params) { $query = ConquerableStation::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); if (!$this->load($params) && !$this->validate()) { return $dataProvider; } $query->andFilterWhere(['like', 'stationID', $this->stationID])->andFilterWhere(['like', 'solarSystemID', $this->solarSystemID])->andFilterWhere(['like', 'stationName', $this->stationName]); return $dataProvider; }