コード例 #1
0
ファイル: account.php プロジェクト: BackupTheBerlios/berlios
function account_register_new($unix_name, $realname, $password1, $password2, $email, $language, $timezone, $mail_site, $mail_va, $language_id, $timezone)
{
    global $feedback;
    if (db_numrows(db_query("SELECT user_id FROM users WHERE user_name LIKE '{$unix_name}'")) > 0) {
        $feedback .= "That username already exists.";
        return false;
    }
    // Check that username is not identical with an existing unix groupname (groups) helix 22.06.2001
    if (db_numrows(db_query("SELECT unix_group_name FROM groups WHERE unix_group_name LIKE '{$unix_name}'")) > 0) {
        $feedback .= "That username is identical with the unixname of an existing group.";
        return false;
    }
    // End of change helix 22.06.2001
    if (!$unix_name) {
        $feedback .= "You must supply a username.";
        return false;
    }
    if (!$password1) {
        $feedback .= "You must supply a password.";
        return false;
    }
    if ($password1 != $password2) {
        $feedback .= "Passwords do not match.";
        return false;
    }
    if (!account_pwvalid($password1)) {
        $feedback .= ' Password must be at least 6 characters. ';
        return false;
    }
    if (!account_namevalid($unix_name)) {
        $feedback .= ' Invalid Unix Name ';
        return false;
    }
    if (!validate_email($email)) {
        $feedback .= ' Invalid Email Address ';
        return false;
    }
    // if we got this far, it must be good
    $confirm_hash = substr(md5($session_hash . $HTTP_POST_VARS['form_pw'] . time()), 0, 16);
    $result = db_query("INSERT INTO users (user_name,user_pw,unix_pw,realname,email,add_date," . "status,confirm_hash,mail_siteupdates,mail_va,language,timezone) " . "VALUES ('{$unix_name}'," . "'" . md5($password1) . "'," . "'" . account_genunixpw($password1) . "'," . "'" . "{$realname}'," . "'{$email}'," . "'" . time() . "'," . "'P'," . "'{$confirm_hash}'," . "'" . ($mail_site ? "1" : "0") . "'," . "'" . ($mail_va ? "1" : "0") . "'," . "'{$language_id}'," . "'{$timezone}')");
    $user_id = db_insertid($result, 'users', 'user_id');
    if (!$result || !$user_id) {
        $feedback .= ' Insert Failed ' . db_error();
        return false;
    } else {
        // send mail
        $message = "Thank you for registering on the " . $GLOBALS['sys_default_name'] . " web site. In order\n" . "to complete your registration, visit the following url: \n\n" . "https://" . $GLOBALS['HTTP_HOST'] . "/account/verify.php?confirm_hash={$confirm_hash}\n\n" . "Enjoy the site.\n\n" . " -- the " . $GLOBALS['sys_default_name'] . " staff\n";
        mail($email, $GLOBALS['sys_default_name'] . " Account Registration", $message, "From: noreply@" . $GLOBALS['sys_default_domain']);
        return $user_id;
    }
}
コード例 #2
0
 function create(&$request)
 {
     $content_id = false;
     $vId = new Valid_Uint($this->widget_id . '_job_id');
     $vId->setErrorMessage("Can't add empty job id");
     $vId->required();
     if ($request->valid($vId)) {
         $job_id = $request->get($this->widget_id . '_job_id');
         $sql = 'INSERT INTO plugin_hudson_widget (widget_name, owner_id, owner_type, job_id) VALUES ("' . $this->id . '", ' . $this->owner_id . ", '" . $this->owner_type . "', " . db_escape_int($job_id) . " )";
         $res = db_query($sql);
         $content_id = db_insertid($res);
     }
     return $content_id;
 }
コード例 #3
0
 /**
  * 
  *  Copy all the reports informations from a tracker to another.
  *
  *  @param atid_source: source tracker
  *  @param atid_dest: destination tracker
  *
  *	@return	boolean
  */
 function copyReports($atid_source, $atid_dest)
 {
     global $Language;
     $report_mapping = array(100 => 100);
     //The system report 'Default' (sic)
     //
     // Copy artifact_report records which are not individual/personal
     //
     $sql = "SELECT report_id,user_id,name,description,scope,is_default " . "FROM artifact_report " . "WHERE group_artifact_id='" . db_ei($atid_source) . "'" . "AND scope != 'I'";
     //echo $sql;
     $res = db_query($sql);
     while ($report_array = db_fetch_array($res)) {
         $sql_insert = 'INSERT INTO artifact_report (group_artifact_id,user_id,name,description,scope,is_default) VALUES (' . db_ei($atid_dest) . ',' . db_ei($report_array["user_id"]) . ',"' . db_es($report_array["name"]) . '","' . db_es($report_array["description"]) . '","' . db_es($report_array["scope"]) . '","' . db_es($report_array["is_default"]) . '")';
         $res_insert = db_query($sql_insert);
         if (!$res_insert || db_affected_rows($res_insert) <= 0) {
             $this->setError($Language->getText('tracker_common_reportfactory', 'ins_err', array($report_array["report_id"], $atid_dest, db_error())));
             return false;
         }
         $report_id = db_insertid($res_insert, 'artifact_report', 'report_id');
         $report_mapping[$report_array["report_id"]] = $report_id;
         //
         // Copy artifact_report_field records
         //
         $sql_fields = 'SELECT field_name,show_on_query,show_on_result,place_query,place_result,col_width ' . 'FROM artifact_report_field ' . 'WHERE report_id=' . db_ei($report_array["report_id"]);
         //echo $sql_fields;
         $res_fields = db_query($sql_fields);
         while ($field_array = db_fetch_array($res_fields)) {
             $show_on_query = $field_array["show_on_query"] == "" ? "null" : $field_array["show_on_query"];
             $show_on_result = $field_array["show_on_result"] == "" ? "null" : $field_array["show_on_result"];
             $place_query = $field_array["place_query"] == "" ? "null" : $field_array["place_query"];
             $place_result = $field_array["place_result"] == "" ? "null" : $field_array["place_result"];
             $col_width = $field_array["col_width"] == "" ? "null" : $field_array["col_width"];
             $sql_insert = 'INSERT INTO artifact_report_field VALUES (' . db_ei($report_id) . ',"' . db_es($field_array["field_name"]) . '",' . db_ei($show_on_query) . ',' . db_ei($show_on_result) . ',' . db_ei($place_query) . ',' . db_ei($place_result) . ',' . db_ei($col_width) . ')';
             //echo $sql_insert;
             $res_insert = db_query($sql_insert);
             if (!$res_insert || db_affected_rows($res_insert) <= 0) {
                 $this->setError($Language->getText('tracker_common_reportfactory', 'f_ind_err', array($report_array["report_id"], $field_array["field_name"], db_error())));
                 return false;
             }
         }
         // while
     }
     // while
     return $report_mapping;
 }
コード例 #4
0
 function create($label, $languageId)
 {
     global $Language;
     if (strlen($label) == 0) {
         // set error
         return false;
     }
     $sql = 'INSERT INTO trove_category_labels ' . '(category_id, label, language_id) VALUES (' . $this->category->getId() . ', ' . "'" . $label . "'," . "'" . $languageId . "')";
     db_begin();
     $result = db_query($sql);
     echo db_error();
     if (!$result) {
         db_rollback();
         return false;
     }
     $this->labelId = db_insertid($result, 'trove_category_labels', 'label_id');
     $this->fetchData($this->labelId);
     db_commit();
 }
コード例 #5
0
/**
 * GetKeysArray
 * Form aray of primary keys and their values for audit
 * @param {array} $arr array of inserting values
 * @param {bool} $searchId - find last inserted id or not
 * @return {array} array of keys and their values
 */
