diff options
author | friendica <info@friendica.com> | 2013-06-19 21:50:14 -0700 |
---|---|---|
committer | friendica <info@friendica.com> | 2013-06-19 21:50:14 -0700 |
commit | 3b1e5e5204d7cade3afc320cc45b1eb4efa6743c (patch) | |
tree | cb5eba6c9cdffc771443a868e99c38cd81f2d401 /include/taxonomy.php | |
parent | 4f06905a186252327e7446b8767889dc37aff9fc (diff) | |
download | volse-hubzilla-3b1e5e5204d7cade3afc320cc45b1eb4efa6743c.tar.gz volse-hubzilla-3b1e5e5204d7cade3afc320cc45b1eb4efa6743c.tar.bz2 volse-hubzilla-3b1e5e5204d7cade3afc320cc45b1eb4efa6743c.zip |
source code re-org, move taxonomy to separate include
Diffstat (limited to 'include/taxonomy.php')
-rw-r--r-- | include/taxonomy.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/include/taxonomy.php b/include/taxonomy.php new file mode 100644 index 000000000..5130ff9b7 --- /dev/null +++ b/include/taxonomy.php @@ -0,0 +1,91 @@ +<?php /** @file */ + +// post categories and "save to file" use the same item.file table for storage. +// We will differentiate the different uses by wrapping categories in angle brackets +// and save to file categories in square brackets. +// To do this we need to escape these characters if they appear in our tag. + +function file_tag_encode($s) { + return str_replace(array('<','>','[',']'),array('%3c','%3e','%5b','%5d'),$s); +} + +function file_tag_decode($s) { + return str_replace(array('%3c','%3e','%5b','%5d'),array('<','>','[',']'),$s); +} + +function file_tag_file_query($table,$s,$type = 'file') { + + if($type == 'file') + $termtype = TERM_FILE; + else + $termtype = TERM_CATEGORY; + + return sprintf(" AND " . (($table) ? dbesc($table) . '.' : '') . "id in (select term.oid from term where term.type = %d and term.term = '%s' and term.uid = " . (($table) ? dbesc($table) . '.' : '') . "uid ) ", + intval($termtype), + protect_sprintf(dbesc($s)) + ); +} + +function term_query($table,$s,$type = TERM_UNKNOWN) { + + return sprintf(" AND " . (($table) ? dbesc($table) . '.' : '') . "id in (select term.oid from term where term.type = %d and term.term = '%s' and term.uid = " . (($table) ? dbesc($table) . '.' : '') . "uid ) ", + intval($type), + protect_sprintf(dbesc($s)) + ); +} + + +function store_item_tag($uid,$iid,$otype,$type,$term,$url = '') { + if(! $term) + return false; + $r = q("select * from term + where uid = %d and oid = %d and otype = %d and type = %d + and term = '%s' and url = '%s' ", + intval($uid), + intval($iid), + intval($otype), + intval($type), + dbesc($term), + dbesc($url) + ); + if($r) + return false; + $r = q("insert into term (uid, oid, otype, type, term, url) + values( %d, %d, %d, %d, '%s', '%s') ", + intval($uid), + intval($iid), + intval($otype), + intval($type), + dbesc($term), + dbesc($url) + ); + return $r; +} + +function get_terms_oftype($arr,$type) { + $ret = array(); + if(! (is_array($arr) && count($arr))) + return $ret; + + if(! is_array($type)) + $type = array($type); + + foreach($type as $t) + foreach($arr as $x) + if($x['type'] == $t) + $ret[] = $x; + return $ret; +} + +function format_term_for_display($term) { + $s = ''; + if($term['type'] == TERM_HASHTAG) + $s .= '#'; + elseif($term['type'] == TERM_MENTION) + $s .= '@'; + + if($term['url']) $s .= '<a target="extlink" href="' . $term['url'] . '">' . htmlspecialchars($term['term']) . '</a>'; + else $s .= htmlspecialchars($term['term']); + return $s; +} + |