function user_category_load

Return a user object after checking if any profile category in the path exists.

File

modules/user/user.module, line 1997

Code

function user_category_load($uid, &$map, $index) {
    static $user_categories, $accounts;
    // Cache $account - this load function will get called for each profile tab.
    if (!isset($accounts[$uid])) {
        $accounts[$uid] = user_load($uid);
    }
    $valid = TRUE;
    if ($account = $accounts[$uid]) {
        // Since the path is like user/%/edit/category_name, the category name will
        // be at a position 2 beyond the index corresponding to the % wildcard.
        $category_index = $index + 2;
        // Valid categories may contain slashes, and hence need to be imploded.
        $category_path = implode('/', array_slice($map, $category_index));
        if ($category_path) {
            // Check that the requested category exists.
            $valid = FALSE;
            if (!isset($user_categories)) {
                $user_categories = _user_categories();
            }
            foreach ($user_categories as $category) {
                if ($category['name'] == $category_path) {
                    $valid = TRUE;
                    // Truncate the map array in case the category name had slashes.
                    $map = array_slice($map, 0, $category_index);
                    // Assign the imploded category name to the last map element.
                    $map[$category_index] = $category_path;
                    break;
                }
            }
        }
    }
    return $valid ? $account : FALSE;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.