function GetKeysArray($arr, $searchId = false)
{
    global $conn;
    $keyfields = GetTableKeys();
    $aKeys = array();
    if (count($keyfields)) {
        foreach ($keyfields as $kfield) {
            if (array_key_exists($kfield, $arr)) {
                $aKeys[$kfield] = $arr[$kfield];
            }
        }
        if (count($aKeys) == 0 && searchId) {
            $lastId = db_insertid($conn);
            if ($lastId > 0) {
                $aKeys[$keyfields[0]] = $lastId;
            }
        }
    }
    return $aKeys;
}
コード例 #6
0
ファイル: editjob.php プロジェクト: BackupTheBerlios/berlios
if ($group_id && user_ismember($group_id, 'A')) {
    if ($add_job) {
        /*
        	create a new job
        */
        if (!$title || !$description || $category_id == 100) {
            //required info
            exit_error('error - missing info', 'Fill in all required fields');
        }
        $sql = "INSERT INTO people_job (group_id,created_by,title,description,date,status_id,category_id) " . "VALUES ('{$group_id}','" . user_getid() . "','{$title}','{$description}','" . time() . "','1','{$category_id}')";
        $result = db_query($sql);
        if (!$result || db_affected_rows($result) < 1) {
            $feedback .= ' JOB insert FAILED ';
            echo db_error();
        } else {
            $job_id = db_insertid($result, 'people_job', 'job_id');
            $feedback .= ' JOB inserted successfully ';
        }
    } else {
        if ($update_job) {
            /*
            	update the job's description, status, etc
            */
            if (!$title || !$description || $category_id == 100 || $status_id == 100 || !$job_id) {
                //required info
                exit_error('error - missing info', 'Fill in all required fields');
            }
            $sql = "UPDATE people_job SET title='{$title}',description='{$description}',status_id='{$status_id}',category_id='{$category_id}' " . "WHERE job_id='{$job_id}' AND group_id='{$group_id}'";
            $result = db_query($sql);
            if (!$result || db_affected_rows($result) < 1) {
                $feedback .= ' JOB update FAILED ';
コード例 #7
0
 function create(&$request)
 {
     $content_id = false;
     $vId = new Valid_Uint('chart_id');
     $vId->setErrorMessage("Can't add empty chart id");
     $vId->required();
     if ($request->validInArray('chart', $vId)) {
         $chart = $request->get('chart');
         $sql = 'INSERT INTO plugin_graphontrackersv5_widget_chart (owner_id, owner_type, title, chart_id) VALUES (' . $this->owner_id . ", '" . $this->owner_type . "', '" . db_escape_string($chart['title']) . "', " . db_escape_int($chart['chart_id']) . ")";
         $res = db_query($sql);
         $content_id = db_insertid($res);
     }
     return $content_id;
 }
コード例 #8
0
 /**
  *	insertmsg - inserts the message into the main table (forum)
  *	@param	string	The subject of the message.
  *	@param	string	The body of the message.
  *	@param	int	The thread_id of the message, if known.
  *	@param	int	The message_id of the parent message, if any.
  *	@param 	int	The id of the user that is posting the message
  *	@param  boolean	Whether the message has an attach associated. Defaults to false
  *	@return	boolean success.
  */
 function insertmsg($subject, $body, $thread_id = '', $is_followup_to = '', $user_id, $has_attach = false)
 {
     if (!$thread_id) {
         $thread_id = $this->Forum->getNextThreadID();
         $is_followup_to = 0;
         if (!$thread_id) {
             $this->setError('ForumMessage::create() ' . _('Getting next thread_id failed'));
             db_rollback();
             return false;
         }
     } else {
         //
         //  increment the parent's followup count if necessary
         //
         $res4 = db_query("UPDATE forum SET most_recent_date='" . time() . "' \n\t\t\t\tWHERE thread_id='{$thread_id}' AND is_followup_to='0'");
         if (!$res4 || db_affected_rows($res4) < 1) {
             $this->setError(_('Couldn\'t Update Master Thread parent with current time'));
             db_rollback();
             return false;
         } else {
             //
             //  mark the parent with followups as an optimization later
             //
             $res3 = db_query("UPDATE forum SET has_followups='1',most_recent_date='" . time() . "' \n\t\t\t\t\tWHERE msg_id='{$is_followup_to}'");
             if (!$res3) {
                 $this->setError(_('Could Not Update Parent'));
                 db_rollback();
                 return false;
             }
         }
     }
     $sql = "INSERT INTO forum (group_forum_id,posted_by,subject,\n\t\t\tbody,post_date,is_followup_to,thread_id,most_recent_date) \n\t\t\tVALUES ('" . $this->Forum->getID() . "', '{$user_id}', '" . htmlspecialchars($subject) . "', \n\t\t\t'" . $body . "', '" . time() . "','{$is_followup_to}','{$thread_id}','" . time() . "')";
     $result = db_query($sql);
     if (!$result || db_affected_rows($result) < 1) {
         $this->setError(_('ForumMessage::create() Posting Failed') . ' ' . db_error());
         db_rollback();
         return false;
     }
     $msg_id = db_insertid($result, 'forum', 'msg_id');
     if (!$this->fetchData($msg_id)) {
         db_rollback();
         return false;
     }
     if (!$msg_id) {
         db_rollback();
         $this->setError(_('ForumMessage::create() Unable to get new message id'));
         return false;
     }
     if (!$this->sendNotice($has_attach)) {
         db_rollback();
         return false;
     }
     //echo "Committing";
     db_commit();
     //echo "db_error()".db_error();
     $this->awaits_moderation = false;
     return true;
 }
コード例 #9
0
ファイル: newcommit.php プロジェクト: neymanna/fusionforge
/**
 * Add a entry in the DataBase for a Tracker associated to a commit
 *
 * @param   array    $Config Config
 * @param   string   $GroupId The GroupId to insert it into
 * @param   string   $Num The tracker_id
 *
 * @return  array    Returns 'check'=true if check passed, group, group_id
 */
function addTaskLog($Config, $GroupId, $Num)
{
    $return = array();
    $Query = "SELECT * from project_task,project_group_list WHERE " . "project_task.group_project_id=" . "project_group_list.group_project_id " . "AND project_task.project_task_id='" . $Num . "' AND " . " project_group_list.group_id='" . $GroupId . "'";
    var_dump($Query);
    $Result = db_query($Query);
    $Rows = db_numrows($Result);
    if ($Rows == 0) {
        $return['Error'] .= "Task:{$Num} Not Found.";
    }
    if ($Rows == 1) {
        db_begin();
        $Query = "INSERT INTO plugin_svntracker_data_artifact " . "(kind, project_task_id) VALUES " . "('1', '" . $Num . "')";
        $DBRes = db_query($Query);
        $HolderID = db_insertid($DBRes, 'plugin_svntracker_data_artifact', 'id');
        if (!$DBRes || !$HolderID) {
            $return['Error'] = 'Problems with Task $Num: ' . db_error($DBRes);
            db_rollback();
        } else {
            $Query = "INSERT INTO plugin_svntracker_data_master " . "(holder_id, svn_date, log_text, file, prev_version, " . "actual_version, author)" . " VALUES ('" . $HolderID . "','" . $Config['SvnDate'] . "','" . $Config['Log'] . "','" . $Config['FileName'] . "','" . $Config['PrevVersion'] . "','" . $Config['ActualVersion'] . "','" . $Config['UserName'] . "')";
            $DBRes = db_query($Query);
            if (!$DBRes) {
                db_rollback();
            } else {
                db_commit();
            }
        }
    }
    if ($Rows > 1) {
        $return['Error'] .= "Unknown problem adding Task:{$Num}.";
    }
    return $return;
}
コード例 #10
0
 /**
  *	create - create a row in the table that stores a saved query for 	 *	a tracker.   
  *
  *	@param	string	Name of the saved query.
  *  	@return 	true on success / false on failure.
  */
 function create($name, $status, $assignee, $moddaterange, $sort_col, $sort_ord, $extra_fields, $opendaterange = 0, $closedaterange = 0)
 {
     //
     //	data validation
     //
     if (!$name) {
         $this->setMissingParamsError();
         return false;
     }
     if (!session_loggedin()) {
         $this->setError('Must Be Logged In');
         return false;
     }
     if ($this->Exist(htmlspecialchars($name))) {
         $this->setError(_('Query already exists'));
         return false;
     }
     $sql = "INSERT INTO artifact_query (group_artifact_id,query_name,user_id) \n\t\t\tVALUES ('" . $this->ArtifactType->getID() . "','" . htmlspecialchars($name) . "','" . user_getid() . "')";
     db_begin();
     $result = db_query($sql);
     if ($result && db_affected_rows($result) > 0) {
         $this->clearError();
         $id = db_insertid($result, 'artifact_query', 'artifact_query_id');
         if (!$id) {
             $this->setError('Error getting id ' . db_error());
             db_rollback();
             return false;
         } else {
             if (!$this->insertElements($id, $status, $assignee, $moddaterange, $sort_col, $sort_ord, $extra_fields, $opendaterange, $closedaterange)) {
                 db_rollback();
                 return false;
             }
         }
     } else {
         $this->setError(db_error());
         db_rollback();
         return false;
     }
     //
     //	Now set up our internal data structures
     //
     if ($this->fetchData($id)) {
         db_commit();
         return true;
     } else {
         db_rollback();
         return false;
     }
 }
コード例 #11
0
 /**
  * create - use this to create a new Report in the database.
  * 
  * @param string The report name.
  * @param string The report description.
  * @return id on success, false on failure.
  */
 public static function create($atid, $user_id, $name, $description, $scope)
 {
     $sql = sprintf("INSERT INTO plugin_graphontrackers_report_graphic \n                       (group_artifact_id,user_id,name,description,scope) \n                        VALUES (%d,%d,'%s','%s','%s')", db_ei($atid), db_ei($user_id), db_es($name), db_es($description), db_es($scope));
     $res = db_query($sql);
     $report = null;
     if ($res && db_affected_rows($res)) {
         $report = new GraphOnTrackers_Report(db_insertid($res));
     }
     return $report;
 }
コード例 #12
0
 /**
  *	create - construct a new Artifact in the database.
  *
  *	@param	string	The artifact summary.
  *	@param	string	Details of the artifact.
  *	@param	int		The ID of the user to which this artifact is to be assigned.
  *	@param	int		The artifacts priority.
  *	@param	array	Array of extra fields like: array(15=>'foobar',22=>'1');
  *  @return id on success / false on failure.
  */
 function create($summary, $details, $assigned_to = 100, $priority = 3, $extra_fields = array())
 {
     //
     //	make sure this person has permission to add artifacts
     //
     if (!$this->ArtifactType->isPublic()) {
         //
         //	Only admins can post/modify private artifacts
         //
         if (!$this->ArtifactType->userIsAdmin()) {
             $this->setError(_('Artifact: Only Artifact Admins Can Modify Private ArtifactTypes'));
             return false;
         }
     }
     //
     //	get the user_id
     //
     if (session_loggedin()) {
         $user = user_getid();
     } else {
         if ($this->ArtifactType->allowsAnon()) {
             $user = 100;
         } else {
             $this->setError(_('Artifact: This ArtifactType Does Not Allow Anonymous Submissions. Please Login.'));
             return false;
         }
     }
     //
     //	data validation
     //
     if (!$summary) {
         $this->setError(_('Artifact: Message Summary Is Required'));
         return false;
     }
     if (!$details) {
         $this->setError(_('Artifact: Message Body Is Required'));
         return false;
     }
     if (!$assigned_to) {
         $assigned_to = 100;
     }
     if (!$priority) {
         $priority = 3;
     }
     //		if (!$status_id) {
     $status_id = 1;
     // on creation, status is set to "open"
     //		}
     //
     //	They may be using an extra field "status" box so we have to remap
     //	the status_id based on the extra field - this keeps the counters
     //	accurate
     //
     $status_id = $this->ArtifactType->remapStatus($status_id, $extra_fields);
     if (!$status_id) {
         $this->setError(_('Artifact: Error remapping status'));
         return false;
     }
     db_begin();
     $sql = "INSERT INTO artifact \n\t\t\t(group_artifact_id,status_id,priority,\n\t\t\tsubmitted_by,assigned_to,open_date,summary,details) \n\t\t\tVALUES \n\t\t\t('" . $this->ArtifactType->getID() . "','{$status_id}','{$priority}',\n\t\t\t'{$user}','{$assigned_to}','" . time() . "','" . htmlspecialchars($summary) . "','" . htmlspecialchars($details) . "')";
     $res = db_query($sql);
     if (!$res) {
         $this->setError('Artifact: ' . db_error());
         db_rollback();
         return false;
     }
     $artifact_id = db_insertid($res, 'artifact', 'artifact_id');
     if (!$res || !$artifact_id) {
         $this->setError('Artifact: ' . db_error());
         db_rollback();
         return false;
     } else {
         //
         //	Now set up our internal data structures
         //
         if (!$this->fetchData($artifact_id)) {
             db_rollback();
             return false;
         } else {
             // the changes to the extra fields will be logged in this array.
             // (we won't use it however)
             $extra_field_changes = array();
             if (!$this->updateExtraFields($extra_fields, $extra_field_changes)) {
                 db_rollback();
                 return false;
             }
         }
         //
         //	now send an email if appropriate
         //
         $this->mailFollowup(1);
         db_commit();
         return $artifact_id;
     }
 }
コード例 #13
0
ファイル: qrs.php プロジェクト: BackupTheBerlios/berlios
 //create a new release of this package
 //see if this package belongs to this project
 $res1 = db_query("SELECT * FROM frs_package WHERE package_id='{$package_id}' AND group_id='{$group_id}'");
 if (!$res1 || db_numrows($res1) < 1) {
     $feedback .= ' | Package Doesn\'t Exist Or Isn\'t Yours ';
     echo db_error();
 } else {
     //package_id was fine - now insert the release
     $res = db_query("INSERT INTO frs_release (package_id,name,notes,changes,status_id,release_date,released_by) " . "VALUES ('{$package_id}','{$release_name}','{$release_notes}','{$release_changes}','{$status_id}','" . time() . "','" . user_getid() . "')");
     if (!$res) {
         $feedback .= ' | Adding Release Failed ';
         echo db_error();
         //insert failed - go back to definition screen
     } else {
         //release added - now show the detail page for this new release
         $release_id = db_insertid($res, 'frs_release', 'release_id');
         $feedback .= ' Added Release <BR>';
     }
 }
 /*
 	Add a file to this release
 
 	First, make sure this release belongs to this group
 
 	iterate the following for each file:
 
 	Second see if the filename is legal
 	Third see if they already have a file by the same name
 	Fourth if file actually exists, physically move the file on garbage to the new location
 	Fifth insert it into the database
 */
コード例 #14
0
ファイル: Survey.class.php プロジェクト: neymanna/fusionforge
 /**
  *	create - use this function to create a survey 
  *
  *	@param	string	          The survey title
  *	@param	int array         The question numbers to be added
  *	@param  is_active         1: Active, 0: Inactive
  *	For future options
  *	@param  is_public         0: Admins Only, 1: Group Members, 2: Gforge user, 3:Every body
  *	@param  is_result_public  0: Admins Only, 1: Group Members, 2: Gforge user, 3:voted user 4:Every body
  *	@param  double_vote       Allow double vote if it is 1
  *	@return	boolean	success.
  */
 function create($survey_title, $add_questions, $is_active = 0, $is_public = 1, $is_result_public = 0, $double_vote = 0)
 {
     if (!$survey_title) {
         $this->setError(_('UPDATE FAILED: Survey Title Required'));
         return false;
         /* We need at least one survey question at this point */
     } else {
         if (!$add_questions || !is_array($add_questions) || count($add_questions) < 1) {
             $this->setError(_('UPDATE FAILED: Survey Questions Required'));
             return false;
         }
     }
     $group_id = $this->Group->GetID();
     /* Make old style survey string from array: 1, 2, 3, ..., n */
     $survey_questions = $this->_makeQuestionString(array_reverse($add_questions));
     $sql = "INSERT INTO surveys (survey_title,group_id,survey_questions,is_active) VALUES ('" . htmlspecialchars($survey_title) . "','{$group_id}','{$survey_questions}','{$is_active}')";
     $result = db_query($sql);
     if (!$result) {
         $this->setError(_('Insert Error') . db_error());
         return false;
     }
     /* Load question to data array */
     $survey_id = db_insertid($res, 'surveys', 'survey_id');
     return $this->fetchData($survey_id);
 }
コード例 #15
0
ファイル: create_project.php プロジェクト: rinodung/tuleap
/**
* create_project
* 
* Create a new project
*
* @param  data  
*/
function create_project($data, $do_not_exit = false)
{
    srand((double) microtime() * 1000000);
    $random_num = rand(0, 1000000);
    // Make sure default project privacy status is defined. If not
    // then default to "public"
    if (!isset($GLOBALS['sys_is_project_public'])) {
        $GLOBALS['sys_is_project_public'] = 1;
    }
    if (isset($GLOBALS['sys_disable_subdomains']) && $GLOBALS['sys_disable_subdomains']) {
        $http_domain = $GLOBALS['sys_default_domain'];
    } else {
        $http_domain = $data['project']['form_unix_name'] . '.' . $GLOBALS['sys_default_domain'];
    }
    //Verify if the approbation of the new project is automatic or not
    $auto_approval = ForgeConfig::get('sys_project_approval', 1) ? PROJECT_APPROVAL_BY_ADMIN : PROJECT_APPROVAL_AUTO;
    if (isset($data['project']['is_public'])) {
        $access = $data['project']['is_public'] ? Project::ACCESS_PUBLIC : Project::ACCESS_PRIVATE;
    } else {
        $access = ForgeConfig::get('sys_is_project_public') ? Project::ACCESS_PUBLIC : Project::ACCESS_PRIVATE;
    }
    // make group entry
    $insert_data = array('group_name' => "'" . htmlspecialchars(mysql_real_escape_string($data['project']['form_full_name'])) . "'", 'access' => "'" . $access . "'", 'unix_group_name' => "'" . db_es($data['project']['form_unix_name']) . "'", 'http_domain' => "'" . db_es($http_domain) . "'", 'status' => "'P'", 'unix_box' => "'shell1'", 'cvs_box' => "'cvs1'", 'license' => "'" . htmlspecialchars(mysql_real_escape_string($data['project']['form_license'])) . "'", 'license_other' => "'" . htmlspecialchars(mysql_real_escape_string($data['project']['form_license_other'])) . "'", 'short_description' => "'" . htmlspecialchars(mysql_real_escape_string($data['project']['form_short_description'])) . "'", 'register_time' => time(), 'rand_hash' => "'" . md5($random_num) . "'", 'built_from_template' => db_ei($data['project']['built_from_template']), 'type' => $data['project']['is_test'] ? 3 : 1);
    $sql = 'INSERT INTO groups(' . implode(', ', array_keys($insert_data)) . ') VALUES (' . implode(', ', array_values($insert_data)) . ')';
    $result = db_query($sql);
    if (!$result) {
        exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'upd_fail', array($GLOBALS['sys_email_admin'], db_error())));
    } else {
        $group_id = db_insertid($result);
        // insert descriptions
        $descfieldsinfos = getProjectsDescFieldsInfos();
        for ($i = 0; $i < sizeof($descfieldsinfos); $i++) {
            if (isset($data['project']["form_" . $descfieldsinfos[$i]["group_desc_id"]]) && $data['project']["form_" . $descfieldsinfos[$i]["group_desc_id"]] != '') {
                $sql = "INSERT INTO group_desc_value (group_id, group_desc_id, value) VALUES ('" . db_ei($group_id) . "','" . db_ei($descfieldsinfos[$i]["group_desc_id"]) . "','" . db_escape_string(trim($data['project']["form_" . $descfieldsinfos[$i]["group_desc_id"]])) . "')";
                $result = db_query($sql);
                if (!$result) {
                    list($host, $port) = explode(':', $GLOBALS['sys_default_domain']);
                    exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'ins_desc_fail', array($host, db_error())));
                }
            }
        }
        // insert trove categories
        if (isset($data['project']['trove'])) {
            foreach ($data['project']['trove'] as $root => $values) {
                foreach ($values as $value) {
                    db_query("INSERT INTO trove_group_link (trove_cat_id,trove_cat_version," . "group_id,trove_cat_root) VALUES (" . db_ei($value) . "," . time() . "," . db_ei($group_id) . "," . db_ei($root) . ")");
                }
            }
        }
        // define a module
        $project_manager = ProjectManager::instance();
        $result = db_query("INSERT INTO filemodule (group_id,module_name) VALUES ('{$group_id}','" . $project_manager->getProject($group_id)->getUnixName() . "')");
        if (!$result) {
            list($host, $port) = explode(':', $GLOBALS['sys_default_domain']);
            exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'ins_file_fail', array($host, db_error())));
        }
        // make the current user a project admin as well as admin
        // on all Codendi services
        $result = db_query("INSERT INTO user_group (user_id,group_id,admin_flags,bug_flags,forum_flags,project_flags,patch_flags,support_flags,doc_flags,file_flags,wiki_flags,svn_flags,news_flags) VALUES (" . user_getid() . "," . $group_id . "," . "'A'," . "2," . "2," . "2," . "2," . "2," . "2," . "2," . "2," . "2," . "2)");
        // news_flags
        if (!$result) {
            exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'set_owner_fail', array($GLOBALS['sys_email_admin'], db_error())));
        }
        // clear the user data to take into account this new group.
        $user = UserManager::instance()->getCurrentUser();
        $user->clearGroupData();
        // Instanciate all services from the project template that are 'active'
        $group = $project_manager->getProject($group_id);
        if (!$group || !is_object($group)) {
            exit_no_group();
        }
        //set up the group_id
        $_REQUEST['group_id'] = $_GET['group_id'] = $group_id;
        $request =& HTTPRequest::instance();
        $request->params['group_id'] = $_REQUEST['group_id'];
        $template_id = $group->getTemplate();
        $template_group = $project_manager->getProject($template_id);
        if (!$template_group || !is_object($template_group) || $template_group->isError()) {
            exit_no_group();
        }
        $system_template = $template_group->getStatus() == 's' || $template_group->getStatus() == 'S';
        if (!$system_template) {
            $template_name = $template_group->getUnixName();
        }
        $sql = "SELECT * FROM service WHERE group_id={$template_id} AND is_active=1";
        $result = db_query($sql);
        while ($arr = db_fetch_array($result)) {
            if (isset($data['project']['services'][$arr['service_id']]['is_used'])) {
                $is_used = $data['project']['services'][$arr['service_id']]['is_used'];
            } else {
                $is_used = '0';
                if ($arr['short_name'] == 'admin' || $arr['short_name'] == 'summary') {
                    $is_used = '1';
                }
            }
            $server_id = isset($data['project']['services'][$arr['service_id']]['server_id']) && $data['project']['services'][$arr['service_id']]['server_id'] ? $data['project']['services'][$arr['service_id']]['server_id'] : 'null';
            if (!service_create_service($arr, $group_id, array('system' => $system_template, 'name' => $system_template ? '' : $template_name, 'id' => $template_id, 'is_used' => $is_used, 'server_id' => $server_id))) {
                exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'cant_create_service') . '<br>' . db_error());
            }
        }
        //Add the import of the message to requester from the parent project if defined
        $dar = $project_manager->getMessageToRequesterForAccessProject($template_id);
        if ($dar && !$dar->isError() && $dar->rowCount() == 1) {
            $row = $dar->getRow();
            $result = $project_manager->setMessageToRequesterForAccessProject($group_id, $row['msg_to_requester']);
        } else {
            $result = $project_manager->setMessageToRequesterForAccessProject($group_id, 'member_request_delegation_msg_to_requester');
        }
        if (!$result) {
            exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'cant_copy_msg_to_requester'));
        }
        //Copy forums from template project
        $sql = "SELECT forum_name, is_public, description FROM forum_group_list WHERE group_id={$template_id} ";
        $result = db_query($sql);
        while ($arr = db_fetch_array($result)) {
            $fid = forum_create_forum($group_id, $arr['forum_name'], $arr['is_public'], 1, $arr['description'], $need_feedback = false);
            if ($fid != -1) {
                forum_add_monitor($fid, user_getid());
            }
        }
        //copy cvs infos
        $sql = "SELECT cvs_tracker, cvs_watch_mode, cvs_preamble, cvs_is_private FROM groups WHERE group_id={$template_id} ";
        $result = db_query($sql);
        $arr = db_fetch_array($result);
        $query = "UPDATE groups \n                  SET cvs_tracker='" . db_ei($arr['cvs_tracker']) . "',\n                      cvs_watch_mode='" . db_ei($arr['cvs_watch_mode']) . "' ,\n                      cvs_preamble='" . db_escape_string($arr['cvs_preamble']) . "',\n                      cvs_is_private = " . db_escape_int($arr['cvs_is_private']) . "\n                  WHERE group_id = '{$group_id}'";
        $result = db_query($query);
        if (!$result) {
            exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'cant_copy_cvs_infos'));
        }
        //copy svn infos
        $current_timestamp = db_escape_int($_SERVER['REQUEST_TIME']);
        $sql = "INSERT INTO svn_accessfile_history (version_number, group_id, version_date)\n                VALUES (1, {$group_id}, {$current_timestamp})";
        $result = db_query($sql);
        if (!$result) {
            exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'cant_copy_svn_infos'));
        }
        $sql = "SELECT svn_tracker, svn_preamble, svn_mandatory_ref, svn_commit_to_tag_denied FROM groups WHERE group_id={$template_id} ";
        $result = db_query($sql);
        $arr = db_fetch_array($result);
        $query = "UPDATE groups, svn_accessfile_history\n                  SET svn_tracker='" . db_ei($arr['svn_tracker']) . "',\n                      svn_mandatory_ref='" . db_ei($arr['svn_mandatory_ref']) . "',\n                      svn_preamble='" . db_escape_string($arr['svn_preamble']) . "',\n                      svn_commit_to_tag_denied='" . db_ei($arr['svn_commit_to_tag_denied']) . "',\n                      svn_accessfile_version_id = svn_accessfile_history.id\n                  WHERE groups.group_id = {$group_id}\n                      AND groups.group_id = svn_accessfile_history.group_id";
        $result = db_query($query);
        if (!$result) {
            exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'cant_copy_svn_infos'));
        }
        // Activate other system references not associated with any service
        $reference_manager =& ReferenceManager::instance();
        $reference_manager->addSystemReferencesWithoutService($template_id, $group_id);
        //Copy ugroups
        $ugroup_mapping = array();
        ugroup_copy_ugroups($template_id, $group_id, $ugroup_mapping);
        $sql_ugroup_mapping = ' ugroup_id ';
        if (is_array($ugroup_mapping) && count($ugroup_mapping)) {
            $sql_ugroup_mapping = ' CASE ugroup_id ';
            foreach ($ugroup_mapping as $key => $val) {
                $sql_ugroup_mapping .= ' WHEN ' . $key . ' THEN ' . $val;
            }
            $sql_ugroup_mapping .= ' ELSE ugroup_id END ';
        }
        //Copy packages from template project
        $sql = "SELECT package_id, name, status_id, rank, approve_license FROM frs_package WHERE group_id = {$template_id}";
        if ($result = db_query($sql)) {
            while ($p_data = db_fetch_array($result)) {
                $template_package_id = $p_data['package_id'];
                $sql = sprintf("INSERT INTO frs_package(group_id, name, status_id, rank, approve_license) VALUES (%s, '%s', %s, %s, %s)", $group_id, db_escape_string($p_data['name']), db_ei($p_data['status_id']), db_ei($p_data['rank']), db_ei($p_data['approve_license']));
                $rid = db_query($sql);
                if ($rid) {
                    $package_id = db_insertid($rid);
                    $sql = "INSERT INTO permissions(permission_type, object_id, ugroup_id) \n                      SELECT permission_type, {$package_id}, {$sql_ugroup_mapping}\n                      FROM permissions\n                      WHERE permission_type = 'PACKAGE_READ'\n                        AND object_id = {$template_package_id}";
                    db_query($sql);
                }
            }
        }
        //Set up some mailing lists
        //will be done at some point. needs to communicate with geocrawler
        // TBD
        // Generic Trackers Creation
        $tracker_mapping = array();
        $report_mapping = array();
        if (TrackerV3::instance()->available()) {
            $atf = new ArtifactTypeFactory($template_group);
            //$tracker_error = "";
            // Add all trackers from template project (tracker templates) that need to be instanciated for new trackers.
            $res = $atf->getTrackerTemplatesForNewProjects();
            while ($arr_template = db_fetch_array($res)) {
                $ath_temp = new ArtifactType($template_group, $arr_template['group_artifact_id']);
                $report_mapping_for_this_tracker = array();
                $new_at_id = $atf->create($group_id, $template_id, $ath_temp->getID(), db_escape_string($ath_temp->getName()), db_escape_string($ath_temp->getDescription()), $ath_temp->getItemName(), $ugroup_mapping, $report_mapping_for_this_tracker);
                if (!$new_at_id) {
                    $GLOBALS['Response']->addFeedback('error', $atf->getErrorMessage());
                } else {
                    $report_mapping = $report_mapping + $report_mapping_for_this_tracker;
                    $tracker_mapping[$ath_temp->getID()] = $new_at_id;
                    // Copy all the artifacts from the template tracker to the new tracker
                    $ath_new = new ArtifactType($group, $new_at_id);
                    // not now. perhaps one day
                    //if (!$ath_new->copyArtifacts($ath_temp->getID()) ) {
                    //$GLOBALS['Response']->addFeedback('info', $ath_new->getErrorMessage());
                    //}
                    // Create corresponding reference
                    $ref = new Reference(0, strtolower($ath_temp->getItemName()), $GLOBALS['Language']->getText('project_reference', 'reference_art_desc_key'), '/tracker/?func=detail&aid=$1&group_id=$group_id', 'P', 'tracker', ReferenceManager::REFERENCE_NATURE_ARTIFACT, '1', $group_id);
                    $result = $reference_manager->createReference($ref, true);
                    // Force reference creation because default trackers use reserved keywords
                }
            }
        }
        // Clone wiki from the template
        $clone = new WikiCloner($template_id, $group_id);
        // check if the template project has a wiki initialised
        if ($clone->templateWikiExists() and $clone->newWikiIsUsed()) {
            //clone wiki.
            $clone->CloneWiki();
        }
        //Create the summary page
        $lm = new WidgetLayoutManager();
        $lm->createDefaultLayoutForProject($group_id, $template_id);
        //Create project specific references if template is not default site template
        if (!$system_template) {
            $reference_manager =& ReferenceManager::instance();
            $reference_manager->addProjectReferences($template_id, $group_id);
        }
        // Copy Truncated email option
        $sql = "UPDATE groups AS g1\n                JOIN groups AS g2\n                  ON g2.group_id = " . db_ei($template_id) . "\n                SET g1.truncated_emails = g2.truncated_emails\n                WHERE g1.group_id = " . db_ei($group_id);
        db_query($sql);
        $result = db_query($query);
        if (!$result) {
            exit_error($GLOBALS['Language']->getText('global', 'error'), $GLOBALS['Language']->getText('register_confirmation', 'cant_copy_truncated_emails'));
        }
        // Raise an event for plugin configuration
        $em =& EventManager::instance();
        $em->processEvent('register_project_creation', array('reportMapping' => $report_mapping, 'trackerMapping' => $tracker_mapping, 'ugroupsMapping' => $ugroup_mapping, 'group_id' => $group_id, 'template_id' => $template_id));
        if ($auto_approval == PROJECT_APPROVAL_AUTO) {
            $project_manager->activate($group);
        }
        return $group_id;
    }
}
コード例 #16
0
ファイル: User.class.php プロジェクト: neymanna/fusionforge
 /**
  * create() - Create a new user.
  *
  * @param	string	The unix username.
  * @param	string	The real firstname.
  * @param	string	The real lastname.
  * @param	string	The first password.
  * @param	string	The confirmation password.
  * @param	string	The users email address.
  * @param	string	The users preferred default language.
  * @param	string	The users preferred default timezone.
  * @param	string	The users preference for receiving site updates by email.
  * @param	string	The users preference for receiving community updates by email.
  * @param	int		The ID of the language preference.
  * @param	string	The users preferred timezone.
  * @param	string	The users Jabber address.
  * @param	int		The users Jabber preference.
  * @param	int		The users theme_id.
  * @param	string	The users unix_box.
  * @param	string	The users address.
  * @param	string	The users address part 2.
  * @param	string	The users phone.
  * @param	string	The users fax.
  * @param	string	The users title.
  * @param	char(2)	The users ISO country_code.
  * @param	bool	Whether to send an email or not
  * @returns The newly created user ID
  *
  */
 function create($unix_name, $firstname, $lastname, $password1, $password2, $email, $mail_site, $mail_va, $language_id, $timezone, $jabber_address, $jabber_only, $theme_id, $unix_box = 'shell', $address = '', $address2 = '', $phone = '', $fax = '', $title = '', $ccode = 'US', $send_mail = true)
 {
     if (!$theme_id) {
         $this->setError(_('You must supply a theme'));
         return false;
     }
     if (!$unix_name) {
         $this->setError(_('You must supply a username'));
         return false;
     }
     if (!$firstname) {
         $this->setError(_('You must supply a first name'));
         return false;
     }
     if (!$lastname) {
         $this->setError(_('You must supply a last name'));
         return false;
     }
     if (!$password1) {
         $this->setError(_('You must supply a password'));
         return false;
     }
     if ($password1 != $password2) {
         $this->setError(_('Passwords do not match'));
         return false;
     }
     if (!account_pwvalid($password1)) {
         $this->setError(_('Invalid Password:'******'Invalid Unix Name.'));
         return false;
     }
     if (!validate_email($email)) {
         $this->setError(_('Invalid Email Address'));
         return false;
     }
     if ($jabber_address && !validate_email($jabber_address)) {
         $this->setError(_('Invalid Jabber Address'));
         return false;
     }
     if (!$jabber_only) {
         $jabber_only = 0;
     } else {
         $jabber_only = 1;
     }
     if (db_numrows(db_query("SELECT user_id FROM users WHERE user_name LIKE '{$unix_name}'")) > 0) {
         $this->setError(_('That username already exists.'));
         return false;
     }
     if ($GLOBALS['sys_require_unique_email']) {
         if (db_numrows(db_query("SELECT user_id FROM users WHERE email='{$email}'")) > 0) {
             $this->setError(_('User with this email already exists - use people search to recover your login.'));
             return false;
         }
     }
     // if we got this far, it must be good
     $confirm_hash = substr(md5($password1 . rand() . microtime()), 0, 16);
     db_begin();
     $sql = "INSERT INTO users (user_name,user_pw,unix_pw,realname,firstname,lastname,email,add_date,\n\t\t\tstatus,confirm_hash,mail_siteupdates,mail_va,language,timezone,jabber_address,jabber_only,\n\t\t\tunix_box,address,address2,phone,fax,title,ccode,theme_id) \n\t\t\tVALUES ('{$unix_name}',\n\t\t\t'" . md5($password1) . "',\n\t\t\t'" . account_genunixpw($password1) . "',\n\t\t\t'" . htmlspecialchars($firstname . ' ' . $lastname) . "',\n\t\t\t'" . htmlspecialchars($firstname) . "',\n\t\t\t'" . htmlspecialchars($lastname) . "',\n\t\t\t'{$email}',\n\t\t\t'" . time() . "',\n\t\t\t'P',\n\t\t\t'{$confirm_hash}',\n\t\t\t'" . ($mail_site ? "1" : "0") . "',\n\t\t\t'" . ($mail_va ? "1" : "0") . "',\n\t\t\t'{$language_id}',\n\t\t\t'{$timezone}',\n\t\t\t'{$jabber_address}',\n\t\t\t'{$jabber_only}',\n\t\t\t'{$unix_box}',\n\t\t\t'" . htmlspecialchars($address) . "',\n\t\t\t'" . htmlspecialchars($address2) . "',\n\t\t\t'" . htmlspecialchars($phone) . "',\n\t\t\t'" . htmlspecialchars($fax) . "',\n\t\t\t'" . htmlspecialchars($title) . "',\n\t\t\t'{$ccode}',\n\t\t\t'{$theme_id}')";
     $result = db_query($sql);
     if (!$result) {
         $this->setError(_('Insert Failed') . db_error() . $sql);
         db_rollback();
         return false;
     } else {
         $id = db_insertid($result, 'users', 'user_id');
         if (!$id) {
             $this->setError('Could Not Get USERID: ' . db_error());
             db_rollback();
             return false;
         }
         // send mail
         if (!$this->fetchData($id)) {
             db_rollback();
             return false;
         }
         $hook_params = array();
         $hook_params['user'] = $this;
         $hook_params['user_id'] = $this->getID();
         $hook_params['user_name'] = $unix_name;
         $hook_params['user_password'] = $password1;
         plugin_hook("user_create", $hook_params);
         if ($send_mail) {
             setup_gettext_from_lang_id($language_id);
             $this->sendRegistrationEmail();
             setup_gettext_from_browser();
         }
         db_commit();
         return $id;
     }
 }
