// Print header
require_once 'plc_drupal.php';
-// set default
+// set default
drupal_set_title('DB Search');
-include 'plc_header.php';
+include 'plc_header.php';
// Common functions
require_once 'plc_functions.php';
}
$pattern="";
-if (isset($_GET['pattern'])) { $pattern=$_GET['pattern']; }
-if (isset($_POST['pattern'])) { $pattern=$_POST['pattern']; }
+if (get_array($_GET, 'pattern')) { $pattern=$_GET['pattern']; }
+if (get_array($_POST, 'pattern')) { $pattern=$_POST['pattern']; }
-$tokens=split(" ",$pattern);
+$tokens=explode(" ",$pattern);
function token_filter ($t) { $t = trim($t); if (empty($t)) return false; return true; }
$tokens=array_filter($tokens, "token_filter");
////////////////////
-// from a single search form, extract all tokens entered
+// from a single search form, extract all tokens entered
// and then show all entities that match one of that tokens among
// persons - sites - slices - nodes
////////////////////
$toggle->start();
print <<< EOF
<p id='admin-search-message'>
-This form searches for <span class="bold">any entry</span> in the database
-(among <span class="bold">persons</span>, <span class="bold">slices</span>,
-<span class="bold">sites</span> and <span class="bold">nodes</span>)
+This form searches for <span class="bold">any entry</span> in the database
+(among <span class="bold">persons</span>, <span class="bold">slices</span>,
+<span class="bold">sites</span> and <span class="bold">nodes</span>)
matching a name fragment, or token. <br/>
-You can specify a space-separated list of tokens, all entries matching
+You can specify a space-separated list of tokens, all entries matching
<span class="bold">any token</span> would then get listed.
</p>
EOF;
global $api;
$results=array();
$methodname='Get'.$type;
+ /*
+ This was broken after 598e1e840b55262fd40c6d1700148e4f0b508065 change in plcapi.
+ We no longer generate a list of methods but let the api (php) object pass them through.
+
if ( ! method_exists($api,$methodname)) {
plc_error("generic_search failed with methodname=$methodname");
return $results;
}
+ */
foreach ($tokens as $token) {
$filter=array($field=>token_pattern($token));
$new_results = $api->$methodname($filter);
// then, e.g. on slice, $key='site_id' & $plural=false
// or, e.g. on person, $key='site_ids' & $plural=true
function generic_gather_related ($objects, $key, $plural) {
- if ( empty ($objects))
+ if ( empty ($objects))
return array();
// else, look for either 'site_id' or 'site_ids' in the first object
$sample=$objects[0];
}
}
-//////////
+//////////
// create link from an id, using the various global hashes
function plc_person_link ($person_id) {global $persons_hash; return l_person_obj($persons_hash[$person_id]);}
function plc_slice_link ($slice_id) {global $slices_hash; return l_slice_obj($slices_hash[$slice_id]);}
function display_persons ($persons,$visible) {
if ( ! $persons) return;
-
+
$toggle=new PlekitToggle('persons-area',"Persons",array('visible'=>$visible));
$toggle->start();
$table=new PlekitTable('persons',$headers,1,$table_options);
$table->start();
foreach ($persons as $person) {
- $table->row_start();
+ $table->row_start();
$table->cell($person['person_id']);
$peers->cell($table,$person['peer_id']);
$table->cell(l_person_obj($person));
function display_slices ($slices,$visible) {
if ( ! $slices) return;
-
+
$toggle=new PlekitToggle('slices-area',"Slices",array('visible'=>$visible));
$toggle->start();
$table=new PlekitTable('slices',$headers,1,$table_options);
$table->start();
foreach ($slices as $slice) {
- $table->row_start();
+ $table->row_start();
$table->cell($slice['slice_id']);
$peers->cell($table,$slice['peer_id']);
$table->cell(l_slice_obj($slice));
function display_sites ($sites,$visible) {
if ( ! $sites) return;
-
+
$toggle=new PlekitToggle('sites-area',"Sites",array('visible'=>$visible));
$toggle->start();
$table=new PlekitTable('sites',$headers,1,$table_options);
$table->start();
foreach ($sites as $site) {
- $table->row_start();
+ $table->row_start();
$table->cell($site['site_id']);
$peers->cell($table,$site['peer_id']);
$table->cell(l_site_obj($site));
function display_nodes ($nodes,$visible) {
if ( ! $nodes) return;
-
+
$toggle=new PlekitToggle('nodes-area',"Nodes",array('visible'=>$visible));
$toggle->start();
$table=new PlekitTable('nodes',$headers,1,$table_options);
$table->start();
foreach ($nodes as $node) {
- $table->row_start();
+ $table->row_start();
$table->cell($node['node_id']);
$peers->cell($table,$node['peer_id']);
$table->cell(l_node_obj($node));
} else {
$visible=false;
}
-
- ////////// collect all related objects
+
+ ////////// collect all related objects
$rel_person_ids = array();
$rel_person_ids = array_merge($rel_person_ids, generic_gather_related ($sites,'person_ids',true));
$rel_person_ids = array_merge($rel_person_ids, generic_gather_related ($slices,'person_ids',true));