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; }
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';
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; }
$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');
#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'];