+++ /dev/null
-<?php
-/**
- * A general class for personell
- *
- * @author Roland Haeder <webmaster@shipsimu.org>
- * @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu Developer Team
- * @license GNU GPL 3.0 or any newer version
- * @link http://www.shipsimu.org
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class BasePersonell extends BaseFrameworkSystem implements Personellizer {
- // Maximum/minimum age
- private $MIN_AGE = 21;
- private $MAX_AGE = 40;
-
- // Male/female
- private $gender = ""; // M=Male, F=Female, empty=uninitialized
-
- // Year/month/day of birth
- private $yearBirth = 0;
- private $monthBirth = 0;
- private $dayBirth = 0;
-
- // Surname/family name
- private $surname = "";
- private $family = "";
-
- // Employed?
- private $employed = false;
-
- // Married?
- private $married = false;
-
- // Her/his salary
- private $salary = 0.00;
-
- // Constructor
- protected function __construct ($className) {
- // Call parent constructor
- parent::__construct($className);
- }
-
- // Remove min/max ages
- public final function removeMinMaxAge () {
- unset($this->MIN_AGE);
- unset($this->MAX_AGE);
- }
-
- // Generates a birthday based on MAX_AGE/MIN_AGE and the current date
- public final function createBirthday () {
- // Is the birthday already set?
- if ($this->isDateValid($this->yearBirth, $this->monthBirth, $this->dayBirth)) return false;
-
- // Get current year
- $currYear = date("Y", time());
-
- // Generate random year/month/day
- $year = mt_rand(($currYear - $this->MIN_AGE), ($currYear - $this->MAX_AGE));
- $month = 0;
- $day = 0;
- while ($this->isDateValid($year, $month, $day) === false) {
- $month = mt_rand(1, 12);
- switch ($month) {
- case 1:
- case 3:
- case 5:
- case 7:
- case 8:
- case 10:
- case 12:
- $day = mt_rand(1, 31);
- break;
-
- case 4:
- case 6:
- case 9:
- case 11:
- $day = mt_rand(1, 30);
- break;
-
- case 2: // February
- if ($year % 4 == 0) {
- // Is a "Schaltjahr"
- $day = mt_rand(1, 29);
- } else {
- // Regular year
- $day = mt_rand(1, 28);
- }
- break;
- } // END - switch
- } // END - while
-
- // Set the new birthday
- $this->setBirthday($year, $month, $day);
- }
-
- // Is the current day valid?
- public final function isDateValid ($year, $month, $day) {
- // Create timestamp
- $stamp = mktime(0, 0, 0, $month, $day, $year);
-
- // Get year/month/day back
- $y = date("Y", $stamp);
- $m = date("m", $stamp);
- $d = date("d", $stamp);
-
- // Compare all
- return (($y == $year) && ($m == $month) && ($d == $day));
- }
-
- // Employed?
- public final function isEmployed () {
- return $this->employed;
- }
-
- // Married?
- public final function isMarried () {
- return $this->married;
- }
-
- // Male?
- public final function isMale () {
- return ($this->gender == "M");
- }
-
- // Female
- public final function isFemale () {
- return ($this->gender == "F");
- }
-
- // Setter for surname
- public final function setSurname ($surname) {
- $this->surname = (string) $surname;
- }
-
- // Getter for surname
- public function getSurname () {
- return $this->surname;
- }
-
- // Setter for family name
- public final function setFamily ($family) {
- $this->family = (string) $family;
- }
-
- // Getter for family name
- public final function getFamily () {
- return $this->family;
- }
-
- // Setter for gender
- public final function setGender ($gender) {
- // Set random gender here
- if (($gender == "M") || ($gender == "F") || ((empty($gender)) && ($this->getSurname() == ""))) {
- $this->gender = $gender;
- } else {
- throw new WrongGenderSpecifiedException($gender, self::EXCEPTION_GENDER_IS_WRONG);
- }
- }
-
- // Getter for gender
- public final function getGender () {
- return $this->gender;
- }
-
- // Setter for employment status
- public final function setEmployed ($employed) {
- $this->employed = (boolean) $employed;
- }
-
- // Setter for marriage status
- public final function setMarried ($married) {
- $this->married = (boolean) $married;
- }
-
- // Getter for salary
- public final function getSalary () {
- return $this->salary;
- }
-
- // Increase salary
- public final function increaseSalary ($add) {
- $this->salary += (float) abs($add);
- }
-
- // Decrease salary
- public final function decreaseSalary ($sub) {
- $this->salary -= (float) abs($sub);
- }
-
- // Setter for birthday
- public final function setBirthday ($year, $month, $day) {
- $this->yearBirth = (int) abs($year);
- $this->monthBirth = (int) abs($month);
- $this->dayBirth = (int) abs($day);
- }
-
- // Remove gender
- public final function removeGender () {
- unset($this->gender);
- }
-
- // Remove both names
- public final function removeNames () {
- unset($this->surname);
- unset($this->family);
- }
-
- // Remove complete birthday
- public final function removeBirthday () {
- unset($this->yearBirth);
- unset($this->monthBirth);
- unset($this->dayBirth);
- }
-
- // Remove salary
- public final function removeSalary () {
- unset($this->salary);
- }
-
- // Remove employment status
- public final function removeEmployed () {
- unset($this->employed);
- }
-
- // Remove marrital status
- public final function removeMarried () {
- unset($this->married);
- }
-}
-
-// [EOF]
-?>