/** * @todo Parent store could be partially used */ public function store(CAppUI $AppUI = null) { global $AppUI; $q = new DBQuery(); $this->w2PTrimAll(); $importing_tasks = false; $errorMsgArray = $this->check(); if (count($errorMsgArray) > 0) { return $errorMsgArray; } if ($this->task_id) { addHistory('tasks', $this->task_id, 'update', $this->task_name, $this->task_project); // Load and globalize the old, not yet updated task object // e.g. we need some info later to calculate the shifting time for depending tasks // see function update_dep_dates global $oTsk; $oTsk = new CTask(); $oTsk->peek($this->task_id); $this->task_updated = $q->dbfnNow(); if ($this->task_start_date == '') { $this->task_start_date = '0000-00-00 00:00:00'; } if ($this->task_end_date == '') { $this->task_end_date = '0000-00-00 00:00:00'; } $ret = $q->updateObject('tasks', $this, 'task_id'); $q->clear(); $this->_action = 'updated'; // if task_status changed, then update subtasks if ($this->task_status != $oTsk->task_status) { $this->updateSubTasksStatus($this->task_status); } // Moving this task to another project? if ($this->task_project != $oTsk->task_project) { $this->updateSubTasksProject($this->task_project); } if ($this->task_dynamic == 1) { $this->updateDynamics(true); } // shiftDependentTasks needs this done first $this->check(); $ret = $q->updateObject('tasks', $this, 'task_id', false); $q->clear(); // Milestone or task end date, or dynamic status has changed, // shift the dates of the tasks that depend on this task if ($this->task_end_date != $oTsk->task_end_date || $this->task_dynamic != $oTsk->task_dynamic || $this->task_milestone == '1') { $this->shiftDependentTasks(); } if (!$this->task_parent) { $q->addTable('tasks'); $q->addUpdate('task_parent', $this->task_id); $q->addUpdate('task_updated', $this->dbfnNow(), false, true); $q->addWhere('task_id = ' . (int) $this->task_id); $q->exec(); $q->clear(); } } else { $this->_action = 'added'; $this->task_updated = $q->dbfnNow(); $this->task_created = $q->dbfnNow(); if ($this->task_start_date == '') { $this->task_start_date = '0000-00-00 00:00:00'; } if ($this->task_end_date == '') { $this->task_end_date = '0000-00-00 00:00:00'; } $ret = $q->insertObject('tasks', $this, 'task_id'); $this->task_id = db_insert_id(); $q->clear(); addHistory('tasks', $this->task_id, 'add', $this->task_name, $this->task_project); if (!$this->task_parent) { $q->addTable('tasks'); $q->addUpdate('task_parent', $this->task_id); $q->addUpdate('task_updated', $q->dbfnNow(), false, true); $q->addWhere('task_id = ' . (int) $this->task_id); $q->exec(); $q->clear(); } else { // importing tasks do not update dynamics $importing_tasks = true; } } CProject::updateTaskCount($this->task_project, $this->getTaskCount($this->task_project)); $this->pushDependencies($this->task_id, $this->task_end_date); //split out related departments and store them seperatly. $q->setDelete('task_departments'); $q->addWhere('task_id=' . (int) $this->task_id); $q->exec(); $q->clear(); // print_r($this->task_departments); if (!empty($this->task_departments)) { $departments = explode(',', $this->task_departments); foreach ($departments as $department) { $q->addTable('task_departments'); $q->addInsert('task_id', $this->task_id); $q->addInsert('department_id', $department); $q->exec(); $q->clear(); } } //split out related contacts and store them seperatly. $q->setDelete('task_contacts'); $q->addWhere('task_id=' . (int) $this->task_id); $q->exec(); $q->clear(); if (!empty($this->task_contacts)) { $contacts = explode(',', $this->task_contacts); foreach ($contacts as $contact) { $q->addTable('task_contacts'); $q->addInsert('task_id', $this->task_id); $q->addInsert('contact_id', $contact); $q->exec(); $q->clear(); } } // if is child update parent task if ($this->task_parent != $this->task_id) { if (!$importing_tasks) { $this->updateDynamics(true); } $pTask = new CTask(); $pTask->load($this->task_parent); $pTask->updateDynamics(); if ($oTsk->task_parent != $this->task_parent) { $old_parent = new CTask(); $old_parent->load($oTsk->task_parent); $old_parent->updateDynamics(); } } // update dependencies if (!empty($this->task_id)) { $this->updateDependencies($this->getDependencies()); } else { print_r($this); } if (!$ret) { return false; } else { return true; } }
public function store() { $msg = $this->check(); if ($msg) { return 'CForumMessage::store-check failed ' . $msg; } $q = new DBQuery(); if ($this->message_id) { // First we need to remove any forum visits for this message // otherwise nobody will see that it has changed. $q->setDelete('forum_visits'); $q->addWhere('visit_message = ' . (int) $this->message_id); $q->exec(); // No error if this fails, it is not important. $q->clear(); $ret = $q->updateObject('forum_messages', $this, 'message_id', false); // ! Don't update null values $q->clear(); } else { $date = new CDate(); $this->message_date = $date->format(FMT_DATETIME_MYSQL); $new_id = $q->insertObject('forum_messages', $this, 'message_id'); ## TODO handle error now echo db_error(); ## TODO handle error better $q->clear(); $q->addTable('forum_messages'); $q->addQuery('count(message_id), MAX(message_date)'); $q->addWhere('message_forum = ' . (int) $this->message_forum); $res = $q->exec(); echo db_error(); ## TODO handle error better $reply = $q->fetchRow(); $q->clear(); //update forum descriptor $forum = new CForum(); $forum->forum_id = $this->message_forum; $forum->forum_message_count = $reply[0]; $forum->forum_last_date = $reply[1]; $forum->forum_last_id = $this->message_id; $forum->store(); ## TODO handle error now return $this->sendWatchMail(false); } if (!$ret) { return 'CForumMessage::store failed ' . db_error(); } else { return null; } }
public function store() { $msg = $this->check(); if ($msg) { return get_class($this) . '::store-check failed'; } $q = new DBQuery(); if ($this->user_id) { // save the old password $perm_func = 'updateLogin'; $q->addTable('users'); $q->addQuery('user_password'); $q->addWhere('user_id = ' . $this->user_id); $pwd = $q->loadResult(); if (!$this->user_password) { //if the user didn't provide a password keep the old one $this->user_password = $pwd; } elseif ($pwd != $this->user_password) { $this->user_password = md5($this->user_password); } else { //if something is not right keep the old one $this->user_password = $pwd; } $q->clear(); $ret = $q->updateObject('users', $this, 'user_id', false); $q->clear(); } else { $perm_func = 'addLogin'; $this->user_password = md5($this->user_password); $ret = $q->insertObject('users', $this, 'user_id'); $q->clear(); } if (!$ret) { return get_class($this) . '::store failed' . db_error(); } else { $acl =& $GLOBALS['AppUI']->acl(); $acl->{$perm_func}($this->user_id, $this->user_username); //Insert Default Preferences //Lets check if the user has allready default users preferences set, if not insert the default ones $q->addTable('user_preferences', 'upr'); $q->addWhere('upr.pref_user = '******'user_preferences', 'dup'); $q->addWhere('dup.pref_user = 0'); $w2prefs = $q->loadList(); $q->clear(); foreach ($w2prefs as $w2prefskey => $w2prefsvalue) { $q->addTable('user_preferences', 'up'); $q->addInsert('pref_user', $this->user_id); $q->addInsert('pref_name', $w2prefsvalue['pref_name']); $q->addInsert('pref_value', $w2prefsvalue['pref_value']); $q->exec(); $q->clear(); } } return null; } }
/** * Inserts a new row if id is zero or updates an existing row in the database table * * Can be overloaded/supplemented by the child class * @return null|string null if successful otherwise returns and error message */ public function store($updateNulls = false) { global $AppUI; $this->w2PTrimAll(); $msg = $this->check(); if ($msg) { return get_class($this) . '::store-check failed ' . $msg; } $k = $this->_tbl_key; if ($this->{$k}) { $store_type = 'update'; $q = new DBQuery(); $ret = $q->updateObject($this->_tbl, $this, $this->_tbl_key, $updateNulls); $q->clear(); } else { $store_type = 'add'; $q = new DBQuery(); $ret = $q->insertObject($this->_tbl, $this, $this->_tbl_key); $q->clear(); } if ($ret) { // only record history if an update or insert actually occurs. addHistory($this->_tbl, $this->{$k}, $store_type, $AppUI->_('ACTION') . ': ' . $store_type . ' ' . $AppUI->_('TABLE') . ': ' . $this->_tbl . ' ' . $AppUI->_('ID') . ': ' . $this->{$k}); } return !$ret ? get_class($this) . '::store failed ' . db_error() : null; }
public function store(CAppUI $AppUI = null) { global $AppUI; $perms = $AppUI->acl(); $stored = false; $errorMsgArray = $this->check(); if (count($errorMsgArray) > 0) { return $errorMsgArray; } if ($this->dept_id) { $q = new DBQuery(); $ret = $q->updateObject('departments', $this, 'dept_id', false); addHistory('departments', $this->dept_id, 'update', $this->dept_name, $this->dept_id); $stored = true; } else { $q = new DBQuery(); $ret = $q->insertObject('departments', $this, 'dept_id'); addHistory('departments', $this->dept_id, 'add', $this->dept_name, $this->dept_id); $stored = true; } return $stored; }