diff --git a/include/text.php b/include/text.php index 5ad0154d7a..08b2b84876 100644 --- a/include/text.php +++ b/include/text.php @@ -1235,4 +1235,23 @@ function item_post_type($item) { return t('post'); } +// 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') + $str = preg_quote( '[' . file_tag_encode($s) . ']' ); + else + $str = preg_quote( '<' . file_tag_encode($s) . '>' ); + return " AND " . (($table) ? dbesc($table) . '.' : '') . "file regexp '" . dbesc($str) . "' "; +} \ No newline at end of file diff --git a/mod/network.php b/mod/network.php index b04a7b4890..861b5ab73d 100755 --- a/mod/network.php +++ b/mod/network.php @@ -52,13 +52,15 @@ function network_init(&$a) { function saved_searches($search) { $srchurl = '/network?f=' - . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') - . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') + . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') + . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '') - . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') - . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') - . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') - . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : ''); + . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') + . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') + . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') + . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') + . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : ''); + ; $o = ''; @@ -226,6 +228,7 @@ function network_content(&$a, $update = 0) { $nets = ((x($_GET,'nets')) ? $_GET['nets'] : ''); $cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0); $cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99); + $file = ((x($_GET,'file')) ? $_GET['file'] : ''); if(($a->argc > 2) && $a->argv[2] === 'new') $nouveau = true; @@ -239,7 +242,7 @@ function network_content(&$a, $update = 0) { } } - if(x($_GET,'search')) + if(x($_GET,'search') || x($_GET,'file')) $nouveau = true; if($cid) $def_acl = array('allow_cid' => '<' . intval($cid) . '>'); @@ -358,6 +361,7 @@ function network_content(&$a, $update = 0) { . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') + . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '') . "'; var profile_page = " . $a->pager['page'] . "; \r\n"; } @@ -371,6 +375,9 @@ function network_content(&$a, $update = 0) { dbesc('\\]' . preg_quote($search) . '\\[') ); } + if(strlen($file)) { + $sql_extra .= file_tag_file_query('item',$file); + } if($conv) { $myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname'];