示例#1
0
function calculatePropagation($permission_level, $uid, $shared_with_user, $user_id, $db)
{
    ereg('^([0-2])([0-2])([0-2])$', $permission_level, $tmpPLd);
    if ($tmpPLd[3] == 2) {
        $propagates = 1;
        $propagation_level = $permission_level;
    } elseif ($tmpPLd[3] == 1) {
        $propagates = createdBy($uid, $db) == $shared_with_user ? 1 : 0;
        $propagation_level = ($tmpPLd[1] == 0 ? '0' : $tmpPLd[1] / $tmpPLd[1]) . $tmpPLd[2] / $tmpPLd[2] . '1';
    } elseif ($tmpPLd[3] == 0) {
        $propagates = 0;
        $propagation_level = '000';
    }
    $return = compact('propagates', 'propagation_level');
    return $return;
}
示例#2
0
function filterDataForQuery($pack)
{
    extract($pack);
    $letter = letter($uid);
    $info_ID = $GLOBALS['COREletterInv'][$letter];
    $uid_info = uid($uid);
    $uid_info['uid'] = $info['uid'] != '' ? $info['uid'] : $uid_info['uid'];
    $info['uid'] = ereg_replace('^D', 'D|', $uid_info['Did']) . ($letter != 'U' ? '|U|' . $user_id : '') . '|' . $letter . '|' . $info[$info_ID] . '|';
    if (substr($info['acl'], 0, 1) == '0' || substr($info[$acl], 0, 1) == '1' && createdBy($uid, $db) != $user_id) {
        $info = array();
    }
    if ($s3ql['where'] != '') {
        foreach ($s3ql['where'] as $query_field => $query_value) {
            #map the query_field first. because s3ql was transformed. To avoid being deleted
            if (in_array($query_field, $GLOBALS['s3map'][$GLOBALS['s3codes'][$letter] . 's']) && $info[$query_field] != $query_value) {
                $query_field = @array_search($query_field, $GLOBALS['s3map'][$elements]);
            }
            $whereLetter = letter($query_field);
            if (in_array($query_field, $GLOBALS['COREids']) && ereg('^(U|G)$', $letter) && $letter . $query_value != $whereLetter . $query_value) {
                $D = array('shared_with' => $uid, 'uid' => $whereLetter . $query_value, 'strictsharedwith' => 1, 'stricuid' => 1, 'db' => $db, 'user_id' => $user_id, 'stream' => 'upstream');
                ##Look for shared_with in uid instead of uid in shared_with
                $info['permissionOnResource'] = permissionOnResource($D);
                #echo '<pre>';print_r($info);exit;
            }
            #echo '<pre>';print_r($info);exit;
            $tmp = $GLOBALS['s3codes'][$letter];
            if ($info[$query_field] != $query_value && in_array($query_field, $GLOBALS['queriable'][$tmp])) {
                if (!in_array($query_field, $cols) && !in_array($query_field, $GLOBALS['COREids'])) {
                    #is there regular expresion in the query?
                    if (ereg("!=\\'(.*)\\'", stripslashes($query_value), $regout)) {
                        if ($info[$query_field] == $regout[1]) {
                            $info = array();
                        }
                    } else {
                        $info = array();
                    }
                }
            }
        }
    }
    return $info;
}
示例#3
0
function permission_level($pl, $uid, $user_id, $db)
{
    if (ereg('([0-2])([0-2])([0-2])', $pl, $dl)) {
        $a['view'] = $dl[1] == '2' ? 1 : ($dl[1] == '1' && createdBy($uid, $db) == $user_id ? 1 : 0);
        $a['edit'] = $dl[2] == '2' ? 1 : ($dl[2] == '1' && createdBy($uid, $db) == $user_id ? 1 : 0);
        $a['use'] = $dl[3] == '2' ? 1 : ($dl[3] == '1' && createdBy($uid, $db) == $user_id ? 1 : 0);
        $a['propagate'] = $a['use'];
        $a['add_data'] = $a['use'];
    } else {
        if (strlen($pl) < 2) {
            $a['edit'] = 0;
        }
        if (strlen($pl) > 1) {
            $a['view'] = 0;
        }
    }
    return $a;
}