im_user_information db user_idWhat it does:
Returns an html string of all the intranet applicable information for one user. This information can be used in the shared community member page, for example, to give intranet users a better understanding of what other people are doing in the site.Defined in: /web/philip/tcl/intranet-defs.tcl
Source code:
set caller_id [ad_get_user_id]
# is this user an employee?
set user_employee_p [database_to_tcl_string $db "select decode ( ad_group_member_p ( $user_id, [im_employee_group_id $db] ), 'f', 0, 1 ) from dual"]
set return_url [im_url_with_query]
# we need a backup copy
set user_id_copy $user_id
# If we're looking at our own entry, we can modify some information
if {$caller_id == $user_id} {
set looking_at_self_p 1
} else {
set looking_at_self_p 0
}
# can the user make administrative changes to this page
set user_admin_p [im_is_user_site_wide_or_intranet_admin $db $caller_id]
set selection [ns_db 0or1row $db " select u.*, uc.*, info.*,
((sysdate - info.first_experience)/365) as years_experience
from users u, users_contact uc, im_employee_info info
where u.user_id = $user_id
and u.user_id = uc.user_id(+)
and u.user_id = info.user_id(+)"]
if [empty_string_p $selection] {
ad_return_error "Error" "User doesn't exist"
ad_script_abort
}
set_variables_after_query
# just in case user_id was set to null in the last query
set user_id $user_id_copy
set selection [ns_db select $db "select ug.group_name, ug.group_id
from user_groups ug, im_offices o
where ad_group_member_p ( $user_id, ug.group_id ) = 't'
and o.group_id=ug.group_id
and ug.parent_group_id=[im_office_group_id $db]
order by lower(ug.group_name)"]
set offices ""
set number_offices 0
while { [ns_db getrow $db $selection] } {
set_variables_after_query
incr number_offices
if { ![empty_string_p $offices] } {
append offices ", "
}
append offices " <a href=[im_url_stub]/offices/view?[export_url_vars group_id]>$group_name</A>"
}
set page_content "<ul>\n"
if [exists_and_not_null job_title] {
append page_content "<LI>Job title: $job_title\n"
}
if { $number_offices > 0 } {
append page_content " <li>[util_decode $number_offices 1 Office Offices]: $offices\n"
if { $looking_at_self_p } {
append page_content "(<a href=[im_url_stub]/users/office-update?[export_url_vars user_id]>manage</a>)\n"
}
} elseif { $user_employee_p } {
if { $looking_at_self_p } {
append page_content " <li>Office: <a href=[im_url_stub]/users/add-to-office?[export_url_vars user_id return_url]>Add yourself to an office</a>\n"
} elseif { $user_admin_p } {
append page_content " <li>Office: <a href=[im_url_stub]/users/add-to-office?[export_url_vars user_id return_url]>Add this user to an office</a>\n"
}
}
if [exists_and_not_null years_experience] {
append page_content "<LI>Job experience: [format %3.1f $years_experience] years\n"
}
if { $user_employee_p } {
# Let's offer a link to the people this person manages, if s/he manages somebody
set number_subordinates [database_to_tcl_string $db "select decode(count(1),0,0,1) from im_employees_active where supervisor_id='$user_id'"]
if { $number_subordinates == 0 } {
append page_content " <li> <a href=[im_url_stub]/employees/org-chart>Org chart</a>: This user does not supervise any employees.\n"
} else {
append page_content " <li> <a href=[im_url_stub]/employees/org-chart>Org chart</a>: <a href=[im_url_stub]/employees/org-chart?starting_user_id=$user_id>View the org chart</a> starting with this employee\n"
}
set number_superiors [database_to_tcl_string $db "select max(level)-1
from im_employee_info
start with user_id = '$user_id'
connect by user_id = PRIOR supervisor_id"]
# Let's also offer a link to see to whom this person reports
if { $number_superiors > 0 } {
append page_content " <li> <a href=[im_url_stub]/employees/org-chart-chain?[export_url_vars user_id]>View chain of command</a> starting with this employee\n"
}
}
if { [exists_and_not_null portrait_upload_date] } {
if { $looking_at_self_p } {
append page_content "<p><li><a href=/pvt/portrait/index?[export_url_vars return_url]>Portrait</A>\n"
} else {
append page_content "<p><li><a href=/shared/portrait?[export_url_vars user_id]>Portrait</A>\n"
}
} elseif { $looking_at_self_p } {
append page_content "<p><li>Show everyone else at [ad_system_name] how great looking you are: <a href=/pvt/portrait/upload?[export_url_vars return_url]>upload a portrait</a>"
}
append page_content "<p>"
if [exists_and_not_null email] {
append page_content "<LI>Email: <A HREF=mailto:$email>$email</A>\n";
}
if [exists_and_not_null url] {
append page_content "<LI>Homepage: <A HREF=[im_maybe_prepend_http $url]>[im_maybe_prepend_http $url]</A>\n";
}
if [exists_and_not_null aim_screen_name] {
append page_content "<LI>AIM name: $aim_screen_name\n";
}
if [exists_and_not_null icq_number] {
append page_content "<LI>ICQ number: $icq_number\n";
}
if [exists_and_not_null work_phone] {
append page_content "<LI>Work phone: $work_phone\n";
}
if [exists_and_not_null home_phone] {
append page_content "<LI>Home phone: $home_phone\n";
}
if [exists_and_not_null cell_phone] {
append page_content "<LI>Cell phone: $cell_phone\n";
}
set address [im_format_address [value_if_exists ha_line1] [value_if_exists ha_line2] [value_if_exists ha_city] [value_if_exists ha_state] [value_if_exists ha_postal_code]]
if { ![empty_string_p $address] } {
append page_content "
<p><table cellpadding=0 border=0 cellspacing=0>
<tr>
<td valign=top><em>Home address: </em></td>
<td>$address</td>
</tr>
</table>
"
}
if [exists_and_not_null skills] {
append page_content "<p><em>Special skills:</em> $skills\n";
}
if [exists_and_not_null educational_history] {
append page_content "<p><em>Degrees/Schools:</em> $educational_history\n";
}
if [exists_and_not_null last_degree_completed] {
append page_content "<p><em>Last Degree Completed:</em> $last_degree_completed\n";
}
if [exists_and_not_null bio] {
append page_content "<p><em>Biography:</em> $bio\n";
}
if [exists_and_not_null note] {
append page_content "<p><em>Other information:</em> $note\n";
}
if {$looking_at_self_p} {
append page_content "<p>(<A HREF=[im_url_stub]/users/info-update>edit</A>)\n"
}
if { $user_employee_p } {
append page_content "
<p><i>Current projects:</i><ul>\n"
set projects_html ""
set selection [ns_db select $db "select user_group_name_from_id(group_id) as project_name, parent_id,
decode(parent_id,null,null,user_group_name_from_id(parent_id)) as parent_project_name,
group_id as project_id
from im_projects p
where p.project_status_id in (select project_status_id
from im_project_status
where project_status='Open'
or project_status='Future')
and ad_group_member_p ( $user_id, p.group_id ) = 't'
connect by prior group_id=parent_id
start with parent_id is null"]
set projects_html ""
while { [ns_db getrow $db $selection] } {
set_variables_after_query
append projects_html " <li> "
if { ![empty_string_p $parent_id] } {
append projects_html "<a href=[im_url_stub]/projects/view?group_id=$parent_id>$parent_project_name</a> : "
}
append projects_html "<a href=[im_url_stub]/projects/view?group_id=$project_id>$project_name</a>\n"
}
if { [empty_string_p $projects_html] } {
set projects_html " <li><i>None</i>\n"
}
append page_content "
$projects_html
</ul>
"
set selection [ns_db select $db "select to_char(start_date, 'Mon DD, YYYY') as start_date, to_char(end_date,'Mon DD, YYYY') as end_date, contact_info, initcap(vacation_type) as vacation_type, vacation_id,
description from user_vacations where user_id = $user_id
and (start_date >= to_date(sysdate,'YYYY-MM-DD') or
(start_date <= to_date(sysdate,'YYYY-MM-DD') and end_date >= to_date(sysdate,'YYYY-MM-DD')))
order by start_date asc"]
set office_absences ""
while {[ns_db getrow $db $selection]} {
set_variables_after_query
if { [empty_string_p $vacation_type] } {
set vacation_type "Vacation"
}
append office_absences " <li><b>$vacation_type</b>: $start_date - $end_date, <br>$description<br>
Contact info: $contact_info"
if { $looking_at_self_p || $user_admin_p } {
append office_absences "<br><a href=[im_url]/absences/edit?[export_url_vars vacation_id]>edit</a>"
}
}
if { ![empty_string_p $office_absences] } {
append page_content "
<p>
<i>Office Absences:</i>
<ul>
$office_absences
</ul>
"
}
if { [ad_parameter TrackHours intranet 0] && [im_user_is_employee_p $db $user_id] } {
append page_content "
<p><a href=[im_url]/hours/index?on_which_table=im_projects&[export_url_vars user_id]>View this person's work log</a>
</ul>
"
}
}
append page_content "</ul>\n"
# Append a list of all the user's groups
set selection [ns_db select $db "select ug.group_id, ug.group_name
from user_groups ug
where ad_group_member_p ( $user_id, ug.group_id ) = 't'
order by lower(group_name)"]
set groups ""
while { [ns_db getrow $db $selection] } {
set_variables_after_query
append groups " <li> $group_name\n"
}
if { ![empty_string_p $groups] } {
append page_content "<p><b>Groups to which this user belongs</b><ul>\n$groups</ul>\n"
}
# don't sign it with the publisher's email address!
return $page_content