Пример #1
0
                    }
                    $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>";