Exemple #1
0
 public static function deleteUserAndAllInfo($user_id)
 {
     // Усі фото користувача
     $photos = (new Query())->select('id, src, date')->from('photos')->where(['id_author' => $user_id])->indexBy('id')->all();
     $photos_id = self::arrayIdToString($photos);
     // Видаляємо всі фото користувача
     foreach ($photos as $photo) {
         Photo::deleteAllSizePhoto($photo, "img/photos/");
     }
     // Усі статті користувача
     $articles = (new Query())->select('id, thumbnail')->from('articles')->where(['id_author' => $user_id])->indexBy('id')->all();
     $articles_id = self::arrayIdToString($articles);
     // Видаляємо всі статті користувача
     foreach ($articles as $article) {
         if (file_exists('img/articles/' . $article['thumbnail'])) {
             unlink('img/articles/' . $article['thumbnail']);
         }
     }
     // Усі клуби користувача
     $clubs = (new Query())->select('id')->from('clubs')->where(['id_author' => $user_id])->indexBy('id')->all();
     $clubs_id = self::arrayIdToString($clubs);
     // Усі фото що в клубах користувача або належать цьому користувачу
     $clubs_photo = (new Query())->select('id, src, date')->from('club_photo')->where(['id_author' => $user_id])->orWhere(['in', 'club_id', $clubs_id])->indexBy('id')->all();
     $clubs_photo_id = self::arrayIdToString($clubs_photo);
     // Видаляємо всі фото в клубі користувача
     foreach ($clubs_photo as $photo) {
         Photo::deleteAllSizePhoto($photo, "img/club/photos/");
     }
     $content_club = (new Query())->select('img_src')->from('content_club')->where('id_user=:user_id AND img_src <> ""', [':user_id' => $user_id])->orWhere('id_club IN (:clubs_id) AND img_src <> ""', [':clubs_id' => '1, 2'])->all();
     // Видаляємо всі фото в дискусіях користувача
     foreach ($content_club as $content) {
         if (file_exists('img/club/discussion/' . $content['img_src'])) {
             unlink('img/club/discussion/' . $content['img_src']);
         }
     }
     // Видаляємо аватарку користувача
     if (file_exists('img/avatar/user_' . $user_id . '.jpg')) {
         unlink('img/avatar/user_' . $user_id . '.jpg');
     } elseif (file_exists('img/avatar/user_' . $user_id . '.png')) {
         unlink('img/avatar/user_' . $user_id . '.png');
     } elseif (file_exists('img/avatar/user_' . $user_id . '.gif')) {
         unlink('img/avatar/user_' . $user_id . '.gif');
     }
     // Видалення всіх записів з БД
     Yii::$app->db->createCommand('DELETE FROM album WHERE id_user=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM archive_date WHERE id_photo IN (' . $photos_id . ');')->execute();
     Yii::$app->db->createCommand('DELETE FROM archive_month WHERE id_photo IN (' . $photos_id . ');')->execute();
     Yii::$app->db->createCommand('DELETE FROM archive_week WHERE id_photo IN (' . $photos_id . ');')->execute();
     Yii::$app->db->createCommand('DELETE FROM best_photo_area WHERE photo_id IN (' . $photos_id . ');')->execute();
     Yii::$app->db->createCommand('DELETE FROM comments_photo WHERE id_photo IN (' . $photos_id . ');')->execute();
     Yii::$app->db->createCommand('DELETE FROM favorites WHERE id_photo IN (' . $photos_id . ') OR id_article IN (' . $articles_id . ') OR id_author=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM likes WHERE id_photo IN (' . $photos_id . ') OR id_article IN (' . $articles_id . ');')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM marks_photo WHERE id_photo IN (' . $photos_id . ');')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM club_likes WHERE photo_id IN (' . $clubs_photo_id . ');')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM club_photo WHERE club_id IN (' . $clubs_id . ') OR id_author=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM comments_blog WHERE id_article IN (' . $articles_id . ');')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM comments_club WHERE id_photo IN (' . $clubs_photo_id . ');')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM content_club WHERE id_club IN (' . $clubs_id . ') OR id_user=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM marks_article WHERE id_article IN (' . $articles_id . ');')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM users_clubs WHERE id_club IN (' . $clubs_id . ') OR id_user=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM articles WHERE id_author=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM clubs WHERE id_author=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM friends WHERE id_user1=:user_id OR id_user2=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     Yii::$app->db->createCommand('DELETE FROM photos WHERE id_author=:user_id;')->bindValues([':user_id' => $user_id])->execute();
     // Записуємо в БД що користувач видалився
     $avatar = self::getDeleteUserAvatar();
     Yii::$app->db->createCommand('
         UPDATE user
         SET is_deleted_user=1, avatar="' . $avatar . '", rating=1, cup=0, money=0, photo_day=0, photo_month=0, photo_week=0, photo_year=0, photos=0, comments=0, email=""
         WHERE id = :user_id
     ')->bindValues([':user_id' => $user_id])->execute();
 }