/**
  * Pre-Markup rule. Recognizes mentions in blubber as @username or @"Firstname lastname"
  * and turns them into usual studip-links. The mentioned person is notified by
  * sending a message to him/her as a side-effect.
  * @param StudipTransformFormat $markup
  * @param array $matches
  * @return string
  */
 public static function mention($markup, $matches)
 {
     $mention = $matches[1];
     $posting = new BlubberPosting(self::$mention_posting_id);
     $username = stripslashes(substr($mention, 1));
     if ($username[0] !== '"') {
         $user = BlubberUser::findByUsername($username);
         if (!$user) {
             $user = BlubberExternalContact::findByEmail($username);
         }
     } else {
         $name = substr($username, 1, strlen($username) - 2);
         $statement = DBManager::get()->prepare("SELECT user_id FROM auth_user_md5 WHERE CONCAT(Vorname, ' ', Nachname) = :name " . "");
         $statement->execute(array('name' => $name));
         $user_id = $statement->fetch(PDO::FETCH_COLUMN, 0);
         if ($user_id) {
             $user = new BlubberUser($user_id);
         } else {
             $statement = DBManager::get()->prepare("SELECT external_contact_id FROM blubber_external_contact WHERE name = ? " . "");
             $statement->execute(array($name));
             $user_id = $statement->fetch(PDO::FETCH_COLUMN, 0);
             $user = BlubberExternalContact::find($user_id);
         }
     }
     if ($user && !$posting->isNew() && $user->getId() && $user->getId() !== $GLOBALS['user']->id) {
         $user->mention($posting);
         $statement = DBManager::get()->prepare("INSERT IGNORE INTO blubber_mentions " . "SET user_id = :user_id, " . "topic_id = :topic_id, " . "external_contact = :extern, " . "mkdate = UNIX_TIMESTAMP() " . "");
         $statement->execute(array('user_id' => $user->getId(), 'topic_id' => $posting['root_id'], 'extern' => is_a($user, "BlubberExternalContact") ? 1 : 0));
         return '[' . $user->getName() . ']' . $user->getURL() . ' ';
     } else {
         return $markup->quote($matches[0]);
     }
 }