protected function merge(User $target, User $source) { //module should throw Exception in case of merge is not possible $event = new Am_Event(Am_Event::USER_BEFORE_MERGE, array('target' => $target, 'source' => $source)); $this->getDi()->hook->call(Am_Event::USER_BEFORE_MERGE, $event); $this->getDi()->db->query('UPDATE ?_access SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); $this->getDi()->db->query('UPDATE ?_access_log SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); $this->getDi()->db->query('UPDATE ?_invoice SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); $this->getDi()->db->query('UPDATE ?_invoice_log SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); $this->getDi()->db->query('UPDATE ?_invoice_payment SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); $this->getDi()->db->query('UPDATE ?_invoice_refund SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); // $this->getDi()->db->query('UPDATE ?_admin_log SET record_id=? WHERE record_id=? // AND tablename=?', // $target->pk(), $source->pk(), 'user'); $this->getDi()->db->query('UPDATE ?_coupon_batch SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); $this->getDi()->db->query('UPDATE ?_file_download SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); $this->getDi()->db->query('UPDATE ?_upload SET user_id=? WHERE user_id=?', $target->pk(), $source->pk()); $event = new Am_Event(Am_Event::USER_MERGE, array('target' => $target, 'source' => $source)); $this->getDi()->hook->call(Am_Event::USER_MERGE, $event); $source->delete(); $target->save(); $target->checkSubscriptions(true); }