From: <sy...@us...> - 2009-09-01 14:00:41
|
Revision: 21207 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=21207&view=rev Author: sylvieg Date: 2009-09-01 14:00:29 +0000 (Tue, 01 Sep 2009) Log Message: ----------- [MOD]tracker: new field in_group that displays if a user is in a group or not or the date since he has been assigned Modified Paths: -------------- trunk/lib/trackers/trackerlib.php trunk/lib/userslib.php trunk/lib/wiki-plugins/wikiplugin_tracker.php trunk/templates/tiki-view_tracker.tpl trunk/templates/tiki-view_tracker_item.tpl trunk/templates/tracker_item_field_input.tpl trunk/templates/tracker_item_field_value.tpl trunk/tiki-view_tracker_item.php Modified: trunk/lib/trackers/trackerlib.php =================================================================== --- trunk/lib/trackers/trackerlib.php 2009-09-01 08:39:16 UTC (rev 21206) +++ trunk/lib/trackers/trackerlib.php 2009-09-01 14:00:29 UTC (rev 21207) @@ -958,6 +958,12 @@ $fopt['value'] = $userlib->get_user_preference($itemUser, $fopt['options_array'][0]); } break; + case 'N': + if (empty($itemUser)) { + $itemUser = $this->get_item_creator($trackerId, $itemId); + } + $fopt['value'] = $this->in_group_value($fopt, $itemUser); + break; case 'A': if (!empty($fopt['options_array'][0]) && !empty($fopt['value'])) { $fopt['info'] = $this->get_item_attachment($fopt['value']); @@ -1005,6 +1011,29 @@ } return($fields); } + function in_group_value($field, $itemUser) { + if (empty($itemUser)) { + return ''; + } + if (!isset($this->tracker_infocache['users_group'][$field['options_array'][0]])) { + global $userlib; + $this->tracker_infocache['users_group'][$field['options_array'][0]] = $userlib->get_users_created_group($field['options_array'][0]); + } + if (isset($this->tracker_infocache['users_group'][$field['options_array'][0]][$itemUser])) { + if ($field['options_array'][1] == 'date') { + $value = $this->tracker_infocache['users_group'][$field['options_array'][0]][$itemUser]; + } else { + $value = 'Yes'; + } + } else { + if ($field['options_array'][1] == 'date') { + $value = ''; + } else { + $value = 'No'; + } + } + return $value; + } function replace_item($trackerId, $itemId, $ins_fields, $status = '', $ins_categs = array(), $bulk_import = false, $tracker_info='') { global $user, $smarty, $notificationlib, $prefs, $cachelib, $categlib, $tiki_p_admin_trackers, $userlib, $tikilib; @@ -2874,6 +2903,18 @@ note that this option will cost an extra query to the database for each attachment and can severely impact performance with several attachments. <dd> </dl>')); + $type['N'] = array( + 'label'=>tra('in group'), + 'opt'=>true, + 'help'=>tra('<dl> + <dt>Function: Allows to display if a item user is in a group and when he was assigned to the group (needs a user selector field) + <dt>Usage: <strong>groupName,date</strong> + <dt>Example: Members,date + <dt>Description: + <dd><strong>GroupName</strong> Group to test. <strong>date</strong> displays the date the user was assigned in the group (if known), otherwise will display yes/no. + <dd> + </dl>')); + return $type; } Modified: trunk/lib/userslib.php =================================================================== --- trunk/lib/userslib.php 2009-09-01 08:39:16 UTC (rev 21206) +++ trunk/lib/userslib.php 2009-09-01 14:00:29 UTC (rev 21207) @@ -3118,6 +3118,21 @@ $this->query($query, array($res['groupName'], $res['userId'])); } } + function get_users_created_group($group, $user=null) { + if (!empty($user)) { + $query = 'SELECT `users_usergroups`.`created` FROM `users_usergroups` LEFT JOIN `users_users` on (`users_users`.`userId`=`users_usergroups`.`userId`) WHERE `groupName`=? AND `user`=?'; + $bindvars = array($group, $user); + } else { + $query = 'SELECT `login`, `users_usergroups`.`created` FROM `users_usergroups` LEFT JOIN `users_users` on (`users_users`.`userId`=`users_usergroups`.`userId`) WHERE `groupName`=?'; + $bindvars = array($group); + } + $result = $this->query($query, $bindvars); + $ret = array(); + while($res = $result->fetchRow()) { + $ret[$res['login']]= $res['created']; + } + return $ret; + } } Modified: trunk/lib/wiki-plugins/wikiplugin_tracker.php =================================================================== --- trunk/lib/wiki-plugins/wikiplugin_tracker.php 2009-09-01 08:39:16 UTC (rev 21206) +++ trunk/lib/wiki-plugins/wikiplugin_tracker.php 2009-09-01 14:00:29 UTC (rev 21207) @@ -331,6 +331,11 @@ } else { $_REQUEST['track'][$fl['fieldId']] = $tikilib->now; } + } elseif ($f['type'] == 'N' && !empty($itemId)) { + if (empty($itemUser)) { + $itemUser = $this->get_item_creator($trackerId, $itemId); + } + $flds['data'][$i]['value'] = $trklib->in_group_value($flds['data'][$i], $itemUser); } if (isset($_REQUEST['ins_cat_'.$fl['fieldId']])) { // to remember if error $_REQUEST['track'][$fl['fieldId']] = $_REQUEST['ins_cat_'.$fl['fieldId']]; Modified: trunk/templates/tiki-view_tracker.tpl =================================================================== --- trunk/templates/tiki-view_tracker.tpl 2009-09-01 08:39:16 UTC (rev 21206) +++ trunk/templates/tiki-view_tracker.tpl 2009-09-01 14:00:29 UTC (rev 21207) @@ -272,7 +272,7 @@ {assign var=fid value=$field_value.fieldId} {* -------------------- header and others -------------------- *} {if $field_value.isHidden eq 'n' or $field_value.isHidden eq 'c' or $tiki_p_admin_trackers eq 'y'} -{if $field_value.type ne 'x' and $field_value.type ne 'l' and $field_value.type ne 'q' and (($field_value.type ne 'u' and $field_value.type ne 'g' and $field_value.type ne 'I') or !$field_value.options_array[0] or $tiki_p_admin_trackers eq 'y') and (empty($field_value.visibleBy) or in_array($default_group, $field_value.visibleBy) or $tiki_p_admin_trackers eq 'y')and (empty($field_value.editableBy) or in_array($default_group, $field_value.editableBy) or $tiki_p_admin_trackers eq 'y') and ($field_value.type ne 'A' or $tiki_p_attach_trackers eq 'y')} +{if $field_value.type ne 'x' and $field_value.type ne 'l' and $field_value.type ne 'q' and (($field_value.type ne 'u' and $field_value.type ne 'g' and $field_value.type ne 'I') or !$field_value.options_array[0] or $tiki_p_admin_trackers eq 'y') and (empty($field_value.visibleBy) or in_array($default_group, $field_value.visibleBy) or $tiki_p_admin_trackers eq 'y')and (empty($field_value.editableBy) or in_array($default_group, $field_value.editableBy) or $tiki_p_admin_trackers eq 'y') and ($field_value.type ne 'A' or $tiki_p_attach_trackers eq 'y') and $field_value.type ne 'N'} {if $field_value.type eq 'h'} </table> <h2>{$field_value.name}</h2> Modified: trunk/templates/tiki-view_tracker_item.tpl =================================================================== --- trunk/templates/tiki-view_tracker_item.tpl 2009-09-01 08:39:16 UTC (rev 21206) +++ trunk/templates/tiki-view_tracker_item.tpl 2009-09-01 14:00:29 UTC (rev 21207) @@ -263,6 +263,8 @@ {if !empty($cur_field.editableBy) and !in_array($default_group, $cur_field.editableBy) and $tiki_p_admin_trackers ne 'y'} {include file='tracker_item_field_value.tpl' field_value=$cur_field} +{elseif $cur_field.type eq 'N'} + {include file='tracker_item_field_value.tpl' field_value=$cur_field} {elseif $cur_field.type eq 'p'} {if $user ne $itemUser} {include file='tracker_item_field_value.tpl' field_value=$cur_field} Modified: trunk/templates/tracker_item_field_input.tpl =================================================================== --- trunk/templates/tracker_item_field_input.tpl 2009-09-01 08:39:16 UTC (rev 21206) +++ trunk/templates/tracker_item_field_input.tpl 2009-09-01 14:00:29 UTC (rev 21207) @@ -399,6 +399,9 @@ <input type="hidden" name="{$field_value.ins_id}" value="{$field_field.value|escape}" /> {include file='tracker_item_field_value.tpl'} +{* -------------------- in group -------------------- *} +{elseif $field_value.type eq 'N'} + {include file='tracker_item_field_value.tpl'} {/if} {if $field_value.isMandatory eq 'y' and $showmandatory eq 'y'} Modified: trunk/templates/tracker_item_field_value.tpl =================================================================== --- trunk/templates/tracker_item_field_value.tpl 2009-09-01 08:39:16 UTC (rev 21206) +++ trunk/templates/tracker_item_field_value.tpl 2009-09-01 14:00:29 UTC (rev 21207) @@ -379,6 +379,16 @@ {tr}Google Maps is not enabled.{/tr} {/if} +{* -------------------- in group -------------------- *} +{elseif $field_value.type eq 'N'} + {if isset($field_value.options_array[1]) and $field_value.options_array[1] eq 'date'} + {if !empty($field_value.value)} + {$field_value.value|tiki_short_date} + {/if} + {else} + {tr}{$field_value.value}{/tr} + {/if} + {* -------------------- other field -------------------- *} {* w *} {else} Modified: trunk/tiki-view_tracker_item.php =================================================================== --- trunk/tiki-view_tracker_item.php 2009-09-01 08:39:16 UTC (rev 21206) +++ trunk/tiki-view_tracker_item.php 2009-09-01 14:00:29 UTC (rev 21207) @@ -857,8 +857,13 @@ $ins_fields["data"][$i]["pvalue"] = $tikilib->parse_data(htmlspecialchars($info["$fid"])); } } elseif ($fields['data'][$i]['type'] == 'p' && !empty($itemUser)) { - if ($fields['data'][$i]['options_array'][0] == 'email') $ins_fields['data'][$i]['value'] = $userlib->get_user_email($itemUser); - else $ins_fields['data'][$i]['value'] = $userlib->get_user_preference($itemUser, $fields['data'][$i]['options_array'][0]); + if ($fields['data'][$i]['options_array'][0] == 'email') { + $ins_fields['data'][$i]['value'] = $userlib->get_user_email($itemUser); + } else { + $ins_fields['data'][$i]['value'] = $userlib->get_user_preference($itemUser, $fields['data'][$i]['options_array'][0]); + } + } elseif ($fields['data'][$i]['type'] == 'N' && !empty($itemUser)) { + $ins_fields['data'][$i]['value'] = $trklib->in_group_value($fields['data'][$i], $itemUser); } else { $ins_fields["data"][$i]["value"] = $info["$fid"]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |