echo "starting query on database '{$database}'........<br>\n"; //global $debug; $debug = true; $res = _query($database, $query); if ($res) { echo "success.<br>\n"; } else { die("query failure ({$ERROR})<br>\n"); } if (@$CONFIG["USE_AUTH"]) { global $OLD; if ($OLD) { echo "Keeping profiles.<br>\n"; } else { echo "creating bootstrap data for profiles / languages / users ........<br>\n"; create_profiles(); create_languages(); create_users(); echo "done.<br>\n"; } } //$debug = true; foreach ($INITDATA as $table => $data) { echo "INIT: writing \$INITDATA['{$table}']......<br>\n"; create_data($table, $INITDATA[$table]); } echo "ready.<br>\n"; } ?> </body> </html>
function create_database() { $db_host = isset($_POST['db_host']) ? trim($_POST['db_host']) : ''; $db_port = isset($_POST['db_port']) ? trim($_POST['db_port']) : ''; $db_user = isset($_POST['db_user']) ? trim($_POST['db_user']) : ''; $db_pass = isset($_POST['db_pass']) ? trim($_POST['db_pass']) : ''; $db_name = isset($_POST['db_name']) ? trim($_POST['db_name']) : ''; $result = create_data($db_host, $db_port, $db_user, $db_pass, $db_name); if ($result === false) { echo "create_database erro"; } else { echo 'OK'; } exit; }
function step1($req) { ini_set('memory_limit', '500M'); set_time_limit(0); //this avoids timeouts global $CONFIG; require_once $CONFIG->path . "mod/profile_manager/views/default/profile_manager/members/classes.php"; include $CONFIG->path . "mod/profile_manager/views/default/profile_manager/members/config.php"; $lr = unserialize(file_get_contents($IOdir . "lr")); $ent = $_SESSION["ent"]; $clusters_metadata = unserialize(file_get_contents($IOdir . 'clusters_metadata')); $clusters_uses = unserialize(file_get_contents($IOdir . 'clusters_uses')); $clusters_tags = unserialize(file_get_contents($IOdir . 'clusters_tags')); $clusters_replinks = unserialize(file_get_contents($IOdir . 'clusters_replinks')); if ($dd_crosscheck == 1) { $metadata_dd = unserialize(file_get_contents($IOdir . 'metadata_dd')); $uses_dd = unserialize(file_get_contents($IOdir . 'uses_dd')); $tags_dd = unserialize(file_get_contents($IOdir . 'tags_dd')); $replinks_dd = unserialize(file_get_contents($IOdir . 'replinks_dd')); } $selected_ent = get_selected_entities($ent); //it takes the checkbox selected documents //I look for the clusters (metadata, uses, tags, replinks) which contain the document $clusters_matching_metadata = array(); $clusters_matching_uses = array(); $clusters_matching_tags = array(); $clusters_matching_replinks = array(); foreach ($selected_ent as $key => $type) { foreach ($clusters_metadata as $cluster_obj) { if ($cluster_obj->belongs($key) && count($cluster_obj->array_docs) > 1) { $clusters_matching_metadata[] = array("cluster" => $cluster_obj, "relevance" => 0); //all the clusters containing the selected documents; we will use relevance later } } foreach ($clusters_uses as $cluster_obj) { if ($cluster_obj->belongs($key) && count($cluster_obj->array_docs) > 1) { $clusters_matching_uses[] = array("cluster" => $cluster_obj, "relevance" => 0); //all the clusters containing the selected documents; we will use relevance later } } foreach ($clusters_tags as $cluster_obj) { if ($cluster_obj->belongs($key) && count($cluster_obj->array_docs) > 1) { $clusters_matching_tags[] = array("cluster" => $cluster_obj, "relevance" => 0); //all the clusters containing the selected documents; we will use relevance later } } foreach ($clusters_replinks as $cluster_obj) { if ($cluster_obj->belongs($key) && count($cluster_obj->array_docs) > 1) { $clusters_matching_replinks[] = array("cluster" => $cluster_obj, "relevance" => 0); //all the clusters containing the selected documents; we will use relevance later } } } $clusters_matching_metadata = arrayUnique($clusters_matching_metadata); $clusters_matching_uses = arrayUnique($clusters_matching_uses); $clusters_matching_tags = arrayUnique($clusters_matching_tags); $clusters_matching_replinks = arrayUnique($clusters_matching_replinks); /* calculate relevance for each cluster returned in the previous step: it's the relevance of the cluster to the search done * relevance of the cluster is given by the number of $selected_ent contained */ foreach ($selected_ent as $key => $type) { foreach ($clusters_matching_metadata as $num => $cluster) { if ($cluster["cluster"]->belongs($key)) { $clusters_matching_metadata[$num]["relevance"]++; } } foreach ($clusters_matching_uses as $num => $cluster) { if ($cluster["cluster"]->belongs($key)) { $clusters_matching_uses[$num]["relevance"]++; } } foreach ($clusters_matching_tags as $num => $cluster) { if ($cluster["cluster"]->belongs($key)) { $clusters_matching_tags[$num]["relevance"]++; } } foreach ($clusters_matching_replinks as $num => $cluster) { if ($cluster["cluster"]->belongs($key)) { $clusters_matching_replinks[$num]["relevance"]++; } } } //sort the clusters by their relevance in descending order usort($clusters_matching_metadata, "compare_relevance"); usort($clusters_matching_uses, "compare_relevance"); usort($clusters_matching_tags, "compare_relevance"); usort($clusters_matching_replinks, "compare_relevance"); //it creates, for each type (metadata, uses, tags, replinks), a list of the documents contained in the clusters. Each document has a relevance, in order to visualize them by relevance descending order //the relevance is calculated this way: relevance of the cluster multiplied by a score of the document. //this score, if we do a crosscheck with the doc-doc matrix, is given by that matrix, otherwise is the inherence (for the clusters given by the YACA algorithm) or 1 (for the other clusters) $list_documents_metadata = array(); foreach ($clusters_matching_metadata as $num => $cluster) { foreach ($cluster["cluster"]->array_docs as $doc_block) { if (is_array($doc_block)) { $guid = $doc_block["guid"]; } else { $guid = $doc_block; } if (array_key_exists($guid, $selected_ent)) { continue; } if (get_type($guid) != "resource") { continue; } //don't consider eventual documents that are not part of the resources, for example documents that were present and so part of the classification, but that after have been deleted if (!array_key_exists($guid, $list_documents_metadata)) { if ($dd_crosscheck == 1) { $max = 0; foreach ($selected_ent as $key => $type) { if ($metadata_dd[$guid][$key] > $max) { $max = $metadata_dd[$guid][$key]; } } $list_documents_metadata[$guid]["relevance"] = ($max + 0.05) * $cluster["relevance"]; //we add 0.05 to avoid having a 0 value } elseif (is_array($doc_block)) { $list_documents_metadata[$guid]["relevance"] = $doc_block["inherence"] * $cluster["relevance"]; } else { $list_documents_metadata[$guid]["relevance"] = $cluster["relevance"]; } } } } $list_documents_uses = array(); foreach ($clusters_matching_uses as $num => $cluster) { foreach ($cluster["cluster"]->array_docs as $doc_block) { if (is_array($doc_block)) { $guid = $doc_block["guid"]; } else { $guid = $doc_block; } if (array_key_exists($guid, $selected_ent)) { continue; } if (get_type($guid) != "resource") { continue; } //don't consider eventual documents that are not part of the resources, for example documents that were present and so part of the classification, but that after have been deleted if (!array_key_exists($guid, $list_documents_uses)) { if ($dd_crosscheck == 1) { $max = 0; foreach ($selected_ent as $key => $type) { if ($uses_dd[$guid][$key] > $max) { $max = $uses_dd[$guid][$key]; } } $list_documents_uses[$guid]["relevance"] = ($max + 0.05) * $cluster["relevance"]; //we add 0.05 to avoid having a 0 value } elseif (is_array($doc_block)) { $list_documents_uses[$guid]["relevance"] = $doc_block["inherence"] * $cluster["relevance"]; } else { $list_documents_uses[$guid]["relevance"] = $cluster["relevance"]; } } } } $list_documents_tags = array(); foreach ($clusters_matching_tags as $num => $cluster) { foreach ($cluster["cluster"]->array_docs as $doc_block) { if (is_array($doc_block)) { $guid = $doc_block["guid"]; } else { $guid = $doc_block; } if (array_key_exists($guid, $selected_ent)) { continue; } if (get_type($guid) != "resource") { continue; } //don't consider eventual documents that are not part of the resources, for example documents that were present and so part of the classification, but that after have been deleted if (!array_key_exists($guid, $list_documents_tags)) { if ($dd_crosscheck == 1) { $max = 0; foreach ($selected_ent as $key => $type) { if ($tags_dd[$guid][$key] > $max) { $max = $tags_dd[$guid][$key]; } } $list_documents_tags[$guid]["relevance"] = ($max + 0.05) * $cluster["relevance"]; //we add 0.05 to avoid having a 0 value } elseif (is_array($doc_block)) { $list_documents_tags[$guid]["relevance"] = $doc_block["inherence"] * $cluster["relevance"]; } else { $list_documents_tags[$guid]["relevance"] = $cluster["relevance"]; } } } } $list_documents_replinks = array(); foreach ($clusters_matching_replinks as $num => $cluster) { foreach ($cluster["cluster"]->array_docs as $doc_block) { if (is_array($doc_block)) { $guid = $doc_block["guid"]; } else { $guid = $doc_block; } if (array_key_exists($guid, $selected_ent)) { continue; } if (get_type($guid) != "resource") { continue; } //don't consider eventual documents that are not part of the resources, for example documents that were present and so part of the classification, but that after have been deleted if (!array_key_exists($guid, $list_documents_replinks)) { if ($dd_crosscheck == 1) { $max = 0; foreach ($selected_ent as $key => $type) { if ($replinks_dd[$guid][$key] > $max) { $max = $replinks_dd[$guid][$key]; } } $list_documents_replinks[$guid]["relevance"] = ($max + 0.05) * $cluster["relevance"]; //we add 0.05 to avoid having a 0 value } elseif (is_array($doc_block)) { $list_documents_replinks[$guid]["relevance"] = $doc_block["inherence"] * $cluster["relevance"]; } else { $list_documents_replinks[$guid]["relevance"] = $cluster["relevance"]; } } } } //sort the clusters by relevance and then by name uasort($list_documents_metadata, "compare_relevance_name"); uasort($list_documents_uses, "compare_relevance_name"); uasort($list_documents_tags, "compare_relevance_name"); uasort($list_documents_replinks, "compare_relevance_name"); $response = array(); $response['metadata'] = create_data($list_documents_metadata, $lr, $selected_ent); //return the documents contained in the clusters $response['uses'] = create_data($list_documents_uses, $lr, $selected_ent); //return the documents contained in the clusters $response['tags'] = create_data($list_documents_tags, $lr, $selected_ent); //return the documents contained in the clusters $response['replinks'] = create_data($list_documents_replinks, $lr, $selected_ent); //return the documents contained in the clusters //Now I get positive features from the clusters $response['feat_metadata'] = array(); foreach ($clusters_matching_metadata as $c) { if (!empty($c["cluster"]->commonFeatures)) { $response['feat_metadata'] = array_merge($response['feat_metadata'], $c["cluster"]->commonFeatures); } } $response['feat_metadata'] = array_unique($response['feat_metadata']); $response['feat_tags'] = array(); foreach ($clusters_matching_tags as $c) { if (!empty($c["cluster"]->commonFeatures)) { $response['feat_tags'] = array_merge($response['feat_tags'], $c["cluster"]->commonFeatures); } } $response['feat_tags'] = array_unique($response['feat_tags']); $response['feat_uses'] = array(); foreach ($clusters_matching_uses as $c) { if (!empty($c["cluster"]->commonFeatures)) { $response['feat_uses'] = array_merge($response['feat_uses'], $c["cluster"]->commonFeatures); } } $response['feat_uses'] = array_unique($response['feat_uses']); if ($req['save_cluster']) { $response['cluster'] = array(); $response['cluster']['metadata'] = $clusters_matching_metadata; $response['cluster']['uses'] = $clusters_matching_uses; $response['cluster']['tags'] = $clusters_matching_tags; $response['cluster']['replinks'] = $clusters_matching_replinks; } return $response; }