View file install/import/Ning/ForumPosts.php

File size: 2.44Kb
<?php

class Install_Import_Ning_ForumPosts extends Install_Import_Ning_Abstract
{
  protected $_fromFile = 'ning-discussions-local.json';

  protected $_fromFileAlternate = 'ning-discussions.json';

  protected $_toTable = 'engine4_forum_posts';

  protected $_resourceType = 'forum_post';

  protected $_priority = 200;

  protected function  _translateRow(array $data, $key = null)
  {
    if( !empty($data['groupId']) ) {
      return false;
    }

    if( empty($data['category']) ) {
      $data['category'] = 'general discussion';
    }

    $userIdentity = $this->getUserMap($data['contributorName']);
    $topicIdentity = $key + 1;

    $forumIdentity = $this->getToDb()->select()
      ->from('engine4_forum_topics', 'forum_id')
      ->where('topic_id = ?', $topicIdentity)
      ->limit(1)
      ->query()
      ->fetchColumn(0);

    if( !$forumIdentity ) {
      return false;
    }
    // push primary post
    $posts = (array) @$data['comments'];
    array_push($posts, array(
      'id' => $data['id'],
      'contributorName' => $data['contributorName'],
      'description' => $data['description'],
      'createdDate' => $data['createdDate'],
    ));

    foreach(array_reverse($posts) as $postData ) {
      $postUserIdentity = $this->getUserMap($postData['contributorName']);
      $this->getToDb()->insert($this->getToTable(), array(
        'topic_id' => $topicIdentity,
        'user_id' => $postUserIdentity,
        'forum_id' => $forumIdentity,
        'body' => $postData['description'],
        'creation_date' => $this->_translateTime($postData['createdDate']),
        'modified_date' => $this->_translateTime($postData['createdDate']),
      ));
      $lastPostId = $this->getToDb()->lastInsertId();
      $lastPosterId = $postUserIdentity;
      // search
      $this->_insertSearch($this->_resourceType, $lastPosterId, array(
        'description' => $postData['description'],
      ));
    }

    // Update last post?
    if( count($posts) > 0 && $lastPostId && $lastPosterId ) {
      $this->getToDb()->update('engine4_forum_topics', array(
        'lastpost_id' => $lastPostId,
        'lastposter_id' => $lastPosterId,
      ), array(
        'topic_id = ?' => $topicIdentity,
      ));

      $this->getToDb()->update('engine4_forum_forums', array(
        'lastpost_id' => $lastPostId,
        'lastposter_id' => $lastPosterId,
      ), array(
        'forum_id = ?' => $forumIdentity,
      ));
    }

    // Update signature?

    return false;
  }
}