3 * GForge Doc Mgr Facility
5 * Copyright 2002 GForge, LLC
14 by Quentin Cregan, SourceForge 06/2000
16 Complete OO rewrite by Tim Perdue 1/2003
21 require_once('../env.inc.php');
22 require_once $gfwww.'include/pre.php';
23 require_once $gfcommon.'docman/Document.class.php';
24 require_once $gfcommon.'docman/DocumentGroupFactory.class.php';
25 require_once $gfwww.'docman/include/doc_utils.php';
26 require_once $gfwww.'docman/include/DocumentGroupHTML.class.php';
27 require_once $gfcommon.'include/TextSanitizer.class.php'; // to make the HTML input by the user safe to store
29 $group_id = getIntFromRequest('group_id');
33 $g =& group_get_object($group_id);
34 if (!$g || !is_object($g)) {
35 exit_error('Error','Could Not Get Group');
36 } elseif ($g->isError()) {
37 exit_error('Error',$g->getErrorMessage());
40 $upload_dir = forge_get_config('ftp_upload_dir') . "/" . $g->getUnixName();
42 if (getStringFromRequest('submit')) {
43 $doc_group = getIntFromRequest('doc_group');
44 $title = getStringFromRequest('title');
45 $description = getStringFromRequest('description');
46 $file_url = getStringFromRequest('file_url');
47 //$ftp_filename = getStringFromRequest('ftp_filename');
48 $uploaded_data = getUploadedFile('uploaded_data');
49 $language_id = getIntFromRequest('language_id');
50 $type = getStringFromRequest('type');
51 $name = getStringFromRequest('name');
53 if (!$doc_group || $doc_group == 100) {
54 //cannot add a doc unless an appropriate group is provided
55 exit_error(_('Error'),_('No valid Document Group was selected.'));
58 if (!$title || !$description || (!$uploaded_data && !$file_url && (!$editor && !$name ) )) {
62 $d = new Document($g, false, false,$sys_engine_path);
63 if (!$d || !is_object($d)) {
64 exit_error(_('Error'),_('Error getting blank document.'));
65 } elseif ($d->isError()) {
66 exit_error(_('Error'),$d->getErrorMessage());
71 $data = getStringFromRequest('data');
72 $uploaded_data_name = $name;
73 $sanitizer = new TextSanitizer();
74 $data = $sanitizer->SanitizeHtml($data);
75 if (strlen($data)<1) {
76 exit_error(_('Error'),_('Error getting blank document.'));
78 $uploaded_data_type='text/html';
83 $uploaded_data_name=$file_url;
84 $uploaded_data_type='URL';
88 if (!is_uploaded_file($uploaded_data['tmp_name'])) {
89 exit_error(_('Error'),_('Invalid file name.'));
91 $data = fread(fopen($uploaded_data['tmp_name'], 'r'), $uploaded_data['size']);
93 $uploaded_data_name=$uploaded_data['name'];
94 $uploaded_data_type=$uploaded_data['type'];
99 $uploaded_data_name=$upload_dir.'/'.$ftp_filename;
100 $data = fread(fopen($uploaded_data_name, 'r'), filesize($uploaded_data_name));
105 if (!$d->create($uploaded_data_name,$uploaded_data_type,$data,$doc_group,$title,$language_id,$description)) {
106 exit_error(_('Error'),$d->getErrorMessage());
108 if ($type == 'editor') {
109 //release the cookie for the document contents (should expire at the end of the session anyway)
110 setcookie ("gforgecurrentdocdata", "", time() - 3600);
112 // check if the user is docman's admin
113 $perm =& $g->getPermission( session_get_user() );
114 if (!$perm || $perm->isError() || !$perm->isDocEditor()) {
115 Header('Location: '.util_make_url('/docman/?group_id='.$group_id.'&feedback='._('Document submitted sucessfully : pending state (need validation)')));
118 Header('Location: '.util_make_url('/docman/?group_id='.$group_id.'&feedback='._('Document submitted sucessfully')));
125 //if (getStringFromRequest('Option')) {
126 //option was selected, proceed to show each one
127 $option_selected = getStringFromRequest('option_selected');
128 docman_header(_('Document Manager: Submit New Documentation'),_('Project: %1$s'));
129 echo'<p>'. _('<strong>Document Title</strong>: Refers to the relatively brief title of the document (e.g. How to use the download server)<br /><strong>Description:</strong> A brief description to be placed just under the title.') .'</p>
130 <form name="adddata" action="'. getStringFromServer('PHP_SELF').'?group_id='.$group_id.'" method="post" enctype="multipart/form-data">
131 <table border="0" width="75%">
134 <strong>'. _('Document Title').' :</strong>'. utils_requiredField(). sprintf(_('(at least %1$s characters)'), 5).'<br />
135 <input type="text" name="title" size="40" maxlength="255" />
141 <strong>'. _('Description') .' :</strong>'. utils_requiredField() . sprintf(_('(at least %1$s characters)'), 10).'<br />
142 <input type="text" name="description" size="50" maxlength="255" />
148 <strong>'. _('Upload File') .' :</strong>'. utils_requiredField() .'<br />
149 <input type="file" name="uploaded_data" size="30" /><br /><br />
150 <input type="hidden" name="type" value="httpupload">
154 switch ($option_selected) {
155 case 'httpupload' : {
159 <strong>'. _('Upload File') .' :</strong>'. utils_requiredField() .'<br />
160 <input type="file" name="uploaded_data" size="30" /><br /><br />
161 <input type="hidden" name="type" value="httpupload">
167 if (forge_get_config('use_ftpuploads')) {
171 <strong>'.sprintf(_('You can use FTP to upload a new file at %1$s'), forge_get_config('ftp_upload_host')).'<br />';
172 echo _('Choose an FTP file instead of uploading:').'</strong>'. utils_requiredField() .'<br />';
173 $ftp_files_arr=array_merge($arr,ls($upload_dir,true));
174 echo html_build_select_box_from_arrays($ftp_files_arr,$ftp_files_arr,'ftp_filename','');
175 echo '</td></tr><input type="hidden" name="type" value="ftpupload" />';
178 exit_error(_('You must enable ftp uploads first'));
186 <strong>'. _('Specify an outside URL where the file will be referenced').' :</strong>'. utils_requiredField() .'<br />
187 <input type="text" name="file_url" size="50" />
188 <input type="hidden" name="type" value="pasteurl">
194 echo '<SCRIPT LANGUAGE="JavaScript">';
195 echo 'function openEditor(group) {
196 newwin=window.open("doceditor.php?group_id=" + group, "dispwin", "width=850,height=550,scrollbars=yes,menubar=no");
203 echo "<strong>" . _('Name your file :') . '</strong>'.utils_requiredField().'<input type="text" name="name" ><br>';
204 echo '<a href="javascript:openEditor('.$group_id.');">'._('Edit').'</a>';
205 echo '<input type="hidden" name="data">';
206 echo '<input type="hidden" name="type" value="editor">';
217 <strong>'. _('Language').' :</strong><br />
218 '. html_get_language_popup('language_id',1) .'
223 <strong>'. _('Group that document belongs in').' :</strong><br />';
224 $dgf = new DocumentGroupFactory($g);
225 if ($dgf->isError()) {
226 exit_error('Error',$dgf->getErrorMessage());
228 $dgh = new DocumentGroupHTML($g);
229 if ($dgh->isError()) {
230 exit_error('Error',$dgh->getErrorMessage());
232 //display_groups_option($group_id);
233 $selected_doc_group=getIntFromRequest('selected_doc_group');
234 $dgh->showSelectNestedGroups($dgf->getNested(), 'doc_group', false, $selected_doc_group);
239 <input type="submit" name="submit" value="'. _('Submit Information').' " />
241 docman_footer(array());
244 docman_header(_('Document Manager: Submit New Documentation'),_('Project: %1$s'));
248 echo '<form name="select_opt" action="'. getStringFromServer('PHP_SELF').'?group_id='.$group_id.'" method="post">';
249 $vals['httpupload'] = _('Http Upload');
250 //$vals['ftpupload'] = _('Ftp Upload');
251 $vals['pasteurl'] = _('Url Paste');
252 $vals['editor'] = _('Create and edit the file manually');
253 echo _('First select the upload type you wish to use');
254 echo html_build_select_box_from_assoc($vals,'option_selected');
255 echo ' <input type="submit" value="'. _('Select Option') .'" name="Option">';
257 docman_footer(array());
264 // c-file-style: "bsd"