Exemplo n.º 1
0
 protected function handle()
 {
     $request = $this->getRequest();
     if ($request->getMethod() == 'POST') {
         $ids = $request->request->get('ids');
         $session = $this->getSession();
         $db = UserDatabase::getDb();
         $db->transaction();
         try {
             if (!$ids) {
                 throw new \Exception('没有选择任何用户');
             }
             $users = UserAuthModel::allUsers(function (QueryBuilder $qb) use($ids) {
                 $qb->andWhere($qb->expr()->in('id', $ids));
             });
             if (!$users) {
                 throw new \Exception('用户不存在');
             }
             // 删除用户
             foreach ($users as $user) {
                 UserAuthModel::deleteAuth($user['id']);
                 // 删除资料
                 UserProfileModel::deleteProfile($user['id']);
                 // 删除元数据
                 $metadata = UserMetadataModel::allMetadata(function (QueryBuilder $qb) use($user) {
                     $qb->andWhere($qb->expr()->eq('user_id', ':user_id'))->setParameter(':user_id', $user['id']);
                 });
                 foreach ($metadata as $data) {
                     UserMetadataModel::deleteMetadata($user['id'], $data['meta_key']);
                 }
             }
             $db->commit();
             $session->addFlash('success', '操作成功');
         } catch (\Exception $e) {
             $db->rollback();
             $session->addFlash('error', $e->getMessage());
         }
         return new RedirectResponse($this->generateUrl('admin_user_index'));
     } else {
         $ids = $request->query->get('ids');
         if (is_string($ids)) {
             $ids = json_decode($ids, true);
         }
         if (!$ids) {
             throw new \Exception('没有选择任何用户');
         }
         $users = UserAuthModel::allUsers(function (QueryBuilder $qb) use($ids) {
             $qb->andWhere($qb->expr()->in('id', $ids));
         });
         if (!$users) {
             throw new \Exception('用户不存在');
         }
         return $this->render('user/delete.html.twig', array('users' => $users));
     }
 }
Exemplo n.º 2
0
 /**
  * 保存
  * @param UserMetadataModel $metadata
  * @return UserMetadataModel
  * @throws \Exception
  */
 public static function saveMetadata(UserMetadataModel $metadata)
 {
     return self::editMetadata($metadata->toArray());
 }