View file upload/src/addons/XenCentral/Feedback/XF/Service/Merge.php

File size: 2.5Kb
<?php
/**
 * @package XenCentral Feedback System
 * @author DNF Technology
 * @copyright Drnoyan & Nalyan LDA, Portugal, EU
 * @license http://dnf.technology/terms/
 * @link http://customers.dnf.technology
 * @version 2.0.0 Beta 10
 * @revision 12
 */

namespace XenCentral\Feedback\XF\Service;

use XF\Db\Exception;
use XF\Entity\User;

class Merge extends XFCP_Merge
{
    public function merge($maxRunTime = 0){

        $success = parent::merge($maxRunTime);

        $userWriter = $this->em()->find('XenCentral\Feedback:FeedbackUser', [
            'user_id' => $this->target->user_id
        ]);

        if ($success) {

	         if ( $userWriter) {

                $db = \XF::db();
                $db->beginTransaction();


                $db->query('UPDATE xf_xc_feedback_feedback SET foruserid = ? WHERE foruserid = ?', array($this->target->user_id, $this->source->user_id));
                $db->query('UPDATE xf_xc_feedback_feedback SET fromuserid = ? WHERE fromuserid = ?', array($this->target->user_id, $this->source->user_id));
                $db->query('UPDATE xf_xc_feedback_comment SET user_id = ? WHERE user_id = ?', array($this->target->user_id, $this->source->user_id));
                $db->query('UPDATE xf_xc_feedback_notification_queue SET forUserId = ? WHERE forUserId = ?', array($this->target->user_id, $this->source->user_id));
                $db->query('UPDATE xf_xc_feedback_preference SET pr_user_id = ? WHERE pr_user_id = ?', array($this->target->user_id, $this->source->user_id));
                $db->query('UPDATE xf_xc_feedback_activity SET user_id = ? WHERE user_id = ?', array($this->target->user_id, $this->source->user_id));

                $sameUserFb = $db->fetchAll('SELECT * FROM xf_xc_feedback_feedback WHERE foruserid = fromuserid');

                if (isset($sameUserFb)) {
	                foreach ( $sameUserFb as $item ) {
		                $db->query( 'DELETE from xf_xc_feedback_feedback WHERE fb_id = ?', array( $item['fb_id'] ) );
		                $db->query( 'DELETE from xf_xc_feedback_comment WHERE fb_id = ?', array( $item['fb_id'] ) );
	                }
                }

                \XF::repository('XenCentral\Feedback:Feedback')->rebuildUserData($this->target->user_id);

                $deleteUserWriter = $this->em()->find('XenCentral\Feedback:FeedbackUser', [
                    'user_id' => $this->source->user_id
                ]);

                $deleteUserWriter->delete();

                $db->commit();

            }
        }

        return $success;

    }

}