Twitter and Facebook connector do duplicate postings

Description

Background

A connector is responsible for finding out if a document needs to be updated or created on the target (http://www.integratedfordevelopers.com/content/documentation/article/creating-an-exporter-for-content-distribution).

Steps

  • Add a Facebook or Twitter connector

  • Publish an article to it

  • --> article is posted

  • Edit and save the article

  • --> article is posted again

The article should not be posted twice. The previous post should be updated (or the second one should be ignored).

Technical approach

Available in (and added to the technical tasks)

Requirements

  • The exporter can return an object with remote_id, url and state. All are optional. In this issue only the remote_id is implemented.

Technical tasks

  • Enable the IntegratedSocialBundle in the AppKernel and implement the config.yml

  • Add an ID field to 'channel_connector_config' and refactor the connector controller to make use of the ID
    In 'Integrated\Bundle\SocialBundle\Connector\Facebook\Exporter::export' check if is posted before.

    • Check the response code from '$this->facebook->post()' if the request was successful
      In 'vendor/integrated/integrated/src/Common/Channel/Exporter/Exporter.php' change the function getExporter(OptionsInterface $options) to getExporter(ConfigInterface $config); (change all methods, including the interface). Need the connector ID to check if posted before.

    • Save the state per connector config to the metadata if not posted before (to support multiple connector configs).

    • The connector should return the remote post ID (or other data) and should not save the data. The data should be saved in the QueueExporter class. The data will be an array.

    • Save the Facebook/Twitter post ID to remove the article later (if the article is not published anymore)

NOTE: the exporter should not save any data to the document.

Deployment actions

None

Activity

Show:
Jeroen van Leeuwen
July 25, 2018, 6:07 AM

Mapping exception

Jan Sanne Mulder
July 25, 2018, 8:16 AM

Zie dat er weer lekker is gehaxored

Jeroen van Leeuwen
July 25, 2018, 11:02 AM

Another mapping exceptions

Marijn Otte
July 31, 2018, 6:57 PM
Edited
  • The ConnectorInterface is on the Article document, but I think it should be on the Content document. We already need it on Taxonomy items in the next sprint. All content items are supported by exporters, so should be for connector responses also. The social exporters currently have a limitation to support Article documents only, but that will also be changed in the future. (for example company profiles need to be posted)

  • In Twitter/Exporter.php and Facebook/Exporter.php:

    has been replaced by

This is not OK. The social plugins use a getTitle() which is only supported by Article.

  • I think a getConnector(id) function should be added to the ConnectorInterface. An important feature of this concept is that the exporter can update the current content based on the external ID. So the exporter needs to be able to get those information.

  • Please refactor ExporterReponse to ExporterResponse

Marijn Otte
August 2, 2018, 4:57 AM

when the PR is merged you can close this issue, test is OK!

Assignee

Unassigned

External issue ID

None

Client

Integrated Marijn

Min. hours

18

Dev hour estimate

5

Epic Link

Sprint

None

Fix versions

Configure