⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 customexport.php

📁 国外的人才求职招聘最新版
💻 PHP
字号:
<?php/** * OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures * all the essential functionalities required for any enterprise. * Copyright (C) 2006 OrangeHRM Inc., http://www.orangehrm.com * * OrangeHRM 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 2 of the License, or (at your option) any later version. * * OrangeHRM 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA  02110-1301, USA * */require_once ROOT_PATH.'/lib/dao/DMLFunctions.php';require_once ROOT_PATH.'/lib/dao/SQLQBuilder.php';require_once ROOT_PATH.'/lib/confs/sysConf.php';require_once ROOT_PATH.'/lib/common/CommonFunctions.php';require_once ROOT_PATH . '/lib/common/UniqueIDGenerator.php';class CustomExport {	/**	 * Table Name	 */	const TABLE_NAME = 'hs_hr_custom_export';	const DB_FIELDS_ID = 'export_id';	const DB_FIELDS_NAME = 'name';	const DB_FIELDS_FIELDS = 'fields';	const DB_FIELDS_HEADINGS = 'headings';	/** CSV Field name constants */	const FIELD_EMPID = 'empId';    const FIELD_LASTNAME = 'lastName';	const FIELD_FIRSTNAME =  'firstName';	const FIELD_MIDDLENAME = 'middleName';	const FIELD_STREET1 = 'street1';	const FIELD_STREET2 = 'street2';	const FIELD_CITY = 'city';	const FIELD_STATE = 'state';	const FIELD_ZIP = 'zip';	const FIELD_GENDER = 'gender';	const FIELD_BIRTHDATE = 'birthDate';	const FIELD_SSN = 'ssn';	const FIELD_EMPSTATUS = 'empStatus';	const FIELD_JOINEDDATE = 'joinedDate';	const FIELD_WORKSTATION = 'workStation';	const FIELD_LOCATION = 'location';	const FIELD_CUSTOM1 = 'custom1';	const FIELD_CUSTOM2 = 'custom2';	const FIELD_CUSTOM3 = 'custom3';	const FIELD_CUSTOM4 = 'custom4';	const FIELD_CUSTOM5 = 'custom5';	const FIELD_CUSTOM6 = 'custom6';	const FIELD_CUSTOM7 = 'custom7';	const FIELD_CUSTOM8 = 'custom8';	const FIELD_CUSTOM9 = 'custom9';	const FIELD_CUSTOM10 = 'custom10';	const FIELD_WORKSTATE = 'workState';	const FIELD_SALARY = 'salary';	const FIELD_PAYFREQUENCY = 'payFrequency';	const FIELD_FITWSTATUS = 'FITWStatus';	const FIELD_FITWEXCEMPTIONS = 'FITWExemptions';	const FIELD_SITWSTATE = 'SITWState';	const FIELD_SITWSTATUS = 'SITWStatus';	const FIELD_SITWEXCEMPTIONS = 'SITWExemptions';	const FIELD_SUISTATE = 'SUIState';	const FIELD_DD1ROUTING = 'DD1Routing';	const FIELD_DD1ACCOUNT = 'DD1Account';	const FIELD_DD1AMOUNT = 'DD1Amount';	const FIELD_DD1AMOUNTCODE = 'DD1AmountCode';	const FIELD_DD1CHECKING = 'DD1Checking';	const FIELD_DD2ROUTING = 'DD2Routing';	const FIELD_DD2ACCOUNT = 'DD2Account';	const FIELD_DD2AMOUNT = 'DD2Amount';	const FIELD_DD2AMOUNTCODE = 'DD2AmountCode';	const FIELD_DD2CHECKING = 'DD2Checking';	/**	 * Class Attributes	 */	private $id;	private $name;	private $assignedFields;	private $headings;	/**	 *	Setter method followed by getter method for each	 *	attribute	 */	public function setId($id) {			$this->id = $id;	}	public function getId() {		return $this->id;	}	public function setName($name){		$this->name = $name;	}	public function getName(){		return $this->name;	}	public function setAssignedFields($fields) {		$this->assignedFields = $fields;	}	public function getAssignedFields() {		return $this->assignedFields;	}	public function setHeadings($headings) {		return $this->headings = $headings;	}	public function getHeadings() {		return $this->headings;	}	public function __construct() {	}	/**	 * Get CustomExport with given Id	 *	 * @param int Custom export id	 * @return CustomExport Custom Export object if found or null if not	 */	public static function getCustomExport($id) {		if (!CommonFunctions::isValidId($id)) {			throw new CustomExportException("Invalid parameters to getCustomExport(): id = $id", CustomExportException::INVALID_PARAMETERS);		}		$selectCondition[] = self::DB_FIELDS_ID . " = $id";		$list = self::_getList($selectCondition);		$export = count($list) == 0 ? null : $list[0];		return $export;	}	public static function getAllFields() {		$allFields = array(self::FIELD_EMPID, self::FIELD_LASTNAME, self::FIELD_FIRSTNAME, self::FIELD_MIDDLENAME,			self::FIELD_STREET1, self::FIELD_STREET2, self::FIELD_CITY, self::FIELD_STATE,			self::FIELD_ZIP, self::FIELD_GENDER, self::FIELD_BIRTHDATE, self::FIELD_SSN,			self::FIELD_EMPSTATUS, self::FIELD_JOINEDDATE, self::FIELD_WORKSTATION, self::FIELD_LOCATION, self::FIELD_CUSTOM1, self::FIELD_CUSTOM2,			self::FIELD_CUSTOM3, self::FIELD_CUSTOM4, self::FIELD_CUSTOM5, self::FIELD_CUSTOM6,			self::FIELD_CUSTOM7, self::FIELD_CUSTOM8, self::FIELD_CUSTOM9, self::FIELD_CUSTOM10,			self::FIELD_WORKSTATE, self::FIELD_SALARY, self::FIELD_PAYFREQUENCY, self::FIELD_FITWSTATUS,			self::FIELD_FITWEXCEMPTIONS, self::FIELD_SITWSTATE, self::FIELD_SITWSTATUS, self::FIELD_SITWEXCEMPTIONS,			self::FIELD_SUISTATE, self::FIELD_DD1ROUTING, self::FIELD_DD1ACCOUNT, self::FIELD_DD1AMOUNT,			self::FIELD_DD1AMOUNTCODE, self::FIELD_DD1CHECKING, self::FIELD_DD2ROUTING, self::FIELD_DD2ACCOUNT,			self::FIELD_DD2AMOUNT, self::FIELD_DD2AMOUNTCODE, self::FIELD_DD2CHECKING);		return $allFields;	}	/**	 * Get list of Custom Export objects in the database	 * @return Array Array of CustomExport objects	 */	public static function getCustomExportList() {		return self::_getList();	}	/**	 * Get list of defined Custom Exports in format suitable for view.php	 * @return Array 2D array representing custom export objects defined in database.	 */	public static function getCustomExportListForView($pageNO,$schStr,$mode,$sortField = 0, $sortOrder = 'ASC') {		$exports = CustomExport::getCustomExportList();		$arrDispArr = null;		for($i=0; count($exports) > $i; $i++) {			$arrDispArr[$i][0] = $exports[$i]->getId();			$arrDispArr[$i][1] = $exports[$i]->getName();		}		return $arrDispArr;	}	/**	 * Get the available fields (fields not yet assigned to this CustomExport)	 *	 * @return array Array of fields not yet assigned to this CustomExport object	 */	public function getAvailableFields() {		$allFields = CustomExport::getAllFields();		$available = array_diff($allFields, $this->assignedFields);		return $available;	}	/**	 * Delete custom exports with the given ids	 *	 * @param array $ids Array of export id's	 * @return int the number of CustomExport's actually deleted	 */	public static function deleteExports($ids) {		$count = 0;		if (!is_array($ids)) {			throw new CustomExportException("Invalid parameter to deleteExports(): ids should be an array", CustomExportException::INVALID_PARAMETERS);		}		foreach ($ids as $id) {			if (!CommonFunctions::isValidId($id)) {				throw new CustomExportException("Invalid parameter to deleteExports(): id = $id", CustomExportException::INVALID_PARAMETERS);			}		}		if (!empty($ids)) {			$sql = sprintf("DELETE FROM %s WHERE `%s` IN (%s)", self::TABLE_NAME,			                self::DB_FIELDS_ID, implode(",", $ids));			$conn = new DMLFunctions();			$result = $conn->executeQuery($sql);			if ($result) {				$count = mysql_affected_rows();			}		}		return $count;	}	/**	 * Save this CustomExport Object.	 * If an id is available the existing values are updated, if not a new	 * id is assigned and a new CustomExport is saved	 *	 */	public function save() {		// Validate fieleds		if (empty($this->name)) {			throw new CustomExportException("Empty name", CustomExportException::EMPTY_EXPORT_NAME);		}		if ($this->_isNameInUse()) {			throw new CustomExportException("Duplicate name", CustomExportException::DUPLICATE_EXPORT_NAME);		}		if (empty($this->assignedFields) || !is_array($this->assignedFields)) {			throw new CustomExportException("No valid Assigned fields", CustomExportException::NO_ASSIGNED_FIELDS);		}		$allFields = self::getAllFields();		foreach ($this->assignedFields as $field) {			if (!in_array($field, $allFields)) {				throw new CustomExportException("Invalid field name", CustomExportException::INVALID_FIELD_NAME);			}		}		if (!empty($this->headings)) {			if (count($this->assignedFields) != count($this->headings)) {				throw new CustomExportException("Header count should match field count", CustomExportException::HEADER_COUNT_DOESNT_MATCH_FIELD_COUNT);			}			foreach ($this->headings as $heading) {				if (strpos($heading, ",") !== false) {					throw new CustomExportException("Invalid heading name", CustomExportException::INVALID_HEADER_NAME);				}			}		}		if (empty($this->id)) {			$this->_insert();		} else {			$this->_update();		}	}	/**	 * Add new CustomExport object to database	 */	private function _insert() {		$fields[0] = self::DB_FIELDS_ID;		$fields[1] = self::DB_FIELDS_NAME;		$fields[2] = self::DB_FIELDS_FIELDS;		$fields[3] = self::DB_FIELDS_HEADINGS;		$this->id = UniqueIDGenerator::getInstance()->getNextID(self::TABLE_NAME, self::DB_FIELDS_ID);		$values[0] = $this->id;		$values[1] = "'{$this->name}'";		$values[2] = "'" . implode(",", $this->assignedFields) . "'";		$values[3] = empty($this->headings) ? "''" : "'". implode(",", $this->headings) . "'";		$sqlBuilder = new SQLQBuilder();		$sqlBuilder->table_name = self::TABLE_NAME;		$sqlBuilder->flg_insert = 'true';		$sqlBuilder->arr_insert = $values;		$sqlBuilder->arr_insertfield = $fields;		$sql = $sqlBuilder->addNewRecordFeature2();		$conn = new DMLFunctions();		$result = $conn->executeQuery($sql);		if (!$result || (mysql_affected_rows() != 1)) {			throw new CustomExportException("Insert failed. $sql", CustomExportException::DB_EXCEPTION);		}	}	/**	 * Update existing CustomExport data	 */	private function _update() {		$fields[0] = self::DB_FIELDS_ID;		$fields[1] = self::DB_FIELDS_NAME;		$fields[2] = self::DB_FIELDS_FIELDS;		$fields[3] = self::DB_FIELDS_HEADINGS;		$values[0] = $this->id;		$values[1] = "'{$this->name}'";		$values[2] = "'" . implode(",", $this->assignedFields) . "'";		$values[3] = empty($this->headings) ? "''" : "'". implode(",", $this->headings) . "'";		$sqlBuilder = new SQLQBuilder();		$sqlBuilder->table_name = self::TABLE_NAME;		$sqlBuilder->flg_update = 'true';		$sqlBuilder->arr_update = $fields;		$sqlBuilder->arr_updateRecList = $values;		$sql = $sqlBuilder->addUpdateRecord1(0);		$conn = new DMLFunctions();		$result = $conn->executeQuery($sql);		// Here we don't check mysql_affected_rows because update may be called		// without any changes.		if (!$result) {			throw new CustomExportException("Update failed. SQL=$sql", CustomExportException::DB_EXCEPTION);		}	}	/**	 * Check if this objects name is in use	 *	 * @return boolean true if that name is in use, false otherwise	 */	private function _isNameInUse()  {		$sql = 'SELECT COUNT(*) FROM ' . self::TABLE_NAME . ' WHERE ' . self::DB_FIELDS_NAME . " = '" . $this->name . "'";		// exclude this object		if (!empty($this->id)) {			$sql .= ' AND ' . self::DB_FIELDS_ID . ' <> ' . $this->id;		}		$result = mysql_query($sql);		$row = mysql_fetch_array($result, MYSQL_NUM);        $count = $row[0];		return ($count != 0);	}	/**	 * Get a list of custom export objects with the given conditions.	 *	 * @param array   $selectCondition Array of select conditions to use.	 * @return array  Array of CustomExport objects. Returns an empty (length zero) array if none found.	 */	private static function _getList($selectCondition = null) {		$fields[0] = self::DB_FIELDS_ID;		$fields[1] = self::DB_FIELDS_NAME;		$fields[2] = self::DB_FIELDS_FIELDS;		$fields[3] = self::DB_FIELDS_HEADINGS;		$sqlBuilder = new SQLQBuilder();		$sql = $sqlBuilder->simpleSelect(self::TABLE_NAME, $fields, $selectCondition);		$actList = array();		$conn = new DMLFunctions();		$result = $conn->executeQuery($sql);		while ($result && ($row = mysql_fetch_assoc($result))) {			$actList[] = self::_createFromRow($row);		}		return $actList;	}	/**	 * Creates a CustomExport object from a resultset row	 *	 * @param array $row Resultset row from the database.	 * @return CustomExport Custom Export object.	 */	private static function _createFromRow($row) {		$tmp = new CustomExport();		$tmp->setId($row[self::DB_FIELDS_ID]);		$tmp->setName($row[self::DB_FIELDS_NAME]);		$assignedFields = $row[self::DB_FIELDS_FIELDS];		if (!empty($assignedFields)) {			$tmp->setAssignedFields(explode(",", $assignedFields));		} else {			$tmp->setAssignedFields(array());		}		$headers = $row[self::DB_FIELDS_HEADINGS];		if (!empty($headers)) {			$tmp->setHeadings(explode(",", $headers));		} else {			$tmp->setHeadings(array());		}		return $tmp;	}}class CustomExportException extends Exception {	const INVALID_FIELD_NAME = 0;	const INVALID_HEADER_NAME = 1;	const HEADER_COUNT_DOESNT_MATCH_FIELD_COUNT = 2;	const NO_ASSIGNED_FIELDS = 3;	const DUPLICATE_EXPORT_NAME = 4;	const EMPTY_EXPORT_NAME = 5;	const DB_EXCEPTION = 6;	const INVALID_PARAMETERS = 7;	const ID_NOT_FOUND = 8;}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -