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>'; }
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; }