Удаление папки в CodeIgniter - PullRequest
0 голосов
/ 03 июля 2018

ОБНОВЛЕНИЕ: Я уже решил, я не знаю, как, но теперь он работает, вот это новая функция обновления на случай, если какие-либо будущие пользователи столкнутся с подобной проблемой.

Если предположить, что переменная $ id исходит от функции, которая извлекает текущий идентификатор удаляемых данных, и если у вас уже есть функция, которая создает папки в соответствии с именами пользователей, следующее должно работать!.

public function delete($id)
    {
        $this->db->where('id', $id);
        $this->db->delete($this->table);


        // If users closes his account, all of his folders should be deleted as well
        $item = $this->get($id)->username;
        //varDebug($item);
        delete_files(FCPATH."assets/img/users/avatars/".$item, TRUE);
        delete_files(FCPATH."assets/img/users/covers/".$item, TRUE);
        delete_files(FCPATH."assets/img/users/status/".$item, TRUE);
        rmdir("assets/img/users/avatars/".$item);
        rmdir("assets/img/users/covers/".$item);
        rmdir("assets/img/users/status/".$item);
    }

У меня есть форма регистрации, в которой пользователи могут зарегистрироваться, чтобы создать свою учетную запись в моем приложении, и я даю им возможность загружать свои собственные фотографии и т. Д. Пока все работает хорошо.

Проблема возникает, когда пользователь и / или администратор удаляет учетную запись пользователя. Например, я, как администратор, решил удалить учетную запись Брайана, все его папки также должны быть удалены.

Текущий вывод состоит в том, что он удаляет все (если имеется больше, чем его собственная учетная запись) папки вместо его собственной учетной записи.

Итак, вот что у меня есть в моей модели:

public function delete($id)
    {
        $this->db->where('id', $id);
        $this->db->delete($this->table);


        // If users closes his account, all of his folders should be deleted as well
        $item = $this->get($id);
        delete_files("assets/img/users/avatars/".$item['username']."/", TRUE);
        delete_files("assets/img/users/covers/".$item['username']."/", TRUE);
        delete_files("assets/img/users/status/".$item['username']."/", TRUE);
        rmdir("assets/img/users/avatars/".$item['username']."/");
        rmdir("assets/img/users/covers/".$item['username']."/");
        rmdir("assets/img/users/status/".$item['username']."/");
    }

Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 03 июля 2018

Вам необходимо указать полный путь к delete_files(). Легко сделано. Просто добавьте FCPATH в начало путей. Это предполагает, что assets находится на том же уровне, что и application и system. Отрегулируйте соответственно.

FCPATH - это абсолютный путь к той же папке, в которой находится index.php.

delete_files(FCPATH."assets/img/users/avatars/".$item['username'], TRUE);

Вам не нужна косая черта на пути. Ничего страшного, если вы это сделаете, но delete_files() все равно скинет его.

...