本文整理汇总了PHP中db_now函数的典型用法代码示例。如果您正苦于以下问题:PHP db_now函数的具体用法?PHP db_now怎么用?PHP db_now使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了db_now函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: email_queue_add
function email_queue_add($p_email_data)
{
$t_email_data = email_queue_prepare_db($p_email_data);
# email cannot be blank
if (is_blank($t_email_data->email)) {
error_parameters(lang_get('email'));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
# subject cannot be blank
if (is_blank($t_email_data->subject)) {
error_parameters(lang_get('subject'));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
# body cannot be blank
if (is_blank($t_email_data->body)) {
error_parameters(lang_get('body'));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
$t_email_table = config_get('mantis_email_table');
$c_email = $t_email_data->email;
$c_subject = $t_email_data->subject;
$c_body = $t_email_data->body;
$c_metadata = serialize($t_email_data->metadata);
$query = "INSERT INTO {$t_email_table}\r\n\t\t\t\t ( email,\r\n\t\t\t\t subject,\r\n\t\t\t\t\t body,\r\n\t\t\t\t\t submitted,\r\n\t\t\t\t\t metadata)\r\n\t\t\t\t VALUES\r\n\t\t\t\t ( '{$c_email}',\r\n\t\t\t\t '{$c_subject}',\r\n\t\t\t\t '{$c_body}',\r\n\t\t\t\t\t " . db_now() . ",\r\n\t\t\t\t\t '{$c_metadata}'\r\n\t\t\t\t\t)";
db_query($query);
return db_insert_id($t_email_table);
}
示例2: db_ashiato_insert_c_ashiato
/**
* あしあとを付ける
*/
function db_ashiato_insert_c_ashiato($c_member_id_to, $c_member_id_from)
{
// 同一人物の場合は記録しない
if ($c_member_id_to == $c_member_id_from) {
return false;
}
// 一定時間以内の連続アクセスは記録しない
$wait = date('Y-m-d H:i:s', strtotime('-5 minute'));
$sql = 'SELECT c_ashiato_id FROM c_ashiato WHERE r_datetime > ?' . ' AND c_member_id_to = ? AND c_member_id_from = ?';
$params = array($wait, intval($c_member_id_to), intval($c_member_id_from));
if (db_get_one($sql, $params, 'main')) {
return false;
}
// 忍び足
if (USE_SHINOBIASHI) {
if (db_member_is_shinobiashi($c_member_id_from)) {
return false;
}
}
$data = array('c_member_id_from' => intval($c_member_id_from), 'c_member_id_to' => intval($c_member_id_to), 'r_datetime' => db_now(), 'r_date' => db_now());
if (!db_insert('c_ashiato', $data)) {
return false;
}
if ($ashiato_mail_num = db_ashiato_ashiato_mail_num4c_member_id($c_member_id_to)) {
//総足あと数を取得
$ashiato_num = db_ashiato_c_ashiato_num4c_member_id($c_member_id_to);
//あしあとお知らせメールを送る
if ($ashiato_num == $ashiato_mail_num) {
do_common_send_ashiato_mail($c_member_id_to, $c_member_id_from);
}
}
return true;
}
示例3: email_queue_add
/**
* Add to email queue
* @param EmailData $p_email_data
* @return int
*/
function email_queue_add($p_email_data)
{
$t_email_data = email_queue_prepare_db($p_email_data);
# email cannot be blank
if (is_blank($t_email_data->email)) {
error_parameters(lang_get('email'));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
# subject cannot be blank
if (is_blank($t_email_data->subject)) {
error_parameters(lang_get('subject'));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
# body cannot be blank
if (is_blank($t_email_data->body)) {
error_parameters(lang_get('body'));
trigger_error(ERROR_EMPTY_FIELD, ERROR);
}
$t_email_table = db_get_table('mantis_email_table');
$c_email = $t_email_data->email;
$c_subject = $t_email_data->subject;
$c_body = $t_email_data->body;
$c_metadata = serialize($t_email_data->metadata);
$query = "INSERT INTO {$t_email_table}\n\t\t\t\t ( email,\n\t\t\t\t subject,\n\t\t\t\t\t body,\n\t\t\t\t\t submitted,\n\t\t\t\t\t metadata)\n\t\t\t\t VALUES\n\t\t\t\t ( " . db_param() . ",\n\t\t\t\t " . db_param() . ",\n\t\t\t\t " . db_param() . ",\n\t\t\t\t\t " . db_param() . ",\n\t\t\t\t\t " . db_param() . "\n\t\t\t\t\t)";
db_query_bound($query, array($c_email, $c_subject, $c_body, db_now(), $c_metadata));
$t_id = db_insert_id($t_email_table, 'email_id');
log_event(LOG_EMAIL, "message #{$t_id} queued");
return $t_id;
}
示例4: history_log_event_special
/**
* log the changes
* events should be logged *after* the modification
* These are special case logs (new bug, deleted bugnote, etc.)
* @param int $p_bug_id
* @param int $p_type
* @param string $p_optional
* @param string $p_optional2
* @return null
*/
function history_log_event_special($p_bug_id, $p_type, $p_optional = '', $p_optional2 = '')
{
$c_bug_id = db_prepare_int($p_bug_id);
$c_type = db_prepare_int($p_type);
$c_optional = $p_optional;
$c_optional2 = $p_optional2;
$t_user_id = auth_get_current_user_id();
$t_mantis_bug_history_table = db_get_table('mantis_bug_history_table');
$query = "INSERT INTO {$t_mantis_bug_history_table}\n\t\t\t\t\t( user_id, bug_id, date_modified, type, old_value, new_value, field_name )\n\t\t\t\tVALUES\n\t\t\t\t\t( " . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ',' . db_param() . ', ' . db_param() . ')';
$result = db_query_bound($query, array($t_user_id, $c_bug_id, db_now(), $c_type, $c_optional, $c_optional2, ''));
}
示例5: history_log_event_special
function history_log_event_special($p_bug_id, $p_type, $p_optional = '', $p_optional2 = '')
{
$c_bug_id = db_prepare_int($p_bug_id);
$c_type = db_prepare_int($p_type);
$c_optional = db_prepare_string($p_optional);
$c_optional2 = db_prepare_string($p_optional2);
$t_user_id = auth_get_current_user_id();
$t_mantis_bug_history_table = config_get('mantis_bug_history_table');
$query = "INSERT INTO {$t_mantis_bug_history_table}\n\t\t\t\t\t( user_id, bug_id, date_modified, type, old_value, new_value, field_name )\n\t\t\t\tVALUES\n\t\t\t\t\t( '{$t_user_id}', '{$c_bug_id}', " . db_now() . ", '{$c_type}', '{$c_optional}', '{$c_optional2}', '' )";
$result = db_query($query);
}
示例6: bug_revision_add
/**
* Add a new revision to a bug history.
* @param int $p_bug_id Bug ID
* @param int $p_user_id User ID
* @param int $p_type Revision Type
* @param string $p_value Value
* @param int $p_bugnote_id Bugnote ID
* @param int $p_timestamp Timestamp(int)
* @return int Revision ID
*/
function bug_revision_add( $p_bug_id, $p_user_id, $p_type, $p_value, $p_bugnote_id=0, $p_timestamp = null ) {
if ( $p_type <= REV_ANY ) {
return null;
}
$t_bug_rev_table = db_get_table( 'bug_revision' );
$t_last = bug_revision_last( $p_bug_id, $p_type );
# Don't save a revision twice if nothing has changed
if ( !is_null( $t_last ) &&
$p_value == $t_last['value'] ) {
return $t_last['id'];
}
if ( $p_timestamp === null ) {
$t_timestamp = db_now();
} else {
$t_timestamp = $p_timestamp;
}
$t_query = "INSERT INTO $t_bug_rev_table (
bug_id,
bugnote_id,
user_id,
timestamp,
type,
value
) VALUES ( " .
db_param() . ', ' .
db_param() . ', ' .
db_param() . ', ' .
db_param() . ', ' .
db_param() . ', ' .
db_param() .
' )';
db_query_bound( $t_query, array(
$p_bug_id,
$p_bugnote_id,
$p_user_id,
$t_timestamp,
$p_type,
$p_value
) );
return db_insert_id( $t_bug_rev_table );
}
示例7: require_api
require_api('config_api.php');
require_api('constant_inc.php');
require_api('database_api.php');
require_api('form_api.php');
require_api('helper_api.php');
require_api('lang_api.php');
require_api('print_api.php');
require_api('user_api.php');
form_security_validate('manage_user_prune');
auth_reauthenticate();
access_ensure_global_level(config_get('manage_user_threshold'));
# Delete the users who have never logged in and are older than 1 week
$t_days_old = (int) 7 * SECONDS_PER_DAY;
$t_query = 'SELECT id, access_level FROM {user}
WHERE ( login_count = 0 ) AND ( date_created = last_visit ) AND ' . '( protected = 0 ) AND ' . db_helper_compare_time(db_param(), '>', 'date_created', $t_days_old);
$t_result = db_query($t_query, array(db_now()));
if (!$t_result) {
trigger_error(ERROR_GENERIC, ERROR);
}
$t_count = db_num_rows($t_result);
if ($t_count > 0) {
helper_ensure_confirmed(lang_get('confirm_account_pruning'), lang_get('prune_accounts_button'));
}
for ($i = 0; $i < $t_count; $i++) {
$t_row = db_fetch_array($t_result);
# Don't prune accounts with a higher global access level than the current user
if (access_has_global_level($t_row['access_level'])) {
user_delete($t_row['id']);
}
}
form_security_purge('manage_user_prune');
示例8: summary_resolved_bug_count_by_date
/**
* returns the number of bugs resolved in the last X days (default is 1 day) for the current project
*
* @param integer $p_num_days Anumber of days.
* @return integer
*/
function summary_resolved_bug_count_by_date($p_num_days = 1)
{
$t_resolved = config_get('bug_resolved_status_threshold');
$c_time_length = (int) $p_num_days * SECONDS_PER_DAY;
$t_project_id = helper_get_current_project();
$t_specific_where = helper_project_specific_where($t_project_id);
if (' 1<>1' == $t_specific_where) {
return 0;
}
$t_query = 'SELECT COUNT(DISTINCT(b.id))
FROM {bug} b
LEFT JOIN {bug_history} h
ON b.id = h.bug_id
AND h.type = ' . NORMAL_TYPE . '
AND h.field_name = \'status\'
WHERE b.status >= ' . db_param() . '
AND h.old_value < ' . db_param() . '
AND h.new_value >= ' . db_param() . '
AND ' . db_helper_compare_time(db_param(), '<=', 'date_modified', $c_time_length) . '
AND ' . $t_specific_where;
$t_result = db_query($t_query, array($t_resolved, $t_resolved, $t_resolved, db_now()));
return db_result($t_result, 0);
}
示例9: mci_file_add
function mci_file_add($p_id, $p_name, $p_content, $p_file_type, $p_table, $p_title = '', $p_desc = '', $p_user_id = null)
{
if (!file_type_check($p_name)) {
return new soap_fault('Client', '', 'File type not allowed.');
}
if (!file_is_name_unique($p_name, $p_id)) {
return new soap_fault('Client', '', 'Duplicate filename.');
}
$t_file_size = strlen($p_content);
$t_max_file_size = (int) min(ini_get_number('upload_max_filesize'), ini_get_number('post_max_size'), config_get('max_file_size'));
if ($t_file_size > $t_max_file_size) {
return new soap_fault('Client', '', 'File is too big.');
}
if ('bug' == $p_table) {
$t_project_id = bug_get_field($p_id, 'project_id');
$t_issue_id = bug_format_id($p_id);
} else {
$t_project_id = $p_id;
$t_issue_id = 0;
}
# prepare variables for insertion
$c_issue_id = db_prepare_int($t_issue_id);
$c_project_id = db_prepare_int($t_project_id);
$c_file_type = db_prepare_string($p_file_type);
$c_title = db_prepare_string($p_title);
$c_desc = db_prepare_string($p_desc);
if ($p_user_id === null) {
$c_user_id = auth_get_current_user_id();
} else {
$c_user_id = (int) $p_user_id;
}
if ($t_project_id == ALL_PROJECTS) {
$t_file_path = config_get('absolute_path_default_upload_folder');
} else {
$t_file_path = project_get_field($t_project_id, 'file_path');
if ($t_file_path == '') {
$t_file_path = config_get('absolute_path_default_upload_folder');
}
}
$c_file_path = db_prepare_string($t_file_path);
$c_new_file_name = db_prepare_string($p_name);
$t_file_hash = $t_issue_id;
$t_disk_file_name = $t_file_path . file_generate_unique_name($t_file_hash . '-' . $p_name, $t_file_path);
$c_disk_file_name = db_prepare_string($t_disk_file_name);
$t_file_size = strlen($p_content);
$c_file_size = db_prepare_int($t_file_size);
$t_method = config_get('file_upload_method');
switch ($t_method) {
case FTP:
case DISK:
if (!file_exists($t_file_path) || !is_dir($t_file_path) || !is_writable($t_file_path) || !is_readable($t_file_path)) {
return new soap_fault('Server', '', "Upload folder '{$t_file_path}' doesn't exist.");
}
file_ensure_valid_upload_path($t_file_path);
if (!file_exists($t_disk_file_name)) {
mci_file_write_local($t_disk_file_name, $p_content);
if (FTP == $t_method) {
$conn_id = file_ftp_connect();
file_ftp_put($conn_id, $t_disk_file_name, $t_disk_file_name);
file_ftp_disconnect($conn_id);
file_delete_local($t_disk_file_name);
} else {
chmod($t_disk_file_name, config_get('attachments_file_permissions'));
}
$c_content = "''";
}
break;
case DATABASE:
$c_content = db_prepare_binary_string($p_content);
break;
}
$t_file_table = db_get_table($p_table . '_file');
$c_id = 'bug' == $p_table ? $c_issue_id : $c_project_id;
$query = "INSERT INTO {$t_file_table}\n\t\t\t(" . $p_table . "_id, title, description, diskfile, filename, folder, filesize, file_type, date_added, content, user_id)\n\t\tVALUES\n\t\t\t({$c_id}, '{$c_title}', '{$c_desc}', '{$c_disk_file_name}', '{$c_new_file_name}', '{$c_file_path}', {$c_file_size}, '{$c_file_type}', '" . db_now() . "', {$c_content}, {$c_user_id})";
db_query($query);
# get attachment id
$t_attachment_id = db_insert_id($t_file_table);
if ('bug' == $p_table) {
# updated the last_updated date
$result = bug_update_date($c_issue_id);
# log new bug
history_log_event_special($c_issue_id, FILE_ADDED, $c_new_file_name);
}
return $t_attachment_id;
}
示例10: email_queue_add
/**
* Add to email queue
* @param EmailData $p_email_data
* @return int
*/
function email_queue_add( $p_email_data ) {
$t_email_data = email_queue_prepare_db( $p_email_data );
# email cannot be blank
if( is_blank( $t_email_data->email ) ) {
error_parameters( lang_get( 'email' ) );
trigger_error( ERROR_EMPTY_FIELD, ERROR );
}
# subject cannot be blank
if( is_blank( $t_email_data->subject ) ) {
error_parameters( lang_get( 'subject' ) );
trigger_error( ERROR_EMPTY_FIELD, ERROR );
}
# body cannot be blank
if( is_blank( $t_email_data->body ) ) {
error_parameters( lang_get( 'body' ) );
trigger_error( ERROR_EMPTY_FIELD, ERROR );
}
$t_email_table = db_get_table( 'email' );
$c_email = $t_email_data->email;
$c_subject = $t_email_data->subject;
$c_body = $t_email_data->body;
$c_metadata = serialize( $t_email_data->metadata );
$query = "INSERT INTO $t_email_table
( email,
subject,
body,
submitted,
metadata)
VALUES
( " . db_param() . ",
" . db_param() . ",
" . db_param() . ",
" . db_param() . ",
" . db_param() . "
)";
db_query_bound( $query, Array( $c_email, $c_subject, $c_body, db_now(), $c_metadata ) );
return db_insert_id( $t_email_table, 'email_id' );
}
示例11: user_update_last_visit
function user_update_last_visit($p_user_id)
{
$c_user_id = db_prepare_int($p_user_id);
$t_user_table = config_get('mantis_user_table');
$query = "UPDATE {$t_user_table}\n\t\t\t\t SET last_visit= " . db_now() . "\n\t\t\t\t WHERE id='{$c_user_id}'";
db_query($query);
user_clear_cache($p_user_id);
# db_query() errors on failure so:
return true;
}
示例12: file_add
/**
* Add a file to the system using the configured storage method
*
* @param integer $p_bug_id The bug id (should be 0 when adding project doc).
* @param array $p_file The uploaded file info, as retrieved from gpc_get_file().
* @param string $p_table Either 'bug' or 'project' depending on attachment type.
* @param string $p_title File title.
* @param string $p_desc File description.
* @param integer $p_user_id User id (defaults to current user).
* @param integer $p_date_added Date added.
* @param boolean $p_skip_bug_update Skip bug last modification update (useful when importing bug attachments).
* @return void
*/
function file_add($p_bug_id, array $p_file, $p_table = 'bug', $p_title = '', $p_desc = '', $p_user_id = null, $p_date_added = 0, $p_skip_bug_update = false)
{
file_ensure_uploaded($p_file);
$t_file_name = $p_file['name'];
$t_tmp_file = $p_file['tmp_name'];
if (!file_type_check($t_file_name)) {
trigger_error(ERROR_FILE_NOT_ALLOWED, ERROR);
}
if (!file_is_name_unique($t_file_name, $p_bug_id)) {
trigger_error(ERROR_FILE_DUPLICATE, ERROR);
}
$t_file_size = filesize($t_tmp_file);
if (0 == $t_file_size) {
trigger_error(ERROR_FILE_NO_UPLOAD_FAILURE, ERROR);
}
$t_max_file_size = (int) min(ini_get_number('upload_max_filesize'), ini_get_number('post_max_size'), config_get('max_file_size'));
if ($t_file_size > $t_max_file_size) {
trigger_error(ERROR_FILE_TOO_BIG, ERROR);
}
if ('bug' == $p_table) {
$t_project_id = bug_get_field($p_bug_id, 'project_id');
$t_id = (int) $p_bug_id;
$t_bug_id = bug_format_id($p_bug_id);
} else {
$t_project_id = helper_get_current_project();
$t_id = $t_project_id;
$t_bug_id = 0;
}
if ($p_user_id === null) {
$p_user_id = auth_get_current_user_id();
}
if ($p_date_added <= 0) {
$p_date_added = db_now();
}
if ($t_project_id == ALL_PROJECTS) {
$t_file_path = config_get('absolute_path_default_upload_folder');
} else {
$t_file_path = project_get_field($t_project_id, 'file_path');
if (is_blank($t_file_path)) {
$t_file_path = config_get('absolute_path_default_upload_folder');
}
}
$t_unique_name = file_generate_unique_name($t_file_path);
$t_method = config_get('file_upload_method');
switch ($t_method) {
case DISK:
file_ensure_valid_upload_path($t_file_path);
$t_disk_file_name = $t_file_path . $t_unique_name;
if (!file_exists($t_disk_file_name)) {
if (!move_uploaded_file($t_tmp_file, $t_disk_file_name)) {
trigger_error(ERROR_FILE_MOVE_FAILED, ERROR);
}
chmod($t_disk_file_name, config_get('attachments_file_permissions'));
$c_content = '';
} else {
trigger_error(ERROR_FILE_DUPLICATE, ERROR);
}
break;
case DATABASE:
$c_content = db_prepare_binary_string(fread(fopen($t_tmp_file, 'rb'), $t_file_size));
$t_file_path = '';
break;
default:
trigger_error(ERROR_GENERIC, ERROR);
}
$t_file_table = db_get_table($p_table . '_file');
$t_id_col = $p_table . '_id';
$t_query = 'INSERT INTO ' . $t_file_table . ' ( ' . $t_id_col . ', title, description, diskfile, filename, folder,
filesize, file_type, date_added, user_id )
VALUES
( ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ' )';
db_query($t_query, array($t_id, $p_title, $p_desc, $t_unique_name, $t_file_name, $t_file_path, $t_file_size, $p_file['type'], $p_date_added, (int) $p_user_id));
$t_attachment_id = db_insert_id($t_file_table);
if (db_is_oracle()) {
db_update_blob($t_file_table, 'content', $c_content, 'diskfile=\'$t_unique_name\'');
} else {
$t_query = 'UPDATE ' . $t_file_table . ' SET content=' . db_param() . ' WHERE id = ' . db_param();
db_query($t_query, array($c_content, $t_attachment_id));
}
if ('bug' == $p_table) {
# update the last_updated date
if (!$p_skip_bug_update) {
bug_update_date($p_bug_id);
}
# log file added to bug history
history_log_event_special($p_bug_id, FILE_ADDED, $t_file_name);
}
//.........这里部分代码省略.........
示例13: version_add
/**
* Add a version to the project
* @param int $p_project_id
* @param string $p_version
* @param int $p_released
* @param string $p_description
* @param int $p_date_order
* @param bool $p_obsolete
* @return int
*/
function version_add($p_project_id, $p_version, $p_released = VERSION_FUTURE, $p_description = '', $p_date_order = null, $p_obsolete = false)
{
$c_project_id = db_prepare_int($p_project_id);
$c_released = db_prepare_int($p_released);
$c_obsolete = db_prepare_bool($p_obsolete);
if (null === $p_date_order) {
$c_date_order = db_now();
} else {
$c_date_order = $p_date_order;
}
version_ensure_unique($p_version, $p_project_id);
$t_project_version_table = db_get_table('project_version');
$query = "INSERT INTO {$t_project_version_table}\n\t\t\t\t\t( project_id, version, date_order, description, released, obsolete )\n\t\t\t\t VALUES\n\t\t\t\t\t(" . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ' )';
db_query_bound($query, array($c_project_id, $p_version, $c_date_order, $p_description, $c_released, $c_obsolete));
# db_query errors on failure so:
return db_insert_id($t_project_version_table);
}
示例14: db_query_bound
if ($t_page_count < 1) {
$t_page_count = 1;
}
# Make sure $p_page_number isn't past the last page.
if ($f_page_number > $t_page_count) {
$f_page_number = $t_page_count;
}
# Make sure $p_page_number isn't before the first page
if ($f_page_number < 1) {
$f_page_number = 1;
}
if (0 == $c_hide_inactive) {
$query = "SELECT *\n\t\t\t\tFROM {$t_user_table}\n\t\t\t\tWHERE {$t_where}\n\t\t\t\t{$t_show_disabled_cond}\n\t\t\t\tORDER BY {$c_sort} {$c_dir}";
$result = db_query_bound($query, $t_where_params, $p_per_page, $t_offset);
} else {
$query = "SELECT *\n\t\t\t\tFROM {$t_user_table}\n\t\t\t\tWHERE {$t_where} AND " . db_helper_compare_days("" . db_now() . "", "last_visit", "< {$days_old}") . "\n\t\t\t\t{$t_show_disabled_cond}\n\t\t\t\tORDER BY {$c_sort} {$c_dir}";
$result = db_query_bound($query, $t_where_params, $p_per_page, $t_offset);
}
$user_count = db_num_rows($result);
?>
<br />
<table class="width100" cellspacing="1">
<tr>
<td class="form-title" colspan="5">
<?php
echo lang_get('manage_accounts_title');
?>
[<?php
echo $total_user_count;
?>
]
示例15: file_add
/**
* Add a file to the system using the configured storage method
*
* @param integer $p_bug_id the bug id
* @param array $p_file the uploaded file info, as retrieved from gpc_get_file()
*/
function file_add($p_bug_id, $p_file, $p_table = 'bug', $p_title = '', $p_desc = '', $p_user_id = null)
{
file_ensure_uploaded($p_file);
$t_file_name = $p_file['name'];
$t_tmp_file = $p_file['tmp_name'];
if (!file_type_check($t_file_name)) {
trigger_error(ERROR_FILE_NOT_ALLOWED, ERROR);
}
if (!file_is_name_unique($t_file_name, $p_bug_id)) {
trigger_error(ERROR_FILE_DUPLICATE, ERROR);
}
if ('bug' == $p_table) {
$t_project_id = bug_get_field($p_bug_id, 'project_id');
$t_bug_id = bug_format_id($p_bug_id);
} else {
$t_project_id = helper_get_current_project();
$t_bug_id = 0;
}
if ($p_user_id === null) {
$c_user_id = auth_get_current_user_id();
} else {
$c_user_id = (int) $p_user_id;
}
# prepare variables for insertion
$c_bug_id = db_prepare_int($p_bug_id);
$c_project_id = db_prepare_int($t_project_id);
$c_file_type = db_prepare_string($p_file['type']);
$c_title = db_prepare_string($p_title);
$c_desc = db_prepare_string($p_desc);
if ($t_project_id == ALL_PROJECTS) {
$t_file_path = config_get('absolute_path_default_upload_folder');
} else {
$t_file_path = project_get_field($t_project_id, 'file_path');
if (is_blank($t_file_path)) {
$t_file_path = config_get('absolute_path_default_upload_folder');
}
}
$c_file_path = db_prepare_string($t_file_path);
$c_new_file_name = db_prepare_string($t_file_name);
$t_file_hash = 'bug' == $p_table ? $t_bug_id : config_get('document_files_prefix') . '-' . $t_project_id;
$t_unique_name = file_generate_unique_name($t_file_hash . '-' . $t_file_name, $t_file_path);
$t_disk_file_name = $t_file_path . $t_unique_name;
$c_unique_name = db_prepare_string($t_unique_name);
$t_file_size = filesize($t_tmp_file);
if (0 == $t_file_size) {
trigger_error(ERROR_FILE_NO_UPLOAD_FAILURE, ERROR);
}
$t_max_file_size = (int) min(ini_get_number('upload_max_filesize'), ini_get_number('post_max_size'), config_get('max_file_size'));
if ($t_file_size > $t_max_file_size) {
trigger_error(ERROR_FILE_TOO_BIG, ERROR);
}
$c_file_size = db_prepare_int($t_file_size);
$t_method = config_get('file_upload_method');
switch ($t_method) {
case FTP:
case DISK:
file_ensure_valid_upload_path($t_file_path);
if (!file_exists($t_disk_file_name)) {
if (FTP == $t_method) {
$conn_id = file_ftp_connect();
file_ftp_put($conn_id, $t_disk_file_name, $t_tmp_file);
file_ftp_disconnect($conn_id);
}
if (!move_uploaded_file($t_tmp_file, $t_disk_file_name)) {
trigger_error(ERROR_FILE_MOVE_FAILED, ERROR);
}
chmod($t_disk_file_name, config_get('attachments_file_permissions'));
$c_content = "''";
} else {
trigger_error(ERROR_FILE_DUPLICATE, ERROR);
}
break;
case DATABASE:
$c_content = db_prepare_binary_string(fread(fopen($t_tmp_file, 'rb'), $t_file_size));
break;
default:
trigger_error(ERROR_GENERIC, ERROR);
}
$t_file_table = db_get_table('mantis_' . $p_table . '_file_table');
$c_id = 'bug' == $p_table ? $c_bug_id : $c_project_id;
$query = "INSERT INTO {$t_file_table}\n\t\t\t\t\t\t(" . $p_table . "_id, title, description, diskfile, filename, folder, filesize, file_type, date_added, content, user_id)\n\t\t\t\t\t VALUES\n\t\t\t\t\t\t({$c_id}, '{$c_title}', '{$c_desc}', '{$c_unique_name}', '{$c_new_file_name}', '{$c_file_path}', {$c_file_size}, '{$c_file_type}', '" . db_now() . "', {$c_content}, {$c_user_id})";
db_query($query);
if ('bug' == $p_table) {
# updated the last_updated date
$result = bug_update_date($p_bug_id);
# log new bug
history_log_event_special($p_bug_id, FILE_ADDED, $t_file_name);
}
}