home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / groupoffice-com-2.01 / configuration / groups / group.php next >
PHP Script  |  2004-03-08  |  10KB  |  333 lines

  1. <?php
  2. /*
  3. Copyright Intermesh 2003
  4. Author: Merijn Schering <mschering@intermesh.nl>
  5. Version: 1.0 Release date: 08 July 2003
  6.  
  7. This program is free software; you can redistribute it and/or modify it
  8. under the terms of the GNU General Public License as published by the
  9. Free Software Foundation; either version 2 of the License, or (at your
  10. option) any later version.
  11. */
  12. require("../../Group-Office.php");
  13. $GO_SECURITY->authenticate();
  14. require($GO_LANGUAGE->get_language_file('groups'));
  15. //load group management class
  16. require($GO_CONFIG->class_path."groups.class.inc");
  17. $groups = new groups();
  18.  
  19. //load contact management class
  20. require($GO_CONFIG->class_path."users.class.inc");
  21. $users = new users();
  22.  
  23. $task = isset($_REQUEST['task']) ? $_REQUEST['task'] : '';
  24. $group_users = isset($_REQUEST['group_users']) ? $_REQUEST['group_users'] : array();
  25.  
  26. if ($_SERVER['REQUEST_METHOD'] == "POST")
  27. {
  28.     if (isset($_REQUEST['search_field']))
  29.     {
  30.         SetCookie("user_search_field",$_REQUEST['search_field'],time()+3600*24*365,"/","",0);
  31.         $_COOKIE['user_search_field'] = $_REQUEST['search_field'];
  32.     }
  33.  
  34.     if ($_POST['group_id'] != 0 && !$groups->user_owns_group($GO_SECURITY->user_id, $_POST['group_id']))
  35.     {
  36.         $feedback = '<p class="Error">'.$strAccessDenied.'</p>';
  37.         $task = '';
  38.     }else
  39.     {
  40.         switch ($task)
  41.         {
  42.             case 'delete_users':
  43.                 for ($i=0;$i<count($group_users);$i++)
  44.                 {
  45.                     $groups->delete_user_from_group($group_users[$i],$_POST['group_id']);
  46.                 }
  47.             break;
  48.  
  49.             case 'save_add_users':
  50.                 for ($i=0;$i<count($group_users);$i++)
  51.                 {
  52.                     if (!$groups->is_in_group($group_users[$i], $_POST['group_id']))
  53.                     {
  54.                         $groups->add_user_to_group($group_users[$i],$_POST['group_id']);
  55.                     }
  56.                 }
  57.             break;
  58.  
  59.             case 'save_group_name':
  60.                 $group_name = trim($_POST['group_name']);
  61.  
  62.                 if ($group_name != "")
  63.                 {
  64.                     if (validate_input($group_name))
  65.                     {
  66.                         if ($_POST['group_id'] == '0')
  67.                         {
  68.                             if (!$groups->get_group_by_name($group_name))
  69.                             {
  70.                                 if (!$_REQUEST['group_id'] = $groups->add_group($GO_SECURITY->user_id, $group_name))
  71.                                 {
  72.                                     $_REQUEST['group_id'] = 0;
  73.                                     $feedback = "<p class=\"Error\">".$add_group_fail."</p>";
  74.                                 }else
  75.                                 {
  76.                                     if ($_POST['close'] == 'true')
  77.                                     {
  78.                                         header('Location: '.$GO_CONFIG->host.'configuration/groups/index.php');
  79.                                         exit();
  80.                                     }
  81.                                 }
  82.                             }else
  83.                             {
  84.                                 $feedback = "<p class=\"Error\">".$add_group_exists."</p>";
  85.                             }
  86.                         }else
  87.                         {
  88.                             $existing_group = $groups->get_group_by_name($group_name);
  89.  
  90.                             if($existing_group && $existing_group['id'] != $_POST['group_id'])
  91.                             {
  92.                                 $feedback = "<p class=\"Error\">".$add_group_exists."</p>";
  93.                             }else
  94.                             {
  95.                                 $groups->update_group($_POST['group_id'], $group_name);
  96.  
  97.                                 if ($_POST['close'] == 'true')
  98.                                 {
  99.                                     header('Location: '.$GO_CONFIG->host.'configuration/groups/index.php');
  100.                                     exit();
  101.                                 }
  102.                             }
  103.                         }
  104.                     }else
  105.                     {
  106.                         $feedback = "<p class=\"Error\">".$invalid_chars.": \\ / ? & \"</p>";
  107.                     }
  108.  
  109.                 }else
  110.                 {
  111.                     $feedback = "<p class=\"Error\">".$add_group_no_name."</p>";
  112.                 }
  113.             break;
  114.         }
  115.     }
  116. }
  117.  
  118. if (!isset($_REQUEST['group_id']))
  119. {
  120.     $group_name = $groups_new_group;
  121.     $group_id = 0;
  122. }else
  123. {
  124.     $group = $groups->get_group($_REQUEST['group_id']);
  125.     $group_name = $group['name'];
  126.     $group_id = $_REQUEST['group_id'];
  127. }
  128.  
  129. if ($group_id == $groups->group_everyone)
  130. {
  131.     $feedback = '<p class="Error">'.$groups_everyone.'</p>';
  132.     $enabled = false;
  133.     $disabled = 'disabled';
  134. }elseif($group_id != 0 && !$groups->user_owns_group($GO_SECURITY->user_id, $group_id))
  135. {
  136.     $enabled = false;
  137.     $disabled = 'disabled';
  138. }else
  139. {
  140.     $disabled = '';
  141.     $enabled = true;
  142. }
  143.  
  144. $page_title = $groups_title;
  145. require($GO_THEME->theme_path."header.inc");
  146.  
  147. $tabtable = new tabtable('group_tab', $group_name, '600', '300');
  148. ?>
  149. <form name="group" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  150. <input type="hidden" name="group_id" value="<?php echo $group_id; ?>" />
  151. <input type="hidden" name="task" value="" />
  152. <input type="hidden" name="close" value="false" />
  153. <?php
  154. $tabtable->print_head();
  155. if ($task == 'add_users')
  156. {
  157.     echo '<table border="0" cellpadding="0" cellspacing="3">';
  158.  
  159.     if (isset($feedback))
  160.     {
  161.         echo '<tr><td>'.$feedback.'</td></tr>';
  162.     }
  163.     echo '<tr><td>';
  164.  
  165.     $_COOKIE['user_search_field'] = isset($_COOKIE['user_search_field']) ? $_COOKIE['user_search_field'] : 'first_name';
  166.     $search_field = isset($_POST['search_field']) ? $_POST['search_field'] : $_COOKIE['user_search_field'];
  167.  
  168.     $dropbox = new dropbox();
  169.     $dropbox->add_value('first_name', $strFirstName);
  170.     $dropbox->add_value('last_name', $strLastName);
  171.     $dropbox->add_value('email', $strEmail);
  172.     $dropbox->add_value('company', $strCompany);
  173.     $dropbox->add_value('department',$strDepartment);
  174.     $dropbox->add_value('function',$strFunction);
  175.     $dropbox->add_value('address',$strAddress);
  176.     $dropbox->add_value('city', $strCity);
  177.     $dropbox->add_value('zip',$strZip);
  178.     $dropbox->add_value('state',$strState);
  179.     $dropbox->add_value('country', $strCountry);
  180.     $dropbox->add_value('work_address',$strWorkAddress);
  181.     $dropbox->add_value('work_cip',$strWorkZip);
  182.     $dropbox->add_value('work_city',$strWorkCity);
  183.     $dropbox->add_value('work_state',$strWorkState);
  184.     $dropbox->add_value('work_country',$strWorkCountry);
  185.     $dropbox->print_dropbox('search_field', $search_field);
  186.  
  187.     echo '</td><td><input type="text" name="query" size="31" maxlength="255" class="textbox" value="';
  188.     if (isset($_REQUEST['query'])) echo $_REQUEST['query'];
  189.     echo '"></td></tr>';
  190.     echo '<tr><td colspan="2">';
  191.     echo '<table><tr><td>';
  192.     $button = new button($cmdSearch, 'javascript:add_users()');
  193.     echo '</td><td>';
  194.     $button = new button($cmdShowAll, "javascript:document.group.query.value='';add_users()");
  195.     echo '</td><td>';
  196.     $button = new button($cmdCancel, 'javascript:return_to_group()');
  197.     echo '</td></tr></table>';
  198.     echo '</td></tr></table>';
  199.  
  200.     if (isset($_REQUEST['query']))
  201.     {
  202.         echo '<table border="0" cellpadding="3" cellspacing="0"><tr><td>';
  203.         if ($_REQUEST['query'] != '')
  204.         {
  205.             $users->search('%'.$_REQUEST['query'].'%', $search_field, $GO_SECURITY->user_id);
  206.         }else
  207.         {
  208.             $users->get_authorized_users($GO_SECURITY->user_id);
  209.         }
  210.  
  211.         echo '<select name="group_users[]" multiple="true" style="width: 250px;height: 200px;" class="textbox">';
  212.  
  213.         while ($users->next_record())
  214.         {
  215.             $middle_name = $users->f('middle_name') == '' ? '' : $users->f('middle_name').' ';
  216.             $name = $users->f('first_name').' '.$middle_name.$users->f('last_name');
  217.  
  218.             echo '<option value="'.$users->f('id').'">'.$name.'</option>';
  219.         }
  220.         echo '</select>';
  221.         echo '<table><tr><td>';
  222.         $button = new button($cmdAdd, 'javascript:save_add_users()');
  223.         echo '</td></tr></table>';
  224.         echo '</td></tr></table>';
  225.     }
  226. }else
  227. {
  228.     ?>
  229.     <table border="0" cellpadding="3" cellspacing="0">
  230.     <tr>
  231.         <td colspan="2">
  232.         <?php
  233.         if (isset($feedback)) echo $feedback;
  234.         ?>
  235.         </td>
  236.     </tr>
  237.     <tr>
  238.         <td>
  239.         <?php echo $strName; ?>:
  240.         </td>
  241.         <td>
  242.         <input type="text" class="textbox" maxlength="50" name="group_name" value="<?php echo $group_name; ?>" size="30" <?php echo $disabled; ?> />
  243.         </td>
  244.     </tr>
  245.     <?php
  246.     if ($group_id > 0)
  247.     {
  248.         echo '<tr><td valign="top">'.$groups_members.':</td><td>';
  249.         $groups->get_users_in_group($group_id, "name", "ASC");
  250.         echo '<select name="group_users[]" multiple="true" style="width: 250px;height: 100px;" class="textbox" '.$disabled.'>';
  251.  
  252.         while ($groups->next_record())
  253.         {
  254.             if ( $groups->f('last_name')) {
  255.                 $middle_name = $groups->f('middle_name') == '' ? '' : $groups->f('middle_name').' ';
  256.                 $name = $groups->f('first_name').' '.$middle_name.$groups->f('last_name');
  257.                 echo '<option value="'.$groups->f('id').'">'.$name.'</option>';
  258.             } else {
  259.                 require_once($GO_CONFIG->class_path.'profiles.class.inc');
  260.                 $profiles = new profiles();
  261.                 if ($profile = $profiles->get_profile($groups->f('user_id'))) {
  262.                     $middle_name = $profile["middle_name"] == '' ? '' : $profile["middle_name"].' ';
  263.                     $name = $profile["first_name"].' '.$middle_name.$profile["last_name"];
  264.                     echo '<option value="'.$groups->f('user_id').'">'.$name.'</option>';
  265.                 }
  266.             }
  267.         }
  268.         echo '</select>';
  269.         if ($enabled)
  270.         {
  271.             echo '<table><tr><td>';
  272.             $button = new button($cmdAdd, 'javascript:add_users()');
  273.             echo '</td><td>';
  274.             $button = new button($cmdDelete, 'javascript:delete_users()');
  275.             echo '</td></tr></table>';
  276.         }
  277.         echo '</td></tr></table>';
  278.     }
  279.     echo '<br /><table><tr><td>';
  280.     if ($enabled)
  281.     {
  282.         $button = new button($cmdOk, 'javascript:save_close_group_name()');
  283.         echo '</td><td>';
  284.         $button = new button($cmdApply, 'javascript:save_group_name()');
  285.         echo '</td><td>';
  286.     }
  287.     $button = new button($cmdClose, "javascript:document.location='index.php'");
  288.     echo '</td></tr>';
  289.     echo '</table>';
  290.  
  291. }
  292. $tabtable->print_foot();
  293. ?>
  294.  
  295. <script type="text/javascript">
  296. function delete_users()
  297. {
  298.     document.group.task.value='delete_users';
  299.     document.group.submit();
  300. }
  301.  
  302. function save_add_users()
  303. {
  304.     document.group.task.value='save_add_users';
  305.     document.group.submit();
  306. }
  307. function add_users()
  308. {
  309.     document.group.task.value='add_users';
  310.     document.group.submit();
  311. }
  312. function save_group_name()
  313. {
  314.     document.group.task.value='save_group_name';
  315.     document.group.submit();
  316. }
  317. function save_close_group_name()
  318. {
  319.     document.group.close.value='true';
  320.     document.group.task.value='save_group_name';
  321.     document.group.submit();
  322. }
  323. function return_to_group()
  324. {
  325.     document.group.task.value='';
  326.     document.group.submit();
  327. }
  328. </script>
  329. </form>
  330. <?php
  331. require($GO_THEME->theme_path."footer.inc");
  332. ?>
  333.