/** * Редактирование фотографии * * <h1>Примеры</h1> * * <h2>Изменение заголовка</h2> * <code> * <?php * $photo = $api->getPhoto(12345678)->load(); * $photo->setTitle('Новое название'); * * $updatedPhoto = $api->updatePhoto($photo)->load(); * echo $updatedPhoto->getTitle(); * ?> * </code> * * <h2>Изменение ссылки на родительский альбом</h2> * <code> * <?php * $photo = $api->getPhoto(12345678)->load(); * $photo->setAlbumId(654321); * * $updatedPhoto = $api->updatePhoto($photo)->load(); * echo $updatedPhoto->getAlbumId(); * ?> * </code> * * @param \Yandex\Fotki\Api\Photo $photo * * @return \Yandex\Fotki\Api\Photo Фотография, которую нужно обновить * @throws \Yandex\Fotki\Exception\Api\Photo Если призошла ошибка во время запроса на обновление * @throws \Yandex\Fotki\Exception\InvalidCall Если произошла ошибка при геренации XML */ public function updatePhoto(Photo $photo) { $oAuthToken = $this->_transport->getOAuthToken(); $fimpToken = $this->_transport->getFimpToken(); $body = $photo->getAtomEntryForSave()->asXML(); $headers = array('Authorization' => $oAuthToken ? "OAuth {$oAuthToken}" : "FimpToken realm=\"fotki.yandex.ru\", token=\"{$fimpToken}\"", 'Content-Type' => 'application/atom+xml; type=entry'); $response = Request::put($photo->getApiUrlEdit(), $headers, $body); if ($response->code === 200) { $url = sprintf("http://api-fotki.yandex.ru/api/users/%s/photo/%s/?format=json", $this->_login, intval($photo->getId())); return new Photo($this->_transport, $url); } else { throw new \Yandex\Fotki\Exception\Api\Photo($response->body, $response->code); } }