--- pathauto_user.inc Thu Oct 12 02:02:10 2006 +++ pathauto_user.inc Tue Oct 31 17:07:03 2006 @@ -10,62 +10,34 @@ $settings = array(); $settings['module'] = 'user'; $settings['groupheader'] = t('User path settings'); - $settings['patterndescr'] = t('Pattern for user account page paths'); - $settings['patterndefault'] = t('user/[user]'); + $settings['patterndescr'] = t('Default pattern (applies to all user tabs with blank patterns below)'); + $settings['patterndefault'] = t('user/[user]/[tabname]'); $settings['placeholders'] = array( t('[user]') => t('The name of the user.'), - t('[uid]') => t('The id number of the user.') + t('[uid]') => t('The id number of the user.'), + t('[tab]') => t('The name/URL of the tab.'), + t('[tabname]') => t('The translated name of the tab.') ); $settings['bulkname'] = t('Bulk update user paths'); - $settings['bulkdescr'] = t('Generate aliases for all existing user account pages which do not already have aliases.'); - return (object) $settings; - default: - break; - } -} + // $settings['bulkdescr'] = t('Generate aliases for all existing user account pages which do not already have aliases.'); + $settings['bulkdescr'] = t('Generate aliases for all existing user account tabs which do not already have aliases.'); -/** - * Implementation of hook_pathauto() for blog aliases - */ -function blog_pathauto($op) { - switch ($op) { - case 'settings': - $settings = array(); - $settings['module'] = 'blog'; - $settings['groupheader'] = t('Blog path settings'); - $settings['patterndescr'] = t('Pattern for blog page paths'); - $settings['patterndefault'] = t('blog/[user]'); - $settings['placeholders'] = array( - t('[user]') => t('The name of the user.'), - t('[uid]') => t('The id number of the user.') - ); - $settings['supportsfeeds'] = 'feed'; - $settings['bulkname'] = t('Bulk update blog paths'); - $settings['bulkdescr'] = t('Generate aliases for all existing blog pages which do not already have aliases.'); - return (object) $settings; - default: - break; - } + // Look for extensions from other modules + // get placeholders + $placeholders = module_invoke_all('pathauto_user', 'placeholders'); + $settings['placeholders'] = array_merge($settings['placeholders'], $placeholders); + + // user account setting! + $settings['patternitems']['user'] = t('Pattern for %name user tab', array('%name' => theme('placeholder', 'view'))); + $settings['patternitems']['edit'] = t('Pattern for %name user tab', array('%name' => theme('placeholder', 'edit'))); + + // Look for extensions from other modules + // get tabs + $usertabs = module_invoke_all('pathauto_user', 'taburls'); + foreach ($usertabs as $usertab => $usertabname) { + $fieldlabel = t('Pattern for %name user tab', array('%name' => theme('placeholder', $usertab))); + $settings['patternitems'][$usertab] = $fieldlabel; } - -/** - * Implementation of hook_pathauto() for user-tracker aliases - */ -function tracker_pathauto($op) { - switch ($op) { - case 'settings': - $settings = array(); - $settings['module'] = 'tracker'; - $settings['groupheader'] = t('User-tracker path settings'); - $settings['patterndescr'] = t('Pattern for user-tracker page paths'); - $settings['patterndefault'] = t('user/[user]/track'); - $settings['placeholders'] = array( - t('[user]') => t('The name of the user.'), - t('[uid]') => t('The id number of the user.') - ); - $settings['supportsfeeds'] = 'feed'; - $settings['bulkname'] = t('Bulk update user-tracker paths'); - $settings['bulkdescr'] = t('Generate aliases for all existing user-tracker pages which do not already have aliases.'); return (object) $settings; default: break; @@ -72,47 +44,74 @@ } } + + /** - * Implementation of hook_user() for users, trackers, and blogs + * Implementation of hook_user() for users */ function pathauto_user($op, &$edit, &$user, $category=FALSE) { switch ($op) { case 'insert': case 'update': - /* - ** Use the username to automatically create an alias - */ $user = (object) $user; - if ($user->name) { + $edit = (object) $edit; + // if edit name is not empty... meaning user form is submitted... + // only update if user->name is different from edit->name... + if (!empty($edit->name) && (($op=='update' && $user->name != $edit->name) || $op='insert')) { + // edit contains NEW values !!! $placeholders = array(); - $placeholders[t('[user]')] = pathauto_cleanstring($user->name); + $placeholders[t('[user]')] = pathauto_cleanstring($edit->name); // use edit !!! $placeholders[t('[uid]')] = $user->uid; + + // Append any additional extensions + $extplaceholders = module_invoke_all('pathauto_user', 'values', $edit, $user); + $placeholders = array_merge($placeholders, $extplaceholders); + + // user view tab + $placeholders[t('[tabname]')] = pathauto_cleanstring(t('view')); + $placeholders[t('[tab]')] = ''; $src = 'user/'.$user->uid; - $alias = pathauto_create_alias('user', $op, $placeholders, $src); - if (module_exist('blog')) { - $src = 'blog/'.$user->uid; - $alias = pathauto_create_alias('blog', $op, $placeholders, $src); - } - if (module_exist('tracker')) { - $src = 'user/'.$user->uid.'/track'; - $alias = pathauto_create_alias('tracker', $op, $placeholders, $src); + $alias = pathauto_create_alias('user', $op, $placeholders, $src, 'user'); + + // user edit tab + $placeholders[t('[tabname]')] = pathauto_cleanstring(t('edit')); + $placeholders[t('[tab]')] = 'edit'; + $src = 'user/'.$user->uid.'/edit'; + $alias = pathauto_create_alias('user', $op, $placeholders, $src, 'edit'); + + // Look for extensions from other modules + // get tabs + $usertabs = module_invoke_all('pathauto_user', 'taburls'); + foreach ($usertabs as $usertab => $usertabname) { + $placeholders[t('[tabname]')] = pathauto_cleanstring(t($usertabname)); + $placeholders[t('[tab]')] = $usertab; + $src = 'user/' . $user->uid . '/' . $usertab; + $alias = pathauto_create_alias('user', $op, $placeholders, $src, $usertab); } + + // Append any additional extensions + module_invoke_all('pathauto_user', $op, $edit, $user, $placeholders); + } break; + case 'delete': - /* - ** If the user is deleted, remove the path aliases - ** - */ $user = (object) $user; path_set_alias('user/'.$user->uid); - if (module_exist('blog')) { - path_set_alias('blog/'.$user->uid); - } - if (module_exist('tracker')) { - path_set_alias('user/'.$user->uid.'/track'); + path_set_alias('user/'.$user->uid.'/edit'); + + // Look for extensions from other modules + // get tabs + $usertabs = module_invoke_all('pathauto_user', 'taburls'); + foreach ($usertabs as $usertab => $usertabname) { + path_set_alias('user/'.$user->uid.'/'.$usertab); } + + // Append any additional extensions + module_invoke_all('pathauto_user', 'delete', $user, $user); + break; + default: break; } @@ -128,68 +127,48 @@ $count = 0; $placeholders = array(); + + // Append any additional extensions + $extplaceholders = module_invoke_all('pathauto_user', 'values', $user, $user); // send user as edit !!! + $placeholders = array_merge($placeholders, $extplaceholders); + while ($user) { $placeholders[t('[user]')] = pathauto_cleanstring($user->name); $placeholders[t('[uid]')] = $user->uid; + + // user view tab + $placeholders[t('[tabname]')] = pathauto_cleanstring(t('view')); + $placeholders[t('[tab]')] = ''; $src = 'user/'.$user->uid; - if ($alias = pathauto_create_alias('user', 'bulkupdate', $placeholders, $src)) { + if ($alias = pathauto_create_alias('user', 'bulkupdate', $placeholders, $src, 'user')) { $count++; } - $user = db_fetch_object($result); - } - drupal_set_message(format_plural($count, - "Bulk update of users completed, one alias generated.", - "Bulk update of users completed, %count aliases generated.")); + // user edit tab + $placeholders[t('[tabname]')] = pathauto_cleanstring(t('edit')); + $placeholders[t('[tab]')] = 'edit'; + $src = 'user/'.$user->uid.'/edit'; + if ($alias = pathauto_create_alias('user', 'bulkupdate', $placeholders, $src, 'edit')) { + $count++; } -// Generate aliases for all blogs without aliases -function blog_pathauto_bulkupdate() { - $query = 'SELECT uid,name,src,dst FROM {users} '. - "LEFT JOIN {url_alias} ON CONCAT('user/', uid) = src ". - 'WHERE uid > 0'; - $result = db_query($query); - $user = db_fetch_object($result); - - $count = 0; - $placeholders = array(); - while ($user) { - $placeholders[t('[user]')] = pathauto_cleanstring($user->name); - $placeholders[t('[uid]')] = $user->uid; - $src = 'blog/'.$user->uid; - if ($alias = pathauto_create_alias('blog', 'bulkupdate', $placeholders, $src)) { + // Look for extensions from other modules + // get tabs + $usertabs = module_invoke_all('pathauto_user', 'taburls'); + foreach ($usertabs as $usertab => $usertabname) { + $placeholders[t('[tabname]')] = pathauto_cleanstring(t($usertabname)); + $placeholders[t('[tab]')] = $usertab; + $src = 'user/' . $user->uid . '/' . $usertab; + if ($alias = pathauto_create_alias('user', 'bulkupdate', $placeholders, $src, $usertab)) { $count++; } - $user = db_fetch_object($result); - } - drupal_set_message(format_plural($count, - "Bulk update of user blogs completed, one alias generated.", - "Bulk update of user blogs completed, %count aliases generated.")); } -// Generate aliases for all tracker pages without aliases -function tracker_pathauto_bulkupdate() { - $query = 'SELECT uid,name,src,dst FROM {users} '. - "LEFT JOIN {url_alias} ON CONCAT('user/', uid) = src ". - 'WHERE uid > 0'; - $result = db_query($query); - $user = db_fetch_object($result); - - $count = 0; - $placeholders = array(); - while ($user) { - $placeholders[t('[user]')] = pathauto_cleanstring($user->name); - $placeholders[t('[uid]')] = $user->uid; - $src = 'user/'.$user->uid.'/track'; - if ($alias = pathauto_create_alias('tracker', 'bulkupdate', $placeholders, $src)) { - $count++; - } $user = db_fetch_object($result); } drupal_set_message(format_plural($count, - "Bulk update of user tracker pages completed, one alias generated.", - "Bulk update of user tracker pages completed, %count aliases generated.")); + "Bulk update of users completed, one alias generated.", + "Bulk update of users completed, %count aliases generated.")); } -