home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / groupoffice-com-2.01 / modules / cms / properties.php < prev    next >
PHP Script  |  2004-03-08  |  13KB  |  434 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.  
  13. require("../../Group-Office.php");
  14. require($GO_CONFIG->class_path.'cms.class.inc');
  15. $cms = new cms();
  16.  
  17. //authenticate the user
  18. $GO_SECURITY->authenticate();
  19.  
  20. //see if the user has access to this module
  21. //for this to work there must be a module named 'example'
  22. $GO_MODULES->authenticate('cms');
  23.  
  24. //get the language file
  25. require($GO_LANGUAGE->get_language_file('cms'));
  26.  
  27. $site_id = isset($_REQUEST['site_id']) ? $_REQUEST['site_id'] : 0;
  28.  
  29. if(!$site = $cms->get_site($site_id))
  30. {
  31.     header('Location: index.php');
  32. }
  33.  
  34. if (!$GO_SECURITY->has_permission($GO_SECURITY->user_id, $site['acl_write']))
  35. {
  36.     require($GO_THEME->theme_path."header.inc");
  37.     require($GO_CONFIG->root_path.'error_docs/403.inc');
  38.     require($GO_THEME->theme_path."footer.inc");
  39.     exit();
  40.  
  41. }
  42.  
  43. //set the folder id we are in
  44. $folder_id = isset($_REQUEST['folder_id']) ? $_REQUEST['folder_id'] : $site['root_folder_id'];
  45.  
  46. //set the folder id we are in
  47. $file_id = isset($_REQUEST['file_id']) ? $_REQUEST['file_id'] : 0;
  48.  
  49. //what to do before output
  50. $task = isset($_REQUEST['task']) ? $_REQUEST['task'] : '';
  51.  
  52. $return_to = isset($_REQUEST['return_to']) ? $_REQUEST['return_to'] : $_SERVER['HTTP_REFERRER'];
  53.  
  54. $link_back = isset($_REQUEST['link_back']) ? $_REQUEST['link_back'] : $_SERVER['REQUEST_URI'];
  55.  
  56. switch ($task)
  57. {
  58.     case 'save_file_properties':
  59.         $task = 'file_properties';
  60.         $name = trim($_POST['name']);
  61.         if ($name == '')
  62.         {
  63.             $feedback = '<p class="Error">'.$error_missing_field.'</p>';
  64.         }else
  65.         {
  66.             if ($_POST['extension'] != '')
  67.             {
  68.                 $name = $name.'.'.$_POST['extension'];
  69.             }
  70.             $existing_id = $cms->file_exists($folder_id, $name);
  71.             if($existing_id && ($_POST['file_id'] != $existing_id))
  72.             {
  73.                 $feedback = '<p class="Error">'.$fbNameExists.'</p>';
  74.             }elseif(!$file=$cms->get_file($_POST['file_id']))
  75.             {
  76.                 $feedback = '<p class="Error">'.$strSaveError.'</p>';
  77.             }else
  78.             {
  79.                 if (!$cms->update_file($_POST['file_id'], $name, addslashes($file['content']), $_POST['title'], $_POST['description'], $_POST['keywords'], $_POST['priority']))
  80.                 {
  81.                     $feedback = '<p class="Error">'.$strSaveError.'</p>';
  82.                 }else
  83.                 {
  84.                     if($_POST['close'] == 'true')
  85.                     {
  86.                         header('Location: '.$return_to);
  87.                         exit();
  88.                     }
  89.                 }
  90.             }
  91.         }
  92.     break;
  93.  
  94.     case 'save_folder_properties':
  95.         $task = 'folder_properties';
  96.         $name = trim($_POST['name']);
  97.         if ($name == '')
  98.         {
  99.             $feedback = '<p class="Error">'.$error_missing_field.'</p>';
  100.         }elseif(!$folder=$cms->get_folder($folder_id))
  101.         {
  102.             $feedback = '<p class="Error">'.$strSaveError.'</p>';
  103.         }else
  104.         {
  105.             $disabled = isset($_POST['disabled']) ? '1' : '0';
  106.             if (!$cms->update_folder($folder_id, $name, $disabled, $_POST['priority']))
  107.             {
  108.                 $feedback = '<p class="Error">'.$strSaveError.'</p>';
  109.             }else
  110.             {
  111.                 if($_POST['close'] == 'true')
  112.                 {
  113.                     header('Location: '.$return_to);
  114.                     exit();
  115.                 }
  116.             }
  117.         }
  118.     break;
  119.  
  120.     case 'save_search_words':
  121.         $cms2 = new cms();
  122.  
  123.         $selected_search_words =  isset($_POST['selected_search_words']) ? $_POST['selected_search_words'] : array();
  124.         $cms->get_search_words($site_id);
  125.  
  126.         while ($cms->next_record())
  127.         {
  128.             $attached = $cms2->file_is_attached($_POST['file_id'], $cms->f('id'));
  129.             $selected = in_array($cms->f('id'), $selected_search_words);
  130.  
  131.             if ($selected && !$attached)
  132.             {
  133.                 $cms2->attach_file($_POST['file_id'], $cms->f('id'));
  134.             }
  135.  
  136.             if ($attached && !$selected)
  137.             {
  138.                 $cms2->detach_file($_POST['file_id'],$cms->f('id'));
  139.             }
  140.         }
  141.         $task = 'file_properties';
  142.         if($_POST['close'] == 'true')
  143.         {
  144.             header('Location: '.$return_to);
  145.             exit();
  146.         }
  147.  
  148.     break;
  149.  
  150.     case 'search_file':
  151.         $task = 'file_properties';
  152.         $search_file = true;
  153.     break;
  154. }
  155.  
  156. //set the page title for the header file
  157. $page_title = $lang_modules['cms'];
  158.  
  159. //require the header file. This will draw the logo's and the menu
  160. require($GO_THEME->theme_path."header.inc");
  161. echo '<form name="cms" method="post" action="'.$_SERVER['PHP_SELF'].'">';
  162. echo '<input type="hidden" name="site_id" value="'.$site_id.'" />';
  163. echo '<input type="hidden" name="folder_id" value="'.$folder_id.'" />';
  164. echo '<input type="hidden" name="return_to" value="'.$return_to.'" />';
  165. echo '<input type="hidden" name="link_back" value="'.$link_back.'" />';
  166. echo '<input type="hidden" name="close" value="false" />';
  167.  
  168. $tabtable = new tabtable('properties',$fbProperties, '400', '400', '100','', true);
  169. if ($task == 'file_properties')
  170. {
  171.     echo '<input type="hidden" name="task" value="file_properties" />';
  172.     echo '<input type="hidden" name="file_id" value="'.$file_id.'" />';
  173.     $write_perms = true;
  174.     $item = $cms->get_file($file_id);
  175.     $item['parent_id'] = $item['folder_id'];
  176.     $item['size'] = format_size($item['size']);
  177.     $tabtable->add_tab($fbProperties, 'properties');
  178.     if (strtolower($item['content_type']) == 'text/html')
  179.     {
  180.         $tabtable->add_tab('meta', 'meta');
  181.     }
  182.     $tabtable->add_tab('search_words', $cms_search_words);
  183.  
  184. }else
  185. {
  186.     echo '<input type="hidden" name="task" value="folder_properties" />';
  187.     $item = $cms->get_folder($folder_id);
  188.     $item['content_type'] = 'folder';
  189.     $item['size'] = '-';
  190.     if ($item['parent_id'] == 0)
  191.     {
  192.         $no_hide = true;
  193.     }else
  194.     {
  195.         $no_hide = false;
  196.     }
  197. }
  198.  
  199. if(isset($_REQUEST['set_active_tab']))
  200. {
  201.     $tabtable->set_active_tab($_REQUEST['set_active_tab']);
  202. }
  203.  
  204. $tabtable->print_head();
  205. switch($tabtable->get_active_tab_id())
  206. {
  207.     case 'meta':
  208.         echo '<input type="hidden" name="name" value="'.strip_extension($item['name']).'" />';
  209.         echo '<input type="hidden" name="extension" value="'.get_extension($item['name']).'" />';
  210.         echo '<input type="hidden" name="priority" value="'.$item['priority'].'" />';
  211.         ?>
  212.         <table border="0" cellpadding="4" cellspacing="0">
  213.         <?php
  214.         if(isset($feedback)) echo '<tr><td colspan="2">'.$feedback.' </td></tr>';
  215.         ?>
  216.         <tr>
  217.             <td>
  218.             <?php echo $strTitle; ?>:
  219.             </td>
  220.             <td>
  221.             <?php
  222.             $title = ($item['title'] != '') ? $item['title'] : $site['name'];
  223.             ?>
  224.             <input type="text" class="textbox" name="title" value="<?php echo $title; ?>" maxlength="100" style="width: 250" />
  225.             </td>
  226.         </tr>
  227.         <tr>
  228.             <td valign="top">
  229.             <?php echo $strDescription; ?>:
  230.             </td>
  231.             <td>
  232.             <?php
  233.             $description = ($item['description'] != '') ? $item['description'] : $site['description'];
  234.             ?>
  235.             <textarea class="textbox" name="description" style="width: 250" rows="5"><?php echo $description; ?></textarea>
  236.             </td>
  237.         </tr>
  238.         <tr>
  239.             <td valign="top">
  240.             <?php echo $cms_keywords; ?>:
  241.             </td>
  242.             <td>
  243.             <?php
  244.             $keywords = ($item['keywords'] != '') ? $item['keywords'] : $site['keywords'];
  245.             ?>
  246.             <textarea class="textbox" name="keywords" style="width: 250" rows="5"><?php echo $keywords; ?></textarea>
  247.             </td>
  248.         </tr>
  249.  
  250.         <tr>
  251.             <td colspan="2">
  252.                 <br />
  253.                 <?php
  254.                 $button = new button($cmdOk, "javascript:_save('".$task."', 'true');");
  255.                 echo '  ';
  256.                 $button = new button($cmdApply, "javascript:_save('".$task."', 'false');");
  257.                 echo '  ';
  258.                 $button = new button($cmdClose, "javascript:document.location='$return_to';");
  259.                 ?>
  260.             </td>
  261.         </tr>
  262.  
  263.         </table>
  264.         <?php
  265.  
  266.     break;
  267.  
  268.     case 'search_words':
  269.         echo '<table border="0" cellspacing="8">';
  270.         echo '<tr><td><a class="normal" href="site.php?task=edit_search_words&site_id='.$site_id.'&return_to='.urlencode($link_back).'">'.$cms_edit_search_words.'</a></td></tr>';
  271.  
  272.         echo '<tr><td><table border="0">';
  273.         $cms2 = new cms();
  274.         if (isset($search_file))
  275.         {
  276.             $cms->get_search_words($site_id);
  277.         }else
  278.         {
  279.             $cms->get_attached_search_words($file_id);
  280.         }
  281.         while ($cms->next_record())
  282.         {
  283.             if(!isset($search_file) || preg_match("/\b(?<!\/)".$cms->f('search_word')."\b/i", $item['content']) || preg_match("/\b(?<!\/)".htmlentities($cms->f('search_word'))."\b/i", $item['content']))
  284.             {
  285.  
  286.                 echo '<tr><td><input type="checkbox" name="selected_search_words[]" value="'.$cms->f('id').'" checked />';
  287.                 echo '<td>'.$cms->f('search_word').'</td></tr>';
  288.             }
  289.         }
  290.         echo '</td></tr></table>';
  291.         echo '<tr><td nowrap>';
  292.         $button = new button($cmdOk, "javascript:_save('save_search_words', 'true');");
  293.         echo '  ';
  294.         $button = new button($cmdApply, "javascript:_save('save_search_words', 'false');");
  295.         echo '  ';
  296.         $button = new button($cms_search_files, "javascript:_save('search_file', 'false');");
  297.         echo '  ';
  298.         $button = new button($cmdClose, "javascript:document.location='$return_to';");
  299.         echo '</td></tr></table>';
  300.  
  301.     break;
  302.  
  303.     default:
  304.     if ($task == 'file_properties')
  305.     {
  306.         echo '<input type="hidden" name="title" value="'.$item['title'].'" />';
  307.         echo '<input type="hidden" name="description" value="'.$item['description'].'" />';
  308.         echo '<input type="hidden" name="keywords" value="'.$item['keywords'].'" />';
  309.     }
  310.     ?>
  311.     <table border="0" cellpadding="4" cellspacing="0">
  312.     <tr>
  313.         <td colspan="2"><?php if(isset($feedback)) echo $feedback; ?> </td>
  314.     </tr>
  315.     <tr>
  316.         <td>
  317.         <?php echo $strName; ?>:
  318.         </td>
  319.         <td>
  320.         <?php
  321.         if($task == 'file_properties')
  322.         {
  323.             echo '<input type="text" class="textbox" name="name" value="'.strip_extension($item['name']).'" maxlength="100" size="30" />';
  324.             echo '<input type="hidden" name="extension" value="'.get_extension($item['name']).'" />';
  325.         }else
  326.         {
  327.             echo '<input type="text" class="textbox" name="name" value="'.$item['name'].'" maxlength="100" size="30" />';
  328.         }
  329.         ?>
  330.         </td>
  331.     </tr>
  332.     <tr>
  333.         <td>
  334.         <?php echo $fbLocation; ?>:
  335.         </td>
  336.         <td>
  337.         <?php
  338.         echo $cms->get_path($item['parent_id']);
  339.         ?>
  340.         </td>
  341.     </tr>
  342.     <tr>
  343.         <td valign="top">
  344.         <?php echo $strType; ?>:
  345.         </td>
  346.         <td>
  347.         <table border="0" cellpadding="0" cellspacing="0">
  348.         <tr>
  349.             <td valign="top">
  350.             <?php
  351.             if ($item['content_type'] == 'folder')
  352.             {
  353.                 echo '<img border="0" width="16" height="16" src="'.$GO_THEME->images['folder'].'" />';
  354.                 echo ' </td><td valign="top">';
  355.                 echo $fbFolder;
  356.             }else
  357.             {
  358.                 echo '<img border="0" width="16" height="16" src="'.$GO_CONFIG->control_url.'icon.php?extension='.$item['extension'].'" />';
  359.                 echo ' </td><td valign="top">';
  360.                 echo $item['content_type_friendly'];
  361.                 if (($item['content_type'] != $item['content_type_friendly']) && $item['content_type'] != '')
  362.                 {
  363.                     echo '<br />('.$item['content_type'].')';
  364.                 }
  365.             }
  366.             ?>
  367.             </td>
  368.         </tr>
  369.         </table>
  370.         </td>
  371.     </tr>
  372.     <tr>
  373.         <td><?php echo $strSize; ?>:</td>
  374.         <td><?php echo $item['size']; ?></td>
  375.     </tr>
  376.     <tr>
  377.         <td>
  378.         <?php echo $strModified; ?>:
  379.         </td>
  380.         <td>
  381.         <?php echo date($_SESSION['GO_SESSION']['date_format'].' '.$_SESSION['GO_SESSION']['time_format'], $item['mtime']+($_SESSION['GO_SESSION']['timezone']*3600)); ?>
  382.         </td>
  383.     </tr>
  384.     <tr>
  385.         <td valign="top">
  386.         <?php echo $cms_priority; ?>:
  387.         </td>
  388.         <td>
  389.         <?php
  390.         $priority = ($item['priority'] != '') ? $item['priority'] : $site['priority'];
  391.         ?>
  392.         <input type="text" class="textbox" name="priority" value="<?php echo $priority; ?>" maxlength="3" size="3" />
  393.         </td>
  394.     </tr>
  395.     <?php
  396.     if ($item['content_type'] == 'folder')
  397.     {
  398.         $disabled_check = ($item['disabled'] == '1') ? true : false;
  399.         echo '<tr><td colspan="2">';
  400.         $checkbox = new checkbox('disabled', '1', $cms_hide_folder, $disabled_check, $no_hide);
  401.         echo '</td></tr>';
  402.     }
  403.     ?>
  404.     <tr>
  405.         <td colspan="2">
  406.             <br />
  407.             <?php
  408.             $button = new button($cmdOk, "javascript:_save('".$task."', 'true');");
  409.             echo '  ';
  410.             $button = new button($cmdApply, "javascript:_save('".$task."', 'false');");
  411.             echo '  ';
  412.             $button = new button($cmdClose, "javascript:document.location='$return_to';");
  413.             ?>
  414.         </td>
  415.     </tr>
  416.     </table>
  417.  
  418.     <?php
  419.     break;
  420. }
  421. $tabtable->print_foot();
  422. ?>
  423. <script type="text/javascript" language="javascript">
  424. function _save(task, close)
  425. {
  426.     document.forms[0].task.value=task;
  427.     document.forms[0].close.value=close;
  428.     document.forms[0].submit();
  429. }
  430. </script>
  431.  
  432. <?php
  433. require($GO_THEME->theme_path."footer.inc");
  434. ?>