You are here

public function InstapageCmsPluginPageModel::publishPage in Instapage plugin 8.3

Same name and namespace in other branches
  1. 7.3 core/models/InstapageCmsPluginPageModel.php \InstapageCmsPluginPageModel::publishPage()

Sends a request to publish a page in Instapage app.

Parameters

object $data Page object.:

Return value

string JSON object with API response.

File

core/models/InstapageCmsPluginPageModel.php, line 188

Class

InstapageCmsPluginPageModel
Class responsible for managing the landing pages.

Code

public function publishPage($data) {
  $api = InstapageCmsPluginAPIModel::getInstance();
  $subaccount = InstapageCmsPluginSubaccountModel::getInstance();
  $url = $data->slug ? InstapageCmsPluginConnector::getHomeURL() . '/' . $data->slug : InstapageCmsPluginConnector::getHomeURL();
  $url = InstapageCmsPluginHelper::prepareUrlForUpdate($url);
  $tokens = isset($data->apiTokens) ? $data->apiTokens : false;
  $success = true;
  if (!$tokens) {
    $tokens = $subaccount
      ->getAllTokens();
  }
  $oldPageId = isset($data->id) ? $data->id : null;
  $newInstapageId = isset($data->landingPageId) ? $data->landingPageId : null;
  if ($oldPageId) {
    $oldPage = $this
      ->get($oldPageId, array(
      'instapage_id',
    ));
    if ($oldPage->instapage_id != $newInstapageId) {
      $apiData = array(
        'page' => $oldPage->instapage_id,
        'url' => '',
        'publish' => 0,
      );
      $headers = array(
        'accountkeys' => InstapageCmsPluginHelper::getAuthHeader($tokens),
      );
      $responseJson = $api
        ->apiCall('page/edit', $apiData, $headers);
      $response = json_decode($responseJson);
      if (!InstapageCmsPluginHelper::checkResponse($response, null, false) || !$response->success) {
        $success = false;
      }
    }
  }
  if ($success) {
    $apiData = array(
      'page' => $data->landingPageId,
      'url' => $url,
      'publish' => 1,
    );
    $headers = array(
      'accountkeys' => InstapageCmsPluginHelper::getAuthHeader($tokens),
    );
    $responseJson = $api
      ->apiCall('page/edit', $apiData, $headers);
    $response = json_decode($responseJson);
  }
  if (!$success || !InstapageCmsPluginHelper::checkResponse($response, null, false) || !$response->success) {
    if (isset($response->message) && $response->message !== '') {
      return InstapageCmsPluginHelper::formatJsonMessage(InstapageCmsPluginConnector::lang($response->message), 'ERROR');
    }
    else {
      return InstapageCmsPluginHelper::formatJsonMessage(InstapageCmsPluginConnector::lang('There was an error during page update process.'), 'ERROR');
    }
    return false;
  }
  $updatedId = $this
    ->update($data);
  if ($updatedId) {
    return json_encode((object) array(
      'status' => 'OK',
      'message' => InstapageCmsPluginConnector::lang('Page updated successfully.'),
      'updatedId' => $updatedId,
    ));
  }
  else {
    return InstapageCmsPluginHelper::formatJsonMessage(InstapageCmsPluginConnector::lang('There was a database error during page update process.'), 'ERROR');
  }
}