public function getThreadById($id)
 {
     $record = craft()->forum_thread->getThreadById($id);
     $record->replies = array_map(function ($reply) {
         $reply->user = UserRecord::model()->findById($reply->userId);
         return $reply;
     }, $record->replies);
     return $record;
 }
 /**
  * Handle the onBeforeSaveUser event.
  *
  * @param Event $event
  */
 public function onBeforeSaveUser(Event $event)
 {
     // Get user id to save
     $id = $event->params['user']->id;
     if (!$event->params['isNewUser']) {
         // Get old user from db
         $user = UserModel::populateModel(UserRecord::model()->findById($id));
         // Get fields
         $this->before = $this->fields($user);
     } else {
         // Get fields
         $this->before = $this->fields($event->params['user'], true);
     }
 }
 /**
  * Gets a user record by its ID.
  *
  * @param int $userId
  *
  * @throws Exception
  * @return UserRecord
  */
 private function _getUserRecordById($userId)
 {
     $userRecord = UserRecord::model()->findById($userId);
     if (!$userRecord) {
         throw new Exception(Craft::t('No user exists with the ID “{id}”.', array('id' => $userId)));
     }
     return $userRecord;
 }
 /**
  * Delete all the photos for current user.
  */
 public function actionDeleteUserPhoto()
 {
     $this->requireAjaxRequest();
     craft()->userSession->requireLogin();
     $userId = craft()->request->getRequiredPost('userId');
     if ($userId != craft()->userSession->getUser()->id) {
         craft()->userSession->requirePermission('editUsers');
     }
     $user = craft()->users->getUserById($userId);
     craft()->users->deleteUserPhoto($user);
     $record = UserRecord::model()->findById($user->id);
     $record->photo = null;
     $record->save();
     // Since Model still believes it has an image, we make sure that it does not so anymore when it reaches the template.
     $user->photo = null;
     $html = craft()->templates->render('users/_edit/_userphoto', array('account' => $user));
     $this->returnJson(array('html' => $html));
 }
 /**
  * Initialize the category saving/deleting events.
  */
 public function log()
 {
     // Get values before saving
     craft()->on('users.onBeforeSaveUser', function (Event $event) {
         // Get user id to save
         $id = $event->params['user']->id;
         if (!$event->params['isNewUser']) {
             // Get old user from db
             $user = UserModel::populateModel(UserRecord::model()->findById($id));
             // Get fields
             craft()->auditLog_user->before = craft()->auditLog_user->fields($user);
         } else {
             // Get fields
             craft()->auditLog_user->before = craft()->auditLog_user->fields($event->params['user'], true);
         }
     });
     // Get values after saving
     craft()->on('users.onSaveUser', function (Event $event) {
         // Get saved user
         $user = $event->params['user'];
         // Get fields
         craft()->auditLog_user->after = craft()->auditLog_user->fields($user);
         // New row
         $log = new AuditLogRecord();
         // Set user id
         $log->userId = craft()->userSession->getUser() ? craft()->userSession->getUser()->id : $user->id;
         // Set element type
         $log->type = ElementType::User;
         // Set origin
         $log->origin = craft()->request->isCpRequest() ? craft()->config->get('cpTrigger') . '/' . craft()->request->path : craft()->request->path;
         // Set before
         $log->before = craft()->auditLog_user->before;
         // Set after
         $log->after = craft()->auditLog_user->after;
         // Set status
         $log->status = $event->params['isNewUser'] ? AuditLogModel::CREATED : AuditLogModel::MODIFIED;
         // Save row
         $log->save(false);
         // Callback
         craft()->auditLog->elementHasChanged(ElementType::User, $user->id, craft()->auditLog_user->before, craft()->auditLog_user->after);
     });
     // Get values before deleting
     craft()->on('users.onBeforeDeleteUser', function (Event $event) {
         // Get deleted user
         $user = $event->params['user'];
         // Get fields
         craft()->auditLog_user->before = craft()->auditLog_user->fields($user);
         craft()->auditLog_user->after = craft()->auditLog_user->fields($user, true);
         // New row
         $log = new AuditLogRecord();
         // Set user id
         $log->userId = craft()->userSession->getUser()->id;
         // Set element type
         $log->type = ElementType::User;
         // Set origin
         $log->origin = craft()->request->isCpRequest() ? craft()->config->get('cpTrigger') . '/' . craft()->request->path : craft()->request->path;
         // Set before
         $log->before = craft()->auditLog_user->before;
         // Set after
         $log->after = craft()->auditLog_user->after;
         // Set status
         $log->status = AuditLogModel::DELETED;
         // Save row
         $log->save(false);
         // Callback
         craft()->auditLog->elementHasChanged(ElementType::User, $user->id, craft()->auditLog_user->before, craft()->auditLog_user->after);
     });
 }