function testBase() { $tq = new folksoTagQuery(); $this->assertPattern('/101/', $tq->related_tags(101)); $this->assertPattern('/tag <> 101/', $tq->related_tags('101')); $this->assertPattern('/bobness/', $tq->related_tags('bobness')); $this->assertPattern("/normalize_tag\\('bobness'\\)/", $tq->related_tags('bobness')); $this->assertPattern("/tagnorm <> normalize_tag\\('bobness'\\)/", $tq->related_tags('bobness')); }
function relatedTags(folksoQuery $q, folksoDBConnect $dbc, folksoSession $fks) { $r = new folksoResponse(); try { $i = new folksoDBinteract($dbc); $tq = new folksoTagQuery(); $i->query($tq->related_tags($q->tag)); } catch (dbException $e) { return $r->handleDBexception($e); } if ($i->rowCount < 2) { $r->setOk(204, 'No related tags yet'); return $r; } $r->setOk(200, 'Related tags found'); $df = new folksoDisplayFactory(); $dd = $df->TagList(); $dd->activate_style('xml'); $accum = $dd->startform(); //pop title row $title_row = $i->result->fetch_object(); // $accum = $dd->title($title_row->display); while ($row = $i->result->fetch_object()) { $accum .= $dd->line($row->tagid, $row->tagnorm, $row->display, $row->popularity, ''); } $accum .= $dd->endform(); /** Default html output via xslt transformation. Content-type negotiation should be handled here. **/ $accum_XML = new DOMDocument(); $accum_XML->loadXML($accum); $loc = new folksoFabula(); $xsl = new DOMDocument(); $xsl->load($loc->xsl_dir . "reltags.xsl"); $proc = new XsltProcessor(); $proc->importStylesheet($xsl); $proc->setParameter('', 'tagviewbase', $loc->server_web_path . 'tagview.php?tag='); // by using transformToXML instead of transformToDoc, we avoid // putting an xml type declaration into the output doc. $reltags = $proc->transformToXML($accum_XML); // $xml = $reltags->saveXML(); $r->t($reltags); return $r; }