コード例 #17
0
ファイル: ugroup_utils.php プロジェクト: pdaniel-frk/tuleap
/** copy ugoup ugroup_id with corresponding users to belong 
 *  to $to_group 
*/
function ugroup_copy_ugroup($ugroup_id, $to_group, &$ugid)
{
    $ugid = 0;
    $err = false;
    $result = db_query("INSERT INTO ugroup (name,description,group_id) " . "SELECT name,description," . db_ei($to_group) . " FROM ugroup " . " WHERE ugroup_id='" . db_ei($ugroup_id) . "'");
    if ($result && db_affected_rows($result) > 0) {
        $ugid = db_insertid($result);
    } else {
        return db_error();
    }
    $result = db_query("INSERT INTO ugroup_user (ugroup_id,user_id) " . "SELECT {$ugid},user_id " . "FROM ugroup_user " . "WHERE ugroup_id='" . db_ei($ugroup_id) . "'");
    if (!$result) {
        return db_error();
    }
    $sql = sprintf('INSERT INTO ugroup_mapping (to_group_id, src_ugroup_id, dst_ugroup_id)' . ' VALUES (%d, %d, %d)', db_ei($to_group), db_ei($ugroup_id), db_ei($ugid));
    $result = db_query($sql);
    if (!$result || db_affected_rows($result) <= 0) {
        return db_error();
    }
    return $err;
}
コード例 #18
0
 function create($request)
 {
     $content_id = false;
     $vUrl = new Valid_String('url');
     $vUrl->setErrorMessage("Can't add empty rss url");
     $vUrl->required();
     if ($request->validInArray('rss', $vUrl)) {
         $rss = $request->get('rss');
         $vTitle = new Valid_String('title');
         $vTitle->required();
         if (!$request->validInArray('rss', $vTitle)) {
             require_once 'common/rss/libs/SimplePie/simplepie.inc';
             if (!is_dir($GLOBALS['codendi_cache_dir'] . '/rss')) {
                 mkdir($GLOBALS['codendi_cache_dir'] . '/rss');
             }
             $rss_reader = new SimplePie($rss['url'], $GLOBALS['codendi_cache_dir'] . '/rss', null, $GLOBALS['sys_proxy']);
             $rss['title'] = $rss_reader->get_title();
         }
         $sql = 'INSERT INTO widget_rss (owner_id, owner_type, title, url) VALUES (' . $this->owner_id . ", '" . $this->owner_type . "', '" . db_escape_string($rss['title']) . "', '" . db_escape_string($rss['url']) . "')";
         $res = db_query($sql);
         $content_id = db_insertid($res);
     }
     return $content_id;
 }
