shared code for tag lists, and work on refine search starts
git-svn-id: file:///home/shish/svn/shimmie2/trunk@40 7f39781d-f577-437e-ae19-be835c7a54ca
This commit is contained in:
parent
c4cbc5991d
commit
b0369ffd22
1 changed files with 78 additions and 58 deletions
|
@ -162,6 +162,43 @@ class TagList extends Extension {
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
// }}}
|
// }}}
|
||||||
|
// common {{{
|
||||||
|
private function build_tag_list_html($query, $args, $callback=null, $cbdata=null) {
|
||||||
|
global $database;
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$n = 0;
|
||||||
|
$html = "";
|
||||||
|
$result = $database->db->Execute($query, $args);
|
||||||
|
$show_count = $config->get_bool('tag_list_numbers');
|
||||||
|
while(!$result->EOF) {
|
||||||
|
$row = $result->fields;
|
||||||
|
$tag = $row['tag'];
|
||||||
|
$h_tag = html_escape($tag);
|
||||||
|
$h_tag_no_underscores = str_replace("_", " ", $h_tag);
|
||||||
|
$count = $row['count'];
|
||||||
|
if($n++) $html .= "<br/>";
|
||||||
|
$link = $this->tag_link($row['tag']);
|
||||||
|
$html .= "<a href='$link'>$h_tag_no_underscores</a>\n";
|
||||||
|
if($show_count) {
|
||||||
|
$html .= " ($count)";
|
||||||
|
}
|
||||||
|
if(!is_null($callback)) {
|
||||||
|
$html .= $this->$callback($tag, $cbdata);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(!is_null($config->get_string('info_link'))) {
|
||||||
|
$link = str_replace('$tag', $tag, $config->get_string('info_link'));
|
||||||
|
$html .= " <a href='$link'>?</a>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$result->MoveNext();
|
||||||
|
}
|
||||||
|
$result->Close();
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
// get related {{{
|
// get related {{{
|
||||||
private function get_related_tags($image) {
|
private function get_related_tags($image) {
|
||||||
global $database;
|
global $database;
|
||||||
|
@ -183,26 +220,9 @@ class TagList extends Extension {
|
||||||
ORDER by count DESC
|
ORDER by count DESC
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
";
|
";
|
||||||
|
$args = array($image->id, $config->get_int('tag_list_length'));
|
||||||
|
|
||||||
$n = 0;
|
return $this->build_tag_list_html($query, $args);
|
||||||
$html = "";
|
|
||||||
$result = $database->db->Execute($query, array($image->id, $config->get_int('tag_list_length')));
|
|
||||||
$show_count = $config->get_bool('tag_list_numbers');
|
|
||||||
while(!$result->EOF) {
|
|
||||||
$row = $result->fields;
|
|
||||||
$h_tag = html_escape($row['tag']);
|
|
||||||
$count = $row['count'];
|
|
||||||
if($n++) $html .= "<br/>";
|
|
||||||
$link = $this->tag_link($row['tag']);
|
|
||||||
$html .= "<a href='$link'>$h_tag</a>\n";
|
|
||||||
if($show_count) {
|
|
||||||
$html .= " ($count)";
|
|
||||||
}
|
|
||||||
$result->MoveNext();
|
|
||||||
}
|
|
||||||
$result->Close();
|
|
||||||
|
|
||||||
return $html;
|
|
||||||
}
|
}
|
||||||
// }}}
|
// }}}
|
||||||
// get popular {{{
|
// get popular {{{
|
||||||
|
@ -217,29 +237,9 @@ class TagList extends Extension {
|
||||||
ORDER BY count DESC
|
ORDER BY count DESC
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
";
|
";
|
||||||
|
$args = array($config->get_int('tag_list_length'));
|
||||||
|
|
||||||
$n = 0;
|
$html = $this->build_tag_list_html($query, $args);
|
||||||
$result = $database->db->Execute($query, array($config->get_int('tag_list_length')));
|
|
||||||
$html = "";
|
|
||||||
$show_count = $config->get_bool('tag_list_numbers');
|
|
||||||
while(!$result->EOF) {
|
|
||||||
$row = $result->fields;
|
|
||||||
$tag = html_escape($row['tag']);
|
|
||||||
$count = $row['count'];
|
|
||||||
if($n++) $html .= "<br/>";
|
|
||||||
$link = $this->tag_link($row['tag']);
|
|
||||||
$html .= "<a href='$link'>$tag</a>\n";
|
|
||||||
if($show_count) {
|
|
||||||
$html .= " ($count)";
|
|
||||||
}
|
|
||||||
if(!is_null($config->get_string('info_link'))) {
|
|
||||||
$link = str_replace('$tag', $tag, $config->get_string('info_link'));
|
|
||||||
$html .= " <a href='$link'>?</a>\n";
|
|
||||||
}
|
|
||||||
$result->MoveNext();
|
|
||||||
}
|
|
||||||
$result->Close();
|
|
||||||
|
|
||||||
$html .= "<p><a href='".make_link("tags")."'>Full List >>></a>\n";
|
$html .= "<p><a href='".make_link("tags")."'>Full List >>></a>\n";
|
||||||
|
|
||||||
return $html;
|
return $html;
|
||||||
|
@ -266,27 +266,47 @@ class TagList extends Extension {
|
||||||
ORDER BY count
|
ORDER BY count
|
||||||
DESC LIMIT ?
|
DESC LIMIT ?
|
||||||
";
|
";
|
||||||
|
$args = array($config->get_int('tag_list_length'));
|
||||||
|
|
||||||
$n = 0;
|
return $this->build_tag_list_html($query, $args, "ars", $tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function ars($tag, $tags) {
|
||||||
$html = "";
|
$html = "";
|
||||||
$result = $database->db->Execute($query, array($config->get_int('tag_list_length')));
|
$html .= " (";
|
||||||
$show_count = $config->get_bool('tag_list_numbers');
|
$html .= $this->get_add_link($tags, $tag);
|
||||||
while(!$result->EOF) {
|
$html .= $this->get_remove_link($tags, $tag);
|
||||||
$row = $result->fields;
|
$html .= $this->get_subtract_link($tags, $tag);
|
||||||
$h_tag = html_escape($row['tag']);
|
$html .= ")";
|
||||||
$count = $row['count'];
|
|
||||||
if($n++) $html .= "<br/>";
|
|
||||||
$link = $this->tag_link($row['tag']);
|
|
||||||
$html .= "<a href='$link'>$h_tag</a>\n";
|
|
||||||
if($show_count) {
|
|
||||||
$html .= " ($count)";
|
|
||||||
}
|
|
||||||
$result->MoveNext();
|
|
||||||
}
|
|
||||||
$result->Close();
|
|
||||||
|
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function get_remove_link($tags, $tag) {
|
||||||
|
if(!in_array($tag, $tags) && !in_array("-$tag", $tags)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "<a href='".make_link("index/")."' title='Remove'>r</a>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_add_link($tags, $tag) {
|
||||||
|
if(in_array($tag, $tags)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "<a href='".make_link("index/")."' title='Add'>a</a>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_subtract_link($tags, $tag) {
|
||||||
|
if(in_array("-$tag", $tags)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "<a href='".make_link("index/")."' title='Subtract'>s</a>";
|
||||||
|
}
|
||||||
|
}
|
||||||
// }}}
|
// }}}
|
||||||
}
|
}
|
||||||
add_event_listener(new TagList());
|
add_event_listener(new TagList());
|
||||||
|
|
Reference in a new issue