/**
  * Publish a post sent to production.
  *
  * New posts that are sent to production will have a post status of
  * 'publish'. Since we don't want the post to go public until all data
  * has been synced from content stage, post status has been changed to
  * 'draft'. Post status is now changed back to 'publish'.
  *
  * @param Post $post
  */
 public function publish_post(Post $post)
 {
     $prod_id = $this->post_dao->get_id_by_guid($post->get_guid());
     if (!$prod_id) {
         $msg = sprintf('No post with GUID %s found on production.', $post->get_guid());
         $this->api->add_deploy_message($this->batch->get_id(), $msg, 'error');
         return;
     }
     /*
      * Trigger an action before changing the post status to give other plug-ins
      * a chance to act before the post goes public (e.g. cache warm-up).
      */
     do_action('sme_pre_publish_post', $prod_id, get_current_blog_id());
     /*
      * Publish the new post if post status from staging environment is set to
      * "publish".
      */
     if ($post->get_post_status() == 'publish') {
         $this->post_dao->update_post_status($prod_id, 'publish');
     }
 }