コード例 #19
0
 /**
  *	create - create a row in the table that stores box names for a
  *	a tracker.  This function is only used to create rows for boxes 
  *	configured by the admin.
  *
  *	@param	string	Name of the extra field.
  *	@param	int	The type of field - radio, select, text, textarea
  *	@param	int	Attribute1 - for text (size) and textarea (rows)
  *	@param	int	Attribute2 - for text (maxlength) and textarea (cols)
  *	@param	int	is_required - true or false whether this is a required field or not.
  *	@param	string	alias - alias for this extra field (optional)
  *  @return 	true on success / false on failure.
  */
 function create($name, $field_type, $attribute1, $attribute2, $is_required = 0, $alias = '')
 {
     //
     //	data validation
     //
     if (!$name) {
         $this->setError(_('a field name is required'));
         return false;
     }
     if (!$this->ArtifactType->userIsAdmin()) {
         $this->setPermissionDeniedError();
         return false;
     }
     if ($is_required) {
         $is_required = 1;
     } else {
         $is_required = 0;
     }
     if (!($alias = $this->generateAlias($alias, $name))) {
         return false;
     }
     $sql = "INSERT INTO artifact_extra_field_list (group_artifact_id,field_name,\n\t\t\tfield_type,attribute1,attribute2,is_required,alias) \n\t\t\tVALUES ('" . $this->ArtifactType->getID() . "','" . htmlspecialchars($name) . "',\n\t\t\t'{$field_type}','{$attribute1}','{$attribute2}','{$is_required}','{$alias}')";
     db_begin();
     $result = db_query($sql);
     if ($result && db_affected_rows($result) > 0) {
         $this->clearError();
         $id = db_insertid($result, 'artifact_extra_field_list', 'extra_field_id');
         //
         //	Now set up our internal data structures
         //
         if (!$this->fetchData($id)) {
             db_rollback();
             return false;
         }
         if ($field_type == ARTIFACT_EXTRAFIELDTYPE_STATUS) {
             if (!$this->ArtifactType->setCustomStatusField($id)) {
                 db_rollback();
                 return false;
             } else {
                 //
                 //	Must insert some default statuses for each artifact
                 //
                 $reso = db_query("INSERT INTO artifact_extra_field_elements(extra_field_id,element_name,status_id) \n\t\t\t\t\t\tvalues ('{$id}','Open','1')");
                 if (!$reso) {
                     echo db_error();
                 } else {
                     $resoid = db_insertid($reso, 'artifact_extra_field_elements', 'element_id');
                     db_query("INSERT INTO artifact_extra_field_data(artifact_id,field_data,extra_field_id) \n\t\t\t\t\t\t\tSELECT artifact_id,{$resoid},{$id} FROM artifact \n\t\t\t\t\t\t\tWHERE group_artifact_id='" . $this->ArtifactType->getID() . "'\n\t\t\t\t\t\t\tAND status_id=1");
                 }
                 $resc = db_query("INSERT INTO artifact_extra_field_elements(extra_field_id,element_name,status_id)\n\t\t\t\t\t\tvalues ('{$id}','Closed','2')");
                 if (!$resc) {
                     echo db_error();
                 } else {
                     $rescid = db_insertid($resc, 'artifact_extra_field_elements', 'element_id');
                     db_query("INSERT INTO artifact_extra_field_data(artifact_id,field_data,extra_field_id) \n\t\t\t\t\t\t\tSELECT artifact_id,{$rescid},{$id} FROM artifact \n\t\t\t\t\t\t\tWHERE group_artifact_id='" . $this->ArtifactType->getID() . "'\n\t\t\t\t\t\t\tAND status_id != 1");
                 }
             }
         } elseif (strstr(ARTIFACT_EXTRAFIELD_FILTER_INT, $field_type) !== false) {
             //
             //	Must insert some default 100 rows for the data table so None queries will work right
             //
             $resdefault = db_query("INSERT INTO artifact_extra_field_data(artifact_id,field_data,extra_field_id) \n\t\t\t\t\tSELECT artifact_id,100,{$id} FROM artifact WHERE group_artifact_id='" . $this->ArtifactType->getID() . "'");
             if (!$resdefault) {
                 echo db_error();
             }
         }
         db_commit();
         return $id;
     } else {
         $this->setError(db_error());
         db_rollback();
         return false;
     }
 }
