You are here

public function InstapageCmsPluginPageModel::migrateDeprecatedData in Instapage plugin 8.3

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

Migrates the depracated pages to current DB structure.

Parameters

array $data List of pages to migrate.:

Return value

array List of messages to display as a migration raport.

File

core/models/InstapageCmsPluginPageModel.php, line 265

Class

InstapageCmsPluginPageModel
Class responsible for managing the landing pages.

Code

public function migrateDeprecatedData($data) {
  InstapageCmsPluginHelper::writeDiagnostics($data, 'Migration data');
  $raport = array();
  if (!is_array($data) || !count($data)) {
    return $raport;
  }
  foreach ($data as $deprecatedPage) {
    if ($deprecatedPage->type == 'home') {
      $deprecatedPage->slug = '';
    }
    $landingPagesById = $this
      ->getByInstapageId($deprecatedPage->landingPageId);
    $landingPagesBySlug = null;
    $landingPagesByType = null;
    if (count($landingPagesById)) {
      $newLandingPage = array_pop($landingPagesById);
      $raport[] = InstapageCmsPluginConnector::lang('Old version of page (slug: %s, Instapage ID: %s) is present in new database (slug: %s) and won\'t be migrated.', $deprecatedPage->slug, $deprecatedPage->landingPageId, $newLandingPage->slug);
      continue;
    }
    if ($deprecatedPage->slug && $deprecatedPage->type == 'page') {
      $landingPagesBySlug = $this
        ->getBySlug($deprecatedPage->slug);
    }
    if ($landingPagesBySlug) {
      $newLandingPage = $landingPagesBySlug;
      $raport[] = InstapageCmsPluginConnector::lang('Slug: %s is already taken in new database. Old page (slug: %s, Instapage ID: %s) won\'t be migrated.', $deprecatedPage->slug, $deprecatedPage->slug, $deprecatedPage->landingPageId);
      continue;
    }
    if ($deprecatedPage->type !== 'page') {
      $landingPagesByType = $this
        ->getByType($deprecatedPage->type);
    }
    if ($landingPagesByType) {
      $newLandingPage = $landingPagesByType;
      $raport[] = InstapageCmsPluginConnector::lang('One %s page already exists in new database. Old page (slug: %s, Instapage ID: %s) won\'t be migrated.', $deprecatedPage->type, $deprecatedPage->slug, $deprecatedPage->landingPageId);
      continue;
    }
    if ($this
      ->update($deprecatedPage)) {
      $raport[] = InstapageCmsPluginConnector::lang('Old version of page (slug: %s, Instapage ID: %s) successfully migrated.', $deprecatedPage->slug, $deprecatedPage->landingPageId);
    }
    else {
      $raport[] = InstapageCmsPluginConnector::lang('Old version of page (slug: %s, Instapage ID: %s) cannot be migrated due to database error.', $deprecatedPage->slug, $deprecatedPage->landingPageId);
    }
  }
  InstapageCmsPluginHelper::writeDiagnostics($raport, 'Migration raport');
  return $raport;
}