/** * Update the position for this to mark it as closed and then save the object. */ public function save() { if (!$this->hasPermission('task(person_can_edit_child_form_person_position)')) { $this->userMessage("You can't change a person's position"); return false; } $new_person_position = $this->getPrimary(); if ($this->post_exists('position_option') && $this->post('position_option') == 'create' && $this->new_position instanceof iHRIS_Position) { $this->new_position->setStatus("position_status|closed"); $this->new_position->save($this->user); $new_person_position->getField("position")->setFromDB($this->new_position->getNameId()); $position = $this->new_position; } else { $position = $this->factory->createContainer($new_person_position->getField("position")->getDBValue()); $position->statusOnly(); $position->closePosition($this->user, $this->getParent()->getId()); } if ($this->getParent()->isActive() && $this->old_position instanceof iHRIS_Position) { $this->old_position->statusOnly(); $this->old_position->save($this->user); $person = $this->getParent(); if ($this->old_person_position instanceof iHRIS_PersonPosition) { $this->old_person_position->end_date = $new_person_position->start_date; $this->old_person_position->save($this->user); I2CE_ModuleFactory::callHooks("make_promotion_save", $this->old_person_position, $new_person_position); } //$this->getPrimary()->reason = null; } I2CE_ModuleFactory::callHooks("make_offer_save", $new_person_position); foreach ($this->objects[self::EDIT_CHILD] as $obj) { if ($obj->getId() == '0') { $obj->setParent($new_person_position); } I2CE_ModuleFactory::callHooks("make_offer_save_" . $obj->getName(), $new_person_position, $obj); } parent::save(); }
/** * Make a special save function * @param I2CE_User $user * @param boolean $transact * @return boolean */ public function save($user, $transact = true) { if ($this->getId() != '0') { return parent::save($user, $transact); } $ret_val = true; $count = $this->count; if (!$count) { $count = 1; } $code_start = $this->code_start; while ($count--) { $this->setId(0); if ($this->code_format != "") { $this->code = sprintf($this->code_format, $code_start); $code_start++; } $ret_val = $ret_val && parent::save($user, $transact); } return $ret_val; }