public function reload_if_dirty() {
        global $ACCESSLIB_PRIVATE, $USER;

        // Load dirty contexts list if needed
        if (CLI_SCRIPT) {
            if (!isset($ACCESSLIB_PRIVATE->dirtycontexts)) {
                // we do not load dirty flags in CLI and cron
                $ACCESSLIB_PRIVATE->dirtycontexts = array();
            }
        } else {
            if (!isset($USER->access['time'])) {
                // Nothing has been loaded yet, so we do not need to check dirty flags now.
                return;
            }

            // From skodak: No idea why -2 is there, server cluster time difference maybe...
            $changedsince = $USER->access['time'] - 2;

            if (!isset($ACCESSLIB_PRIVATE->dirtycontexts)) {
                $ACCESSLIB_PRIVATE->dirtycontexts = get_cache_flags('accesslib/dirtycontexts', $changedsince);
            }

            if (!isset($ACCESSLIB_PRIVATE->dirtyusers[$USER->id])) {
                $ACCESSLIB_PRIVATE->dirtyusers[$USER->id] = get_cache_flag('accesslib/dirtyusers', $USER->id, $changedsince);
            }
        }

        $dirty = false;

        if (!empty($ACCESSLIB_PRIVATE->dirtyusers[$USER->id])) {
            $dirty = true;
        } else if (!empty($ACCESSLIB_PRIVATE->dirtycontexts)) {
            $paths = $this->get_parent_context_paths(true);

            foreach ($paths as $path) {
                if (isset($ACCESSLIB_PRIVATE->dirtycontexts[$path])) {
                    $dirty = true;
                    break;
                }
            }
        }

        if ($dirty) {
            // Reload all capabilities of USER and others - preserving loginas, roleswitches, etc.
            // Then cleanup any marks of dirtyness... at least from our short term memory!
            reload_all_capabilities();
        }
    }
public function reload_if_dirty() {
        global $ACCESSLIB_PRIVATE, $USER;

        // Load dirty contexts list if needed
        if (CLI_SCRIPT) {
            if (!isset($ACCESSLIB_PRIVATE->dirtycontexts)) {
                // we do not load dirty flags in CLI and cron
                $ACCESSLIB_PRIVATE->dirtycontexts = array();
            }
        } else {
            if (!isset($USER->access['time'])) {
                // Nothing has been loaded yet, so we do not need to check dirty flags now.
                return;
            }

            // From skodak: No idea why -2 is there, server cluster time difference maybe...
            $changedsince = $USER->access['time'] - 2;

            if (!isset($ACCESSLIB_PRIVATE->dirtycontexts)) {
                $ACCESSLIB_PRIVATE->dirtycontexts = get_cache_flags('accesslib/dirtycontexts', $changedsince);
            }

            if (!isset($ACCESSLIB_PRIVATE->dirtyusers[$USER->id])) {
                $ACCESSLIB_PRIVATE->dirtyusers[$USER->id] = get_cache_flag('accesslib/dirtyusers', $USER->id, $changedsince);
            }
        }

        $dirty = false;

        if (!empty($ACCESSLIB_PRIVATE->dirtyusers[$USER->id])) {
            $dirty = true;
        } else if (!empty($ACCESSLIB_PRIVATE->dirtycontexts)) {
            $paths = $this->get_parent_context_paths(true);

            foreach ($paths as $path) {
                if (isset($ACCESSLIB_PRIVATE->dirtycontexts[$path])) {
                    $dirty = true;
                    break;
                }
            }
        }

        if ($dirty) {
            // Reload all capabilities of USER and others - preserving loginas, roleswitches, etc.
            // Then cleanup any marks of dirtyness... at least from our short term memory!
            reload_all_capabilities();
        }
    }
public function reload_if_dirty ( ) { global $ ACCESSLIB_PRIVATE , $ USER ; // Load dirty contexts list if needed if ( CLI_SCRIPT ) { if ( ! isset ( $ ACCESSLIB_PRIVATE -> dirtycontexts ) ) { // we do not load dirty flags in CLI and cron $ ACCESSLIB_PRIVATE -> dirtycontexts = array ( ) ; } } else { if ( ! isset ( $ USER -> access [ 'time' ] ) ) { // Nothing has been loaded yet, so we do not need to check dirty flags now. return ; } // From skodak: No idea why -2 is there, server cluster time difference maybe... $ changedsince = $ USER -> access [ 'time' ] - 2 ; if ( ! isset ( $ ACCESSLIB_PRIVATE -> dirtycontexts ) ) { $ ACCESSLIB_PRIVATE -> dirtycontexts = get_cache_flags ( 'accesslib/dirtycontexts' , $ changedsince ) ; } if ( ! isset ( $ ACCESSLIB_PRIVATE -> dirtyusers [ $ USER -> id ] ) ) { $ ACCESSLIB_PRIVATE -> dirtyusers [ $ USER -> id ] = get_cache_flag ( 'accesslib/dirtyusers' , $ USER -> id , $ changedsince ) ; } } $ dirty = false ; if ( ! empty ( $ ACCESSLIB_PRIVATE -> dirtyusers [ $ USER -> id ] ) ) { $ dirty = true ; } else if ( ! empty ( $ ACCESSLIB_PRIVATE -> dirtycontexts ) ) { $ paths = $ this -> get_parent_context_paths ( true ) ; foreach ( $ paths as $ path ) { if ( isset ( $ ACCESSLIB_PRIVATE -> dirtycontexts [ $ path ] ) ) { $ dirty = true ; break ; } } } if ( $ dirty ) { // Reload all capabilities of USER and others - preserving loginas, roleswitches, etc. // Then cleanup any marks of dirtyness... at least from our short term memory! reload_all_capabilities ( ) ; } }
Reset all cached permissions and definitions if the necessary.
@return void
Reset all cached permissions and definitions if the necessary .