@@ -876,6 +876,17 @@ function load_from_Request( $groups = array() )
876876 // Tag posts per page:
877877 $ this ->set_setting ( 'tag_posts_per_page ' , param ( 'tag_posts_per_page ' , 'integer ' , NULL ), true );
878878
879+ if ( param ( 'user_prefix ' , 'string ' , NULL ) !== NULL )
880+ { // User profile page prefix:
881+ param_check_regexp ( 'user_prefix ' , '#^[a-z0-9\-_]*$#i ' , sprintf ( T_ ('User profile page prefix can contain only letters, digits, %s or %s. ' ), '<code>-</code> ' , '<code>_</code> ' ) );
882+ $ this ->set_setting ( 'user_prefix ' , get_param ( 'user_prefix ' ) );
883+ }
884+
885+ if ( param ( 'user_links ' , 'string ' , NULL ) !== NULL )
886+ { // User profile URLs:
887+ $ this ->set_setting ( 'user_links ' , get_param ( 'user_links ' ) );
888+ }
889+
879890 if ( param ( 'single_links ' , 'string ' , NULL ) !== NULL )
880891 { // Single post link type:
881892 $ this ->set_setting ( 'single_links ' , get_param ( 'single_links ' ) );
@@ -1430,6 +1441,7 @@ function load_from_Request( $groups = array() )
14301441 $ this ->set_setting ( 'tags_structured_data ' , param ( 'tags_structured_data ' , 'integer ' , 0 ) );
14311442 $ this ->set_setting ( 'download_noindex ' , param ( 'download_noindex ' , 'integer ' , 0 ) );
14321443 $ this ->set_setting ( 'download_nofollowto ' , param ( 'download_nofollowto ' , 'integer ' , 0 ) );
1444+ $ this ->set_setting ( 'canonical_user_urls ' , param ( 'canonical_user_urls ' , 'integer ' , 0 ) );
14331445 }
14341446
14351447 if ( in_array ( 'credits ' , $ groups ) )
@@ -3420,11 +3432,52 @@ function get( $parname, $params = array() )
34203432 }
34213433
34223434 if ( $ this_Blog ->get_setting ( 'front_disp ' ) == $ disp_param )
3423- { // Get home page of this blog because front page displays current disp
3435+ { // Get home page of this blog because front page displays current disp:
34243436 $ url = $ this_Blog ->gen_blogurl ( 'default ' );
34253437 }
3438+ elseif ( $ disp_param == 'user ' && ( isset ( $ params ['user_login ' ] ) || isset ( $ params ['user_ID ' ] ) ) )
3439+ { // Use alias if user login or ID is provided:
3440+ $ UserCache = & get_UserCache ();
3441+ if ( ! isset ( $ params ['user_ID ' ] ) &&
3442+ ( $ this_Blog ->get_setting ( 'user_links ' ) == 'params ' || $ this_Blog ->get_setting ( 'user_links ' ) == 'prefix_id ' ) )
3443+ { // We need get user ID by login:
3444+ if ( $ param_User = & $ UserCache ->get_by_login ( $ params ['user_login ' ] ) )
3445+ { // Set user ID if it is detected by login:
3446+ $ params ['user_ID ' ] = $ param_User ->ID ;
3447+ }
3448+ else
3449+ { // Wrong request:
3450+ debug_die ( 'Undefined param "user_ID" for Blog->get( "userurl" ) ' );
3451+ }
3452+ }
3453+ if ( ! isset ( $ params ['user_login ' ] ) &&
3454+ $ this_Blog ->get_setting ( 'user_links ' ) == 'prefix_login ' )
3455+ { // We need get user login by ID:
3456+ if ( $ param_User = & $ UserCache ->get_by_ID ( $ params ['user_ID ' ], false , false ) )
3457+ { // Use login if user is detected in DB:
3458+ $ params ['user_login ' ] = $ param_User ->get ( 'login ' );
3459+ }
3460+ else
3461+ { // Wrong request:
3462+ debug_die ( 'Undefined param "user_login" for Blog->get( "userurl" ) ' );
3463+ }
3464+ }
3465+
3466+ if ( $ this_Blog ->get_setting ( 'user_links ' ) == 'params ' || $ this_Blog ->get_setting ( 'user_prefix ' ) == '' )
3467+ { // Use params E-g: ?disp=user&user_ID=4
3468+ $ url = url_add_param ( $ this_Blog ->gen_blogurl (), 'disp=user ' .$ params ['glue ' ].'user_ID= ' .$ params ['user_ID ' ], $ params ['glue ' ] );
3469+ }
3470+ elseif ( $ this_Blog ->get_setting ( 'user_links ' ) == 'prefix_id ' )
3471+ { // Use prefix with user ID:
3472+ $ url = url_add_tail ( $ this_Blog ->gen_blogurl (), '/ ' .$ this_Blog ->get_setting ( 'user_prefix ' ).': ' .$ params ['user_ID ' ] );
3473+ }
3474+ else // 'prefix_login'
3475+ { // Use prefix with user login:
3476+ $ url = url_add_tail ( $ this_Blog ->gen_blogurl (), '/ ' .$ this_Blog ->get_setting ( 'user_prefix ' ).': ' .$ params ['user_login ' ] );
3477+ }
3478+ }
34263479 else
3427- { // Add disp param to blog's url when current disp is not a front page
3480+ { // Add disp param to blog's url when current disp is not a front page:
34283481 $ url = url_add_param ( $ this_Blog ->gen_blogurl (), 'disp= ' .$ disp_param , $ params ['glue ' ] );
34293482 }
34303483
0 commit comments