home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / admin / edit_folders.php < prev    next >
Encoding:
PHP Script  |  2004-01-21  |  7.3 KB  |  251 lines

  1. <?php
  2. /////////////////////////////////////////////////////////
  3. //    
  4. //    source/edit_folders.php
  5. //
  6. //    (C)Copyright 2000-2002 Ryo Chijiiwa <Ryo@IlohaMail.org>
  7. //
  8. //        This file is part of IlohaMail.
  9. //        IlohaMail is free software released under the GPL 
  10. //        license.  See enclosed file COPYING for details,
  11. //        or see http://www.fsf.org/copyleft/gpl.html
  12. //
  13. /////////////////////////////////////////////////////////
  14.  
  15. /********************************************************
  16.  
  17.     AUTHOR: Ryo Chijiiwa <ryo@ilohamail.org>
  18.     FILE:  source/edit_folders.php
  19.     PURPOSE:
  20.         Provide functionality to create/delete/rename folders
  21.     PRE-CONDITIONS:
  22.         $user - Session ID
  23.     TODO:
  24.         Modify to detect and allow for hierarchy delimiters other than '/'.
  25.         
  26. ********************************************************/
  27.  
  28. function decodePath($path, $delimiter){
  29.     $parts=explode($delimiter, $path);
  30.     while (list($key, $part)=each($parts)){
  31.         $parts[$key]=urldecode($part);
  32.     }
  33.     $path=implode($delimiter, $parts);
  34.  
  35.     return $path;
  36. }
  37.  
  38. function encodePath($path, $delimiter){
  39.         $parts=explode($delimiter, $path);
  40.         while (list($key, $part)=each($parts)){
  41.             $parts[$key]=urlencode($part);
  42.             //echo "Encoded $part as ".$parts[$key]." <br>\n";
  43.         }
  44.         $path=implode($delimiter, $parts);
  45.         
  46.         return $path;
  47. }
  48.  
  49. function prependRootdir($rootdir, $folder, $delim){
  50.     if (empty($rootdir)) return $folder;
  51.     
  52.     $pos = strpos($folder, $rootdir);
  53.     if (($pos!==false) && ($pos==0)) return $folder;
  54.     else return $rootdir.($rootdir[strlen($rootdir)-1]!=$delim?$delim:"").$folder;
  55. }
  56.  
  57. include("../include/super2global.inc");
  58. include("../include/header_main.inc");
  59. include("../include/icl.inc");
  60. include("../include/cache.inc");
  61. include("../lang/".$my_prefs["lang"]."defaultFolders.inc");
  62. include("../lang/".$my_prefs["lang"]."edit_folders.inc");
  63.  
  64.     $conn = iil_Connect($host, $loginID, $password, $AUTH_MODE);
  65.     if (!$conn)
  66.         echo "failed";
  67.     else{
  68.         echo "\n<table width=\"100%\" cellpadding=2 cellspacing=0><tr bgcolor=\"".$my_colors["main_head_bg"]."\">\n";
  69.         echo "<td align=left valign=bottom>\n";
  70.         echo "<span class=\"bigTitle\">".$efStrings[0]."</span>\n";
  71.         echo "</td></tr>\n";
  72.  
  73.         $hDelimiter = iil_C_GetHierarchyDelimiter($conn);
  74.         flush();
  75.         
  76.         $modified=false;
  77.         $error="";
  78.         
  79.     /********* Handle New Folder *******/
  80.     if (isset($newfolder)){
  81.         // prepend folder path with rootdir as necessary
  82.         $newfolder = prependRootdir($my_prefs["rootdir"], $newfolder, $hDelimiter);
  83.                 
  84.         // create new folder
  85.         $unencNF=$newfolder;
  86.         //$newfolder=encodePath($newfolder, $hDelimiter);
  87.         if (iil_C_CreateFolder($conn, $newfolder)){
  88.             iil_C_Subscribe($conn, $newfolder);
  89.             $error=$errors[0].$unencNF;
  90.             $modified=true;
  91.         }else{
  92.             $error=$errors[1].$unencNF."<br>".$conn->error;
  93.         }
  94.     }
  95.     /************************/
  96.     
  97.     /********* Handle Delete Folder ********/
  98.     if (isset($delmenu)){
  99.         //make sure it's unsubscribed
  100.         iil_C_UnSubscribe($conn, $delmenu);
  101.         
  102.         //delete...
  103.         $unencDF=decodePath($delmenu, $hDelimiter);
  104.         if ((empty($defaults[$unencDF])) && (iil_C_DeleteFolder($conn, decodePath($delmenu, $hDelimiter)))){
  105.             $error=$errors[2].$unencDF;
  106.             $modified=true;
  107.         }else{
  108.             $error=$errors[3].$unencDF;
  109.         }
  110.     }
  111.     /***************************/
  112.     
  113.     /********* Handle Rename Folder ********/
  114.     if ((isset($newname)) &&(isset($oldname))){
  115.         //make sure it's unsubscribed
  116.         iil_C_UnSubscribe($conn, $oldname);
  117.  
  118.  
  119.         //prepend with rootdir as necessary
  120.         $newname = prependRootdir($my_prefs["rootdir"], $newname, $hDelimiter);
  121.  
  122.         //rename
  123.         $unencNF=$newname;
  124.         $str=decodePath($oldname, $hDelimiter)." --> $unencNF";
  125.         if ((empty($defaults[$unencNF])) && (iil_C_RenameFolder($conn, decodePath($oldname, $hDelimiter), $newname))) {
  126.             $error=$errors[4].$str;
  127.             $modified=true;
  128.           } else {
  129.             $error=$errors[5].$str;
  130.           }
  131.     }
  132.     /***************************/
  133.     
  134.     /********* Handle subscribe ********/
  135.     if ((isset($subscribe)) && (is_array($sub_folders))){
  136.         while (list($k,$folder)=each($sub_folders)){
  137.             iil_C_Subscribe($conn, $folder);
  138.         }
  139.         $modified = true;
  140.     }
  141.     /***************************/
  142.     
  143.     /********* Handle unsubscribe ********/
  144.     if ((isset($unsubscribe)) && (is_array($unsub_folders))){
  145.         while (list($k,$folder)=each($unsub_folders)){
  146.             if (empty($defaults[$folder])) iil_C_UnSubscribe($conn, $folder);
  147.         }
  148.         $modified = true;
  149.     }
  150.     /***************************/
  151.     
  152.     echo "<tr bgcolor=\"".$my_colors["main_bg"]."\"><td>";
  153.     echo "<p>\n";
  154.  
  155.     //check if folder support is available
  156.     if (!$ICL_CAPABILITY["folders"])  $error .= $errors[6];
  157.     
  158.     if ($modified){
  159.         echo "<font color=green>".$error."</font>";
  160.         echo "<script> parent.list1.location=\"folders.php?user=$user\"; </script>\n";
  161.         cache_clear($loginID, $host, "folders");
  162.     }else{
  163.         echo "<font color=red>".$error."</font>";
  164.         if ($port==110){
  165.             iil_Close($conn);
  166.             echo "</body></html>";
  167.             exit;
  168.         }
  169.     }
  170.  
  171.     //get all folders
  172.     $mailboxes = iil_C_ListMailboxes($conn, $my_prefs["rootdir"], "*");
  173.     if ($mailboxes) sort($mailboxes);
  174.     
  175.     //get subscribed folders...
  176.     $subscribed = iil_C_ListSubscribed($conn, $my_prefs["rootdir"], "*");
  177.     if (($subscribed) && (count($subscribed)>0)){
  178.         sort($subscribed);
  179.         $unsubscribed = array_diff($mailboxes, $subscribed);
  180.     }else{
  181.         echo "Error fetching subscribed folders: ".$conn->error."<br>";
  182.     }
  183.     
  184.  
  185.     /********* Show Create ********/
  186.     echo "<form method=\"POST\">\n";
  187.     echo "<b>".$efStrings[1]."</b><br>\n";
  188.     echo "<input type=\"hidden\" name=\"user\" value=\"".$user."\">\n";
  189.     echo $efStrings[2];
  190.     echo "\n<input type=text name=newfolder size=20>\n";
  191.     echo "<input type=submit value=\"".$efStrings[3]."\">";
  192.     echo "</form>\n";
  193.  
  194.     /********* Show Delete Folder *******/
  195.     echo "<form method=\"POST\">\n";
  196.     echo "<b>$efStrings[4]</b>\n<br>";
  197.     echo "<input type=\"hidden\" name=\"user\" value=\"".$user."\">\n";
  198.     echo "<select name=delmenu>\n";
  199.         FolderOptions2($mailboxes, "");
  200.     echo "</select>\n";
  201.     echo "<input type=submit name=delete value=\"".$efStrings[5]."\">\n</form>\n";
  202.     /************************/
  203.  
  204.     /********* Show Rename Folder *******/
  205.     echo "<form method=\"POST\">\n";
  206.     echo "<b>$efStrings[6]</b><br>\n";
  207.     echo "<input type=\"hidden\" name=\"user\" value=\"".$user."\">\n";
  208.     echo "<select name=\"oldname\">\n";
  209.         FolderOptions2($mailboxes, "");
  210.     echo "</select>\n";
  211.     echo "--><input type=\"text\" name=\"newname\">\n";
  212.     echo "<input type=submit name=rename value=\"".$efStrings[7]."\">\n";
  213.     echo "</form>\n";
  214.     /************************/
  215.     
  216.     /********* Show Subscribe Folder *******/
  217.     echo "<form method=\"POST\">\n";
  218.     echo "<table><tr>\n";
  219.     echo "<td valign=\"top\">\n";
  220.     echo "<b>$efStrings[10]</b><br>\n";
  221.     echo "<input type=\"hidden\" name=\"user\" value=\"".$user."\">\n";
  222.     echo "<select name=\"sub_folders[]\" MULTIPLE sizse=10>\n";
  223.         FolderOptions2($unsubscribed, "");
  224.     echo "</select>\n";
  225.     echo "<br><input type=submit name=subscribe value=\"".$efStrings[9]."\">\n";
  226.     echo "</td>\n";
  227.  
  228.     echo "<td valign=\"top\">\n";
  229.     echo "<b>$efStrings[8]</b><br>\n";
  230.     echo "<input type=\"hidden\" name=\"user\" value=\"".$user."\">\n";
  231.     echo "<select name=\"unsub_folders[]\" MULTIPLE sizse=10>\n";
  232.         FolderOptions2($subscribed, "");
  233.     echo "</select>\n";
  234.     echo "<br><input type=submit name=unsubscribe value=\"".$efStrings[11]."\">\n";
  235.     echo "</td>\n";
  236.  
  237.     
  238.     echo "</tr></table>\n";
  239.     echo "</form>\n";
  240.     
  241.     /************************/
  242.  
  243.     echo "<br> <br> \n";
  244.     echo "</td></tr></table>";
  245.  
  246.     //echo "successful: $mbox ";
  247.     iil_Close($conn);
  248.  
  249.     }
  250. ?>
  251. </BODY></HTML>