Inactive User Cleanup

Administration tools ::: tool_inactive_user_cleanup
Maintained by DualCube Team
The inactive user cleanup is a useful solution that deletes an inactive user's account automatically. Additionally, the solution sends users emails informing them before deleting their account. Thus, if a learner logs in before the account is deleted, he or she will not be removed from the system.
Latest release:
313 sites
336 downloads
62 fans
Current versions available: 5

Automate the process of removing inactive users from your site using Inactive User Cleanup. Each inactive user will receive a customized email as per predefined inactivity dates before account deletion.

Note: The cleanup process is run by the Moodle cron, so while Moodle removes the clutter, this solution cleans up the inactive learners for your courses.  

  • Add Interval Time - You can set an interval time for your students before thay get automatically removed during the cleanup. Learners will receive an email requesting the deletion of their accounts if the interval time exceeds the limit you've set. 

  • Check and Assess Timestamp - An interesting feature of this solution is that is compares the last activity time with the present time. The deletion process begins if the interval between the two timestamps is longer than what has been set. 

  • Send Notification Email - Another unqiue feature of this solution is that that whenever before deleting an inactive accounts students get notifies about the deletion process. This gives them the opportunity to reactivate their account. 

  • Hassle-Free Cleanup - This is such a simple and easy solution, you can avoid having to manually go through and delete each account.

Try out this efforless way of cleaning up your inactive users. 



Screenshots

Screenshot #0

Contributors

