} $i_timeInMinutes = $a_timeUnits[0] * 60 + $a_timeUnits[1]; break; case 'dot': case 'comma': $i_timeInMinutes = $a_timeUnits[0] * 60 + round($a_timeUnits[1] / pow(10, strlen($a_timeUnits[1])) * 60); break; } } } # build XML request for MITE API $s_postRequest = sprintf(" \n\t\t\t<time-entry>\n\t\t\t\t<date-at>%s</date-at>\n\t\t\t\t<minutes>%d</minutes>\n\t\t\t\t<note>%s</note>\n\t\t\t \t<service-id>%d</service-id>\n\t\t\t \t<project-id>%d</project-id>\n\t\t\t</time-entry>", Mantis2mitePlugin::mysqlDate($a_data['plugin_mite_date_new_time_entry']), intval($i_timeInMinutes), urldecode($s_note), intval($a_data['plugin_mite_services_new_time_entry']), intval($a_data['plugin_mite_projects_new_time_entry'])); try { $o_responseXml = $o_miteRemote->sendRequest('post', '/time_entries.xml', $s_postRequest); # add the time entry to the database $s_query = sprintf("\n\t\t INSERT INTO {$s_tableTimeEntries}\n\t\t\t\t (user_id,bug_id,mite_time_entry_id,mite_project_id,mite_service_id,\n\t\t\t\t mite_duration,mite_date_at,mite_note,created_at,updated_at)\n\t\t \t\tVALUES (%d, %d, %d, %d, %d, %d, '%s', '%s', '%s', '%s')", auth_get_current_user_id(), intval($a_data['plugin_mite_current_bug']), intval($o_responseXml->id), intval($a_data['plugin_mite_projects_new_time_entry']), intval($a_data['plugin_mite_services_new_time_entry']), $i_timeInMinutes, Mantis2mitePlugin::mysqlDate($o_responseXml->{'date-at'}, true), htmlentities($s_note, ENT_QUOTES, 'UTF-8'), Mantis2mitePlugin::mysqlDate($o_responseXml->{'created-at'}), Mantis2mitePlugin::mysqlDate($o_responseXml->{'created-at'})); $r_result = db_query_bound($s_query); } catch (Exception $e) { # EXIT on function errors echo "<error>" . $e->getMessage() . "</error>"; exit; } } elseif ($_POST['action'] == 'deleteEntry') { try { $o_miteRemote->sendRequest('delete', '/time_entries/' . $a_data['mite_id'] . ".xml"); } catch (Exception $e) { # EXIT on function errors echo "<error>" . $e->getMessage() . "</error>"; } # delete entry from the Mantis database $s_query = sprintf(" \n\t DELETE FROM {$s_tableTimeEntries}\n\t\t\t WHERE mite_time_entry_id = %d AND user_id = %d", $a_data['mite_id'], auth_get_current_user_id());
# append the customer name to a project name that belongs to more than one customers if ($s_type == Mantis2mitePlugin::API_RSRC_P && count($a_miteProjectNames[$s_entryName]) > 1) { $s_entryName .= " (" . $a_miteProjectNames[$s_entryName][$i_idEntryPossiblyModified] . ")"; } $a_logs[$s_type][] = "Updated entry from name='" . $a_tmpEntryMantis['name'] . "' to name='" . $s_entryName . "' " . "on '" . $a_fieldNamesMiteRsrc_id[$s_type] . "=" . $i_idEntryPossiblyModified . "'"; $a_queries[] = sprintf(" \n\t\t\t\t\tUPDATE " . $s_DBTable_mps . " \n\t\t\t\t\tSET name = '%s', mite_updated_at = '%s'\n\t\t\t\t\tWHERE id = %d", Mantis2mitePlugin::encodeValue($s_entryName), $a_tmpEntryMite['mite_updated_at'], $a_tmpEntryMantis['id']); } } } # execute the database queries for ($i = 0; $i < count($a_queries); $i++) { $r_result = db_query_bound($a_queries[$i]); } # set connection verified flag in the database user_set_field($i_userId, Mantis2mitePlugin::DB_FIELD_CONNECT_VERIFIED, 1); # update last update value user_set_field($i_userId, Mantis2mitePlugin::DB_FIELD_CONNECT_LAST_UPDATED, Mantis2mitePlugin::mysqlDate()); # save the account name user_set_field($i_userId, Mantis2mitePlugin::DB_FIELD_ACCOUNT_NAME, Mantis2mitePlugin::encodeValue($_POST[Mantis2mitePlugin::DB_FIELD_ACCOUNT_NAME])); # save the API key user_set_field($i_userId, Mantis2mitePlugin::DB_FIELD_API_KEY, Mantis2mitePlugin::encodeValue($_POST[Mantis2mitePlugin::DB_FIELD_API_KEY])); # build xml log messages foreach ($a_logs as $s_type => $a_messages) { foreach ($a_messages as $s_message) { $s_xmlMsg .= "<message data='" . $s_type . "'>" . $s_message . "</message>"; } } # force re-initialization of session stored user values session_set('plugin_mite_status_session_vars', 'reinit'); # return xml log messages echo "<messages datetimestamp='" . date('Y-m-d H:i:s') . "'>" . $s_xmlMsg . "</messages>";