From 668c157fabca641616ec31f1db899ddea1f4323c Mon Sep 17 00:00:00 2001 From: chris_blues Date: Thu, 4 Mar 2021 13:58:22 +0100 Subject: [PATCH 1/4] add new methods to deal with Immoscout Projects added methods: * getProjectId() * addToProject() * deleteFromProject() --- Immocaster/Immobilienscout/Rest.php | 113 ++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/Immocaster/Immobilienscout/Rest.php b/Immocaster/Immobilienscout/Rest.php index 6e7a15f..a99ee12 100755 --- a/Immocaster/Immobilienscout/Rest.php +++ b/Immocaster/Immobilienscout/Rest.php @@ -1774,4 +1774,117 @@ private function _getPublish($aArgs) $req->unset_parameter('username'); return parent::getContent($req,$sSecret); } + + /* + * Erfrage die Projekt-ID eines Objektes + * + * Hinweis: hierfür müssen gesonderte Rechte bei Immoscout erteilt werden! + * + * @author chris / https://github.com/chris-blues + * + * @param array $aArgs + * @return mixed + */ + public function getProjectId($aArgs) + { + $aRequired = array('username', 'estateid'); + $oToken = null; + $sSecret = null; + if(!isset($aArgs['username'])) + { + $aArgs['username'] = $this->_sDefaultUsername; + } + list($oToken, $sSecret) = $this->getApplicationTokenAndSecret($aArgs['username']); + if($oToken === NULL || $sSecret === NULL) + { + return IMMOCASTER_SDK_LANG_APPLICATION_NOT_CERTIFIED; + } + $req = $this->doRequest( + 'offer/v1.0/user/'.$aArgs['username'].'/realestateproject?realestateid=ext-'.$aArgs["estateid"], + $aArgs, + $aRequired, + __FUNCTION__, + $oToken + ); + + return parent::getContent($req,$sSecret); + } + + /** + * Füge Objekt einem Projekt hinzu + * + * Hinweis: hierfür müssen gesonderte Rechte bei Immoscout erteilt werden! + * + * @author chris / https://github.com/chris-blues + * + * @param array $aArgs + * @return mixed + */ + public function addToProject($aArgs) + { + $aRequired = array('username', 'estateid', 'project_id'); + $oToken = null; + $sSecret = null; + if(!isset($aArgs['username'])) + { + $aArgs['username'] = $this->_sDefaultUsername; + } + list($oToken, $sSecret) = $this->getApplicationTokenAndSecret($aArgs['username']); + if($oToken === NULL || $sSecret === NULL) + { + return IMMOCASTER_SDK_LANG_APPLICATION_NOT_CERTIFIED; + } + $aArgs['request_body'] = ' + + ' . $aArgs["estateid"] . ' + +'; + + $req = $this->doRequest( + 'offer/v1.0/user/'.$aArgs['username'].'/realestateproject/'.$aArgs["project_id"].'/realestateprojectentry', + $aArgs, + $aRequired, + __FUNCTION__, + $oToken, + 'POST' + ); + + return parent::getContent($req,$sSecret); + } + + /** + * Entferne Objekt aus einem Projekt + * + * Hinweis: hierfür müssen gesonderte Rechte bei Immoscout erteilt werden! + * + * @author chris / https://github.com/chris-blues + * + * @param array $aArgs + * @return mixed + */ + public function deleteFromProject($aArgs) + { + $aRequired = array('username', 'estateid', 'project_id'); + $oToken = null; + $sSecret = null; + if(!isset($aArgs['username'])) + { + $aArgs['username'] = $this->_sDefaultUsername; + } + list($oToken, $sSecret) = $this->getApplicationTokenAndSecret($aArgs['username']); + if($oToken === NULL || $sSecret === NULL) + { + return IMMOCASTER_SDK_LANG_APPLICATION_NOT_CERTIFIED; + } + $req = $this->doRequest( + 'offer/v1.0/user/'.$aArgs['username'].'/realestateproject/'.$aArgs["project_id"].'/realestateprojectentry/ext-'.$aArgs["estateid"], + $aArgs, + $aRequired, + __FUNCTION__, + $oToken, + 'DELETE' + ); + + return parent::getContent($req,$sSecret); + } } From b981c43f68dfb644020eb26801d1f806f331bdc0 Mon Sep 17 00:00:00 2001 From: chris_blues Date: Fri, 12 Mar 2021 18:24:04 +0100 Subject: [PATCH 2/4] use Immoscout-ID to add to and remove from project --- Immocaster/Immobilienscout/Rest.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Immocaster/Immobilienscout/Rest.php b/Immocaster/Immobilienscout/Rest.php index a99ee12..2a164d7 100755 --- a/Immocaster/Immobilienscout/Rest.php +++ b/Immocaster/Immobilienscout/Rest.php @@ -1774,7 +1774,7 @@ private function _getPublish($aArgs) $req->unset_parameter('username'); return parent::getContent($req,$sSecret); } - + /* * Erfrage die Projekt-ID eines Objektes * @@ -1800,7 +1800,7 @@ public function getProjectId($aArgs) return IMMOCASTER_SDK_LANG_APPLICATION_NOT_CERTIFIED; } $req = $this->doRequest( - 'offer/v1.0/user/'.$aArgs['username'].'/realestateproject?realestateid=ext-'.$aArgs["estateid"], + 'offer/v1.0/user/'.$aArgs['username'].'/realestateproject?realestateid='.$aArgs["estateid"], $aArgs, $aRequired, __FUNCTION__, @@ -1836,7 +1836,7 @@ public function addToProject($aArgs) } $aArgs['request_body'] = ' - ' . $aArgs["estateid"] . ' + ' . $aArgs["estateid"] . ' '; @@ -1877,13 +1877,14 @@ public function deleteFromProject($aArgs) return IMMOCASTER_SDK_LANG_APPLICATION_NOT_CERTIFIED; } $req = $this->doRequest( - 'offer/v1.0/user/'.$aArgs['username'].'/realestateproject/'.$aArgs["project_id"].'/realestateprojectentry/ext-'.$aArgs["estateid"], + 'offer/v1.0/user/'.$aArgs['username'].'/realestateproject/'.$aArgs["project_id"].'/realestateprojectentry/'.$aArgs["estateid"], $aArgs, $aRequired, __FUNCTION__, $oToken, 'DELETE' ); + dump_var($req); return parent::getContent($req,$sSecret); } From d8772ddea002c13902d36a2cc3e69568d90891e8 Mon Sep 17 00:00:00 2001 From: chris_blues Date: Fri, 12 Mar 2021 18:56:58 +0100 Subject: [PATCH 3/4] cleanup --- Immocaster/Immobilienscout/Rest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/Immocaster/Immobilienscout/Rest.php b/Immocaster/Immobilienscout/Rest.php index 2a164d7..772372d 100755 --- a/Immocaster/Immobilienscout/Rest.php +++ b/Immocaster/Immobilienscout/Rest.php @@ -1884,7 +1884,6 @@ public function deleteFromProject($aArgs) $oToken, 'DELETE' ); - dump_var($req); return parent::getContent($req,$sSecret); } From b56c2498626ab20b44a1ef7a81a5fc38372e3803 Mon Sep 17 00:00:00 2001 From: chris_blues Date: Fri, 12 Mar 2021 19:16:23 +0100 Subject: [PATCH 4/4] finalize --- Immocaster/Immobilienscout/Rest.php | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Immocaster/Immobilienscout/Rest.php b/Immocaster/Immobilienscout/Rest.php index 772372d..cffee33 100755 --- a/Immocaster/Immobilienscout/Rest.php +++ b/Immocaster/Immobilienscout/Rest.php @@ -1780,6 +1780,8 @@ private function _getPublish($aArgs) * * Hinweis: hierfür müssen gesonderte Rechte bei Immoscout erteilt werden! * + * Beware: Doesn't work with external ID! Triggers an error at Immoscout24! + * * @author chris / https://github.com/chris-blues * * @param array $aArgs @@ -1818,9 +1820,10 @@ public function getProjectId($aArgs) * @author chris / https://github.com/chris-blues * * @param array $aArgs + * @param bool $externalID * @return mixed */ - public function addToProject($aArgs) + public function addToProject($aArgs, $externalID = false) { $aRequired = array('username', 'estateid', 'project_id'); $oToken = null; @@ -1834,11 +1837,22 @@ public function addToProject($aArgs) { return IMMOCASTER_SDK_LANG_APPLICATION_NOT_CERTIFIED; } - $aArgs['request_body'] = ' - - ' . $aArgs["estateid"] . ' - -'; + $aArgs['request_body'] = ''; + + $aArgs['request_body'] .= ' '; + + if ($externalID) + { + $aArgs['request_body'] .= ' ' . $aArgs["estateid"] . ''; + } + else + { + $aArgs['request_body'] .= ' ' . $aArgs["estateid"] . ''; + } + + $aArgs['request_body'] .= ' '; + + $aArgs['request_body'] .= ''; $req = $this->doRequest( 'offer/v1.0/user/'.$aArgs['username'].'/realestateproject/'.$aArgs["project_id"].'/realestateprojectentry',