コード例 #20
0
 function insertMessage($structure, $body, $ctype = "")
 {
     $this->mail = $structure;
     if (isset($structure["in-reply-to"])) {
         // special case: 'in-reply-to' header may contain "Message from ... "
         if (preg_match('/^Message from.*$/', $structure["in-reply-to"])) {
             $arr = explode(" ", $structure["in-reply-to"]);
             $reply_to = $arr[count($structure["in-reply-to"]) - 1];
         } else {
             $reply_to = $structure["in-reply-to"];
         }
     } else {
         if (isset($structure["references"])) {
             // special case: 'in-reply-to' header is not set, but 'references' - which contain list of parent messages ids - is set
             $ref_arr = explode(" ", $structure["references"]);
             $reply_to = $ref_arr[count($structure["references"]) - 1];
         } else {
             $reply_to = "";
         }
     }
     // Message date
     // Cannot rely on server's date because it might be different
     // and it doesn't work when it comes to load mail archives!
     $messageDate = strtotime($structure['date']);
     $id_parent = 0;
     // If the current message is an answer
     if ($reply_to != "") {
         $id_parent = $this->getParentMessageFromHeader($reply_to);
     }
     if ($id_parent != 0) {
         $this->updateParentDate($id_parent, $messageDate);
     }
     $sql = sprintf('INSERT INTO plugin_forumml_message' . ' (id_message, id_list, id_parent, body, last_thread_update, msg_type)' . ' VALUES (%d, %d, %d, "%s", %d, "%s")', "", db_ei($this->id_list), db_ei($id_parent), db_es($body), db_ei($messageDate), db_es($ctype));
     $res = db_query($sql);
     $this->id_message = db_insertid($res);
     // All headers of the current mail are stored in the forumml_messageheader table
     $k = 0;
     foreach ($structure as $header => $value_header) {
         $k++;
         if ($k != 1) {
             if ($header != "received") {
                 $id_header = $this->insertHeader($header);
                 if (is_array($value_header)) {
                     $value_header = implode(",", $value_header);
                 }
                 $this->insertMessageHeader($id_header, $value_header);
             }
         }
     }
     return $this->id_message;
 }
