本文整理汇总了PHP中file_ensure_valid_upload_path函数的典型用法代码示例。如果您正苦于以下问题:PHP file_ensure_valid_upload_path函数的具体用法?PHP file_ensure_valid_upload_path怎么用?PHP file_ensure_valid_upload_path使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了file_ensure_valid_upload_path函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: validate_project_file_path
/**
* Make sure that the project file path is valid: add trailing slash and
* set it to blank if equal to default path
* @param string $p_file_path
* @return string
* @access public
*/
function validate_project_file_path($p_file_path)
{
if (!is_blank($p_file_path)) {
# Make sure file path has trailing slash
$p_file_path = terminate_directory_path($p_file_path);
# If the provided path is the same as the default, make the path blank.
# This means that if the default upload path is changed, you don't have
# to update the upload path for every single project.
if (!strcmp($p_file_path, config_get('absolute_path_default_upload_folder'))) {
$p_file_path = '';
} else {
file_ensure_valid_upload_path($p_file_path);
}
}
return $p_file_path;
}
示例2: 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;
}
示例3: file_move_bug_attachments
/**
* Move any attachments as needed when a bug is moved from project to project.
*
* @param integer $p_bug_id ID of bug containing attachments to be moved.
* @param integer $p_project_id_to Destination project ID for the bug.
* @return void
*
* @todo: this function can't cope with source or target storing attachments in DB
*/
function file_move_bug_attachments($p_bug_id, $p_project_id_to)
{
$t_project_id_from = bug_get_field($p_bug_id, 'project_id');
if ($t_project_id_from == $p_project_id_to) {
return;
}
$t_method = config_get('file_upload_method');
if ($t_method != DISK) {
return;
}
if (!file_bug_has_attachments($p_bug_id)) {
return;
}
$t_path_from = project_get_field($t_project_id_from, 'file_path');
if (is_blank($t_path_from)) {
$t_path_from = config_get('absolute_path_default_upload_folder', null, null, $t_project_id_from);
}
file_ensure_valid_upload_path($t_path_from);
$t_path_to = project_get_field($p_project_id_to, 'file_path');
if (is_blank($t_path_to)) {
$t_path_to = config_get('absolute_path_default_upload_folder', null, null, $p_project_id_to);
}
file_ensure_valid_upload_path($t_path_to);
if ($t_path_from == $t_path_to) {
return;
}
# Initialize the update query to update a single row
$c_bug_id = (int) $p_bug_id;
$t_query_disk_attachment_update = 'UPDATE {bug_file}
SET folder=' . db_param() . '
WHERE bug_id=' . db_param() . '
AND id =' . db_param();
$t_attachment_rows = bug_get_attachments($p_bug_id);
$t_attachments_count = count($t_attachment_rows);
for ($i = 0; $i < $t_attachments_count; $i++) {
$t_row = $t_attachment_rows[$i];
$t_basename = basename($t_row['diskfile']);
$t_disk_file_name_from = file_path_combine($t_path_from, $t_basename);
$t_disk_file_name_to = file_path_combine($t_path_to, $t_basename);
if (!file_exists($t_disk_file_name_to)) {
chmod($t_disk_file_name_from, 0775);
if (!rename($t_disk_file_name_from, $t_disk_file_name_to)) {
if (!copy($t_disk_file_name_from, $t_disk_file_name_to)) {
trigger_error(ERROR_FILE_MOVE_FAILED, ERROR);
}
file_delete_local($t_disk_file_name_from);
}
chmod($t_disk_file_name_to, config_get('attachments_file_permissions'));
db_query($t_query_disk_attachment_update, array(db_prepare_string($t_path_to), $c_bug_id, (int) $t_row['id']));
} else {
trigger_error(ERROR_FILE_DUPLICATE, ERROR);
}
}
}
示例4: file_get_field
$t_disk_file_name = file_get_field($f_file_id, 'diskfile', 'project');
$t_file_path = dirname($t_disk_file_name);
# prepare variables for insertion
$c_file_name = db_prepare_string($v_name);
$c_file_type = db_prepare_string($v_type);
$t_file_size = filesize($v_tmp_name);
$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 (FTP == $t_method) {
$conn_id = file_ftp_connect();
file_ftp_delete($conn_id, $t_disk_file_name);
file_ftp_put($conn_id, $t_disk_file_name, $v_tmp_name);
file_ftp_disconnect($conn_id);
}
if (file_exists($t_disk_file_name)) {
file_delete_local($t_disk_file_name);
}
if (!move_uploaded_file($v_tmp_name, $t_disk_file_name)) {
trigger_error(ERROR_FILE_MOVE_FAILED, ERROR);
}
chmod($t_disk_file_name, config_get('attachments_file_permissions'));
$c_content = '';
break;
示例5: 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);
}
}
示例6: mci_file_add
/**
* Add a file
* @param integer $p_id File id.
* @param string $p_name File name.
* @param string $p_content File content to write.
* @param string $p_file_type File type.
* @param string $p_table Database table name.
* @param string $p_title Title.
* @param string $p_desc Description.
* @param string $p_user_id User id.
* @return mixed
*/
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 SoapObjectsFactory::newSoapFault('Client', 'File type not allowed.');
}
if (!file_is_name_unique($p_name, $p_id)) {
return SoapObjectsFactory::newSoapFault('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 SoapObjectsFactory::newSoapFault('Client', 'File is too big.');
}
if ('bug' == $p_table) {
$t_project_id = bug_get_field($p_id, 'project_id');
$t_id = (int) $p_id;
$t_issue_id = bug_format_id($p_id);
} else {
$t_project_id = $p_id;
$t_id = $t_project_id;
$t_issue_id = 0;
}
if ($p_user_id === null) {
$p_user_id = auth_get_current_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 (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_disk_file_name = $t_file_path . $t_unique_name;
$t_method = config_get('file_upload_method');
switch ($t_method) {
case DISK:
if (!file_exists($t_file_path) || !is_dir($t_file_path) || !is_writable($t_file_path) || !is_readable($t_file_path)) {
return SoapObjectsFactory::newSoapFault('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);
chmod($t_disk_file_name, config_get('attachments_file_permissions'));
$c_content = "''";
}
break;
case DATABASE:
$c_content = db_prepare_binary_string($p_content);
$t_file_path = '';
break;
}
$t_file_table = db_get_table($p_table . '_file');
$t_id_col = $p_table . '_id';
$t_param = array($t_id_col => $t_id, 'title' => $p_title, 'description' => $p_desc, 'diskfile' => $t_unique_name, 'filename' => $p_name, 'folder' => $t_file_path, 'filesize' => $t_file_size, 'file_type' => $p_file_type, 'date_added' => db_now(), 'user_id' => (int) $p_user_id);
# Oracle has to update BLOBs separately
if (!db_is_oracle()) {
$t_param['content'] = $c_content;
}
$t_query_param = db_param();
for ($i = 1; $i < count($t_param); $i++) {
$t_query_param .= ', ' . db_param();
}
$t_query = 'INSERT INTO ' . $t_file_table . '
( ' . implode(', ', array_keys($t_param)) . ' )
VALUES
( ' . $t_query_param . ' )';
db_query($t_query, array_values($t_param));
# get attachment 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}'");
}
if ('bug' == $p_table) {
# bump the last_updated date
bug_update_date($t_issue_id);
# add history entry
history_log_event_special($t_issue_id, FILE_ADDED, $p_name);
}
return $t_attachment_id;
}
示例7: plugins_releasemgt_file_add
function plugins_releasemgt_file_add($p_tmp_file, $p_file_name, $p_file_type, $p_project_id, $p_version_id, $p_description, $p_file_error)
{
if (php_version_at_least('4.2.0')) {
switch ((int) $p_file_error) {
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
trigger_error(ERROR_FILE_TOO_BIG, ERROR);
break;
case UPLOAD_ERR_PARTIAL:
case UPLOAD_ERR_NO_FILE:
trigger_error(ERROR_FILE_NO_UPLOAD_FAILURE, ERROR);
break;
default:
break;
}
}
if ('' == $p_tmp_file || '' == $p_file_name) {
trigger_error(ERROR_FILE_NO_UPLOAD_FAILURE, ERROR);
}
if (!is_readable($p_tmp_file)) {
trigger_error(ERROR_UPLOAD_FAILURE, ERROR);
}
if (!plugins_releasemgt_file_is_name_unique($p_file_name, $p_project_id, $p_version_id)) {
trigger_error(ERROR_DUPLICATE_FILE, ERROR);
}
$c_version_id = db_prepare_int($p_version_id);
$c_project_id = db_prepare_int($p_project_id);
$c_file_type = db_prepare_string($p_file_type);
$c_title = db_prepare_string($p_file_name);
$c_desc = db_prepare_string($p_description);
$t_file_path = dirname(plugin_config_get('disk_dir', PLUGINS_RELEASEMGT_DISK_DIR_DEFAULT) . DIRECTORY_SEPARATOR . '.') . DIRECTORY_SEPARATOR;
$c_file_path = db_prepare_string($t_file_path);
$c_new_file_name = db_prepare_string($p_file_name);
$t_file_hash = $p_version_id . '-' . $t_project_id;
$t_disk_file_name = $t_file_path . plugins_releasemgt_file_generate_unique_name($t_file_hash . '-' . $p_file_name, $t_file_path);
$c_disk_file_name = db_prepare_string($t_disk_file_name);
$t_file_size = filesize($p_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 = plugin_config_get('upload_method', PLUGINS_RELEASEMGT_UPLOAD_METHOD_DEFAULT);
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 = plugins_releasemgt_file_ftp_connect();
file_ftp_put($conn_id, $t_disk_file_name, $p_tmp_file);
file_ftp_disconnect($conn_id);
}
if (!move_uploaded_file($p_tmp_file, $t_disk_file_name)) {
trigger_error(FILE_MOVE_FAILED, ERROR);
}
chmod($t_disk_file_name, 0644);
$c_content = '';
} else {
trigger_error(ERROR_FILE_DUPLICATE, ERROR);
}
break;
case DATABASE:
$c_content = db_prepare_string(fread(fopen($p_tmp_file, 'rb'), $t_file_size));
break;
default:
trigger_error(ERROR_GENERIC, ERROR);
}
$t_file_table = plugin_table('file');
$query = "INSERT INTO {$t_file_table}\n\t\t\t\t\t\t(project_id, version_id, title, description, diskfile, filename, folder, filesize, file_type, date_added, content)\n\t\t\t\t\t VALUES\n\t\t\t\t\t\t({$c_project_id}, {$c_version_id}, '{$c_title}', '{$c_desc}', '{$c_disk_file_name}', '{$c_new_file_name}', '{$c_file_path}', {$c_file_size}, '{$c_file_type}', '" . date("Y-m-d H:i:s") . "', '{$c_content}')";
db_query($query);
$t_file_id = db_insert_id();
return $t_file_id;
}
示例8: project_update
function project_update($p_project_id, $p_name, $p_description, $p_status, $p_view_state, $p_file_path, $p_enabled)
{
# Make sure file path has trailing slash
$p_file_path = terminate_directory_path($p_file_path);
$c_project_id = db_prepare_int($p_project_id);
$c_name = db_prepare_string($p_name);
$c_description = db_prepare_string($p_description);
$c_status = db_prepare_int($p_status);
$c_view_state = db_prepare_int($p_view_state);
$c_file_path = db_prepare_string($p_file_path);
$c_enabled = db_prepare_bool($p_enabled);
if (is_blank($p_name)) {
trigger_error(ERROR_PROJECT_NAME_INVALID, ERROR);
}
$t_old_name = project_get_field($p_project_id, 'name');
if (strcasecmp($p_name, $t_old_name) != 0) {
project_ensure_name_unique($p_name);
}
if (!is_blank($p_file_path)) {
file_ensure_valid_upload_path($p_file_path);
}
$t_project_table = config_get('mantis_project_table');
$query = "UPDATE {$t_project_table}\r\n\t\t\t\t SET name='{$c_name}',\r\n\t\t\t\t\tstatus='{$c_status}',\r\n\t\t\t\t\tenabled='{$c_enabled}',\r\n\t\t\t\t\tview_state='{$c_view_state}',\r\n\t\t\t\t\tfile_path='{$c_file_path}',\r\n\t\t\t\t\tdescription='{$c_description}'\r\n\t\t\t\t WHERE id='{$c_project_id}'";
db_query($query);
project_clear_cache($p_project_id);
# db_query errors on failure so:
return true;
}
示例9: project_update
function project_update($p_project_id, $p_name, $p_description, $p_status, $p_view_state, $p_file_path, $p_enabled, $p_inherit_global)
{
$p_project_id = (int) $p_project_id;
$c_enabled = db_prepare_bool($p_enabled);
$c_inherit_global = db_prepare_bool($p_inherit_global);
if (is_blank($p_name)) {
trigger_error(ERROR_PROJECT_NAME_INVALID, ERROR);
}
$t_old_name = project_get_field($p_project_id, 'name');
if (strcasecmp($p_name, $t_old_name) != 0) {
project_ensure_name_unique($p_name);
}
if (!is_blank($p_file_path)) {
# Make sure file path has trailing slash
$p_file_path = terminate_directory_path($p_file_path);
file_ensure_valid_upload_path($p_file_path);
}
$t_project_table = db_get_table('project');
$query = "UPDATE {$t_project_table}\n\t\t\t\t SET name=" . db_param() . ",\n\t\t\t\t\tstatus=" . db_param() . ",\n\t\t\t\t\tenabled=" . db_param() . ",\n\t\t\t\t\tview_state=" . db_param() . ",\n\t\t\t\t\tfile_path=" . db_param() . ",\n\t\t\t\t\tdescription=" . db_param() . ",\n\t\t\t\t\tinherit_global=" . db_param() . "\n\t\t\t\t WHERE id=" . db_param();
db_query_bound($query, array($p_name, (int) $p_status, $c_enabled, (int) $p_view_state, $p_file_path, $p_description, $c_inherit_global, $p_project_id));
project_clear_cache($p_project_id);
# db_query errors on failure so:
return true;
}