public function testUpdate()
 {
     $bean = new Contact();
     $bean->last_name = 'foobar' . mt_rand();
     $bean->id = 'test' . mt_rand();
     $this->_db->insert($bean);
     $id = $bean->id;
     $bean = new Contact();
     $bean->last_name = 'newfoobar' . mt_rand();
     $this->_db->update($bean, array('id' => $id));
     $result = $this->_db->query("select id, last_name from contacts where id = '{$id}'");
     $row = $this->_db->fetchByAssoc($result);
     $this->assertEquals($row['last_name'], $bean->last_name);
     $this->assertEquals($row['id'], $id);
     $this->_db->query("delete from contacts where id = '{$row['id']}'");
 }
Exemple #2
0
 /**
  * Implements a generic insert and update logic for any SugarBean
  * This method only works for subclasses that implement the same variable names.
  * This method uses the presence of an id field that is not null to signify and update.
  * The id field should not be set otherwise.
  *
  * @param boolean $check_notify Optional, default false, if set to true assignee of the record is notified via email.
  * @todo Add support for field type validation and encoding of parameters.
  */
 function save($check_notify = FALSE)
 {
     $this->in_save = true;
     // cn: SECURITY - strip XSS potential vectors
     $this->cleanBean();
     // This is used so custom/3rd-party code can be upgraded with fewer issues, this will be removed in a future release
     $this->fixUpFormatting();
     global $timedate;
     global $current_user, $action;
     $isUpdate = true;
     if (empty($this->id)) {
         $isUpdate = false;
     }
     if ($this->new_with_id == true) {
         $isUpdate = false;
     }
     if (empty($this->date_modified) || $this->update_date_modified) {
         $this->date_modified = $GLOBALS['timedate']->nowDb();
     }
     $this->_checkOptimisticLocking($action, $isUpdate);
     if (!empty($this->modified_by_name)) {
         $this->old_modified_by_name = $this->modified_by_name;
     }
     if ($this->update_modified_by) {
         $this->modified_user_id = 1;
         if (!empty($current_user)) {
             $this->modified_user_id = $current_user->id;
             $this->modified_by_name = $current_user->user_name;
         }
     }
     if ($this->deleted != 1) {
         $this->deleted = 0;
     }
     if (!$isUpdate) {
         if (empty($this->date_entered)) {
             $this->date_entered = $this->date_modified;
         }
         if ($this->set_created_by == true) {
             // created by should always be this user
             $this->created_by = isset($current_user) ? $current_user->id : "";
         }
         if ($this->new_with_id == false) {
             $this->id = create_guid();
         }
     }
     require_once "data/BeanFactory.php";
     BeanFactory::registerBean($this->module_name, $this);
     if (empty($GLOBALS['updating_relationships']) && empty($GLOBALS['saving_relationships']) && empty($GLOBALS['resavingRelatedBeans'])) {
         $GLOBALS['saving_relationships'] = true;
         // let subclasses save related field changes
         $this->save_relationship_changes($isUpdate);
         $GLOBALS['saving_relationships'] = false;
     }
     if ($isUpdate && !$this->update_date_entered) {
         unset($this->date_entered);
     }
     // call the custom business logic
     $custom_logic_arguments['check_notify'] = $check_notify;
     $this->call_custom_logic("before_save", $custom_logic_arguments);
     unset($custom_logic_arguments);
     // If we're importing back semi-colon separated non-primary emails
     if ($this->hasEmails() && !empty($this->email_addresses_non_primary) && is_array($this->email_addresses_non_primary)) {
         // Add each mail to the account
         foreach ($this->email_addresses_non_primary as $mail) {
             $this->emailAddress->addAddress($mail);
         }
         $this->emailAddress->save($this->id, $this->module_dir);
     }
     if (isset($this->custom_fields)) {
         $this->custom_fields->bean = $this;
         $this->custom_fields->save($isUpdate);
     }
     // use the db independent query generator
     $this->preprocess_fields_on_save();
     //construct the SQL to create the audit record if auditing is enabled.
     $auditDataChanges = array();
     if ($this->is_AuditEnabled()) {
         if ($isUpdate && !isset($this->fetched_row)) {
             $GLOBALS['log']->debug('Auditing: Retrieve was not called, audit record will not be created.');
         } else {
             $auditDataChanges = $this->db->getAuditDataChanges($this);
         }
     }
     $this->_sendNotifications($check_notify);
     if ($isUpdate) {
         $this->db->update($this);
     } else {
         $this->db->insert($this);
     }
     if (!empty($auditDataChanges) && is_array($auditDataChanges)) {
         foreach ($auditDataChanges as $change) {
             $this->db->save_audit_records($this, $change);
         }
     }
     if (empty($GLOBALS['resavingRelatedBeans'])) {
         SugarRelationship::resaveRelatedBeans();
     }
     // populate fetched row with current bean values
     foreach ($auditDataChanges as $change) {
         $this->fetched_row[$change['field_name']] = $change['after'];
     }
     //If we aren't in setup mode and we have a current user and module, then we track
     if (isset($GLOBALS['current_user']) && isset($this->module_dir)) {
         $this->track_view($current_user->id, $this->module_dir, 'save');
     }
     $this->call_custom_logic('after_save', '');
     //Now that the record has been saved, we don't want to insert again on further saves
     $this->new_with_id = false;
     $this->in_save = false;
     return $this->id;
 }
Exemple #3
0
    $_SESSION['message'] = ['text' => 'Wählen Sie einen Benutzer aus', 'type' => 'danger'];
    header('Location: ' . LINK_OVERVIEW);
    die;
}
//Prüfen ob Formular abgeschickt wurde
if ($_POST) {
    //Daten von Formular in Array speichern und prüfen
    $userData = getDataFromPost();
    if (!isset($userData['error'])) {
        //Benutzer von Datenbank laden und eingegebenen Daten speichern
        $dbmanager = new DBManager();
        if ($dbmanager->isConnected()) {
            $user = $dbmanager->get('User', $_GET['user']);
            $user->fetchData($userData);
            //die(var_dump($user));
            if ($dbmanager->update('User', [$user])) {
                $_SESSION['message'] = ['type' => 'success', 'text' => 'Das Mitglied wurde im System gespeichert'];
                header('Location: ' . LINK_OVERVIEW);
                die;
            } else {
                $_SESSION['message'] = ['type' => 'danger', 'text' => 'Die Daten konnten nicht gespeichert werde'];
            }
        } else {
            $_SESSION['message'] = ['type' => 'danger', 'text' => 'Es konnte keine Verbindung zur Datenbank hergestellt werden'];
        }
    } else {
        $_SESSION['message'] = ['type' => 'danger', 'text' => $userData['error']];
    }
}
$tmpl = new Templating();
$wrappers = $tmpl->renderWrapper('layoutMenu.html');
Exemple #4
0
 /**
  * Implements a generic insert and update logic for any SugarBean
  * This method only works for subclasses that implement the same variable names.
  * This method uses the presence of an id field that is not null to signify and update.
  * The id field should not be set otherwise.
  *
  * @param boolean $check_notify Optional, default false, if set to true assignee of the record is notified via email.
  * @todo Add support for field type validation and encoding of parameters.
  */
 function save($check_notify = false)
 {
     $this->in_save = true;
     // cn: SECURITY - strip XSS potential vectors
     $this->cleanBean();
     // This is used so custom/3rd-party code can be upgraded with fewer issues, this will be removed in a future release
     $this->fixUpFormatting();
     global $timedate;
     global $current_user, $action;
     $isUpdate = true;
     if (empty($this->id) || !empty($this->new_with_id)) {
         $isUpdate = false;
     }
     if (empty($this->date_modified) || $this->update_date_modified) {
         $this->date_modified = $GLOBALS['timedate']->nowDb();
     }
     $this->_checkOptimisticLocking($action, $isUpdate);
     if (!empty($this->modified_by_name)) {
         $this->old_modified_by_name = $this->modified_by_name;
     }
     if ($this->update_modified_by) {
         $this->modified_user_id = 1;
         if (!empty($current_user)) {
             $this->modified_user_id = $current_user->id;
             $this->modified_by_name = $current_user->user_name;
         }
     }
     if ($this->deleted != 1) {
         $this->deleted = 0;
     }
     if (!$isUpdate) {
         if (empty($this->date_entered)) {
             $this->date_entered = $this->date_modified;
         }
         if ($this->set_created_by == true) {
             // created by should always be this user
             $this->created_by = isset($current_user) ? $current_user->id : "";
         }
         if ($this->new_with_id == false) {
             $this->id = create_guid();
         }
     }
     // if the module has a team_id field and no team_id is specified, set team_id as the current_user's default team
     // currently, the default_team is only enforced in the presentation layer-- this enforces it at the data layer as well
     $usedDefaultTeam = false;
     if (empty($this->team_id) && isset($this->field_defs['team_id']) && isset($current_user)) {
         $this->team_id = $current_user->team_id;
         $usedDefaultTeam = true;
     }
     // if this bean has a currency_id and base_rate, verify that base_rate is set to the correct amount
     if (isset($this->field_defs['currency_id']) && isset($this->field_defs['base_rate'])) {
         SugarCurrency::verifyCurrencyBaseRateSet($this, $isUpdate);
     }
     require_once "data/BeanFactory.php";
     BeanFactory::registerBean($this);
     if (!static::inOperation('saving_related') && static::enterOperation('updating_relationships')) {
         // let subclasses save related field changes
         $this->save_relationship_changes($isUpdate);
         static::leaveOperation('updating_relationships');
     }
     $this->updateCalculatedFields();
     if ($isUpdate && !$this->update_date_entered) {
         unset($this->date_entered);
     }
     // call the custom business logic
     $custom_logic_arguments = array('check_notify' => $check_notify, 'isUpdate' => $isUpdate);
     $this->call_custom_logic("before_save", $custom_logic_arguments);
     unset($custom_logic_arguments);
     if (isset($this->custom_fields)) {
         $this->custom_fields->bean = $this;
         $this->custom_fields->save($isUpdate);
     }
     //rrs new functionality to check if the team_id is set and the team_set_id is not set,
     //then see what we can do about saving to team_set_id. It is important for this code block to be below
     //the 'before_save' custom logic hook as that is where workflow is called.
     if (isset($this->field_defs['team_id'])) {
         if (empty($this->teams)) {
             $this->load_relationship('teams');
         }
         if (!empty($this->teams)) {
             //we do not need to the TeamSetLink to update the bean's table here
             //since it will be handled below.
             $this->teams->save(false, $usedDefaultTeam);
         }
     }
     // use the db independent query generator
     $this->preprocess_fields_on_save();
     $dataChanges = $this->db->getDataChanges($this);
     //construct the SQL to create the audit record if auditing is enabled.
     $auditDataChanges = array();
     if ($this->is_AuditEnabled()) {
         if ($isUpdate && !isset($this->fetched_row)) {
             $GLOBALS['log']->debug('Auditing: Retrieve was not called, audit record will not be created.');
         } else {
             $auditFields = $this->getAuditEnabledFieldDefinitions();
             $auditDataChanges = array_intersect_key($dataChanges, $auditFields);
         }
     }
     $this->_sendNotifications($check_notify);
     if ($isUpdate) {
         $this->db->update($this);
     } elseif ($this->db->insert($this)) {
         //Now that the record has been saved, we don't want to insert again on further saves
         $this->new_with_id = false;
     }
     if (!empty($auditDataChanges) && is_array($auditDataChanges)) {
         foreach ($auditDataChanges as $change) {
             $this->db->save_audit_records($this, $change);
         }
     }
     $this->updateRelatedCalcFields();
     // populate fetched row with newest changes in the bean
     foreach ($dataChanges as $change) {
         $this->fetched_row[$change['field_name']] = $change['after'];
     }
     // the reason we need to skip this is so that any RelatedBeans that are targeted to be saved
     // after the delete happens, wait to be saved till them.
     if (!static::inOperation('delete')) {
         SugarRelationship::resaveRelatedBeans();
     }
     //rrs - bug 7908
     $this->process_workflow_alerts();
     //rrs
     //If we aren't in setup mode and we have a current user and module, then we track
     if (isset($GLOBALS['current_user']) && isset($this->module_dir)) {
         $this->track_view($current_user->id, $this->module_dir, 'save');
     }
     $this->call_custom_logic('after_save', array('isUpdate' => $isUpdate, 'dataChanges' => $dataChanges));
     $this->in_save = false;
     return $this->id;
 }