コード例 #21
0
ファイル: package.php プロジェクト: nterray/tuleap
                        					create the snippet package version
                        */
                        $sql = "INSERT INTO snippet_package_version " . "(snippet_package_id,changes,version,submitted_by,date) " . "VALUES ('{$snippet_package_id}','" . htmlspecialchars($changes) . "','" . htmlspecialchars($version) . "','" . user_getid() . "','" . time() . "')";
                        $result = db_query($sql);
                        if (!$result) {
                            //error in database
                            $feedback .= ' ' . $Language->getText('snippet_addversion', 'error_insert') . ' ';
                            snippet_header(array('title' => $Language->getText('snippet_addversion', 'submit_p')));
                            echo db_error();
                            snippet_footer(array());
                            exit;
                        } else {
                            //so far so good - now add snippets to the package
                            $feedback .= ' ' . $Language->getText('snippet_addversion', 'p_add_success') . ' ';
                            //id for this snippet_package_version
                            $snippet_package_version_id = db_insertid($result);
                            snippet_header(array('title' => $Language->getText('snippet_addversion', 'add')));
                            /*
                            This raw HTML allows the user to add snippets to the package
                            */
                            echo '
<SCRIPT LANGUAGE="JavaScript">
<!--
function show_add_snippet_box() {
	newWindow = open("","occursDialog","height=500,width=300,scrollbars=yes,resizable=yes");
	newWindow.location=(\'/snippet/add_snippet_to_package.php?suppress_nav=1&snippet_package_version_id=' . $snippet_package_version_id . '\');
}
// -->
</script>
<BODY onLoad="show_add_snippet_box()">
コード例 #22
0
    /**
     *	create - use this function to create a new entry in the database.
     *
     *	@param	string	The name of the mailing list
     *	@param	string	The description of the mailing list
     *	@param	int	Pass (1) if it should be public (0) for private.
     *
     *	@return	boolean	success.
     */
    function create($listName, $description, $isPublic = MAIL__MAILING_LIST_IS_PUBLIC, $creator_id = false)
    {
        //
        //	During the group creation, the current user_id will not match the admin's id
        //
        if (!$creator_id) {
            $creator_id = user_getid();
            if (!$this->userIsAdmin()) {
                $this->setPermissionDeniedError();
                return false;
            }
        }
        if (!$listName || strlen($listName) < MAIL__MAILING_LIST_NAME_MIN_LENGTH) {
            $this->setError(_('Must Provide List Name That Is 4 or More Characters Long'));
            return false;
        }
        $realListName = strtolower($this->Group->getUnixName() . '-' . $listName);
        if (!validate_email($realListName . '@' . $GLOBALS['sys_lists_host'])) {
            $this->setError(_('Invalid List Name') . ': ' . $realListName . '@' . $GLOBALS['sys_lists_host']);
            return false;
        }
        $result = db_query('SELECT 1 FROM mail_group_list WHERE lower(list_name)=\'' . $realListName . '\'');
        if (db_numrows($result) > 0) {
            $this->setError(_('List Already Exists'));
            return false;
        }
        $result_forum_samename = db_query('SELECT 1 FROM forum_group_list WHERE forum_name=\'' . $listName . '\' AND group_id=' . $this->Group->getID() . '');
        if (db_numrows($result_forum_samename) > 0) {
            $this->setError(_('Forum exists with the same name'));
            return false;
        }
        $listPassword = substr(md5($GLOBALS['session_hash'] . time() . rand(0, 40000)), 0, 16);
        $sql = 'INSERT INTO mail_group_list ' . '(group_id, list_name, is_public, password, list_admin, status, description) VALUES (' . $this->Group->getID() . ', ' . "'" . $realListName . "'," . "'" . $isPublic . "'," . "'" . $listPassword . "'," . "'" . $creator_id . "'," . "'" . MAIL__MAILING_LIST_IS_REQUESTED . "'," . "'" . $description . "')";
        db_begin();
        $result = db_query($sql);
        if (!$result) {
            db_rollback();
            $this->setError(sprintf(_('Error Creating %1$s'), _('Error Creating %1$s')) . db_error());
            return false;
        }
        $this->groupMailingListId = db_insertid($result, 'mail_group_list', 'group_list_id');
        $this->fetchData($this->groupMailingListId);
        $user =& user_get_object($creator_id);
        $userEmail = $user->getEmail();
        if (empty($userEmail) || !validate_email($userEmail)) {
            db_rollback();
            $this->setInvalidEmailError();
            return false;
        } else {
            $mailBody = stripcslashes(sprintf(_('A mailing list will be created on %1$s in 6-24 hours 
and you are the list administrator.

This list is: %3$s@%2$s .

Your mailing list info is at:
%4$s .

List administration can be found at:
%5$s .

Your list password is: %6$s .
You are encouraged to change this password as soon as possible.

Thank you for registering your project with %1$s.

-- the %1$s staff
'), $GLOBALS['sys_name'], $GLOBALS['sys_lists_host'], $realListName, $this->getExternalInfoUrl(), $this->getExternalAdminUrl(), $listPassword));
            $mailSubject = sprintf(_('%1$s New Mailing List'), $GLOBALS['sys_name']);
            util_send_message($userEmail, $mailSubject, $mailBody, 'admin@' . $GLOBALS['sys_default_domain']);
        }
        db_commit();
        return true;
    }
コード例 #23
0
ファイル: addversion.php プロジェクト: neymanna/fusionforge
                    	create the snippet package version
                    */
                    $sql = "INSERT INTO snippet_package_version " . "(snippet_package_id,changes,version,submitted_by,post_date) " . "VALUES ('{$snippet_package_id}','" . htmlspecialchars($changes) . "','" . htmlspecialchars($version) . "','" . user_getid() . "','" . time() . "')";
                    $result = db_query($sql);
                    if (!$result) {
                        //error in database
                        $feedback .= _('ERROR DOING SNIPPET PACKAGE VERSION INSERT!');
                        snippet_header(array('title' => _('New snippet package')));
                        echo db_error();
                        snippet_footer(array());
                        exit;
                    } else {
                        //so far so good - now add snippets to the package
                        $feedback .= _('Snippet Package Version Added Successfully.');
                        //id for this snippet_package_version
                        $snippet_package_version_id = db_insertid($result, 'snippet_package_version', 'snippet_package_version_id');
                        snippet_header(array('title' => _('Add snippet to package')));
                        /*
                        	This raw HTML allows the user to add snippets to the package
                        */
                        ?>

<script type="text/javascript">
<!--
function show_add_snippet_box() {
	newWindow = open("","occursDialog","height=500,width=300,scrollbars=yes,resizable=yes");
	newWindow.location=('/snippet/add_snippet_to_package.php?snippet_package_version_id=<?php 
                        echo $snippet_package_version_id;
                        ?>
');
}
コード例 #24
0
//
// $Id: projectname.php,v 1.3 2004/10/11 15:03:49 helix Exp $
require "pre.php";
// Initial db and session library, opens session
session_require(array('isloggedin' => '1'));
require "account.php";
// push received vars
if ($insert_purpose && $form_purpose) {
    srand((double) microtime() * 1000000);
    $random_num = rand(0, 1000000);
    // make group entry
    $result = db_query("INSERT INTO groups (group_name,is_public,unix_group_name,http_domain,homepage,status," . "unix_box,cvs_box,license,register_purpose,register_time,license_other,rand_hash) VALUES (" . "'__{$random_num}'," . "1," . "'__{$random_num}'," . "'__{$random_num}'," . "'__{$random_num}'," . "'I'," . "'unicorn'," . "'cvs'," . "'__{$random_num}'," . "'" . htmlspecialchars($form_purpose) . "'," . time() . "," . "'__{$random_num}','__" . md5($random_num) . "')");
    if (!$result) {
        exit_error('ERROR', 'INSERT QUERY FAILED. Please notify admin@' . $GLOBALS['sys_default_domain']);
    } else {
        $group_id = db_insertid($result, 'groups', 'group_id');
    }
} else {
    exit_error('Error', 'Missing Information. <B>PLEASE</B> fill in all required information.');
}
$HTML->header(array('title' => 'Project Name'));
?>

<H2>Step 4: Project Name</H2>


<P><B>Project Name</B>

<P>We now need some basic technical information for your project.
There are two types of names that will be associated with this project.
コード例 #25
0
 /**
  *	create - use this function to create a new entry in the database.
  *
  *	@param	string	The filename of this document. Can be a URL.
  *	@param	string	The filetype of this document. If filename is URL, this should be 'URL';
  *	@param	string	The contents of this document (should be addslashes()'d before entry).
  *	@param	int	The doc_group id of the doc_groups table.
  *	@param	string	The title of this document.
  *	@param	int	The language id of the supported_languages table.
  *	@param	string	The description of this document.
  *	@return	boolean	success.
  */
 function create($filename, $filetype, $data, $doc_group, $title, $language_id, $description)
 {
     if (strlen($title) < 5) {
         $this->setError(_('Title Must Be At Least 5 Characters'));
         return false;
     }
     if (strlen($description) < 10) {
         $this->setError(_('Document Description Must Be At Least 10 Characters'));
         return false;
     }
     /*
     		$perm =& $this->Group->getPermission( session_get_user() );
     		if (!$perm || !is_object($perm) || !$perm->isDocEditor()) {
     			$this->setPermissionDeniedError();
     			return false;
     		}
     */
     $user_id = session_loggedin() ? user_getid() : 100;
     $doc_initstatus = '3';
     // If Editor - uploaded Documents are ACTIVE
     if (session_loggedin()) {
         $perm =& $this->Group->getPermission(session_get_user());
         if ($perm && is_object($perm) && $perm->isDocEditor()) {
             $doc_initstatus = '1';
         }
     }
     // If $filetype is "text/plain", $body convert UTF-8 encoding.
     if (strcasecmp($filetype, "text/plain") === 0 && function_exists('mb_convert_encoding') && function_exists('mb_detect_encoding')) {
         $data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));
     }
     $data1 = $data;
     // key words for in-document search
     $kw = new Parsedata($this->engine_path);
     $kwords = $kw->get_parse_data(stripslashes($data1), htmlspecialchars($title1), htmlspecialchars($description), $filetype);
     // $kwords = "";
     $filesize = strlen($data);
     $sql = "INSERT INTO doc_data (group_id,title,description,createdate,doc_group,\n\t\t\tstateid,language_id,filename,filetype,filesize,data,data_words,created_by)\n\t\t\tVALUES ('" . $this->Group->getId() . "',\n\t\t\t'" . htmlspecialchars($title) . "',\n\t\t\t'" . htmlspecialchars($description) . "',\n\t\t\t'" . time() . "',\n\t\t\t'{$doc_group}',\n\t\t\t'{$doc_initstatus}',\n\t\t\t'{$language_id}',\n\t\t\t'{$filename}',\n\t\t\t'{$filetype}',\n\t\t\t'{$filesize}',\n\t\t\t'" . base64_encode(stripslashes($data)) . "',\n\t\t\t'{$kwords}',\n\t\t\t'{$user_id}')";
     db_begin();
     $result = db_query($sql);
     if (!$result) {
         $this->setError('Error Adding Document: ' . db_error());
         db_rollback();
         return false;
     }
     $docid = db_insertid($result, 'doc_data', 'docid');
     if (!$this->fetchData($docid)) {
         db_rollback();
         return false;
     }
     $this->sendNotice(true);
     db_commit();
     return true;
 }
コード例 #26
0
 /**
  *	create - create a new item in the database.
  *
  *	@param	string	Body.
  *	@param	string	email of submitter (obsolete?).
  *  @return id on success / false on failure.
  */
 function create($body, $by = false)
 {
     if (!$body) {
         $this->setMissingParamsError();
         return false;
     }
     if (session_loggedin()) {
         $user_id = user_getid();
         $user =& user_get_object($user_id);
         if (!$user || !is_object($user)) {
             $this->setError('ERROR - Logged In User Bug Could Not Get User Object');
             return false;
         }
         $body = _('Logged In: YES') . " \nuser_id={$user_id}\n\n" . $body;
         //  we'll store this email even though it will likely never be used -
         //  since we have their correct user_id, we can join the USERS table to get email
         $by = $user->getEmail();
     } else {
         $body = _('Logged In: NO') . " \n\n" . $body;
         $user_id = 100;
         if (!$by || !validate_email($by)) {
             $this->setMissingParamsError();
             return false;
         }
     }
     $sql = "insert into artifact_message (artifact_id,submitted_by,from_email,adddate,body) \n\t\t\tVALUES ('" . $this->Artifact->getID() . "','{$user_id}','{$by}','" . time() . "','" . htmlspecialchars($body) . "')";
     $res = db_query($sql);
     if (!$res) {
         $this->setError(db_error());
         return false;
     } else {
         $id = db_insertid($res, 'artifact_message', 'id');
     }
     //
     //	Now set up our internal data structures
     //
     if (!$this->fetchData($id)) {
         return false;
     }
     return $id;
 }
コード例 #27
0
function GetMySQLLastInsertID()
{
    global $conn;
    //	select LAST_INSERT_ID() for ASP
    return db_insertid($conn);
}
コード例 #28
0
 /**
  *	create - create a new FRSPackage in the database.
  *
  *	@param	string	The name of this package.
  *	@param	boolean	Whether it's public or not. 1=public 0=private.
  *	@return	boolean success.
  */
 function create($name, $is_public = 1)
 {
     global $sys_apache_user, $sys_apache_group;
     if (strlen($name) < 3) {
         $this->setError(_('FRSPackage Name Must Be At Least 3 Characters'));
         return false;
     }
     if (!util_is_valid_filename($name)) {
         $this->setError(_('FRSPackage::Update: Package Name can only be alphanumeric'));
     }
     $perm =& $this->Group->getPermission(session_get_user());
     if (!$perm || !is_object($perm) || !$perm->isReleaseTechnician()) {
         $this->setPermissionDeniedError();
         return false;
     }
     $res = db_query("SELECT * FROM frs_package WHERE group_id='" . $this->Group->getID() . "'\n\t\t\tAND name='" . htmlspecialchars($name) . "'");
     if (db_numrows($res)) {
         $this->setError('FRSPackage::create() Error Adding Package: Name Already Exists');
         return false;
     }
     $sql = "INSERT INTO frs_package(group_id,name,status_id,is_public)\n\t\t\tVALUES ('" . $this->Group->getId() . "','" . htmlspecialchars($name) . "','1','{$is_public}')";
     db_begin();
     $result = db_query($sql);
     if (!$result) {
         db_rollback();
         $this->setError('FRSPackage::create() Error Adding Package: ' . db_error());
         return false;
     }
     $this->package_id = db_insertid($result, 'frs_package', 'package_id');
     if (!$this->fetchData($this->package_id)) {
         db_rollback();
         return false;
     } else {
         //make groupdir if it doesn't exist
         $groupdir = $GLOBALS['sys_upload_dir'] . '/' . $this->Group->getUnixName();
         if (!is_dir($groupdir)) {
             @mkdir($groupdir);
         }
         $newdirlocation = $GLOBALS['sys_upload_dir'] . '/' . $this->Group->getUnixName() . '/' . $this->getFileName();
         exec("/bin/mkdir {$newdirlocation}", $out);
         // this 2 should normally silently fail (because it´s called with the apache user) but if it´s root calling the create() method, then the owner and group for the directory should be changed
         @chown($newdirlocation, $sys_apache_user);
         @chgrp($newdirlocation, $sys_apache_group);
         db_commit();
         return true;
     }
 }
コード例 #29
0
ファイル: ArtifactFile.class.php プロジェクト: nterray/tuleap
 /**
  *	create - create a new item in the database.
  *
  *	@para	string	Filename of the item.
  *	@param	string	Item filetype.
  *	@param	string	Item filesize.
  *	@param	binary	Binary item data.
  *	@param	string	Item description.
  *  @return id on success / false on failure.
  */
 function create($filename, $filetype, $filesize, $bin_data, $description = false, &$changes)
 {
     global $Language;
     if (!$description) {
         $description = $Language->getText('global', 'none');
     }
     $old_value = $this->Artifact->getAttachedFileNames();
     // Some browsers don't supply mime type if they don't know it
     if (!$filetype) {
         // Let's be on safe side?
         $filetype = 'application/octet-stream';
     }
     //
     //	data validation
     //
     if (!$filename || !$filetype || !$filesize || !$bin_data) {
         $GLOBALS['Response']->addFeedback('error', '<P>|' . $filename . '|' . $filetype . '|' . $filesize . '|' . $bin_data . '|');
         $this->setError('ArtifactFile: ' . $Language->getText('tracker_common_file', 'name_requ'));
         return false;
     }
     if (user_isloggedin()) {
         $userid = user_getid();
     } else {
         $userid = 100;
     }
     $res = db_query("INSERT INTO artifact_file\n\t\t\t(artifact_id,description,bin_data,filename,filesize,filetype,adddate,submitted_by)\n\t\t\tVALUES \n\t\t\t('" . db_ei($this->Artifact->getID()) . "','" . db_es($description) . "','" . db_es($bin_data) . "','" . db_es($filename) . "',\n\t\t\t'" . db_ei($filesize) . "','" . db_es($filetype) . "','" . time() . "','" . db_ei($userid) . "')");
     $id = db_insertid($res, 'artifact_file', 'id');
     if (!$res || !$id) {
         $this->setError('ArtifactFile: ' . db_error());
         return false;
     } else {
         $this->clearError();
         $changes['attach']['description'] = $description;
         $changes['attach']['name'] = $filename;
         $changes['attach']['size'] = $filesize;
         if ($old_value == '') {
             $new_value = $filename;
         } else {
             $new_value = $old_value . "," . $filename;
         }
         $this->Artifact->addHistory('attachment', $old_value, $new_value);
         $changes['attach']['href'] = get_server_url() . "/tracker/download.php?artifact_id=" . $this->Artifact->getID() . "&id={$id}";
         return $id;
     }
 }
コード例 #30
0
 /**
  *	create - create a new file in this FRSFileRelease/FRSPackage.
  *
  *	@param	string	The name of this file.
  *	@param	string	The location of this file in the local file system.
  *	@param	int	The type_id of this file from the frs-file-types table.
  *	@param	int	The processor_id of this file from the frs-processor-types table.
  *	@param	int	The release_date of this file in unix time (seconds).
  *	@return	boolean success.
  */
 function create($name, $file_location, $type_id, $processor_id, $release_time = false)
 {
     if (strlen($name) < 3) {
         $this->setError(_('FRSFile Name Must Be At Least 3 Characters'));
         return false;
     }
     if (!util_is_valid_filename($name)) {
         $this->setError(_('Filename can only be alphanumeric and "-" "_" "." characters.'));
         return false;
     }
     //
     //	Can't really use is_uploaded_file() or move_uploaded_file()
     //	since we want this to be generalized code
     //	This is potentially exploitable if you do not validate
     //	before calling this function
     //
     if (!is_file($file_location) || !file_exists($file_location)) {
         $this->setError(_('FRSFile Appears to be invalid'));
         return false;
     }
     $perm =& $this->FRSRelease->FRSPackage->Group->getPermission(session_get_user());
     if (!$perm || !is_object($perm) || !$perm->isReleaseTechnician()) {
         $this->setPermissionDeniedError();
         return false;
     }
     //
     //	Filename must be unique in this release
     //
     $resfile = db_query("SELECT filename \n\t\t\tFROM frs_file\n\t\t\tWHERE \n\t\t\tfilename='{$name}'\n\t\t\tAND release_id='" . $this->FRSRelease->getId() . "'");
     if (!$resfile || db_numrows($resfile) > 0) {
         $this->setError(_('That filename already exists in this project space') . ' ' . db_error());
         return false;
     }
     $path_name = $GLOBALS['sys_upload_dir'] . '/' . $this->FRSRelease->FRSPackage->Group->getUnixName();
     if (!is_dir($path_name)) {
         mkdir($path_name, 0755);
     } else {
         if (fileperms($path_name) != 0x4755) {
             chmod($path_name, 0755);
         }
     }
     $path_name = $path_name . '/' . $this->FRSRelease->FRSPackage->getFileName();
     if (!is_dir($path_name)) {
         mkdir($path_name, 0755);
     } else {
         if (fileperms($path_name) != 0x4755) {
             chmod($path_name, 0755);
         }
     }
     $path_name = $path_name . '/' . $this->FRSRelease->getFileName();
     if (!is_dir($path_name)) {
         mkdir($path_name, 0755);
     } else {
         if (fileperms($path_name) != 0x4755) {
             chmod($path_name, 0755);
         }
     }
     $file_location = escapeshellcmd($file_location);
     $newfilelocation = $GLOBALS['sys_upload_dir'] . '/' . $this->FRSRelease->FRSPackage->Group->getUnixName() . '/' . $this->FRSRelease->FRSPackage->getFileName() . '/' . $this->FRSRelease->getFileName() . '/';
     //exec("/bin/mkdir $newfilelocation",$out);
     //print_r($out);
     //exec("/bin/mkdir $newfilelocation",$out);
     //print_r($out);
     $cmd = "/bin/mv {$file_location} {$newfilelocation}{$name}";
     exec($cmd, $out);
     //echo $cmd;
     //print_r($out);
     if (!file_exists("{$newfilelocation}{$name}")) {
         $this->setError(_('File cannot be moved to the permanent location') . ': ' . $newfilelocation . $name);
         return false;
     }
     if (!$release_time) {
         $release_time = time();
     }
     $file_size = filesize("{$newfilelocation}{$name}");
     $sql = "INSERT INTO frs_file(release_id,filename,release_time,\n\t\t\t\ttype_id,processor_id,file_size,post_date)\n\t\t\tVALUES ('" . $this->FRSRelease->getId() . "','{$name}','{$release_time}',\n\t\t\t\t'{$type_id}','{$processor_id}','{$file_size}','" . time() . "')";
     db_begin();
     $result = db_query($sql);
     if (!$result) {
         db_rollback();
         $this->setError('FRSFile::create() Error Adding Release: ' . db_error());
         return false;
     }
     $this->file_id = db_insertid($result, 'frs_file', 'file_id');
     if (!$this->fetchData($this->file_id)) {
         return false;
     } else {
         db_commit();
         return true;
     }
 }