Example #1
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;
 }