function smarty_function_grpvisibility($params, &$smarty)
{
    $user = $params['user'];
    $group = $params['group'];
    $grpcoll = $user->groupVisibility($group);
    $visigroup = $grpcoll->count() == 1 ? $grpcoll->first() : null;
    // if $user is session user, see which visibility option is enabled
    $flagselect = '';
    if (S::user()->isMe($user)) {
        $possib = $user->getAvailVisibilities($group);
        $flagoptions = array();
        foreach ($possib as $gid => $title) {
            $flagoption = '<option value="' . $gid . '"';
            if ($visigroup != null && $visigroup->id() == $gid) {
                $flagoption .= ' selected';
            }
            $flagoption .= '>visible par ' . $title . '</option>';
            $flagoptions[] = $flagoption;
        }
        $flagselect = '<select class="visiselect" name="visibility-' . $user->id() . '-' . $group->id() . '">' . implode($flagoptions) . '</select>';
    }
    // Get color & title
    list($color, $title) = User::visibilitiesColInfo($grpcoll);
    return '<form class="visicontainer" id="visiflag-' . $user->id() . '-' . $group->id() . '">' . '<div class="visiflag ' . $color . ' click" title="' . $title . '"></div>' . $flagselect . '</form>';
}
Example #2
0
 function handler_tol_ajax_visibility($page, $usergroupid)
 {
     $matches = array();
     // Retrieve UID and GID from path
     if (!preg_match('/[a-zA-Z-_.]*([0-9]+)-([0-9]+)/', $usergroupid, $matches)) {
         $page->jsonAssign('reason', 'Invalid ids');
         return PL_JSON;
     }
     $uid = $matches[1];
     $gid = $matches[2];
     // Sanity checks
     if (!S::user()->isMe($uid)) {
         $page->jsonAssign('reason', 'Invalid user');
         return PL_JSON;
     }
     $usergroups = S::user()->castes()->groups();
     $group = $usergroups->get($gid);
     if (!$group) {
         $page->jsonAssign('reason', "Invalid group");
         return PL_JSON;
     }
     $group->select(GroupSelect::visibility());
     // Get new visibility from json data
     $json_data = json_decode(Env::v('json'));
     $visibid = $json_data->visibility;
     if (!$visibid) {
         $page->jsonAssign('reason', "Invalid visibility group id");
         return PL_JSON;
     }
     $visigroup = $usergroups->get($visibid);
     if (!$visigroup) {
         $page->jsonAssign('reason', "Invalid visibility group");
         return PL_JSON;
     }
     // Check avaibility
     if (!S::user()->groupVisibilityIsPossible($group, $visigroup)) {
         $page->jsonAssign('reason', "Not available visibility");
         return PL_JSON;
     }
     // Now make the read call
     $colVisiGroup = S::user()->groupVisibility($group, $visigroup);
     //$page->jsonAssign('usergroupid', json_encode(array($uid, $gid, $visigroup->label(), $group->label())));
     $page->jsonAssign('usergroupid', $uid . '-' . $gid);
     list($color, $title) = User::visibilitiesColInfo($colVisiGroup);
     $page->jsonAssign('color', $color);
     $page->jsonAssign('title', $title);
     $page->jsonAssign('success', true);
     return PL_JSON;
 }