ImportModel::insertTables PHP Method

insertTables() public method

public insertTables ( ) : boolean
return boolean
    public function insertTables()
    {
        $InsertedCount = 0;
        $Timer = new Gdn_Timer();
        $Timer->start();
        $Tables =& $this->Tables();
        foreach ($Tables as $TableName => $TableInfo) {
            if (val('Inserted', $TableInfo) || val('Skip', $TableInfo)) {
                $InsertedCount++;
            } else {
                $this->Data['CurrentStepMessage'] = sprintf(t('%s of %s'), $InsertedCount, count($Tables));
                if (strcasecmp($this->Overwrite(), 'Overwrite') == 0) {
                    switch ($TableName) {
                        case 'Permission':
                            $this->InsertPermissionTable();
                            break;
                        default:
                            $RowCount = $this->_InsertTable($TableName);
                            break;
                    }
                } else {
                    switch ($TableName) {
                        case 'Permission':
                            $this->InsertPermissionTable();
                            break;
                        case 'UserDiscussion':
                            $Sql = "insert ignore :_UserDiscussion ( UserID, DiscussionID, DateLastViewed, Bookmarked )\n                        select zUserID._NewID, zDiscussionID._NewID, max(i.DateLastViewed) as DateLastViewed, max(i.Bookmarked) as Bookmarked\n                        from :_zUserDiscussion i\n                        left join :_zUser zUserID\n                          on i.UserID = zUserID.UserID\n                        left join :_zDiscussion zDiscussionID\n                          on i.DiscussionID = zDiscussionID.DiscussionID\n                        left join :_UserDiscussion ud\n                          on ud.UserID = zUserID._NewID and ud.DiscussionID = zDiscussionID._NewID\n                        where ud.UserID is null\n                        group by zUserID._NewID, zDiscussionID._NewID";
                            $this->query($Sql);
                            break;
                        case 'UserMeta':
                            $Sql = "insert ignore :_UserMeta ( UserID, Name, Value )\n                           select zUserID._NewID, i.Name, max(i.Value) as Value\n                           from :_zUserMeta i\n                           left join :_zUser zUserID\n                             on i.UserID = zUserID.UserID\n                           left join :_UserMeta um\n                             on zUserID._NewID = um.UserID and i.Name = um.Name\n                           where um.UserID is null\n                           group by zUserID._NewID, i.Name";
                            $this->query($Sql);
                            break;
                        case 'UserRole':
                            $Sql = "insert ignore :_UserRole ( UserID, RoleID )\n                           select zUserID._NewID, zRoleID._NewID\n                           from :_zUserRole i\n                           left join :_zUser zUserID\n                             on i.UserID = zUserID.UserID\n                           left join :_zRole zRoleID\n                             on i.RoleID = zRoleID.RoleID\n                           left join :_UserRole ur\n                              on zUserID._NewID = ur.UserID and zRoleID._NewID = ur.RoleID\n                           where i.UserID <> 0 and ur.UserID is null";
                            $this->query($Sql);
                            break;
                        default:
                            $RowCount = $this->_InsertTable($TableName);
                    }
                }
                $Tables[$TableName]['Inserted'] = true;
                if (isset($RowCount)) {
                    $Tables[$TableName]['RowCount'] = $RowCount;
                }
                $InsertedCount++;
                // Make sure the loading isn't taking too long.
                if ($Timer->ElapsedTime() > $this->MaxStepTime) {
                    break;
                }
            }
        }
        $Result = $InsertedCount == count($this->Tables());
        if ($Result) {
            $this->Data['CurrentStepMessage'] = '';
        }
        return $Result;
    }