[2] | 1 | <?php |
---|
| 2 | /**************************************************************************\ |
---|
| 3 | * eGroupWare API - Select Box 2 * |
---|
| 4 | * Written by Ralf Becker <RalfBecker@outdoor-training.de> * |
---|
| 5 | * Class for creating select boxes for addresse, projects, array items, ... * |
---|
| 6 | * Copyright (C) 2000, 2001 Dan Kuykendall * |
---|
| 7 | * -------------------------------------------------------------------------* |
---|
| 8 | * This library is part of the eGroupWare API * |
---|
| 9 | * http://www.egroupware.org/api * |
---|
| 10 | * ------------------------------------------------------------------------ * |
---|
| 11 | * This library is free software; you can redistribute it and/or modify it * |
---|
| 12 | * under the terms of the GNU Lesser General Public License as published by * |
---|
| 13 | * the Free Software Foundation; either version 2.1 of the License, * |
---|
| 14 | * or any later version. * |
---|
| 15 | * This library is distributed in the hope that it will be useful, but * |
---|
| 16 | * WITHOUT ANY WARRANTY; without even the implied warranty of * |
---|
| 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * |
---|
| 18 | * See the GNU Lesser General Public License for more details. * |
---|
| 19 | * You should have received a copy of the GNU Lesser General Public License * |
---|
| 20 | * along with this library; if not, write to the Free Software Foundation, * |
---|
| 21 | * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * |
---|
| 22 | \**************************************************************************/ |
---|
| 23 | |
---|
| 24 | |
---|
| 25 | if(!isset($GLOBALS['phpgw_info']['flags']['included_classes']['sbox'])) |
---|
| 26 | { |
---|
| 27 | include(PHPGW_API_INC . '/class.sbox.inc.php'); |
---|
| 28 | $GLOBALS['phpgw_info']['flags']['included_classes']['sbox'] = True; |
---|
| 29 | } |
---|
| 30 | |
---|
| 31 | class sbox2 extends sbox |
---|
| 32 | { |
---|
| 33 | /* |
---|
| 34 | * Function: search for an id of an db-entry, eg. an address |
---|
| 35 | * Parameter: $name base name for all template-vars and of the submitted vars (not to conflict with other template-var-names !!!) |
---|
| 36 | * $lang_name titel of the field |
---|
| 37 | * $prompt for the JavaScript prompt() |
---|
| 38 | * $id_name id of previosly selected entry |
---|
| 39 | * $content from id (eg. 'company: lastname, givenname' for address $id) if $id != 0, or |
---|
| 40 | * array with searchresult (id's as key), if array is empty if search was unsucsessful |
---|
| 41 | * $multipe present a multiple selectable box instead of one selector-button |
---|
| 42 | * Returns: array with vars to set in temaplate, the vars are: |
---|
| 43 | * {doSearchFkt} Javascript Funktion, place somewhere in Template (before rest of the vars) |
---|
| 44 | * {$name.'_title} button with titel $lang_name (if JS) or just $lang_name |
---|
| 45 | * {$name} content of $id if != 0, or lang('use Button to search for').$lang_name |
---|
| 46 | * {$name.'_nojs} searchfield + button if we have no JavaScript, else empty |
---|
| 47 | * |
---|
| 48 | * To use call $template->set_var(getIdSearch( ... )); |
---|
| 49 | * the template should look like {doSearchFkt} <tr><td>{XXX_title}</td><td>{XXX}</td><td>{XXX_nojs}</td></tr> (XXX is content of $name) |
---|
| 50 | * In the submitted page the vars $query_XXX and $id_XXX are set according to what is selected, see getAddress as Example |
---|
| 51 | */ |
---|
| 52 | |
---|
| 53 | function sbox2() |
---|
| 54 | { |
---|
| 55 | $this->sbox(); // call constructor extended class |
---|
| 56 | } |
---|
| 57 | |
---|
| 58 | function getId($name,$lang_name,$prompt,$id_name,$content='',$note='',$multiple=False) |
---|
| 59 | { |
---|
| 60 | // echo "<p>getId('$name','$lang_name','$prompt',$id_name,'$content') ="; |
---|
| 61 | $ret['doSearchFkt'] = |
---|
| 62 | '<script language="JavaScript">'."\n". |
---|
| 63 | " function doSearch(field,ask) {\n". |
---|
| 64 | " field.value = prompt(ask,'');\n". |
---|
| 65 | " if (field.value != 'null') {\n". |
---|
| 66 | " if (field.value.length == 0)\n". |
---|
| 67 | " field.value = '%';\n". |
---|
| 68 | " field.form.submit();\n". |
---|
| 69 | " } else\n". |
---|
| 70 | " field.value = ''\n". |
---|
| 71 | " }\n". |
---|
| 72 | '</script>'; |
---|
| 73 | |
---|
| 74 | $ret[$name.'_title'] = is_array($content) && count($content) ? $lang_name : |
---|
| 75 | '<script language="JavaScript">'."\n". |
---|
| 76 | " document.writeln('<input type=\"hidden\" name=\"query_$name\" value=\"\">');\n". |
---|
| 77 | " document.writeln('<input type=\"button\" onClick=\"doSearch(this.form.query_$name,\'$prompt\')\" value=\"$lang_name\">');\n". |
---|
| 78 | "</script>\n". |
---|
| 79 | "<noscript>\n". |
---|
| 80 | " $lang_name\n". |
---|
| 81 | "</noscript>"; |
---|
| 82 | |
---|
| 83 | if (is_array($content)) |
---|
| 84 | { |
---|
| 85 | // result from search |
---|
| 86 | if (!count($content)) |
---|
| 87 | { |
---|
| 88 | // search was unsuccsessful |
---|
| 89 | $ret[$name] = lang('no entries found, try again ...'); |
---|
| 90 | } |
---|
| 91 | else |
---|
| 92 | { |
---|
| 93 | $ret[$name.'_OK'] = ''; // flag we have something so select |
---|
| 94 | if ($multiple) |
---|
| 95 | { |
---|
| 96 | $ret[$name] = '<select name="id_'.$name.'[]" size=10 multiple>'."\n"; |
---|
| 97 | } |
---|
| 98 | else |
---|
| 99 | { |
---|
| 100 | $ret[$name] = '<select name="id_'.$name.'">'."\n"; |
---|
| 101 | } |
---|
| 102 | while (list( $id,$text ) = each( $content )) |
---|
| 103 | { |
---|
| 104 | $ret[$name] .= "<option value=\"$id\">" . $GLOBALS['phpgw']->strip_html($text) . "\n"; |
---|
| 105 | } |
---|
| 106 | $ret[$name] .= '<option value="0">'.lang('none')."\n"; |
---|
| 107 | $ret[$name] .= '</select>'; |
---|
| 108 | } |
---|
| 109 | } |
---|
| 110 | else |
---|
| 111 | { |
---|
| 112 | if ($id_name) |
---|
| 113 | { |
---|
| 114 | $ret[$name] = $content . "\n<input type=\"hidden\" name=\"id_$name\" value=\"$id_name\">"; |
---|
| 115 | } |
---|
| 116 | else |
---|
| 117 | { |
---|
| 118 | $ret[$name] = "<span class=note>$note</span>"; |
---|
| 119 | } |
---|
| 120 | } |
---|
| 121 | |
---|
| 122 | $ret[$name.'_nojs'] = |
---|
| 123 | "<noscript>\n". |
---|
| 124 | " <input name=\"query_$name\" value=\"\" size=10> <input type=\"submit\" value=\"?\">\n". |
---|
| 125 | "</noscript>"; |
---|
| 126 | |
---|
| 127 | // print_r($ret); |
---|
| 128 | return $ret; |
---|
| 129 | } |
---|
| 130 | |
---|
| 131 | function event2name( $event ) |
---|
| 132 | { |
---|
| 133 | if (!is_object($this->bocal)) |
---|
| 134 | { |
---|
| 135 | $this->bocal = createobject('calendar.bocalendar'); |
---|
| 136 | } |
---|
| 137 | if (!is_array($event) && (int)$event > 0) |
---|
| 138 | { |
---|
| 139 | $event = $this->bocal->read_entry($event); |
---|
| 140 | } |
---|
| 141 | if (!is_array($event)) |
---|
| 142 | { |
---|
| 143 | return 'not an event !!!'; |
---|
| 144 | } |
---|
| 145 | $name = $GLOBALS['phpgw']->common->show_date($this->bocal->maketime($event['start']) - $this->bocal->datetime->tz_offset); |
---|
| 146 | $name .= ' -- ' . $GLOBALS['phpgw']->common->show_date($this->bocal->maketime($event['end']) - $this->bocal->datetime->tz_offset); |
---|
| 147 | $name .= ': ' . $event['title']; |
---|
| 148 | |
---|
| 149 | return $GLOBALS['phpgw']->strip_html($name); |
---|
| 150 | } |
---|
| 151 | |
---|
| 152 | /* |
---|
| 153 | * Function Allows you to show and select an event from the calendar (works with and without javascript !!!) |
---|
| 154 | * Parameters $name string with basename of all variables (not to conflict with the name other template or submitted vars !!!) |
---|
| 155 | * $id_name id of the address for edit or 0 if none selected so far |
---|
| 156 | * $query_name have to be called $query_XXX, the search pattern after the submit, has to be passed back to the function |
---|
| 157 | * $multipe present a multiple selectable box instead of one selector-button |
---|
| 158 | * On Submit $id_XXX contains the selected event (if != 0) |
---|
| 159 | * $query_XXX search pattern if the search button is pressed by the user, or '' if regular submit |
---|
| 160 | * Returns array with vars to set for the template, set with: $template->set_var( getEvent( ... )); (see getId( )) |
---|
| 161 | * |
---|
| 162 | * Note As query's for an event are submitted, you have to check $query_XXX if it is a search or a regular submit (!$query_string) |
---|
| 163 | */ |
---|
| 164 | function getEvent( $name,$id_name,$query_name,$title='',$multiple=False) |
---|
| 165 | { |
---|
| 166 | // echo "<p>getEvent('$name',$id_name,'$query_name','$title')</p>"; |
---|
| 167 | |
---|
| 168 | // fallback if calendar is not installed or not enabled for user |
---|
| 169 | if (!file_exists(PHPGW_SERVER_ROOT.'/calendar') || !$GLOBALS['phpgw_info']['user']['apps']['calendar']['enabled']) |
---|
| 170 | { |
---|
| 171 | return array( |
---|
| 172 | $name => "<input type=\"hidden\" name=\"id_$name\" value=\"$id_name\">\n", |
---|
| 173 | $name.'_no_js' => '', |
---|
| 174 | $name.'_title' => '' |
---|
| 175 | ); |
---|
| 176 | } |
---|
| 177 | if ($id_name || $query_name) |
---|
| 178 | { |
---|
| 179 | if (!is_object($this->bocal)) |
---|
| 180 | { |
---|
| 181 | $this->bocal = createobject('calendar.bocalendar'); |
---|
| 182 | } |
---|
| 183 | if ($query_name) |
---|
| 184 | { |
---|
| 185 | $event_ids = $this->bocal->search_keywords($query_name); |
---|
| 186 | $content = array( ); |
---|
| 187 | while ($event_ids && list( $key,$id ) = each( $event_ids )) |
---|
| 188 | { |
---|
| 189 | $content[$id] = $this->event2name( $id ); |
---|
| 190 | } |
---|
| 191 | } |
---|
| 192 | else |
---|
| 193 | { |
---|
| 194 | $event = $this->bocal->read_entry( $id_name ); |
---|
| 195 | if ($event && is_array($event)) |
---|
| 196 | { |
---|
| 197 | $content = $this->event2name( $event ); |
---|
| 198 | } |
---|
| 199 | } |
---|
| 200 | } |
---|
| 201 | if (!$title) |
---|
| 202 | { |
---|
| 203 | $title = lang('Calendar'); |
---|
| 204 | } |
---|
| 205 | return $this->getId($name,$title,lang('Pattern for Search in Calendar'),$id_name,$content,lang('use Button to search for Calendarevent'),$multiple); |
---|
| 206 | } |
---|
| 207 | |
---|
| 208 | function addr2name( $addr ) |
---|
| 209 | { |
---|
| 210 | $name = $addr['n_family']; |
---|
| 211 | if ($addr['n_given']) |
---|
| 212 | { |
---|
| 213 | $name .= ', '.$addr['n_given']; |
---|
| 214 | } |
---|
| 215 | else |
---|
| 216 | { |
---|
| 217 | if ($addr['n_prefix']) |
---|
| 218 | { |
---|
| 219 | $name .= ', '.$addr['n_prefix']; |
---|
| 220 | } |
---|
| 221 | } |
---|
| 222 | if ($addr['org_name']) |
---|
| 223 | { |
---|
| 224 | $name = $addr['org_name'].': '.$name; |
---|
| 225 | } |
---|
| 226 | return $GLOBALS['phpgw']->strip_html($name); |
---|
| 227 | } |
---|
| 228 | |
---|
| 229 | /* |
---|
| 230 | * Function Allows you to show and select an address from the addressbook (works with and without javascript !!!) |
---|
| 231 | * Parameters $name string with basename of all variables (not to conflict with the name other template or submitted vars !!!) |
---|
| 232 | * $id_name id of the address for edit or 0 if none selected so far |
---|
| 233 | * $query_name have to be called $query_XXX, the search pattern after the submit, has to be passed back to the function |
---|
| 234 | * $multipe present a multiple selectable box instead of one selector-button |
---|
| 235 | * On Submit $id_XXX contains the selected address (if != 0) |
---|
| 236 | * $query_XXX search pattern if the search button is pressed by the user, or '' if regular submit |
---|
| 237 | * Returns array with vars to set for the template, set with: $template->set_var( getAddress( ... )); (see getId( )) |
---|
| 238 | * |
---|
| 239 | * Note As query's for an address are submitted, you have to check $query_XXX if it is a search or a regular submit (!$query_string) |
---|
| 240 | */ |
---|
| 241 | function getAddress( $name,$id_name,$query_name,$title='',$multiple=False) |
---|
| 242 | { |
---|
| 243 | // echo "<p>getAddress('$name',$id_name,'$query_name','$title')</p>"; |
---|
| 244 | if ($id_name || $query_name) |
---|
| 245 | { |
---|
| 246 | $contacts = createobject('phpgwapi.contacts'); |
---|
| 247 | |
---|
| 248 | if ($query_name) |
---|
| 249 | { |
---|
| 250 | $addrs = $contacts->read( 0,0,'',$query_name,'','DESC','org_name,n_family,n_given' ); |
---|
| 251 | $content = array( ); |
---|
| 252 | while ($addrs && list( $key,$addr ) = each( $addrs )) |
---|
| 253 | { |
---|
| 254 | $content[$addr['id']] = $this->addr2name( $addr ); |
---|
| 255 | } |
---|
| 256 | } |
---|
| 257 | else |
---|
| 258 | { |
---|
| 259 | list( $addr ) = $contacts->read_single_entry( $id_name ); |
---|
| 260 | if (count($addr)) |
---|
| 261 | { |
---|
| 262 | $content = $this->addr2name( $addr ); |
---|
| 263 | } |
---|
| 264 | } |
---|
| 265 | } |
---|
| 266 | if (!$title) |
---|
| 267 | { |
---|
| 268 | $title = lang('Addressbook'); |
---|
| 269 | } |
---|
| 270 | return $this->getId($name,$title,lang('Pattern for Search in Addressbook'),$id_name,$content,lang('use Button to search for Address'),$multiple); |
---|
| 271 | } |
---|
| 272 | |
---|
| 273 | function addr2email($addr,$home='') |
---|
| 274 | { |
---|
| 275 | if (!is_array($addr)) |
---|
| 276 | { |
---|
| 277 | $home = substr($addr,-1) == 'h'; |
---|
| 278 | $contacts = createobject('phpgwapi.contacts'); |
---|
| 279 | list($addr) = $contacts->read_single_entry((int)$addr); |
---|
| 280 | } |
---|
| 281 | if ($home) |
---|
| 282 | { |
---|
| 283 | $home = '_home'; |
---|
| 284 | } |
---|
| 285 | |
---|
| 286 | if (!count($addr) || !$addr['email'.$home]) |
---|
| 287 | { |
---|
| 288 | return False; |
---|
| 289 | } |
---|
| 290 | |
---|
| 291 | if ($addr['n_given']) |
---|
| 292 | { |
---|
| 293 | $name = $addr['n_given']; |
---|
| 294 | } |
---|
| 295 | else |
---|
| 296 | { |
---|
| 297 | if ($addr['n_prefix']) |
---|
| 298 | { |
---|
| 299 | $name = $addr['n_prefix']; |
---|
| 300 | } |
---|
| 301 | } |
---|
| 302 | $name .= ($name ? ' ' : '') . $addr['n_family']; |
---|
| 303 | |
---|
| 304 | return $name.' <'.$addr['email'.$home].'>'; |
---|
| 305 | } |
---|
| 306 | |
---|
| 307 | function getEmail( $name,$id_name,$query_name,$title='') |
---|
| 308 | { |
---|
| 309 | // echo "<p>getAddress('$name',$id_name,'$query_name','$title')</p>"; |
---|
| 310 | if ($id_name || $query_name) |
---|
| 311 | { |
---|
| 312 | $contacts = createobject('phpgwapi.contacts'); |
---|
| 313 | |
---|
| 314 | if ($query_name) |
---|
| 315 | { |
---|
| 316 | $addrs = $contacts->read( 0,0,'',$query_name,'','DESC','org_name,n_family,n_given' ); |
---|
| 317 | $content = array( ); |
---|
| 318 | while ($addrs && list( $key,$addr ) = each( $addrs )) |
---|
| 319 | { |
---|
| 320 | if ($addr['email']) |
---|
| 321 | { |
---|
| 322 | $content[$addr['id']] = $this->addr2email( $addr ); |
---|
| 323 | } |
---|
| 324 | if ($addr['email_home']) |
---|
| 325 | { |
---|
| 326 | $content[$addr['id'].'h'] = $this->addr2email( $addr,'_home' ); |
---|
| 327 | } |
---|
| 328 | } |
---|
| 329 | } |
---|
| 330 | else |
---|
| 331 | { |
---|
| 332 | $content = $this->addr2email( $id_name ); |
---|
| 333 | } |
---|
| 334 | } |
---|
| 335 | if (!$title) |
---|
| 336 | { |
---|
| 337 | $title = lang('Addressbook'); |
---|
| 338 | } |
---|
| 339 | |
---|
| 340 | return $this->getId($name,$title,lang('Pattern for Search in Addressbook'),$id_name,$content); |
---|
| 341 | } |
---|
| 342 | |
---|
| 343 | /* |
---|
| 344 | * Function Allows you to show and select an project from the projects-app (works with and without javascript !!!) |
---|
| 345 | * Parameters $name string with basename of all variables (not to conflict with the name other template or submitted vars !!!) |
---|
| 346 | * $id_name id of the project for edit or 0 if none selected so far |
---|
| 347 | * $query_name have to be called $query_XXX, the search pattern after the submit, has to be passed back to the function |
---|
| 348 | * On Submit $id_XXX contains the selected address (if != 0) |
---|
| 349 | * $query_XXX search pattern if the search button is pressed by the user, or '' if regular submit |
---|
| 350 | * Returns array with vars to set for the template, set with: $template->set_var( getProject( ... )); (see getId( )) |
---|
| 351 | * |
---|
| 352 | * Note As query's for an address are submitted, you have to check $query_XXX if it is a search or a regular submit (!$query_string) |
---|
| 353 | */ |
---|
| 354 | function getProject( $name,$id_name,$query_name,$title='' ) |
---|
| 355 | { |
---|
| 356 | // echo "<p>getProject('$name',$id_name,'$query_name','$title')</p>"; |
---|
| 357 | |
---|
| 358 | // fallback if projects is not installed or not enabled for user |
---|
| 359 | if (!file_exists(PHPGW_SERVER_ROOT.'/projects') || !$GLOBALS['phpgw_info']['user']['apps']['projects']['enabled']) |
---|
| 360 | { |
---|
| 361 | return array( |
---|
| 362 | $name => "<input type=\"hidden\" name=\"id_$name\" value=\"$id_name\">\n", |
---|
| 363 | $name.'_no_js' => '', |
---|
| 364 | $name.'_title' => '' |
---|
| 365 | ); |
---|
| 366 | } |
---|
| 367 | if ($id_name || $query_name) |
---|
| 368 | { |
---|
| 369 | $projects = createobject('projects.boprojects'); |
---|
| 370 | if (!is_object($projects)) |
---|
| 371 | { |
---|
| 372 | return ''; |
---|
| 373 | } |
---|
| 374 | if ($query_name) |
---|
| 375 | { |
---|
| 376 | $projs = $projects->list_projects( 0,0,$query_name,'','','','',0,'mains','' ); |
---|
| 377 | $content = array(); |
---|
| 378 | while ($projs && list( $key,$proj ) = each( $projs )) |
---|
| 379 | { |
---|
| 380 | $content[$proj['project_id']] = $proj['title']; |
---|
| 381 | } |
---|
| 382 | } |
---|
| 383 | else |
---|
| 384 | { |
---|
| 385 | if ($proj = $projects->read_single_project( $id_name )) |
---|
| 386 | { |
---|
| 387 | $content = $proj['title']; |
---|
| 388 | // $customer_id = $proj['customer']; |
---|
| 389 | } |
---|
| 390 | } |
---|
| 391 | } |
---|
| 392 | if (!$title) |
---|
| 393 | { |
---|
| 394 | $title = lang('Project'); |
---|
| 395 | } |
---|
| 396 | |
---|
| 397 | return $this->getId($name,$title,lang('Pattern for Search in Projects'),$id_name,$content,lang('use Button to search for Project')); |
---|
| 398 | } |
---|
| 399 | |
---|
| 400 | /* |
---|
| 401 | * Function: Allows to show and select one item from an array |
---|
| 402 | * Parameters: $name string with name of the submitted var which holds the key of the selected item form array |
---|
| 403 | * $key key(s) of already selected item(s) from $arr, eg. '1' or '1,2' or array with keys |
---|
| 404 | * $arr array with items to select, eg. $arr = array ( 'y' => 'yes','n' => 'no','m' => 'maybe'); |
---|
| 405 | * $no_lang if !$no_lang send items through lang() |
---|
| 406 | * $options additional options (e.g. 'multiple') |
---|
| 407 | * On submit $XXX is the key of the selected item (XXX is the content of $name) |
---|
| 408 | * Returns: string to set for a template or to echo into html page |
---|
| 409 | */ |
---|
| 410 | function getArrayItem($name, $key, $arr=0,$no_lang=0,$options='',$multiple=0) |
---|
| 411 | { |
---|
| 412 | // should be in class common.sbox |
---|
| 413 | if (!is_array($arr)) |
---|
| 414 | { |
---|
| 415 | $arr = array('no','yes'); |
---|
| 416 | } |
---|
| 417 | if (0+$multiple > 0) |
---|
| 418 | { |
---|
| 419 | $options .= ' MULTIPLE SIZE='.(0+$multiple); |
---|
| 420 | if (substr($name,-2) != '[]') |
---|
| 421 | { |
---|
| 422 | $name .= '[]'; |
---|
| 423 | } |
---|
| 424 | } |
---|
| 425 | $out = "<select name=\"$name\" $options>\n"; |
---|
| 426 | |
---|
| 427 | if (is_array($key)) |
---|
| 428 | { |
---|
| 429 | $key = implode(',',$key); |
---|
| 430 | } |
---|
| 431 | while (list($k,$text) = each($arr)) |
---|
| 432 | { |
---|
| 433 | $out .= '<option value="'.$k.'"'; |
---|
| 434 | if($k == $key || strstr(",$key,",",$k,")) |
---|
| 435 | { |
---|
| 436 | $out .= " SELECTED"; |
---|
| 437 | } |
---|
| 438 | $out .= ">" . ($no_lang || $text == '' ? $text : lang($text)) . "</option>\n"; |
---|
| 439 | } |
---|
| 440 | $out .= "</select>\n"; |
---|
| 441 | |
---|
| 442 | return $out; |
---|
| 443 | } |
---|
| 444 | |
---|
| 445 | function getPercentage($name, $selected=0,$options='') |
---|
| 446 | { |
---|
| 447 | // reimplemented using getArrayItem |
---|
| 448 | for ($i=0; $i <= 100; $i+=10) |
---|
| 449 | { |
---|
| 450 | $arr[$i] = "$i%"; |
---|
| 451 | } |
---|
| 452 | return $this->getArrayItem($name,$selected,$arr,1,$options); |
---|
| 453 | } |
---|
| 454 | |
---|
| 455 | function getPriority($name, $selected=2,$options='') |
---|
| 456 | { |
---|
| 457 | // reimplemented using getArrayItem |
---|
| 458 | $arr = array('','low','normal','high'); |
---|
| 459 | |
---|
| 460 | return $this->getArrayItem($name,$selected,$arr,0,$options); |
---|
| 461 | } |
---|
| 462 | |
---|
| 463 | function getAccessList($name,$selected='private',$options='') |
---|
| 464 | { |
---|
| 465 | // reimplemented using getArrayItem |
---|
| 466 | $arr = array( |
---|
| 467 | 'private' => 'Private', |
---|
| 468 | 'public' => 'Global public', |
---|
| 469 | 'group' => 'Group public' |
---|
| 470 | ); |
---|
| 471 | |
---|
| 472 | if (strstr($selected,',')) |
---|
| 473 | { |
---|
| 474 | $selected = "group"; |
---|
| 475 | } |
---|
| 476 | |
---|
| 477 | return $this->getArrayItem($name,$selected,$arr,0,$options); |
---|
| 478 | } |
---|
| 479 | |
---|
| 480 | function getCountry($name='country',$selected=' ',$options='') |
---|
| 481 | { |
---|
| 482 | // reimplemented using getArrayItem |
---|
| 483 | return $this->getArrayItem($name,$selected,$this->country_array,0,$options); |
---|
| 484 | } |
---|
| 485 | |
---|
| 486 | function form_select($name='country',$selected=' ',$options='') |
---|
| 487 | { |
---|
| 488 | // reimplemented using getArrayItem (stupid name!!!) |
---|
| 489 | return getCountry($name,$selected,$options); |
---|
| 490 | } |
---|
| 491 | |
---|
| 492 | function accountInfo($id,$account_data=0,$longnames=0,$show_type=0) |
---|
| 493 | { |
---|
| 494 | if (!$id) |
---|
| 495 | { |
---|
| 496 | return ' '; |
---|
| 497 | } |
---|
| 498 | |
---|
| 499 | if (!is_array($account_data)) |
---|
| 500 | { |
---|
| 501 | $accounts = createobject('phpgwapi.accounts',$id); |
---|
| 502 | $accounts->db = $GLOBALS['phpgw']->db; |
---|
| 503 | $accounts->read_repository(); |
---|
| 504 | $account_data = $accounts->data; |
---|
| 505 | } |
---|
| 506 | $info = $show_type ? '('.$account_data['account_type'].') ' : ''; |
---|
| 507 | |
---|
| 508 | switch ($longnames) |
---|
| 509 | { |
---|
| 510 | case 2: $info .= '<'.$account_data['account_lid'].'> '; // fall-through |
---|
| 511 | case 1: $info .= $account_data['account_firstname'].' '.$account_data['account_lastname']; break; |
---|
| 512 | default: $info .= $account_data['account_lid']; break; |
---|
| 513 | } |
---|
| 514 | return $info; |
---|
| 515 | } |
---|
| 516 | |
---|
| 517 | /* |
---|
| 518 | * Function: Allows to select one accountname |
---|
| 519 | * Parameters: $name string with name of the submitted var, which holds the account_id or 0 after submit |
---|
| 520 | * $id account_id of already selected account |
---|
| 521 | * $longnames -1=as user prefs, 0=account_lid 1=firstname lastname |
---|
| 522 | */ |
---|
| 523 | function getAccount($name,$id,$longnames=-1,$type='accounts',$multiple=0,$options='') |
---|
| 524 | { |
---|
| 525 | $accs = $GLOBALS['phpgw']->accounts->get_list($type); |
---|
| 526 | |
---|
| 527 | if ($multiple < 0) |
---|
| 528 | { |
---|
| 529 | $aarr[] = lang('not assigned'); |
---|
| 530 | } |
---|
| 531 | while ($a = current($accs)) |
---|
| 532 | { |
---|
| 533 | $aarr[$a['account_id']] = $longnames == -1 ? |
---|
| 534 | $GLOBALS['phpgw']->common->display_fullname($a['account_lid'],$a['account_firstname'],$a['account_lastname']) : |
---|
| 535 | $this->accountInfo($a['account_id'],$a,$longnames,$type=='both'); |
---|
| 536 | |
---|
| 537 | next($accs); |
---|
| 538 | } |
---|
| 539 | return $this->getArrayItem($name,$id,$aarr,1,$options,$multiple); |
---|
| 540 | } |
---|
| 541 | |
---|
| 542 | function getDate($n_year,$n_month,$n_day,$date,$options='') |
---|
| 543 | { |
---|
| 544 | if (is_array($date)) |
---|
| 545 | { |
---|
| 546 | list($year,$month,$day) = $date; |
---|
| 547 | } |
---|
| 548 | elseif (!$date) |
---|
| 549 | { |
---|
| 550 | $day = $month = $year = 0; |
---|
| 551 | } |
---|
| 552 | else |
---|
| 553 | { |
---|
| 554 | $day = date('d',$date); |
---|
| 555 | $month = date('m',$date); |
---|
| 556 | $year = date('Y',$date); |
---|
| 557 | } |
---|
| 558 | return $GLOBALS['phpgw']->common->dateformatorder( |
---|
| 559 | $this->getYears($n_year,$year), |
---|
| 560 | $this->getMonthText($n_month,$month), |
---|
| 561 | $this->getDays($n_day,$day) |
---|
| 562 | ); |
---|
| 563 | } |
---|
| 564 | |
---|
| 565 | function getCategory($name,$cat_id='',$notall=False,$jscript=True,$multiple=0,$options='') |
---|
| 566 | { |
---|
| 567 | if (!is_object($this->cat)) |
---|
| 568 | { |
---|
| 569 | $this->cat = CreateObject('phpgwapi.categories'); |
---|
| 570 | } |
---|
| 571 | if ($jscript) |
---|
| 572 | { |
---|
| 573 | $options .= ' onChange="this.form.submit();"'; |
---|
| 574 | } |
---|
| 575 | if (0+$multiple > 0) |
---|
| 576 | { |
---|
| 577 | $options .= ' MULTIPLE SIZE='.(0+$multiple); |
---|
| 578 | if (substr($name,-2) != '[]') |
---|
| 579 | { |
---|
| 580 | $name .= '[]'; |
---|
| 581 | } |
---|
| 582 | } |
---|
| 583 | /* Setup all and none first */ |
---|
| 584 | $cats_link = "\n<SELECT NAME=\"$name\" $options>\n"; |
---|
| 585 | |
---|
| 586 | if (!$notall) |
---|
| 587 | { |
---|
| 588 | $cats_link .= '<option value=""'; |
---|
| 589 | if ($cat_id=='all') |
---|
| 590 | { |
---|
| 591 | $cats_link .= ' selected'; |
---|
| 592 | } |
---|
| 593 | $cats_link .= '>'.lang("all")."</option>\n"; |
---|
| 594 | } |
---|
| 595 | |
---|
| 596 | /* Get global and app-specific category listings */ |
---|
| 597 | $cats_link .= $this->cat->formatted_list('select','all',$cat_id,True); |
---|
| 598 | $cats_link .= '</select>'."\n"; |
---|
| 599 | |
---|
| 600 | return $cats_link; |
---|
| 601 | } |
---|
| 602 | } |
---|