home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / groupoffice-com-2.01 / lib / scripts / update_acl.php < prev   
PHP Script  |  2004-03-08  |  3KB  |  104 lines

  1. <?php
  2. /*
  3. */
  4. echo 'Updating ACL Table...<br>';
  5. $acl_tables[] = 'ab_addressbooks';
  6. $acl_tables[] = 'cal_calendars';
  7. $acl_tables[] = 'cal_events';
  8. $acl_tables[] = 'cms_sites';
  9. $acl_tables[] = 'cms_templates';
  10. $acl_tables[] = 'fsShares';
  11. $acl_tables[] = 'pmProjects';
  12. $acl_tables[] = 'pr_presentations';
  13. $acl_tables[] = 'pr_templates';
  14. $acl_tables[] = 'tp_templates';
  15.  
  16. require("../../Group-Office.php");
  17. require($GO_CONFIG->class_path.'email.class.inc');
  18. $db = new db();
  19. $db2 = new db();
  20.  
  21. if (!ini_set('max_execution_time', '3600'))
  22. {
  23.     die('Aborted: Could not set max_execution_time');
  24. }
  25.  
  26. $db->query("SELECT id FROM acl_items");
  27.  
  28. $acl_count = 0;
  29. $missed_count = 0;
  30. while($db->next_record())
  31. {
  32.     $acl_count++;
  33.     $user_id = 0;
  34.     for ($i=0;$i<count($acl_tables);$i++)
  35.     {
  36.         $db2->query("SELECT user_id FROM ".$acl_tables[$i]." WHERE acl_read='".$db->f('id')."' OR  acl_write='".$db->f('id')."'");
  37.         if ($db2->next_record())
  38.         {
  39.             $user_id=$db2->f('user_id');
  40.             if ($user_id > 0)
  41.             {
  42.                 $db2->query("UPDATE acl_items SET user_id='$user_id' WHERE id='".$db->f('id')."'");
  43.                 break;
  44.             }
  45.         }
  46.  
  47.  
  48.     }
  49.     if ($user_id == 0)
  50.     {
  51.         $db2->query("SELECT id FROM users WHERE acl_id='".$db->f('id')."'");
  52.         if ($db2->next_record())
  53.         {
  54.             $user_id=$db2->f('id');
  55.             if ($user_id > 0)
  56.             {
  57.                 $db2->query("UPDATE acl_items SET user_id='$user_id' WHERE id='".$db->f('id')."'");
  58.             }
  59.         }
  60.     }
  61.     if ($user_id == 0)
  62.     {
  63.         $db2->query("DELETE FROM acl_items WHERE id='".$db->f('id')."'");
  64.         $db2->query("DELETE FROM acl WHERE acl_id='".$db->f('id')."'");
  65.         $missed_count++;
  66.     }
  67. }
  68. echo 'Done<br />Starting with email accounts...';
  69.  
  70. $email = new email();
  71. $email2 = new email();
  72.  
  73. $email->query("SELECT password, id FROM emAccounts");
  74.  
  75. while($email->next_record())
  76. {
  77.     $email2->query("UPDATE emAccounts SET password='".$GO_CRYPTO->encrypt($email->f('password'))."' WHERE id='".$email->f('id')."'");
  78. }
  79.  
  80. echo 'Done<br />Converting addressbook....'
  81.  
  82. $db->query("SELECT id, addressbook_id FROM ab_contacts");
  83.  
  84. while($db->next_record())
  85. {
  86.     $addressbook_id = $db->f('addressbook_id');
  87.     $contact_id = $db->f('id');
  88.  
  89.     $acl_read = $GO_SECURITY->get_new_acl('contact read');
  90.     $acl_write = $GO_SECURITY->get_new_acl('contact write');
  91.  
  92.     if($db2->query("UPDATE ab_contacts SET acl_read='$acl_read', acl_write='$acl_write' WHERE id='$contact_id'"))
  93.     {
  94.         $db2->query("SELECT acl_read, acl_write FROM ab_addressbooks WHERE id='$addressbook_id'");
  95.         if ($db2->next_record())
  96.         {
  97.             $addressbook = $db2->Record;
  98.             $GO_SECURITY->copy_acl($addressbook['acl_read'], $acl_read);
  99.             $GO_SECURITY->copy_acl($addressbook['acl_write'], $acl_write);
  100.         }
  101.     }
  102. }
  103. echo 'All Done';
  104. ?>