public static function getTagList($tag_str, $max_number_of_tags, $separator_char = ",") { $res = ""; if (empty($tag_str)) { return $res; } $tag_list = ktagword::getTagsArray($tag_str); $total_tag_count = min($max_number_of_tags, count($tag_list)); $displayed_tag_count = 0; foreach ($tag_list as $tag) { if ($displayed_tag_count >= $max_number_of_tags) { break; } if (trim($tag) == "") { continue; } // don't print empty tags $displayed_tag_count++; $res .= "<li><a href='/index.php/search?keywords=" . $tag . "''>" . $tag . "</a>" . ($total_tag_count > $displayed_tag_count ? "," : "") . "</li>\n"; } return $res; }
public function setAdminTags($tags) { if ($tags === null) { return; } if ($tags == "" || $this->getAdminTags() !== $tags) { parent::setAdminTags(trim(ktagword::fixAdminTags($tags))); } }
public function getTagsArray() { return ktagword::getTagsArray($this->getTags()); }
/** * Will return an array of kshows that are 'related' to a given show * * @param string $kshow_id * @return array of */ public static function getRelatedShows($kshow_id, $kuser_id, $amount) { $c = new Criteria(); $c->addJoin(kshowPeer::PRODUCER_ID, kuserPeer::ID, Criteria::INNER_JOIN); $c->add(kshowPeer::ID, 10000, Criteria::GREATER_EQUAL); //$c->add( kshowPeer::PRODUCER_ID, $kuser_id ); // our related algorithm is based on finding shows that have similar 'heavy' tags if ($kshow_id) { $kshow = kshowPeer::retrieveByPK($kshow_id); if ($kshow) { $tags_string = $kshow->getTags(); if ($tags_string) { $tagsweight = array(); foreach (ktagword::getTagsArray($tags_string) as $tag) { $tagsweight[$tag] = ktagword::getWeight($tag); } arsort($tagsweight); $counter = 0; foreach ($tagsweight as $tag => $weight) { if ($counter++ > 2) { break; } else { //we'll be looking for shows that have similar top tags (3 in this case) $c->addOr(kshowPeer::TAGS, '%' . $tag . '%', Criteria::LIKE); } } } // and of course, we don't want the show itself $c->addAnd(kshowPeer::ID, $kshow_id, Criteria::NOT_IN); } } // we want recent ones $c->addDescendingOrderByColumn(kshowPeer::UPDATED_AT); $c->setLimit($amount); $shows = kshowPeer::doSelectJoinKuser($c); //did we get enough? $amount_related = count($shows); if ($amount_related < $amount) { // let's get some more, which are not really related, but recent $c = new Criteria(); $c->addJoin(kshowPeer::PRODUCER_ID, kuserPeer::ID, Criteria::INNER_JOIN); $c->addDescendingOrderByColumn(kshowPeer::UPDATED_AT); $c->setLimit($amount - $amount_related); $moreshows = kshowPeer::doSelectJoinKuser($c); return array_merge($shows, $moreshows); } return $shows; }
public function setTags($tags, $update_db = true) { if ($this->tags !== $tags) { $tags = ktagword::updateTags($this->tags, $tags, $update_db); parent::setTags($tags); } }
public static function initCache() { if (self::$cache == null) { self::$cache = new myCache("ktagword"); } }
public function executeImpl($partner_id, $subp_id, $puser_id, $partner_prefix, $puser_kuser) { $admin_tags = ktagword::getAdminTags($partner_id); $this->addMsg("adminTags", $admin_tags); }