Почему не работает хук удаления пользователей?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 15 февраля 2020 в 22:50
  1. <?php
  2.  
  3. class onUsersfilterCronUsersdelete extends cmsAction {
  4.  
  5. public function run(){
  6. $users_model = cmsCore::getModel('users');
  7.  
  8. // Получаем всех пользователей
  9. $users = $users_model->getUsers();
  10.  
  11. // Перебираем массив пользователей
  12. foreach($users as $user){
  13.  
  14. // Если профайл удален - удаляем юзера
  15. if ($user['is_deleted'] == 1){
  16. $users_model->deleteUser($user);
  17. }
  18. }
  19. }
  20. }
  21. ?>
Показывает, что хук выполнен. Но все удаленные остаються. Что должно произойти если $ users_model-> deleteUser ($ user) не сможет какогото пользователя удалить? Цикл дальше пойдьот и тот пользователей останется?

Или выполнение скрипта прекратится?
#2 17 февраля 2020 в 20:28
Как мне узнать что $users = $users_model->getUsers(); Получает пользователей?
#3 17 февраля 2020 в 20:51

Как мне узнать что $users = $users_model->getUsers(); Получает пользователей?

@andriu3240
dump($users);
или
print_r($users);
#4 18 февраля 2020 в 16:20
Выбирает но не все. В $user попадает 1800 профилей. Почему остальных не выбирает?
#5 19 февраля 2020 в 17:32
Как выбрали только тех пользователей у которых ['is_deleted'] == 1 ?
Так количество людей будет меньше.
#6 20 февраля 2020 в 16:02
Кто-то сталкивался с неполной выборке с базы? Я думаю нефатка ресурса. Комп мочно. Как Open Server увеличит ресурсы?
#7 20 февраля 2020 в 19:52
@andriu3240,
Попробуйте так:
<?php

class onUsersfilterCronUsersdelete extends cmsAction {

public function run(){
$users_model = cmsCore::getModel('users');

// Получаем всех удаленных пользователей
$users = $users_model->filterEqual('is_deleted', 1);

// Перебираем массив пользователей
foreach($users as $user){
$users_model->deleteUser($user);
}
}
}
}
?>

Я думаю нефатка ресурса. Комп мочно. Как Open Server увеличит ресурсы?

@andriu3240
Ресурсы не при чем.
#8 20 февраля 2020 в 21:38
Неизвестный столбец 'i.is_deleted' в 'where clause'

SELECT i.*
FROM cms_users_friends i
WHERE (i.is_deleted = '1') AND (i.user_id = 'u')
LIMIT 1000
там не масив пользователей.
#9 20 февраля 2020 в 22:05
Извините, забыл саму выборку.
<?php

class onUsersfilterCronUsersdelete extends cmsAction {

public function run(){
$users_model = cmsCore::getModel('users');

// Получаем всех удаленных пользователей
$users = $users_model->filterEqual('is_deleted', 1)->getUsers();

// Перебираем массив пользователей
foreach($users as $user){
$users_model->deleteUser($user);
}
}
}
}
?>
#10 20 февраля 2020 в 23:23
Фигня якас виходить. Ошибка що не коректний параметр цикла var_dump($users); вивело bool(false)
#11 21 февраля 2020 в 14:56
Как я понял проблема именно в столбце is_deleted. Попробовал $ users = $ users_model-> filterEqual ( 'city', 3354) -> getUsers (); вывело людей с конкретного города. Пробовал вывести людез с 1 детина тоже вивнло. Код рабочий.
Пробовал не удаленных $ users = $ users_model -> ( 'is_deleted ', 'Null ') -> getUsers (); вывести Не получилось. Пробовал так $ users = $ users_model-> filterNotNull ( 'is_deleted') -> getUsers (); то же bool (false). Я уже не знаю что думать?
#12 22 февраля 2020 в 14:14
Кому не лень запустите у себя этот хук. И напишите что получилось?
#13 22 февраля 2020 в 15:46
@andriu3240, попробуйте из phpMyAdmin выполнить запрос (это количество помеченных к удалению пользователей)
  1.  
  2. SELECT COUNT(*) FROM cms_users WHERE is_deleted = '1'
  3.  
Если получится выбрать нужное количество — дайте знать.
#14 22 февраля 2020 в 17:28
Получилось 1806
#15 22 февраля 2020 в 17:33
@andriu3240, пробуем дальше, для выборки используйте этот код
  1.  
  2. $db = cmsDatabase::getInstance();
  3. $q = "SELECT * FROM cms_users WHERE is_deleted = '1'";
  4. $res = $db->query($q);
  5. $removed = [];
  6. while($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) {
  7. //echo $row["id"].$row["email"].$row["password_hash"]."<br>";
  8. $removed[] = $row;
  9. }
  10. // теперь в $removed все помеченные к удалению пользователи
  11.  
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.