Exemple #5
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/vereinsverwaltung/src/conf/config.php';
securityCheck();
$dbmanager = new DBManager();
//Eintrag auf 'bezahlt' setzen
if (isset($_GET['payed'])) {
    if (isset($_GET['date']) && !empty($_GET['date'])) {
        $dateObj = date_create_from_format('d.m.Y', $_GET['date']);
        if (dateObj !== FALSE) {
            $accHist = $dbmanager->get('Account_History', $_GET['payed']);
            $accHist->setPayed(true);
            $accHist->setDate_payed($dateObj);
            if ($dbmanager->update('Account_History', [$accHist])) {
                $message = ['type' => 'success', 'text' => 'Der Eintrag wurde als Bezahlt gespeichert'];
            } else {
                $message = ['type' => 'danger', 'text' => 'Der Eintrag konnte nicht bearbeitet werden'];
            }
            $_SESSION['message'] = $message;
            header('location: ' . LINK_MONEY);
        }
        $_SESSION['message'] = ['type' => 'danger', 'text' => 'Das Datum muss im Format d.m.Y sein'];
    }
    $_SESSION['message'] = ['type' => 'danger', 'text' => 'Geben Sie ein Datum an'];
}
//Editierte Kontodaten speichern
if (isset($_POST['account_name'])) {
    $account = $dbmanager->get('Account', $_POST['account_id']);
    $account->setName($_POST['account_name']);
    $account->setIban($_POST['account_iban']);
    $account->setBic($_POST['account_bic']);