1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Fixed xf_post.attach_count incorrect value

Discussion in 'Resolved Bug Reports' started by xfrocks, Mar 6, 2011.

  1. xfrocks

    xfrocks Well-Known Member

    This is a low priority bug but it should be fixed anyway. It's kinda funny:

    File: ./library/XenForo/DataWriter/DiscussionMessage.php
    Line: 574 (XenForo RC3)
    PHP:
        protected function _associateAttachments($attachmentHash)
        {
            
    $rows $this->_db->update('xf_attachment', array(
                
    'content_type' => $this->getContentType(),
                
    'content_id' => $this->getDiscussionMessageId(),
                
    'temp_hash' => '',
                
    'unassociated' => 0
            
    ), 'temp_hash = ' $this->_db->quote($attachmentHash));
            if (
    $rows)
            {
                
    // TODO: ideally, this can be consolidated with other post-save message updates (see updateIpData)
                
    $this->set('attach_count'$this->get('attach_count') + $rows'', array('setAfterPreSave' => true));

                
    $this->_db->update($this->getDiscussionMessageTableName(), array(
                    
    'attach_count' => $this->get('attach_count') + $rows
                
    ), $this->getDiscussionMessageKeyName() . ' = ' .  $this->_db->quote($this->getDiscussionMessageId()));
            }
        }
    The database update will store incorrect value for attach_count because after this line

    PHP:
    $this->set('attach_count'$this->get('attach_count') + $rows'', array('setAfterPreSave' => true));
    The internal value of attach_count is already increased by the number of rows (new attachments). But in the database update query, that number of rows is added AGAIN. That means if a post has 1 attachment, the attach_count is 2. If the post has 5 attachments, attach_count will be 10.
     
  2. Mike

    Mike XenForo Developer Staff Member

    Good catch, fixed now. Unfortunately, we don't have a great process to update the incorrect rows (I suppose we could divide by 2 across the board, though this was working at some point I imagine :)). The only side effect should be a wasted query if someone uploads an attachment and then deletes it.
     
    xfrocks likes this.

Share This Page