<?php /* -*- Mode: php; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ include_once($UTIL_DIR . "/modules.php"); class Ref { public $mod; public $id; function show() { $str = ""; $module = loadModule($this->mod); if($module && method_exists($module, "showRef")) { $str .= "<div class=\"ref\">\n"; $str .= /*"[".$this->mod."] - ".*/$module->showRef($this->id); $str .= "</div>\n"; } return $str; } function Ref($mod, $id) { $this->mod = $mod; $this->id = $id; } } class Refs { public $refs = array(); function show() { $str = ""; $str .= "<div class=\"refs\">\n"; $str .= " <div class=\"refs_header\">References:</div>\n"; foreach($this->refs as $ref) { $str .= $ref->show(); } $str .= "</div>"; return $str; } public function write($fp, $indent) { if($this->refs) { fwrite($fp, $indent."<refs>\n"); foreach($this->refs as $ref) { fwrite($fp, $indent." <ref mod=\"".$ref->mod."\" id=\"".$ref->id."\"/>\n"); } fwrite($fp, $indent."</refs>\n"); } } public function add($ref) { array_push($this->refs, $ref); } public function Refs($refsnode = NULL) { if(!$refsnode) return; $refs = $refsnode->getElementsByTagName('ref'); foreach($refs as $r) { $ref = new Ref($r->getAttribute('mod'), $r->getAttribute('id')); $this->add($ref); } } } function refsAddWidget($form, $refslist) { $form->addWidget(new ListEditor("References:", "refslist", new LineEdit("ID", "ref_id"), new LineEdit("Module", "ref_mod"), $refslist, true)); } function refsAddHiddenWidget($form, $lst) { $vallst = array(); $vallst["refslist_hidden"] = serialize(refsGetCommaListFromRefs($lst)); $form->addWidget(new Hidden($vallst)); } function refsGetFromHidden($vals) { $refslist = unserialize($vals["refslist_hidden"]); return $refslist; } function refsGetCommaListFromRefs($refs) { $lst = array(); foreach($refs->refs as $ref) { array_push($lst, $ref->mod.":".$ref->id); } return $lst; } function refsGetRefsFromHidden($vals) { $r = refsGetFromHidden($vals); $refs = new Refs(); foreach($r as $k => $val) { $v = explode(":", $val); $refmod = $v[0]; $refid = $v[1]; $ref = new Ref($refmod, $refid); $refs->add($ref); } return $refs; } function refsGetRefsFromWidget() { $lst = refsGetValuesFromWidget(); $refs = new Refs(); foreach($lst as $val) { $v = explode(":", $val); $refmod = $v[0]; $refid = $v[1]; $ref = new Ref($refmod, $refid); $refs->add($ref); } return $refs; } function refsGetValuesFromWidget() { global $GLOBALS; return $GLOBALS["refslist"]; } ?>