@@ 465-592 (lines=128) @@ | ||
462 | /** |
|
463 | * Class SmallWorldDoSync |
|
464 | */ |
|
465 | class SmallWorldDoSync |
|
466 | { |
|
467 | /** |
|
468 | * check for orphans (xoops_users <-> smallworld_users) and remove from smallworld |
|
469 | * @return void |
|
470 | */ |
|
471 | public function checkOrphans() |
|
472 | { |
|
473 | global $xoopsDB; |
|
474 | $sql = 'SELECT userid FROM ' . $xoopsDB->prefix('smallworld_user') . ' WHERE userid NOT IN ( SELECT uid FROM ' . $xoopsDB->prefix('users') . ')'; |
|
475 | $result = $xoopsDB->queryF($sql); |
|
476 | if ($result) { |
|
477 | while ($r = $xoopsDB->fetchArray($result)) { |
|
478 | $this->deleteAccount($r['userid']); |
|
479 | } |
|
480 | } |
|
481 | } |
|
482 | ||
483 | /** |
|
484 | * deleteAccount function |
|
485 | * - Delete user account and associate rows across tables |
|
486 | * @param int $userid |
|
487 | * @return string |
|
488 | */ |
|
489 | public function deleteAccount($userid) |
|
490 | { |
|
491 | global $xoopsDB, $xoopsUser; |
|
492 | $user = new XoopsUser($userid); |
|
493 | $username = $user->uname(); |
|
494 | $sql01 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_admin') . " WHERE userid = '" . $userid . "'"; |
|
495 | $sql02 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_comments') . " WHERE uid_fk = '" . $userid . "'"; |
|
496 | $sql03 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_followers') . " WHERE me = '" . $userid . "' OR you = '" . $userid . "'"; |
|
497 | $sql04 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . $userid . "' OR you = '" . $userid . "'"; |
|
498 | $sql05 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_images') . " WHERE userid = '" . $userid . "'"; |
|
499 | $sql06 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_messages') . " WHERE uid_fk = '" . $userid . "'"; |
|
500 | $sql07 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . $userid . "'"; |
|
501 | $sql08 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_vote') . " WHERE user_id = '" . $userid . "'"; |
|
502 | $sql09 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_complaints') . " WHERE owner = '" . $userid . "' OR byuser_id = '" . $userid . "'"; |
|
503 | $sql10 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_settings') . " WHERE userid = '" . $userid . "'"; |
|
504 | ||
505 | $result01 = $xoopsDB->queryF($sql01); |
|
506 | $result02 = $xoopsDB->queryF($sql02); |
|
507 | $result03 = $xoopsDB->queryF($sql03); |
|
508 | $result04 = $xoopsDB->queryF($sql04); |
|
509 | $result05 = $xoopsDB->queryF($sql05); |
|
510 | $result06 = $xoopsDB->queryF($sql06); |
|
511 | $result07 = $xoopsDB->queryF($sql07); |
|
512 | $result08 = $xoopsDB->queryF($sql08); |
|
513 | $result08 = $xoopsDB->queryF($sql09); |
|
514 | $result08 = $xoopsDB->queryF($sql10); |
|
515 | // Remove picture dir |
|
516 | $dirname = XOOPS_ROOT_PATH . '/uploads/albums_smallworld' . '/' . $userid . '/'; |
|
517 | $this->smallworld_remDir($userid, $dirname, $empty = false); |
|
518 | } |
|
519 | ||
520 | /** |
|
521 | * smallworld_remDir function |
|
522 | * - Remove user image dir in uploads. |
|
523 | * @param int $userid |
|
524 | * @param string $directory |
|
525 | * @param bool|int $empty |
|
526 | * @return true |
|
527 | */ |
|
528 | public function smallworld_remDir($userid, $directory, $empty = false) |
|
529 | { |
|
530 | if ('' != $userid) { |
|
531 | if ('/' === substr($directory, -1)) { |
|
532 | $directory = substr($directory, 0, -1); |
|
533 | } |
|
534 | ||
535 | if (!file_exists($directory) || !is_dir($directory)) { |
|
536 | return false; |
|
537 | } elseif (!is_readable($directory)) { |
|
538 | return false; |
|
539 | } else { |
|
540 | $directoryHandle = opendir($directory); |
|
541 | while ($contents = readdir($directoryHandle)) { |
|
542 | if ('.' !== $contents && '..' !== $contents) { |
|
543 | $path = $directory . '/' . $contents; |
|
544 | if (is_dir($path)) { |
|
545 | $this->smallworld_remDir($userid, $path); |
|
546 | } else { |
|
547 | unlink($path); |
|
548 | } |
|
549 | } |
|
550 | } |
|
551 | closedir($directoryHandle); |
|
552 | if (false === $empty) { |
|
553 | if (!rmdir($directory)) { |
|
554 | return false; |
|
555 | } |
|
556 | } |
|
557 | ||
558 | return true; |
|
559 | } |
|
560 | } |
|
561 | } |
|
562 | ||
563 | /** |
|
564 | * SmallworldDeleteDirectory function |
|
565 | * - Delete images from users on delete |
|
566 | * @param int $userid |
|
567 | * @return true |
|
568 | */ |
|
569 | public function SmallworldDeleteDirectory($userid) |
|
570 | { |
|
571 | $dirname = XOOPS_ROOT_PATH . '/uploads/albums_smallworld' . '/' . $userid . '/'; |
|
572 | if (is_dir($dirname)) { |
|
573 | $dir_handle = opendir($dirname); |
|
574 | } |
|
575 | if (!$dir_handle) { |
|
576 | return false; |
|
577 | } |
|
578 | while ($file = readdir($dir_handle)) { |
|
579 | if ('.' != $file && '..' != $file) { |
|
580 | if (!is_dir($dirname . '/' . $file)) { |
|
581 | unlink($dirname . '/' . $file); |
|
582 | } else { |
|
583 | $this->SmallworldDeleteDirectory($dirname . '/' . $file); |
|
584 | } |
|
585 | } |
|
586 | } |
|
587 | closedir($dir_handle); |
|
588 | rmdir($dirname); |
|
589 | ||
590 | return true; |
|
591 | } |
|
592 | } |
|
593 |
@@ 465-592 (lines=128) @@ | ||
462 | /** |
|
463 | * Class SmallWorldDoSync |
|
464 | */ |
|
465 | class SmallWorldDoSync |
|
466 | { |
|
467 | /** |
|
468 | * check for orphans (xoops_users <-> smallworld_users) and remove from smallworld |
|
469 | * @return void |
|
470 | */ |
|
471 | public function checkOrphans() |
|
472 | { |
|
473 | global $xoopsDB; |
|
474 | $sql = 'SELECT userid FROM ' . $xoopsDB->prefix('smallworld_user') . ' WHERE userid NOT IN ( SELECT uid FROM ' . $xoopsDB->prefix('users') . ')'; |
|
475 | $result = $xoopsDB->queryF($sql); |
|
476 | if ($result) { |
|
477 | while ($r = $xoopsDB->fetchArray($result)) { |
|
478 | $this->deleteAccount($r['userid']); |
|
479 | } |
|
480 | } |
|
481 | } |
|
482 | ||
483 | /** |
|
484 | * deleteAccount function |
|
485 | * - Delete user account and associate rows across tables |
|
486 | * @param int $userid |
|
487 | * @return string |
|
488 | */ |
|
489 | public function deleteAccount($userid) |
|
490 | { |
|
491 | global $xoopsDB, $xoopsUser; |
|
492 | $user = new \XoopsUser($userid); |
|
493 | $username = $user->uname(); |
|
494 | $sql01 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_admin') . " WHERE userid = '" . $userid . "'"; |
|
495 | $sql02 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_comments') . " WHERE uid_fk = '" . $userid . "'"; |
|
496 | $sql03 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_followers') . " WHERE me = '" . $userid . "' OR you = '" . $userid . "'"; |
|
497 | $sql04 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . $userid . "' OR you = '" . $userid . "'"; |
|
498 | $sql05 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_images') . " WHERE userid = '" . $userid . "'"; |
|
499 | $sql06 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_messages') . " WHERE uid_fk = '" . $userid . "'"; |
|
500 | $sql07 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . $userid . "'"; |
|
501 | $sql08 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_vote') . " WHERE user_id = '" . $userid . "'"; |
|
502 | $sql09 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_complaints') . " WHERE owner = '" . $userid . "' OR byuser_id = '" . $userid . "'"; |
|
503 | $sql10 = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_settings') . " WHERE userid = '" . $userid . "'"; |
|
504 | ||
505 | $result01 = $xoopsDB->queryF($sql01); |
|
506 | $result02 = $xoopsDB->queryF($sql02); |
|
507 | $result03 = $xoopsDB->queryF($sql03); |
|
508 | $result04 = $xoopsDB->queryF($sql04); |
|
509 | $result05 = $xoopsDB->queryF($sql05); |
|
510 | $result06 = $xoopsDB->queryF($sql06); |
|
511 | $result07 = $xoopsDB->queryF($sql07); |
|
512 | $result08 = $xoopsDB->queryF($sql08); |
|
513 | $result09 = $xoopsDB->queryF($sql09); |
|
514 | $result10 = $xoopsDB->queryF($sql10); |
|
515 | // Remove picture dir |
|
516 | $dirname = XOOPS_ROOT_PATH . '/uploads/albums_smallworld' . '/' . $userid . '/'; |
|
517 | $this->smallworld_remDir($userid, $dirname, $empty = false); |
|
518 | } |
|
519 | ||
520 | /** |
|
521 | * smallworld_remDir function |
|
522 | * - Remove user image dir in uploads. |
|
523 | * @param int $userid |
|
524 | * @param string|bool $directory |
|
525 | * @param bool|int $empty |
|
526 | * @return true |
|
527 | */ |
|
528 | public function smallworld_remDir($userid, $directory, $empty = false) |
|
529 | { |
|
530 | if ('' != $userid) { |
|
531 | if ('/' === substr($directory, -1)) { |
|
532 | $directory = substr($directory, 0, -1); |
|
533 | } |
|
534 | ||
535 | if (!file_exists($directory) || !is_dir($directory)) { |
|
536 | return false; |
|
537 | } elseif (!is_readable($directory)) { |
|
538 | return false; |
|
539 | } else { |
|
540 | $directoryHandle = opendir($directory); |
|
541 | while ($contents = readdir($directoryHandle)) { |
|
542 | if ('.' !== $contents && '..' !== $contents) { |
|
543 | $path = $directory . '/' . $contents; |
|
544 | if (is_dir($path)) { |
|
545 | $this->smallworld_remDir($userid, $path); |
|
546 | } else { |
|
547 | unlink($path); |
|
548 | } |
|
549 | } |
|
550 | } |
|
551 | closedir($directoryHandle); |
|
552 | if (false === $empty) { |
|
553 | if (!rmdir($directory)) { |
|
554 | return false; |
|
555 | } |
|
556 | } |
|
557 | ||
558 | return true; |
|
559 | } |
|
560 | } |
|
561 | } |
|
562 | ||
563 | /** |
|
564 | * SmallworldDeleteDirectory function |
|
565 | * - Delete images from users on delete |
|
566 | * @param int $userid |
|
567 | * @return true |
|
568 | */ |
|
569 | public function SmallworldDeleteDirectory($userid) |
|
570 | { |
|
571 | $dirname = XOOPS_ROOT_PATH . '/uploads/albums_smallworld' . '/' . $userid . '/'; |
|
572 | if (is_dir($dirname)) { |
|
573 | $dir_handle = opendir($dirname); |
|
574 | } |
|
575 | if (!$dir_handle) { |
|
576 | return false; |
|
577 | } |
|
578 | while ($file = readdir($dir_handle)) { |
|
579 | if ('.' != $file && '..' != $file) { |
|
580 | if (!is_dir($dirname . '/' . $file)) { |
|
581 | unlink($dirname . '/' . $file); |
|
582 | } else { |
|
583 | $this->SmallworldDeleteDirectory($dirname . '/' . $file); |
|
584 | } |
|
585 | } |
|
586 | } |
|
587 | closedir($dir_handle); |
|
588 | rmdir($dirname); |
|
589 | ||
590 | return true; |
|
591 | } |
|
592 | } |
|
593 |