id"; $other_id=db_item("select id from $tb_tree $where limit 1"); db_query("update $tb_tree set family_id=\"".mysql_escape_string($other_id)."\" $where"); } // PASSTHRU redirect } if (isset($move)) { $order=db_item("select max(family_order) from $tb_tree where family_id=\"".mysql_escape_string($move_dst)."\""); foreach(preg_split('/[ ,]/',$move_src,-1,PREG_SPLIT_NO_EMPTY) as $src) { // UGLY but how to do sequential setting of increasing family_order? $result=db_query("select id from $tb_tree where family_id=\"".mysql_escape_string($src)."\" order by family_order"); while (($row=mysql_fetch_array($result))) db_query("update $tb_tree set family_order=\"".(++$order)."\",family_id=\"".mysql_escape_string($move_dst)."\"" ." where id=\"".mysql_escape_string($row["id"])."\""); } // PASSTHRU redirect } if (isset($reorder)) { $row=db_array("select family_id,family_order from $tb_tree where id=\"".mysql_escape_string($id)."\""); $other_order=db_item("select family_order from $tb_tree where family_id=\"".mysql_escape_string($row["family_id"])."\"" ." and family_order".($reorder_by<0 ? "<" : ">").$row["family_order"] ." order by family_order ".($reorder_by<0 ? "desc" : "asc")." limit 1"); db_query("update $tb_tree set family_order=family_order".($reorder_by>=0 ? "+" : "").$reorder_by ." where family_id=\"".mysql_escape_string($row["family_id"])."\"" ." and family_order".($reorder_by<0 ? "<" : ">").$other_order); db_query("update $tb_tree set family_order=".($other_order+$reorder_by)." where id=\"".mysql_escape_string($id)."\""); // PASSTHRU redirect } function hiddens($array,$doinputs) { global $permanents_array; $r=""; foreach ($permanents_array as $key) if (!isset($key,$array) && isset($GLOBALS[$key])) $array[$key]=$GLOBALS[$key]; foreach ($array as $key=>$val) { if ($doinputs) $r.="\n"; else $r.=($r==""?"?":"&").addpercents($key)."=".addpercents($val); } if (!$doinputs && $r=="") $r="?_dummy=1"; return($r); } if (isset($delete) || isset($update) || isset($move) || isset($isolate) || isset($reorder)) { if (isset($winclose)) { header("Content-type: text/html"); ?> Window close

Window close

"); } function formconvert($id,$name,$text,$readonly,$anchor,$hiddens=array()) { global $tb_tree,$row,$winclose; $readonly=(!$readonly ? "" : " readonly=\"readonly\""); if ($winclose) $text.=" (closes window)"; $row=db_array("select name,PublAuthor,Publication,html from $tb_tree" ." where id=\"".mysql_escape_string($id)."\""); $hiddens["id"]=$id; print("" ."
\n" ."
\n" .fieldedit("name",50,$readonly) ."\n".fieldedit("PublAuthor",50,$readonly) ."
\n".fieldedit("Publication",100,$readonly) ."
\n" ."

 

\n" ."\n" .hiddens($hiddens,true/*doinputs*/) ."
"); footer(true /* delimit */); } if (isset($edit)) formconvert($id,"update","Update entry",false/*readonly*/,"#id_$id"); if (isset($confirm) && $confirming=="delete") formconvert($id,$confirming,"Really delete entry?",true/*readonly*/, "#family_".db_item("select family_id from $tb_tree where id=\"".mysql_escape_string($id)."\"")); if (isset($confirm) && $confirming=="isolate") formconvert($id,$confirming,"Really isolate entry?",true/*readonly*/,"#id_$id"); $reset_from_script="this.form.elements['limit_from'].value=0;"; print('
'."\n" .'

' .''."\n" .' '."\n" .'

'."\n" .'First Group: '."\n" .'   ' .'Max Groups: '.''."\n" .'

'."\n"); if (!isset($find)) footer(true /* delimit */); print("
\n"); function fieldquote($prefix,$field,$suffix="") { global $row,$fieldquote_tot; if (!isset($row[$field])) return(""); return($prefix."".htmlspecialchars($row[$field])."".$suffix); } function formbutton($name,$text,$method="GET",$hidden=array(),$newwin=false,$anchor="") { $r=""; if ($newwin) { $r.="
".formbutton($name,$text,$method,$hidden,false/*newwin*/).""; $hidden["winclose"]=1; } $r.="" ."
" ."" .hiddens($hidden,true/*doinputs*/) ."
"; if ($newwin) $r.="
"; return($r); } $families=db_query("select distinct family_id from $tb_tree" ." where name like \"".mysql_escape_string($find)."%\"" ." order by name limit $limit_from,".($limit_max+1)); $arrows="
\n" ."
"; if ($limit_from>0) $arrows.=formbutton("","Previous","GET",array("limit_from"=>max(0,$limit_from-$limit_max))); $arrows.=""; if (mysql_num_rows($families)>$limit_max) $arrows.=formbutton("","Next","GET",array("limit_from"=>$limit_from+$limit_max)); $arrows.="
"; print "$arrows
\n"; $family_tot=0; while (($family_row=mysql_fetch_array($families))) { if ($family_tot) print "
\n"; $family_id=$family_row["family_id"]; print("
" ."
" // WARNING: will break the line! ."Group # " ."

" ."Join to this group: " ." \n" .hiddens(array("move_dst"=>$family_id),true/*doinputs*/) ."
\n" ."
\n"); $result=db_query("select id,family_order,name,PublAuthor,Publication,html from $tb_tree" ." where family_id=\"$family_id\"" ." order by family_order"); $order=0; while (($row=mysql_fetch_array($result))) { if ($order>=1) print "
"; print(""); print("
"); if ($order>=1) { print ""; $tabpfx=""; } else $tabpfx=""; print(""); print(fieldquote("$tabpfx")); if (isset($row["html"])) { $import="import: [".$row["id"]."]"; $html=$row["html"]; $html=eregi_replace("< *"."/? *a( [^>]*)?>","",$html); print("$tabpfx"); } print("
".fieldquote("","name","\n") .fieldquote("","PublAuthor")."
","Publication","
\n".$html."\n
"); $l=""; print("" .($order <= 0 ? "" : $l.formbutton("reorder","^^^ up ^^^","POST", array("id"=>$row["id"],"reorder_by"=>-1),false/*newwin*/,"family_$family_id").$r) .$l.formbutton("confirm","Delete entry","GET", array("id"=>$row["id"],"confirming"=>"delete"),true/*newwin*/).$r .$l.formbutton("edit" ,"Edit entry" ,"GET", array("id"=>$row["id"]),true/*newwin*/).$r .(mysql_num_rows($result)<=1 ? "" : $l.formbutton("confirm","Isolate entry","GET", array("id"=>$row["id"],"confirming"=>"isolate"),true/*newwin*/).$r) .($order+1 >= mysql_num_rows($result) ? "" : $l.formbutton("reorder","vvv down vvv" ,"POST", array("id"=>$row["id"],"reorder_by"=>+1),false/*newwin*/,"family_$family_id").$r) ."
"; $r="
\n" ); if ($order>=1) print "
"; print "\n"; $order++; } mysql_free_result($result); if ($order>=2) print "\n"; print "\n"; // = $limit_max) break; } mysql_free_result($families); print "
$arrows\n"; footer(false /* delimit */); ?>