DualCube Team (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Ukázat komentáře
  • SOL Hosting
    pátek, 24. května 2024, 14.25
    Further on the issue reported by Dr. Nellie Deutsch :
    Exception occurred while calling tool_inactive_user_cleanup\privacy\provider::get_contexts_for_userid.

    I would like to share more details about the bug. The issue is present in the following file :
    admin/tool/inactive_user_cleanup/classes/privacy/provider.php Line no 144
    in the function "get_contexts_for_userid"

    $sql = "SELECT c.id
    FROM {context} c
    INNER JOIN {user} u ON u.id = :userid
    LEFT JOIN {tool_inactive_user_cleanup} iu ON iu.userid = u.id
    WHERE c.contextlevel = :contextlevel
    AND c.instanceid = u.id
    AND u.id = :userid";

    You have used 3 named parameters in the SQL :userid, :contextlevel and :userid
    while you are passing only 2 parameters in $params :

    $params = [
    'contextlevel' => CONTEXT_MODULE,
    'discussionuserid' => $userid,
    ];

    Due to this in the function "fix_sql_params" defined in :
    lib/dml/moodle_database.php Line no 954

    It triggers and exception that the query requires 3 parameters but there are only 2 parameters passed as we can see in $params.

    If you pass 3 named parameters in query Moodle expects exact 4 parameters in $params

    This is the 1st error even if this is passed this query will get caught at the following lines in
    lib/dml/moodle_database.php
    1. Line no 980 throw new dml_exception('missingkeyinsql', $key, '');
    Since :userid is used but there is no value for userid in $params
    2. Line no 990 throw new dml_exception('duplicateparaminsql');
    Moodle does not expect two same named parameters (i.e. :userid and :userid) to be used in the sql query

    It looks like the issue started around 3 weeks back when this commit was released :
    https://github.com/dualcube/moodle-tool_inactive_user_cleanup/commit/603b6697269608cb8e6c5e94cb81de9247315023

    A fix for this would look like this :

    $sql = "SELECT c.id
    FROM {context} c
    INNER JOIN {user} u ON u.id = :juserid
    LEFT JOIN {tool_inactive_user_cleanup} iu ON iu.userid = u.id
    WHERE c.contextlevel = :contextlevel
    AND c.instanceid = u.id
    AND u.id = :wuserid";
    $params = [
    'contextlevel' => CONTEXT_MODULE,
    'juserid' => $userid,
    'wuserid' => $userid,
    ];

    Please check from your end and try to replicate this issue.
  • DualCube Team
    sobota, 25. května 2024, 20.50
    Hi, we have added the fix on our end. Kindly install this plugin from our GitHub repository - https://github.com/dualcube/moodle-tool_inactive_user_cleanup/archive/refs/heads/master.zip

    Please let us know if this fixed the issue.
    Regards,
    Team DualCube
  • Gabriel Richard
    čtvrtek, 4. července 2024, 00.25
    After trying to install the plugin, the Moodle site performed the checks and everything was OK.

    Only at the end of the listing did the max-input-vars message appear: "if this test fails, it will indicate a problem. It is recommended that the PHP configuration of max-input-vars be at least 5000."

    After clicking OK, the site did not proceed with the installation and got stuck in a loop at this requirement checking phase. I managed to cancel the plugin installation, but now the site remains in the same update loop. However, there is nothing about the plugin and the max-input-vars.
    My moodle ios Moodle 4.0.6+ (Build: 20230224)
    Nome Informação Relatório Plugin Status
    moodle
    a versão 3.6 é necessária e você está usando a versão 4.0.6+ (Build: 20230224)
    OK
    unicode
    deve ser instalado e habilitado
    OK
    database mariadb (5.5.5-10.2.38-MariaDB-log)
    a versão 10.2.29 é necessária e você está usando a versão 10.2.38
    OK
    php
    a versão 7.3.0 é necessária e você está usando a versão 7.4.26
    OK
    pcreunicode
    recomendado como instalado/habilitado
    OK
    php_extension iconv
    deve ser instalado e habilitado
    OK
    php_extension mbstring
    deve ser instalado e habilitado
    OK
    php_extension curl
    deve ser instalado e habilitado
    OK
    php_extension openssl
    deve ser instalado e habilitado
    OK
    php_extension tokenizer
    recomendado como instalado/habilitado
    OK
    php_extension xmlrpc
    recomendado como instalado/habilitado
    OK
    php_extension soap
    recomendado como instalado/habilitado
    OK
    php_extension ctype
    deve ser instalado e habilitado
    OK
    php_extension zip
    deve ser instalado e habilitado
    OK
    php_extension zlib
    deve ser instalado e habilitado
    OK
    php_extension gd
    deve ser instalado e habilitado
    OK
    php_extension simplexml
    deve ser instalado e habilitado
    OK
    php_extension spl
    deve ser instalado e habilitado
    OK
    php_extension pcre
    deve ser instalado e habilitado
    OK
    php_extension dom
    deve ser instalado e habilitado
    OK
    php_extension xml
    deve ser instalado e habilitado
    OK
    php_extension xmlreader
    deve ser instalado e habilitado
    OK
    php_extension intl
    deve ser instalado e habilitado
    OK
    php_extension json
    deve ser instalado e habilitado
    OK
    php_extension hash
    deve ser instalado e habilitado
    OK
    php_extension fileinfo
    deve ser instalado e habilitado
    OK
    php_extension sodium
    recomendado como instalado/habilitado
    OK
    php_extension exif
    recomendado como instalado/habilitado
    OK
    php_setting memory_limit
    configuração recomendada detectada
    OK
    php_setting file_uploads
    configuração recomendada detectada
    OK
    php_setting opcache.enable
    configuração recomendada detectada
    OK
  • DualCube Team
    pátek, 5. července 2024, 18.37
    Hi @Gabriel Richard, it seems like your php.ini is not configured properly. Please set the max_var value above 5000 and check again.

    Do keep us posted.
  • Mark Baldwin
    úterý, 17. září 2024, 17.25
    Hi - I have the same issue as above. Using Moodle 4.3.3 and the latest version of the plugin (2.7.4) I see the following error message:

    Exception occurred while calling tool_inactive_user_cleanup\privacy\provider::get_contexts_for_userid.
    This means that plugin tool_inactive_user_cleanup did not complete the processing of data. The following exception information may be passed on to the plugin developer:

    ERROR: Incorrect number of query parameters. Expected 3, got 2.

    #0 /home/xxx/public_html/lib/dml/mysqli_native_moodle_database.php(1331): moodle_database->fix_sql_params('\n ...', Array)
    #1 /home/xxx/public_html/privacy/classes/local/request/contextlist.php(71): mysqli_native_moodle_database->get_recordset_sql('\n ...', Array)
    #2 /home/xxx/public_html/admin/tool/inactive_user_cleanup/classes/privacy/provider.php(148): core_privacy\local\request\contextlist->add_from_sql('SELECT c.id\n ...', Array)
    #3 /home/xxx/public_html/lib/moodlelib.php(8292): tool_inactive_user_cleanup\privacy\provider::get_contexts_for_userid(41872)
    #4 /home/xxx/public_html/privacy/classes/manager.php(578): component_class_callback('tool_inactive_u...', 'get_contexts_fo...', Array)
    #5 /home/xxx/public_html/privacy/classes/manager.php(611): core_privacy\manager::component_class_callback('tool_inactive_u...', 'core_privacy\\lo...', 'get_contexts_fo...', Array)
    #6 /home/xxx/public_html/privacy/classes/manager.php(238): core_privacy\manager->handled_component_class_callback('tool_inactive_u...', 'core_privacy\\lo...', 'get_contexts_fo...', Array)
    #7 /home/xxx/public_html/admin/tool/dataprivacy/classes/task/process_data_request_task.php(93): core_privacy\manager->get_contexts_for_userid(41872)
    #8 /home/xxx/public_html/lib/classes/cron.php(508): tool_dataprivacy\task\process_data_request_task->execute()
    #9 /home/xxx/public_html/lib/classes/cron.php(302): core\cron::run_inner_adhoc_task(Object(tool_dataprivacy\task\process_data_request_task))
    #10 /home/xxx/public_html/lib/classes/cron.php(128): core\cron::run_adhoc_tasks(1726563604, 0, true, 1726563602)
    #11 /home/xxx/public_html/admin/cron.php(80): core\cron::run_main_process(0)
    #12 {main}


    Thanks in advance.
    Mark
  • DualCube Team
    středa, 18. září 2024, 12.34
    Hi Mark, sorry to hear that you have faced this issue.

    Our team is looking into this. For now you can track the issue from here - https://github.com/dualcube/moodle-tool_inactive_user_cleanup/issues/29
  • DualCube Team
    středa, 18. září 2024, 20.22
    Hi Mark, please download and use the latest version of the Inactive Cleanup plugin from GitHub at this link: https://github.com/dualcube/moodle-tool_inactive_user_cleanup, and check again whether the issue has been fixed.
  • Becka M
    pátek, 20. září 2024, 04.47
    This would save me so much time with maintenance... BUT I have a question. Is there an option, or can one be created, where one can list users to *never* be removed from the system?

    For example, part of our school policy is if you get caught plagiarizing, or you accumulate and max out the set number of demerits/marks (scoring system for rule-breaking), or are excessively hostile to school staff, you're suspended for a certain length of time based on the severity of the infractions. (And would be outside the timeframe I use to remove inactive users.)

    And, we have a few accounts that only get used periodically (often outside of the timeframe I use for manually removing idle users), plus a couple I use as "sample" students for testing features and making tweaks.

    I DO NOT want those to ever get deleted. So this would be great, if there were a way to say "exclude these users from the deletion process." Is that doable? Or in the works?

    Like I said, this would save me so much work in the user maintenance "department", and I wouldn't have to mess with csv files with user data (and "shredding" it later) like I'm currently doing.
  • DualCube Team
    pátek, 20. září 2024, 19.55
    Hi Becka, thank you for your query!

    To ensure you receive the best assistance, I kindly recommend reaching out to our development team directly via this link:https://dualcube.com/contact-us/. They will be able to provide you with more detailed support.
  • Mark Baldwin
    středa, 16. října 2024, 21.14
    Hi - thank you for the response. I downloaded the latest version via GitHub (2.7.4) but this was the same as the previous download with the issue still occuring.
  • DualCube Team
    čtvrtek, 17. října 2024, 14.00
    Hi Mark,

    Please ensure you're using the latest version from GitHub, as there doesn't seem to be an error at that line. I recommend uninstalling your current version, installing the updated one from GitHub, and checking again.

    Let us know how it goes.
  • seaghan moriarty
    středa, 29. ledna 2025, 03.04
    My Moodle is 4.1.14 with PHP 8.1.31 and max_input_vars = 5000
    2.7.2 2.7.4 and 2.7.5 are all apparently compatible with my Moodle 4.1
    However, when I try 2.7.5 (and the Githib master version), I see:

    Plugin Version: 2025010900
    Required Moodle version: 2022112815
    Installation Aborted due to validation failure

    My Question: Should I try 2.7.4 or 2.7.2 - which will work for me?
    Thank you for any guidance you can give.
  • DualCube Team
    středa, 29. ledna 2025, 14.20
    Hello Seaghan, you are using Moodle 4.1.14

    In order to use the latest version of Inactive User , you need to use Moodle version 4.1.15 . So kindly update Moodle and then update the plugin.
    Please do keep us posted.
  • seaghan moriarty
    středa, 29. ledna 2025, 23.46
    OK excellent! I will update to 4.1.15 and use the 2.7.5 version - thank you!
  • Jean-Gabriel DEPINOY
    čtvrtek, 3. dubna 2025, 14.36
    Hi,
    My version of Moodle is 4.5.3 with PHP 8.1
    Each day, I can see in my log file the same message "PHP Warning: Attempt to read property "date" on bool in /public_html/moodle/admin/tool/inactive_user_cleanup/classes/task/tool_inactive_user_cleanup_task.php on line 79"" more than 100 times.
    Thanks in advance
1 2 3 4 5 6
Please login to post comments