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