Beispiel #1
0
function create_edge_set($O)
{
    extract($O);
    #Create edges for regular resources
    $edge_set_str = sprintf("\t%s\n", '<EDGESET>');
    #List all classes in project
    //		$s3ql['db'] = $db;
    //		$s3ql['user_id'] = $user_id;
    //		$s3ql['select']='*';
    //		$s3ql['from']='classes';
    //		$s3ql['where']['project_id'] = $_REQUEST['project_id'];
    //		#$resources = s3list($s3ql);
    //		$resources = S3QLaction($s3ql); This was replaced by holding urles and collections in globals
    $resources = $GLOBALS['collections'];
    $C = grab_id('collection', $resources);
    $project_name = str_replace($toReplace, $replace, htmlentities($project_info['project_name']));
    if (!empty($resources)) {
        if (is_array($resources)) {
            foreach ($resources as $resource_info) {
                $project_info = s3info('project', $_REQUEST['project_id'], $db);
                $projectNode = 'P' . $project_info['project_id'];
                $classNode = 'C' . $resource_info['resource_id'];
                $subject = str_replace($toReplace, $replace, htmlentities($resource_info['entity']));
                if ($resource_info['project_id'] == $_REQUEST['project_id']) {
                    $color = 'A0A0A0';
                } else {
                    $color = 'E9E9E9';
                }
                $edge_set_str .= sprintf("\t\t%s\n", '<EDGE fromID="' . $projectNode . '" toID="' . $classNode . '" label="[Project ' . $project_name . '] has resource [' . $subject . ']" type="1" length="20" visible="false" color="' . $color . '"/>');
                #create the edges between remote classes/rules and project_id
                if ($resource_info['project_id'] != $_REQUEST['project_id']) {
                    $edge_set_str .= sprintf("\t\t%s\n", '<EDGE fromID="' . $classNode . '" toID="P' . $resource_info['project_id'] . '" label="[Project ' . $project_name . '] has resource [' . $subject . ']" type="1" length="20" visible="false" color="' . $color . '"/>');
                }
                #build an array with class name as keys and class_id as values for use in the rules
                $classes[$resource_info['entity']] = $resource_info['resource_id'];
            }
        }
    }
    $rules = $GLOBALS['rules'];
    #$rules = include_all_class_id(compact('rules', 'project_id', 'user_id','db'));
    #echo '<pre>';print_r($rules);
    #for($i= 0; $i< count($rules); $i++)
    if (is_array($rules)) {
        foreach ($rules as $rule_info) {
            #echo $classes[$rules[$i]['subject']];
            //echo $rules[$i]['subject'];
            if ($rule_info['project_id'] == $_REQUEST['project_id']) {
                $color = 'A0A0A0';
            } else {
                $color = 'E9E9E9';
            }
            if ($rule_info['object_id'] != '') {
                if (in_array($rule_info['object_id'], $C)) {
                    $toID = 'C' . $rule_info['object_id'];
                } else {
                    $toID = 'R' . $rule_info['rule_id'];
                }
            } else {
                $toID = 'R' . $rule_info['rule_id'];
            }
            #find the class_id where the rule will connect
            if (in_array($rule_info['subject_id'], $C)) {
                if ($rule_info['object'] != 'UID') {
                    #$edge_set_str .= sprintf("\t\t%s\n", '<EDGE fromID="C'.$rule_info['subject_id'].'" toID="'.$toID.'" label="Rule: [('.$rule_info['subject'].') '.$rule_info['verb'].' ('.$rule_info['object'].')] was created_on '.substr($rule_info['created_on'], 0, 19).' by '.find_user_loginID(array('account_id'=>$rule_info['created_by'], 'db'=>$O['db'])).'" type="1" length="40" visible="true" color="'.$color.'"/>');
                    $edge_set_str .= sprintf("\t\t%s\n", '<EDGE fromID="C' . $rule_info['subject_id'] . '" toID="' . $toID . '" label="R' . $rule_info['rule_id'] . ' was created_on ' . substr($rule_info['created_on'], 0, 19) . ' by ' . find_user_loginID(array('account_id' => $rule_info['created_by'], 'db' => $O['db'])) . '" type="1" length="40" visible="true" color="' . $color . '"/>');
                }
            }
        }
    }
    $edge_set_str .= sprintf("\t%s\n", '</EDGESET>');
    return $edge_set_str;
}
Beispiel #2
0
    if ($_REQUEST['authentication_id'] != '') {
        $s3ql['where']['authentication_id'] = $_REQUEST['authentication_id'];
        list($valid, $deleted) = apiQuery($s3ql);
        header('Location: ' . $action['edituser'] . '&id=' . $imp_user_id);
        exit;
    }
}
include S3DB_SERVER_ROOT . '/s3style.php';
include S3DB_SERVER_ROOT . '/tabs.php';
#re-query users groups, they might have changed
$s3ql = compact('user_id', 'db');
$s3ql['select'] = 'group_id';
$s3ql['from'] = 'groups';
$s3ql['where']['user_id'] = $_REQUEST['id'];
$user_groups = S3QLaction($s3ql);
$user_group_ids = grab_id('group', $user_groups);
#user and adming groups are way in the top of this script because they are also needed for submit
if (is_array($admin_groups)) {
    foreach ($admin_groups as $group_info) {
        #which groups is the user already in?
        if (is_array($user_groups) && in_array($group_info['group_id'], $user_group_ids)) {
            $select = ' selected';
        } else {
            $select = '';
        }
        $group_select_list .= '<option value="' . $group_info['group_id'] . '"' . $select . '>' . $group_info['groupname'] . '</option>';
    }
}
#$group_select_list= create_group_list($groups, $useredited['account_id']);
//echo $_POST['account_pwd'];
//$manager= 'User Manager';
Beispiel #3
0
function getSubClassStats($uid, $subClass_info, $inData, $user_id, $db, $N3coreNames, $inputs)
{
    global $verbs;
    $uid_info = uid($uid);
    $letter = substr($uid, 0, 1);
    $a_class_type = $GLOBALS['s3codes'][substr($uid, 0, 1)];
    $a_class_id = $GLOBALS['COREids'][$a_class_type];
    $CORElabel = $GLOBALS['CORElabel'];
    $N3coreNames = $N3coreNames != '' ? $N3coreNames : $GLOBALS['N3coreNames'];
    if (!$inputs['nocore']) {
        $n3 .= sprintf(n3UID($uid_info['uid']) . ' a ' . $N3coreNames[$a_class_type] . ' .') . chr(10) . chr(10);
    }
    switch ($a_class_type) {
        case 'user':
            if ($uid_info['Did'] == $GLOBALS['s3db_info']['deployment']['Did']) {
                $objectPredicates = array('rdfs:subClassOf' => n3UID($uid_info['Did']), 'rdfs:label' => '"' . $subClass_info[$CORElabel[$a_class_id]] . '"', 'foaf:mbox' => '"' . $subClass_info['account_email'] . '"', 'foaf:name' => '"' . $subClass_info['account_uname'] . '"', 'foaf:password' => $user_id == 1 ? '"' . findPassword(ereg_replace('^' . $letter, '', $uid_info['uid']), $db) . '"' : '', 'dcterms:creator' => n3UID('U' . $subClass_info['created_by']), 'dcterms:created' => '"' . $subClass_info['created_on'] . '"');
            } else {
                $objectPredicates = array('rdfs:subClassOf' => n3UID($GLOBALS['s3db_info']['deployment']['Did']));
            }
            break;
        case 'group':
            $objectPredicates = array('rdfs:subClassOf' => ':' . $uid_info['Did'], 'rdfs:label' => '"' . $subClass_info[$CORElabel[$a_class_id]] . '"', 'dcterms:creator' => n3UID('U' . $subClass_info['created_by']), 'dcterms:created' => '"' . $subClass_info['created_on'] . '"');
            $addStat .= addGroupUsers($user_id, $db, $subClass_info[$a_class_id]);
            break;
        case 'project':
            $objectPredicates = array('rdfs:subClassOf' => n3UID($uid_info['Did']), 'rdfs:label' => '"' . $subClass_info[$CORElabel[$a_class_id]] . '"', 'dcterms:creator' => n3UID('U' . $subClass_info['created_by']), 'dcterms:created' => '"' . $subClass_info['created_on'] . '"');
            $addStat .= addProjectRulesAndCollections($user_id, $db, $url, $subClass_info[$a_class_id], $inData);
            break;
        case 'collection':
            $objectPredicates = array('rdfs:subClassOf' => n3UID('P' . $subClass_info['project_id']), 'rdfs:label' => '"' . $subClass_info['entity'] . '"', 'rdfs:comment' => '"' . $subClass_info['notes'] . '"');
            if (!$inputs['nometa']) {
                $objectPredicates['dcterms:creator'] = n3UID('U' . $subClass_info['created_by']);
                $objectPredicates['dcterms:created'] = '"' . $subClass_info['created_on'] . '"';
            }
            if (in_array('all', array_keys($inputs))) {
                $addStat .= addCollectionItemStats($user_id, $db, $subClass_info[$a_class_id], $inputs);
            }
            #trying to see if the collection declarations are meesing up the query a lot
            if ($inputs['nocore']) {
                $n3 .= sprintf(n3UID($uid_info['uid']) . ' a ' . $N3coreNames[$a_class_type] . ' .') . chr(10) . chr(10);
            }
            break;
        case 'rule':
            $subject_id = n3UID('C' . $subClass_info['subject_id']);
            $verb_id = $subClass_info['verb_id'] == "" ? ":I" . random_string(5) : n3UID("I" . $subClass_info['verb_id']);
            #predicates can't be literals, so create a resource for literal verbs.
            #when the verb is not an ID, a random string is generated that will simulate the ID of an instance.
            if (!in_array($subClass_info['verb'], array_keys($verbs))) {
                $addStat .= sprintf($verb_id);
                $addStat .= sprintf(' rdfs:label "' . $subClass_info['verb'] . '" ;') . chr(10);
                if (!$inputs['nocore']) {
                    $addStat .= chr(9) . sprintf(' a s3db:s3dbItem ;') . chr(10);
                }
                ##Find collection of this item and output this information
                $item_info = s3info('item', $subClass_info['verb_id'], $db);
                if (is_array($item_info)) {
                    $addStat .= chr(9) . sprintf(' a ' . n3UID("C" . $item_info['resource_class_id']) . ' .') . chr(10) . chr(10);
                } else {
                    #find a collection for the verbs
                    $verbCollection = projectVerbClass(array('project_id' => $subClass_info['project_id'], 'db' => $db, 'user_id' => $user_id));
                    $addStat .= chr(9) . sprintf(' a ' . n3UID("C" . $verbCollection['resource_id']) . ' .') . chr(10) . chr(10);
                }
                $verbs[$subClass_info['verb']] = $verb_id;
            } else {
                $verb_id = $verbs[$subClass_info['verb']];
            }
            $object_id = $subClass_info['object_id'] == "" ? '"' . $subClass_info['object'] . '"' : n3UID("C" . $subClass_info['object_id']);
            $objectPredicates = array('rdfs:label' => '"' . $subClass_info['subject'] . ' ' . $subClass_info['verb'] . ' ' . $subClass_info['object'] . '"', 'rdfs:subClassOf' => n3UID('P' . $subClass_info['project_id']), 'rdf:subject' => $subject_id, 'rdf:predicate' => $verb_id, 'rdf:object' => $object_id);
            if (!$inputs['nometa']) {
                $objectPredicates['dcterms:creator'] = n3UID('U' . $subClass_info['created_by']);
                $objectPredicates['dcterms:created'] = '"' . $subClass_info['created_on'] . '"';
            }
            ##When no core is needed (when the document is not meant to be reloaded, there is no need for
            $addStat .= sprintf($subject_id . ' ' . $verb_id . ' ' . $object_id . ' .') . chr(10);
            if (in_array('all', array_keys($inputs))) {
                $addStat .= addRuleStats($user_id, $db, $url, $subClass_info[$a_class_id], $inputs);
            }
            #trying to see if the collection declarations are meesing up the query a lot
            if ($inputs['nocore']) {
                $n3 .= sprintf(n3UID($uid_info['uid']) . ' a ' . $N3coreNames[$a_class_type] . ' .') . chr(10) . chr(10);
            }
            break;
        case 'item':
            $objectPredicates = array('rdfs:label' => '"' . $subClass_info['notes'] . '"', 'a' => n3UID('C' . $subClass_info['class_id']));
            if (!$inputs['nometa']) {
                $objectPredicates['dcterms:creator'] = ':U' . $subClass_info['created_by'];
                $objectPredicates['dcterms:created'] = '"' . $subClass_info['created_on'] . '"';
            }
            #trying to see if the collection declarations are meesing up the query a lot
            if ($inputs['nocore']) {
                $n3 .= sprintf(n3UID($uid_info['uid']) . ' a ' . $N3coreNames[$a_class_type] . ' .') . chr(10) . chr(10);
            }
            break;
        case 'statement':
            $subject_name = 'instance_id';
            $predicate_name = 'rule_id';
            $object_name = 'instance_id';
            if ($subClass_info['file_name'] != '') {
                #find the file. Write it as base64encoded
                #echo '<pre>';print_r($subClass_info);
                $fileLocation = fileLocation($subClass_info, $db);
                if ($fileLocation != '') {
                    if (!$inputs['files']) {
                        $content = @fread(@fopen($fileLocation, 'r'), @filesize($fileLocation));
                        $content = base64_encode($content);
                        $object = '"s3dbFile_' . $subClass_info['file_name'] . '_' . $content . '"';
                    } else {
                        $object = '"s3dbLink_' . $subClass_info['file_name'] . '_' . S3DB_URI_BASE . '/download.php?key=' . $inputs['key'] . '&statement_id=' . $subClass_info['statement_id'] . '"';
                    }
                    #echo $object;exit;
                    #echo $subClass_info['file_name'].chr(13).chr(10);
                }
                #echo $object;exit;
                #ereg('<a href(.*)download.php(.*)>(.*)</a>', $stat_info['value'], $linkdata);
                #$statfilelink='<'.$url.'download.php'.str_replace('"', '', $linkdata[2]).'>';
                #$object=$statfilelink;
            } elseif ($subClass_info['object_id'] != '') {
                $object = n3UID($COREletter[$object_name] . $subClass_info['value']);
            } else {
                ereg('<a href=(.*)>(.*)</a>', $subClass_info['value'], $links);
                if (!empty($links)) {
                    $object = '"' . str_replace(array('"', '\''), array('', ''), $links[1]) . '"';
                } else {
                    $object = '"' . $subClass_info['value'] . '"';
                }
            }
            $objectPredicates = array('rdf:subject' => n3UID('I' . $subClass_info[$subject_name]), 'rdf:predicate' => n3UID('R' . $subClass_info[$predicate_name]), 'rdf:object' => $object, 'dcterms:creator' => n3UID('U' . $subClass_info['created_by']), 'dcterms:created' => '"' . $subClass_info['created_on'] . '"');
            #$objectPredicates['rdfs:label'] ='"'.$subClass_info['subject'].' '.$subClass_info['instance_notes'].' (I'.$subClass_info['instance_id'].') '.$subClass_info['verb'].' '.$subClass_info['object'].' '.(($subClass_info['object_id']!='')?($subClass_info['object_notes'].' (I'.$subClass_info['value'].')'):(($subClass_info['file_name']=='')?str_replace('"', '', $objectPredicates['rdf:object']):$subClass_info['file_name'])).'"';
            $objectPredicates['rdfs:label'] = '"' . $subClass_info['subject'] . ' ' . $subClass_info['instance_notes'] . ' I' . $subClass_info['instance_id'] . ' ' . $subClass_info['verb'] . ' ' . $subClass_info['object'] . ' ' . ($subClass_info['object_id'] != '' ? $subClass_info['object_notes'] . ' I' . $subClass_info['value'] . '' : ($subClass_info['file_name'] == '' ? str_replace('"', '', $objectPredicates['rdf:object']) : $subClass_info['file_name'])) . '"';
            #when no core is requested, return just the reified stat
            if ($inputs['nocore']) {
                $objectPredicates = array();
            }
            #unreified statement
            $addStat .= sprintf("%s", $objectPredicates['rdf:subject']);
            $addStat .= chr(9) . sprintf("%s", $objectPredicates['rdf:predicate'] . ' ' . ($subClass_info['object_id'] != '' ? $objectPredicates['rdf:object'] : $objectPredicates['rdf:object']) . ' .') . chr(10);
            break;
    }
    #export user permissions in rdf
    if (in_array('p', array_keys($inData))) {
        $s3ql = compact('user_id', 'db');
        $s3ql['from'] = 'users';
        $s3ql['where'][$GLOBALS['COREids'][$a_class_type]] = $subClass_info[$GLOBALS['COREids'][$a_class_type]];
        $users = S3QLaction($s3ql);
        if (is_array($users)) {
            $permissions = array_map('grab_permission', $users);
            $users = grab_id('user', $users);
            $specified_id_info['permissions'] = array_combine($users, $permissions);
        }
        if (is_array($specified_id_info['permissions'])) {
            $n3permissions .= chr(10);
            foreach ($specified_id_info['permissions'] as $user_code => $pcode) {
                $n3permissions .= sprintf(n3UID('U' . $user_code) . ' s3dbpc:VCU' . $pcode . ' ' . n3UID($uid_info['uid']) . ' .') . chr(10);
            }
        }
    }
    $objectPredicates = array_filter($objectPredicates);
    if (is_array($objectPredicates) && !empty($objectPredicates)) {
        #Global "this is a resource" statement
        $n3 .= sprintf(n3UID($uid_info['uid']));
        foreach ($objectPredicates as $predicate => $object) {
            if ($object != '""') {
                $n3 .= sprintf("%s", ' ' . $predicate . ' ' . $object . ($predicate == end(array_keys($objectPredicates)) ? ' .' . chr(10) . chr(10) : ' ;' . chr(10) . chr(9)));
            }
        }
    }
    if (is_array($user2declare)) {
        foreach ($user2declare as $user => $toDeclare) {
            $uid_info = uid($user);
            $addStat .= sprintf(n3UID('U' . $user), 'rdfs:label "' . getUserName($user, $db) . '"') . chr(10);
        }
    }
    $n3 .= $addStat . $n3permissions;
    #echo $n3;exit;
    return $n3;
}
Beispiel #4
0
$rootUID = letter($specified_id_type) . $specifiedInput['rootID'];
$rootTriples = rdf_encode(array(0 => $specified_id_info), letter($specified_id_type), 'array', $db);
$triples = array_merge($triples, $rootTriples);
#Export user permissions on object
#retrieve permission info on this URI
if (in_array('permissions', array_keys($inputs))) {
    $s3ql = compact('user_id', 'db');
    $s3ql['from'] = 'users';
    $s3ql['where'][$specified_id] = $specified_id_info[$specified_id];
    $users = S3QLaction($s3ql);
    $me = $user_info;
    $me = include_all(array('elements' => 'users', 'element_info' => $me, 'user_id' => $user_id, 'db' => $db));
    $me['permissionOnResource'] = $me['permission_level'];
    array_push($users, $me);
    $permissions = array_map('grab_permission', $users);
    $users = grab_id('user', $users);
    $specified_id_info['permissions'] = array_combine($users, $permissions);
    #echo '<pre>';print_r($specified_id_info['permissions']);
    if (is_array($specified_id_info['permissions'])) {
        $n3permissions .= chr(10);
    }
    sprintf($pre . $uid_info['uid'] . $suf) . chr(10);
    foreach ($specified_id_info['permissions'] as $user_code => $pcode) {
        $n3permissions .= sprintf(n3UID('U' . $user_code) . ' s3dbpc:VCU' . $pcode . ' ' . n3UID($ruid_info['uid']) . ' .') . chr(10);
        ##triples fo the rdfapi
        $tr = array(0 => array('s' => $ns[''] . 'U' . $user_code, 'p' => $ns['s3dbpc'] . $pcode, 'o' => $ns[''] . $rootUID, 'p_type' => 'uri', 'o_type' => 'uri'));
        $triples = array_merge($triples, $tr);
    }
}
#EVERTHING THAT HAS A LABEL IS A CLASS. This includes verbs, object and instances
$CT = compact('triples', 'specified_id_type', 'specified_id', 'specified_id_info', 's3Types', 'user_id', 'db', 'inputs');
Beispiel #5
0
    #if($_REQUEST['project_id']!='')
    #$s3ql['where']['project_id'] = $_REQUEST['project_id'];
    $s3ql['where']['object'] = '!="UID"';
    if ($_REQUEST['orderBy']) {
        $s3ql['order_by'] = $_REQUEST['orderBy'] . ' ' . $_REQUEST['direction'];
    }
    $rules = S3QLaction($s3ql);
    #echo '<pre>';print_r($rules);exit;
} else {
    $rules = $_SESSION[$uid]['rules'];
}
if (is_array($rules)) {
    #find out whter the object of this rule is a class and retrieve the rule_id in that case
    #$rules = include_all_class_id(compact('rules', 'project_id', 'db'));
    #make rule_id the index for the array
    $rule_ids = grab_id('rule', $rules);
    $rules = array_combine($rule_ids, array_values($rules));
}
#action on buttons
if ($_REQUEST['listall'] == 'yes') {
    #find all instances in this class
    $limit = $_REQUEST['num_per_page'] != '' ? $_REQUEST['num_per_page'] : '50';
    $page = $_REQUEST['page'] == '' ? '1' : $_REQUEST['page'];
    $offset = ($page - 1) * $limit;
    $s3ql = compact('user_id', 'db');
    $s3ql['from'] = 'items';
    $s3ql['where']['collection_id'] = $class_id;
    #$s3ql['where']['project_id'] = $project_id;
    #echo '<pre>';print_r($s3ql);
    if ($_REQUEST['orderBy'] != '') {
        $s3ql['order_by'] = $_REQUEST['orderBy'] . ' ' . $_REQUEST['direction'];