3 * Skills input/update page.
5 * Copyright 1999-2001 (c) VA Linux Systems
6 * Copyright 2002 (c) Silicon and Software Systems (S3)
7 * Copyright 2010 (c) Franck Villaume
8 * http://fusionforge.org/
10 * This file is part of FusionForge. FusionForge is free software;
11 * you can redistribute it and/or modify it under the terms of the
12 * GNU General Public License as published by the Free Software
13 * Foundation; either version 2 of the Licence, or (at your option)
16 * FusionForge is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License along
22 * with FusionForge; if not, write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26 require_once('../env.inc.php');
27 require_once $gfcommon.'include/pre.php';
28 require_once $gfwww.'people/people_utils.php';
29 require_once $gfwww.'people/skills_utils.php';
31 if (!forge_get_config('use_people')) {
32 exit_disabled('home');
35 $group_id = getIntFromRequest('group_id');
36 $job_id = getIntFromRequest('job_id');
38 if (session_loggedin()) {
40 if (getStringFromRequest('update_profile')) {
41 $people_view_skills = getStringFromRequest('people_view_skills');
44 update the job's description, status, etc
46 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
47 exit_form_double_submit('my');
50 $result=db_query_params('UPDATE users SET people_view_skills=$1
51 WHERE user_id=$2', array($people_view_skills, user_getid()));
52 if (!$result || db_affected_rows($result) < 1) {
53 form_release_key(getStringFromRequest("form_key"));
54 $error_msg .= sprintf(_('User update FAILED: %s'),db_error());
56 $feedback .= _('User updated successfully');
59 } else if (getStringFromRequest('AddSkill')) {
60 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
61 exit_form_double_submit('my');
64 $type = getStringFromRequest('type');
65 $title = getStringFromRequest('title');
66 $startM = getStringFromRequest('startM');
67 $startY = getStringFromRequest('startY');
68 $endM = getStringFromRequest('endM');
69 $endY = getStringFromRequest('endY');
70 $keywords = getStringFromRequest('keywords');
72 if($type && $title && $startM && $startY && $endM && $endY && $keywords) {
73 $start = $startY.$startM;
74 $finish = $endY.$endM;
76 $title = substr($title, 0, 100); /* delimit the title to 100 chars */
77 $keywords = substr($keywords, 0, 255); /* ditto the keywords. */
79 $keywords = str_replace("\n", " ", $keywords); /* strip out any backspace characters. */
80 $title = str_replace("\n", " ", $title);
83 $result = db_query_params("SELECT * from skills_data where user_id = $1
89 array(user_getid(), $type, $title, $start, $finish, $keywords));
91 if (db_numrows($result) >= 1) {
92 $feedback .= ''; /* don't tell them anything! */
94 $result = db_query_params("INSERT into skills_data (user_id, type, title, start, finish, keywords) values
95 ($1, $2, $3, $4, $5, $6)",array(user_getid(), $type, $title, $start, $finish, $keywords));
97 if (!$result || db_affected_rows($result) < 1) {
98 form_release_key(getStringFromRequest("form_key"));
99 $error_msg .= sprintf(_('Failed to add the skill %s'),db_error());
100 echo '<h2>'._('Failed to add the skill').'</h2>';
102 $feedback = _('Skill added successfully');
106 form_release_key(getStringFromRequest("form_key"));
107 exit_missing_param('',array(_('Type'),_('Title'),_('Start Month'),_('Start Year'),_('End Month'),_('End Year'),_('Keywords')),'my');
110 if (getStringFromRequest('MultiEdit')) {
111 $type = getStringFromRequest('type');
112 $title = getStringFromRequest('title');
113 $startM = getStringFromRequest('startM');
114 $startY = getStringFromRequest('startY');
115 $endM = getStringFromRequest('endM');
116 $endY = getStringFromRequest('endY');
117 $keywords = getStringFromRequest('keywords');
118 $skill_edit = getStringFromRequest('skill_edit');
121 if (is_array($skill_edit)) {
122 $numItems = count($skill_edit);
125 $warning_msg .= _('No skills selected to edit.');
127 if (getStringFromRequest('confirmMultiEdit')) {
128 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
129 exit_form_double_submit('my');
132 for($i = 0; $i < $numItems; $i++) {
133 $title[$i] = substr($title[$i], 0, 100); /* delimit the title to 100 chars */
134 $keywords[$i] = substr($keywords[$i], 0, 255); /* ditto the keywords. */
136 $keywords[$i] = str_replace("\n", " ", $keywords[$i]); /* strip out any backspace characters. */
137 $title[$i] = str_replace("\n", " ", $title[$i]);
138 $result = db_query_params("UPDATE skills_data SET type=$1 ,title=$2 ,start=$3,finish=$4, keywords=$5 WHERE skills_data_id=$6",
139 array($type[$i], $title[$i], $startY[$i].$startM[$i], $endY[$i].$endM[$i], $keywords[$i], $skill_edit[$i]));
141 if (!$result || db_affected_rows($result) < 1) {
142 $error_msg = sprintf(_('Failed to update skills: %s'),db_error());
145 $feedback = ngettext ('Skill updated', 'Skills updated', db_affected_rows($result));
149 } else /* not confirmed multiedit */ {
150 people_header(array('title'=>_('Skills edit')));
151 echo '<h2>'._('Edit Skills').'</h2>';
152 echo _('Change the required fields, and press "Done" at the bottom of the page');
153 echo '<form action="'.getStringFromServer('PHP_SELF').'" method="post">';
154 echo '<input type="hidden" name="form_key" value="'.form_generate_key().'">';
155 handle_multi_edit($skill_edit);
156 echo '<input type="hidden" name="confirmMultiEdit" value="1" />';
157 echo '<input type="submit" name="MultiEdit" value="'._('Done').'" />';
158 echo '<input type="submit" name="cancelMultiEdit" value="'._('Cancel').'" />';
160 people_footer(array());
164 } else if (getStringFromRequest('cancelMultiEdit')) {
165 $warning_msg = _('Cancelled skills update');
168 if (getStringFromRequest('MultiDelete')) {
169 $unfiltered_skill_delete_array = getArrayFromRequest('skill_delete');
170 $skill_delete = array() ;
171 foreach ($unfiltered_skill_delete_array AS $usd) {
172 if (is_numeric ($usd)) {
173 $skill_delete[] = $usd;
176 $numItems = count($skill_delete);
178 $warning_msg .= _('No skills selected to delete.');
180 if(getStringFromRequest('confirmMultiDelete')) {
181 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
182 exit_form_double_submit();
184 $result = db_query_params ('DELETE FROM skills_data where skills_data_id = ANY ($1)',
185 array (db_int_array_to_any_clause ($skill_delete)));
186 if (!$result || db_affected_rows($result) < 1) {
187 $error_msg .= sprintf(_('Failed to delete any skills: %s'),db_error());
188 echo '<h2>'._('Failed to delete any skills').'</h2>';
190 $feedback = ngettext ('Skill deleted successfully', 'Skills deleted successfully', db_affected_rows($result));
193 $result = db_query_params ('SELECT title FROM skills_data where skills_data_id = ANY ($1)',
194 array (db_int_array_to_any_clause ($skill_delete)));
195 $rows = db_numrows($result);
196 if (!$result || $rows < 1) {
197 exit_error(db_error(),'my');
199 people_header(array('title'=>_('Confirm skill delete')));
201 echo '<span class="important">'._('Confirm Delete').'</span>';
202 print ngettext('You are about to delete the following skill from the skills database:', 'You are about to delete the following skills from the skills database:', $rows) ;
204 for($i = 0; $i < $rows; $i++) {
205 echo "<strong> " .db_result($result, $i, 'title') . "</strong><br />";
207 echo "<br />"._('This action cannot be undone.')."<br />";
208 echo _('Are you <strong>sure</strong> you wish to continue?');
210 echo '<form action="'.getStringFromServer('PHP_SELF').'" method="post">';
211 echo '<input type="hidden" name="form_key" value="'.form_generate_key().'">';
212 for($i = 0; $i < $rows; $i ++) {
213 echo '<input type="hidden" name="skill_delete[]" value="'.$skill_delete[$i].'">';
215 echo '<input type="hidden" name="confirmMultiDelete" value="1" />';
216 echo '<input type="submit" name="MultiDelete" value="'._('Confirm').'" />';
217 echo '<input type="submit" name="MultiDeleteCancel" value="'._('Cancel').'" />';
219 people_footer(array());
225 } elseif (getStringFromRequest('MultiDeleteCancel')) {
226 $warning_msg .= _('Skill deletion cancelled');
229 people_header(array('title'=>_('Edit Your Profile')));
231 //for security, include group_id
232 $result = db_query_params("SELECT * FROM users WHERE user_id=$1", array(user_getid()));
234 if (!$result || db_numrows($result) < 1) {
235 $error_msg .= sprintf(_('User fetch FAILED: %s'),db_error());
236 echo '<h2>'._('No Such User').'</h2>';
240 <h2>'._('Edit Public Permissions').'</h2>
241 <form action="'.getStringFromServer('PHP_SELF').'" method="post">
242 '._('The following option determines if others can see your skills. If they can\'t, you can still enter your skills.').'
244 <strong>'._('Publicly Viewable').':</strong><br />
245 <input type="hidden" name="form_key" value="'.form_generate_key().'">
246 <input type="radio" name="people_view_skills" value="0" '. ((db_result($result,0,'people_view_skills')==0)?'checked="checked"':'') .' /> <strong>'._('No').'</strong><br />
247 <input type="radio" name="people_view_skills" value="1" '. ((db_result($result,0,'people_view_skills')==1)?'checked="checked"':'') .' /> <strong>'._('Yes').'</strong></p>
249 <input type="submit" name="update_profile" value="'._('Update Permissions').'"></p>
252 //now show the list of desired skills
253 //echo '<p>'.people_edit_skill_inventory( user_getid() );
255 $skills = db_query_params("SELECT * FROM skills_data_types WHERE type_id > 0", array());
256 if (!$skills || db_numrows($skills) < 1) {
258 $feedback .= _('No skill types in database (skills_data_types table)');
259 echo '<h2>'._('No skill types in database - inform system administrator').'</h2>';
262 $yearArray = array();
263 for($years = date("Y"); $years >= 1980; $years--) {
264 array_push($yearArray,$years);
267 $monthArray = array();
268 $monthArrayVals = array();
269 for($i = 1; $i <= 12; $i++) {
270 array_push($monthArrayVals,($i<10?"0".$i:$i));
271 array_push($monthArray,date("M", mktime(0,0,0,$i,1,1980)));
276 echo '<h2>'._('Add a new skill').'</h2>';
277 echo _('You can enter new skills you have acquired here. Please enter the start and finish dates as accurately as possible.').'<br />'.
278 '<span class="required-field">'._('All fields are required!').'</span>';
279 echo '<form action="'.getStringFromServer('PHP_SELF').'" method="post">';
280 echo' <input type="hidden" name="form_key" value="'.form_generate_key().'">';
281 $cell_data = array();
282 $cell_data[] = array(_('Type'));
283 $cell_data[] = array(_('Start Date'));
284 $cell_data[] = array(_('End Date'));
285 echo "<table border=0 >".
287 $HTML->multiTableRow('',$cell_data,TRUE);
290 <td>".html_build_select_box($skills, "type", 1, false, "")."</td>
291 <td>".html_build_select_box_from_arrays($monthArrayVals,$monthArray, "startM", date("m"), false, "").
292 html_build_select_box_from_arrays($yearArray,$yearArray, "startY", 0, false, "")."</td>
293 <td>".html_build_select_box_from_arrays($monthArrayVals,$monthArray, "endM", date("m"), false, "").
294 html_build_select_box_from_arrays($yearArray,$yearArray, "endY", 0, false, "")."</td>
299 $cell_data = array();
300 $cell_data[] = array(_('Title (max 100 characters)'));
301 echo $HTML->multiTableRow('',$cell_data,TRUE);
304 <td><input type=text name=\"title\" size=100></td>
306 $cell_data = array();
307 $cell_data[] = array(_('Keywords (max 255 characters)'));
308 echo $HTML->multiTableRow('',$cell_data,TRUE);
310 <td><textarea name=\"keywords\" rows=\"3\" cols=\"85\" wrap=\"soft\"></textarea></td>
313 <td><input type=submit name=\"AddSkill\" value=\""._('Add This Skill')."\"></td>
320 echo '<h2>'._('Edit/Delete Your Skills').'</h2>
321 <table border="0" width="100%">';
322 echo '<form action="'.getStringFromServer('PHP_SELF').'" method="post">';
323 displayUserSkills(user_getid(), 1);
329 people_footer(array());
335 exit_not_logged_in();
340 // c-file-style: "bsd"