You are here

private function InstapageCmsPluginAjaxController::loadListPages in Instapage plugin 8.3

Same name and namespace in other branches
  1. 7.3 core/InstapageCmsPluginAjaxController.php \InstapageCmsPluginAjaxController::loadListPages()

Loads listing page.

1 call to InstapageCmsPluginAjaxController::loadListPages()
InstapageCmsPluginAjaxController::doAction in core/InstapageCmsPluginAjaxController.php
Executes an action set in the request.

File

core/InstapageCmsPluginAjaxController.php, line 286

Class

InstapageCmsPluginAjaxController
Main controller for AJAX actions. Results are returned as encoded JSON objects. Data for actions are stored in $_POST['data'] table.

Code

private function loadListPages() {
  $requestLimit = 100;
  $post = InstapageCmsPluginHelper::getPostData();
  $page = InstapageCmsPluginPageModel::getInstance();
  InstapageCmsPluginHelper::writeDiagnostics($post, 'List page POST');
  $api = InstapageCmsPluginAPIModel::getInstance();
  $subaccount = InstapageCmsPluginSubaccountModel::getInstance();
  $localPagesArray = $page
    ->getAll(array(
    'id',
    'instapage_id',
    'slug',
    'type',
    'stats_cache',
    'enterprise_url',
  ));

  // WP Legacy code - automatic migration.
  $automaticMigration = InstapageCmsPluginHelper::getMetadata('automatic_migration', false);
  if (empty($automaticMigration) && !count($localPagesArray) && InstapageCmsPluginConnector::isWP() && InstapageCmsPluginConnector::getSelectedConnector()
    ->legacyArePagesPresent()) {
    $data = InstapageCmsPluginConnector::getSelectedConnector()
      ->getDeprecatedData();
    $page = InstapageCmsPluginPageModel::getInstance();
    $page
      ->migrateDeprecatedData($data);
    $localPagesArray = $page
      ->getAll(array(
      'id',
      'instapage_id',
      'slug',
      'type',
      'stats_cache',
      'enterprise_url',
    ));
    InstapageCmsPluginHelper::updateMetadata('automatic_migration', time());
  }
  $pages = array();
  foreach ($localPagesArray as &$pageObject) {
    $pageObject->stats_cache = json_decode($pageObject->stats_cache);
    $pages[] = $pageObject->instapage_id;
  }
  $tokens = isset($post->apiTokens) ? $post->apiTokens : false;
  if (!$tokens) {
    $tokens = $subaccount
      ->getAllTokens();
  }
  if (!count($tokens)) {
    echo json_encode((object) array(
      'status' => 'OK',
      'html' => InstapageCmsPluginHelper::loadTemplate('listing', false),
      'initialData' => $localPagesArray,
    ));
    return true;
  }
  $headers = array(
    'accountkeys' => InstapageCmsPluginHelper::getAuthHeader($tokens),
  );
  $responses = array();
  for ($i = 0; $i * $requestLimit < count($pages); ++$i) {
    $dataSlice = array_slice($pages, $i * $requestLimit, $requestLimit);
    $data = array(
      'pages' => $dataSlice,
    );
    $responseJson = $api
      ->apiCall('page/list', $data, $headers, 'GET');
    $response = json_decode($responseJson);
    if (InstapageCmsPluginHelper::checkResponse($response) && isset($response->data) && is_array($response->data)) {
      $responses[] = $response->data;
    }
    else {
      return false;
    }
  }
  $mergedResponse = array();
  foreach ($responses as $r) {
    $mergedResponse = array_merge($mergedResponse, $r);
  }
  $page
    ->mergeListPagesResults($localPagesArray, $mergedResponse);
  InstapageCmsPluginHelper::writeDiagnostics($localPagesArray, 'List page array');
  echo json_encode((object) array(
    'status' => 'OK',
    'html' => InstapageCmsPluginHelper::loadTemplate('listing', false),
    'initialData' => $localPagesArray,
  ));
}