source: extensions/rv_autocomplete/admin/functions.inc.php @ 27564

Last change on this file since 27564 was 27564, checked in by rvelices, 10 years ago

autocomplete - privacy level for custom suggestions

File size: 3.7 KB
Line 
1<?php
2
3function rvac_invalidate_cache()
4{
5  global $conf;
6  conf_update_param('rvac_version', ++$conf['rvac_version'] );
7  if (rand()%10==0)
8  {
9    foreach (glob(PHPWG_ROOT_PATH.PWG_COMBINED_DIR.'acds-*.js') as $file)
10      @unlink($file);
11  }
12}
13
14function rvac_custom_link(&$suggestion, $roots)
15{
16  $url = $suggestion['url'];
17  if (empty($url))
18  {
19    $q = $suggestion['name'];
20    if ( ($pos=strpos($q,'\\')) !== false )
21    {
22      $q = substr($q, 0, $pos);
23    }
24  }
25  elseif (strncmp($url,'q=',2)==0)
26  {
27    $q = substr($url,2);
28  }
29  else
30  {
31    foreach( $roots as $k => $root)
32      $url = str_replace('$'.$k.'/', $root, $url);
33  }
34
35  if (isset($q))
36  {
37    if ( ($pos=strpos($q,' ')) !== false )
38    {
39      $q = '"'.$q.'"';
40    }
41    $url = get_root_url().'qsearch.php?q='.rawurlencode($q);
42  }
43
44  $suggestion['U_LINK'] = $url;
45  return $suggestion;
46}
47
48function rvac_ws_add_methods($srv_arr)
49{
50        global $conf;
51  $srv = $srv_arr[0];
52  include_once( dirname(__FILE__).'/../functions.inc.php' );
53  $srv->addMethod('rvac.addCustom', 'rv_ac_ws_add_custom_suggestion',
54    array(
55                        'name' => array(),
56                        'counter' => array('default'=>0),
57                        'url' => array('default'=>''),
58                        'level' => array('default'=>min($conf['available_permission_levels']), 'maxValue'=>max($conf['available_permission_levels']),'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
59    ),
60    '','', array('admin_only'=>true, 'post_only'=>true));
61
62  $srv->addMethod('rvac.modCustom', 'rv_ac_ws_mod_custom_suggestion',
63    array(
64      'id' => array(),
65      'name' => array('flags' => WS_PARAM_OPTIONAL),
66      'counter' => array('flags' => WS_PARAM_OPTIONAL),
67      'url' => array('flags' => WS_PARAM_OPTIONAL),
68                        'level' => array('flags' => WS_PARAM_OPTIONAL, 'maxValue'=>max($conf['available_permission_levels']),'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE),
69    ),
70    '','', array('admin_only'=>true, 'post_only'=>true));
71
72  $srv->addMethod('rvac.delCustom', 'rv_ac_ws_del_custom_suggestion',
73    array('id'),
74    '','', array('admin_only'=>true, 'post_only'=>true));
75}
76
77function rv_ac_ws_add_custom_suggestion($params, $service)
78{
79  $name = trim($params['name']);
80  if (empty($name))
81    return new PwgError(400, 'Bad name');
82
83  $insert = array('name'=>$name);
84
85  if (isset($params['counter']))
86    $insert['counter'] = intval($params['counter']);
87  if ( !empty($params['url']) )
88    $insert['url'] = $params['url'];
89  if ( isset($params['level']) )
90    $insert['level'] = $params['level'];
91
92  mass_inserts(RVAC_SUGGESTIONS, array_keys($insert), array($insert));
93  $id =  pwg_db_insert_id(RVAC_SUGGESTIONS);
94
95  rvac_invalidate_cache();
96  $row = pwg_db_fetch_assoc( pwg_query('SELECT * FROM '.RVAC_SUGGESTIONS.' WHERE id='.$id) );
97  rvac_custom_link($row, rvac_get_url_roots());
98  return $row;
99}
100
101function rv_ac_ws_mod_custom_suggestion($params, $service)
102{
103  $id = intval($params['id']);
104  $update = array();
105
106  if (!empty($params['name']))
107    $update['name'] = $params['name'];
108  if (isset($params['counter']))
109    $update['counter'] = intval($params['counter']);
110  if (isset($params['url']))
111    $update['url'] = $params['url'];
112  if ( isset($params['level']) )
113    $update['level'] = $params['level'];
114
115  single_update(RVAC_SUGGESTIONS,
116    $update,
117    array('id' => $id)
118    );
119  $changes = pwg_db_changes();
120
121  if ($changes)
122    rvac_invalidate_cache();
123
124  $row = pwg_db_fetch_assoc( pwg_query('SELECT * FROM '.RVAC_SUGGESTIONS.' WHERE id='.$id) );
125  rvac_custom_link($row, rvac_get_url_roots());
126  return $row;
127}
128
129function rv_ac_ws_del_custom_suggestion($params, $service)
130{
131  $id = intval($params['id']);
132  $q = 'DELETE FROM '.RVAC_SUGGESTIONS.' WHERE id='.$id;
133  pwg_query($q);
134  $changes = pwg_db_changes();
135  if ($changes)
136    rvac_invalidate_cache();
137  return $changes;
138}
139
140?>
Note: See TracBrowser for help on using the repository browser.