4 * Skills input/update page.
6 * Portions Copyright 1999-2001 (c) VA Linux Systems
7 * The rest Copyright 2002 (c) Silicon and Software Systems (S3)
11 require_once('../env.inc.php');
12 require_once $gfwww.'include/pre.php';
13 require_once $gfwww.'people/people_utils.php';
14 require_once $gfwww.'people/skills_utils.php';
16 if (!forge_get_config('use_people')) {
20 $group_id = getIntFromRequest('group_id');
21 $job_id = getStringFromRequest('job_id');
24 if (session_loggedin()) {
26 if (getStringFromRequest('update_profile')) {
27 $people_view_skills = getStringFromRequest('people_view_skills');
30 update the job's description, status, etc
32 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
33 exit_form_double_submit();
36 $result=db_query_params('UPDATE users SET people_view_skills=$1
37 WHERE user_id=$2', array($people_view_skills, $user_getid()));
38 if (!$result || db_affected_rows($result) < 1) {
39 form_release_key(getStringFromRequest("form_key"));
40 $feedback .= _('User update FAILED');
43 $feedback .= _('User updated successfully');
46 } else if (getStringFromRequest('AddSkill')) {
47 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
48 exit_form_double_submit();
51 $type = getStringFromRequest('type');
52 $title = getStringFromRequest('title');
53 $startM = getStringFromRequest('startM');
54 $startY = getStringFromRequest('startY');
55 $endM = getStringFromRequest('endM');
56 $endY = getStringFromRequest('endY');
57 $keywords = getStringFromRequest('keywords');
59 if($type && $title && $startM && $startY && $endM && $endY && $keywords) {
60 $start = $startY.$startM;
61 $finish = $endY.$endM;
63 $title = substr($title, 0, 100); /* delimit the title to 100 chars */
64 $keywords = substr($keywords, 0, 255); /* ditto the keywords. */
66 $keywords = str_replace("\n", " ", $keywords); /* strip out any backspace characters. */
67 $title = str_replace("\n", " ", $title);
70 $result = db_query_params("SELECT * from skills_data where user_id = $1
76 array($user_getid(), $type, $title, $start, $finish, $keywords));
78 if (db_numrows($result) >= 1) {
79 $feedback .= ''; /* don't tell them anything! */
81 $result = db_query_params("INSERT into skills_data (user_id, type, title, start, finish, keywords) values
82 ($1, $2, $3, $4, $5, $6)",array(user_getid(), $type, $title, $start, $finish, $keywords));
84 if (!$result || db_affected_rows($result) < 1) {
85 form_release_key(getStringFromRequest("form_key"));
87 $feedback .= _('Failed to add the skill');
88 echo '<h2>'._('Failed to add the skill').'<h2>';
90 $feedback = _('Skill added successfully');
94 form_release_key(getStringFromRequest("form_key"));
95 exit_error(_('error - missing info'),_('Fill in all required fields'));
98 if (getStringFromRequest('MultiEdit')) {
99 $type = getStringFromRequest('type');
100 $title = getStringFromRequest('title');
101 $startM = getStringFromRequest('startM');
102 $startY = getStringFromRequest('startY');
103 $endM = getStringFromRequest('endM');
104 $endY = getStringFromRequest('endY');
105 $keywords = getStringFromRequest('keywords');
106 $skill_edit = getStringFromRequest('skill_edit');
108 $numItems = count($skill_edit);
110 $feedback .= _('No skills selected to edit.');
112 if (getStringFromRequest('confirmMultiEdit')) {
113 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
114 exit_form_double_submit();
117 for($i = 0; $i < $numItems; $i++) {
118 $title[$i] = substr($title[$i], 0, 100); /* delimit the title to 100 chars */
119 $keywords[$i] = substr($keywords[$i], 0, 255); /* ditto the keywords. */
121 $keywords[$i] = str_replace("\n", " ", $keywords[$i]); /* strip out any backspace characters. */
122 $title[$i] = str_replace("\n", " ", $title[$i]);
123 $result = db_query_params("UPDATE skills_data SET type=$1 ,title=$2 ,start=$3,finish=$4, keywords=$5 WHERE skills_data_id=$6",
124 array($type[$i], $title[$i], $startY[$i].$startM[$i], $endY[$i].$endM[$i], $keywords[$i], $skill_edit[$i]));
126 if (!$result || db_affected_rows($result) < 1) {
128 $feedback = _('Failed to update skills');
131 $feedback = ngettext ('Skill updated', 'Skills updated', db_affected_rows($result));
135 } else /* not confirmed multiedit */ {
136 people_header(array('title'=>_('Skills edit')));
137 echo '<span class="important">'._('Edit Skills').'</span>';
138 echo _('Change the required fields, and press "Done" at the bottom of the page');
139 echo '<form action="'.getStringFromServer('PHP_SELF').'" method="post">';
140 echo '<input type="hidden" name="form_key" value="'.form_generate_key().'">';
141 handle_multi_edit($skill_edit);
142 echo '<input type="hidden" name="confirmMultiEdit" value="1" />';
143 echo '<input type="submit" name="MultiEdit" value="'._('Done').'" />';
144 echo '<input type="submit" name="cancelMultiEdit" value="'._('Cancel').'" />';
146 people_footer(array());
150 } else if (getStringFromRequest('cancelMultiEdit')) {
151 $feedback = _('Cancelled skills update');
154 if (getStringFromRequest('MultiDelete')) {
155 $unfiltered_skill_delete_array = getArrayFromRequest('skill_delete');
156 $skill_delete = array() ;
157 foreach ($unfiltered_skill_delete AS $usd) {
158 if (is_numeric ($usd)) {
159 $skill_delete[] = $usd;
162 $numItems = count($skill_delete);
164 $feedback .= _('No skills selected to delete.');
166 if(getStringFromRequest('confirmMultiDelete')) {
167 if (!form_key_is_valid(getStringFromRequest('form_key'))) {
168 exit_form_double_submit();
170 $result = db_query_params ('DELETE FROM skills_data where skills_data_id = ANY ($1)',
171 array (db_int_array_to_any_clause ($skill_delete)));
172 if (!$result || db_affected_rows($result) < 1) {
174 $feedback .= _('Failed to delete any skills');
175 echo '<h2>'._('Failed to delete any skills').'<h2>';
177 $feedback = ngettext ('Skill deleted successfully', 'Skills deleted successfully', db_affected_rows($result));
180 $result = db_query_params ('SELECT title FROM skills_data where skills_data_id = ANY ($1)',
181 array (db_int_array_to_any_clause ($skill_delete)));
182 $rows = db_numrows($result);
183 if (!$result || $rows < 1) {
186 people_header(array('title'=>_('Confirm skill delete')));
188 echo '<span class="important">'._('Confirm Delete').'</span>';
189 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) ;
191 for($i = 0; $i < $rows; $i++) {
192 echo "<strong> " .db_result($result, $i, 'title') . "</strong><br />";
194 echo "<br />"._('This action cannot be undone.')."<br /><br />";
195 echo _('Are you <strong>sure</strong> you wish to continue?');
197 echo '<form action="'.getStringFromServer('PHP_SELF').'" method="post">';
198 echo '<input type="hidden" name="form_key" value="'.form_generate_key().'">';
199 for($i = 0; $i < $rows; $i ++) {
200 echo '<input type="hidden" name="skill_delete[]" value="'.$skill_delete[$i].'">';
202 echo '<input type="hidden" name="confirmMultiDelete" value="1" />';
203 echo '<input type="submit" name="MultiDelete" value="'._('Confirm').'" />';
204 echo '<input type="submit" name="MultiDeleteCancel" value="'._('Cancel').'" />';
206 people_footer(array());
212 } elseif (getStringFromRequest('MultiDeleteCancel')) {
213 $feedback .= _('Skill deletion cancelled');
216 people_header(array('title'=>_('Edit Your Profile')));
218 html_feedback_top($feedback);
220 //for security, include group_id
221 $result = db_query_params("SELECT * FROM users WHERE user_id=$1", array(user_getid()));
223 if (!$result || db_numrows($result) < 1) {
225 $feedback .= _('User fetch FAILED');
226 echo '<h2>'._('No Such User').'<h2>';
230 <h2>'._('Edit Public Permissions').'<h2>
231 <form action="'.getStringFromServer('PHP_SELF').'" method="post">
232 '._('The following option determines if others can see your skills. If they can\'t, you can still enter your skills.').'
234 <strong>'._('Publicly Viewable').':</strong><br />
235 <input type="hidden" name="form_key" value="'.form_generate_key().'">
236 <input type="radio" name="people_view_skills" value="0" '. ((db_result($result,0,'people_view_skills')==0)?'checked="checked"':'') .' /> <strong>'._('No').'</strong><br />
237 <input type="radio" name="people_view_skills" value="1" '. ((db_result($result,0,'people_view_skills')==1)?'checked="checked"':'') .' /> <strong>'._('Yes').'</strong><br /></p>
239 <input type="submit" name="update_profile" value="'._('Update Permissions').'"></p>
242 //now show the list of desired skills
243 //echo '<p>'.people_edit_skill_inventory( user_getid() );
245 $skills = db_query_params("SELECT * FROM skills_data_types WHERE type_id > 0", array());
246 if (!$skills || db_numrows($skills) < 1) {
248 $feedback .= _('No skill types in database (skills_data_types table)');
249 echo '<h2>'._('No skill types in database - inform system administrator').'<h2>';
252 $yearArray = array();
253 for($years = date("Y"); $years >= 1980; $years--) {
254 array_push($yearArray,$years);
257 $monthArray = array();
258 $monthArrayVals = array();
259 for($i = 1; $i <= 12; $i++) {
260 array_push($monthArrayVals,($i<10?"0".$i:$i));
261 array_push($monthArray,date("M", mktime(0,0,0,$i,1,1980)));
266 echo '<h2>'._('Add a new skill').'</h2>';
267 echo _('You can enter new skills you have acquired here. Please enter the start and finish dates as accurately as possible.').'<br />'.
268 '<span class="required-field">'._('All fields are required!').'</span>';
269 echo '<form action="'.getStringFromServer('PHP_SELF').'" method="post">';
270 echo' <input type="hidden" name="form_key" value="'.form_generate_key().'">';
271 $cell_data = array();
272 $cell_data[] = array(_('Type'));
273 $cell_data[] = array(_('Start Date'));
274 $cell_data[] = array(_('End Date'));
275 echo "<table border=0 >".
277 $HTML->multiTableRow('',$cell_data,TRUE);
280 <td>".html_build_select_box($skills, "type", 1, false, "")."</td>
281 <td>".html_build_select_box_from_arrays($monthArrayVals,$monthArray, "startM", date("m"), false, "").
282 html_build_select_box_from_arrays($yearArray,$yearArray, "startY", 0, false, "")."</td>
283 <td>".html_build_select_box_from_arrays($monthArrayVals,$monthArray, "endM", date("m"), false, "").
284 html_build_select_box_from_arrays($yearArray,$yearArray, "endY", 0, false, "")."</td>
289 $cell_data = array();
290 $cell_data[] = array(_('Title (max 100 characters)'));
291 echo $HTML->multiTableRow('',$cell_data,TRUE);
294 <td><input type=text name=\"title\" size=100></td>
296 $cell_data = array();
297 $cell_data[] = array(_('Keywords (max 255 characters)'));
298 echo $HTML->multiTableRow('',$cell_data,TRUE);
300 <td><textarea name=\"keywords\" rows=\"3\" cols=\"85\" wrap=\"soft\"></textarea></td>
303 <td><input type=submit name=\"AddSkill\" value=\""._('Add This Skill')."\"></td>
310 echo '<h2>'._('Edit/Delete Your Skills').'</h2>
311 <table border="0" width="100%">';
312 echo '<form action="'.getStringFromServer('PHP_SELF').'" method="post">';
313 displayUserSkills(user_getid(), 1);
319 people_footer(array());
325 exit_not_logged_in();
330 // c-file-style: "bsd"