getCategory() === 'system' ) { $sender = -1; } else { $agent = $event->getAgent(); if ( $agent ) { $sender = $agent->isAnon() ? $agent->getName() : $agent->getId(); } else { $sender = -1; } } if ( isset( $wgEchoNotifications[$event->getType()]['group'] ) ) { $group = $wgEchoNotifications[$event->getType()]['group']; } else { $group = 'neutral'; } $data = array( 'version' => $wgEchoConfig['version'], 'eventId' => (int)$event->getId(), 'notificationType' => $event->getType(), 'notificationGroup' => $group, 'sender' => (string)$sender, 'recipientUserId' => $user->getId(), 'recipientEditCount' => (int)$user->getEditCount() ); // Add the source if it exists. (This is mostly for the Thanks extension.) $extra = $event->getExtra(); if ( isset( $extra['source'] ) ) { $data['eventSource'] = (string)$extra['source']; } if ( $deliveryMethod == 'email' ) { $data['deliveryMethod'] = 'email'; } else { // whitelist valid delivery methods so it is always valid $data['deliveryMethod'] = 'web'; } // Add revision ID if it exists $rev = $event->getRevision(); if ( $rev ) { $data['revisionId'] = $rev->getId(); } self::logEvent( 'Echo', $data ); } /** * Function for logging the event for Schema:EchoEmail * @param User $user * @param string $emailDeliveryMode 'single' (default), 'daily_digest', or 'weekly_digest' */ public static function logSchemaEchoMail( User $user, $emailDeliveryMode = 'single' ) { global $wgEchoConfig; $data = array( 'version' => $wgEchoConfig['version'], 'recipientUserId' => $user->getId(), 'emailDeliveryMode' => $emailDeliveryMode ); self::logEvent( 'EchoMail', $data ); } /** * @param User $user * @param string $skinName */ public static function logEchoInteraction( User $user, $skinName ) { self::logEvent( 'EchoInteraction', array( 'context' => 'archive', 'action' => 'special-page-visit', 'userId' => (int)$user->getId(), 'editCount' => (int)$user->getEditCount(), 'notifWiki' => wfWikiID(), // Hack: Figure out if we are in the mobile skin 'mobile' => $skinName === 'minerva', ) ); } }