This commit is contained in:
Christian Paminger
2006-11-27 08:46:23 +00:00
parent 69e7513333
commit 0f0296a02a
570 changed files with 69005 additions and 0 deletions
+123
View File
@@ -0,0 +1,123 @@
<?php
/**
* author: maximilian schremser <max@technikum-wien.at>
* date:
* title: Authorization.class.php
* manual: $auth = new Authorization($uid, $course_id, $semester, $lesson);
*
* Tries to login a user as a student, if fails, it tries
* to login as a teacher.
* returns 0 for student
* 1 for teacher
* -1 on error
* holt den firstname, lastname, uid und id des Benutzers
*/
class Authorization
{
var $firstname;
var $lastname;
var $id;
var $uid;
var $stg_id;
var $semester;
var $verband;
var $gruppe;
var $isLector;
var $module;
var $lehrfach;
var $date;
var $session;
var $birthday;
function Authorization($uid ="", $course_id = 0, $semester = 0, $lesson = "",$conn="")
{
$this->isLector = -1;
$this->module = 0;
if ($uid == "oesi" || $uid == "kates")
{
$this->uid = $uid;
$this->stg_id = $course_id;
$this->lehrfach = $lesson;
$this->semester = $semester;
$this->isLector = 1;
return $this->isLector;
}
// try to looon as a student
$sql = "SELECT * ".
"FROM tbl_student JOIN tbl_person USING (uid) WHERE
uid = '$uid' AND studiengang_kz = $course_id
AND semester >= $semester";
$rs = new pgRS($conn,$sql);
if ($rs->num > 0)
{
$this->firstname = $rs->arr[0]["vornamen"];
$this->lastname = $rs->arr[0]["nachname"];
//$this->id = $rs->arr[0]["id"];
$this->uid = $uid;
$this->stg_id = $rs->arr[0]["studiengang_kz"];
$this->semester = $rs->arr[0]["semester"];
$this->verband = $rs->arr[0]["verband"];
$this->gruppe = $rs->arr[0]["gruppe"];
$this->birthday = $rs->arr[0]["gebdatum"];
$this->isLector = 0;
}
else
{
/* oesi 17-01-2005
$sql = "SELECT * FROM lehre.tbl_lehrfachzuteilung JOIN tbl_person ON
(lektor_uid = uid) WHERE lektor_uid = '$uid' AND
lehrfachzuteilung_kurzbz = '$lesson' AND
semester = $semester AND studiengang_kz = $course_id LIMIT 1";
*/
$sql = "SELECT * FROM tbl_lehrveranstaltung, tbl_lehrfach, tbl_person WHERE
tbl_lehrveranstaltung.lehrfach_nr=tbl_lehrfach.lehrfach_nr AND
tbl_person.uid=lektor AND lektor='$uid' AND
tbl_lehrfach.studiengang_kz=$course_id AND
tbl_lehrfach.semester=$semester AND lehrevz='$lesson' LIMIT 1";
$rs = new pgRS($conn,$sql);
if ($rs->num > 0)
{
$this->firstname = $rs->arr[0]["vornamen"];
$this->lastname = $rs->arr[0]["nachname"];
$this->birthday = $rs->arr[0]["gebdatum"];
$this->uid = $uid;
$this->stg_id = $course_id;
$this->lehrfach = $lesson;
$this->semester = $semester;
$this->isLector = 1;
}
else
{
//$sql = "SELECT DISTINCT tbl_person.uid FROM public.tbl_person, lehre.tbl_lehrfachzuteilung WHERE tbl_person.uid='$uid' AND tbl_lehrfachzuteilung.lektor_uid=tbl_person.uid AND studiengang_kz='$course_id' UNION SELECT DISTINCT tbl_person.uid FROM public.tbl_person, public.tbl_personfunktion WHERE tbl_person.uid='$uid' AND tbl_personfunktion.uid=tbl_person.uid AND studiengang_kz='$course_id' LIMIT 1";
$sql = "SELECT vornamen, nachname, gebdatum FROM public.tbl_person, tbl_lehrveranstaltung
WHERE tbl_person.uid='$uid' AND tbl_lehrveranstaltung.lektor=tbl_person.uid AND
studiengang_kz='$course_id'
UNION
SELECT vornamen, nachname, gebdatum FROM public.tbl_person, public.tbl_personfunktion
WHERE tbl_person.uid='$uid' AND tbl_personfunktion.uid=tbl_person.uid AND
studiengang_kz='$course_id' LIMIT 1";
$rs = new pgRS($conn,$sql);
if ($rs->num > 0)
{
$this->firstname = $rs->arr[0]["vornamen"];
$this->lastname = $rs->arr[0]["nachname"];
$this->birthday = $rs->arr[0]["gebdatum"];
$this->uid = $uid;
$this->stg_id = $course_id;
$this->lehrfach = $lesson;
$this->semester = $semester;
$this->isLector = 1;
}
}
}
return $this->isLector;
}
}
?>
+237
View File
@@ -0,0 +1,237 @@
<?php
/*
* Module written/ported by Xavier Noguer <xnoguer@php.net>
*
* The majority of this is _NOT_ my code. I simply ported it from the
* PERL Spreadsheet::WriteExcel module.
*
* The author of the Spreadsheet::WriteExcel module is John McNamara
* <jmcnamara@cpan.org>
*
* I _DO_ maintain this code, and John McNamara has nothing to do with the
* porting of this code to PHP. Any questions directly related to this
* class library should be directed to me.
*
* License Information:
*
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@php.net
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* Class for writing Excel BIFF records.
*
* From "MICROSOFT EXCEL BINARY FILE FORMAT" by Mark O'Brien (Microsoft Corporation):
*
* BIFF (BInary File Format) is the file format in which Excel documents are
* saved on disk. A BIFF file is a complete description of an Excel document.
* BIFF files consist of sequences of variable-length records. There are many
* different types of BIFF records. For example, one record type describes a
* formula entered into a cell; one describes the size and location of a
* window into a document; another describes a picture format.
*
* @author Xavier Noguer <xnoguer@php.net>
* @category FileFormats
* @package Spreadsheet_Excel_Writer
*/
class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR
{
/**
* The BIFF/Excel version (5).
* @var integer
*/
var $_BIFF_version = 0x0500;
/**
* The byte order of this architecture. 0 => little endian, 1 => big endian
* @var integer
*/
var $_byte_order;
/**
* The string containing the data of the BIFF stream
* @var string
*/
var $_data;
/**
* The size of the data in bytes. Should be the same as strlen($this->_data)
* @var integer
*/
var $_datasize;
/**
* The maximun length for a BIFF record. See _addContinue()
* @var integer
* @see _addContinue()
*/
var $_limit;
/**
* Constructor
*
* @access public
*/
function Spreadsheet_Excel_Writer_BIFFwriter()
{
$this->_byte_order = '';
$this->_data = '';
$this->_datasize = 0;
$this->_limit = 2080;
// Set the byte order
$this->_setByteOrder();
}
/**
* Determine the byte order and store it as class data to avoid
* recalculating it for each call to new().
*
* @access private
*/
function _setByteOrder()
{
// Check if "pack" gives the required IEEE 64bit float
$teststr = pack("d", 1.2345);
$number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F);
if ($number == $teststr) {
$byte_order = 0; // Little Endian
} elseif ($number == strrev($teststr)){
$byte_order = 1; // Big Endian
} else {
// Give up. I'll fix this in a later version.
return $this->raiseError("Required floating point format ".
"not supported on this platform.");
}
$this->_byte_order = $byte_order;
}
/**
* General storage function
*
* @param string $data binary data to prepend
* @access private
*/
function _prepend($data)
{
if (strlen($data) > $this->_limit) {
$data = $this->_addContinue($data);
}
$this->_data = $data.$this->_data;
$this->_datasize += strlen($data);
}
/**
* General storage function
*
* @param string $data binary data to append
* @access private
*/
function _append($data)
{
if (strlen($data) > $this->_limit) {
$data = $this->_addContinue($data);
}
$this->_data = $this->_data.$data;
$this->_datasize += strlen($data);
}
/**
* Writes Excel BOF record to indicate the beginning of a stream or
* sub-stream in the BIFF file.
*
* @param integer $type Type of BIFF file to write: 0x0005 Workbook,
* 0x0010 Worksheet.
* @access private
*/
function _storeBof($type)
{
$record = 0x0809; // Record identifier
// According to the SDK $build and $year should be set to zero.
// However, this throws a warning in Excel 5. So, use magic numbers.
if ($this->_BIFF_version == 0x0500) {
$length = 0x0008;
$unknown = '';
$build = 0x096C;
$year = 0x07C9;
} elseif ($this->_BIFF_version == 0x0600) {
$length = 0x0010;
$unknown = pack("VV", 0x00000041, 0x00000006); //unknown last 8 bytes for BIFF8
$build = 0x0DBB;
$year = 0x07CC;
}
$version = $this->_BIFF_version;
$header = pack("vv", $record, $length);
$data = pack("vvvv", $version, $type, $build, $year);
$this->_prepend($header . $data . $unknown);
}
/**
* Writes Excel EOF record to indicate the end of a BIFF stream.
*
* @access private
*/
function _storeEof()
{
$record = 0x000A; // Record identifier
$length = 0x0000; // Number of bytes to follow
$header = pack("vv", $record, $length);
$this->_append($header);
}
/**
* Excel limits the size of BIFF records. In Excel 5 the limit is 2084 bytes. In
* Excel 97 the limit is 8228 bytes. Records that are longer than these limits
* must be split up into CONTINUE blocks.
*
* This function takes a long BIFF record and inserts CONTINUE records as
* necessary.
*
* @param string $data The original binary data to be written
* @return string A very convenient string of continue blocks
* @access private
*/
function _addContinue($data)
{
$limit = $this->_limit;
$record = 0x003C; // Record identifier
// The first 2080/8224 bytes remain intact. However, we have to change
// the length field of the record.
$tmp = substr($data, 0, 2).pack("v", $limit-4).substr($data, 4, $limit - 4);
$header = pack("vv", $record, $limit); // Headers for continue records
// Retrieve chunks of 2080/8224 bytes +4 for the header.
$data_length = strlen($data);
for ($i = $limit; $i < ($data_length - $limit); $i += $limit) {
$tmp .= $header;
$tmp .= substr($data, $i, $limit);
}
// Retrieve the last chunk of data
$header = pack("vv", $record, strlen($data) - $i);
$tmp .= $header;
$tmp .= substr($data, $i, strlen($data) - $i);
return $tmp;
}
}
?>
+113
View File
@@ -0,0 +1,113 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Xavier Noguer <xnoguer@php.net> |
// | Based on OLE::Storage_Lite by Kawai, Takanori |
// +----------------------------------------------------------------------+
//
// $Id: File.php,v 1.8 2003/12/12 21:10:10 xnoguer Exp $
/**
* Class for creating File PPS's for OLE containers
*
* @author Xavier Noguer <xnoguer@php.net>
* @category Structures
* @package OLE
*/
class OLE_PPS_File extends OLE_PPS
{
/**
* The temporary dir for storing the OLE file
* @var string
*/
var $_tmp_dir;
/**
* The constructor
*
* @access public
* @param string $name The name of the file (in Unicode)
* @see OLE::Asc2Ucs()
*/
function OLE_PPS_File($name)
{
$this->_tmp_dir = '';
$this->OLE_PPS(
null,
$name,
OLE_PPS_TYPE_FILE,
null,
null,
null,
null,
null,
'',
array());
}
/**
* Sets the temp dir used for storing the OLE file
*
* @access public
* @param string $dir The dir to be used as temp dir
* @return true if given dir is valid, false otherwise
*/
function setTempDir($dir)
{
if (is_dir($dir)) {
$this->_tmp_dir = $dir;
return true;
}
return false;
}
/**
* Initialization method. Has to be called right after OLE_PPS_File().
*
* @access public
* @return mixed true on success. PEAR_Error on failure
*/
function init()
{
$this->_tmp_filename = tempnam($this->_tmp_dir, "OLE_PPS_File");
$fh = @fopen($this->_tmp_filename, "w+b");
if ($fh == false) {
return $this->raiseError("Can't create temporary file");
}
$this->_PPS_FILE = $fh;
if ($this->_PPS_FILE) {
fseek($this->_PPS_FILE, 0);
}
}
/**
* Append data to PPS
*
* @access public
* @param string $data The data to append
*/
function append($data)
{
if ($this->_PPS_FILE) {
fwrite($this->_PPS_FILE, $data);
}
else {
$this->_data .= $data;
}
}
}
?>
File diff suppressed because it is too large Load Diff
+408
View File
@@ -0,0 +1,408 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Xavier Noguer <xnoguer@php.net> |
// | Based on OLE::Storage_Lite by Kawai, Takanori |
// +----------------------------------------------------------------------+
//
// $Id: OLE.php,v 1.7 2003/08/21 15:15:40 xnoguer Exp $
/**
* Constants for OLE package
*/
define('OLE_PPS_TYPE_ROOT', 5);
define('OLE_PPS_TYPE_DIR', 1);
define('OLE_PPS_TYPE_FILE', 2);
define('OLE_DATA_SIZE_SMALL', 0x1000);
define('OLE_LONG_INT_SIZE', 4);
define('OLE_PPS_SIZE', 0x80);
/**
* OLE package base class.
*
* @author Xavier Noguer <xnoguer@php.net>
* @category Structures
* @package OLE
*/
class OLE extends PEAR
{
/**
* The file handle for reading an OLE container
* @var resource
*/
var $_file_handle;
/**
* Array of PPS's found on the OLE container
* @var array
*/
var $_list;
/**
* Creates a new OLE object
* Remember to use ampersand when creating an OLE object ($my_ole =& new OLE();)
* @access public
*/
function OLE()
{
$this->_list = array();
}
/**
* Reads an OLE container from the contents of the file given.
*
* @acces public
* @param string $file
* @return mixed true on success, PEAR_Error on failure
*/
function read($file)
{
/* consider storing offsets as constants */
$big_block_size_offset = 30;
$iBdbCnt_offset = 44;
$bd_start_offset = 68;
$fh = @fopen($file, "r");
if ($fh == false) {
return $this->raiseError("Can't open file $file");
}
$this->_file_handle = $fh;
/* begin reading OLE attributes */
fseek($fh, 0);
$signature = fread($fh, 8);
if ("\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1" != $signature) {
return $this->raiseError("File doesn't seem to be an OLE container.");
}
fseek($fh, $big_block_size_offset);
$packed_array = unpack("v", fread($fh, 2));
$big_block_size = pow(2, $packed_array['']);
$packed_array = unpack("v", fread($fh, 2));
$small_block_size = pow(2, $packed_array['']);
$i1stBdL = ($big_block_size - 0x4C) / OLE_LONG_INT_SIZE;
fseek($fh, $iBdbCnt_offset);
$packed_array = unpack("V", fread($fh, 4));
$iBdbCnt = $packed_array[''];
$packed_array = unpack("V", fread($fh, 4));
$pps_wk_start = $packed_array[''];
fseek($fh, $bd_start_offset);
$packed_array = unpack("V", fread($fh, 4));
$bd_start = $packed_array[''];
$packed_array = unpack("V", fread($fh, 4));
$bd_count = $packed_array[''];
$packed_array = unpack("V", fread($fh, 4));
$iAll = $packed_array['']; // this may be wrong
/* create OLE_PPS objects from */
$ret = $this->_readPpsWks($pps_wk_start, $big_block_size);
if (PEAR::isError($ret)) {
return $ret;
}
return true;
}
/**
* Destructor (using PEAR)
* Just closes the file handle on the OLE file.
*
* @access private
*/
function _OLE()
{
fclose($this->_file_handle);
}
/**
* Gets information about all PPS's on the OLE container from the PPS WK's
* creates an OLE_PPS object for each one.
*
* @access private
* @param integer $pps_wk_start Position inside the OLE file where PPS WK's start
* @param integer $big_block_size Size of big blobks in the OLE file
* @return mixed true on success, PEAR_Error on failure
*/
function _readPpsWks($pps_wk_start, $big_block_size)
{
$pointer = ($pps_wk_start + 1) * $big_block_size;
while (1)
{
fseek($this->_file_handle, $pointer);
$pps_wk = fread($this->_file_handle, OLE_PPS_SIZE);
if (strlen($pps_wk) != OLE_PPS_SIZE) {
break; // Excel likes to add a trailing byte sometimes
//return $this->raiseError("PPS at $pointer seems too short: ".strlen($pps_wk));
}
$name_length = unpack("c", substr($pps_wk, 64, 2)); // FIXME (2 bytes??)
$name_length = $name_length[''] - 2;
$name = substr($pps_wk, 0, $name_length);
$type = unpack("c", substr($pps_wk, 66, 1));
if (($type[''] != OLE_PPS_TYPE_ROOT) and
($type[''] != OLE_PPS_TYPE_DIR) and
($type[''] != OLE_PPS_TYPE_FILE))
{
return $this->raiseError("PPS at $pointer has unknown type: {$type['']}");
}
$prev = unpack("V", substr($pps_wk, 68, 4));
$next = unpack("V", substr($pps_wk, 72, 4));
$dir = unpack("V", substr($pps_wk, 76, 4));
// there is no magic number, it can take different values.
//$magic = unpack("V", strrev(substr($pps_wk, 92, 4)));
$time_1st = substr($pps_wk, 100, 8);
$time_2nd = substr($pps_wk, 108, 8);
$start_block = unpack("V", substr($pps_wk, 116, 4));
$size = unpack("V", substr($pps_wk, 120, 4));
// _data member will point to position in file!!
// OLE_PPS object is created with an empty children array!!
$this->_list[] = new OLE_PPS(null, '', $type[''], $prev[''], $next[''],
$dir[''], OLE::OLE2LocalDate($time_1st),
OLE::OLE2LocalDate($time_2nd),
($start_block[''] + 1) * $big_block_size, array());
// give it a size
$this->_list[count($this->_list) - 1]->Size = $size[''];
// check if the PPS tree (starting from root) is complete
if ($this->_ppsTreeComplete(0)) {
break;
}
$pointer += OLE_PPS_SIZE;
}
}
/**
* It checks whether the PPS tree is complete (all PPS's read)
* starting with the given PPS (not necessarily root)
*
* @access private
* @param integer $index The index of the PPS from which we are checking
* @return boolean Whether the PPS tree for the given PPS is complete
*/
function _ppsTreeComplete($index)
{
if ($this->_list[$index]->NextPps != -1) {
if (!isset($this->_list[$this->_list[$index]->NextPps])) {
return false;
}
else {
return $this->_ppsTreeComplete($this->_list[$index]->NextPps);
}
}
if ($this->_list[$index]->DirPps != -1) {
if (!isset($this->_list[$this->_list[$index]->DirPps])) {
return false;
}
else {
return $this->_ppsTreeComplete($this->_list[$index]->DirPps);
}
}
return true;
}
/**
* Checks whether a PPS is a File PPS or not.
* If there is no PPS for the index given, it will return false.
*
* @access public
* @param integer $index The index for the PPS
* @return bool true if it's a File PPS, false otherwise
*/
function isFile($index)
{
if (isset($this->_list[$index])) {
return ($this->_list[$index]->Type == OLE_PPS_TYPE_FILE);
}
return false;
}
/**
* Checks whether a PPS is a Root PPS or not.
* If there is no PPS for the index given, it will return false.
*
* @access public
* @param integer $index The index for the PPS.
* @return bool true if it's a Root PPS, false otherwise
*/
function isRoot($index)
{
if (isset($this->_list[$index])) {
return ($this->_list[$index]->Type == OLE_PPS_TYPE_ROOT);
}
return false;
}
/**
* Gives the total number of PPS's found in the OLE container.
*
* @access public
* @return integer The total number of PPS's found in the OLE container
*/
function ppsTotal()
{
return count($this->_list);
}
/**
* Gets data from a PPS
* If there is no PPS for the index given, it will return an empty string.
*
* @access public
* @param integer $index The index for the PPS
* @param integer $position The position from which to start reading
* (relative to the PPS)
* @param integer $length The amount of bytes to read (at most)
* @return string The binary string containing the data requested
*/
function getData($index, $position, $length)
{
// if position is not valid return empty string
if (!isset($this->_list[$index]) or ($position >= $this->_list[$index]->Size) or ($position < 0)) {
return '';
}
// Beware!!! _data member is actually a position
fseek($this->_file_handle, $this->_list[$index]->_data + $position);
return fread($this->_file_handle, $length);
}
/**
* Gets the data length from a PPS
* If there is no PPS for the index given, it will return 0.
*
* @access public
* @param integer $index The index for the PPS
* @return integer The amount of bytes in data the PPS has
*/
function getDataLength($index)
{
if (isset($this->_list[$index])) {
return $this->_list[$index]->Size;
}
return 0;
}
/**
* Utility function to transform ASCII text to Unicode
*
* @access public
* @static
* @param string $ascii The ASCII string to transform
* @return string The string in Unicode
*/
function Asc2Ucs($ascii)
{
$rawname = '';
for ($i = 0; $i < strlen($ascii); $i++) {
$rawname .= $ascii{$i}."\x00";
}
return $rawname;
}
/**
* Utility function
* Returns a string for the OLE container with the date given
*
* @access public
* @static
* @param integer $date A timestamp
* @return string The string for the OLE container
*/
function LocalDate2OLE($date = null)
{
if (!isset($date)) {
return "\x00\x00\x00\x00\x00\x00\x00\x00";
}
// factor used for separating numbers into 4 bytes parts
$factor = pow(2,32);
// days from 1-1-1601 until the beggining of UNIX era
$days = 134774;
// calculate seconds
$big_date = $days*24*3600 + gmmktime(date("H",$date),date("i",$date),date("s",$date),
date("m",$date),date("d",$date),date("Y",$date));
// multiply just to make MS happy
$big_date *= 10000000;
$high_part = floor($big_date/$factor);
// lower 4 bytes
$low_part = floor((($big_date/$factor) - $high_part)*$factor);
// Make HEX string
$res = '';
for ($i=0; $i<4; $i++)
{
$hex = $low_part % 0x100;
$res .= pack('c', $hex);
$low_part /= 0x100;
}
for ($i=0; $i<4; $i++)
{
$hex = $high_part % 0x100;
$res .= pack('c', $hex);
$high_part /= 0x100;
}
return $res;
}
/**
* Returns a timestamp from an OLE container's date
*
* @access public
* @static
* @param integer $string A binary string with the encoded date
* @return string The timestamp corresponding to the string
*/
function OLE2LocalDate($string)
{
if (strlen($string) != 8) {
return new PEAR_Error("Expecting 8 byte string");
}
// factor used for separating numbers into 4 bytes parts
$factor = pow(2,32);
$high_part = 0;
for ($i=0; $i<4; $i++)
{
$al = unpack('C', $string{(7 - $i)});
$high_part += $al[''];
if ($i < 3) {
$high_part *= 0x100;
}
}
$low_part = 0;
for ($i=4; $i<8; $i++)
{
$al = unpack('C', $string{(7 - $i)});
$low_part += $al[''];
if ($i < 7) {
$low_part *= 0x100;
}
}
$big_date = ($high_part*$factor) + $low_part;
// translate to seconds
$big_date /= 10000000;
// days from 1-1-1601 until the beggining of UNIX era
$days = 134774;
// translate to seconds from beggining of UNIX era
$big_date -= $days*24*3600;
return floor($big_date);
}
}
?>
File diff suppressed because it is too large Load Diff
+217
View File
@@ -0,0 +1,217 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Xavier Noguer <xnoguer@php.net> |
// | Based on OLE::Storage_Lite by Kawai, Takanori |
// +----------------------------------------------------------------------+
//
// $Id: PPS.php,v 1.5 2003/12/14 18:12:28 xnoguer Exp $
/**
* Class for creating PPS's for OLE containers
*
* @author Xavier Noguer <xnoguer@php.net>
* @category Structures
* @package OLE
*/
class OLE_PPS extends PEAR
{
/**
* The PPS index
* @var integer
*/
var $No;
/**
* The PPS name (in Unicode)
* @var string
*/
var $Name;
/**
* The PPS type. Dir, Root or File
* @var integer
*/
var $Type;
/**
* The index of the previous PPS
* @var integer
*/
var $PrevPps;
/**
* The index of the next PPS
* @var integer
*/
var $NextPps;
/**
* The index of it's first child if this is a Dir or Root PPS
* @var integer
*/
var $DirPps;
/**
* A timestamp
* @var integer
*/
var $Time1st;
/**
* A timestamp
* @var integer
*/
var $Time2nd;
/**
* Starting block (small or big) for this PPS's data inside the container
* @var integer
*/
var $_StartBlock;
/**
* The size of the PPS's data (in bytes)
* @var integer
*/
var $Size;
/**
* The PPS's data (only used if it's not using a temporary file)
* @var string
*/
var $_data;
/**
* Array of child PPS's (only used by Root and Dir PPS's)
* @var array
*/
var $children = array();
/**
* The constructor
*
* @access public
* @param integer $No The PPS index
* @param string $name The PPS name (in Unicode)
* @param integer $type The PPS type. Dir, Root or File
* @param integer $prev The index of the previous PPS
* @param integer $next The index of the next PPS
* @param integer $dir The index of it's first child if this is a Dir or Root PPS
* @param integer $time_1st A timestamp
* @param integer $time_2nd A timestamp
* @param array $children Array containing children PPS for this PPS
*/
function OLE_PPS($No, $name, $type, $prev, $next, $dir, $time_1st, $time_2nd, $data, $children)
{
$this->No = $No;
$this->Name = $name;
$this->Type = $type;
$this->PrevPps = $prev;
$this->NextPps = $next;
$this->DirPps = $dir;
$this->Time1st = $time_1st;
$this->Time2nd = $time_2nd;
$this->_data = $data;
$this->children = $children;
if ($data != '') {
$this->Size = strlen($data);
}
else {
$this->Size = 0;
}
}
/**
* Returns the amount of data saved for this PPS
*
* @access private
* @return integer The amount of data (in bytes)
*/
function _DataLen()
{
if (!isset($this->_data)) {
return 0;
}
if (isset($this->_PPS_FILE))
{
fseek($this->_PPS_FILE, 0);
$stats = fstat($this->_PPS_FILE);
return $stats[7];
}
else {
return strlen($this->_data);
}
}
/**
* Returns a string with the PPS's WK (What is a WK?)
*
* @access private
* @return string The binary string
*/
function _getPpsWk()
{
$ret = $this->Name;
for ($i = 0; $i < (64 - strlen($this->Name)); $i++) {
$ret .= "\x00";
}
$ret .= pack("v", strlen($this->Name) + 2) // 66
. pack("c", $this->Type) // 67
. pack("c", 0x00) //UK // 68
. pack("V", $this->PrevPps) //Prev // 72
. pack("V", $this->NextPps) //Next // 76
. pack("V", $this->DirPps) //Dir // 80
. "\x00\x09\x02\x00" // 84
. "\x00\x00\x00\x00" // 88
. "\xc0\x00\x00\x00" // 92
. "\x00\x00\x00\x46" // 96 // Seems to be ok only for Root
. "\x00\x00\x00\x00" // 100
. OLE::LocalDate2OLE($this->Time1st) // 108
. OLE::LocalDate2OLE($this->Time2nd) // 116
. pack("V", isset($this->_StartBlock)?
$this->_StartBlock:0) // 120
. pack("V", $this->Size) // 124
. pack("V", 0); // 128
return $ret;
}
/**
* Updates index and pointers to previous, next and children PPS's for this
* PPS. I don't think it'll work with Dir PPS's.
*
* @access private
* @param array &$pps_array Reference to the array of PPS's for the whole OLE
* container
* @return integer The index for this PPS
*/
function _savePpsSetPnt(&$pps_array)
{
$pps_array[count($pps_array)] = &$this;
$this->No = count($pps_array) - 1;
$this->PrevPps = 0xFFFFFFFF;
$this->NextPps = 0xFFFFFFFF;
if (count($this->children) > 0) {
$this->DirPps = $this->children[0]->_savePpsSetPnt($pps_array);
}
else {
$this->DirPps = 0xFFFFFFFF;
}
return $this->No;
}
}
?>
File diff suppressed because it is too large Load Diff
+518
View File
@@ -0,0 +1,518 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Xavier Noguer <xnoguer@php.net> |
// | Based on OLE::Storage_Lite by Kawai, Takanori |
// +----------------------------------------------------------------------+
//
// $Id: Root.php,v 1.7 2003/12/12 21:10:10 xnoguer Exp $
/**
* Class for creating Root PPS's for OLE containers
*
* @author Xavier Noguer <xnoguer@php.net>
* @category Structures
* @package OLE
*/
class OLE_PPS_Root extends OLE_PPS
{
/**
* The temporary dir for storing the OLE file
* @var string
*/
var $_tmp_dir;
/**
* Constructor
*
* @access public
* @param integer $time_1st A timestamp
* @param integer $time_2nd A timestamp
*/
function OLE_PPS_Root($time_1st, $time_2nd, $raChild)
{
$this->_tmp_dir = '';
$this->OLE_PPS(
null,
OLE::Asc2Ucs('Root Entry'),
OLE_PPS_TYPE_ROOT,
null,
null,
null,
$time_1st,
$time_2nd,
null,
$raChild);
}
/**
* Sets the temp dir used for storing the OLE file
*
* @access public
* @param string $dir The dir to be used as temp dir
* @return true if given dir is valid, false otherwise
*/
function setTempDir($dir)
{
if (is_dir($dir)) {
$this->_tmp_dir = $dir;
return true;
}
return false;
}
/**
* Method for saving the whole OLE container (including files).
* In fact, if called with an empty argument (or '-'), it saves to a
* temporary file and then outputs it's contents to stdout.
*
* @param string $filename The name of the file where to save the OLE container
* @access public
* @return mixed true on success, PEAR_Error on failure
*/
function save($filename)
{
// Initial Setting for saving
$this->_BIG_BLOCK_SIZE = pow(2,
((isset($this->_BIG_BLOCK_SIZE))? $this->_adjust2($this->_BIG_BLOCK_SIZE) : 9));
$this->_SMALL_BLOCK_SIZE= pow(2,
((isset($this->_SMALL_BLOCK_SIZE))? $this->_adjust2($this->_SMALL_BLOCK_SIZE): 6));
// Open temp file if we are sending output to stdout
if (($filename == '-') or ($filename == ''))
{
$this->_tmp_filename = tempnam($this->_tmp_dir, "OLE_PPS_Root");
$this->_FILEH_ = @fopen($this->_tmp_filename,"w+b");
if ($this->_FILEH_ == false) {
return $this->raiseError("Can't create temporary file.");
}
}
else
{
$this->_FILEH_ = @fopen($filename, "wb");
if ($this->_FILEH_ == false) {
return $this->raiseError("Can't open $filename. It may be in use or protected.");
}
}
// Make an array of PPS's (for Save)
$aList = array();
$this->_savePpsSetPnt($aList);
// calculate values for header
list($iSBDcnt, $iBBcnt, $iPPScnt) = $this->_calcSize($aList); //, $rhInfo);
// Save Header
$this->_saveHeader($iSBDcnt, $iBBcnt, $iPPScnt);
// Make Small Data string (write SBD)
$this->_data = $this->_makeSmallData($aList);
// Write BB
$this->_saveBigData($iSBDcnt, $aList);
// Write PPS
$this->_savePps($aList);
// Write Big Block Depot and BDList and Adding Header informations
$this->_saveBbd($iSBDcnt, $iBBcnt, $iPPScnt);
// Close File, send it to stdout if necessary
if(($filename == '-') or ($filename == ''))
{
fseek($this->_FILEH_, 0);
fpassthru($this->_FILEH_);
@fclose($this->_FILEH_);
// Delete the temporary file.
@unlink($this->_tmp_filename);
}
else {
@fclose($this->_FILEH_);
}
return true;
}
/**
* Calculate some numbers
*
* @access private
* @param array $raList Reference to an array of PPS's
* @return array The array of numbers
*/
function _calcSize(&$raList)
{
// Calculate Basic Setting
list($iSBDcnt, $iBBcnt, $iPPScnt) = array(0,0,0);
$iSmallLen = 0;
$iSBcnt = 0;
for ($i = 0; $i < count($raList); $i++) {
if($raList[$i]->Type == OLE_PPS_TYPE_FILE) {
$raList[$i]->Size = $raList[$i]->_DataLen();
if($raList[$i]->Size < OLE_DATA_SIZE_SMALL) {
$iSBcnt += floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE)
+ (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0);
}
else {
$iBBcnt += (floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) +
(($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0));
}
}
}
$iSmallLen = $iSBcnt * $this->_SMALL_BLOCK_SIZE;
$iSlCnt = floor($this->_BIG_BLOCK_SIZE / OLE_LONG_INT_SIZE);
$iSBDcnt = floor($iSBcnt / $iSlCnt) + (($iSBcnt % $iSlCnt)? 1:0);
$iBBcnt += (floor($iSmallLen / $this->_BIG_BLOCK_SIZE) +
(( $iSmallLen % $this->_BIG_BLOCK_SIZE)? 1: 0));
$iCnt = count($raList);
$iBdCnt = $this->_BIG_BLOCK_SIZE / OLE_PPS_SIZE;
$iPPScnt = (floor($iCnt/$iBdCnt) + (($iCnt % $iBdCnt)? 1: 0));
return array($iSBDcnt, $iBBcnt, $iPPScnt);
}
/**
* Helper function for caculating a magic value for block sizes
*
* @access private
* @param integer $i2 The argument
* @see save()
* @return integer
*/
function _adjust2($i2)
{
$iWk = log($i2)/log(2);
return ($iWk > floor($iWk))? floor($iWk)+1:$iWk;
}
/**
* Save OLE header
*
* @access private
* @param integer $iSBDcnt
* @param integer $iBBcnt
* @param integer $iPPScnt
*/
function _saveHeader($iSBDcnt, $iBBcnt, $iPPScnt)
{
$FILE = $this->_FILEH_;
// Calculate Basic Setting
$iBlCnt = $this->_BIG_BLOCK_SIZE / OLE_LONG_INT_SIZE;
$i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / OLE_LONG_INT_SIZE;
$iBdExL = 0;
$iAll = $iBBcnt + $iPPScnt + $iSBDcnt;
$iAllW = $iAll;
$iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0);
$iBdCnt = floor(($iAll + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0);
// Calculate BD count
if ($iBdCnt >$i1stBdL)
{
while (1)
{
$iBdExL++;
$iAllW++;
$iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0);
$iBdCnt = floor(($iAllW + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0);
if ($iBdCnt <= ($iBdExL*$iBlCnt+ $i1stBdL)) {
break;
}
}
}
// Save Header
fwrite($FILE,
"\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1"
. "\x00\x00\x00\x00"
. "\x00\x00\x00\x00"
. "\x00\x00\x00\x00"
. "\x00\x00\x00\x00"
. pack("v", 0x3b)
. pack("v", 0x03)
. pack("v", -2)
. pack("v", 9)
. pack("v", 6)
. pack("v", 0)
. "\x00\x00\x00\x00"
. "\x00\x00\x00\x00"
. pack("V", $iBdCnt)
. pack("V", $iBBcnt+$iSBDcnt) //ROOT START
. pack("V", 0)
. pack("V", 0x1000)
. pack("V", 0) //Small Block Depot
. pack("V", 1)
);
// Extra BDList Start, Count
if ($iBdCnt < $i1stBdL)
{
fwrite($FILE,
pack("V", -2). // Extra BDList Start
pack("V", 0) // Extra BDList Count
);
}
else
{
fwrite($FILE, pack("V", $iAll+$iBdCnt) . pack("V", $iBdExL));
}
// BDList
for ($i=0; $i<$i1stBdL and $i < $iBdCnt; $i++) {
fwrite($FILE, pack("V", $iAll+$i));
}
if ($i < $i1stBdL)
{
for ($j = 0; $j < ($i1stBdL-$i); $j++) {
fwrite($FILE, (pack("V", -1)));
}
}
}
/**
* Saving big data (PPS's with data bigger than OLE_DATA_SIZE_SMALL)
*
* @access private
* @param integer $iStBlk
* @param array &$raList Reference to array of PPS's
*/
function _saveBigData($iStBlk, &$raList)
{
$FILE = $this->_FILEH_;
// cycle through PPS's
for ($i = 0; $i < count($raList); $i++)
{
if($raList[$i]->Type != OLE_PPS_TYPE_DIR)
{
$raList[$i]->Size = $raList[$i]->_DataLen();
if(($raList[$i]->Size >= OLE_DATA_SIZE_SMALL) or
(($raList[$i]->Type == OLE_PPS_TYPE_ROOT) and isset($raList[$i]->_data)))
{
// Write Data
if(isset($raList[$i]->_PPS_FILE))
{
$iLen = 0;
fseek($raList[$i]->_PPS_FILE, 0); // To The Top
while($sBuff = fread($raList[$i]->_PPS_FILE, 4096))
{
$iLen += strlen($sBuff);
fwrite($FILE, $sBuff);
}
}
else {
fwrite($FILE, $raList[$i]->_data);
}
if ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)
{
for ($j = 0; $j < ($this->_BIG_BLOCK_SIZE - ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)); $j++) {
fwrite($FILE, "\x00");
}
}
// Set For PPS
$raList[$i]->_StartBlock = $iStBlk;
$iStBlk +=
(floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) +
(($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0));
}
// Close file for each PPS, and unlink it
if (isset($raList[$i]->_PPS_FILE))
{
@fclose($raList[$i]->_PPS_FILE);
$raList[$i]->_PPS_FILE = null;
@unlink($raList[$i]->_tmp_filename);
}
}
}
}
/**
* get small data (PPS's with data smaller than OLE_DATA_SIZE_SMALL)
*
* @access private
* @param array &$raList Reference to array of PPS's
*/
function _makeSmallData(&$raList)
{
$sRes = '';
$FILE = $this->_FILEH_;
$iSmBlk = 0;
for ($i = 0; $i < count($raList); $i++)
{
// Make SBD, small data string
if ($raList[$i]->Type == OLE_PPS_TYPE_FILE)
{
if ($raList[$i]->Size <= 0) {
continue;
}
if ($raList[$i]->Size < OLE_DATA_SIZE_SMALL)
{
$iSmbCnt = floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE)
+ (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0);
// Add to SBD
for ($j = 0; $j < ($iSmbCnt-1); $j++) {
fwrite($FILE, pack("V", $j+$iSmBlk+1));
}
fwrite($FILE, pack("V", -2));
// Add to Data String(this will be written for RootEntry)
if ($raList[$i]->_PPS_FILE)
{
fseek($raList[$i]->_PPS_FILE, 0); // To The Top
while ($sBuff = fread($raList[$i]->_PPS_FILE, 4096)) {
$sRes .= $sBuff;
}
}
else {
$sRes .= $raList[$i]->_data;
}
if($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)
{
for ($j = 0; $j < ($this->_SMALL_BLOCK_SIZE - ($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)); $j++) {
$sRes .= "\x00";
}
}
// Set for PPS
$raList[$i]->_StartBlock = $iSmBlk;
$iSmBlk += $iSmbCnt;
}
}
}
$iSbCnt = floor($this->_BIG_BLOCK_SIZE / OLE_LONG_INT_SIZE);
if($iSmBlk % $iSbCnt)
{
for ($i = 0; $i < ($iSbCnt - ($iSmBlk % $iSbCnt)); $i++) {
fwrite($FILE, pack("V", -1));
}
}
return $sRes;
}
/**
* Saves all the PPS's WKs
*
* @access private
* @param array $raList Reference to an array with all PPS's
*/
function _savePps(&$raList)
{
// Save each PPS WK
for ($i = 0; $i < count($raList); $i++) {
fwrite($this->_FILEH_, $raList[$i]->_getPpsWk());
}
// Adjust for Block
$iCnt = count($raList);
$iBCnt = $this->_BIG_BLOCK_SIZE / OLE_PPS_SIZE;
if ($iCnt % $iBCnt)
{
for ($i = 0; $i < (($iBCnt - ($iCnt % $iBCnt)) * OLE_PPS_SIZE); $i++) {
fwrite($this->_FILEH_, "\x00");
}
}
}
/**
* Saving Big Block Depot
*
* @access private
* @param integer $iSbdSize
* @param integer $iBsize
* @param integer $iPpsCnt
*/
function _saveBbd($iSbdSize, $iBsize, $iPpsCnt)
{
$FILE = $this->_FILEH_;
// Calculate Basic Setting
$iBbCnt = $this->_BIG_BLOCK_SIZE / OLE_LONG_INT_SIZE;
$i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / OLE_LONG_INT_SIZE;
$iBdExL = 0;
$iAll = $iBsize + $iPpsCnt + $iSbdSize;
$iAllW = $iAll;
$iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0);
$iBdCnt = floor(($iAll + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0);
// Calculate BD count
if ($iBdCnt >$i1stBdL)
{
while (1)
{
$iBdExL++;
$iAllW++;
$iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0);
$iBdCnt = floor(($iAllW + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0);
if ($iBdCnt <= ($iBdExL*$iBbCnt+ $i1stBdL)) {
break;
}
}
}
// Making BD
// Set for SBD
if ($iSbdSize > 0)
{
for ($i = 0; $i<($iSbdSize-1); $i++) {
fwrite($FILE, pack("V", $i+1));
}
fwrite($FILE, pack("V", -2));
}
// Set for B
for ($i = 0; $i<($iBsize-1); $i++) {
fwrite($FILE, pack("V", $i+$iSbdSize+1));
}
fwrite($FILE, pack("V", -2));
// Set for PPS
for ($i = 0; $i<($iPpsCnt-1); $i++) {
fwrite($FILE, pack("V", $i+$iSbdSize+$iBsize+1));
}
fwrite($FILE, pack("V", -2));
// Set for BBD itself ( 0xFFFFFFFD : BBD)
for ($i=0; $i<$iBdCnt;$i++) {
fwrite($FILE, pack("V", 0xFFFFFFFD));
}
// Set for ExtraBDList
for ($i=0; $i<$iBdExL;$i++) {
fwrite($FILE, pack("V", 0xFFFFFFFC));
}
// Adjust for Block
if (($iAllW + $iBdCnt) % $iBbCnt)
{
for ($i = 0; $i < ($iBbCnt - (($iAllW + $iBdCnt) % $iBbCnt)); $i++) {
fwrite($FILE, pack("V", -1));
}
}
// Extra BDList
if ($iBdCnt > $i1stBdL)
{
$iN=0;
$iNb=0;
for ($i=$i1stBdL;$i<$iBdCnt; $i++, $iN++)
{
if ($iN>=($iBbCnt-1))
{
$iN = 0;
$iNb++;
fwrite($FILE, pack("V", $iAll+$iBdCnt+$iNb));
}
fwrite($FILE, pack("V", $iBsize+$iSbdSize+$iPpsCnt+$i));
}
if (($iBdCnt-$i1stBdL) % ($iBbCnt-1))
{
for ($i = 0; $i < (($iBbCnt-1) - (($iBdCnt-$i1stBdL) % ($iBbCnt-1))); $i++) {
fwrite($FILE, pack("V", -1));
}
}
fwrite($FILE, pack("V", -2));
}
}
}
?>
+229
View File
@@ -0,0 +1,229 @@
<?php
/*
* Module written by Herman Kuiper <herman@ozuzo.net>
*
* License Information:
*
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Possible operator types
/*
FIXME: change prefixes
*/
define("OP_BETWEEN", 0x00);
define("OP_NOTBETWEEN", 0x01);
define("OP_EQUAL", 0x02);
define("OP_NOTEQUAL", 0x03);
define("OP_GT", 0x04);
define("OP_LT", 0x05);
define("OP_GTE", 0x06);
define("OP_LTE", 0x07);
/**
* Baseclass for generating Excel DV records (validations)
*
* @author Herman Kuiper
* @category FileFormats
* @package Spreadsheet_Excel_Writer
*/
class Spreadsheet_Excel_Writer_Validator
{
var $_type;
var $_style;
var $_fixedList;
var $_blank;
var $_incell;
var $_showprompt;
var $_showerror;
var $_title_prompt;
var $_descr_prompt;
var $_title_error;
var $_descr_error;
var $_operator;
var $_formula1;
var $_formula2;
/**
* The parser from the workbook. Used to parse validation formulas also
* @var Spreadsheet_Excel_Writer_Parser
*/
var $_parser;
function Spreadsheet_Excel_Writer_Validator(&$parser)
{
$this->_parser = $parser;
$this->_type = 0x01; // FIXME: add method for setting datatype
$this->_style = 0x00;
$this->_fixedList = false;
$this->_blank = false;
$this->_incell = false;
$this->_showprompt = false;
$this->_showerror = true;
$this->_title_prompt = "\x00";
$this->_descr_prompt = "\x00";
$this->_title_error = "\x00";
$this->_descr_error = "\x00";
$this->_operator = 0x00; // default is equal
$this->_formula1 = '';
$this->_formula2 = '';
}
function setPrompt($promptTitle = "\x00", $promptDescription = "\x00", $showPrompt = true)
{
$this->_showprompt = $showPrompt;
$this->_title_prompt = $promptTitle;
$this->_descr_prompt = $promptDescription;
}
function setError($errorTitle = "\x00", $errorDescription = "\x00", $showError = true)
{
$this->_showerror = $showError;
$this->_title_error = $errorTitle;
$this->_descr_error = $errorDescription;
}
function allowBlank()
{
$this->_blank = true;
}
function onInvalidStop()
{
$this->_style = 0x00;
}
function onInvalidWarn()
{
$this->_style = 0x01;
}
function onInvalidInfo()
{
$this->_style = 0x02;
}
function setFormula1($formula)
{
// Parse the formula using the parser in Parser.php
$error = $this->_parser->parse($formula);
if (PEAR::isError($error)) {
return $this->_formula1;
}
$this->_formula1 = $this->_parser->toReversePolish();
if (PEAR::isError($this->_formula1)) {
return $this->_formula1;
}
return true;
}
function setFormula2($formula)
{
// Parse the formula using the parser in Parser.php
$error = $this->_parser->parse($formula);
if (PEAR::isError($error)) {
return $this->_formula2;
}
$this->_formula2 = $this->_parser->toReversePolish();
if (PEAR::isError($this->_formula2)) {
return $this->_formula2;
}
return true;
}
function _getOptions()
{
$options = $this->_type;
$options |= $this->_style << 3;
if ($this->_fixedList) {
$options |= 0x80;
}
if ($this->_blank) {
$options |= 0x100;
}
if (!$this->_incell) {
$options |= 0x200;
}
if ($this->_showprompt) {
$options |= 0x40000;
}
if ($this->_showerror) {
$options |= 0x80000;
}
$options |= $this->_operator << 20;
return $options;
}
function _getData()
{
$title_prompt_len = strlen($this->_title_prompt);
$descr_prompt_len = strlen($this->_descr_prompt);
$title_error_len = strlen($this->_title_error);
$descr_error_len = strlen($this->_descr_error);
$formula1_size = strlen($this->_formula1);
$formula2_size = strlen($this->_formula2);
$data = pack("V", $this->_getOptions());
$data .= pack("vC", $title_prompt_len, 0x00) . $this->_title_prompt;
$data .= pack("vC", $title_error_len, 0x00) . $this->_title_error;
$data .= pack("vC", $descr_prompt_len, 0x00) . $this->_descr_prompt;
$data .= pack("vC", $descr_error_len, 0x00) . $this->_descr_error;
$data .= pack("vv", $formula1_size, 0x0000) . $this->_formula1;
$data .= pack("vv", $formula2_size, 0x0000) . $this->_formula2;
return $data;
}
}
/*class Spreadsheet_Excel_Writer_Validation_List extends Spreadsheet_Excel_Writer_Validation
{
function Spreadsheet_Excel_Writer_Validation_list()
{
parent::Spreadsheet_Excel_Writer_Validation();
$this->_type = 0x03;
}
function setList($source, $incell = true)
{
$this->_incell = $incell;
$this->_fixedList = true;
$source = implode("\x00", $source);
$this->_formula1 = pack("CCC", 0x17, strlen($source), 0x0c) . $source;
}
function setRow($row, $col1, $col2, $incell = true)
{
$this->_incell = $incell;
//$this->_formula1 = ...;
}
function setCol($col, $row1, $row2, $incell = true)
{
$this->_incell = $incell;
//$this->_formula1 = ...;
}
}*/
?>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+103
View File
@@ -0,0 +1,103 @@
<?php
/*
* Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
*
* PERL Spreadsheet::WriteExcel module.
*
* The author of the Spreadsheet::WriteExcel module is John McNamara
* <jmcnamara@cpan.org>
*
* I _DO_ maintain this code, and John McNamara has nothing to do with the
* porting of this code to PHP. Any questions directly related to this
* class library should be directed to me.
*
* License Information:
*
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* Class for writing Excel Spreadsheets. This class should change COMPLETELY.
*
* @author Xavier Noguer <xnoguer@rezebra.com>
* @category FileFormats
* @package Spreadsheet_Excel_Writer
*/
class Spreadsheet_Excel_Writer extends Spreadsheet_Excel_Writer_Workbook
{
/**
* The constructor. It just creates a Workbook
*
* @param string $filename The optional filename for the Workbook.
* @return Spreadsheet_Excel_Writer_Workbook The Workbook created
*/
function Spreadsheet_Excel_Writer($filename = '')
{
$this->_filename = $filename;
$this->Spreadsheet_Excel_Writer_Workbook($filename);
}
/**
* Send HTTP headers for the Excel file.
*
* @param string $filename The filename to use for HTTP headers
* @access public
*/
function send($filename)
{
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
}
/**
* Utility function for writing formulas
* Converts a cell's coordinates to the A1 format.
*
* @access public
* @static
* @param integer $row Row for the cell to convert (0-indexed).
* @param integer $col Column for the cell to convert (0-indexed).
* @return string The cell identifier in A1 format
*/
function rowcolToCell($row, $col)
{
if ($col > 255) { //maximum column value exceeded
return new PEAR_Error("Maximum column value exceeded: $col");
}
$int = (int)($col / 26);
$frac = $col % 26;
$chr1 = '';
if ($int > 0) {
$chr1 = chr(ord('A') + $int - 1);
}
$chr2 = chr(ord('A') + $frac);
$row++;
return $chr1 . $chr2 . $row;
}
}
?>
+321
View File
@@ -0,0 +1,321 @@
<?php
/**
* Klasse fuer Berechtigungen der User
* @author Christian Paminger
* @version 1.0
* @updated 11-Feb-2004
*/
class berechtigung
{
/**
* interne userberechtigung_id (Zaehler aus DB)
* @var integer
*/
var $userberechtigung_id;
/**
* @var integer
*/
var $studiengang_kz;
/**
* @var integer
*/
var $fachbereich_id;
/**
* @var string
*/
var $berechtigung_kurzbz;
/**
* @var string
*/
var $uid;
/**
* @var string
*/
var $studiensemester_kurzbz;
/**
* @var integer
*/
var $start;
/**
* @var integer
*/
var $ende;
/**
* @var integer
*/
var $starttimestamp;
/**
* @var integer
*/
var $endetimestamp;
/**
* @var string
*/
var $art;
/**
* @var array
*/
var $berechtigungen=array();
/**
* @var string
*/
var $conn;
/**
* @var boolean
*/
var $new;
function berechtigung($conn)
{
$this->conn=$conn;
$this->new=true;
}
/**
* Ladet die Attribute der Berechtigung aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function load($id)
{
// Berechtigung holen
$sql_query="SELECT * FROM tbl_userberechtigung WHERE userberechtigung_id=$id";
//echo $sql_query;
if(!($erg=pg_exec($this->conn, $sql_query)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1)
{
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->userberechtigung_id=$row->userberechtigung_id;
$this->studiengang_kz=$row->studiengang_kz;
$this->fachbereich_id=$row->fachbereich_id;
$this->berechtigung_kurzbz=$row->berechtigung_kurzbz;
$this->uid=$row->uid;
$this->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$this->start=$row->start;
$this->ende=$row->ende;
$this->art=$row->art;
$this->new=false;
return true;
}
/**
* @return boolean true=ok, false=fehler
*/
function save()
{
// Connection holen
if (is_null($conn=$this->getConnection()))
{
return false;
}
// Daten zur Person speichern
if (!person::save()) {
$this->errormsg.="Daten zur LVA konnten nicht gespeichert werden.";
return false;
}
if ($this->new) {
$qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
"lektor,lehrfach_nr,studiengang_kz,fachbereich_id,semester,verband,".
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,anmerkung)".
"values(".
"'".$this->lvnr."',".
"'".$this->unr."',".
"'".$this->einheit_kurzbz."',".
"'".$this->lektor."',".
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
(strlen($this->semester)>0?$this->semester:NULL).",".
"'".$this->verband."',".
"'".$this->gruppe."',".
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",".
")";
} else
{
$qry="UPDATE tbl_lehrveranstaltung ".
"SET lvnr='".$this->lvnr."',".
"unr='".$this->unr."',".
"einheit_kurzbz='".$this->einheit_kurzbz."',".
"lektor='".$this->lehrfach_nr."',".
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
"semester=".(strlen($this->semester)>0?$this->semester:NULL).",".
"verband='".$this->verband."',".
"gruppe='".$this->gruppe."',".
"raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
"start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).
" WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
}
//echo "<br>".$qry;
if(!@pg_query($conn, $qry))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
return true;
}
/**
* Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die
* Fehlermeldung liegt in errormsg.
* Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft.
* @param string $uid UserID
* @return variabel Array mit LVA; <b>false</b> bei Fehler
*/
function getBerechtigungen($uid)
{
// Berechtigungen holen
$sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (start<now() OR start IS NULL) AND (ende>now() OR ende IS NULL)";
//echo $sql_query;
if(!$erg=@pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
//$num_rows=pg_numrows($erg);
while($row=pg_fetch_object($erg))
{
$b=new berechtigung($this->conn);
$b->userberechtigung_id=$row->userberechtigung_id;
$b->studiengang_kz=$row->studiengang_kz;
$b->fachbereich_id=$row->fachbereich_id;
$b->berechtigung_kurzbz=$row->berechtigung_kurzbz;
$b->uid=$row->uid;
$b->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$b->start=$row->start;
if ($row->start!=null)
$b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4));
else
$b->starttimestamp=null;
$b->ende=$row->ende;
if ($row->ende!=null)
$b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4));
else
$b->endetimestamp=null;
$b->art=$row->art;
$this->berechtigungen[]=$b;
}
return true;
}
function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null, $fachbereich_id=null)
{
$timestamp=time();
foreach ($this->berechtigungen as $b)
{
//Fachbereichsberechtigung
if($fachbereich_id!=null)
{
//Wenn Fachbereichs oder Adminberechtigung
if(($berechtigung == $b->berechtigung_kurzbz || $b->berechtigung_kurzbz == 'admin') && ($b->fachbereich_id==$fachbereich_id || $b->fachbereich_id=='0'))
{
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
}
}
//Wenn Berechtigung fuer Bestimmte Klasse vorhanden ist
if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null && $fachbereich_id==null)
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
//Wenn Berechtigung fuer Bestimmten Studiengang vorhanden ist
if ($berechtigung==$b->berechtigung_kurzbz
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null && $b->fachbereich_id==null)
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
//Wenn Berechtigung mit Studiengang und der richtigen BerechtigungsArt (suid) vorhanden ist
if ($berechtigung==$b->berechtigung_kurzbz
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0)
&& strstr($b->art,$art))
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
}
return false;
}
/**
* Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck.
* Optional wird auf Berechtigung eingeschraenkt.
* Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0.
*/
function getStgKz($berechtigung=null)
{
$studiengang_kz=array();
$timestamp=time();
foreach ($this->berechtigungen as $b)
if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null)
if($b->fachbereich_id==null)
$studiengang_kz[]=$b->studiengang_kz;
$studiengang_kz=array_unique($studiengang_kz);
sort($studiengang_kz);
return $studiengang_kz;
}
function getFbKz($berechtigung=null)
{
$fachbereichs_kz=array();
$timestamp=time();
foreach($this->berechtigungen as $b)
{
if(($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null)
&& (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null)))
{
if($b->fachbereich_id!='' && !in_array($b->fachbereich_id,$fachbereichs_kz))
$fachbereichs_kz[] = $b->fachbereich_id;
}
}
sort($fachbereichs_kz);
return $fachbereichs_kz;
}
}
?>
+515
View File
@@ -0,0 +1,515 @@
<?php
/**
* @author: maximilian schremser
* @date: 2004-10-24
* globale funktionen für verschiedene anwendungen auf der cis.technikum-wien.at
*/
function get_active_status($auth) {
$course_id = $auth->stg_id;
$term_id = $auth->semester;
$sql = "SELECT distinct verband, gruppe FROM tbl_student WHERE (studiengang_kz = $course_id) AND (semester = $term_id) ORDER BY verband,gruppe";
$rs = new pgRS($sql);
$count_verband = $rs->num;
$verbands = $rs->arr;
for ($rt = $count_verband-1; $rt >= 0; $rt--) {
$verband = $verbands[$rt]["verband"] . $verbands[$rt]["gruppe"];
if ($verbands[$rt]["verband"] == $auth->verband &&
$verbands[$rt]["gruppe"] == $auth->gruppe)
return pow(2,$rt);
}
return 0;
} // eof function get_active_status
//get_lf_bezeichnung holt die Studiengang Bezeichnung und die Lehrfach
// bezeichnung für das aktuelle Lehrfach.
function get_lf_bezeichnung($course_id, $term_id, $lesson)
{
$sql = "SELECT lf.bezeichnung, kurzbzlang FROM lehre.tbl_lehrfachzuteilung lf
JOIN tbl_studiengang USING(studiengang_kz) WHERE lf.studiengang_kz = $course_id
AND lf.lehrfachzuteilung_kurzbz = '$lesson' AND lf.semester = $term_id LIMIT 1";
$rs = new pgRS($sql);
$ret[0] = $rs->arr[0]["kurzbzlang"];
$ret[1] = $rs->arr[0]["bezeichnung"];
return $ret;
}
// Die Freigabe für die Verbände für den Studienbrief berechnen
// Um die Freigeschaltenen Studienbriefe zu berechnen.
function sum($points = array()) {
$p = 0;
for ($i = 0; $i < count($points); $i++)
{
$p+= $points[$i];
}
return $p;
} /* eof sum() */
// erstellen des aktuellen studienjahres
function get_studienjahr($i = -1) {
if ($i != -1) {
$stj = date("Y")+$i;
$stj .= "/";
$stj .= sprintf("%02d", date("y")+$i+1);
} else if ( date("n") >= 7)
$stj = date("Y") . "/" . date("y", mktime(0,0,0,1,1,date("Y")+1));
else
$stj = date("Y")-1 . "/" . date("y");
return $stj;
}
function get_needed_term_id($term_id = 0, $stj = "") {
if ($stj == "")
$stj = get_studienjahr();
$needed_term_id = $term_id + ((date("Y") - substr($stj,0,4))*2);
if ((date("n") >= 8 || date("n") < 3))
if ($term_id%2==0)
$needed_term_id--;
else
$needed_term_id++;
if ((date("n") < 8 || date("n") >= 3))
if ($term_id%2!= 0)
$needed_term_id--;
return $needed_term_id;
}
// berechnet die notwendige Semester_ID zum Anzeigen der
// Studenten im Kreuzerltool
function get_needed_term_id2($term_id = 0, $stj = "") {
// im WS sollen noch Studenten vom letzten SS sichtbar sein
if ((date("n") >= 8 || date("n") < 2)) {
if ($term_id%2==0)
$term_id++;
}
// im SS sollen noch die Studenten vom WS sichtbar sein
else {
if ($term_id%2==1) {
$term_id++;
}
}
return $term_id;
}
// zurückrechnen auf die studenten im jetzigen semester
// studienpunkte sind nur für die eigene person sichtbar
function get_old_studienjahr() {
if (date("n") >= 7 && $term_id%2 == 1) {
$studienjahr = date("Y") - intval(($auth->semester - $term_id)/2);
}
else if (date("n") >= 7 && $term_id%2 == 0) {
$studienjahr = date("Y") - intval(($auth->semester - $term_id)/2)-1;
}
else if (date("n") < 7 && $term_id%2 == 1) {
$studienjahr = date("Y") - intval(($auth->semester - $term_id)/2);
}
else {
$studienjahr = date("Y") - intval(($auth->semester - $term_id)/2);
}
$studienjahr .= "/" . date("y", mktime(0,0,0,1,1,$studienjahr+1));
}
// write out the menu for kreuzerltool (campus/lehre/effort
function write_menu($menu, $course_id, $lesson, $term_id, $module = "", $stj = 0) {
if ($stj == 0)
$stj = get_studienjahr();
print "
<form method=\"post\" action=\"#page\">
<table border=0 cellpadding=1 cellspacing=0 width=600>
<tr>
<td>
<table border=0 width=100% cellpadding=0 cellspacing=0 width=600>
<tr>
<td width=50%>
<li type=square><a href=\"result_effort.php?course_id=$course_id&short=$lesson&term_id=$term_id&stj=$stj&module=$module#page\">Kreuzerlliste Statistik</a></li>
</td>
<td>
<li type=square><a href=\"show_list.php?course_id=$course_id&short=$lesson&term_id=$term_id&stj=$stj&module=$module#page\">Anwesenheits-
und <br>&nbsp;&nbsp;&nbsp;&Uuml;bersichtstabelle</a></li></td></tr>
<tr>
<td>
<li type=square><a href=\"create_stb.php?course_id=$course_id&short=$lesson&term_id=$term_id&stj=$stj&module=$module#page\">Kreuzerllisten anlegen <br>&nbsp;&nbsp;&nbsp;und verwalten</a></li></td>
<td>
<li type=square><a href=\"edit_list.php?course_id=$course_id&short=$lesson&term_id=$term_id&stj=$stj&module=$module#page\">Studentenpunkte <br>&nbsp;&nbsp;&nbsp;&nbsp;verwalten</a></li></td></tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
<tr>
<td width=200 class=light valign=middle height=19>&nbsp;
$menu</td>
<td align=right class=light>Studienjahr: <select name=stj size=1 onChange=document.location.href='$PHP_SELF?course_id=$course_id&short=$lesson&term_id=$term_id&module=$module&stj='+document.forms[0].stj.options[document.forms[0].stj.options.selectedIndex].value;>";
$k = 0;
// einfügen eines neuen Studienjahres ab 1.Juli bis 31.Dezember
if (date("n") >= 7) {
$d = date("Y") . "/" . date("y", mktime(0,0,0,1,1,date("Y")+1));
echo "<option value='$d'";
if ($d == $stj)
echo "selected";
echo ">$d</option>";
}
// vergangene Studienjahre seit 2003/04
for ($i = date("y")+0, $j = date("Y")-1; $i >= 3, $j >= 2002; $i--,$j--)
{
$nextYear = $i;
$year = $j;
// add a spacing 0
if ($nextYear < 10)
$nextYear = "0$nextYear";
echo "<option value=\"$year/$nextYear\"";
echo ($stj == ($year."/".$nextYear))?"selected":"";
echo ">$year/$nextYear</option>";
}
print <<<EOF
</select></td>
</tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
</table></td></tr>
</table></td>
</tr></table>
</form>
EOF;
}
/**
* @params inputString - the String to be formatted
* @return the formatted String
*/
function format($inputString) {
$inputString = stripslashes($inputString);
return str_replace("\n", "<br>",$inputString);
}
function get_lectors($course_id, $term_id, $short) {
if ($course_id && $term_id && $short) {
$sql = "SELECT DISTINCT on (bezeichnung,nachname) bezeichnung, studiengang_kz, semester, vornamen, nachname, email, uid FROM lehre.tbl_lehrfachzuteilung JOIN tbl_person ON uid = lektor_uid WHERE studiengang_kz='$course_id' AND semester='$term_id' AND lehrfachzuteilung_kurzbz = '$short' AND tbl_person.aktiv=TRUE ORDER BY bezeichnung, nachname";
//$sql_query = "SELECT DISTINCT ON(uid), vornamen, nachname,
// titel FROM lehre.tbl_lehrfachzuteilung, tbl_person,
//tbl_mitarbeiter WHERE tbl_person.uid =
//lehre.tbl_lehrfachzuteilung.lektor_uid AND
//lehre.tbl_lehrfachzuteilung.studiengang_kz='$course_id'
//AND lehre.tbl_lehrfachzuteilung.semester='$term_id'
//AND LOWER(lehre.tbl_lehrfachzuteilung.lehrfachzuteilung_kurzbz)='$short'
//AND lehre.tbl_lehrfachzuteilung.aktiv = true
//ORDER BY nachname";
$result_lectors = new pgRS($sql);
}
$num_rows_lectors = $result_lectors->num;
$row_email = array();
$row_vornamen = array();
$row_nachname = array();
$row_titel = array();
for($i = 0; $i < $num_rows_lectors; $i++)
{
$row_email[] = $result_lectors->arr[$i]["emailtw"];
$row_vornamen[] = $result_lectors->arr[$i]["vornamen"];
$row_nachname[] = $result_lectors->arr[$i]["nachname"];
$row_titel[] = $result_lectors->arr[$i]["titel"];
}
$ret = "";
for ($i = 0; $i < count($row_email); $i++)
{
$ret .= "$row_titel[$i] $row_vornamen[$i] $row_nachname[$i]";
if ($i < count($row_email)-1)
$ret .= ", ";
}
return $ret;
}
function get_person($bezeichnung, $course_id) {
$sql = "SELECT titel, vornamen, nachname, bezeichnung FROM tbl_funktion, public.tbl_person JOIN tbl_personfunktion ON (tbl_personfunktion.uid = tbl_person.uid) WHERE tbl_personfunktion.funktion_kurzbz = tbl_funktion.funktion_kurzbz AND bezeichnung='$bezeichnung' AND tbl_personfunktion.studiengang_kz='$course_id'";
$rs = new pgRS($sql);
$arr = $rs->arr[0];
$ret = $arr["titel"]." " . $arr["vornamen"]." " . $arr["nachname"];
return $ret;
}
function create_version($user, $info_data) {
$id = 0;
$info_id = 0;
$version_id = 0;
$ects_points = $info_data["ects_credits"];
$learning_language = $info_data["sprache"];
$wochenstunden = $info_data["hours"];
$course_id = $info_data["course_id"];
$term_id = $info_data["term_id"];
$short = $info_data["short"];
$studienjahr = $info_data["studienjahr"];
$fachbereich = $info_data["fachbereich"];
$fachbereichsleiter = $info_data["fachbereichsleiter"];
$fachbereichskoordinator = $info_data["fachbereichskoordinator"];
$lehrender = $info_data["lehrender"];
$sql = "INSERT INTO lv_infos (ects_credits,
sprache, hours, studienjahr, fachbereich,
fachbereichsleiter, fachbereichskoordinator, lehrender) VALUES
($ects_points, $learning_language,
$wochenstunden, '$studienjahr',
'$fachbereich', '$fachbereichsleiter',
'$fachbereichskoordinator', '$lehrender')";
$rs = new myRS($sql);
$info_id = $rs->iid;
if ($info_id) {
$sql = "SELECT max(version) as version FROM lv_versions
WHERE studiengang_kz = $course_id AND
short = '$short' AND term_id = $term_id";
$rs = new myRS($sql);
$max_version = $rs->arr[0]["version"];
$sql ="INSERT INTO lv_versions (studiengang_kz, term_id,
short, lector_uid, version,
status, info_id, date_created, date_modified)
VALUES ($course_id, $term_id, '$short',
'$user', " . ($max_version +1).", 0,$info_id," .time() .", " . time().")";
$rs = new myRS($sql);
$version_id = $rs->iid;
}
return array($version_id, $info_id);
} // eof create_version
function get_version($version_id) {
$sql = "SELECT * FROM lv_versions v, lv_infos i
WHERE v.id = $version_id AND v.info_id = i.id";
$rs = new myRS($sql);
return array(
$rs->arr[0]["ects_credits"]/10,
$rs->arr[0]["sprache"],
$rs->arr[0]["hours"]/10,
$rs->arr[0]["info_id"],
$rs->arr[0]["content_de_id"],
$rs->arr[0]["content_en_id"],
$rs->arr[0]["date_created"],
$rs->arr[0]["date_modified"],
$rs->arr[0]["studienjahr"],
$rs->arr[0]["fachbereich"],
$rs->arr[0]["fachbereichsleiter"],
$rs->arr[0]["fachbereichskoordinator"],
$rs->arr[0]["lehrender"],
$rs->arr[0]["studiengang_kz"],
$rs->arr[0]["term_id"],
$rs->arr[0]["short"]
);
} // eof get_version
// updates the record with info_id in lv_infos
function update_version($user, $info_data) {
$id = 0;
$version_id = 0;
$ects_points = $info_data["ects_credits"];
$learning_language = $info_data["sprache"];
$wochenstunden = $info_data["hours"];
$info_id = $info_data["info_id"];
$studienjahr = $info_data["studienjahr"];
$fachbereich = $info_data["fachbereich"];
$fachbereichsleiter = $info_data["fachbereichsleiter"];
$fachbereichskoordinator = $info_data["fachbereichskoordinator"];
$lehrender = $info_data["lehrender"];
$version_id = $info_data["version_id"];
$sql = "UPDATE lv_infos SET ects_credits = $ects_points,
sprache = $learning_language,
hours = $wochenstunden,
studienjahr = '$studienjahr',
fachbereich = '$fachbereich',
fachbereichsleiter = '$fachbereichsleiter',
fachbereichskoordinator = '$fachbereichskoordinator',
lehrender = '$lehrender'
WHERE id = $info_id";
$rs = new myRS($sql);
$sql = "UPDATE lv_versions SET date_modified = " .time() .
" WHERE id = $version_id";
$rs = new myRS($sql);
} // eof update_version
// saves a version to be displayed in LV infos freigeben
function save_version($version_id) {
$sql = "UPDATE lv_versions SET status = 1 WHERE id = $version_id";
$rs = new myRS($sql);
}
// inserts a record into lv_content_$lang and
// update lv_versions.content_$lang_id
function create_content($lang, $version_id, $info_data) {
$arr_values = array_values($info_data);
$keys = join(", ", array_keys($info_data));
for ($i = 0; $i < count($arr_values)-1;$i++) {
$values .= "'" . $arr_values[$i] . "', ";
}
$values .= "'" . $arr_values[count($arr_values)-1] ."'";
$sql = "INSERT INTO lv_content_$lang ($keys) VALUES ($values)";
$rs = new myRS($sql);
$content_id = $rs->iid;
$sql = "UPDATE lv_versions SET content_" . $lang . "_id =
$content_id WHERE id = $version_id";
$rs = new myRS($sql);
return $content_id;
} // eof create_content
// update_content updates the table lv_content_$lang
function update_content($lang, $id, $info_data) {
$sql = "UPDATE lv_content_$lang SET ";
$keys = array_keys($info_data);
$values = array_values($info_data);
for ($i = 0; $i < count($values); $i++) {
$sql .= $keys[$i] ." = '" . $values[$i] . "'";
if ($i < count($values)-1) $sql .= ", ";
}
$sql .= " WHERE id = $id";
$rs = new myRS($sql);
} // eof update_content
function get_content($lang, $content_id, $fields) {
$sql = "SELECT " . join (", ", $fields) . " FROM
lv_content_$lang WHERE id = $content_id";
$rs = new myRS($sql);
return $rs->arr[0];
} // eof get_content
function write_log($lektor_uid, $action) {
$sql = "INSERT INTO lv_log (lektor_uid, action, datum)" .
" VALUES ('$lektor_uid', '$action', " . time() .")";
$rs = new myRS($sql);
return 1;
}
/*****************************************************************************
* function write_ects_menu($menu = 0, $course_id, $term_id, $short, $lang) {
*
* if ($menu == 1) $menu_name = "LV-Infos anzeigen";
*
* print <<<EOF
* <form method="get" action="view_$lang.php?menu=$menu" name="foo">
<input type="hidden" name="course_id" value="$course_id" />
<input type="hidden" name="term_id" value="$term_id" />
<input type="hidden" name="menu" value="$menu" />
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width=20>&nbsp;</td>
<td width="357"><li><font size="2" face="Arial, Helvetica, sans-serif"><a class=Item2 href="view_$lang.php?menu=1&course_id=$course_id&short=$short&term_id=$term_id">LV-Infos - anzeigen</a>
</font></td>
<td width="396"><li><font size="2" face="Arial, Helvetica, sans-serif"><a class=Item2 href="edit.php?menu=2&course_id=$course_id&short=$short&term_id=$term_id">LV-Infos - erstellen / bearbeiten</a>
</font></td>
<td width="280"><li><font size="2" face="Arial, Helvetica, sans-serif"><a class=Item2 href="publish.php?course_id=$course_id&short=$short&term_id=$term_id">LV-Infos - freigeben</a></td>
<td width="280"><li><font size="2" face="Arial, Helvetica, sans-serif"><a class=Item2 href="index.php?menu=5&course_id=$course_id&short=$short&term_id=$term_id">LV-Infos - Feedback</a></td>
</tr>
<tr>
<td width=20>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
EOF;
if ($menu_name) {
print <<<EOF
<tr>
<td width="100%" class="inner"><a name="page"></a>
<table border=0 cellpadding=0 cellspacing=0 width="100%">
<tr>
<td width=400><font face="Arial, Helvetica, sans-serif" size="2" color="#000000">
&nbsp;$menu_name
</font></td>
<td width="50%" align="center">
Lehrfach: <select name="short" size="1" onChange="document.foo.submit();" >
<option value="">Bitte Lehrfach auswählen</option>
EOF;
if ($course_id && $term_id) {
$sql = "SELECT DISTINCT bezeichnung, lehrfachzuteilung_kurzbz FROM lehre.tbl_lehrfachzuteilung WHERE studiengang_kz=$course_id AND semester=$term_id ORDER BY bezeichnung";
$rs = new pgRS($sql);
for ($i = 0; $i < $rs->num; $i++) {
echo "<option value='" . $rs->arr[$i]["lehrfachzuteilung_kurzbz"] .
"' ";
if ($short==$rs->arr[$i]["lehrfachzuteilung_kurzbz"])
echo " selected";
echo ">";
echo $rs->arr[$i]["bezeichnung"];
echo "</option>";
}
}
echo '</select></td>
<td align="right" class="inner" valign="middle" width=300>';
if ($menu != 2) {
if ($lang == "" || $lang!="en") {
* echo "[Deutsch]";
* } else {
* echo "<a class=Item2 href='view_de.php?course_id=$course_id&short=$short&term_id=$term_id&menu=$menu&lang=de'>[Deutsch]</a>";
* }
* if ($lang == "en") {
* echo "[English]";
* } else {
* echo "<a class=Item2 href='view_en.php?course_id=$course_id&short=$short&term_id=$term_id&menu=$menu&lang=en'>[English]</a>";
* }
* } // eof menu=2
* echo '</td>
* </tr></table></td>
* </tr>';
* }
* echo '<tr>
* <td width="100%" align="center">&nbsp;</td></tr></table></form>';
* }
***************************************************************************/
// write a menu for a quicker navigation in the ects - course contents program
function write_ects_quick_menu($course_id, $term_id, $short, $p, $version_id = 0, $info_id = 0, $content_de_id = 0, $content_en_id = 0) {
if ($p > 0) {
print '<table style="border:1px solid black"><tr><th>Schnellnavigation</th></tr><tr><td valign=top>
<!-- MENU FUER NAVIGATION //-->';
static $headlines = array("", "Allgemeine Infos", "Inhalte DE", "Prüfung DE", "Inhalte EN", "Prüfung EN", "Beenden");
for ($i = 1; $i < count($headlines); $i++) {
echo "
$i <a href=\"edit_$i.php?menu=2&course_id=$course_id&term_id=$term_id&short=$short&version_id=$version_id&info_id=$info_id&content_de_id=$content_de_id&content_en_id=$content_en_id&quick=1\">";
if ($i==$p) echo "<b>";
echo $headlines[$i];
if ($i==$p) echo "</b>";
echo "</a><br>";
}
}
}
// this function returns the dictionary entry for the keyword in the
// given language
function dict($lang = "de", $key = "") {
static $dictionary = array (
"back" => array("de" => "Zurück", "en" => "Back"),
"LVInfos" => array("de" => "LV - Informationen", "en" => "Course Description"),
"allCourses" => array("de" => "Alle Studiengänge", "en" => "All Courses"),
"availCourses" => array("de" => "Vorhandene Lehrfächer in ", "en" => "Available Courses in "),
"term" => array("de" => "Semester", "en" => "term"),
"noinfo" => array("de" => "Keine Informationenen verfügbar", "en" => "No course information available")
);
return $dictionary[$key][$lang];
}
?>
+110
View File
@@ -0,0 +1,110 @@
<?php
/*
$Header: /Pfad/Kodierrichtlinien.tex,v 1.2 2004/02/29 17:05:38 pam Exp $
$Log: Kodierrichtlinien.tex,v $
Revision 1.2 2004/02/29 17:05:38 pam
Fehler in Umlauten beseitigt.
*/
/**
* @class ects_sync
*
* @author Andreas Österreicher
*
* @date 30.9.2005
*
* @version $Revision: 1.2 $
*
* @brief Enthält Methoden für die ECTS Syncronisation
*/
class ects_sync
{
var $erg;
var $connection;
/********************************************************************
* @brief Konstruktor
*
* @param $conn Connection zur DB
********************************************************************/
function ects_sync($conn)
{
$this->connection=$conn;
}
/********************************************************************
* @brief Überprüft ob der Fachbereich existiert
*
* @param $fachb Fachbereichsbezeichnung
********************************************************************/
function check_fachbereich($fachb)
{
$sql_query = "SELECT * FROM tbl_fachbereich where bezeichnung='$fachb' OR kurzbz='$fachb'";
$result = pg_exec($this->connection, $sql_query);
if($row=pg_fetch_object($result))
$this->erg = $row->fachbereich_id;
else
return false;
return true;
}
/********************************************************************
* @brief Überprüft ob der Studiengang existiert
*
* @param $stg Studiengangs Kurzzeichen
********************************************************************/
function check_studiengang($stg)
{
$sql_query = "SELECT * FROM tbl_studiengang where studiengang_kz = $stg";
$result = pg_exec($this->connection, $sql_query);
if(pg_numrows($result)>0)
$this->erg = $stg;
else
return false;
return true;
}
/********************************************************************
* @brief Überprüft ob das Lehrfach existiert
*
* @param $lehrf LehrfachsKurzbz
* $stg Studiengang
* $sem Semester
********************************************************************/
function check_lehrfach($lehrf, $stg, $sem)
{
$sql_query = "SELECT * FROM tbl_lehrfach where kurzbz = upper('$lehrf') AND studiengang_kz=$stg AND semester=$sem";
$result = pg_exec($this->connection, $sql_query);
if($row=pg_fetch_object($result))
$this->erg = $row->lehrfach_nr;
else
return false;
return true;
}
/********************************************************************
* @brief Überprüft das Semester
*
* @param $sem Semster
********************************************************************/
function check_semester($sem)
{
if(is_numeric($sem) AND $sem<10)
$this->erg = $sem;
else
return false;
return true;
}
}
?>
+315
View File
@@ -0,0 +1,315 @@
<?php
/**
* Eine Einheit fasst mehrere Studenten zusammen. Die Besonderheit ist,
* dass die Studenten aus unterschiedlichen Studiengaengen stammen koennen.
* Das wird z.B. für die Freifaecher benoetigt.
* @author Christian Paminger, Werner Masik (werner@gefi.at)
* @version 1.0
* @created 22-Okt-2004 11:50:18
* @updated 28.10.2004 (WM)
*/
class einheit
{
/**
* @var string
*/
var $kurzbz;
/**
* @var integer
*/
var $stg_kz;
/**
* @var string nur zur info beim Suchergebnis, wird nicht gespeichert
*/
var $stg_kurzbz;
/**
* @var string
*/
var $bezeichnung;
/**
* @var integer
*/
var $semester;
/**
* @var integer
*/
var $typ;
/**
* @var string
*/
var $mailgrp_kurzbz;
/**
* @var string
*/
var $errormsg;
/**
* @var DB-Resource
*/
var $conn;
function einheit($conn,$kurzbz='')
{
$this->conn = $conn;
if (strlen($kurzbz)>0)
{
$this->kurzbz=$kurzbz;
$this->load();
}
}
/**
* Speichert die Einheit in der Datenbank. Bei Fehler ist der Rueckgabewert
* 'false' und die Fehlermeldung steht in 'errormsg'. INSERT oder DELETE wird
* durch 'new' bestimmt.
* @param string $kurzbz_new Kurzbezeichnung ist optional
* @return boolean true=ok, false=fehler
*/
function save($kurzbz_new='')
{
if (is_null($this->conn))
{
return false;
}
if (strlen($this->kurzbz)==0)
{
$this->errormsg="<i>kurzbz</i> nicht gesetzt";
return false;
}
if ($this->new)
{
if (is_numeric($this->semester)) $semester=$this->semester;
else $semester='NULL';
if (is_numeric($this->typ)) $typ=$this->typ;
else $typ='NULL';
if(!strlen($this->mailgrp_kurzbz)>0)
$this->mailgrp_kurzbz='NULL';
$qry="insert into tbl_einheit(einheit_kurzbz,studiengang_kz,bezeichnung,semester,typ,mailgrp_kurzbz) ".
"values('".$this->kurzbz."','".$this->stg_kz."','".$this->bezeichnung."',$semester,$typ,$this->mailgrp_kurzbz)";
} else
{
if (is_numeric($this->semester)) $semester='semester='.$this->semester;
else $semester='semester=NULL';
if (is_numeric($this->typ)) $typ='typ='.$this->typ;
else $typ='NULL';
if(!strlen($this->mailgrp_kurzbz)>0)
$this->mailgrp_kurzbz='mailgrp_kurzbz=NULL';
else
$this->mailgrp_kurzbz="mailgrp_kurzbz='$this->mailgrp_kurzbz'";
$qry="update tbl_einheit set studiengang_kz=".$this->stg_kz.",bezeichnung='".$this->bezeichnung."',".
"$semester,$typ,".$this->mailgrp_kurzbz.",einheit_kurzbz='".(strlen($kurzbz_new)>0?$kurzbz_new:$this->kurzbz)."' ".
"where einheit_kurzbz='".$this->kurzbz."'";
}
//echo $qry;
if(!($erg=pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* @return boolean true=ok, false=fehler
*/
function load($kurzbz='')
{
// optional: kurzbz setzen
if (strlen($uid)>0)
$this->kurzbz=$kurzbz;
// uid vorhanden?
if (strlen($this->kurzbz)==0) {
$this->errormsg='<i>einheit_kurzbz</i> nicht gesetzt';
return false;
}
if (is_null($this->conn)) {
return false;
}
$qry="select einheit_kurzbz,studiengang_kz,bezeichnung,semester,typ, mailgrp_kurzbz ".
"from tbl_einheit ".
"where einheit_kurzbz='".$this->kurzbz."'";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1) {
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->stg_kz=$row->studiengang_kz;
$this->bezeichnung=$row->bezeichnung;
$this->semester=$row->semester;
$this->typ=$row->typ;
$this->mailgrp_kurzbz=$row->mailgrp_kurzbz;
return true;
}
/**
* Loescht die Funktion aus der Datenbank. Bei Fehler ist der Rueckgabewert
* 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function delete()
{
if (is_null($this->conn)) {
return false;
}
$qry="delete from tbl_einheit where einheit_kurzbz='".$this->kurzbz."'";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
function addStudent($uid) {
if (is_null($this->conn)) {
return false;
}
$qry="insert into tbl_einheitstudent(einheit_kurzbz,uid,updateamum,updatevon) ".
"values('".$this->kurzbz."','".$uid."',now(),'".$_SERVER['PHP_AUTH_USER']."')";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
function deleteStudent($uid) {
if (is_null($this->conn)) {
return false;
}
$qry="delete from tbl_einheitstudent ".
"where einheit_kurzbz='".$this->kurzbz."' and uid='$uid'";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* Alle Einheiten zurueckgeben
* @return array Array der einheiten
*/
function getAll($studiengang_kz='')
{
if (is_null($this->conn)) {
return false;
}
if (strlen($studiengang_kz)>0)
{
$where=" where tbl_einheit.studiengang_kz='".$studiengang_kz."' ";
} else
{
$where="";
}
$qry="select tbl_einheit.*,tbl_studiengang.kurzbz from tbl_einheit join tbl_studiengang using(studiengang_kz) ".
"$where order by einheit_kurzbz;";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
$l=new einheit($this->conn);
$l->kurzbz=$row->einheit_kurzbz;
$l->stg_kz=$row->studiengang_kz;
$l->stg_kurzbz=$row->kurzbz;
$l->bezeichnung=$row->bezeichnung;
$l->semester=$row->semester;
$l->typ=$row->typ;
$l->mailgrp_kurzbz=$row->mailgrp_kurzbz;
$result[]=$l;
}
return $result;
}
/**
* Liste aller Studenten zurueckgeben
* @param string $studiengang_kz optional
* @return array Array mit allen Studenten, false bei fehler
*/
function getStudenten($studiengang_kz='')
{
if (is_null($this->conn)) {
return false;
}
if (strlen($studiengang_kz)>0)
{
$where=" and tbl_einheit.studiengang_kz='".$studiengang_kz."' ";
} else
{
$where="";
}
$qry="select einheit_kurzbz,uid ".
"from tbl_einheitstudent join tbl_student using(uid) join tbl_person using(uid) ".
" join tbl_einheit using (einheit_kurzbz) ".
"where einheit_kurzbz='".$this->kurzbz."' $where ".
"order by upper(tbl_person.nachname),upper(tbl_person.vornamen)";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
$l=new student($this->conn,$row->uid);
$result[]=$l;
}
return $result;
}
/**
* Liefert die Anzahl der Studenten in einer Einheit
* @param string kurzbzlang
* @return anzahl der Studenten
*/
function countStudenten($einheit_kurzbz)
{
$qry = "Select count(*) as anzahl from tbl_einheitstudent where einheit_kurzbz='$einheit_kurzbz'";
if($result=pg_query($this->conn,$qry))
{
if($row=pg_fetch_object($result))
return $row->anzahl;
else
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
}
else
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
}
}
?>
+92
View File
@@ -0,0 +1,92 @@
<?php
class fachbereich
{
/**
* @var integer
*/
var $id;
/**
* @var string
*/
var $kurzbz;
/**
* @var string
*/
var $bezeichnung;
/**
* @var string;
*/
var $farbe;
/**
* @var integer
*/
var $studiengang_kz;
/**
* @var boolean default true
*/
var $boolean = true;
/**
*
* @var studiengang_kurzbz
*/
var $studiengang_kurzbz;
/**
* @var string
*/
var $errormsg;
/**
* @var resource
*/
var $conn;
function fachbereich($conn)
{
$this->conn = $conn;
}
/**
* Alle Fachbereiche zurückgeben
* @return array mit Fachbereichen oder false=fehler
*/
function getAll()
{
if (is_null($this->conn))
{
return false;
}
$qry = "select fachbereich_id,tbl_fachbereich.kurzbz,tbl_fachbereich.bezeichnung,tbl_fachbereich.farbe,tbl_fachbereich.studiengang_kz,".
"tbl_studiengang.kurzbz as studiengang_kurzbz ".
"from tbl_fachbereich join tbl_studiengang using(studiengang_kz) ".
"order by tbl_Fachbereich.kurzbz";
//echo $qry;
if (!($erg = pg_exec($this->conn, $qry)))
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
$result = array();
$num_rows = pg_numrows($erg);
for ($i = 0; $i < $num_rows; $i ++)
{
// Record holen
$row = pg_fetch_object($erg, $i);
// Instanz erzeugen
$fb = new fachbereich($this->conn);
$fb->id = $row->fachbereich_id;
$fb->kurzbz = $row->kurzbz;
$fb->bezeichnung = $row->bezeichnung;
$fb->farbe = $row->farbe;
$fb->studiengang_kz = $row->studiengang_kz;
$fb->studiengang_kurzbz = $row->studiengang_kurzbz;
// in array speichern
$result[] = $fb;
}
return $result;
}
}
?>
+355
View File
@@ -0,0 +1,355 @@
<?php
/**
* Klasse Adresse (FAS-Online)
* @create 13-03-2006
*/
class adresse
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var adresse Objekt
//Tabellenspalten
var $adresse_id; // @var integer
var $bismeldeadresse; // @var boolean
var $gemeinde; // @var string
var $name; // @var string
var $nation; // @var string
var $ort; // @var string
var $person_id; // @var integer
var $plz; // @var string
var $strasse; // @var string
var $typ; // @var integer
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
var $zustelladresse; // @var boolean
/**
* Konstruktor
* @param $conn Connection
* $adress_id ID der Adresse die geladen werden soll (Default=null)
*/
function adresse($conn,$adress_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($adress_id != null)
$this->load($adress_id);
}
/**
* Laedt die Funktion mit der ID $adress_id
* @param $adress_id ID der zu ladenden Funktion
* @return true wenn ok, false im Fehlerfall
*/
function load($adress_id)
{
//Pruefen ob adress_id eine gueltige Zahl ist
if(!is_numeric($adress_id) || $adress_id == '')
{
$this->errormsg = 'Adress_id muss eine Zahl sein';
return false;
}
//Daten aus der Datenbank lesen
$qry = "SELECT * FROM adresse WHERE adresse_pk=$adress_id";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = pg_fetch_object($res))
{
$this->adresse_id = $row->adresse_pk;
$this->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false);
$this->gemeinde = $row->gemeinde;
$this->name = $row->name;
$this->nation = $row->nation;
$this->ort = $row->ort;
$this->person_id = $row->person_fk;
$this->plz = $row->plz;
$this->strasse = $row->strasse;
$this->typ = $row->typ;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
$this->zustelladresse = ($row->zustelladresse=='J'?true:false);
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Laedt alle adressen zu der Person die uebergeben wird
* @param $pers_id ID der Person zu der die Adressen geladen werden sollen
* @return true wenn ok, false im Fehlerfall
*/
function load_pers($pers_id)
{
//Pruefen ob pers_id eine gueltige Zahl ist
if(!is_numeric($pers_id) || $pers_id == '')
{
$this->errormsg = 'person_id muss eine gueltige Zahl sein';
return false;
}
//Lesen der Daten aus der Datenbank
$qry = "SELECT * FROM adresse WHERE person_fk=$pers_id";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$adr_obj = new adresse($this->conn);
$adr_obj->adresse_id = $row->adresse_pk;
$adr_obj->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false);
$adr_obj->gemeinde = $row->gemeinde;
$adr_obj->name = $row->name;
$adr_obj->nation = $row->nation;
$adr_obj->ort = $row->ort;
$adr_obj->person_id = $row->person_fk;
$adr_obj->plz = $row->plz;
$adr_obj->strasse = $row->strasse;
$adr_obj->typ = $row->typ;
$adr_obj->updateamum = $row->creationdate;
$adr_obj->updatevon = $row->creationuser;
$adr_obj->zustelladresse = ($row->zustelladresse=='J'?true:false);
$this->result[] = $adr_obj;
}
return true;
}
/**
* Laedt alle Adressen aus der Datenbank
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM adresse";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$adr_obj = new adresse($this->conn);
$adr_obj->adresse_id = $row->adresse_pk;
$adr_obj->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false);
$adr_obj->gemeinde = $row->gemeinde;
$adr_obj->name = $row->name;
$adr_obj->nation = $row->nation;
$adr_obj->ort = $row->ort;
$adr_obj->person_id = $row->person_fk;
$adr_obj->plz = $row->plz;
$adr_obj->strasse = $row->strasse;
$adr_obj->typ = $row->typ;
$adr_obj->updateamum = $row->creationdate;
$adr_obj->updatevon = $row->creationuser;
$adr_obj->zustelladresse = ($row->zustelladresse=='J'?true:false);
$this->result[] = $adr_obj;
}
return true;
}
/**
* Prueft die Variablen auf gueltigkeit
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
//Zahlenfelder pruefen
$this->errormsg='Ein Zahlenfeld enthaelt ungueltige Zeichen';
if(!is_numeric($this->person_id))
{
$this->errormsg='Person_id enthaelt ungueltige Zeichen:'.$this->person_id;
return false;
}
if(!is_numeric($this->typ))
{
$this->errormsg='Typ enthaelt ungueltige Zeichen';
return false;
}
//Gesamtlaenge pruefen
$this->errormsg='Eine der Gesamtlaengen wurde ueberschritten';
if(strlen($this->name)>255)
{
$this->errormsg = 'Name darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->strasse)>255)
{
$this->errormsg = 'Strasse darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->plz)>10)
{
$this->errormsg = 'Plz darf nicht länger als 10 Zeichen sein';
return false;
}
if(strlen($this->ort)>255)
{
$this->errormsg = 'Ort darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->nation)>3)
{
$this->errormsg = 'Nation darf nicht länger als 3 Zeichen sein';
return false;
}
if(strlen($this->gemeinde)>255)
{
$this->errormsg = 'Gemeinde darf nicht länger als 255 Zeichen sein';
return false;
}
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz in die Datenbank
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
* andernfalls wird der Datensatz mit der ID in $adresse_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
//Variablen pruefen
if(!$this->checkvars())
return false;
if($this->new)
{
//Neuen Datensatz einfuegen
//naechste ID aus der Sequence holen
$qry="SELECT nextval('adresse_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn,$qry)))
{
$this->errormsg = 'Fehler beim auslesen der Sequence';
return false;
}
$this->adresse_id = $row->id;
$qry="INSERT INTO adresse (adresse_pk, person_fk, name, strasse, plz, typ, ort, nation, creationdate, creationuser,".
" gemeinde, bismeldeadresse, zustelladresse) VALUES(".
" $this->adresse_id, $this->person_id, '$this->name', '$this->strasse', '$this->plz', $this->typ, '$this->ort',".
" '$this->nation', now(), $this->updatevon, '$this->gemeinde', '".($this->bismeldeadresse?'J':'N')."',".
" '".($this->zustelladresse?'J':'N')."');";
}
else
{
//Updaten des bestehenden Datensatzes
//Pruefen ob adresse_id eine gueltige Zahl ist
if(!is_numeric($this->adresse_id))
{
$this->errormsg = 'adresse_id muss eine gueltige Zahl sein';
return false;
}
$qry="UPDATE adresse SET person_fk='$this->person_id', name='$this->name', strasse='$this->strasse', plz='$this->plz',".
" typ='$this->typ', ort='$this->ort', nation='$this->nation', gemeinde='$this->gemeinde',".
" bismeldeadresse='".($this->bismeldeadresse?'J':'N')."', zustelladresse='".($this->zustelladresse?'J':'N')."'".
" WHERE adresse_pk='$this->adresse_id'";
}
if(pg_query($this->conn,$qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
/**
* Loescht den Datenensatz mit der ID die uebergeben wird
* @param $adress_id ID die geloescht werden soll
* @return true wenn ok, false im Fehlerfall
*/
function delete($adress_id)
{
//Pruefen ob adresse_id eine gueltige Zahl ist
if(!is_numeric($adress_id) || $adress_id == '')
{
$this->errormsg = 'adresse_id muss eine gueltige Zahl sein';
return false;
}
//loeschen des Datensatzes
$qry="DELETE FROM adresse WHERE adresse_pk=$adress_id;";
if(pg_query($this->conn,$qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim loeschen der Daten';
return false;
}
}
}
?>
+182
View File
@@ -0,0 +1,182 @@
<?php
/**
* Klasse ausbildungssemester (FAS-Online)
* @create 15-03-2006
*/
class ausbildungssemester
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var ausbildungssemester Objekt
var $ausbildungssemester_id; // @var integer
var $studiengang_id; // @var integer
var $name; // @var string
var $personenstatus; // @var integer
var $semester; // @var integer
var $updatevon=0; // @var timestamp
var $updateamum; // @var string
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $ausbildungssemester_id ID des zu ladenden Datensatzes
*/
function ausbildungssemester($conn, $ausbildungssemester_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($ausbildungssemester_id != null)
$this->load($ausbildungssemester_id);
}
/**
* Laedt einen Datensatz aus der Datenbank
* @param $ausbildungssemester_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function load($ausbildungssemester_id)
{
if(!is_numeric($ausbildungssemester_id) || $ausbildungssemester_id == '')
{
$this->errormsg = 'ausbildungssemester_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM ausbildungssemester WHERE ausbildungssemester_pk = '$ausbildungssemester_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
if($row=pg_fetch_object($res))
{
$this->ausbildungssemester_id = $row->ausbildungssemester_pk;
$this->studiengang_id = $row->studiengang_fk;
$this->semester = $row->semester;
$this->name = $row->name;
$this->personenstatus = $row->personenstatus;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
return true;
}
/**
* Liefert alle ausbildungssemester zu einem Studiengang
* @param $studiengang_id Studiengang_id des Ausbildungssemesters
* @return true wenn ok, false im Fehlerfall
*/
function load_stg($studiengang_id)
{
if(!is_numeric($studiengang_id) || $studiengang_id == '')
{
$this->errormsg = 'studiengang_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM ausbildungssemester WHERE studiengang_fk = '$studiengang_id' order by semester";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
while($row = pg_fetch_object($res))
{
$ausb_obj = new ausbildungssemester($this->conn);
$ausb_obj->ausbildungssemester_id = $row->ausbildungssemester_pk;
$ausb_obj->studiengang_id = $row->studiengang_fk;
$ausb_obj->semester = $row->semester;
$ausb_obj->name = $row->name;
$ausb_obj->personenstatus = $row->personenstatus;
$ausb_obj->updateamum = $row->creationdate;
$ausb_obj->updatevon = $row->creationuser;
$this->result[] = $ausb_obj;
}
return true;
}
/**
* Liefert alle Ausbildungssemester
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM ausbildungssemester;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
while($row = pg_fetch_object($res))
{
$ausb_obj = new ausbildungssemester($this->conn);
$ausb_obj->ausbildungssemester_id = $row->ausbildungssemester_pk;
$ausb_obj->studiengang_id = $row->studiengang_fk;
$ausb_obj->semester = $row->semester;
$ausb_obj->name = $row->name;
$ausb_obj->personenstatus = $row->personenstatus;
$ausb_obj->updateamum = $row->creationdate;
$ausb_obj->updatevon = $row->creationuser;
$this->result[] = $ausb_obj;
}
return true;
}
/**
* Checkt die Variablen vor dem Speichern
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
if(!checkvars())
return false;
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Loescht den Datensatz mit der ID die uebergeben wurde
* @param $ausbildungssemester_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($ausbildungssemester_id)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
}
?>
+340
View File
@@ -0,0 +1,340 @@
<?php
/**
* Klasse bankverbindung (FAS-Online)
* @create 07-03-2006
*/
class bankverbindung
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var bankverbindung Objekt
//Tabellenspalten
var $bankverbindung_id; // @var integer
var $person_id; // @var integer
var $name; // @var string
var $anschrift; // @var string
var $blz; // @var string
var $bic; // @var string
var $kontonr; // @var string
var $iban; // @var string
var $typ; // @var integer
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $bank_id Zu ladende ID (Default=null)
*/
function bankverbindung($conn, $bank_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($bank_id != null)
$this->load($bank_id);
}
/**
* Prueft die gueltigkeit der Variablen
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
//Gesamtlaenge pruefen
$this->errormsg = 'Eine der Maximiallaengen wurde ueberschritten';
if(strlen($this->name)>255)
{
$this->errormsg = 'Name darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->anschrift)>255)
{
$this->errormsg = 'Anschrift darf nicht länger als 255 Zeichen sein';
return false;
}
if(strlen($this->blz)>15)
{
$this->errormsg = 'BLZ darf nicht länger als 15 Zeichen sein';
return false;
}
if(strlen($this->bic)>15)
{
$this->errormsg = 'BIC darf nicht länger als 15 Zeichen sein';
return false;
}
if(strlen($this->kontonr)>25)
{
$this->errormsg = 'KontoNr darf nicht länger als 25 Zeichen sein';
return false;
}
if(strlen($this->iban)>25)
{
$this->errormsg = 'IBAN darf nicht länger als 25 Zeichen sein';
return false;
}
//Zahlenwerte ueberpruefen
$this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen';
if(!is_numeric($this->person_id)) return false;
if(!is_numeric($this->typ)) return false;
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
* andernfalls wird der Datensatz mit der ID in $bankverbindung_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
//Gueltigkeit der Variablen pruefen
if(!$this->checkvars())
return false;
if($this->new)
{
//Neuen Datensatz einfuegen
//Naechste ID aus der Sequence holen
$qry = "SELECT nextval('bankverbindung_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim auslesen der Sequence';
return false;
}
$this->bankverbindung_id = $row->id;
$qry = "INSERT INTO bankverbindung (bankverbindung_pk, person_fk, name, anschrift, blz, bic,".
" kontonr, iban, typ, creationdate, creationuser) VALUES(".
" '$this->bankverbindung_id', '$this->person_id', '$this->name', '$this->anschrift',".
" '$this->blz', '$this->bic', '$this->kontonr', '$this->iban', '$this->typ', now(), $this->updatevon);";
}
else
{
//Datensatz Updaten
//ID pruefen
if(!is_numeric($this->bankverbindung_id))
{
$this->errormsg = 'bankverbindung_id muss eine Zahl sein';
return false;
}
$qry="UPDATE bankverbindung SET person_fk='$this->person_id', name='$this->name',".
" anschrift='$this->anschrift', blz='$this->blz', bic='$this->bic',".
" kontonr='$this->kontonr', iban='$this->iban', typ='$this->typ'".
" WHERE bankverbindung_pk=$this->bankverbindung_id";
}
if(pg_query($this->conn, $qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
/**
* Loescht den Datensatz mit der uebergebenen ID
* @param $bank_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($bank_id)
{
if(!is_numeric($bank_id) || $bank_id == '')
{
$this->errormsg = 'bank_id muss eine Zahl sein';
return false;
}
$qry="DELETE FROM bankverbindung WHERE bankverbindung_pk=$bank_id";
if(!pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim loeschen der Daten';
return false;
}
else
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
}
/**
* Liefert die Bankverbindung mit der uebergebenen ID
* @param $bank_id ID der bankverbindung
* @return true wenn ok, false im Fehlerfall
*/
function load($bank_id)
{
if(!is_numeric($bank_id) || $bank_id == '')
{
$this->errormsg = 'bank_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM bankverbindung WHERE bankverbindung_pk=$bank_id";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = pg_fetch_object($res))
{
$this->bankverbindung_id = $row->bankverbindung_pk;
$this->person_id = $row->person_fk;
$this->name = $row->name;
$this->anschrift = $row->anschrift;
$this->blz = $row->blz;
$this->bic = $row->bic;
$this->kontonr = $row->kontonr;
$this->iban = $row->iban;
$this->typ = $row->typ;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Liefert alle Bankverbindungen der Person die uebergeben wird
* @param $pers_id ID der Person
* @return true wenn ok, false im Fehlerfall
*/
function load_pers($pers_id)
{
if(!is_numeric($pers_id) || $pers_id == '')
{
$this->errormsg = 'pers_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM bankverbindung WHERE person_fk=$pers_id";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$bank_obj = new bankverbindung($this->conn);
$bank_obj->bankverbindung_id = $row->bankverbindung_pk;
$bank_obj->person_id = $row->person_fk;
$bank_obj->name = $row->name;
$bank_obj->anschrift = $row->anschrift;
$bank_obj->blz = $row->blz;
$bank_obj->bic = $row->bic;
$bank_obj->kontonr = $row->kontonr;
$bank_obj->iban = $row->iban;
$bank_obj->typ = $row->typ;
$bank_obj->updateamum = $row->creationdate;
$bank_obj->updatevon = $row->creationuser;
$this->result[] = $bank_obj;
}
return true;
}
/**
* Liefert alle Bankverbindungen
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM bankverbindung";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$bank_obj = new bankverbindung($this->conn);
$bank_obj->bankverbindung_id = $row->bankverbindung_pk;
$bank_obj->person_id = $row->person_fk;
$bank_obj->name = $row->name;
$bank_obj->anschrift = $row->anschrift;
$bank_obj->blz = $row->blz;
$bank_obj->bic = $row->bic;
$bank_obj->kontonr = $row->kontonr;
$bank_obj->iban = $row->iban;
$bank_obj->typ = $row->typ;
$bank_obj->updateamum = $row->creationdate;
$bank_obj->updatevon = $row->creationuser;
$this->result[] = $bank_obj;
}
return true;
}
function getTypBezeichnung($id)
{
switch($id)
{
case 1: return 'Privatkonto';
case 2: return 'Firmenkonto';
default: return '';
}
}
}
?>
+386
View File
@@ -0,0 +1,386 @@
<?php
/**
* Klasse fuer Berechtigungen der User
* @author Christian Paminger
* @version 1.0
* @updated 11-Feb-2004
*/
class benutzer
{
/**
* interne userberechtigung_id (Zaehler aus DB)
* @var integer
*/
var $userberechtigung_id;
/**
* @var integer
*/
var $studiengang_kz;
/**
* @var integer
*/
var $fachbereich_id;
/**
* @var string
*/
var $berechtigung_kurzbz;
/**
* @var string
*/
var $uid;
/**
* @var string
*/
var $studiensemester_kurzbz;
/**
* @var integer
*/
var $start;
/**
* @var integer
*/
var $ende;
/**
* @var integer
*/
var $starttimestamp;
/**
* @var integer
*/
var $endetimestamp;
/**
* @var string
*/
var $art;
/**
* @var array
*/
var $berechtigungen=array();
/**
* @var string
*/
var $variable;
var $conn; //Vilesci Connection
/**
* @var boolean
*/
var $new;
var $errormsg;
function benutzer($conn)
{
$this->conn=$conn;
$this->new=true;
}
/**
* Ladet die Attribute der Berechtigung aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function load($id)
{
// Berechtigung holen
$sql_query="SELECT * FROM tbl_userberechtigung WHERE userberechtigung_id=$id";
//echo $sql_query;
if(!($erg=pg_exec($this->conn, $sql_query)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1)
{
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->userberechtigung_id=$row->userberechtigung_id;
$this->studiengang_kz=$row->studiengang_kz;
$this->fachbereich_id=$row->fachbereich_id;
$this->berechtigung_kurzbz=$row->berechtigung_kurzbz;
$this->uid=$row->uid;
$this->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$this->start=$row->start;
$this->ende=$row->ende;
$this->art=$row->art;
$this->new=false;
return true;
}
/**
* @return boolean true=ok, false=fehler
*/
function save()
{
/*
// Connection holen
if (is_null($conn=$this->getConnection()))
{
return false;
}
// Daten zur Person speichern
if (!person::save()) {
$this->errormsg.="Daten zur LVA konnten nicht gespeichert werden.";
return false;
}
if ($this->new) {
$qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
"lektor,lehrfach_nr,studiengang_kz,fachbereich_id,semester,verband,".
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,anmerkung)".
"values(".
"'".$this->lvnr."',".
"'".$this->unr."',".
"'".$this->einheit_kurzbz."',".
"'".$this->lektor."',".
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
(strlen($this->semester)>0?$this->semester:NULL).",".
"'".$this->verband."',".
"'".$this->gruppe."',".
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",".
")";
} else
{
$qry="UPDATE tbl_lehrveranstaltung ".
"SET lvnr='".$this->lvnr."',".
"unr='".$this->unr."',".
"einheit_kurzbz='".$this->einheit_kurzbz."',".
"lektor='".$this->lehrfach_nr."',".
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
"semester=".(strlen($this->semester)>0?$this->semester:NULL).",".
"verband='".$this->verband."',".
"gruppe='".$this->gruppe."',".
"raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
"start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).
" WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
}
//echo "<br>".$qry;
if(!@pg_query($conn, $qry))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
return true;
*/
}
/**
* Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die
* Fehlermeldung liegt in errormsg.
* Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft.
* @param string $uid UserID
* @return variabel Array mit LVA; <b>false</b> bei Fehler
*/
function getBerechtigungen($uid)
{
// Berechtigungen holen
$sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (start<now() OR start IS NULL) AND (ende>now() OR ende IS NULL)";
//echo $sql_query;
if(!$erg=@pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
//$num_rows=pg_numrows($erg);
while($row=pg_fetch_object($erg))
{
$b=new berechtigung($this->conn);
$b->userberechtigung_id=$row->userberechtigung_id;
$b->studiengang_kz=$row->studiengang_kz;
$b->fachbereich_id=$row->fachbereich_id;
$b->berechtigung_kurzbz=$row->berechtigung_kurzbz;
$b->uid=$row->uid;
$b->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$b->start=$row->start;
if ($row->start!=null)
$b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4));
else
$b->starttimestamp=null;
$b->ende=$row->ende;
if ($row->ende!=null)
$b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4));
else
$b->endetimestamp=null;
$b->art=$row->art;
$this->berechtigungen[]=$b;
}
return true;
}
function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null)
{
$timestamp=time();
foreach ($this->berechtigungen as $b)
{
if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null)
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
if ($berechtigung==$b->berechtigung_kurzbz
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null)
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
if ($berechtigung==$b->berechtigung_kurzbz
&& ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0)
&& strstr($b->art,$art))
if ($b->starttimestamp!=null && $b->endetimestamp!=null)
{
if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp)
return true;
}
else
return true;
}
return false;
}
/**
* Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck.
* Optional wird auf Berechtigung eingeschraenkt.
* Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0.
*/
function getStgKz($berechtigung=null)
{
$studiengang_kz=array();
$timestamp=time();
foreach ($this->berechtigungen as $b)
if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null)
$studiengang_kz[]=$b->studiengang_kz;
$studiengang_kz=array_unique($studiengang_kz);
sort($studiengang_kz);
return $studiengang_kz;
}
/**
* Setzt die Studiensemester Variable
*/
function setVariableStudiensemester($user,$stsem)
{
//Vorhandende Variable aendern
$qry = "Update tbl_variable SET wert='$stsem' WHERE uid='$user' AND name='semester_aktuell'";
if($result = pg_query($this->conn,$qry))
{
if(pg_affected_rows($result)==0)
{
//Falls Variable nicht vorhanden ist eine neue anlegen
$qry = "INSERT INTO tbl_variable(uid, name, wert) values('$user', 'semester_aktuell', '$stsem')";
if(pg_query($this->conn,$qry))
return true;
else
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
}
else
return true;
}
else
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
}
function getpossibilities($variable)
{
$ret = array();
switch($variable)
{
case 'semester_aktuell':
$qry = "Select * from tbl_studiensemester order by start";
if($result = pg_query($this->conn,$qry))
{
while($row=pg_fetch_object($result))
$ret[] = $row->studiensemester_kurzbz;
}
break;
}
return $ret;
}
function loadVariables($user)
{
if(!($result=@pg_query($this->conn, "SELECT * FROM tbl_variable WHERE uid='$user'")))
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
else
$num_rows=@pg_numrows($result);
while($row=pg_fetch_object($result))
{
$this->variable->{$row->name}=$row->wert;
}
if (!isset($this->variable->semester_aktuell))
{
if(!($result=@pg_query($this->conn, 'SELECT * FROM tbl_studiensemester WHERE ende>now() ORDER BY start LIMIT 1')))
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
else
{
$num_rows=@pg_numrows($result);
if ($num_rows>0)
{
$row=pg_fetch_object($result);
$this->variable->semester_aktuell=$row->studiensemester_kurzbz;
}
}
}
if (!isset($this->variable->db_stpl_table))
$this->variable->db_stpl_table='stundenplan';
if (!isset($this->variable->fas_id))
$this->variable->fas_id=0;
if (!isset($this->variable->sleep_time))
$this->variable->sleep_time=300;
return true;
}
}
?>
+310
View File
@@ -0,0 +1,310 @@
<?php
/**
* Klasse email (FAS-Online)
* @create 14-03-2006
*/
class email
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var email Objekt
//Tabellenspalten
var $email_id; // @var integer
var $person_id; // @var integer
var $email; // @var string
var $name; // @var string
var $typ; // @var integer
var $zustelladresse; // @var boolean
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
/**
* Konstruktor
* @param conn Connection zur Datenbank
* mail_id ID des zu ladenden Datensatzes
*/
function email($conn, $mail_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($mail_id != null)
$this->load($mail_id);
}
/**
* Laedt einen Datensatz
* @param mail_id ID des zu ladenden Datensatzes
*/
function load($mail_id)
{
//mail_id auf gueltigkeit pruefen
if(!is_numeric($mail_id) || $mail_id == '')
{
$this->errormsg = 'mail_id muss eine gueltige Zahl sein';
return false;
}
//laden des Datensatzes
$qry = "SELECT * FROM email WHERE email_pk='$mail_id';";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
if($row=pg_fetch_object($res))
{
$this->email_id = $row->email_pk;
$this->person_id = $row->person_fk;
$this->email = $row->email;
$this->name = $row->name;
$this->typ = $row->typ;
$this->zustelladresse = ($row->zustelladresse=='J'?true:false);
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
return true;
}
/**
* Laedt alle Datensaetze
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
/* Frisst zu viel Speicher und wird beendet
$qry = "SELECT * FROM email;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$mail_obj = new email($this->conn);
$mail_obj->email_id = $row->email_pk;
$mail_obj->person_id = $row->person_fk;
$mail_obj->email = $row->email;
$mail_obj->name = $row->name;
$mail_obj->typ = $row->typ;
$mail_obj->zustelladresse = ($row->zustelladresse=='J'?true:false);
$mail_obj->updateamum = $row->creationdate;
$mail_obj->updatevon = $row->creationuser;
$this->result[] = $mail_obj;
}
return true;
*/
return false;
}
/**
* Laedt alle Datensaetze zu einer person
* @param pers_id ID der Person zu der die Mails geladen werden sollen
* @return true wenn ok, false im Fehlerfall
*/
function load_pers($pers_id)
{
//pers_id auf gueltigkeit pruefen
if(!is_numeric($pers_id) || $pers_id == '')
{
$this->errormsg = 'pers_id muss eine gueltige Zahl sein';
return false;
}
//Datensaetze laden
$qry = "SELECT * FROM email WHERE person_fk='$pers_id';";
if(!$result = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($result))
{
$mail_obj = new email($this->conn);
$mail_obj->email_id = $row->email_pk;
$mail_obj->person_id = $row->person_fk;
$mail_obj->email = $row->email;
$mail_obj->name = $row->name;
$mail_obj->typ = $row->typ;
$mail_obj->zustelladresse = ($row->zustelladresse=='J'?true:false);
$mail_obj->updateamum = $row->creationdate;
$mail_obj->updatevon = $row->creationuser;
$this->result[] = $mail_obj;
}
return true;
}
/**
* Loescht einen Datensatz
* @param mail_id ID des zu leoschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($mail_id)
{
//mail_id auf gueltigkeit pruefen
if(!is_numeric($mail_id) || $mail_id == '')
{
$this->errormsg = 'mail_id muss eine gueltige Zahl sein';
return false;
}
$qry = "DELETE FROM email WHERE email_pk = '$mail_id';";
if(pg_query($this->conn,$qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim loeschen';
return false;
}
}
/**
* Prueft die variablen auf gueltigkeit
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
//Gesamtlaenge pruefen
if(strlen($this->name)>255)
{
$this->errormsg = 'Name darf nicht mehr als 255 Zeichen lang sein';
return false;
}
if(strlen($this->email)>255)
{
$this->errormsg = 'EMail darf nicht mehr als 255 Zeichen lang sein';
return false;
}
//Zahlenfelder pruefen
if(!is_numeric($this->person_id))
{
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($this->typ))
{
$this->errormsg = 'Typ muss eine gueltige Zahl sein';
return false;
}
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
* andernfalls wird der Datensatz mit der ID in $email_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
if(!$this->checkvars())
return false;
if($this->new)
{
//Neuen Datensatz anlegen
//Naechste ID aus Sequence holen
$qry = "SELECT nextval('email_seq') as id;";
if(!$row=pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim auslesen der ID aus der Sequence';
return false;
}
$this->email_id = $row->id;
$qry = "INSERT INTO email (email_pk, person_fk, name, email, typ, creationdate, creationuser, zustelladresse)".
" VALUES ('$this->email_id', '$this->person_id', '$this->name', '$this->email', '$this->typ', now(),".
" $this->updatevon, '".($this->zustelladresse?'J':'N')."');";
}
else
{
//Bestehenden Datensatz aktualisieren
//email_id auf gueltigkeit pruefen
if(!is_numeric($this->email_id) || $this->email_id == '')
{
$this->errormsg = 'email_id muss eine gueltige Zahl sein';
return false;
}
$qry = "UPDATE email SET person_fk = '$this->person_id', name = '$this->name', email = '$this->email',".
" typ = '$this->typ', zustelladresse = '".($this->zustelladresse?'J':'N')."' WHERE email_pk = '$this->email_id';";
}
if(pg_query($this->conn, $qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim speichern des Datensatzes';
return false;
}
}
}
?>
+127
View File
@@ -0,0 +1,127 @@
<?php
/**
* Klasse fachbereich (FAS-Online)
* @create 14-03-2006
*/
class fachbereich
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var fachbereich Objekt
//Tabellenspalten
var $fachbereich_id; // @var integer
var $erhalter_id; // @var integer
var $name; // @var string
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
/**
* Konstruktor
* @param $conn Connection zur DB
* $fachb_id ID des zu ladenden Fachbereiches
*/
function fachbereich($conn, $fachb_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($fachb_id != null)
$this->load($fachb_id);
}
/**
* Laedt alle verfuegbaren Fachbereiche
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = 'SELECT * FROM fachbereich order by name;';
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden der Datensaetze';
return false;
}
while($row = pg_fetch_object($res))
{
$fachb_obj = new fachbereich($this->conn);
$fachb_obj->fachbereich_id = $row->fachbereich_pk;
$fachb_obj->erhalter_id = $row->erhalter_fk;
$fachb_obj->name = $row->name;
$fachb_obj->updateamum = $row->creationdate;
$fachb_obj->updatevon = $row->creationuser;
$this->result[] = $fachb_obj;
}
return true;
}
/**
* Laedt einen Fachbereich
* @param $fachb_id ID des zu ladenden Fachbereiches
* @return true wenn ok, false im Fehlerfall
*/
function load($fachb_id)
{
if(!is_numeric($fachb_id) || $fachb_id == '')
{
$this->errormsg = 'fachb_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM fachbereich WHERE fachbereich_pk = '$fachb_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
if($row=pg_fetch_object($res))
{
$this->fachbereich_id = $row->fachbereich_pk;
$this->erhalter_id = $row->erhalter_fk;
$this->name = $row->name;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Loescht einen Datensatz
* @param $fachb_id id des Datensatzes der geloescht werden soll
* @return true wenn ok, false im Fehlerfall
*/
function delete($fachb_id)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
}
?>
+29
View File
@@ -0,0 +1,29 @@
<?php
/**
* Liefert die ID eines Studiensemesters aus der FAS Datenbank
* @param conn_fas Connection zur FAS Datenbank
* conn_vilesci Connection zur Vilesci Datenbank
* stsem Studiensemester im Format: 'WS2006', 'SS2006'
*/
function getStudiensemesterIdFromName($conn_fas, $stsem)
{
$qry = 'SELECT studiensemester_pk from studiensemester where art=';
if(substr($stsem,0,2)=='WS')
$qry .='1';
else
$qry .='2';
$qry .= ' AND jahr=';
$qry .= substr($stsem,2,4);
$stsem_id=0;
if($result=@pg_query($conn_fas,$qry))
if($row=pg_fetch_object($result))
$stsem_id=$row->studiensemester_pk;
else
echo pg_last_error($conn_fas);
return $stsem_id;
}
?>
+691
View File
@@ -0,0 +1,691 @@
<?php
/**
* Klasse funktionen (FAS-Online)
* Verwaltet die Funktionen der Mitarbeiter
* @create 07-03-2006
*/
class funktion
{
var $conn; // @var resource DB-Handle
var $errormsg; // @var string
var $new; // @var boolean
var $result = array(); // @var funktion Objekt
//vars fuer Tabellenspalten
var $funktion_id; // @var integer
var $mitarbeiter_id; // @var integer
var $studiensemester_id; // @var integer
var $erhalter_id; // @var integer
var $studiengang_id; // @var integer
var $fachbereich_id; // @var integer
var $name; // @var string
var $funktion; // @var integer ( 0 = Mitarbeiter, 1 = Lektor, 2 = Fachbereichskoordinatior, 3 = Assistenz,
// 4 = Rektor, 5 = Studiengangsleiter, 6 = Fachbereichsleiter)
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
var $beschart1; // @var integer ( 1 = Dienstverhaeltnis zum Bund, 2 = Dienstverhaeltnis zu einer anderen Gebietskoerperschaft,
// 3 = Echter Dienstvertrag, 4 = Freier Dienstvertrag, 5 = Lehre/Ausbildung, 6 = Sonstiges)
var $beschart2; // @var integer ( 1 = befristet, 2 = unbefristet)
var $verwendung; // @var integer
var $hauptberuflich; // @var boolean
var $hauptberuf; // @var integer
var $entwicklungsteam; // @var boolean
var $besonderequalifikation; // @var integer
var $sws; // @var float wird nicht verwendet
var $ausmass; // @var float ( 1 = Vollzeit, 2 = <=15 Wochenstd, 3 = 15-25 Wochenstd, 4 = 26-36 Wochenstd, 5 = Karenz)
var $status; // @var integer Aktstatus der Person (wird bei loeschen einer funktion gesetzt)
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $fkt_id Id der zu ladenden Funktion (Default=null)
*/
function funktion($conn, $fkt_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($fkt_id != null)
$this->load($fkt_id);
}
/**
* loescht die Funktion mit der uebergebenen ID
* @param $funktion_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($funktion_id)
{
//Pruefen ob funktion_id gueltig ist
if(is_numeric($funktion_id) && $funktion_id != '')
{
//Person ermitteln
$person_id=0;
$mitarbeiter_id=0;
$qry = "Select person_fk, mitarbeiter_pk from mitarbeiter join funktion on(mitarbeiter_pk=mitarbeiter_fk) where funktion_pk = $funktion_id";
if($row=pg_fetch_object(pg_query($this->conn,$qry)))
{
$person_id = $row->person_fk;
$mitarbeiter_id = $row->mitarbeiter_pk;
}
else
{
$this->errormsg = 'Fehler beim ermitteln der Person';
return false;
}
$qry = "DELETE FROM funktion WHERE funktion_pk=$funktion_id;";
$sql = $qry;
if(pg_query($this->conn,$qry))
{
//Neuen aktstatus ermitteln
$qry = "Select aktstatus from person where person_pk=$person_id";
if($row=pg_fetch_object(pg_query($this->conn,$qry)))
{
$aktstatus = $row->aktstatus;
if($aktstatus!=150) //wenn er nicht ausgeschieden ist
{
//Funktionen holen
$qry = "Select funktion from funktion where ".
"studiensemester_fk = (Select studiensemester_pk from studiensemester where aktuell='J')".
" AND mitarbeiter_fk = '$mitarbeiter_id'";
if($result = pg_query($this->conn, $qry))
{
$fkt=array();
$i=0;
while($row=pg_fetch_object($result))
{
$fkt[$i]=$row->funktion;
$i++;
}
//Aktstatus ermitteln
if(in_array(5,$fkt)) //STGL
$aktstatus = 104;
elseif(in_array(6,$fkt)) //FBL
$aktstatus = 103;
elseif(in_array(2,$fkt)) //FBK
$aktstatus = 102;
elseif(in_array(1,$fkt)) //LKT
$aktstatus = 101;
else
$aktstatus = 100; //Mitarbeiter
$this->status = $aktstatus;
//neuen akstatus setzen
$qry = "Update person set aktstatus = $aktstatus where person_pk = $person_id";
if(pg_query($qry))
{
//Log schreiben
$sql .= $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim setzen des Aktstatus';
return false;
}
}
}
else
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden des aktuellen Status';
return false;
}
}
else
{
$this->errormsg = 'Beim loeschen ist ein Fehler aufgetreten';
return false;
}
}
else
{
$this->errormsg = 'funktion_id muss eine gueltige Zahl sein';
return false;
}
}
/**
* Prueft die Variablen auf Gueltigkeit
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
//Hochkomma und HTML Tags ersetzen
//$this->name = htmlentities($this->name, ENT_QUOTES);
//Maximallaenge pruefen
$this->errormsg = 'Die Maximallaenge eines Feldes wurde ueberschritten';
if(strlen($this->name)>255) return false;
//Zahlenwerte ueberpruefen
/*
$this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen';
if(!is_numeric($this->funktion)) return false;
if(!is_numeric($this->beschart1)) return false;
if(!is_numeric($this->beschart2)) return false;
if(!is_numeric($this->verwendung)) return false;
if(!is_numeric($this->hauptberuf)) return false;
if(!is_numeric($this->sws)) $this->sws=0;
if(!is_numeric($this->ausmass)) return false;
if(!is_numeric($this->mitarbeiter_id)) return false;
if(!is_numeric($this->erhalter_id)) return false;
if(!is_numeric($this->studiengang_id)) return false;
if(!is_numeric($this->fachbereich_id)) return false;
if(!is_numeric($this->studiensemester_id)) return false;
if(!is_numeric($this->besonderequalifikation)) return false;
*/
$this->errormsg = '';
return true;
}
/**
* Speichert die Daten in die Datenbank
* @return true wenn OK, false im Fehlerfall
*/
function save()
{
if(!$this->checkvars())
return false;
//neuen aktstatus ermitteln
if($status=$this->getaktstatus())
$statusqry = "Update person SET aktstatus=$status where person_pk = (Select person_fk from mitarbeiter where mitarbeiter_pk='$this->mitarbeiter_id');";
else
$statusqry = "";
if($this->new)
{
//Naechste ID aus der Sequence holen
$qry = "SELECT nextval('funktion_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn,$qry)))
{
$this->errormsg = 'Sequence konnte nicht ausgelesen werden';
return false;
}
$this->funktion_id = $row->id;
$qry= $statusqry."INSERT INTO funktion (funktion_pk, mitarbeiter_fk, studiensemester_fk, erhalter_fk, studiengang_fk,".
" fachbereich_fk, name, funktion, creationdate, creationuser, beschart1, beschart2, verwendung,".
" hauptberuflich, hauptberuf, entwicklungsteam, besonderequalifikation, sws, ausmass) VALUES(".
" '$this->funktion_id','$this->mitarbeiter_id', '$this->studiensemester_id', '$this->erhalter_id',".
($this->studiengang_id!=''?" '$this->studiengang_id'":'null').",".
($this->fachbereich_id!=''?" '$this->fachbereich_id'":'null').",".
($this->name!=''?" '$this->name'":'null').",".
($this->funktion!=''?" '$this->funktion'":'null').", now(), $this->updatevon,".
($this->beschart1!=''?" '$this->beschart1'":'null').",".
($this->beschart2!=''?" '$this->beschart2'":'null').",".
($this->verwendung!=''?" '$this->verwendung'":'null').", '".($this->hauptberuflich?'J':'N')."',".
($this->hauptberuf!=''?" '$this->hauptberuf'":'null').", '".($this->entwicklungsteam?'J':'N')."',".
($this->besonderequalifikation!=''?" '$this->besonderequalifikation'":'null').", null,".
($this->ausmass!=''?" '$this->ausmass'":'null').")";
}
else
{
if(!is_numeric($this->mitarbeiter_id) && !is_numeric($this->funktion_id))
{
$this->errormsg = 'mitarbeiter_id und funktion_id muessen eine gueltige Zahl sein';
return false;
}
$qry= $statusqry. "UPDATE funktion SET ".
" studiensemester_fk=".($this->studiensemester_id!=''?"'$this->studiensemester_id'":'null').",".
" erhalter_fk=".($this->erhalter_id!=''?"'$this->erhalter_id'":'null').",".
" studiengang_fk=".($this->studiengang_id!=''?"'$this->studiengang_id'":'null').",".
" fachbereich_fk=".($this->fachbereich_id!=''?"'$this->fachbereich_id'":'null').",".
" name=".($this->name!=''?"'$this->name'":'null').",".
" funktion=".($this->funktion!=''?"'$this->funktion'":'null').",".
" beschart1=".($this->beschart1!=''?"'$this->beschart1'":'null').",".
" beschart2=".($this->beschart2!=''?"'$this->beschart2'":'null').",".
" verwendung=".($this->verwendung!=''?"'$this->verwendung'":'null').",".
" hauptberuflich='".($this->hauptberuflich?'J':'N')."',".
" hauptberuf=".($this->hauptberuf!=''?"'$this->hauptberuf'":'null').",".
" entwicklungsteam='".($this->entwicklungsteam?'J':'N')."',".
" besonderequalifikation=".($this->besonderequalifikation!=''?"'$this->besonderequalifikation'":'null').",".
" sws=".($this->sws!=''?"'$this->sws'":'null').",".
" ausmass=".($this->ausmass!=''?"'$this->ausmass'":'null').
" WHERE funktion_pk=$this->funktion_id"; // AND mitarbeiter_fk=$this->mitarbeiter_id";
}
if(pg_query($this->conn,$qry))
{
$qry = "UPDATE funktion SET hauptberuflich='".($this->hauptberuflich?'J':'N')."', hauptberuf=".($this->hauptberuf!=''?"'$this->hauptberuf'":'null')." WHERE mitarbeiter_fk ='$this->mitarbeiter_id' AND studiensemester_fk='$this->studiensemester_id'";
if(!pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler beim Updaten der Funktionen';
return false;
}
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten'.$qry;
return false;
}
}
/**
* Ermittelt den neuen aktstatus einer Person
*/
function getaktstatus()
{
$aktstatus=100;
//Aktuellen Status holen
$qry = "Select aktstatus from person join mitarbeiter on(person_fk=person_pk) where mitarbeiter_pk='".$this->mitarbeiter_id."'";
if($result = pg_query($this->conn,$qry))
{
if($row = pg_fetch_object($result))
$aktstatus = $row->aktstatus;
else
{
$this->errormsg = 'Fehler beim Laden des aktuellen Status';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des aktuellen Status';
return false;
}
/*
//Wenn die Funktion das aktuelle Studiensemester betrifft
$qry = "Select studiensemester_pk from studiensemester where aktuell='J'";
if($result = pg_query($this->conn,$qry))
{
if($row=pg_fetch_object($result))
{
if($row->studiensemester_pk == $this->studiensemester_id)
{
*/
//Neuen Status setzen
if($this->funktion == 1 && $aktstatus < 101) //Lektor
$aktstatus = 101;
elseif($this->funktion == 2 && $aktstatus < 102) //Fachbereichskoordinator
$aktstatus = 102;
elseif($this->funktion == 6 && $aktstatus < 103) //Fachbereichsleiter
$aktstatus = 103;
elseif($this->funktion == 5 && $aktstatus < 104) //Studiengangsleiter
$aktstatus = 104;
/* }
}
else
{
$this->errormsg = 'Fehler beim Laden des aktuellen Studiensemesters';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des aktuellen Studiensemesters';
return false;
}*/
$this->status = $aktstatus;
return $aktstatus;
}
/**
* Laedt eine Funktion aus der DB
* @param $fkt_id ID der zu ladenden Funktion
* @return true wenn erfolgreich geladen, false im Fehlerfall
*/
function load($fkt_id)
{
//Pruefen ob fkt_id gueltig ist
if(!is_numeric($fkt_id))
{
$this->errormsg = 'funktion_id muss eine Zahl sein';
return false;
}
$qry = "SELECT * FROM funktion WHERE funktion_pk=$fkt_id";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = pg_fetch_object($res))
{
$this->funktion_id = $row->funktion_pk;
$this->mitarbeiter_id = $row->mitarbeiter_fk;
$this->studiensemester_id = $row->studiensemester_fk;
$this->erhalter_id = $row->erhalter_fk;
$this->studiengang_id = $row->studiengang_fk;
$this->fachbereich_id = $row->fachbereich_fk;
$this->name = $row->name;
$this->funktion = $row->funktion;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
$this->beschart1 = $row->beschart1;
$this->beschart2 = $row->beschart2;
$this->verwendung = $row->verwendung;
$this->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
$this->hauptberuf = $row->hauptberuf;
$this->entwicklungsteam = ($row->entwicklungsteam=='J'?true:false);
$this->besonderequalifikation = $row->besonderequalifikation;
$this->sws = $row->sws;
$this->ausmass = $row->ausmass;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Laedt die Funktion(en) eines Mitarbeiters
* @param $ma_id ID des zu ladenden Mitarbeiters
* @return true wenn erfolgreich geladen, false im Fehlerfall
*/
function load_pers($ma_id, $stsem='')
{
//pruefen ob ma_id gueltig ist
if(!is_numeric($ma_id))
{
$this->errormsg = 'mitarbeiter_id muss eine Zahl sein';
return false;
}
$qry="SELECT * FROM funktion WHERE mitarbeiter_fk=$ma_id";
if($stsem!='')
$qry.= " AND studiensemester_fk='$stsem'";
$qry.=" ORDER BY studiensemester_fk DESC, funktion_pk";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$fkt_obj = new funktion($this->conn);
$fkt_obj->funktion_id = $row->funktion_pk;
$fkt_obj->mitarbeiter_id = $row->mitarbeiter_fk;
$fkt_obj->studiensemester_id = $row->studiensemester_fk;
$fkt_obj->erhalter_id = $row->erhalter_fk;
$fkt_obj->studiengang_id = $row->studiengang_fk;
$fkt_obj->fachbereich_id = $row->fachbereich_fk;
$fkt_obj->name = $row->name;
$fkt_obj->funktion = $row->funktion;
$fkt_obj->updateamum = $row->creationdate;
$fkt_obj->updatevon = $row->creationuser;
$fkt_obj->beschart1 = $row->beschart1;
$fkt_obj->beschart2 = $row->beschart2;
$fkt_obj->verwendung = $row->verwendung;
$fkt_obj->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
$fkt_obj->hauptberuf = $row->hauptberuf;
$fkt_obj->entwicklungsteam = ($row->entwicklungsteam=='J'?true:false);
$fkt_obj->besonderequalifikation = $row->besonderequalifikation;
$fkt_obj->sws = $row->sws;
$fkt_obj->ausmass = $row->ausmass;
$this->result[] = $fkt_obj;
}
return true;
}
function getMitarbeiter($stg,$fb,$funktion,$stsem=null)
{
$qry = "SELECT
mitarbeiter_fk
FROM
funktion
WHERE
studiengang_fk='$stg' AND
fachbereich_fk='$fb'
GROUP BY mitarbeiter_fk";
if($result = pg_query($this->conn,$qry))
{
while($row = pg_fetch_object($result))
{
$fkt = new funktion($this->conn);
$fkt->mitarbeiter_id = $row->mitarbeiter_fk;
$this->result[] = $fkt;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim laden der Mitarbeiter';
return false;
}
}
/**
* Laedt alle Funktionen
* @return true wenn erfolgreich geladen, false im Fehlerfall
*/
function getAll()
{
/*Eventuell Speicherprobleme
$qry = "SELECT * FROM funktion";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row=pg_fetch_object($res))
{
$fkt_obj = new funktion($this->conn);
$fkt_obj->funktion_id = $row->funktion_pk;
$fkt_obj->mitarbeiter_id = $row->mitarbeiter_fk;
$fkt_obj->studiensemester_id = $row->studiensemester_fk;
$fkt_obj->erhalter_id = $row->erhalter_fk;
$fkt_obj->studiengang_id = $row->studiengang_fk;
$fkt_obj->fachbereich_id = $row->fachbereich_fk;
$fkt_obj->name = $row->name;
$fkt_obj->funktion = $row->funktion;
$fkt_obj->updateamum = $row->creationdate;
$fkt_obj->updatevon = $row->creationuser;
$fkt_obj->beschart1 = $row->beschart1;
$fkt_obj->beschart2 = $row->beschart2;
$fkt_obj->verwendung = $row->verwendung;
$fkt_obj->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
$fkt_obj->hauptberuf = $row->hauptberuf;
$fkt_obj->entwicklungsteam = ($row->entwicklungsteam=='J'?true:false);
$fkt_obj->besonderequalifikation = $row->besonderequalifikation;
$fkt_obj->sws = $row->sws;
$fkt_obj->ausmass = $row->ausmass;
$this->result[] = $fkt_obj;
}
return true;
*/
return false;
}
function FunktionExists($mitarbeiter_id, $studiengang_id, $fachbereich_id, $studiensemester_id, $funktion)
{
$qry = "SELECT
count(*) as anzahl
FROM
funktion
WHERE
mitarbeiter_fk='$mitarbeiter_id' AND
studiengang_fk='$studiengang_id' AND
fachbereich_fk='$fachbereich_id' AND
studiensemester_fk = '$studiensemester_id' AND
funktion='$funktion'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
if($row->anzahl>0)
return true;
else
{
return false;
}
}
else
{
return false;
$this->errormsg = 'Fehler beim auslesen der Funktionen';
}
}
else
{
return false;
$this->errormsg = 'Fehler beim auslesen der Funktionen';
}
}
function getNameFunktion($id)
{
switch($id)
{
case 0: return 'Mitarbeiter';
case 1: return 'Lektor';
case 2: return 'Fachbereichskoordinatior';
case 3: return 'Assistenz';
case 4: return 'Rektor';
case 5: return 'Studiengangsleiter';
case 6: return 'Fachbereichsleiter';
default: return '';
}
}
function getNameBeschart1($id)
{
switch($id)
{
case 1: return 'Dienstverhältnis zum Bund';
case 2: return 'Dienstverhältnis zu einer anderen Gebietskörperschaft';
case 3: return 'Echter Dienstvertrag';
case 4: return 'Freier Dienstvertrag';
case 5: return 'Lehr- oder Ausbildungsverhältnis';
case 6: return 'Sonstiges Beschäftigungsverhältnis';
default: return '';
}
}
function getNameBeschart2($id)
{
switch($id)
{
case 1: return 'befristet';
case 2: return 'unbefristet';
default: return '';
}
}
function getNameVerwendung($id)
{
switch($id)
{
case 1: return 'Lehr- und Forschungspersonal';
case 2: return 'Lehr- und Forschungshilfspersonal';
case 3: return 'Akademische dienste für Studierende';
case 4: return 'Soziale Dienste und Gesundheitsdienste';
case 5: return 'Studiengangsleiter/in';
case 6: return 'Leiter/in FH-Kollegium';
case 7: return 'Management';
case 8: return 'Verwaltung';
case 9: return 'Hauspersonal, Gebäude-/Haustechnik';
default: return '';
}
}
function getNameHauptberuf($id)
{
switch($id)
{
case '': return '';
case 0: return 'Universität';
case 1: return 'Fachhochschule';
case 2: return 'Andere postsekundäre Bildungseinrichtung';
case 3: return 'Allgemeinbildende höhere Schule';
case 4: return 'Berufsbildende höhere Schule';
case 5: return 'Andere Schule';
case 6: return 'Öffentlicher Sektor';
case 7: return 'Unternehmenssektor';
case 8: return 'Freiberuflich tätig';
case 9: return 'Privater gemeinnütziger Sektor';
case 10: return 'Ausserhochschulische Forschungseinrichtung';
case 11: return 'Internationale Organisation';
case 12: return 'Sonstiges';
default: return '';
}
}
function getNameBesonderequalifikation($id)
{
switch($id)
{
case 0: return 'keine';
case 1: return 'Habilitation';
case 2: return 'der Habilitation gleichwertige Qualifikation';
case 3: return 'berufliche Tätigkeit';
default: return '';
}
}
function getNameAusmass($id)
{
switch($id)
{
case 1: return 'Vollzeit';
case 2: return '<= 15 Wochenstunden';
case 3: return '16 - 25 Wochenstunden';
case 4: return '26 - 35 Wochenstunden';
case 5: return 'Karenz';
default: return '';
}
}
}
?>
+202
View File
@@ -0,0 +1,202 @@
<?php
/**
* Klasse gruppe (FAS-Online)
* @create 15-03-2006
*/
class gruppe
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var gruppe Objekt
var $ausbildungssemester_id; // @var integer
var $gruppe_id; // @var integer
var $name; // @var string
var $nummerintern; // @var integer
var $obergruppe_id; // @var integer
var $ordnung; // @var integer
var $studiengang_id; // @var integer
var $typ; // @var integer ( Ebene ??)
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
var $fullname; // @var string
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $gruppe_id ID der zu ladenden Gruppe
*/
function gruppe($conn, $gruppe_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($gruppe_id != null)
$this->load($gruppe_id);
}
/**
* Laedt eine Gruppe
* @param gruppe_id ID der Gruppe
* @return true wenn ok, false im Fehlerfall
*/
function load($gruppe_id)
{
//gruppe_id auf gueltigkeit pruefen
if(!is_numeric($gruppe_id) || $gruppe_id =='')
{
$this->errormsg = 'gruppe_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM gruppe WHERE gruppe_pk='$gruppe_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
if($row = pg_fetch_object($res))
{
$this->ausbildungssemester_id = $row->ausbildungssemester_fk;
$this->gruppe_id = $row->gruppe_pk;
$this->name = $row->name;
$this->nummerintern = $row->nummerintern;
$this->obergruppe_id = $row->obergruppe_fk;
$this->ordnung = $row->ordnung;
$this->studiengang_id = $row->studiengang_fk;
$this->typ = $row->typ;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
$this->fullname = $this->getFullName($row->gruppe_pk);
}
else
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
return true;
}
/**
* Liefert den vollen namen einer Gruppe
* @param $gruppe_id
* @return voller name, false im Fehlerfall
*/
function getFullName($gruppe_id)
{
//gruppe_id auf gueltigkeit pruefen
if(!is_numeric($gruppe_id) || $gruppe_id == '')
{
$this->errormsg = 'gruppe_id muss eine gueltige Zahl sein';
return false;
}
//gesamten gruppennamen ermitteln
$qry = "SELECT fas_function_get_fullname_from_gruppe($gruppe_id) as fullname;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Gruppenname konnte nicht ermittelt werden';
return false;
}
return $row->fullname;
}
/**
* Laedt alle Gruppen eines Studienganges/studiensemesters/ausbildungssemesters
* @param studiengang_id ID des studienganges
* studiensemester_id ID des Studiensemesters (optional)
* ausbildungssemester_id ID des Ausbildungssemesters (optional)
* @return true wenn ok, false im Fehlerfall
*/
function load_gruppen($studiengang_id, $studiensemester_id=null, $ausbildungssemester_id=null)
{
//Pruefen ob gueltige Werte uebergeben wurden
if(!is_numeric($studiengang_id) || $studiengang_id == '')
{
$this->errormsg = 'studiengang_id muss eine gueltige Zahl sein';
return false;
}
if($studiensemester_id!=null && (!is_numeric($studiensemester_id) || $studiensemester_id == ''))
{
$this->errormsg = 'studiensemester_id muss eine gueltige Zahl sein';
return false;
}
if($ausbildungssemester_id!=null && (!is_numeric($ausbildungssemester_id) || $ausbildungssemester_id == ''))
{
$this->errormsg = 'ausbildungssemester_id muss eine gueltige Zahl sein';
return false;
}
//Befehl zusammenbauen
$qry = "SELECT * FROM gruppe WHERE studiengang_fk='$studiengang_id' ";
if($ausbildungssemester_id!=null)
$qry .= "AND ausbildungssemester_fk='$ausbildungssemester_id' ";
if($studiensemester_id != null)
$qry .= "AND studiensemester_fk='$studiensemester_id' ";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
//Daten laden
while($row = pg_fetch_object($res))
{
$grp_obj = new gruppe($this->conn);
$grp_obj->ausbildungssemester_id = $row->ausbildungssemester_fk;
$grp_obj->gruppe_id = $row->gruppe_pk;
$grp_obj->name = $row->name;
$grp_obj->nummerintern = $row->nummerintern;
$grp_obj->obergruppe_id = $row->obergruppe_fk;
$grp_obj->ordnung = $row->ordnung;
$grp_obj->studiengang_id = $row->studiengang_fk;
$grp_obj->typ = $row->typ;
$grp_obj->updateamum = $row->creationdate;
$grp_obj->updatevon = $row->creationuser;
$grp_obj->fullname = $this->getFullName($row->gruppe_pk);
$this->result[] = $grp_obj;
}
return true;
}
/**
* Speichert den aktuellen Datensatz in die DB
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Loescht einen Datensatz
* @param $gruppe_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($gruppe_id)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
}
?>
File diff suppressed because it is too large Load Diff
+131
View File
@@ -0,0 +1,131 @@
<?php
/**
* Klasse lehrform (FAS-Online)
* @create 15-03-2006
*/
class lehrform
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var lehrform Objekt
var $lehrform_id; // @var integer
var $bezeichnung; // @var string
var $kurzbezeichnung; // @var string
var $standardfaktor; // @var float
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
/**
* Konstruktor
* @param $conn Conection zur Datenbank
* $lehrform_id ID der zu Ladenden Lehrform
*/
function lehrform($conn, $lehrform_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($lehrform_id != null)
$this->load($lehrform_id);
}
/**
* Laedt einen Datensatz
* @param $lform_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function load($lform_id)
{
//pruefen ob lform_id eine gueltige Zahl ist
if(!is_numeric($lform_id) || $lform_id == '')
{
$this->errormsg = 'lehrform_id muss eine gueltige Zahl sein';
return false;
}
//Datensatz laden
$qry = "SELECT * FROM lehrform WHERE lehrform_pk = '$lform_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Der Datensatz konnte nicht geladen werden';
return false;
}
if($row = pg_fetch_object($res))
{
$this->lehrform_id = $row->lehrform_pk;
$this->bezeichnung = $row->bezeichnung;
$this->kurzbezeichnung = $row->kurzbezeichnung;
$this->standardfaktor = $row->standardfaktor;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Der Datensatz konnte nicht geladen werden';
return false;
}
return true;
}
/**
* Liefert alle lehrformen
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM lehrform;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Der Datensatz konnte nicht geladen werden';
return false;
}
while($row = pg_fetch_object($res))
{
$form_obj = new lehrform($this->conn);
$form_obj->lehrform_id = $row->lehrform_pk;
$form_obj->bezeichnung = $row->bezeichnung;
$form_obj->kurzbezeichnung = $row->kurzbezeichnung;
$form_obj->standardfaktor = $row->standardfaktor;
$form_obj->updateamum = $row->creationdate;
$form_obj->updatevon = $row->creationdate;
$this->result[] = $form_obj;
}
return true;
}
/**
* Loescht einen Datensatz
* @param lehrform_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($lehrform_id)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Speichert einen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
$this->errormsg = 'Noch nicht implemeniert';
return false;
}
}
?>
+124
View File
@@ -0,0 +1,124 @@
<?php
/**
* Klasse lehrfunktion (FAS-Online)
* @create 14-03-2006
*/
class lehrfunktion
{
var $conn; // @var resource DB-Connection
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var lehrfunktion Objekt
var $lehrfunktion_id; // @var integer
var $bezeichnung; // @var string
var $standardfaktor; // @var float
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
/**
* Konstruktor
* @param conn Connection zur DB
* lehrfkt_id ID der zu ladenden lehrfunktion
*/
function lehrfunktion($conn, $lehrfkt_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($lehrfkt_id != null)
$this->load($lehrfkt_id);
}
/**
* Laedt eine Lehrfunktion
* @param lehrfkt_id ID des Datensatzes der zu laden ist
* @return true wenn ok, false im Fehlerfall
*/
function load($lehrfkt_id)
{
if(!is_numeric($lehrfkt_id) || $lehrfkt_id == '')
{
$this->errormsg = 'lehrfunktion_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM lehrfunktion WHERE lehrfunktion_pk = '$lehrfkt_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
if($row = pg_fetch_object($res))
{
$this->lehrfunktion_id = $row->lehrfunktion_pk;
$this->bezeichnung = $row->bezeichnung;
$this->standardfaktor = $row->standardfaktor;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Laedt alle Lehrfunktionen
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM lehrfunktion;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden der Datensaetze';
return false;
}
while($row = pg_fetch_object($res))
{
$lehrfkt_obj = new lehrfunktion($this->conn);
$lehrfkt_obj->lehrfunktion_id = $row->lehrfunktion_id;
$lehrfkt_obj->bezeichnung = $row->bezeichnung;
$lehrfkt_obj->standardfaktor = $row->standardfaktor;
$lehrfkt_obj->updateamum = $row->creationdate;
$lehrfkt_obj->updatevon = $row->creationuser;
$this->result[] = $lehrfkt_obj;
}
return true;
}
/**
* Speichert den aktuellen Datensatz in die Datenbank
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Loescht den Datensatz mit der ID die uebergeben wird
* @param lehrfkt_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($lehrfkt_id)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
}
?>
+427
View File
@@ -0,0 +1,427 @@
<?php
/**
* Klasse lehrveranstaltung (FAS-Online)
* @create 16-03-2006
*/
class lehrveranstaltung
{
var $conn; // @var resource DB-Handle
var $errormsg; // @var string
var $new; // @var boolean
var $result = array(); // @var lehrveranstaltung Objekt
var $lehrveranstaltung_id; // @var integer
var $art; // @var integer
var $ausbildungssemester_id; // @var integer
var $beschreibung; // @var string
var $ectspunkte; // @var float
var $fachbereich_id; // @var integer
var $kategorie; // @var integer
var $kurzbezeichnung; // @var string
var $name; // @var string
var $notenlektor_id; // @var integer
var $nummer; // @var string
var $nummerintern; // @var integer
var $sortierung; // @var integer
var $studentenwochenstunden; // @var float
var $studiengang_id; // @var integer
var $studiensemester_id; // @var integer
var $updateamum=0; // @var timestamp
var $updatevon; // @var string
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $lehrveranstaltung_id ID der zu ladenden Lehrveranstaltung
*/
function lehrveranstaltung($conn, $lehrveranstaltung_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($lehrveranstaltung_id != null)
$this->load($lehrveranstaltung_id);
}
/**
* Laedt einen Datensatz
* @param $lehrveranstaltung_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function load($lehrveranstaltung_id)
{
//gueltigkeit von lehrveranstaltung_id pruefen
if(!is_numeric($lehrveranstaltung_id) || $lehrveranstaltung_id == '')
{
$this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM lehrveranstaltung WHERE lehrveranstaltung_pk = '$lehrveranstaltung_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
if($row = pg_fetch_object($res))
{
$this->lehrveranstaltung_id = $row->lehrveranstaltung_pk;
$this->art = $row->art;
$this->ausbildungssemester_id = $row->ausbildungssemester_fk;
$this->beschreibung = $row->beschreibung;
$this->ectspunkte = $row->ectspunkte;
$this->fachbereich_id = $row->fachbereich_fk;
$this->kategorie = $row->kategorie;
$this->kurzbezeichnung = $row->kurzbezeichnung;
$this->name = $row->name;
$this->notenlektor_id = $row->notenlektor_fk;
$this->nummer = $row->nummer;
$this->nummerintern = $row->nummerintern;
$this->sortierung = $row->sortierung;
$this->studentenwochenstunden = $row->studentenwochenstunden;
$this->studiengang_id = $row->studiengang_fk;
$this->studiensemester_id = $row->studiensemester_fk;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
return true;
}
/**
* Liefert alle Lehrveranstaltungen
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM lehrveranstaltung;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while($row = pg_fetch_object($res))
{
$lv_obj = new lehrveranstaltung($this->conn);
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_pk;
$lv_obj->art = $row->art;
$lv_obj->ausbildungssemester_id = $row->ausbildungssemester_fk;
$lv_obj->beschreibung = $row->beschreibung;
$lv_obj->ectspunkte = $row->ectspunkte;
$lv_obj->fachbereich_id = $row->fachbereich_fk;
$lv_obj->kategorie = $row->kategorie;
$lv_obj->kurzbezeichnung = $row->kurzbezeichnung;
$lv_obj->name = $row->name;
$lv_obj->notenlektor_id = $row->notenlektor_fk;
$lv_obj->nummer = $row->nummer;
$lv_obj->nummerintern = $row->nummerintern;
$lv_obj->sortierung = $row->sortierung;
$lv_obj->studentenwochenstunden = $row->studentenwochenstunden;
$lv_obj->studiengang_id = $row->studiengang_fk;
$lv_obj->studiensemester_id = $row->studiensemester_fk;
$lv_obj->updateamum = $row->creationdate;
$lv_obj->updatevon = $row->creationuser;
$this->result[] = $lv_obj;
}
return true;
}
/**
* Liefert alle Lehrveranstaltungen zu einem Studiengang/Studiensemester/Ausbildungssemester
* @param $studiengang_id ID des Studienganges
* $studiensemester_id ID des Studiensemesters (optional)
* $ausbildungssemester_id ID des ausbildungssemesters (optional)
* @return true wenn ok, false im Fehlerfall
*/
function load_lva($studiengang_id, $studiensemester_id=null, $ausbildungssemester_id=null)
{
//Variablen pruefen
if(!is_numeric($studiengang_id) || $studiengang_id =='')
{
$this->errormsg = 'studiengang_id muss eine gueltige Zahl sein';
return false;
}
if($studiensemester_id != null && (!is_numeric($studiensemester_id) || $studiensemester_id == ''))
{
$this->errormsg = 'studiensemester_id muss eine gueltige Zahl sein';
return false;
}
if($ausbildungssemester_id != null && (!is_numeric($ausbildungssemester_id) || $ausbildungssemester_id == ''))
{
$this->errormsg = 'ausbildungssemester_id muss eine gueltige Zahl sein';
return false;
}
//Select Befehl zusammenbauen
$qry = "SELECT * FROM lehrveranstaltung WHERE studiengang_fk = '$studiengang_id'";
if($studiensemester_id != null)
$qry .= " AND studiensemester_fk = '$studiensemester_id'";
if($ausbildungssemester_id != null)
$qry .= " AND ausbildungssemester_fk = '$ausbildungssemester_id'";
$qry .= " ORDER BY name";
//Datensaetze laden
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while($row = pg_fetch_object($res))
{
$lv_obj = new lehrveranstaltung($this->conn);
$lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_pk;
$lv_obj->art = $row->art;
$lv_obj->ausbildungssemester_id = $row->ausbildungssemester_fk;
$lv_obj->beschreibung = $row->beschreibung;
$lv_obj->ectspunkte = $row->ectspunkte;
$lv_obj->fachbereich_id = $row->fachbereich_fk;
$lv_obj->kategorie = $row->kategorie;
$lv_obj->kurzbezeichnung = $row->kurzbezeichnung;
$lv_obj->name = $row->name;
$lv_obj->notenlektor_id = $row->notenlektor_fk;
$lv_obj->nummer = $row->nummer;
$lv_obj->nummerintern = $row->nummerintern;
$lv_obj->sortierung = $row->sortierung;
$lv_obj->studentenwochenstunden = $row->studentenwochenstunden;
$lv_obj->studiengang_id = $row->studiengang_fk;
$lv_obj->studiensemester_id = $row->studiensemester_fk;
$lv_obj->updateamum = $row->creationdate;
$lv_obj->updatevon = $row->creationuser;
$this->result[] = $lv_obj;
}
return true;
}
/**
* Prueft die Gueltigkeit der Variablen
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
$this->name = str_replace("'",'´',$this->name);
$this->nummer = str_replace("'",'´',$this->nummer);
$this->kurzbezeichnung = str_replace("'",'´',$this->kurzbezeichnung);
//Laenge Pruefen
$this->errormsg = 'Eine der Gesamtlaengen wurde ueberschritten';
if(strlen($this->name)>255)
{
$this->errormsg = 'Name darf nicht laenger als 255 Zeichen sein';
return false;
}
if(strlen($this->nummer)>20)
{
$this->errormsg = 'Nummer darf nicht laenger als 20 Zeichen sein';
return false;
}
if(strlen($this->kurzbezeichnung)>20)
{
$this->errormsg = 'kurzbezeichnung darf nicht laenger als 20 Zeichen sein';
return false;
}
if(!is_numeric($this->fachbereich_id))
{
$this->errormsg = 'Fachbereich_id ist ungueltig';
return false;
}
if(!is_numeric($this->studiengang_id))
{
$this->errormsg = 'Studiengang_id ist ungueltig';
return false;
}
if(!is_numeric($this->ausbildungssemester_id))
{
$this->errormsg = 'Ausbildungssemester_id ist ungueltig';
return false;
}
if($this->art!='' && !is_numeric($this->art))
{
$this->errormsg = 'Art ist ungueltig';
return false;
}
if($this->studentenwochenstunden!='' && !is_numeric($this->studentenwochenstunden))
{
$this->errormsg = 'Studentenwochenstunden ist ungueltig';
return false;
}
if($this->kategorie!='' && !is_numeric($this->kategorie))
{
$this->errormsg = "Kategorie ist ungueltig";
return false;
}
if($this->ectspunkte!='' && !is_numeric($this->ectspunkte))
{
$this->errormsg = 'ECTSPunkte sind ungueltig';
return false;
}
if($this->notentlektor_id!='' && !is_numeric($this->notenlektor_id))
{
$this->errormsg = 'Notenlektor ist ungueltig';
return false;
}
if($this->sortierung!='' && !is_numeric($this->sortierung))
{
$this->errormsg = 'Sortierung ist ungueltig';
return false;
}
if($this->nummerintern!='' && !is_numeric($this->nummerintern))
{
$this->errormsg = 'NummerIntern ist ungueltig';
return false;
}
if(!is_numeric($this->studiensemester_id))
{
$this->errormsg = 'Studiensemester_id ist ungueltig';
return false;
}
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
//Gueltigkeit der Variablen pruefen
if(!$this->checkvars())
return false;
if($this->new)
{
//Neuen Datensatz anlegen
//naechste ID aus der Sequence holen
$qry = "SELECT nextval('lehrveranstaltung_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Sequence konnte nicht ausgelesen werden';
return false;
}
$this->lehrveranstaltung_id = $row->id;
$qry = "INSERT INTO lehrveranstaltung(lehrveranstaltung_pk, fachbereich_fk, studiengang_fk, ausbildungssemester_fk,".
" name, nummer, kurzbezeichnung, beschreibung, art, studentenwochenstunden, creationdate, creationuser,".
" kategorie, ectspunkte, studiensemester_fk, notenlektor_fk, sortierung, nummerintern) VALUES(".
" '$this->lehrveranstaltung_id', '$this->fachbereich_id', '$this->studiengang_id', '$this->ausbildungssemester_id',".
" '$this->name', '$this->nummer', '$this->kurzbezeichnung', '$this->beschreibung', '$this->art',".
" '$this->studentenwochenstunden', now(), $this->updatevon, '$this->kategorie', '$this->ectspunkte', '$this->studiensemester_id',".
" '$this->notenlektor_id', '$this->sortierung', '$this->nummerintern');";
}
else
{
//bestehenden Datensatz akualisieren
//Pruefen ob lehrveranstaltung_id eine gueltige Zahl ist
if(!is_numeric($this->lehrveranstaltung_id) || $this->lehrveranstaltung_id == '')
{
$this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = "UPDATE lehrveranstaltung SET fachbereich_fk = '$this->fachbereich_id', studiengang_fk = '$this->studiengang_id',".
" ausbildungssemester_fk = '$this->ausbildungssemester_id', name = '$this->name', nummer = '$this->nummer',".
" kurzbezeichnung = '$this->kurzbezeichnung', beschreibung = '$this->beschreibung', art = '$this->art',".
" studentenwochenstunden = '$this->studentenwochenstunden', kategorie = '$this->kategorie', ".
" ectspunkte = '$this->ectspunkte', studiensemester_fk = '$this->studiensemester_id',".
" notenlektor_fk = '$this->notenlektor_id', sortierung = '$this->sortierung', nummerintern = '$this->nummerintern'".
" WHERE lehrveranstaltung_pk = '$this->lehrveranstaltung_id';";
}
if(pg_query($this->conn, $qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim speichern des Datensatzes';
return false;
}
}
/**
* Loescht einen Datensatz
* @param $lehrveranstaltung_id ID des zu loeeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($lehrveranstaltung_id)
{
//lehrveranstaltung_id auf gueltigkeit pruefen
if(!is_numeric($lehrveranstaltung_id) || $lehrveranstaltung_id == '')
{
$this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
//Loeschen des Datensatzes
$qry = "DELETE FROM lehrveranstaltung WHERE lehrveranstaltung_pk = '$lehrveranstaltung_id';";
if(pg_query($this->conn, $qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim loeschen des Datensatzes';
return false;
}
}
}
?>
+742
View File
@@ -0,0 +1,742 @@
<?php
/**
* Klasse Mitarbeiter abgeleitet von Person (FAS-Online)
* @create 06-03-2006
*/
class mitarbeiter extends person
{
//Tabellenspalten
var $mitarbeiter_id; // @var bigint
var $beginndatum; // @var timestamp
var $akadgrad; // @var boolean
var $akadgrad_bezeichnung; // @var boolean
var $habilitation; // @var boolean
var $mitgliedentwicklungsteam; // @var boolean
var $qualifikation; // @var integer
var $hauptberuflich; // @var boolean
var $hauptberuf; // @var integer
var $semesterwochenstunden; // @var float
var $persnr; // @var string
var $beendigungsdatum; // @var timestamp
var $ausgeschieden; // @var boolean
var $ausgeschieden_bezeichnung; // @var string
var $kurzbez; // @var string
var $stundensatz; // @var float
var $ausbildung; // @var integer
var $ausbildung_bezeichnung; // @var string
var $aktiv; // @var boolean
var $aktiv_bezeichnung; // @var boolean
var $zustelladresse_plz;
var $zustelladresse_strasse;
var $zustelladresse_ort;
/**
* Konstruktor
*/
function mitarbeiter($conn, $person_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
//Mitarbeiter laden
if($person_id!=null)
$this->load($person_id);
}
/**
* ueberprueft die Variablen auf Gueltigkeit
* @return true wenn gueltig, false im Fehlerfall
*/
function checkvars()
{
//Hochkomma herausfiltern
$this->persnr = str_replace("'","`", $this->persnr);
$this->kurzbez = str_replace("'","`", $this->kurzbez);
//Maximallaenge pruefen
$this->errormsg='Die Maximallaenge eines Feldes wurde ueberschritten';
if(strlen($this->persnr)>20)
{
$this->errormsg='PersonalNr darf nicht länger als 20 Zeichen sein';
return false;
}
if(strlen($this->kurzbez)>10)
{
$this->errormsg="Kurzbezeichnung darf nicht länger als 10 Zeichen sein:".strlen($this->kurzbez);
return false;
}
//Zahlenwerte ueberpruefen
$this->errormsg='Ein Zahlenfeld enthaelt ungueltige Zeichen';
//if(!is_numeric($this->qualifikation)) return false;
//if(!is_numeric($this->hauptberuf)) return false;
if(!is_numeric($this->stundensatz) && $this->stundensatz!='')
{
$this->errormsg='Stundensatz muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($this->ausbildung) && $this->ausbildung!='')
{
$this->errormsg='ausbildung muss eine gueltige Zahl sein';
return false;
}
/*if(!is_numeric($this->semesterwochenstunden))
{
$this->errormsg='SWS muss eine gueltige Zahl sein';
return false;
}*/
if($this->kurzbz_exists($this->kurzbez, $this->mitarbeiter_id))
{
$this->errormsg = 'Diese Kurzbezeichnung wird bereits verwendet';
return false;
}
$this->errormsg = '';
return true;
}
/**
* Speichert die Mitarbeiterdaten in die Datenbank
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
//Variablen checken
if(!$this->checkvars())
return false;
pg_query($this->conn,"Begin;");
//Basisdaten speichern
if(!person::save())
{
pg_query($this->conn,"Rollback;");
return false;
}
if($this->new)
{
//Neuen Datensatz einfuegen
//naechste ID aus Sequence auslesen
$qry = "SELECT nextval('mitarbeiter_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn,$qry)))
{
$this->errormsg = 'Fehler beim auslesen der Sequence';
return false;
}
$this->mitarbeiter_id = $row->id;
$qry = "INSERT INTO mitarbeiter (mitarbeiter_pk, beginndatum, akadgrad, habilitation,".
//" mitgliedentwicklungsteam,".
//" qualifikation, hauptberuflich, hauptberuf, semesterwochenstunden,".
" creationdate, creationuser, persnr,".
" person_fk, beendigungsdatum, ausgeschieden, kurzbez, stundensatz, ausbildung, aktiv) VALUES (".
" '$this->mitarbeiter_id',".
(strlen($this->beginndatum)>0?"'$this->beginndatum'":"NULL") .", '".($this->akadgrad?'J':'N')."',".
" '".($this->habilitation?'J':'N')."', ".
//"'".($this->mitgliedentwicklungsteam?'J':'N')."',".
//" '$this->qualifikation', '".($this->hauptberuflich?'J':'N')."', '$this->hauptberuf', '$this->semesterwochenstunden',".
" now(),".
" '$this->updatevon', '$this->persnr', '$this->person_id',".
(strlen($this->beendigungsdatum)>0?"'$this->beendigungsdatum'":"null").",".
" '".($this->ausgeschieden?'J':'N')."',".
(strlen($this->kurzbez)>0?"'$this->kurzbez'":"null").", '$this->stundensatz',".
($this->ausbildung!=''?"'$this->ausbildung'":'null').",'$this->aktiv');";
}
else
{
//Bestehenden Datensatz ueberschreiben
//mitarbeiter_id auf Gueltigkeit pruefen
if(!is_numeric($this->mitarbeiter_id))
{
$this->errormsg = 'mitarbeiter_id muss eine gueltige Zahl sein';
return false;
}
$qry = "UPDATE mitarbeiter SET".
" beginndatum=".($this->beginndatum!=''?"'$this->beginndatum'":'null').",".
" akadgrad='".($this->akadgrad?'J':'N')."',".
" habilitation='".($this->habilitation?'J':'N')."',".
//" mitgliedentwicklungsteam='".($this->mitgliedentwicklungsteam?'J':'N')."',".
//" qualifikation='$this->qualifikation', hauptberuflich='".($this->hauptberuflich?'J':'N')."',".
//" hauptberuf='$this->hauptberuf', semesterwochenstunden='$this->semesterwochenstunden',".
" persnr=".($this->persnr!=''?"'$this->persnr'":'null').",".
" person_fk='$this->person_id',".
" beendigungsdatum=".($this->beendigungsdatum!=''?"'$this->beendigungsdatum'":'null').",".
" ausgeschieden='".($this->ausgeschieden?'J':'N')."',".
" kurzbez=".($this->kurzbez!=''?"'$this->kurzbez'":'null').",".
" stundensatz=".($this->stundensatz!=''?"'$this->stundensatz'":'null').",".
" ausbildung=".($this->ausbildung!=''?"'$this->ausbildung'":'null').",".
" aktiv='$this->aktiv'".
" WHERE mitarbeiter_pk=$this->mitarbeiter_id;";
}
if(pg_query($this->conn,$qry))
{
//Wenn nicht ausgeschieden dann den Status neu setzen
//Da sonst beim ruecksetzen des Hakerls ausgeschieden der status bleibt
if(!$this->ausgeschieden)
{
if(!person::updateaktstatus($this->person_id))
{
pg_query($this->conn,"Rollback;");
return false;
}
}
else
{
if(!person::setaktstatus(150,$this->person_id))
{
pg_query($this->conn,"Rollback;");
return false;
}
}
pg_query($this->conn,"Commit;");
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
pg_query($this->conn,"Rollback;");
$this->errormsg = 'Fehler beim Speichern des Mitarbeiter-Datensatzes';
return false;
}
}
/**
* Ladet die Daten aus der Datenbank
* @param $fix wenn 'true' Fixangestellte laden
* wenn 'false' Freie MA laden
* $stgl wenn 'true' Studiengangsleiter laden
* $fbl wenn 'true' Fachbereichsleiter laden
* $aktiv wenn 'true' Aktive MA laden
* $karrenziert wenn 'true' Karenzierte laden
* $ausgesch wenn 'true' Ausgeschiedene laden
* @return true wenn ok, false im Fehlerfall
*/
function getMitarbeiter($mitarbeiter_id='', $fix='', $stgl='', $fbl='', $aktiv='', $karenziert='', $ausgesch='', $adresse=false, $studiensemester_id='')
{
$qry = "SELECT * FROM (mitarbeiter JOIN person ON (person_pk=mitarbeiter.person_fk))";
if($adresse)
$qry .= " LEFT JOIN adresse on(person_pk=adresse.person_fk)";
$qry .= " WHERE true";
if($mitarbeiter_id!='')
if(is_numeric($mitarbeiter_id))
$qry .= " AND mitarbeiter_pk = $mitarbeiter_id";
else
{
$this->errormsg = "mitarbeiter_id muss eine gueltige Zahl sein";
return false;
}
if($studiensemester_id=='')
{
$query = "Select studiensemester_pk FROM studiensemester WHERE aktuell='J'";
if($row = pg_fetch_object(pg_query($this->conn, $query)))
$studiensemester_id = $row->studiensemester_pk;
}
if($fix=='true') // Alle Fixangestellten
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.beschart1=3 AND funktion.studiensemester_fk='$studiensemester_id')";
if($fix=='false') // Freie Mitarbeiter
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.beschart1=4 AND funktion.studiensemester_fk='$studiensemester_id')";
if($stgl=='true') //Alle Studiengangsleiter
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.funktion=5 AND funktion.studiensemester_fk='$studiensemester_id')";
if($fbl=='true') //Alle Fachbereichsleiter
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.funktion=6 AND funktion.studiensemester_fk='$studiensemester_id')";
if($aktiv=='true') //Alle aktiven
$qry .= " AND aktiv=true";
if($karenziert=='true') //Alle Karenzierten
$qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.ausmass=5 AND funktion.studiensemester_fk='$studiensemester_id')";
if($ausgesch=='true') // Alle Ausgeschiedenen
$qry .= " AND beendigungsdatum is not null";
$qry .= " ORDER BY familienname";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$mitarb = new mitarbeiter($this->conn);
//Personendaten
$mitarb->person_id = $row->person_pk;
$mitarb->familienname = $row->familienname;
$mitarb->angelegtam = $row->angelegtam;
$mitarb->vorname = $row->vorname;
$mitarb->anrede = $row->anrede;
$mitarb->vornamen = $row->vornamen;
$mitarb->geschlecht = $row->geschlecht;
$mitarb->gebdat = $row->gebdat;
$mitarb->gebort = $row->gebort;
$mitarb->staatsbuergerschaft = $row->staatsbuergerschaft;
$mitarb->familienstand = $row->familienstand;
$mitarb->familienstand_bezeichnung = $this->getFamilienstandBezeichnung($row->familienstand);
$mitarb->svnr = $row->svnr;
$mitarb->anzahlderkinder = $row->anzahlderkinder;
$mitarb->ersatzkennzeichen = $row->ersatzkennzeichen;
$mitarb->bemerkung = $row->bemerkung;
$mitarb->aktstatus = $row->aktstatus;
$mitarb->aktstatus_bezeichnung = $this->getAktstatusBezeichnung($row->aktstatus);
$mitarb->bismelden = ($row->bismelden=='J'?true:false);
$mitarb->bismelden_bezeichnung = ($row->bismelden=='J'?'Ja':'Nein');
$mitarb->titelpre = $row->titel;
$mitarb->titelpost = $row->postnomentitel;
$mitarb->uid = $row->uid;
$mitarb->gebnation = $row->gebnation;
//Mitarbeiterdaten
$mitarb->mitarbeiter_id = $row->mitarbeiter_pk;
$mitarb->beginndatum = $row->beginndatum;
$mitarb->akadgrad = ($row->akadgrad=='J'?true:false);
$mitarb->akadgrad_bezeichnung = ($row->akadgrad=='J'?'Ja':'Nein');
$mitarb->habilitation = ($row->habilitation=='J'?true:false);
$mitarb->habilitation_bezeichnung = ($row->habilitation=='J'?'Ja':'Nein');
$mitarb->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false);
$mitarb->qualifikation = $row->qualifikation;
$mitarb->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
$mitarb->hauptberuf = $row->hauptberuf;
$mitarb->updateamum = $row->creationdate;
$mitarb->updatevon = $row->creationuser;
$mitarb->semesterwochenstunden = $row->semesterwochenstunden;
$mitarb->persnr = $row->persnr;
$mitarb->beendigungsdatum = $row->beendigungsdatum;
$mitarb->ausgeschieden = ($row->ausgeschieden=='J'?true:false);
$mitarb->ausgeschieden_bezeichnung = ($row->ausgeschieden=='J'?'Ja':'Nein');
$mitarb->kurzbez = $row->kurzbez;
$mitarb->stundensatz = $row->stundensatz;
$mitarb->ausbildung = $row->ausbildung;
$mitarb->ausbildung_bezeichnung = $this->getAusbildungBezeichnung($row->ausbildung);
$mitarb->aktiv = ($row->aktiv=='t'?true:false);
$mitarb->aktiv_bezeichnung = ($row->aktiv=='t'?'Ja':'Nein');
if($adresse)
{
$mitarb->zustelladresse_plz = $row->plz;
$mitarb->zustelladresse_strasse = $row->strasse;
$mitarb->zustelladresse_ort = $row->ort;
}
$this->result[] = $mitarb;
}
return true;
}
/**
* Liefert alle Mitarbeiter
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "Select person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ".
"familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ".
"mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ".
"mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ".
"kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk)";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$mitarb = new mitarbeiter($this->conn);
//Personendaten
$mitarb->person_id = $row->person_pk;
$mitarb->familienname = $row->familienname;
$mitarb->angelegtam = $row->angelegtam;
$mitarb->vorname = $row->vorname;
$mitarb->anrede = $row->anrede;
$mitarb->vornamen = $row->vornamen;
$mitarb->geschlecht = $row->geschlecht;
$mitarb->gebdat = $row->gebdat;
$mitarb->gebort = $row->gebort;
$mitarb->staatsbuergerschaft = $row->staatsbuergerschaft;
$mitarb->familienstand = $row->familienstand;
$mitarb->svnr = $row->svnr;
$mitarb->anzahlderkinder = $row->anzahlderkinder;
$mitarb->ersatzkennzeichen = $row->ersatzkennzeichen;
$mitarb->bemerkung = $row->bemerkung;
$mitarb->aktstatus = $row->aktstatus;
$mitarb->bismelden = ($row->bismelden=='J'?true:false);
$mitarb->titelpre = $row->titel;
$mitarb->titelpost = $row->postnomentitel;
$mitarb->uid = $row->uid;
$mitarb->gebnation = $row->gebnation;
//Mitarbeiterdaten
$mitarb->mitarbeiter_id = $row->mitarbeiter_pk;
$mitarb->beginndatum = $row->beginndatum;
$mitarb->akadgrad = ($row->akadgrad=='J'?true:false);
$mitarb->habilitation = ($row->habilitation=='J'?true:false);
$mitarb->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false);
$mitarb->qualifikation = $row->qualifikation;
$mitarb->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
$mitarb->hauptberuf = $row->hauptberuf;
$mitarb->updateamum = $row->creationdate;
$mitarb->updatevon = $row->creationuser;
$mitarb->semesterwochenstunden = $row->semesterwochenstunden;
$mitarb->persnr = $row->persnr;
$mitarb->beendigungsdatum = $row->beendigungsdatum;
$mitarb->ausgeschieden = ($row->ausgeschieden=='J'?true:false);
$mitarb->kurzbez = $row->kurzbez;
$mitarb->stundensatz = $row->stundensatz;
$mitarb->ausbildung = $row->ausbildung;
$mitarb->aktiv = ($row->aktiv=='t'?true:false);
$this->result[] = $mitarb;
}
return true;
}
/**
* Laedt die Mitarbeiterdaten der uebergebenen ID
* @param $person_id ID der Person die geladen werden soll
* @return true wenn ok, false im Fehlerfall
*/
function load($person_id)
{
//person_id auf Gueltigkeit pruefen
if(!is_numeric($person_id) || $person_id=='')
{
$this->errormsg = 'Person_id muss eine Zahl sein';
return false;
}
$qry = "SELECT person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ".
"familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ".
"mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ".
"mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ".
"kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk) where person_pk=$person_id";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = pg_fetch_object($res))
{
//Personendaten
$this->person_id = $row->person_pk;
$this->familienname = $row->familienname;
$this->angelegtam = $row->angelegtam;
$this->vorname = $row->vorname;
$this->anrede = $row->anrede;
$this->vornamen = $row->vornamen;
$this->geschlecht = $row->geschlecht;
$this->gebdat = $row->gebdat;
$this->gebort = $row->gebort;
$this->staatsbuergerschaft = $row->staatsbuergerschaft;
$this->familienstand = $row->familienstand;
$this->svnr = $row->svnr;
$this->anzahlderkinder = $row->anzahlderkinder;
$this->ersatzkennzeichen = $row->ersatzkennzeichen;
$this->bemerkung = $row->bemerkung;
$this->aktstatus = $row->aktstatus;
$this->bismelden = ($row->bismelden=='J'?true:false);
$this->titelpre = $row->titel;
$this->titelpost = $row->postnomentitel;
$this->uid = $row->uid;
$this->gebnation = $row->gebnation;
//Mitarbeiterdaten
$this->mitarbeiter_id = $row->mitarbeiter_pk;
$this->beginndatum = $row->beginndatum;
$this->akadgrad = ($row->akadgrad=='J'?true:false);
$this->habilitation = ($row->habilitation=='J'?true:false);
$this->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false);
$this->qualifikation = $row->qualifikation;
$this->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
$this->hauptberuf = $row->hauptberuf;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
$this->semesterwochenstunden = $row->semesterwochenstunden;
$this->persnr = $row->persnr;
$this->beendigungsdatum = $row->beendigungsdatum;
$this->ausgeschieden = ($row->ausgeschieden=='J'?true:false);
$this->kurzbez = $row->kurzbez;
$this->stundensatz = $row->stundensatz;
$this->ausbildung = $row->ausbildung;
$this->aktiv = ($row->aktiv=='t'?true:false);
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Laedt die Mitarbeiterdaten der uebergebenen ID
* @param $mitarbeiter_id ID der Person die geladen werden soll
* @return true wenn ok, false im Fehlerfall
*/
function load_mitarbeiter($mitarbeiter_id)
{
//person_id auf Gueltigkeit pruefen
if(!is_numeric($mitarbeiter_id) || $mitarbeiter_id=='')
{
$this->errormsg = 'Person_id muss eine Zahl sein';
return false;
}
$qry = "SELECT person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ".
"familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ".
"mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ".
"mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ".
"kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk) where mitarbeiter_pk=$mitarbeiter_id";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = pg_fetch_object($res))
{
//Personendaten
$this->person_id = $row->person_pk;
$this->familienname = $row->familienname;
$this->angelegtam = $row->angelegtam;
$this->vorname = $row->vorname;
$this->anrede = $row->anrede;
$this->vornamen = $row->vornamen;
$this->geschlecht = $row->geschlecht;
$this->gebdat = $row->gebdat;
$this->gebort = $row->gebort;
$this->staatsbuergerschaft = $row->staatsbuergerschaft;
$this->familienstand = $row->familienstand;
$this->svnr = $row->svnr;
$this->anzahlderkinder = $row->anzahlderkinder;
$this->ersatzkennzeichen = $row->ersatzkennzeichen;
$this->bemerkung = $row->bemerkung;
$this->aktstatus = $row->aktstatus;
$this->bismelden = ($row->bismelden=='J'?true:false);
$this->titelpre = $row->titel;
$this->titelpost = $row->postnomentitel;
$this->uid = $row->uid;
$this->gebnation = $row->gebnation;
//Mitarbeiterdaten
$this->mitarbeiter_id = $row->mitarbeiter_pk;
$this->beginndatum = $row->beginndatum;
$this->akadgrad = ($row->akadgrad=='J'?true:false);
$this->habilitation = ($row->habilitation=='J'?true:false);
$this->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false);
$this->qualifikation = $row->qualifikation;
$this->hauptberuflich = ($row->hauptberuflich=='J'?true:false);
$this->hauptberuf = $row->hauptberuf;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
$this->semesterwochenstunden = $row->semesterwochenstunden;
$this->persnr = $row->persnr;
$this->beendigungsdatum = $row->beendigungsdatum;
$this->ausgeschieden = ($row->ausgeschieden=='J'?true:false);
$this->kurzbez = $row->kurzbez;
$this->stundensatz = $row->stundensatz;
$this->ausbildung = $row->ausbildung;
$this->aktiv = ($row->aktiv=='t'?true:false);
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* loescht den Mitarbeiter mit der uebergebenen ID
* @param ma_id Mitarbeiter_id
* @return true wenn ok, false im Fehlerfall
*/
function delete($person_id)
{
//person_id auf Gueltigkeit pruefen
if(!is_numeric($person_id) || $person_id=='')
{
$this->errormsg = 'Person_id muss eine Zahl sein';
return false;
}
$qry = "DELETE FROM funktion where mitarbeiter_fk=(Select mitarbeiter_pk from mitarbeiter where person_fk=$person_id);".
" DELETE FROM adresse where person_fk=$person_id;".
" DELETE FROM telefonnummer where person_fk=$person_id;".
" DELETE FROM email where person_fk=$person_id;".
" DELETE FROM mitarbeiter where person_fk=$person_id";
if(!pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler beim Loeschen';
return false;
}
else
{
if(!person::delete($person_id))
return false;
else
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
}
return true;
}
/**
* Liefert die passende Bezeichnung des Familienstandes
* @param $id ID des Familienstandes
*/
function getFamilienstandBezeichnung($id)
{
switch($id)
{
case 1: return 'ledig';
case 2: return 'verheiratet';
case 3: return 'geschieden';
case 4: return 'verwitwet';
default: return '';
}
}
/**
* Liefert die passende Bezeichnung der Ausbildung
* @param $id ID der Ausbildung
*/
function getAusbildungBezeichnung($id)
{
switch($id)
{
case 1: return 'Universitätsabschluss mit Doktorat als Zweit- oder Dritt- oder PhD-Abschluss';
case 2: return 'Universitäts- oder Hochschulabschluss auf Diplom oder Magisterebene, Doktor als Erstabschluss';
case 3: return 'Fachhochschulabschluss auf Diplom- oder Magisterebene';
case 4: return 'Universitätsabschluss auf Bakkalaureatsebene';
case 5: return 'Fachhochschulabschluss auf Bakkalaureatsebene';
case 6: return 'Diplom einer Akademie';
case 7: return 'Anderer tertiärer Bildungsabschluss';
case 8: return 'Reifeprüfung einer allgemeinbildenden höheren Schule';
case 9: return 'Reifeprüfung einer berufsbildenden höheren Schule';
case 10: return 'Lehrabschlussprüfung';
case 11: return 'Pflichtschule';
default: return '';
}
}
/**
* Liefert die passende Bezeichnung des Aktuellen Status
* @param $id ID des Status
*/
function getAktstatusBezeichnung($id)
{
switch($id)
{
case 100: return 'Mitarbeiter';
case 101: return 'Lektor';
case 102: return 'Koordinator';
case 103: return 'Fachbereichsleiter';
case 104: return 'Studiengangsleiter';
case 150: return 'Ausgeschieden';
default: return '';
}
}
/**
* Prüft ob eine Kurzbezeichnung schon existiert. Falls eine mitarbeiter_id
* angegeben wird, dann wird dieser Datensatz von der ueberpruefung ausgeschlossen
* ( fuer Update eines Datensatzes)
*/
function kurzbz_exists($kurzbz, $mitarbeiter_id='')
{
if($kurzbz!='')
{
$this->errormsg = '';
$qry = "SELECT count(*) as anz from mitarbeiter where kurzbez='$kurzbz'";
if($mitarbeiter_id!='')
$qry .= " AND mitarbeiter_pk<>".$mitarbeiter_id;
if($result = pg_query($this->conn,$qry))
{
while ($row=pg_fetch_object($result))
{
if($row->anz == 0)
{
return false;
}
else
{
return true;
}
}
}
else
{
$this->errormsg = 'Fehler beim pruefen der Kurzbezeichnung';
return false;
}
}
return false;
}
/**
* Liefert die naechste Personalnummer
*/
function getNextPersonalnr()
{
$qry = "SELECT max(persnr) AS persnr FROM mitarbeiter WHERE length(persnr)=(SELECT max(length(persnr)) FROM mitarbeiter)";
if($row = pg_fetch_object(pg_query($this->conn,$qry)))
return $row->persnr+1;
else
return false;
}
}
?>
+92
View File
@@ -0,0 +1,92 @@
<?php
/**
* Klasse Nation (FAS-Online)
* @create 06-04-2006
*/
class nation
{
var $conn;
var $errormsg;
var $result = array();
//Tabellenspalten
var $code;
var $sperre;
var $kontinent;
var $entwland;
var $euflag;
var $ewrflag;
var $kurztext;
var $langtext;
var $engltext;
/**
* Konstruktor
* @param $conn Connection
* $code Zu ladende Nation
*/
function nation($conn,$code=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($code != null)
$this->load($code);
}
/**
* Laedt die Funktion mit der ID $adress_id
* @param $code code der zu ladenden Nation
* @return true wenn ok, false im Fehlerfall
*/
function load($code)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Laedt alle Nationen
* @param ohnesperre wenn dieser Parameter auf true gesetzt ist werden
* nur die nationen geliefert dessen Buerger bei uns studieren duerfen
*/
function getAll($ohnesperre=false)
{
//Lesen der Daten aus der Datenbank
$qry = "SELECT * FROM nation";
if($ohnesperre)
$qry .= " where sperre='N'";
$qry .=" order by kurztext";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
while($row = pg_fetch_object($res))
{
$nation_obj = new nation($this->conn);
$nation_obj->code = $row->code;
$nation_obj->sperre = $row->sperre;
$nation_obj->kontinent = $row->sperre;
$nation_obj->entwland = $row->entwland;
$nation_obj->euflag = $row->euflag;
$nation_obj->ewrflag = $row->ewrflag;
$nation_obj->kurztext = $row->kurztext;
$nation_obj->langtext = $row->langtext;
$nation_obj->engltext = $row->engltext;
$this->result[] = $nation_obj;
}
return true;
}
}
?>
+615
View File
@@ -0,0 +1,615 @@
<?php
/**
* Basisklasse Person (FAS-Online)
* @create 06-03-2006
*/
class person
{
var $conn; // @var resource DB-Handle
var $errormsg; // @var string
var $new; // @var boolean
var $result = array(); // @var person Objekt
//Tabellenspalten
var $person_id; // @var integer
var $aktstatus; // @var integer
var $aktstatus_bezeichnung; // @var integer
var $angelegtam; // @var timestamp
var $anrede; // @var string
var $anzahlderkinder; // @var integer
var $bemerkung; // @var string
var $bismelden; // @var boolean
var $bismelden_bezeichnung; // @var boolean
var $ersatzkennzeichen; // @var string
var $familienname; // @var string
var $familienstand; // @var integer ( 1=ledig, 2=verheiratet, 3=?, 4=?, 5=? )
var $familienstand_bezeichnung; // @var integer ( 1=ledig, 2=verheiratet, 3=?, 4=?, 5=? )
var $gebdat; // @var date
var $gebnation; // @var string
var $gebort; // @var string
var $geschlecht; // @var string
var $staatsbuergerschaft; // @var string
var $svnr; // @var string
var $titelpost; // @var string Titel nach dem Namen (BA, MA, etc)
var $titelpre; // @var string Titel vor dem Namen (Dr, Mag, Dipl.Ing, etc)
var $uid; // @var string
var $vorname; // @var string
var $vornamen; // @var string
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
/**
* Konstruktor - Uebergibt die Connection und Laedt optional eine Person
* @param $conn Datenbank-Connection
* $pers_id Person die geladen werden soll (default=null)
*/
function person($conn, $pers_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($pers_id != null)
$this->load($pers_id);
}
/**
* Laden einen Datensatz mit der Personal_id die uebergeben wird
* @param $person_id ID der Person die geladen werden soll
*/
function load($person_id)
{
//person_id auf gueltigkeit pruefen
if(is_numeric($person_id) && $person_id!='')
{
$qry = "SELECT * FROM person WHERE person_pk=$person_id";
if(!$res=pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler beim auslesen der Daten';
return false;
}
if($row = pg_fetch_object($res))
{
$this->person_id = $row->person_pk;
$this->aktstatus = $row->aktstatus;
$this->angelegtam = $row->angelegtam;
$this->anrede = $row->anrede;
$this->anzahlderkinder = $row->anzahlderkinder;
$this->bemerkung = $row->bemerkung;
$this->bismelden = ($row->bismelden=='J'?true:false);
$this->ersatzkennzeichen = $row->ersatzkennzeichen;
$this->familienname = $row->familienname;
$this->familienstand = $row->familienstand;
$this->gebdat = $row->gebdat;
$this->gebnation = $row->gebnation;
$this->gebort = $row->gebort;
$this->geschlecht = $row->geschlecht;
$this->staatsbuergerschaft = $row->staatsbuergerschaft;
$this->svnr = $row->svnr;
$this->titelpre = $row->titel;
$this->titlepost = $row->postnomentitel;
$this->uid = $row->uid;
$this->vorname = $row->vorname;
$this->vornamen = $row->vornamen;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
else
{
$this->errormsg = "Die person_id muss eine Zahl sein";
return false;
}
}
// Clean stuff from a string
function clean_string1($string)
{
$trans = array("" => "ae",
"" => "Ae",
"" => "oe",
"" => "Oe",
"" => "ue",
"" => "Ue",
"" => "a",
"" => "a",
"" => "e",
"" => "e",
"" => "o",
"" => "o",
"" => "i",
"" => "i",
"" => "u",
"" => "u",
"" => "ss");
$string = strtr($string, $trans);
return ereg_replace("[^a-zA-Z0-9]", "", $string);
//[:space:]
}
/**
* Prueft die Variablen auf Gueltigkeit
* @return true wenn ok, false wenn Variablen ungueltig sind
*/
function checkvars1()
{
//Hochkomma herausfiltern
$this->familienname = str_replace("'","`", $this->familienname);
$this->vorname = str_replace("'","`", $this->vorname);
$this->anrede = str_replace("'","`", $this->anrede);
$this->vornamen = str_replace("'","`", $this->vornamen);
$this->gebort = str_replace("'","`", $this->gebort);
$this->svnr = str_replace("'","`", $this->svnr);
$this->titelpre = str_replace("'","`", $this->titelpre);
$this->titelpost = str_replace("'","`", $this->titelpost);
$this->gebnation = str_replace("'","`", $this->gebnation);
$this->ersatzkennzeichen = str_replace("'","`", $this->ersatzkennzeichen);
$this->bemerkung = str_replace("'","`", $this->bemerkung);
if(ereg("[^a-zA-Z0-9]", $this->uid))
{
$this->errormsg = "UID darf keine Umlaute oder Sonderzeichen enthalten";
return false;
}
//Maximallaenge pruefen
if(strlen($this->familienname)>255)
{
$this->errormsg = 'Familienname darf nicht laenger als 255 Zeichen sein';
return false;
}
if(strlen($this->vorname)>255)
{
$this->errormsg = 'Vorname darf nicht laenger als 255 Zeichen sein';
return false;
}
if(strlen($this->anrede)>20)
{
$this->errormsg = 'Anrede darf nicht laenger als 20 Zeichen sein';
return false;
}
if(strlen($this->vornamen)>255)
{
$this->errormsg = 'Vornamen darf nicht laenger als 255 Zeichen sein';
return false;
}
if(strlen($this->geschlecht)>1)
{
$this->errormsg = 'Geschlecht darf nicht laenger als 1 Zeichen sein';
return false;
}
if(strlen($this->gebort)>255)
{
$this->errormsg = 'Geburtsort darf nicht laenger als 255 Zeichen sein';
return false;
}
if(strlen($this->svnr)!=10)
{
$this->errormsg = 'SVNR muss 10 Zeichen lang sein';
return false;
}
if(!is_numeric($this->svnr))
{
$this->errormsg = 'SVNR muss eine gueltige Zahl sein';
return false;
}
if($this->svnr=='0000000000') //Leere SVNR wird zum anlegen des neuen Leerdatensatzes benoetigt
$this->svnr='';
else
{
//SVNR mit Pruefziffer pruefen
//Die 4. Stelle in der SVNR ist die Pruefziffer
//(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer
//Falls nicht, ist die SVNR ungueltig
$gewichtung = array(3,7,9,0,5,8,4,2,1,6);
$erg=0;
//Quersumme bilden
for($i=0;$i<10;$i++)
$erg += $gewichtung[$i] * $this->svnr{$i};
if($this->svnr{3}!=($erg%11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
{
$this->errormsg = 'SVNR ist ungueltig';
return false;
}
}
if(strlen($this->bismelden)>1)
{
$this->errormsg = 'bismelden darf nicht laenger als 1 Zeichen sein';
return false;
}
if(strlen($this->titelpre)>30)
{
$this->errormsg = 'titelpre darf nicht laenger als 30 Zeichen sein';
return false;
}
if(strlen($this->titelpost)>30)
{
$this->errormsg = 'titelpost darf nicht laenger als 30 Zeichen sein';
return false;
}
if(strlen($this->uid)>20)
{
$this->errormsg = 'uid darf nicht laenger als 20 Zeichen sein';
return false;
}
if(strlen($this->gebnation)>3)
{
$this->errormsg = 'Geburtsnation darf nicht laenger als 3 Zeichen sein';
return false;
}
if(strlen($this->staatsbuergerschaft)>3)
{
$this->errormsg = 'Staatsb羹rgerschaft darf nicht laenger als 3 Zeichen sein';
return false;
}
if(strlen($this->ersatzkennzeichen)>10)
{
$this->errormsg = 'ersatzkennzeichen darf nicht laenger als 10 Zeichen sein';
return false;
}
//Zahlenwerte ueberpruefen
$this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen';
if(!is_numeric($this->familienstand) && $this->familienstand!='') return false;
if(!is_numeric($this->anzahlderkinder) && $this->anzahlderkinder!='') return false;
if(!is_numeric($this->aktstatus) && $this->aktstatus!='') return false;
if($this->gebdat!='' && (time() - strtotime($this->gebdat))<315360000) // Wenn nicht aelter als 10 Jahre = 315360000 Sekunden
{
$this->errormsg = 'Geburtsdatum ist falsch: Person muss 鄟ter als 10 Jahre sein';
return false;
}
if($this->uid_exists($this->uid, $this->person_id))
{
$this->errormsg = 'Diese UID existiert bereits';
return false;
}
$this->errormsg='';
return true;
}
/**
* Speichert die Daten in die Datenbank
* Wenn $new auf true gesetzt ist wird eingefuegt
* ansonsten der datensatz $person_id upgedated
* @return true wenn erfolgreich, false im Fehlerfall
*/
function save()
{
//Variablen auf Gueltigkeit pruefen
if(!$this->checkvars1())
return false;
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
//Naechste ID aus Sequence holen
$qry = "SELECT nextval('person_seq') as id;";
if(!$row=pg_fetch_object(pg_query($this->conn,$qry)))
{
$this->errormsg = "Fehler beim Auslesen der Sequence";
return false;
}
$this->person_id = $row->id;
$qry = "INSERT INTO person (person_pk, familienname, angelegtam, vorname, anrede, vornamen,".
" geschlecht, gebdat, gebort, staatsbuergerschaft, familienstand, svnr, anzahlderkinder,".
" ersatzkennzeichen, bemerkung, creationdate,creationuser, aktstatus, bismelden, titel, postnomentitel,".
" uid, gebnation) VALUES( $this->person_id,".
" '$this->familienname', now(), '$this->vorname', '$this->anrede', '$this->vornamen',".
($this->geschlecht!=''?"'$this->geschlecht'":"'M'").", ".
($this->gebdat!=''?"'$this->gebdat'":'null').", '$this->gebort', '$this->staatsbuergerschaft',".
($this->familienstand!=''?"'$this->familienstand'":'null').",".
" '$this->svnr', ".
($this->anzahlderkinder!=''?"'$this->anzahlderkinder'":'null').",".
" '$this->ersatzkennzeichen', '$this->bemerkung', now(),".
" '$this->updatevon', '".($this->aktstatus>0?$this->aktstatus:100)."', '".($this->bismelden?'J':'N')."', '$this->titelpre', '$this->titelpost',".
(strlen($this->uid)>0?" '$this->uid'":'null').",".
" '$this->gebnation');";
}
else
{
//peson_id auf gueltigkeit pruefen
if(!is_numeric($this->person_id))
{
$this->errormsg = 'person_id muss eine gueltige Zahl sein';
return false;
}
$qry = "UPDATE person SET ".
" familienname='$this->familienname',".
" vorname='$this->vorname',".
" anrede='$this->anrede',".
" vornamen='$this->vornamen',".
" geschlecht=".($this->geschlecht!=''?"'$this->geschlecht'":"'M'").",".
" gebdat=".($this->gebdat!=''?"'$this->gebdat'":'null').",".
" gebort='$this->gebort',".
" staatsbuergerschaft='$this->staatsbuergerschaft',".
" familienstand=".($this->familienstand!=''?"'$this->familienstand'":'0').",".
" svnr=".($this->svnr!=''?"'$this->svnr'":'null').",".
" anzahlderkinder=".($this->anzahlderkinder!=''?"'$this->anzahlderkinder'":'0').",".
" ersatzkennzeichen='$this->ersatzkennzeichen',".
" bemerkung='$this->bemerkung',".
" aktstatus='$this->aktstatus',".
" bismelden='".($this->bismelden?'J':'N')."',".
" titel='$this->titelpre',".
" postnomentitel='$this->titelpost',".
" uid='$this->uid',".
" gebnation='$this->gebnation'".
" WHERE person_pk='$this->person_id'";
}
if(pg_query($this->conn,$qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = "Fehler beim Speichern des Person-Datensatzes:".$qry;
return false;
}
}
/**
* Loescht einen Datensatz
* @param $person_id ID des zu loeschenden Datensatzes
* @return true wenn OK false im Fehlerfall
*/
function delete($person_id)
{
//person_id auf Gueltigkeit pruefen
if(!is_numeric($person_id) || $person_id=='')
{
$this->errormsg = 'Person_id muss eine Zahl sein';
return false;
}
$qry = "Delete from person where person_pk=$person_id";
if(!pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler beim Loeschen';
return false;
}
else
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
}
/**
* Holt alle Personen aus der Datenbank
* @return true wenn OK, false im Fehlerfall
*/
function getAll()
{
/** Braucht zuviel Speicher
$qry = "SELECT * FROM person";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler beim auslesen der Datensaetze';
return false;
}
while($row = pg_fetch_object($res))
{
$pers=new person($this->conn);
$pers->person_id = $row->person_pk;
$pers->aktstatus = $row->aktstatus;
$pers->angelegtam = $row->angelegtam;
$pers->anrede = $row->anrede;
$pers->anzahlderkinder = $row->anzahlderkinder;
$pers->bemerkung = $row->bemerkung;
$pers->bismelden = ($row->bismelden=='J'?true:false);
$pers->ersatzkennzeichen = $row->ersatzkennzeichen;
$pers->familienname = $row->familienname;
$pers->familienstand = $row->familienstand;
$pers->gebdat = $row->gebdat;
$pers->gebnation = $row->gebnation;
$pers->gebort = $row->gebort;
$pers->geschlecht = $row->geschlecht;
$pers->staatsbuergerschaft = $row->staatsbuergerschaft;
$pers->svnr = $row->svnr;
$pers->titelpre = $row->titel;
$pers->titelpost = $row->postnomentitel;
$pers->uid = $row->uid;
$pers->vorname = $row->vorname;
$pers->vornamen = $row->vornamen;
$pers->updateamum = $row->creationdate;
$pers->updatevon = $row->creationuser;
$this->result[] = $pers;
}
return true;
*/
return false;
}
/**
* Prueft ob die UID schon vergeben ist. Wenn ein zweiter
* Parameter angegeben wird, wird diese ID von der ueberpruefung
* ausgeschlossen ( fuer Update eines Datensatzes )
*/
function uid_exists($uid, $person_id='')
{
if($uid!='')
{
$this->errormsg = '';
//Datenbank Check
$qry = "SELECT count(*) as anz from person where uid='$uid'";
if($person_id!='')
$qry .= " AND person_pk<>".$person_id;
if($result = pg_query($this->conn,$qry))
{
while ($row=pg_fetch_object($result))
{
if($row->anz == 0)
{
//Wurde deaktiviert weil der Zugriff vom auf den LDAP Server
//vom der Calva aus nicht funktioniert
//Ldap Check
//$ds = ldap_connect(LDAP_SERVER);
//$dn = "ou=People, dc=technikum-wien, dc=at";
//$sr = ldap_search($ds,$dn,"uid=$uid");
//if(ldap_count_entries($ds,$sr)>0)
// return true;
//else
return false;
}
else
return true;
}
}
else
{
$this->errormsg = 'Fehler beim checken der uid';
return false;
}
}
return false;
}
/**
* Aktualisiert den AktStatus
*/
function updateaktstatus($person_id)
{
$mitarbeiter_id = '';
$qry = "Select mitarbeiter_pk from mitarbeiter where person_fk='$person_id'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
$mitarbeiter_id = $row->mitarbeiter_pk;
else
{
$this->errormsg = 'Fehler beim ermitteln der Mitarbeiter_id';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim ermitteln der mitarbeiter_id';
return false;
}
//Funktionen holen
$qry = "Select funktion from funktion where ".
"studiensemester_fk = (Select studiensemester_pk from studiensemester where aktuell='J')".
" AND mitarbeiter_fk = '$mitarbeiter_id'";
if($result = pg_query($this->conn, $qry))
{
$fkt=array();
$i=0;
while($row=pg_fetch_object($result))
{
$fkt[$i]=$row->funktion;
$i++;
}
//Aktstatus ermitteln
if(in_array(5,$fkt)) //STGL
$aktstatus = 104;
elseif(in_array(6,$fkt)) //FBL
$aktstatus = 103;
elseif(in_array(2,$fkt)) //FBK
$aktstatus = 102;
elseif(in_array(1,$fkt)) //LKT
$aktstatus = 101;
else
$aktstatus = 100; //Mitarbeiter
$this->status = $aktstatus;
//neuen akstatus setzen
$qry = "Update person set aktstatus = $aktstatus where person_pk = $person_id";
if(pg_query($qry))
{
//Log schreiben
$sql .= $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim setzen des Aktstatus';
return false;
}
}
}
function setaktstatus($status, $person_id)
{
$qry = "Update person set aktstatus = '$status' where person_pk='$person_id'";
if(!pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim Setzen des aktuellen Status'.$qry;
return false;
}
return true;
}
}
?>
+126
View File
@@ -0,0 +1,126 @@
<?php
/**
* Klasse raumtyp (FAS-Online)
* @create 14-03-2006
*/
class raumtyp
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var raumtyp Objekt
var $raumtyp_id; // @var integer
var $bezeichnung; // @var string
var $kurzbezeichnung; // @var string
var $plaetze; // @var integer
var $updateamum; // @var timestamp
var $updatevon; // @var string
/**
* Konstruktor
* @param conn Connection zur Datenbank
* raum_id ID des zu ladenden Raumes (default=null)
*/
function raumtyp($conn, $raum_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($raum_id != null)
$this->load($raum_id);
}
/**
* Laedt einen Datensatz
* @param $raum_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function load($raum_id)
{
if(!is_numeric($raum_id) || $raum_id == '')
{
$this->errormsg = 'raum_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM raumtyp WHERE raumtyp_pk = '$raum_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datenstatzes';
return false;
}
if($row = pg_fetch_object($res))
{
$this->raumtyp_id = $row->raumtyp_pk;
$this->bezeichnung = $row->bezeichnung;
$this->kurzbezeichnung = $row->kurzbezeichnung;
$this->plaetze = $row->plaetze;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Laedt alle Datensaetze
* @return ture wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM raumtyp;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden der Datensaetze';
return false;
}
while($row = pg_fetch_object($res))
{
$raum_obj = new raumtyp($this->conn);
$raum_obj->raumtyp_id = $row->raumtyp_pk;
$raum_obj->bezeichnung = $row->bezeichnung;
$raum_obj->kurzbezeichnung = $row->kurzbezeichnung;
$raum_obj->plaetze = $row->plaetze;
$raum_obj->updateamum = $row->creationdate;
$raum_obj->updatevon = $row->creationuser;
$this->result[] = $raum_obj;
}
return true;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
$this->errormsg = 'Noch nicht Implementiert';
return false;
}
/**
* Loescht einen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function delete($raum_id)
{
$this->errormsg = 'Noch nicht Implementiert';
return false;
}
}
?>
+228
View File
@@ -0,0 +1,228 @@
<?php
/**
* Klasse studiengang (FAS-Online)
* @create 14-03-2006
*/
class studiengang
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var studiengang Objekt
var $studiengang_id; // @var integer
var $bafirmaaufzeugnis; // @var boolean
var $batitelaufzeugnis; // @var boolean
var $bescheid; // @var string
var $bescheidbgbl1; // @var string
var $bescheidbgbl2; // @var string
var $bescheidgz; // @var string
var $bescheidvom; // @var date
var $beschreibung; // @var string
var $betreuerstunden; // @var float
var $emailkuerzel; // @var string
var $endedatum; // @var date
var $erhalter_id; // @var integer
var $kennzahl; // @var integer
var $kennzahl_neu; // @var integer
var $kuerzel; // @var string
var $name; // @var string
var $nummerintern; // @var integer
var $organisationsform; // @var integer
var $regelstudiendauer; // @var integer
var $regelwochenstunden; // @var integer
var $standort; // @var string
var $startdatum; // @var date
var $studiengangsart; // @var integer
var $studiensemester_id; // @var integer
var $telefonnummer; // @var string
var $updateamum; // @var timestamp
var $updatevon; // @var string
/**
* Konstruktor
* @param conn Connection zur Datenbank
* studiengang_id ID des zu ladenden Studienganges
*/
function studiengang($conn, $studiengang_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($studiengang_id != null)
$this->load($studiengang_id);
}
/**
* Laedt einen Studiengang
* @param stg_id ID des Studienganges der zu laden ist
* @return true wenn ok, false im Fehlerfall
*/
function load($stg_id)
{
//Pruefen ob stg_id eine gueltige Zahl ist
if(!is_numeric($stg_id) || $stg_id == '')
{
$this->errormsg = 'stg_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM studiengang WHERE studiengang_pk = '$stg_id'";
if(!$res=pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
if($row = pg_fetch_object($res))
{
$this->studiengang_id = $row->studiengang_pk;
$this->name = $row->name;
$this->erhalter_id = $row->erhalter_fk;
$this->kuerzel = $row->kuerzel;
$this->studiengangsart = $row->studiengangsart;
$this->organisationsform = $row->organisationsform;
$this->kennzahl = $row->kennzahl;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
$this->standort = $row->standort;
$this->regelstudiendauer = $row->regelstudiendauer;
$this->emailkuerzel = $row->emailkuerzel;
$this->beschreibung = $row->beschreibung;
$this->telefonnummer = $row->telefonnummer;
$this->bescheid = $row->bescheid;
$this->bescheidvom = $row->bescheidvom;
$this->bescheidgz = $row->bescheidgz;
$this->bescheidbgbl1 = $row->bescheidbgbl1;
$this->bescheidbgbl2 = $row->bescheidbgbl2;
$this->kennzahl_neu = $row->kennzahl_neu;
$this->nummerintern = $row->nummerintern;
$this->bafirmaaufzeugnis = ($row->bafirmaaufzeugnis=='t'?true:false);
$this->batitelaufzeugnis = ($row->batitelaufzeugnis=='t'?true:false);
}
else
{
$this->errormsg = 'Kein Datensatz mit dieser Nummer vorhanden';
return false;
}
return true;
}
/**
* Laedt Studiengang und Studiensemester
* @param stg_id Studiengangs_id
* stsem_id Studiensemester_id
*/
function load_stsem($stg_id, $stsem_id)
{
//Studiengang laden
if(!$this->load($stg_id))
return false;
//pruefen ob stsem_id eine gueltige Zahl ist
if(!is_numeric($stsem_id) || $stsem_id == '')
{
$this->errormsg = 'studiensemester_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM studiengang_studiensemester WHERE studiengang_fk='$this->studiengang_id' ".
"AND studiensemester_fk='$stsem_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
if($row = pg_fetch_object($res))
{
$this->studiensemester_id = $row->studiensemester_fk;
$this->startdatum = $row->startdatum;
$this->endedatum = $row->endedatum;
$this->regelwochenstunden = $row->regelwochen;
$this->betreuerstunden = $row->rvar1;
}
else
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
return true;
}
/**
* Liefert alle Studiengaenge
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM studiengang order by name;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while($row = pg_fetch_object($res))
{
$stg_obj = new studiengang($this->conn);
$stg_obj->studiengang_id = $row->studiengang_pk;
$stg_obj->name = $row->name;
$stg_obj->erhalter_id = $row->erhalter_fk;
$stg_obj->kuerzel = $row->kuerzel;
$stg_obj->studiengangsart = $row->studiengangsart;
$stg_obj->organisationsform = $row->organisationsform;
$stg_obj->kennzahl = $row->kennzahl;
$stg_obj->updateamum = $row->creationdate;
$stg_obj->updatevon = $row->creationuser;
$stg_obj->standort = $row->standort;
$stg_obj->regelstudiendauer = $row->regelstudiendauer;
$stg_obj->emailkuerzel = $row->emailkuerzel;
$stg_obj->beschreibung = $row->beschreibung;
$stg_obj->telefonnummer = $row->telefonnummer;
$stg_obj->bescheid = $row->bescheid;
$stg_obj->bescheidvom = $row->bescheidvom;
$stg_obj->bescheidgz = $row->bescheidgz;
$stg_obj->bescheidbgbl1 = $row->bescheidbgbl1;
$stg_obj->bescheidbgbl2 = $row->bescheidbgbl2;
$stg_obj->kennzahl_neu = $row->kennzahl_neu;
$stg_obj->nummerintern = $row->nummerintern;
$stg_obj->bafirmaaufzeugnis = ($row->bafirmaaufzeugnis=='t'?true:false);
$stg_obj->batitelaufzeugnis = ($row->batitelaufzeugnis=='t'?true:false);
$this->result[] = $stg_obj;
}
return true;
}
/**
* Loescht einen Studiengang
* @param $stg_id ID des zu loeschenden Studienganges
* @return true wenn ok, false im Fehlerfall
*/
function delete($stg_id)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
}
?>
+163
View File
@@ -0,0 +1,163 @@
<?php
/**
* Klasse studiensemester (FAS-Online)
* @create 15-03-2006
*/
class studiensemester
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var studiensemester Objekt
var $studiensemester_id; // @var integer
var $aktuell; // @var boolean
var $art; // @var integer ( 1 = Wintersemester, 2 = Sommersemester )
var $jahr; // @var integer
var $updateamum; // @var timestamp
var $updatevon; // @var string
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $stsem_id ID des Studiensemesters das geladen werden soll
*/
function studiensemester($conn, $stsem_id=null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($stsem_id != null)
$this->load($stsem_id);
}
/**
* Laedt den Datensatz mit der ID die uebergeben wird
* @param stsem_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im fehlerfall;
*/
function load($stsem_id)
{
//Pruefen ob stsem_id eine gueltige Zahl ist
if(!is_numeric($stsem_id) || $stsem_id == '')
{
$this->errormsg = 'stsem_id muss eine gueltige Zahl sein';
return false;
}
//Laden eines Datensatzes
$qry = "SELECT * FROM studiensemester WHERE studiensemester_pk = '$stsem_id';";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
if($row = pg_fetch_object($res))
{
$this->studiensemester_id = $row->studiensemester_pk;
$this->aktuell = ($row->aktuell=='J'?true:false);
$this->art = $row->art;
$this->jahr = $row->jahr;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
return true;
}
/**
* Laedt das aktuelle Studiensemester
* @return true wenn ok, false im Fehlerfall
*/
function load_akt()
{
$qry = "SELECT * FROM studiensemester WHERE aktuell='J'";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
if($row = pg_fetch_object($res))
{
$this->studiensemester_id = $row->studiensemester_pk;
$this->aktuell = ($row->aktuell=='J'?true:false);
$this->art = $row->art;
$this->jahr = $row->jahr;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
return true;
}
/**
* Laedt alle studiensemester
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
$qry = "SELECT * FROM studiensemester order by jahr, art desc;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
while($row = pg_fetch_object($res))
{
$stsem_obj = new studiensemester($this->conn);
$stsem_obj->studiensemester_id = $row->studiensemester_pk;
$stsem_obj->aktuell = ($row->aktuell=='J'?true:false);
$stsem_obj->art = $row->art;
$stsem_obj->jahr = $row->jahr;
$stsem_obj->updateamum = $row->creationdate;
$stsem_obj->updatevon = $row->creationuser;
$this->result[] = $stsem_obj;
}
return true;
}
/**
* Loescht einen Datensatz
* @param $stsem_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($stsem_id)
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
$this->errormsg = 'Noch nicht implementiert';
return false;
}
}
?>
+296
View File
@@ -0,0 +1,296 @@
<?php
/**
* Klasse telefonnummer (FAS-Online)
* @create 13-03-2006
*/
class telefonnummer
{
var $conn; // @var resource DB-Handle
var $new; // @var boolean
var $errormsg; // @var string
var $result = array(); // @var telefonnummer Objekt
//Tabellenspalten
var $telefonnummer_id; // @var integer
var $person_id; // @var integer
var $name; // @var string
var $nummer; // @var string
var $typ; // @var integer
var $updateamum; // @var timestamp
var $updatevon=0; // @var string
/**
* Konstruktor
* @param $conn Connection zur Datenbank
* $telefonnummer_id ID der zu ladenden telefonnummer
*/
function telefonnummer($conn, $telefonnummer_id = null)
{
$this->conn = $conn;
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
if(!pg_query($conn,$qry))
{
$this->errormsg = "Encoding konnte nicht gesetzt werden";
return false;
}
if($telefonnummer_id != null)
$this->load($telefonnummer_id);
}
/**
* Laedt den Datensatz mit der ID die uebergeben wurde
* @param $telefonnummer_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function load($telefonnummer_id)
{
//Gueltigkeit von telefonnummer_id pruefen
if(!is_numeric($telefonnummer_id) || $telefonnummer_id == '')
{
$this->errormsg = 'telefonnummer_id muss eine Zahl sein';
return false;
}
$qry = "SELECT * FROM telefonnummer WHERE telefonnummer_pk=$telefonnummer_id";
if(!$res = pg_query($this->conn,$qry))
{
$this->errormsg = 'Fehler beim Laden des Datensatzes';
return false;
}
if($row = pg_fetch_object($res))
{
$this->telefonnummer_id = $row->telefonnummer_pk;
$this->name = $row->name;
$this->nummer = $row->nummer;
$this->person_id = $row->person_fk;
$this->typ = $row->typ;
$this->updateamum = $row->creationdate;
$this->updatevon = $row->creationuser;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Laedt alle Telefonnummern einer Person
* @param $person_id Person zu der die Telefonnummern gesucht werden sollen
* @return true wenn ok, false im Fehlerfall
*/
function load_pers($person_id)
{
//Gueltigkeit von person_id pruefen
if(!is_numeric($person_id) || $person_id == '')
{
$this->errormsg = 'person_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * from telefonnummer where person_fk=$person_id";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Der Datensatz konnte nicht geladen werden';
return false;
}
while($row = pg_fetch_object($res))
{
$tel_obj = new telefonnummer($this->conn);
$tel_obj->telefonnummer_id = $row->telefonnummer_pk;
$tel_obj->name = $row->name;
$tel_obj->nummer = $row->nummer;
$tel_obj->person_id = $row->person_fk;
$tel_obj->typ = $row->typ;
$tel_obj->updateamum = $row->creationdate;
$tel_obj->updatevon = $row->creationuser;
$this->result[] = $tel_obj;
}
return true;
}
/**
* Liefert alle Telefonnummern
* @return true wenn ok, false im Fehlerfall
*/
function getAll()
{
/* Benoetigt zu viel Speicher
$qry = "SELECT * FROM telefonnummer;";
if(!$res = pg_query($this->conn, $qry))
{
$this->errormsg = 'Fehler beim laden der Telefonnummern';
return false;
}
while($row = pg_fetch_object($res))
{
$tel_obj = new telefonnummer($this->conn);
$tel_obj->telefonnummer_id = $row->telefonnummer_pk;
$tel_obj->name = $row->name;
$tel_obj->nummer = $row->nummer;
$tel_obj->person_id = $row->person_fk;
$tel_obj->typ = $row->typ;
$tel_obj->updateamum = $row->creationdate;
$tel_obj->updatevon = $row->creationuser;
$this->result[] = $tel_obj;
}
return true;
*/
return false;
}
/**
* Prueft die gueltigkeit der Variablen
* @return true wenn ok, false im Fehlerfall
*/
function checkvars()
{
//Hochkomma und HTML Tags ersetzen
//$this->name = htmlentities($this->name, ENT_QUOTES);
//$this->nummer = htmlentities($this->nummer, ENT_QUOTES);
//Laenge pruefen
$this->errormsg = 'Eine der Gesamtlaengen wurde ueberschritten';
if(strlen($this->name)>255) return false;
if(strlen($this->nummer)>30) return false;
//Zahlenfelder pruefen
$this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen';
if(!is_numeric($this->person_id)) return false;
if(!is_numeric($this->typ)) return false;
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
* andernfalls wird der Datensatz mit der ID in $telefonnummer_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
function save()
{
//Variablen pruefen
if(!$this->checkvars())
return false;
if($this->new)
{
//Neuen Datensatz anlegen
//neue ID aus der Sequence holen
$qry = "SELECT nextval('telefonnummer_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim auslesen der Sequence';
return false;
}
$this->telefonnummer_id = $row->id;
$qry = "INSERT INTO telefonnummer (telefonnummer_pk, person_fk, name, nummer, typ, creationdate, creationuser)".
" VALUES('$this->telefonnummer_id', '$this->person_id', '$this->name', '$this->nummer', '$this->typ', now(), '$this->updatevon');";
}
else
{
//Bestehenden Datensatz aktualisieren
//Pruefen der ID
if(!is_numeric($this->telefonnummer_id) || $this->telefonnummer_id == '')
{
$this->errormsg = 'telefonnummer_id muss eine gueltige Zahl sein';
return false;
}
$qry = "UPDATE telefonnummer SET person_fk='$this->person_id', name='$this->name', typ='$this->typ', nummer='$this->nummer'".
" WHERE telefonnummer_pk='$this->telefonnummer_id'";
}
if(pg_query($this->conn, $qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
/**
* Loescht den Datensatz mit der uebergebenen ID
* @param telefonnummer_id ID des zu leoschenen Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
function delete($telefonnummer_id)
{
//Pruefen der ID
if(!is_numeric($telefonnummer_id) || $telefonnummer_id == '')
{
$this->errormsg = 'telefonnummer_id muss eine gueltige Zahl sein';
return false;
}
//loeschen des Datensatzes
$qry = "DELETE FROM telefonnummer where telefonnummer_pk='$telefonnummer_id'";
if(pg_query($this->conn, $qry))
{
//Log schreiben
$sql = $qry;
$qry = "SELECT nextval('log_seq') as id;";
if(!$row = pg_fetch_object(pg_query($this->conn, $qry)))
{
$this->errormsg = 'Fehler beim Auslesen der Log-Sequence';
return false;
}
$qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')";
if(pg_query($this->conn, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim loeschen eines Datensatzes';
return false;
}
}
}
?>
+88
View File
@@ -0,0 +1,88 @@
<?php
/*
$Header: /include/lehrfach.class.php,v 1.2 2004/10/16 17:05:38 pam Exp $
$Log: lehrstunde.class.php,v $
Revision 1.2 2004/10/16 17:05:38 pam
Anpassung an neue DB-Struktur.
*/
/****************************************************************************
* @class Lehrfach
* @author Christian Paminger
* @date 2004/8/21
* @version $Revision: 1.2 $
* Update: 21.10.2004 von Christian Paminger
* @brief Klasse zur Bearbeitung und Abfrage der Tabelle tbl_ferien
* Abhaengig: von ?
*****************************************************************************/
class ferien
{
// @var string
var $bezeichnung;
// @var int
var $studiengang_kz;
// @var string
var $vondatum;
// @var string
var $bisdatum;
// @var timestamp
var $vontimestamp;
// @var timestamp
var $bistimestamp;
// @var string
var $errormsg;
// @var conn
var $conn;
// @var ferien
var $ferien=array();
function ferien($conn)
{
$this->conn=$conn;
}
/**
* Alle Fachbereiche zurueckgeben
* @return array mit Fachbereichen oder false=fehler
*/
function getAll($stg_kz)
{
$sql_query="SELECT * FROM tbl_ferien WHERE studiengang_kz=0 OR studiengang_kz=$stg_kz ORDER BY vondatum";
if (!$result=@pg_query($this->conn, $sql_query))
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
//$num_rows=pg_numrows($result);
//for ($i=0; $i<$num_rows; $i++)
while ($row=@pg_fetch_object($result))
{
// Record holen
// Instanz erzeugen
$f = new ferien($this->conn);
$f->bezeichnung=$row->bezeichnung;
$f->studiengang_kz = $row->studiengang_kz;
$f->vondatum=$row->vondatum;
$f->bisdatum=$row->bisdatum;
$f->vontimestamp=mktime(0,0,0,substr($row->vondatum,5,2),substr($row->vondatum,8),substr($row->vondatum,0,4));;
$f->bistimestamp=mktime(23,59,59,substr($row->bisdatum,5,2),substr($row->bisdatum,8),substr($row->bisdatum,0,4));;
// in array speichern
$this->ferien[]=$f;
}
return true;
}
function isferien($timestamp)
{
foreach ($this->ferien AS $f)
if ($timestamp>=$f->vontimestamp && $timestamp<=$f->bistimestamp)
return true;
return false;
}
}
?>
+155
View File
@@ -0,0 +1,155 @@
<?php
function db_query($conn, $sql_query)
{
if (!$result=pg_query($conn, $sql_query))
return pg_last_error($conn);
else
return '';
}
function get_uid()
{
return strtolower(trim($_SERVER['REMOTE_USER']));
}
function check_lektor($uid, $conn)
{
// uid von View 'Lektor' holen
$sql_query="SELECT uid FROM vw_lektor WHERE uid='$uid'";
//echo $sql_query;
$result=pg_query($conn, $sql_query) or die(pg_last_error($conn));
$num_rows=pg_numrows($result);
// Wenn kein ergebnis return 0 sonst ID
if ($num_rows>0)
{
$row=pg_fetch_object($result);
return $row->uid;
}
else
return 0;
}
function check_student($uid, $conn)
{
// uid von Tabelle 'Student' holen
$sql_query="SELECT uid FROM tbl_student WHERE uid='$uid'";
//echo $sql_query;
$result=pg_query($conn, $sql_query) or die(pg_last_error($conn));
$num_rows=pg_numrows($result);
// Wenn kein ergebnis return 0 sonst ID
if ($num_rows>0)
return pg_result($result,0,'uid');
else
return 0;
}
function kalenderwoche($datum)
{
//$woche=date("W",mktime($date[hours],$date[minutes],$date[seconds],$date[mon],$date[mday],$date[year]));
if (!date("w",$datum))
$datum+=86400;
//echo date("l j.m.Y - W",$datum);
$woche=date("W",$datum);
//if ($woche==53)
// $woche=1;
return $woche;
}
/******************************************************************************
* Springt zum vorhergehenden Montag, wenn $datum kein Sonntag oder Montag ist.
*
*/
function montag($datum)
{
// Wochentag
$wt=date("w",$datum);
// Sonntag?
if (!$wt)
$wt++;
if($wt!=1)
$datum-=86400*($wt-1);
return $datum;
}
function jump_day($datum, $tage)
{
// Ein Tag sind 86400 Sekunden
$datum+=86400*$tage;
return $datum;
}
function jump_week($datum, $wochen)
{
$stunde_vor=date("G",$datum);
// Eine Woche sind 604800 Sekunden
$datum+=604800*$wochen;
$stunde_nach=date("G",$datum);
if ($stunde_nach!=$stunde_vor)
$datum+=3600;
return $datum;
}
function jahreskalenderjump($link)
{
$datum=mktime();
$woche=kalenderwoche($datum);
$datum=montag($datum);
echo '<SMALL><CENTER><B>Jump to KW</B><BR><SMALL>';
for ($anz=1;$anz<26;$anz++)
{
$linknew=$link.'&datum='.$datum;
if ($woche==54)
$woche=1;
echo ' <A HREF="'.$linknew.'">'.$woche.'</A> ';
if ($anz%5==0)
echo '<br>';
$datum+=60*60*24*7;
$woche++;
}
echo '</SMALL></CENTER></SMALL>';
}
function loadVariables($conn, $user)
{
$error_msg='';
if(!($result=@pg_query($conn, "SELECT * FROM tbl_variable WHERE uid='$user'")))
$error_msg.=pg_errormessage($conn).'<BR>'.$sql_query;
else
$num_rows=@pg_numrows($result);
for ($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($result,$i);
global ${$row->name};
${$row->name}=$row->wert;
}
if (!isset($semester_aktuell))
if(!($result=@pg_query($conn, 'SELECT * FROM tbl_studiensemester WHERE ende>now() ORDER BY start LIMIT 1')))
$error_msg.=pg_errormessage($conn).'<BR>'.$sql_query;
else
{
$num_rows=@pg_numrows($result);
if ($num_rows>0)
{
$row=pg_fetch_object($result,$i);
global $semester_aktuell;
$semester_aktuell=$row->studiensemester_kurzbz;
}
}
if (!isset($db_stpl_table))
$db_stpl_table='stundenplan';
return $error_msg;
}
function writeCISlog($stat, $rm = '')
{
if($stat=='STOP')
$stat = 'STOP ';
$handle = fopen(CIS_LOG_PATH,'a');
fwrite($handle, date('Y-m-d H:i:s').' '. $stat .' '. getmypid() .' '. $_SERVER['REMOTE_USER'] .' '. $_SERVER['REQUEST_URI'] .' '.$rm.'
');
}
?>
+279
View File
@@ -0,0 +1,279 @@
<?php
/**
* @author Christian Paminger, Werner Masik
* @version 1.0
* @created 22-Okt-2004
* @update 28.10.2004
*/
class funktion
{
/**
* @var string
*/
var $kurzbz;
/**
* @var string
*/
var $bezeichnung;
/**
* @var boolean
*/
var $aktiv;
/**
* @var string
*/
var $errormsg;
/**
* @var boolean
*/
var $new=true;
/**
* @var resource
*/
var $conn;
function funktion($conn)
{
$this->conn = $conn;
}
/**
* Ladet die Attribute der Funktion aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function load($kurzbz)
{
$this->kurzbz=$kurzbz;
$qry="select * from tbl_funktion where funktion_kurzbz='$kurzbz'";
if (is_null($this->conn)) {
return false;
}
if(!($erg=@pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1) {
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->bezeichnung=$row->bezeichnung;
$this->aktiv=$row->aktiv=='t'?true:false;
$this->new=false;
return true;
}
/**
* Speichert die Funktion in die Datenbank. Bei Fehler ist der Rueckgabewert
* 'false' und die Fehlermeldung steht in 'errormsg'. INSERT oder DELETE wird
* durch 'new' bestimmt.
* @return boolean true=ok, false=fehler
*/
function save()
{
if (is_null($this->conn)) {
return false;
}
if (strlen($this->kurzbz)==0)
{
$this->errormsg="<i>kurzbz</i> nicht gesetzt";
return false;
}
if ($this->new)
{
$qry="insert into tbl_funktion(funktion_kurzbz,bezeichnung,aktiv) ".
"values('".$this->kurzbz."','".$this->bezeichnung."',".($this->aktiv?'t':'f').")";
} else
{
$qry="update tbl_funktion set bezeichnung='".$this->bezeichnung."',".
"aktiv=".($this->aktiv?'t':'f')." where funktion_kurzbzb='$this->kurzbz'";
}
if(!($erg=@pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* Loescht die Funktion aus der Datenbank. Bei Fehler ist der Rueckgabewert
* 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function delete()
{
if (is_null($this->conn)) {
return false;
}
if (strlen($this->kurzbz)==0)
{
$this->errormsg="<i>kurzbz</i> nicht gesetzt";
return false;
}
$qry="delete from tbl_funktion where funktion_kurzbz='".$this->kurzbz."'";
if(!($erg=@pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* alle Personen mit dieser Funktion holen
* @param string $kurzbz Kurzbezeichnung der Funktion (wenn nicht angegeben
* wird lokale $kurzbz verwendet)
* @return array key=personfunktion_id, value=array('person','studiengang_kz'',
* 'studiengang_kurzbz','fachbereich_id', 'fachbereich_kurzbz') oder false, wenn Fehler
*/
function getPersonen($kurzbz='')
{
// Array für Suchergebnis
$result=array();
if (strlen($kurzbz)==0)
{
$search_kurzbz=$this->kurzbz;
} else
{
$search_kurzbz=$kurzbz;
}
$qry="select tbl_personfunktion.*,tbl_studiengang.kurzbz as studiengang_kurzbz,tbl_fachbereich.kurzbz as fachbereich_kurzbz from tbl_personfunktion join tbl_person using(uid) ".
"left join tbl_studiengang using(studiengang_kz) ".
"left join tbl_fachbereich using(fachbereich_id) ".
"where funktion_kurzbz='$search_kurzbz' ".
"order by upper(tbl_person.nachname)";
if (is_null($this->conn)) {
return false;
}
//echo "'".$qry."'";
if(!($erg=@pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
for ($i=0;$i<$num_rows;$i++)
{
// Person laden (nicht für große Anzahl von Personen geeignet)
$temp_person=new person($this->conn);
$temp_person->load(pg_result($erg,$i,'uid'));
// und in Array speichern
$result[pg_result($erg,$i,'personfunktion_id')]=array(
'person'=>$temp_person,
'studiengang_kz'=>@pg_result($erg,$i,'studiengang_kz'),
'studiengang_kurzbz'=>@pg_result($erg,$i,'studiengang_kurzbz'),
'fachbereich_kurzbz'=>@pg_result($erg,$i,'fachbereich_kurzbz'),
'fachbereich_id'=>@pg_result($erg,$i,'fachbereich_id')
);
}
return $result;
}
/**
* Person Funktion dazugeben
* @param string $uid User-ID
* @param string $studiengang_kz Studiengang-Kennzahl (optional)
* @param integer $fachbereich_id optional
* @return boolean true=ok, false=fehler
*/
function addPerson($uid,$studiengang_kz=null,$fachbereich_id=null)
{
if (is_null($this->conn)) {
return false;
}
$targetlist="uid,funktion_kurzbz";
if (strlen($studiengang_kz)>0) $targetlist.=",studiengang_kz";
if (strlen($fachbereich_id)>0) $targetlist.=",fachbereich_id";
$values="'$uid','".$this->kurzbz."'";
if (strlen($studiengang_kz)>0) $values.=",$studiengang_kz";
if (strlen($fachbereich_id)>0) $values.=",$fachbereich_id";
$qry="insert into tbl_personfunktion($targetlist) ".
"values($values)";
//echo $qry;
if(!($erg=@pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* Person Funktion wegnehmen
* @param string $uid User-ID
* @param string $studiengang_kz Studiengang-Kennzahl (optional)
* @param integer $fachbereich_id optional
* @return boolean true=ok, false=fehler
*/
function removePerson($personfunktion_id)
{
if (is_null($this->conn)) {
return false;
}
if (strlen($personfunktion_id)==0) {
$this->errormsg="personfunktion_id darf nicht NULL sein";
return false;
}
$qry="delete from tbl_personfunktion where personfunktion_id=$personfunktion_id";
if(!($erg=@pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* Personfunktion aktualisieren
* @param integer $personfunktion ID aus der Zuordnungstabelle
* @param string $uid User-ID
* @param string $studiengang_kz Studiengang-Kennzahl (optional)
* @param integer $fachbereich_id optional
* @return boolean true=ok, false=fehler
*/
function updatePerson($personfunktion_id,$uid,$studiengang_kz=null,
$fachbereich_id=null) {
if (is_null($this->conn)) {
return false;
}
if (strlen($studiengang_kz)>0)
{
$values.=",studiengang_kz=$studiengang_kz ";
} else
{
$values.=",studiengang_kz=NULL ";
}
if (strlen($fachbereich_id)>0)
{
$values.=",fachbereich_id=$fachbereich_id";
} else
{
if (strlen($studiengang_kz)==0) {
$this->errormsg="Studiengang oder Fachbereich fehlt.";
return false;
}
$values.=",fachbereich_id=NULL";
}
$qry="update tbl_personfunktion set ".
"uid='$uid'$values ".
"where personfunktion_id=$personfunktion_id";
//echo $qry;
if(!($erg=@pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
}
?>
+22
View File
@@ -0,0 +1,22 @@
<?php
// Hintergrundfarben fuer Tabellen beim Zeitwunsch
global $cfgStdBgcolor;
$cfgStdBgcolor=array();
$cfgStdBgcolor[0]="#FF0000";
$cfgStdBgcolor[1]="#D44128";
$cfgStdBgcolor[2]="#CA8780";
$cfgStdBgcolor[3]="#C0C0C0";
$cfgStdBgcolor[4]="#A2C294";
$cfgStdBgcolor[5]="#4EA83C";
$cfgStdBgcolor[6]="#006000";
// Wochentage auf Deutsch (Zeitwunsch)
global $tagbez;
$tagbez=array();
$tagbez[1]="Montag";
$tagbez[2]="Dienstag";
$tagbez[3]="Mittwoch";
$tagbez[4]="Donnerstag";
$tagbez[5]="Freitag";
$tagbez[6]="Samstag";
?>
+206
View File
@@ -0,0 +1,206 @@
<?php
class lehrfach
{
/**
* @var sint
*/
var $lehrfach_nr;
/**
* @var int
*/
var $fachbereich_id;
/**
* @var string
*/
var $kurzbz;
/**
* @var string
*/
var $bezeichnung;
/**
* @var string
*/
var $lehrevz;
/**
* @var string
*/
var $farbe;
/**
* @var string
*/
//var $lehrform_kurzbz;
/**
* @var boolean
*/
var $aktiv;
/**
* @var int
*/
var $studiengang_kz;
/**
* @var real
*/
var $ects;
/**
* @var int
*/
var $semester;
/**
* @var string
*/
var $sprache;
/**
* @var string
*/
var $errormsg;
var $fkterg = array();
var $conn;
function lehrfach($conn)
{
$this->conn=$conn;
}
/**
* Ladet einen Datensatz mit der id $id
* @param $id lehrfach_nr
* @return true wenn erfolgreich sonst false
*/
function load($id)
{
$sql_query = "Select * from tbl_lehrfach where lehrfach_nr=$id";
if($result=pg_exec($sql_query))
{
if($row=pg_fetch_object($result))
{
$this->lehrfach_nr = $id;
$this->studiengang_kz = $row->studiengang_kz;
$this->fachbereich_id = $row->fachbereich_id;
$this->kurzbz = $row->kurzbz;
$this->bezeichnung = $row->bezeichnung;
$this->lehrevz = $row->lehrevz;
$this->farbe = $row->farbe;
//$this->lehrform = $row->lehrform;
$this->aktiv = $row->aktiv;
$this->ects = $row->ects;
$this->semester = $row->semester;
$this->sprache = $row->sprache;
return true;
}
}
return false;
}
/**
* Liefert die Tabellenelemente die den Kriterien der Parameter entsprechen
* @param $stg Studiengangs_kz
* $sem Semester
* $order Sortierkriterium
* $fachb fachbereichs_id
* @return array mit Fachbereichen oder false=fehler
*/
function getTab($stg='-1',$sem='-1', $order='lehrfach_nr', $fachb='-1',$lehre='')
{
$sql_query = "SELECT * FROM tbl_lehrfach";
if($stg!=-1 || $sem!=-1 || $fachb!=-1)
$sql_query .= " WHERE true";
if($stg!=-1)
{
$sql_query .= " AND studiengang_kz=$stg";
}
if($sem!=-1)
{
$sql_query .= " AND semester=$sem";
}
if($fachb!=-1)
{
$sql_query .= " AND fachbereich_id=$fachb";
}
if($lehre!='')
{
$sql_query .= " AND lehre=$lehre";
}
$sql_query .= " ORDER BY $order";
if($result=pg_exec($this->conn,$sql_query))
{
while($row=pg_fetch_object($result))
{
$l = new lehrfach($this->conn);
$l->lehrfach_nr = $row->lehrfach_nr;
$l->fachbereich_id = $row->fachbereich_id;
$l->kurzbz = $row->kurzbz;
$l->bezeichnung = $row->bezeichnung;
$l->lehrevz = $row->lehrevz;
$l->farbe = $row->farbe;
//$l->lehrform_kurzbz = $row->lehrform_kurzbz;
$l->aktiv = $row->aktiv;
$l->ects = $row->ects;
$l->studiengang_kz = $row->studiengang_kz;
$l->semester = $row->semester;
$this->fkterg[]=$l;
}
}
else
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* Alle Fachbereiche zurückgeben
* @return array mit Fachbereichen oder false=fehler
*/
function getAll()
{
if (is_null($this->conn))
{
return false;
}
$qry = "select * from tbl_lehrfach ".
"order by kurzbz";
//echo $qry;
if (!($erg = pg_exec($this->conn, $qry)))
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
$result = array();
$num_rows = pg_numrows($erg);
for ($i = 0; $i < $num_rows; $i ++)
{
// Record holen
$row = pg_fetch_object($erg, $i);
// Instanz erzeugen
$lf = new lehrfach($this->conn);
$lf->lehrfach_nr = $row->lehrfach_nr;
$lf->fachbereich_id = $row->fachbereich_id;
$lf->kurzbz = $row->kurzbz;
$lf->bezeichnung = $row->bezeichnung;
$lf->lehrelink = $row->lehrelink;
$lf->farbe = $row->farbe;
//$lf->lehrform_kurzbz = $row->lehrform_kurzbz;
$lf->aktiv = $row->aktiv;
$lf->ects = $row->ects;
$lf->studiengang_kz = $row->studiengang_kz;
// in array speichern
$result[] = $lf;
}
return $result;
}
}
?>
+62
View File
@@ -0,0 +1,62 @@
<?php
class lehrform
{
/**
* @var string
*/
var $bezeichnung;
/**
* @var string
*/
var $kurzbz;
/**
* @var string
*/
var $errormsg;
/**
* @var resource
*/
var $conn;
function lehrform($conn)
{
$this->conn = $conn;
}
/**
* Alle Fachbereiche zurückgeben
* @return array mit Fachbereichen oder false=fehler
*/
function getAll()
{
if (is_null($this->conn))
{
return false;
}
$qry = "select lehrform_kurzbz, bezeichnung from tbl_lehrform ".
"order by lehrform_kurzbz";
//echo $qry;
if (!($erg = pg_exec($this->conn, $qry)))
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
$result = array();
$num_rows = pg_numrows($erg);
for ($i = 0; $i < $num_rows; $i ++)
{
// Record holen
$row = pg_fetch_object($erg, $i);
// Instanz erzeugen
$lf = new lehrform($this->conn);
$lf->kurzbz = $row->lehrform_kurzbz;
$lf->bezeichnung = $row->bezeichnung;
// in array speichern
$result[] = $lf;
}
return $result;
}
}
?>
+457
View File
@@ -0,0 +1,457 @@
<?php
/*
$Header: /include/lehrstunde.class.php,v 1.2 2004/10/16 17:05:38 pam Exp $
$Log: lehrstunde.class.php,v $
Revision 1.2 2004/10/16 17:05:38 pam
Anpassung an neue DB-Struktur.
*/
/****************************************************************************
* @class Lehrstunde
* @author Christian Paminger
* @date 2004/8/21
* @version $Revision: 1.2 $
* Update: 21.10.2004 von Christian Paminger
* @brief Beschreibung einer Unterrichts-Stunde der Tabelle tbl_stundenplan
* Abhaengig: von ?
*****************************************************************************/
// include_once('mitarbeiter.class.php');
class lehrstunde
{
var $conn; // @brief Connection zur Datenbank
var $stundenplan_id;// @brief id in der Datenbank
var $unr; // @brief Unterrichtsnummer
var $lektor_uid; // @brief UID des Lektors
var $lektor_kurzbz; // @brief Kurzbezeichnung des Lektors
var $datum; // @brief Datum
var $stunde; // @brief Unterrichts-Stunde des Tages
var $ort_kurzbz; // @brief Ort in dem der Unterricht stattfindet
var $lehrfach_nr; // @brief Nummer des Lehrfachs
var $lehrfach; // @brief Name des Lehrfachs
var $lehrfach_bez; // @brief Voller Name des Lehrfachs
var $lehrform; // @brief Lehrform des Lehrfachs (Vorlesung, ...)
var $studiengang_kz;// @brief Kennzahl des Studiengangs
var $studiengang; // @brief Kurzbezeichnung des Studiengangs
var $sem; // @brief Semester
var $ver; // @brief Verband
var $grp; // @brief Gruppe
var $einheit_kurzbz;// @brief Kurzbezeichnung der Einheit
var $titel; // @brief Titel der Unterrichtsstunde
var $anmerkung; // @brief Anmerkungen zur Unterrichtsstunde
var $fix; // @brief true wenn diese Stunde nicht mehr verschoben wird
var $updateamum; // @brief letztes Update
var $updatevon; // @brief Update von wem?
var $errormsg; // @brief String fuer die Fehlermeldung
var $new; // @brief true wenns ein neuer Datensatz ist
var $reservierung; // @brief true wenns eine Reservierung ist
var $lehrstunden=array(); // @brief Objekt der eigenen Klasse
var $anzahl; // @brief Gesamte Anzahl der Stunden im Array
/** Konstruktor
*
*
*/
function lehrstunde($conn)
{
// Startvariablen setzen
$this->conn=$conn;
$this->new=TRUE;
}
/**
* Einen Datensatz laden
*
*/
function load($stundenplan_id,$stpl_table='stundenplandev')
{
///////////////////////////////////////////////////////////////////////
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_table.TABLE_ID;
$stpl_view=VIEW_BEGIN.$stpl_table;
$stpl_table=TABLE_BEGIN.$stpl_table;
$sql_query="SELECT * FROM $stpl_view WHERE $stpl_id=$stundenplan_id;";
//echo $sql_query.'<br>';
//Datenbankabfrage
if (! $stpl_tbl=pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_last_error($this->conn);
//echo $this->errormsg;
return false;
}
$this->anzahl=pg_numrows($stpl_tbl);
//Daten uebernehmen
if ($this->anzahl!=1)
{
$this->errormsg='Keinen Datensatz gefunden';
return false;
}
else
{
$row=pg_fetch_object ($stpl_tbl);
$this->stundenplan_id=$row->{$stpl_id};
$this->unr=$row->unr;
$this->lektor_uid=$row->uid;
$this->lektor_kurzbz=$row->lektor;
$this->datum=$row->datum;
$this->stunde=$row->stunde;
$this->ort_kurzbz=$row->ort_kurzbz;
$this->lehrfach=$row->lehrfach;
$this->lehrfach_bez=$row->lehrfach_bez;
$this->lehrfach_nr=$row->lehrfach_nr;
$this->lehrform=$row->lehrform;
$this->studiengang_kz=$row->studiengang_kz;
$this->studiengang=$row->stg_kurzbz;
$this->sem=$row->semester;
$this->ver=$row->verband;
$this->grp=$row->gruppe;
$this->einheit_kurzbz=$row->einheit_kurzbz;
$this->titel=$row->titel;
$this->anmerkung=$row->anmerkung;
$this->updateamum=$row->updateamum;
$this->updatevon=$row->updatevon;
$this->new=false;
}
return true;
}
/**
* Datensatz in DB speichern
*
*/
function save($uid, $stpl_table='stundenplandev')
{
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_table.TABLE_ID;
$stpl_table=TABLE_BEGIN.$stpl_table;
if ($this->new)
{
// insert
}
else
{
// update
$sql_query='UPDATE '.$stpl_table;
$sql_query.=" SET datum='$this->datum', stunde=$this->stunde";
$sql_query.=", ort_kurzbz='$this->ort_kurzbz', uid='$this->lektor_uid'";
$sql_query.=", updateamum=now(), updatevon='$uid'";
$sql_query.=" WHERE $stpl_id=$this->stundenplan_id";
//echo $sql_query."<br>";
//Datenbankabfrage
if (! @pg_query($this->conn, $sql_query))
{
$this->errormsg=$sql_query.pg_last_error($this->conn);
//echo $this->errormsg;
return false;
}
//$this->errormsg.=$sql_query;
}
return true;
}
/**
* Datensatz aus DB entfernen
* @param id ID des Datensatzes in der Tabelle
* @param stpl_table Name der Tabelle
*
*/
function delete($id, $stpl_table='stundenplandev')
{
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_table.TABLE_ID;
$stpl_table=TABLE_BEGIN.$stpl_table;
// Delete SQL vorbereiten
$sql_query='DELETE FROM '.$stpl_table;
$sql_query.=" WHERE $stpl_id=$id";
//echo $sql_query."<br>";
//Datenbankrequest
if (! pg_query($this->conn, $sql_query))
{
$this->errormsg=$sql_query.pg_last_error($this->conn);
//echo $this->errormsg;
return false;
}
else
return true;
}
/**
* @param type (student, lektor, lehrverband, einheit, ort, ....)
* @param datum_von (inklusive) Startdatum der Abfrage
* @param datum_bis (exklusive) Enddatum der Abfrage
* @param uid (des Lektors oder Studenten) kann auch NULL sein
* @param ort_kurzbz (Kurzbezeichnung des Orts) kann auch NULL sein
* @param studiengang_kz
* @param sem
* @param ver
* @param grp
* @param einheit_kurzbz
*
*/
function load_lehrstunden($type, $datum_von, $datum_bis, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $einheit_kurzbz=NULL, $stpl_view='stundenplan')
{
///////////////////////////////////////////////////////////////////////
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_view.TABLE_ID;
$stpl_view=VIEW_BEGIN.$stpl_view;
// Datum im Format YYYY-MM-TT ?
if (!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$datum_von) )
{
$this->errormsg='Fehler: Startdatum hat falsches Format!';
return -1;
}
if (!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$datum_bis) )
{
$this->errormsg='Fehler: Enddatum hat falsches Format!';
return -1;
}
// Person
if (($type=='student' || $type=='lektor') && $uid==NULL)
{
$this->errormsg='Fehler: uid der Person ist nicht gesetzt';
return -1;
}
// Ort
if ($type=='ort' && $ort_kurzbz==NULL)
{
$this->errormsg='Fehler: Kurzbezeichnung des Orts ist nicht gesetzt';
return -1;
}
// Einheit
if ($type=='einheit' && $einheit_kurzbz==NULL)
{
$this->errormsg='Fehler: Kurzbezeichnung der Einheit ist nicht gesetzt';
return -1;
}
///////////////////////////////////////////////////////////////////////
// Zusaetzliche Daten ermitteln
// Personendaten
if ($type=='student')
{
// Lehrverband ermitteln
$sql_query="SELECT studiengang_kz, semester, verband, gruppe FROM tbl_student WHERE uid='$uid'";
//echo $sql_query;
if (! $result=@pg_query($this->conn, $sql_query) )
{
$this->errormsg=pg_last_error($this->conn);
return -2;
}
$num_rows=pg_num_rows($result);
if ($num_rows>0)
$row=pg_fetch_object($result);
else
{
$this->errormsg='Fehler: Student ('.$uid.') wurde nicht gefunden!';
return -2;
}
$studiengang_kz=$row->studiengang_kz;
$sem=$row->semester;
$ver=$row->verband;
$grp=$row->gruppe;
// Einheiten ermitteln
$sql_query="SELECT einheit_kurzbz FROM tbl_einheitstudent WHERE uid='$uid'";
//echo $sql_query;
if (! $result_einheit=@pg_query($this->conn, $sql_query) )
{
$this->errormsg=pg_last_error($this->conn);
return -2;
}
$num_rows_einheit=pg_num_rows($result_einheit);
}
///////////////////////////////////////////////////////////////////////
// Stundenplandaten ermitteln
// Abfrage generieren
$sql_query_stdplan='SELECT * FROM '.$stpl_view;
$sql_query=" WHERE datum>='$datum_von' AND datum<'$datum_bis'";
if ($type=='lektor')
$sql_query.=" AND uid='$uid'";
elseif ($type=='ort')
$sql_query.=" AND ort_kurzbz='$ort_kurzbz'";
elseif ($type=='einheit')
$sql_query.=" AND einheit_kurzbz='$einheit_kurzbz'";
else
{
$sql_query.=' AND ( (studiengang_kz='.$studiengang_kz;
if ($sem!='0' && $sem!=null && $sem!=0 && $sem!='')
{
$sql_query.=" AND (semester=$sem OR semester IS NULL";
if ($type=='student')
$sql_query.=' OR semester='.($sem+1);
$sql_query.=')';
}
if ($ver!='0' && $ver!=null && $ver!='')
$sql_query.=" AND (verband='$ver' OR verband IS NULL OR verband='0' OR verband='')";
if ($grp!='0' && $grp!=null && $grp!='')
$sql_query.=" AND (gruppe='$grp' OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
if ($type=='student')
$sql_query.=' AND einheit_kurzbz IS NULL';
$sql_query.=' )';
for ($i=0;$i<$num_rows_einheit;$i++)
{
$row=pg_fetch_object($result_einheit,$i);
$sql_query.=" OR einheit_kurzbz='$row->einheit_kurzbz'";
}
$sql_query.=')';
}
$sql_query.=' ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, einheit_kurzbz, uid';
$sql_query_stdplan.=$sql_query;
//echo '<label>'.htmlspecialchars($sql_query_stdplan).'</label>';
//Datenbankabfrage
if (! $stpl_tbl=pg_query($this->conn, $sql_query_stdplan))
{
$this->errormsg=pg_last_error($this->conn);
//echo $this->errormsg;
return -2;
}
$num_rows=pg_numrows($stpl_tbl);
$this->anzahl=$num_rows;
//Daten uebernehmen
for ($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object ($stpl_tbl, $i);
$stunde=new lehrstunde($this->conn);
$stunde->stundenplan_id=$row->{$stpl_id};
$stunde->unr=$row->unr;
$stunde->lektor_uid=$row->uid;
$stunde->lektor_kurzbz=$row->lektor;
$stunde->datum=$row->datum;
$stunde->stunde=$row->stunde;
$stunde->ort_kurzbz=$row->ort_kurzbz;
$stunde->lehrfach=$row->lehrfach;
$stunde->lehrfach_bez=$row->lehrfach_bez;
$stunde->lehrfach_nr=$row->lehrfach_nr;
$stunde->lehrform=$row->lehrform;
if ($row->farbe!=' ' && $row->farbe!=null)
$stunde->farbe=$row->farbe;
else
$stunde->farbe='FFFFFF';
$stunde->studiengang_kz=$row->studiengang_kz;
$stunde->studiengang=$row->stg_kurzbz;
$stunde->sem=$row->semester;
$stunde->ver=$row->verband;
$stunde->grp=$row->gruppe;
$stunde->einheit_kurzbz=$row->einheit_kurzbz;
$stunde->titel=$row->titel;
$stunde->anmerkung=$row->anmerkung;
$stunde->updateamum=$row->updateamum;
$stunde->updatevon=$row->updatevon;
$stunde->reservierung=false;
$this->lehrstunden[$i]=$stunde;
}
///////////////////////////////////////////////////////////////////////
// Reservierungsdaten ermitteln
// Datenbankabfrage generieren
$sql_query_reservierung='SELECT * FROM vw_reservierung';
$sql_query_reservierung.=$sql_query;
//echo $sql_query_reservierung;
//Datenbankabfrage
if (! $stpl_tbl=pg_query($this->conn, $sql_query_reservierung))
{
$this->errormsg=pg_last_error($this->conn);
return -2;
}
$num_rows=pg_numrows($stpl_tbl);
$this->anzahl+=$num_rows;
//Daten uebernehmen
for ($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object ($stpl_tbl, $i);
$stunde=new lehrstunde($this->conn);
$stunde->reservierung=true;
$stunde->stundenplan_id=$row->reservierung_id;
$stunde->unr=0;
$stunde->lektor_uid=$row->uid;
$stunde->lektor_kurzbz=$row->uid;
$stunde->datum=$row->datum;
$stunde->stunde=$row->stunde;
$stunde->ort_kurzbz=$row->ort_kurzbz;
//$stunde->lehrfach_nr=$row->lehrfach_nr;
$stunde->lehrfach=$row->titel;
$stunde->lehrfach_bez=$row->beschreibung;
$stunde->studiengang_kz=$row->studiengang_kz;
$stunde->studiengang=$row->stg_kurzbz;
$stunde->sem=$row->semester;
$stunde->ver=$row->verband;
$stunde->grp=$row->gruppe;
$stunde->einheit_kurzbz=$row->einheit_kurzbz;
$stunde->titel=$row->titel;
$stunde->anmerkung=$row->beschreibung;
$this->lehrstunden[]=$stunde;
//var_dump($stunde);
}
//echo $this->anzahl;
return $this->anzahl;
}
/*************************************************************************
* Prueft die geladene Lehrveranstaltung auf Kollisionen im Stundenplan.
* Rueckgabewert 'false' und die Fehlermeldung steht in '$this->errormsg'.
* @param string datum gewuenschtes Datum YYYY-MM-TT
* @param integer stunde gewuenschte Stunde
* @param string ort gewuenschter Ort
* @param string db_stpl_table Tabllenname des Stundenplans im DBMS
* @return boolean true=ok, false=fehler
*************************************************************************/
function kollision($stpl_table='stundenplandev')
{
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_table.TABLE_ID;
$stpl_table=VIEW_BEGIN.$stpl_table;
// Datenbank abfragen
$sql_query="SELECT $stpl_id AS id, lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, einheit_kurzbz, datum, stunde FROM $stpl_table
WHERE datum='$this->datum' AND stunde=$this->stunde AND (ort_kurzbz='$this->ort_kurzbz' OR ";
if ($this->lektor_uid!='_DummyLektor')
$sql_query.="(uid='$this->lektor_uid') AND uid!='_DummyLektor' OR ";
$sql_query.="(studiengang_kz=$this->studiengang_kz AND semester=$this->sem";
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
$sql_query.=" AND (verband='$this->ver' OR verband IS NULL OR verband='' OR verband=' ')";
if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
$sql_query.=" AND (gruppe='$this->grp' OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
if ($this->einheit_kurzbz!=null && $this->einheit_kurzbz!='' && $this->einheit_kurzbz!=' ')
$sql_query.=" AND (einheit_kurzbz='$this->einheit_kurzbz')";
$sql_query.=")) AND unr!=$this->unr";
//echo $sql_query.'<br>';
if (! $erg_stpl=pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_last_error($this->conn);
return true;
}
$anz=pg_numrows($erg_stpl);
//Check
if ($anz==0)
return false;
else
{
$row=pg_fetch_object($erg_stpl);
$this->errormsg="Kollision ($stpl_table): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->einheit_kurzbz - $row->datum/$row->stunde";
return true;
}
}
}
?>
+392
View File
@@ -0,0 +1,392 @@
<?php
/******************************************************************************
* Basisklasse fuer Lehrveranstaltung
* @author Christian Paminger, Werner Masik
* @version 1.0
* @updated 12-Mar-2005
*****************************************************************************/
class lehrveranstaltung
{
// @var integer interne Lehrveranstaltungs-ID (Zaehler aus DB)
var $lehrveranstaltung_id;
// @var string Lehrveranstaltungsnummer
var $lvnr;
// @var string Unterrichtsnummer; zum patizipieren verwendet
var $unr;
// @var string
var $einheit_kurzbz;
// @var string
var $lektor;
// @var integer
var $lehrfach_nr;
// @var string Kurzbz vom Lehrfach
var $lehrfach;
// @var string Kurzbz der Lehrform
var $lehrform;
// @var string lange Beschreibung vom Lehrfach
var $lehrfach_bez;
// @var string Farbe vom Lehrfach
var $lehrfach_farbe;
// @var integer
var $studiengang_kz;
// @var integer
var $fachbereich_id;
// @var string beschreibung von foreign key
var $fachbereich;
// @var integer
var $semester;
// @var string
var $verband;
// @var string
var $gruppe;
// @var string
var $raumtyp;
// @var string
var $raumtypalternativ;
// @var integer
var $semesterstunden;
// @var integer
var $stundenblockung;
// @var integer
var $wochenrythmus;
// @var integer
var $start_kw;
// @var string
var $anmerkung;
// @var string
var $studiensemester_kurzbz;
// @var string
var $fas_id;
// @var boolean;
var $new=true;
// @var DB-Handle;
var $conn;
// @var string
var $errormsg;
function lehrveranstaltung($conn, $id='')
{
$this->conn=$conn;
$this->errormsg='';
if (strlen($id)>0)
{
$this->lehrveranstaltung_id=$id;
$this->load($id);
}
}
/*************************************************************************
* Prueft die geladene Lehrveranstaltung auf Kollisionen im Stundenplan.
* Rueckgabewert 'false' und die Fehlermeldung steht in '$this->errormsg'.
* @param string datum gewuenschtes Datum YYYY-MM-TT
* @param integer stunde gewuenschte Stunde
* @param string ort gewuenschter Ort
* @param string db_stpl_table Tabllenname des Stundenplans im DBMS
* @return boolean true=ok, false=fehler
*************************************************************************/
function check_lva($datum,$stunde,$ort,$stpl_table)
{
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_table.TABLE_ID;
$stpl_table=TABLE_BEGIN.$stpl_table;
/*// Connection holen
if (is_null($conn=$this->getConnection()))
{
return false;
}*/
// Datenbank abfragen
$sql_query="SELECT $stpl_id FROM $stpl_table
WHERE datum='$datum' AND stunde=$stunde
AND ((ort_kurzbz='$ort' OR (uid='$this->lektor' AND uid!='_DummyLektor'))
AND unr!=$this->unr)"; //AND lehrveranstaltung_id!=$this->lehrveranstaltung_id
//$this->errormsg=$sql_query;
if (! $erg_stpl=pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_last_error($this->conn);
//echo $this->errormsg;
return false;
}
$anzahl=pg_numrows($erg_stpl);
//Check
if ($anzahl==0)
return true;
else
{
$row=pg_fetch_row($erg_stpl);
$this->errormsg="Kollision mit StundenplanID($stpl_table.$stpl_id): $row[0]";
return false;
}
}
/*************************************************************************
* Speichert die geladene Lehrveranstaltung im Stundenplan.
* Rueckgabewert 'false' und die Fehlermeldung steht in '$this->errormsg'.
* @param string datum gewuenschtes Datum YYYY-MM-TT
* @param integer stunde gewuenschte Stunde
* @param string ort gewuenschter Ort
* @param string db_stpl_table Tabllenname des Stundenplans im DBMS
* @param string user UID des aktuellen Bentzers
* @return boolean true=ok, false=fehler
*************************************************************************/
function save_stpl($datum,$stunde,$ort,$stpl_table, $user)
{
// Parameter Checken
// Bezeichnung der Stundenplan-Tabelle und des Keys
$stpl_id=$stpl_table.TABLE_ID;
$stpl_table=TABLE_BEGIN.$stpl_table;
// Datenbank abfragen
$sql_query="INSERT INTO $stpl_table
(unr,uid,datum, stunde, ort_kurzbz,lehrfach_nr,lehrform_kurzbz,studiengang_kz,semester,verband,
gruppe, einheit_kurzbz, titel, anmerkung, updatevon, lehrveranstaltung_id)
VALUES ($this->unr,'$this->lektor','$datum',$stunde,
'$ort',$this->lehrfach_nr, '$this->lehrform', $this->studiengang_kz,$this->semester,
'$this->verband','$this->gruppe'";
if ($this->einheit_kurzbz==null)
$sql_query.=',NULL';
else
$sql_query.=",'$this->einheit_kurzbz'";
$sql_query.=",'$this->titel','$this->anmerkung','$user',$this->lehrveranstaltung_id)";
//$this->errormsg=$sql_query.'<br>';
//return false;
if (! $erg_stpl=pg_query($this->conn, $sql_query))
{
$this->errormsg=pg_last_error($this->conn);
//echo $this->errormsg;
return false;
}
return true;
}
/**
* Ladet die Attribute der LVA aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function load($id='')
{
// optional: id setzen
if ($id!='')
$this->lehrveranstaltung_id=$id;
// id vorhanden?
if (strlen($this->lehrveranstaltung_id)==0)
{
$this->errormsg='<i>lehrveranstaltung_id</i> nicht gesetzt.';
return false;
}
// LVA-Daten holen
$sql_query='SELECT * FROM tbl_lehrveranstaltung WHERE lehrveranstaltung_id='.$this->lehrveranstaltung_id;
//$this->errormsg.=$sql_query;
//return false;
if(!($erg=pg_exec($this->conn, $sql_query)))
{
$this->errormsg.=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
if($num_rows!=1)
{
$this->errormsg.="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->lvnr=$row->lvnr;
$this->unr=$row->unr;
$this->einheit_kurzbz=$row->einheit_kurzbz;
$this->lektor=$row->lektor;
$this->lehrfach_nr=$row->lehrfach_nr;
$this->lehrform=$row->lehrform_kurzbz;
$this->studiengang_kz=$row->studiengang_kz;
$this->fachbereich_id=$row->fachbereich_id;
$this->semester=$row->semester;
$this->verband=$row->verband;
$this->gruppe=$row->gruppe;
$this->raumtyp=$row->raumtyp;
$this->raumtypalternativ=$row->raumtypalternativ;
$this->semesterstunden=$row->semesterstunden;
$this->stundenblockung=$row->stundenblockung;
$this->wochenrythmus=$row->wochenrythmus;
$this->start_kw=$row->start_kw;
$this->anmerkung=$row->anmerkung;
$this->studiensemester_kurzbz=$row->studiensemester_kurzbz;
//$this->fas_id=$row->fas_id;
$this->new=false;
return true;
}
/**
* @return boolean true=ok, false=fehler
*/
function save()
{
global $auth;
// Daten zur Person speichern
if (!person::save()) {
$this->errormsg.="Daten zur LVA konnten nicht gespeichert werden.";
return false;
}
if ($this->new) {
$sql_query="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
"lektor,lehrfach_nr,lehrform_kurzbz,studiengang_kz,fachbereich_id,semester,verband,".
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,anmerkung)".
"values(".
"'".$this->lvnr."',".
"'".$this->unr."',".
"'".$this->einheit_kurzbz."',".
"'".$this->lektor."',".
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
"'".$this->lehrform."',".
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
(strlen($this->semester)>0?$this->semester:NULL).",".
"'".$this->verband."',".
"'".$this->gruppe."',".
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",".
")";
} else
{
$sql_query="UPDATE tbl_lehrveranstaltung ".
"SET lvnr='".$this->lvnr."',".
"unr='".$this->unr."',".
"einheit_kurzbz='".$this->einheit_kurzbz."',".
"lektor='".$this->lektor."',".
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",".
"lehrform_kurzbz=".(strlen($this->lehrform)>0?$this->lehrform:NULL).",".
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",".
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",".
"semester=".(strlen($this->semester)>0?$this->semester:NULL).",".
"verband='".$this->verband."',".
"gruppe='".$this->gruppe."',".
"raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",".
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",".
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",".
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",".
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",".
"start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",".
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).
" WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
}
//echo "<br>".$sql_query;
if(!($erg=pg_exec($this->conn, $sql_query)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
return true;
}
/**
* Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die
* Fehlermeldung liegt in errormsg.
* Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft.
* @param string $einheit_kurzbz Einheit
* @param string grp Gruppe
* @param string ver Verband
* @param integer sem Semester
* @param integer stg_kz Kennzahl des Studiengangs
* @return variabel Array mit LVA; <b>false</b> bei Fehler
*/
function getLehrveranstaltungSTPL($db_stpl_table,$studiensemester, $type, $stg_kz, $sem, $lektor, $ver=null, $grp=null, $einheit=null)
{
$lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table;
if (strlen($studiensemester)<=0)
{
$this->errormsg='Ausbildungssemester ist nicht gesetzt!';
return false;
}
else $where=" studiensemester_kurzbz='$studiensemester'";
if ($type=='lektor')
$where.=" AND lektor_uid='$lektor'";
elseif ($type=='einheit')
$where.=" AND einheit='$einheit'";
elseif ($type=='verband')
{
$where.=" AND studiengang_kz='$stg_kz'";
if ($sem>0)
$where.=" AND semester=$sem";
if (strlen($ver)>0 && $ver!=' ')
$where.=" AND verband='$ver'";
if (strlen($grp)>0 && $grp!=' ')
$where.=" AND gruppe='$grp' ";
}
$sql_query='SELECT *, semesterstunden-verplant::smallint AS offenestunden
FROM '.$lva_stpl_view.' JOIN tbl_lehrform ON '.$lva_stpl_view.'.lehrform=tbl_lehrform.lehrform_kurzbz
WHERE '.$where.' AND verplanen ORDER BY offenestunden DESC, lehrfach, lehrform, semester, verband, gruppe, einheit;';
//$this->errormsg=$sql_query;
//return false;
if(!($erg=@pg_exec($this->conn, $sql_query)))
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
$l=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
//$l[$row->unr]=new lehrveranstaltung();
$l[$row->unr]->lehrveranstaltung_id[]=$row->lehrveranstaltung_id;
$l[$row->unr]->lvnr[]=$row->lvnr;
$l[$row->unr]->unr=$row->unr;
$l[$row->unr]->fachbereich_id=$row->fachbereich_id;
$l[$row->unr]->fachbereich=$row->fachbereich_kurzbz;
$l[$row->unr]->lehrfach_nr=$row->lehrfach_nr;
$l[$row->unr]->lehrfach[]=$row->lehrfach;
$l[$row->unr]->lehrfach_bez[]=$row->lehrfach_bez;
$l[$row->unr]->lehrfach_farbe[]=$row->lehrfach_farbe;
$l[$row->unr]->lehrform[]=$row->lehrform;
$l[$row->unr]->lektor_uid[]=$row->lektor_uid;
$l[$row->unr]->lektor[]=trim($row->lektor);
$l[$row->unr]->stg_kz[]=$row->studiengang_kz;
$l[$row->unr]->stg[]=$row->studiengang;
$l[$row->unr]->einheit[]=$row->einheit;
$l[$row->unr]->semester[]=$row->semester;
$l[$row->unr]->verband[]=$row->verband;
$l[$row->unr]->gruppe[]=$row->gruppe;
$l[$row->unr]->raumtyp=$row->raumtyp;
$l[$row->unr]->raumtypalternativ=$row->raumtypalternativ;
$l[$row->unr]->stundenblockung[]=$row->stundenblockung;
$l[$row->unr]->wochenrythmus[]=$row->wochenrythmus;
$l[$row->unr]->semesterstunden[]=$row->semesterstunden;
$l[$row->unr]->start_kw[]=$row->start_kw;
$l[$row->unr]->anmerkung[]=$row->anmerkung;
$l[$row->unr]->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$l[$row->unr]->verplant[]=$row->verplant;
$l[$row->unr]->offenestunden[]=$row->offenestunden;
if (isset($l[$row->unr]->verplant_gesamt))
$l[$row->unr]->verplant_gesamt+=$row->verplant;
else
$l[$row->unr]->verplant_gesamt=$row->verplant;
$lvb=$row->studiengang.'-'.$row->semester;
if ($row->verband!='' && $row->verband!=' ' && $row->verband!='0' && $row->verband!=null)
$lvb.=$row->verband;
if ($row->gruppe!='' && $row->gruppe!=' ' && $row->gruppe!='0' && $row->gruppe!=null)
$lvb.=$row->gruppe;
if ($row->einheit!='' && $row->einheit!=null)
$l[$row->unr]->lehrverband[]=$row->einheit;
else
$l[$row->unr]->lehrverband[]=$lvb;
}
return $l;
}
}
+423
View File
@@ -0,0 +1,423 @@
<?php
/**
* Basisklasse fuer Studenten
* @author Christian Paminger, Werner Masik
* @version 1.0
* @updated 03-Feb-2005
*/
class lfvt
{
/**
* interne Lehrveranstaltungs-ID (Z?hler aus DB)
* @var integer
*/
var $lehrveranstaltung_id;
/**
* Lehrveranstaltungsnummer
* @var string
*/
var $lvnr;
/**
* Unterrichtsnummer; zum patizipieren verwendet
* @var string
*/
var $unr;
/**
* @var string
*/
var $einheit_kurzbz;
/**
* @var string ID aus Datenbank
*/
var $lektor;
/**
* @var string Lektor-Nachname+Vorname+Titel zum leichteren Anzeigen
*/
var $lektorPrettyPrint;
/**
* @var integer
*/
var $lehrfach_nr;
/**
* @var string
*/
var $lehrform;
/**
* @var integer
*/
var $studiengang_kz;
/**
* @var integer
*/
var $fachbereich_id;
/**
* @var integer
*/
var $semester;
/**
* @var string
*/
var $verband;
/**
* @var string
*/
var $gruppe;
/**
* @var string
*/
var $raumtyp;
/**
* @var string
*/
var $raumtypalternativ;
/**
* @var integer
*/
var $semesterstunden;
/**
* @var integer
*/
var $stundenblockung;
/**
* @var integer
*/
var $wochenrythmus;
/**
* @var integer
*/
var $start_kw;
/**
* @var string
*/
var $anmerkung;
/**
* @var string
*/
var $studiensemester_kurzbz;
/**
* @var string
*/
var $fas_id;
/**
* @var boolean;
*/
var $new=true;
/**
* @var string
*/
var $errormsg;
/**
* @var string beschreibung von foreign key
*/
var $fachbereich;
/**
* @var string beschreibung von foreign key
*/
var $lehrfach;
/**
* @var string beschreibung von foreign key
*/
var $conn;
function lfvt($conn,$id='')
{
$this->conn=$conn;
if (strlen($id)>0) {
$this->$lehrveranstaltung_id=$id;
$this->load();
}
}
/**
* Ladet die Attribute der LVA aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function load($id='')
{
// optional: id setzen
if (strlen($id)>0)
$this->$lehrveranstaltung_id=$id;
// id vorhanden?
if (strlen($this->$this->$lehrveranstaltung_id)==0) {
$this->errormsg='<i>lehrveranstaltung_id</i> nicht gesetzt.';
return false;
}
// LVA-Daten holen
$sql_query="SELECT lva.* ".
"FROM tbl_lehrveranstaltung as lva ".
"WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
if(!($erg=pg_exec($this->conn, $sql_query)))
die(pg_errormessage($this->conn));
$num_rows=pg_numrows($erg);
if($num_rows!=1) {
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->lvnr=$row->lvnr;
$this->unr=$row->unr;
$this->einheit_kurzbz=$row->einheit_kurzbz;
$this->lektor=$row->lektor;
$this->lehrfach_nr=$row->lehrfach_nr;
$this->lehrform=$row->lehrform_kurzbz;
$this->studiengang_kz=$row->studiengang_kz;
$this->fachbereich_id=$row->fachbereich_id;
$this->semester=$row->semester;
$this->verband=$row->verband;
$this->gruppe=$row->gruppe;
$this->raumtyp=$row->raumtyp;
$this->raumtypalternativ=$row->raumtypalternativ;
$this->semesterstunden=$row->semesterstunden;
$this->stundenblockung=$row->stundenblockung;
$this->wochenrythmus=$row->wochenrythmus;
$this->start_kw=$row->start_kw;
$this->anmerkung=$row->anmerkung;
$this->studiensemester_kurzbz=$row->studiensemester_kurzbz;
//$this->fas_id=$row->fas_id;
$this->new=false;
return true;
}
/**
* @return boolean true=ok, false=fehler
*/
function save()
{
global $auth;
if (!isset($this->unr)) {
$this->errormsg='unr fehlt';
return false;
}
if (!isset($this->lvnr)) {
$this->errormsg='lvnr fehlt';
return false;
}
if (!isset($this->lektor)) {
$this->errormsg='lektor fehlt';
return false;
}
if (!isset($this->lehrfach_nr)) {
$this->errormsg='lehrfach_nr fehlt';
return false;
}
if (!isset($this->lehrform))
{
$this->errormsg='lehrform fehlt';
return false;
}
if (!isset($this->studiengang_kz)) {
$this->errormsg='studiengang_kz fehlt';
return false;
}
if (!isset($this->fachbereich_id)) {
$this->errormsg='fachbereich_id fehlt';
return false;
}
if (!isset($this->raumtyp)) {
$this->errormsg='raumtyp fehlt';
return false;
}
if (!isset($this->semesterstunden)) {
$this->errormsg='semesterstunden fehlt';
return false;
}
if (!isset($this->stundenblockung)) {
$this->errormsg='stundenblockung fehlt';
return false;
}
if (!isset($this->wochenrythmus)) {
$this->errormsg='wochenrythmus fehlt';
return false;
}
if (!isset($this->studiensemester_kurzbz)) {
$this->errormsg='studiensemester_kurzbz fehlt';
return false;
}
if ($this->new) {
$qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
"lektor,lehrfach_nr,lehrform_kurzbz,studiengang_kz,fachbereich_id,semester,verband,".
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,anmerkung,studiensemester_kurzbz)\n".
"values(".
"'".$this->lvnr."',".
"'".$this->unr."',".
(strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL').",".
"'".$this->lektor."',".
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:'NULL').",".
"'".$this->lehrform."',".
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:'NULL').",".
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:'NULL').",".
(strlen($this->semester)>0?$this->semester:'NULL').",".
"'".$this->verband."',".
"'".$this->gruppe."',".
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":'NULL').",".
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":'NULL').",".
(strlen($this->semesterstunden)>0?$this->semesterstunden:'NULL').",".
(strlen($this->stundenblockung)>0?$this->stundenblockung:'NULL').",".
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:'NULL').",".
(strlen($this->start_kw)>0?$this->start_kw:'NULL').",".
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":'NULL').','.
(strlen($this->studiensemester_kurzbz)>0?"'".$this->studiensemester_kurzbz."'":'NULL').
")";
} else
{
$qry="UPDATE tbl_lehrveranstaltung ".
"SET lvnr='".$this->lvnr."',".
"unr='".$this->unr."',".
"einheit_kurzbz=".(strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL').",".
"lektor='".$this->lektor."',\n".
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:'NULL').",".
"lehrform_kurzbz='".$this->lehrform."',\n".
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:'NULL').",".
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:'NULL').",".
"semester=".(strlen($this->semester)>0?$this->semester:'NULL').",\n".
"verband='".$this->verband."',".
"gruppe='".$this->gruppe."',".
"raumtyp='".$this->raumtyp."',".
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":'NULL').",\n".
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:'NULL').",".
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:'NULL').",".
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:'NULL').",\n".
"start_kw=".($this->start_kw>0?$this->start_kw:'NULL').",".
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":'NULL').
" WHERE lehrveranstaltung_id=".$this->lehrveranstaltung_id;
}
//echo "<br>".$qry.'start_kw: <'.$this->start_kw.'>';
if(!($erg=pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn).' sql: '.$qry;
return false;
}
if ($this->new) {
// neue Lehrveranstaltungs-ID herausfinden und speichern
$lastoid=pg_getlastoid($erg);
$qry="select lehrveranstaltung_id from tbl_lehrveranstaltung where oid=$lastoid";
if(!($erg=pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn).' sql: '.$qry;;
return false;
}
$row=pg_fetch_object($erg,0);
$this->lehrveranstaltung_id=$row->lehrveranstaltung_id;
$this->new=false;
}
return true;
}
function delete() {
global $auth;
if ($this->new) {
$this->errormsg='Datensatz mit new=true kann nicht gel?scht werden.';
return false;
}
$qry="delete from tbl_lehrveranstaltung where lehrveranstaltung_id=".addslashes($this->lehrveranstaltung_id);
if(!($erg=pg_exec($this->conn, $qry)))
{
$this->errormsg=pg_errormessage($this->conn)." \nSQL: ".$qry;
return false;
}
return true;
}
/**
* Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die
* Fehlermeldung liegt in errormsg.
* Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft.
* @param string $einheit_kurzbz Einheit
* @param string grp Gruppe
* @param string ver Verband
* @param integer sem Semester
* @param integer stg_kz Kennzahl des Studiengangs
* @return variabel Array mit LVA; <b>false</b> bei Fehler
*/
function getLVAs($einheit_kurzbz, $grp, $ver, $sem, $stg_kz,$lektor, $stsem='')
{
if (strlen($einheit_kurzbz)>0)
{
// einheit?
//$join=" join tbl_einheitstudent on (m.uid=tbl_einheitstudent.uid) ";
$where=" lva.einheit_kurzbz='".$einheit_kurzbz."'";
}
if (strlen($grp)>0)
{
// Gruppe
$where.=(strlen($where)>0?' and ':'')." lva.gruppe='".$grp."' ";
}
if (strlen($ver)>0)
{
// Verband
$where.=(strlen($where)>0?' and ':'')." lva.verband='".$ver."' ";
}
if (strlen($sem)>0)
{
// Semester
$where.=(strlen($where)>0?' and ':'')." lva.semester=".$sem." ";
}
if (strlen($stg_kz)>0)
{
// Studiengang
$where.=(strlen($where)>0?' and ':'')." lva.studiengang_kz='".$stg_kz."' ";
}
if (strlen($lektor)>0)
{
// Lektor
$where.=(strlen($where)>0?' and ':'')." lva.lektor='".$lektor."' ";
}
if (strlen($stsem)>0)
{
// Studiensemester
$where.=(strlen($where)>0?' and ':'')." lva.studiensemester_kurzbz='".$stsem."' ";
}
$sql_query="set datestyle to german;SELECT lva.*,tbl_lehrfach.bezeichnung as lehrfach_bezeichnung, ".
" tbl_person.nachname || ', ' || tbl_person.titel || ' ' || tbl_person.vornamen as lektorName ".
"FROM tbl_lehrveranstaltung as lva join tbl_lehrfach using(lehrfach_nr) ".
" left join tbl_person on(lva.lektor=tbl_person.uid) ".
(strlen($where)>1?'WHERE '.$where:'').
"ORDER by upper(lva.unr),upper(lva.lvnr)";
//echo $sql_query;
if(!($erg=pg_exec($this->conn, $sql_query))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
$l=new lfvt($this->conn);
$l->lehrveranstaltung_id=$row->lehrveranstaltung_id;
$l->lvnr=$row->lvnr;
$l->unr=$row->unr;
$l->einheit_kurzbz=$row->einheit_kurzbz;
$l->lektor=$row->lektor;
$l->lektorPrettyPrint=$row->lektorname;
$l->lehrfach_nr=$row->lehrfach_nr;
$l->lehrform=$row->lehrform_kurzbz;
$l->studiengang_kz=$row->studiengang_kz;
$l->fachbereich_id=$row->fachbereich_id;
$l->semester=$row->semester;
$l->verband=strlen($row->verband)>0?$row->verband:null;
$l->gruppe=$row->gruppe;
$l->raumtyp=$row->raumtyp;
$l->raumtypalternativ=$row->raumtypalternativ;
$l->semesterstunden=$row->semesterstunden;
$l->stundenblockung=$row->stundenblockung;
$l->wochenrythmus=$row->wochenrythmus;
$l->start_kw=$row->start_kw;
$l->anmerkung=$row->anmerkung;
$l->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$l->lehrfach=$row->lehrfach_bezeichnung;
// lva in Array speichern
$result[]=$l;
}
return $result;
}
}
+324
View File
@@ -0,0 +1,324 @@
<?php
/*
$Header: /Pfad/Kodierrichtlinien.tex,v 1.2 2004/02/29 17:05:38 pam Exp $
$Log: Kodierrichtlinien.tex,v $
Revision 1.2 2004/02/29 17:05:38 pam
Fehler in Umlauten beseitigt.
*/
/**
* @class lv_info
*
* @author Andreas Oesterreicher
*
* @date 29.9.2005
*
* @version $Revision: 1.2 $
*
* @brief Bearbeitungsschritte fuer die Tabelle LVINFO
*/
class lv_info
{
//integer
var $lvinfo_id;
//integer
var $studiensemester_kurzbz;
//String
var $lehrziele;
//String
var $lehrinhalte;
//String
var $voraussetzungen;
//String
var $basiert_auf;
//String
var $kooperiert_mit;
//String
var $liefert_fuer;
//String
var $unterlagen;
//String
var $pruefungsordnung;
//String
var $anmerkungen;
//String
var $niveau;
//String
var $lehrformen;
//boolean
var $genehmigt='false';
//boolean
var $aktiv='true';
//timestamp
var $updateamum;
//String
var $updatevon;
//integer
var $lehrfach_nr;
//String
var $sprache;
//String
var $lehrende;
//String
var $lehrfach;
//smalint
var $semstunden;
//boolean
var $neu;
//string
var $lastqry;
//int
var $anz;
//Connection
var $conn;
//Array
var $result = array();
var $errormsg;
/********************************************************************
* @brief Konstruktor
*
* @param $conn Connection zur DB
********************************************************************/
function lv_info($conn)
{
$this->conn = $conn;
}
/********************************************************************
* @brief Speichert die Daten in der Datenbank ab. Wenn new auf true
* gesetzt ist wird INSERT ausgefuehrt sonst UPDATE
* @param keine
*
* @return true=Ok false=Fehler
********************************************************************/
function save()
{
if (is_null($this->conn))
{
$this->errormsg = "Fehler: Keine Datenbank connection vorhanden";
return false;
}
//Variablen ueberpruefen
//$this->checkvars();
if($this->neu)
{
$sql_query = "INSERT INTO tbl_lvinfo (studiensemester_kurzbz,lehrziele,lehrinhalte,voraussetzungen,basiert_auf,".
"kooperiert_mit, liefert_fuer, unterlagen, pruefungsordnung, anmerkungen, niveau,".
"lehrformen, genehmigt, aktiv,updatevon,lehrfach_nr, sprache, lehrende, lehrfach, semstunden)".
" VALUES('$this->studiensemester_kurzbz',".
(strlen($this->lehrziele)>0?"'".$this->lehrziele."'":'NULL').",".
(strlen($this->lehrinhalte)>0?"'".$this->lehrinhalte."'":'NULL').",".
(strlen($this->voraussetzungen)>0?"'".$this->voraussetzungen."'":'NULL').",".
(strlen($this->basiert_auf)>0?"'".$this->basiert_auf."'":'NULL').",".
(strlen($this->kooperiert_mit)>0?"'".$this->kooperiert_mit."'":'NULL').",".
(strlen($this->liefert_fuer)>0?"'".$this->liefert_fuer."'":'NULL').",".
(strlen($this->unterlagen)>0?"'".$this->unterlagen."'":'NULL').",".
(strlen($this->pruefungsordnung)>0?"'".$this->pruefungsordnung."'":'NULL').",".
(strlen($this->anmerkungen)>0?"'".$this->anmerkungen."'":'NULL').",".
(strlen($this->niveau)>0?"'".$this->niveau."'":'NULL').",".
(strlen($this->lehrformen)>0?"'".$this->lehrformen."'":'NULL').",".
($this->genehmigt=="'true'"?'true':'false').",".($this->aktiv=='true'?'true':'false').",'$this->updatevon',$this->lehrfach_nr,'$this->sprache',".
(strlen($this->lehrende)>0?"'".$this->lehrende."'":'NULL').",".
(strlen($this->lehrfach)>0?"'".$this->lehrfach."'":'NULL').",".
($this->semstunden!=''?"'".$this->semstunden."'":'NULL') .");";
}
else
{
$sql_query = "UPDATE tbl_lvinfo SET".
" studiensemester_kurzbz='$this->studiensemester_kurzbz'".
", lehrziele=".(strlen($this->lehrziele)>0?"'".$this->lehrziele."'":'NULL') .
", lehrinhalte=".(strlen($this->lehrinhalte)>0?"'".$this->lehrinhalte."'":'NULL') .
", voraussetzungen=".(strlen($this->voraussetzungen)>0?"'".$this->voraussetzungen."'":'NULL') .
", basiert_auf=".(strlen($this->basiert_auf)>0?"'".$this->basiert_auf."'":'NULL') .
", kooperiert_mit=".(strlen($this->kooperiert_mit)>0?"'".$this->kooperiert_mit."'":'NULL') .
", liefert_fuer=".(strlen($this->liefert_fuer)>0?"'".$this->liefert_fuer."'":'NULL') .
", unterlagen=".(strlen($this->unterlagen)>0?"'".$this->unterlagen."'":'NULL') .
", pruefungsordnung=".(strlen($this->pruefungsordnung)>0?"'".$this->pruefungsordnung."'":'NULL') .
", anmerkungen=".(strlen($this->anmerkungen)>0?"'".$this->anmerkungen."'":'NULL') .
", niveau=".(strlen($this->niveau)>0?"'".$this->niveau."'":'NULL') .
", lehrformen=".(strlen($this->lehrformen)>0?"'".$this->lehrformen."'":'NULL') .
", lehrende=".(strlen($this->lehrende)>0?"'".$this->lehrende."'":'NULL') .
($this->genehmigt==''?'':", genehmigt=$this->genehmigt").
($this->aktiv==''?'':", aktiv=$this->aktiv").
", updateamum=now()".
", updatevon='".$_SERVER["REMOTE_USER"]."'".
", lehrfach_nr=$this->lehrfach_nr".
", lehrfach='$this->lehrfach'".
($this->semstunden!=''?", semstunden=$this->semstunden ":'').
", sprache='$this->sprache' WHERE lvinfo_id=$this->lvinfo_id";
}
$this->lastqry=$sql_query."--$this->genehmigt--";
//echo $sql_query;
if(pg_exec($this->conn,$sql_query))
{
return true;
}
else
{
$this->errormsg=pg_errormessage($this->conn);
return false;
}
}
/********************************************************************
* @brief Fuehrt einen Selectbefehl aus und Schreibt das Ergebnis in
* $result
*
* @param $sql_query - Select befehl
*
* @return true=Ok, Erg in $Result false=Fehler, Meldung in $errormsg
* Anzahl der Datensaetze steht in $anz
********************************************************************/
function getData($sql_query)
{
if (is_null($this->conn))
{
$this->errormsg = "Fehler: Keine Datenbank connection vorhanden";
return false;
}
if($res=pg_exec($this->conn,$sql_query))
{
while($row=pg_fetch_object($res))
{
$elem = new lv_info($this->conn);
$elem->lvinfo_id = $row->lvinfo_id;
$elem->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$elem->lehrziele = $row->lehrziele;
$elem->lehrinhalte = $row->lehrinhalte;
$elem->voraussetzungen = $row->voraussetzungen;
$elem->basiert_auf = $row->basiert_auf;
$elem->kooperiert_mit = $row->kooperiert_mit;
$elem->liefert_fuer = $row->liefert_fuer;
$elem->unterlagen = $row->unterlagen;
$elem->pruefungsordnung = $row->pruefungsordnung;
$elem->anmerkungen = $row->anmerkungen;
$elem->niveau = $row->niveau;
$elem->lehrformen = $row->lehrformen;
$elem->genehmigt = $row->genehmigt;
$elem->aktiv = $row->aktiv;
$elem->updateamum = $row->updateamum;
$elem->updatevon = $row->updatevon;
$elem->lehrfach_nr = $row->lehrfach_nr;
$elem->lehrfach = $row->lehrfach;
$elem->sprache = $row->sprache;
$elem->lehrende = $row->lehrende;
$elem->semstunden = $row->semstunden;
$this->result[] = $elem;
}
$this->anz = pg_num_rows($res);
}
else
{
$this->errormsg = pg_errormessage($this->conn);
return false;
}
return true;
}
/********************************************************************
* @brief Liefert alle Datensaetze der Tabelle tbl_lvinfo
*
* @param keine
*
* @return true=Ok, Erg in $Result false=Fehler, Meldung in $errormsg
********************************************************************/
function getAll()
{
$sql_query = "Select * from tbl_lvinfo";
return $this->getData($sql_query);
}
/********************************************************************
* @brief Liefert alle Datensaetze der Tabelle tbl_lvinfo mit der
* lvinfo_id $id
* @param $id lvinfo_id
*
* @return true=Ok, Erg in $Result false=Fehler, Meldung in $errormsg
********************************************************************/
function getByID($id)
{
$sql_query = "SELECT * from tbl_lvinfo WHERE lvinfo_id=$id";
return $this->getData($sql_query);
}
/********************************************************************
* @brief Liefert alle Datensaetze mit den Kriterien die ueberg. wurden
*
* @param $lf Lehrfach
* $stg Studiengang
* $sem Semester
* $sprache Sprache
* $studiensemester_kurzbz Studiensemester
*
* @return true=Ok, Erg in $Result false=Fehler, Meldung in $errormsg
********************************************************************/
function getByElem($lf,$stg,$sem,$sprache='',$studiensemester_kurzbz='',$order='version DESC')
{
if($sprache=='')
{
if($studiensemester_kurzbz=='')
{
$sql_query = "SELECT * from tbl_lvinfo, tbl_lehrfach WHERE tbl_lvinfo.lehrfach_nr=tbl_lehrfach.lehrfach_nr ".
"AND tbl_lvinfo.lehrfach_nr=$lf AND studiengang_kz = $stg AND semester = $sem AND tbl_lvinfo.aktiv=true ORDER BY $order";
}
else
{
$sql_query = "SELECT * from tbl_lvinfo, tbl_lehrfach WHERE tbl_lvinfo.lehrfach_nr=tbl_lehrfach.lehrfach_nr ".
"AND tbl_lvinfo.lehrfach_nr=$lf AND studiengang_kz = $stg AND semester = $sem AND studiensemester_kurzbz='$studiensemester_kurzbz' AND tbl_lvinfo.aktiv=true ORDER BY $order";
}
}
else
{
if($studiensemester_kurzbz=='')
{
$sql_query = "SELECT * from tbl_lvinfo, tbl_lehrfach WHERE tbl_lvinfo.lehrfach_nr=tbl_lehrfach.lehrfach_nr ".
"AND tbl_lvinfo.sprache='$sprache' AND tbl_lvinfo.lehrfach_nr=$lf AND studiengang_kz = $stg AND semester = $sem AND tbl_lvinfo.aktiv=true ORDER BY $order";
}
else
{
$sql_query = "SELECT * from tbl_lvinfo, tbl_lehrfach WHERE tbl_lvinfo.lehrfach_nr=tbl_lehrfach.lehrfach_nr ".
"AND tbl_lvinfo.sprache='$sprache' AND tbl_lvinfo.lehrfach_nr=$lf AND studiengang_kz = $stg AND semester = $sem AND studiensemester_kurzbz='$studiensemester_kurzbz' AND tbl_lvinfo.aktiv=true ORDER BY $order";
}
}
return $this->getData($sql_query);
}
/********************************************************************
* @brief Sieht in der DB nach ob ein Eintrag mit den Kriterien
* vorhanden ist.
* @param $studiensemester_kurzbz Studiensemester
* $lf Lehrfach
*
* @return true=Vorhanden, id des DS in $lvinfo_id false=Nicht vorhanden
********************************************************************/
function vorhanden($lf, $studiensemester_kurzbz, $sprache)
{
$sql_query = "SELECT * from tbl_lvinfo WHERE ".
"lehrfach_nr=$lf AND studiensemester_kurzbz='$studiensemester_kurzbz' AND sprache='$sprache' AND aktiv=true";
$res=pg_exec($this->conn, $sql_query);
if(pg_numrows($res)>0)
{
$row=pg_fetch_object($res);
$this->lvinfo_id=$row->lvinfo_id;
return true;
}
else
{
return false;
}
}
}
?>
+359
View File
@@ -0,0 +1,359 @@
<?php
/*
$Header: /Pfad/Kodierrichtlinien.tex,v 1.2 2004/02/29 17:05:38 pam Exp $
$Log: Kodierrichtlinien.tex,v $
Revision 1.2 2004/02/29 17:05:38 pam
Fehler in Umlauten beseitigt.
*/
/**
* @class lv_verteilung
*
* @author Andreas Österreicher
*
* @date 13.9.2005
*
* @version $Revision: 1.2 $
*
* @brief Bearbeitungsschritte für LV Veranstaltungen
*/
class lv_verteilung
{
// @var integer interne Lehrveranstaltungs-ID (Zaehler aus DB)
var $lehrveranstaltung_id;
// @var string Lehrveranstaltungsnummer
var $lvnr;
// @var string Unterrichtsnummer; zum patizipieren verwendet
var $unr;
// @var string
var $einheit_kurzbz;
// @var string
var $lektor;
// @var integer
var $lehrfach_nr;
// @var string
var $lehrfach_kurzbz;
// @var string
var $lehrform;
// @var integer
var $studiengang_kz;
// @var string
var $studiengang_kurzbz;
// @var integer
var $fachbereich_id;
// @var integer
var $semester;
// @var string
var $verband;
// @var string
var $gruppe;
// @var string
var $raumtyp;
// @var string
var $raumtypalternativ;
// @var integer
var $semesterstunden;
// @var integer
var $stundenblockung;
// @var integer
var $wochenrythmus;
// @var integer
var $start_kw;
// @var string
var $anmerkung;
// @var string
var $studiensemester_kurzbz;
// @var string
var $fas_id;
// @var string
var $lehrevz;
// @var bool;
var $lehre;
// @var string
var $lehrfach_bz;
// @var bool
var $new;
// @var string
var $errormsg;
// @var SQL Connection
var $connection;
// @var Array für Rückgabe
var $retwert = array();
// @var int
var $anz;
/********************************************************************
* @brief Konstruktor - Liefert die Connection als Parameter
*
* @param $conn Connection
********************************************************************/
function lv_verteilung($conn)
{
$this->connection = $conn;
}
function load($lv_id)
{
$sql_query = "SELECT * FROM tbl_lehrveranstaltung where lehrveranstaltung_id='$lv_id'";
$result = pg_exec($this->connection,$sql_query);
if($row=pg_fetch_object($result))
{
$this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->lvnr = $row->lvnr;
$this->einheit_kurzbz = $row->einheit_kurzbz;
$this->lektor = $row->lektor;
$this->lehrfach_nr = $row->lehrfach_nr;
$this->lehrform = $row->lehrform_kurzbz;
$this->studiengang_kz = $row->studiengang_kz;
$this->fachbereich_id = $row->fachbereich_id;
$this->semester = $row->semester;
$this->verband = $row->verband;
$this->gruppe = $row->gruppe;
$this->raumtyp = $row->raumtyp;
$this->raumtypalternativ = $row->raumtypalernativ;
$this->semesterstunden = $row->semesterstunden;
$this->stundenblockung = $row->stundenblockung;
$this->wochenrythmus = $row->wochenrythmus;
$this->start_kw = $row->start_kw;
$this->anmerkung = $row->anmerkung;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->fas_id = $row->fas_id;
$this->unr = $row->unr;
$this->lehre = $row->lehre;
}
else
{
$this->errormsg = "Kein Datensatz mit dieser ID vorhanden";
return false;
}
return true;
}
/********************************************************************
* @brief Prüft ob die Variablen gültige Werte enthalten
*
* @return true=OK false=Fehler
********************************************************************/
function checkvars()
{
if(!is_numeric($this->semesterstunden))
{
$this->errormsg = "Fehler: Semesterstunden muss eine Zahl sein";
return false;
}
if(!is_numeric($this->stundenblockung))
{
$this->errormsg = "Fehler: Stundenblockung muss eine Zahl sein";
return false;
}
if(!is_numeric($this->wochenrythmus))
{
$this->errormsg = "Fehler: Wochenrythmus muss eine Zahl sein";
return false;
}
if(strlen($this->lvnr)==0)
{
$this->errormsg = "Fehler: LVNR muss eingegeben werden";
return false;
}
if(!is_numeric($this->start_kw) AND strlen($this->start_kw)>0)
{
$this->errormsg = "Fehler: Start-KW muss eine Zahl sein";
return false;
}
return true;
}
/********************************************************************
* @brief Speichert die Daten in der Datenbank ab. Wenn new auf true
* gesetzt ist wird INSERT ausgeführt sonst UPDATE
* @param keine
*
* @return true=Ok false=Fehler
********************************************************************/
function save()
{
// Connection überprüfen
if (is_null($this->connection))
{
$this->errormsg = "Fehler: Keine Datenbank connection vorhanden";
return false;
}
if ($this->new) {
$qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,".
"lektor,lehrfach_nr,lehrform_kurzbz,studiengang_kz,fachbereich_id,semester,verband,".
"gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,".
"wochenrythmus,start_kw,anmerkung,studiensemester_kurzbz,lehre)".
"values(".
"'".$this->lvnr."',".
(strlen($this->unr)>0?"'".$this->unr."'":'NULL').",".
(strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL').",".
"'".$this->lektor."',".
(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:'0').",".
"'".$this->lehrform."',".
(strlen($this->studiengang_kz)>0?$this->studiengang_kz:'0').",".
(strlen($this->fachbereich_id)>0?$this->fachbereich_id:'NULL').",".
(strlen($this->semester)>0?$this->semester:'NULL').",".
(strlen($this->verband)>0?"'".$this->verband."'":'NULL').",".
(strlen($this->gruppe)>0?"'".$this->gruppe."'":'NULL').",".
(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":'0').",".
(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":'NULL').",".
(strlen($this->semesterstunden)>0?$this->semesterstunden:'1').",".
(strlen($this->stundenblockung)>0?$this->stundenblockung:'1').",".
(strlen($this->wochenrythmus)>0?$this->wochenrythmus:'1').",".
(strlen($this->start_kw)>0?$this->start_kw:'NULL').",".
(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":'NULL').",".
(strlen($this->studiensemester_kurzbz)>0?"'".$this->studiensemester_kurzbz."'":'0').",".
(($this->lehre=='on')?'true':'false').
")";
}
else
{
$qry="UPDATE tbl_lehrveranstaltung ".
"SET lvnr='".$this->lvnr."',".
"unr=".(strlen($this->unr)>0?"'".$this->unr."'":'NULL').",".
"einheit_kurzbz=".(strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL').",".
"lektor='".$this->lektor."',".
"lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:'0').",".
"lehrform_kurzbz='".$this->lehrform."',".
"studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:'0').",".
"fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:'NULL').",".
"semester=".(strlen($this->semester)>0?$this->semester:'NULL').",".
"verband=".(strlen($this->verband)>0?"'".$this->verband."'":'NULL').",".
"gruppe=".(strlen($this->gruppe)>0?"'".$this->gruppe."'":'NULL').",".
"raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":'0').",".
"raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":'NULL').",".
"semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:'1').",".
"stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:'1').",".
"wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:'1').",".
"start_kw=".(strlen($this->start_kw)>0?$this->start_kw:'NULL').",".
"anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":'NULL').",".
"studiensemester_kurzbz=".(strlen($this->studiensemester_kurzbz)>0?"'".$this->studiensemester_kurzbz."'":'0').",".
"lehre=".(($this->lehre=='on')?'true':'false').
" WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'";
}
//echo $qry.':'.$this->lehre;
if($this->checkvars())
{
if(!($erg=pg_exec($this->connection, $qry)))
{
$this->errormsg=pg_errormessage($this->connection);
return false;
}
}
else
{
return false;
}
return true;
}
/********************************************************************
* @brief Liefert die Datensätze aus der Tabelle tbl_lehrveranstaltung
* die zu diesen Kriterien passen
* @param $stsem Studiensemester / -1 wenn keines gewählt
* $sem Semester / -1 wenn keines gewählt
* $stg Studiengang / -1 wenn keiner gewählt
* $lektor Lektor / -1 wenn keiner gewählt
* @return $result=Array mit den Elementen false=Fehler
********************************************************************/
function getTab($stsem, $sem, $stg, $lektor, $order)
{
$sql_query="SELECT a.semester As sem,a.lehre as lvlehre, * FROM (SELECT * FROM public.tbl_lehrveranstaltung";
$and = false;
//Zusammenstöpseln des SQL Strings
if($lektor!=-1 OR $stsem!=-1 OR $stg!=-1)
{
$sql_query = $sql_query." WHERE";
}
//Zusammenstöpseln des SQL Strings
if($lektor!=-1)
{
$sql_query = $sql_query." lektor='$lektor'";
$and=true;
}
if($stsem!=-1)
{
if($and)
$sql_query = $sql_query." AND studiensemester_kurzbz='$stsem'";
else
$sql_query = $sql_query." studiensemester_kurzbz='$stsem'";
$and=true;
}
if($stg!=-1)
{
if($sem!=-1)
{
if($and)
$sql_query = $sql_query." AND studiengang_kz='$stg' AND semester='$sem'";
else
$sql_query = $sql_query." studiengang_kz='$stg' AND semester='$sem'";
}
else
{
if($and)
$sql_query = $sql_query." AND studiengang_kz='$stg'";
else
$sql_query = $sql_query." studiengang_kz='$stg'";
}
}
$sql_query = $sql_query.") AS a, tbl_lehrfach b WHERE a.lehrfach_nr=b.lehrfach_nr ORDER BY $order";
//echo $sql_query;
$result = pg_exec($this->connection,$sql_query);
$this->anz = pg_numrows($result);
while($row=pg_fetch_object($result))
{
$lv = new lv_verteilung($connection);
$lv->lehrveranstaltung_id=$row->lehrveranstaltung_id;
$lv->lvnr = $row->lvnr;
$lv->einheit_kurzbz = $row->einheit_kurzbz;
$lv->lektor = $row->lektor;
$lv->lehrfach_nr = $row->lehrfach_nr;
$lv->lehrform = $row->lehrform_kurzbz;
$lv->studiengang_kz = $row->studiengang_kz;
$lv->fachbereich_id = $row->fachbereich_id;
$lv->semester = $row->sem;
$lv->verband = $row->verband;
$lv->gruppe = $row->gruppe;
$lv->raumtyp = $row->raumtyp;
$lv->raumtypalternativ = $row->raumtypalternativ;
$lv->semesterstunden = $row->semesterstunden;
$lv->stundenblockung = $row->stundenblockung;
$lv->wochenrythmus = $row->wochenrythmus;
$lv->start_kw = $row->start_kw;
$lv->anmerkung = $row->anmerkung;
$lv->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$lv->fas_id = $row->fas_id;
$lv->unr = $row->unr;
$lv->lehrfach_kurzbz = $row->kurzbz;
$lv->lehrevz = $row->lehrevz;
$lv->lehre = $row->lvlehre;
$lv->lehrfach_bz = $row->bezeichnung;
$this->retwert[] = $lv;
}
if($this->anz>0)
return true;
else
return false;
}
}
+84
View File
@@ -0,0 +1,84 @@
<?php
class mailgrp
{
//String
var $mailgrp_kurzbz;
//Int
var $studiengang_kz;
//string
var $beschreibung;
//bool
var $sichtbar;
//bool
var $generiert;
//bool
var $aktiv;
//array
var $result = array();
//string
var $errormsg;
// resource
var $conn;
function mailgrp($conn)
{
$this->conn=$conn;
}
/**
* Verbindung zur Datenbank herstellen
* @return PostgreSQL-Connection oder NULL
function getConnection() {
if (!$conn = @pg_pconnect(CONN_STRING)) {
$this->errormsg="Es konnte keine Verbindung zum Server ".
"aufgebaut werden.";
return null;
}
return $conn;
}*/
/**
* Liefert alle Elemente der tbl_mailgrp
* @param studiengang_kz
* @return true wenn OK false wenn Fehler
*/
function getAll($studiengang_kz='')
{
if (is_null($this->conn)) {
$this->errormsg = "Keine Connection vorhanden";
return false;
}
if (strlen($this->studiengang_kz)>0)
{
$where=" where studiengang_kz='".$studiengang_kz."' ";
} else
{
$where="";
}
$qry="select * FROM tbl_mailgrp".
"$where order by mailgrp_kurzbz";
if(!($erg=pg_exec($this->conn, $qry))) {
$this->errormsg=pg_errormessage($this->conn);
return false;
}
while($row=pg_fetch_object($erg))
{
$l=new mailgrp($this->conn);
$l->mailgrp_kurzbz = $row->mailgrp_kurzbz;
$l->studiengang_kz = $row->studiengang_kz;
$l->beschreibung = $row->beschreibung;
$l->aktiv = $row->aktiv;
$l->generiert = $row->generiert;
$l->sichtbar = $row->sichtbar;
$result[]=$l;
}
return $result;
}
}
?>
+362
View File
@@ -0,0 +1,362 @@
<?php
/**
* @author Christian Paminger, Werner Masik (werner@gefi.at)
* @version 1.0
* @created 22-Okt-2004
* @updated 29.10.2004 (WM)
*/
class mitarbeiter extends person
{
/**
* @var boolean
*/
var $personalnr;
/**
* @var string
*/
var $kurzbz;
/**
* @var boolean true=lektor, false=sonstiger MA
*/
var $lektor;
/**
* @var boolean
*/
var $fixangestellt;
/**
* @var string
*/
var $telefonklappe;
/**
* @var funktion
*/
var $funktion;
/**
* @var mitarbeiter
*/
var $mitarbeiter;
/**
* @var string
*/
var $errormsg;
/**
* @var string?
*/
var $updateamum;
/**
* @var string
*/
var $updatevon;
/**
* @var string
*/
var $ort_kurzbz='0';
function mitarbeiter($conn,$uid='')
{
$this->conn=$conn;
if (strlen($uid)>0) {
$this->uid=$uid;
$this->load();
}
}
/**
* @return boolean true=ok, false=fehler
*/
function save()
{
global $auth;
// uid vorhanden?
if (strlen($this->uid)==0) {
$this->errormsg='<i>uid</i> nicht gesetzt.';
return false;
}
// Connection holen
if (is_null($conn=person::getConnection())) {
return false;
}
// Daten zur Person speichern
if (!person::save()) {
$this->errormsg.="<br/>Daten zur Person konnten nicht gespeichert werden.";
return false;
}
if ($this->new) {
$qry="INSERT INTO tbl_mitarbeiter(uid,personalnummer,kurzbz,".
"lektor,fixangestellt,telefonklappe,updateamum,updatevon, ort_kurzbz)".
"values(".
"'".$this->uid."',".
"'".$this->personalnummer."',".
"'".$this->kurzbz."','".
($this->lektor?'t':'f')."','".
($this->fixangestellt?'t':'f')."',".
"'".$this->telefonklappe."',".
"now(),'".$_SERVER['PHP_AUTH_USER']."', ".($this->ort_kurzbz!='0'?"'$this->ort_kurzbz'":'NULL').
")";
} else
{
$qry="UPDATE tbl_mitarbeiter ".
"SET personalnummer='".$this->personalnummer."',".
"kurzbz='".$this->kurzbz."',".
"lektor='".($this->lektor?'t':'f')."',".
"fixangestellt='".($this->fixangestellt?'t':'f')."',".
"telefonklappe='".$this->telefonklappe."',".
"updateamum=now(),updatevon='".$_SERVER['PHP_AUTH_USER']."', ort_kurzbz=".($this->ort_kurzbz!='0'?"'$this->ort_kurzbz'":'NULL').
" WHERE uid='".$this->uid."'";
}
//echo "<br>".$qry;
if(!($erg=pg_exec($conn, $qry)))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
return true;
}
/**
* Ladet die Attribute des Studenten aus der Datenbank. Bei Fehler ist der
* Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
*/
function load($uid='')
{
// optional: uid setzen
if (strlen($uid)>0)
$this->uid=$uid;
// uid vorhanden?
if (strlen($this->uid)==0) {
$this->errormsg='<i>uid</i> nicht gesetzt.';
return false;
}
// Connection holen
if (is_null($conn=person::getConnection())) {
return false;
}
// Daten zur Person laden
if (!person::load()) {
$this->errormsg.="<br/>Daten zur Person konnten nicht geladen werden.";
return false;
}
// MA-Daten holen
$sql_query="SELECT m.personalnummer,m.kurzbz,m.lektor,m.fixangestellt,m.telefonklappe,m.updateamum,m.updatevon, m.ort_kurzbz ".
"FROM tbl_mitarbeiter as m ".
"WHERE uid='".$this->uid."'";
if(!($erg=pg_exec($conn, $sql_query)))
die(pg_errormessage($conn));
$num_rows=pg_numrows($erg);
if($num_rows!=1) {
$this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!";
return false;
}
$row=pg_fetch_object($erg,0);
$this->personalnummer=$row->personalnummer;
$this->kurzbz=$row->kurzbz;
$this->lektor=$row->lektor=='t'?true:false;
$this->fixangestellt=$row->fixangestellt=='t'?true:false;
$this->telefonklappe=$row->telefonklappe;
$this->updateamum=$row->updateamum;
$this->updatevon=$row->updatevon;
$this->ort_kurzbz=$row->ort_kurzbz;
return true;
}
/**
* Loescht den Mitarbeiter aus der Datenbank. Bei Fehler ist der Rueckgabewert
* 'false' und die Fehlermeldung steht in 'errormsg'.
* @return boolean true=ok, false=fehler
* vererbt, wenn Person gelöscht wird, sollte wahrscheinlich auch
* automatisch der Eintrag in den anderen Tabellen gelöscht werden
*/
/*
function delete()
{
if (is_null($conn=$this->getConnection())) {
return false;
}
return true;
}*/
/**
* gibt array mit allen Lektoren zurück
* @return array mit Lektoren
*/
function getLektoren()
{
if (is_null($conn=$this->getConnection()))
{
return false;
}
$sql_query="set datestyle to german;SELECT tbl_person.*,".
"m.personalnummer,m.kurzbz,m.lektor,m.fixangestellt,m.telefonklappe, m.ort_kurzbz ".
"FROM tbl_person join tbl_mitarbeiter as m using(uid) ".
"WHERE m.lektor=true ".
"ORDER by upper(tbl_person.nachname),upper(tbl_person.vornamen)";
if(!($erg=@pg_exec($conn, $sql_query))) {
$this->errormsg=pg_errormessage($conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
$l=new mitarbeiter($this->conn);
// Personendaten
$l->uid=$row->uid;
$l->titel=$row->titel;
$l->vornamen=$row->vornamen;
$l->nachname=$row->nachname;
$l->gebdatum=$row->gebdatum;
$l->gebort=$row->gebort;
$l->gebzeit=$row->gebzeit;
$l->foto=$row->foto;
$l->anmerkungen=$row->anmerkungen;
$l->aktiv=$row->aktiv=='t'?true:false;
$l->email=$row->email;
$l->homepage=$row->homepage;
$l->updateamum=$row->updateamum;
$l->updatevon=$row->updatevon;
// Lektorendaten
$l->personalnummer=$row->personalnummer;
$l->kurzbz=$row->kurzbz;
$l->lektor=$row->lektor=='t'?true:false;
$l->fixangestellt=$row->fixangestellt=='t'?true:false;
$l->telefonklappe=$row->telefonklappe;
$l->ort_kurzbz=$row->ort_kurzbz;
// Lektor in Array speichern
$result[]=$l;
}
return $result;
}
/**
* gibt array mit allen Mitarbeitern zurück
* @param $order gibt die spalte an nach der Sortiert werden soll
* @return array mit MA
*/
function getAll($order='upper(tbl_person.nachname),upper(tbl_person.vornamen)')
{
if (is_null($conn=$this->getConnection()))
{
return false;
}
$sql_query="set datestyle to german;SELECT tbl_person.*,".
"m.personalnummer,m.kurzbz,m.lektor,m.fixangestellt,m.telefonklappe, m.ort_kurzbz ".
"FROM tbl_person join tbl_mitarbeiter as m using(uid) ".
"ORDER by $order";
if(!($erg=@pg_exec($conn, $sql_query)))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
$l=new mitarbeiter($this->conn);
// Personendaten
$l->uid=$row->uid;
$l->titel=$row->titel;
$l->vornamen=$row->vornamen;
$l->nachname=$row->nachname;
$l->gebdatum=$row->gebdatum;
$l->gebort=$row->gebort;
$l->gebzeit=$row->gebzeit;
$l->foto=$row->foto;
$l->anmerkungen=$row->anmerkungen;
$l->aktiv=$row->aktiv=='t'?true:false;
$l->email=$row->email;
$l->homepage=$row->homepage;
$l->updateamum=$row->updateamum;
$l->updatevon=$row->updatevon;
// Lektorendaten
$l->personalnummer=$row->personalnummer;
$l->kurzbz=$row->kurzbz;
$l->lektor=($row->lektor=='t'?'true':'false');
$l->fixangestellt=($row->fixangestellt=='t'?'true':'false');
$l->telefonklappe=$row->telefonklappe;
$l->ort_kurzbz=$row->ort_kurzbz;
// MA in Array speichern
$result[]=$l;
}
return $result;
}
/**
* gibt array mit allen Mitarbeitern zurueck
* @return array mit Mitarbeitern
*/
function getMitarbeiter($lektor=true,$fixangestellt=null,$stg_kz=null,$fachbereich_id=null)
{
if (is_null($conn=$this->getConnection()))
{
return false;
}
$sql_query='SELECT DISTINCT vw_mitarbeiter.* FROM vw_mitarbeiter
LEFT OUTER JOIN tbl_personfunktion USING(uid)
WHERE';
if (!$lektor)
$sql_query.=' NOT';
$sql_query.=' lektor';
if ($fixangestellt!=null)
{
$sql_query.=' AND';
if (!$fixangestellt)
$sql_query.=' NOT';
$sql_query.=' fixangestellt';
}
if ($stg_kz!=null)
$sql_query.=' AND studiengang_kz='.$stg_kz;
if ($fachbereich_id!=null)
$sql_query.=' AND fachbereich_id='.$fachbereich_id;
$sql_query.=' ORDER BY nachname, vornamen, kurzbz';
//echo $sql_query;
if(!($erg=@pg_query($conn, $sql_query)))
{
$this->errormsg=pg_errormessage($conn);
return false;
}
$num_rows=pg_numrows($erg);
$result=array();
for($i=0;$i<$num_rows;$i++)
{
$row=pg_fetch_object($erg,$i);
$l=new mitarbeiter($this->conn);
// Personendaten
$l->uid=$row->uid;
$l->titel=$row->titel;
$l->vornamen=$row->vornamen;
$l->nachname=$row->nachname;
$l->gebdatum=$row->gebdatum;
$l->gebort=$row->gebort;
$l->gebzeit=$row->gebzeit;
$l->foto=$row->foto;
$l->anmerkungen=$row->anmerkungen;
$l->aktiv=$row->aktiv=='t'?true:false;
$l->email=$row->email;
$l->homepage=$row->homepage;
$l->updateamum=$row->updateamum;
$l->updatevon=$row->updatevon;
// Lektorendaten
$l->personalnummer=$row->personalnummer;
$l->kurzbz=$row->kurzbz;
$l->lektor=$row->lektor=='t'?true:false;
$l->fixangestellt=$row->fixangestellt=='t'?true:false;
$l->telefonklappe=$row->telefonklappe;
//$l->ort_kurzbz=$row->ort_kurzbz;
// Lektor in Array speichern
$result[]=$l;
}
return $result;
}
}
?>
+191
View File
@@ -0,0 +1,191 @@
<?php
/**
* Ueberlagerte Klasse fuer die
* Erstellung des PDF-Dokumentes
*/
class PDF extends FPDF
{
var $tablewidths;
var $footerset;
var $headerset;
/**
* Konstruktor
*
* @param $orientation: p oder portrait = Hochformat
* l oder landscape = Querformat
*
* $unit: pt = Point
* mm = Millimeter
* cm = Zentimeter
* in = Inch
*
* $format: A3
* A4
* A5
* letter
* legal
*/
function PDF($orientation='P',$unit='mm',$format='A4')
{
//Call parent constructor
$this->FPDF($orientation,$unit,$format);
//Initialization
$this->B=0;
$this->I=0;
$this->U=0;
$this->HREF='';
}
/**
* gibt eine Fusszeile aus
*
*/
function Footer()
{
// Check if Footer for this page already exists (do the same for Header())
if(!$this->footerset[$this->page]) {
$this->SetY(-30);
//Page number
$this->Cell(0,10,'Seite '.$this->PageNo().'/{nb}',0,0,'C');
// set footerset
$this->footerset[$this->page] = 1;
}
}
/**
* gibt eine Kopfzeile aus
*
*/
function Header()
{
// Check if Header for this page already exists (do the same for Footer())
if(!$this->headerset[$this->page]) {
$this->SetFont('Arial','B',10);
$this->SetY(25);
//Page number
$this->Cell(0,10,'',0,0,'C');
// set headerset
$this->SetY(100);
$this->headerset[$this->page] = 1;
}
}
/**
* Erzeugt eine Tabelle
* @param $datas Array - 1. Zeile = Spaltenueberschrift
* x. Zeile = Eintraege
* $lineheight Zeilenhoehe
* $aligns Array - enthaelt die ausrichtung der Spalten (L=Left,R=Right,C=Center)
*/
function morepagestable($datas,$lineheight=12,$aligns)
{
// some things to set and 'remember'
$l = $this->lMargin;
$startheight = $h = $this->GetY();
$startpage = $currpage = $this->page;
// calculate the whole width
foreach($this->tablewidths AS $width)
{
$fullwidth += $width;
}
// Now let's start to write the table
$r=0;
$markline=false;
foreach($datas AS $row => $data)
{
$this->page = $currpage;
// write the horizontal borders
if($r<=1)
{
$this->SetLineWidth(1.5);
$this->Line($l,$h,$fullwidth+$l,$h);
}
else
{
//$this->SetLineWidth(0.001);
//$this->Line($l,$h,$fullwidth+$l,$h); NO-Line
}
//Farben fuer die zeilenmarkierung setzen
if($markline)
$this->SetFillColor(230,230,230);
else
$this->SetFillColor(255,255,255);
$markline=!$markline;
// write the content and remember the height of the highest col
foreach($data AS $col => $txt)
{
$this->page = $currpage;
$this->SetXY($l,$h);
$align=($r==0)?'C':$aligns[$col];
if($r==0) $this->SetFont('Arial','B',$lineheight-2);
else $this->SetFont('Arial','',$lineheight-2);
//erste und zweite zeile nicht fuellen da sonst der rahmen verloren geht
if($row==0)
$this->MultiCell($this->tablewidths[$col],$lineheight,$txt,0,$align,0);
else
$this->MultiCell($this->tablewidths[$col],$lineheight,$txt,0,$align,1);
$l += $this->tablewidths[$col];
if($tmpheight[$row.'-'.$this->page] < $this->GetY())
{
$tmpheight[$row.'-'.$this->page] = $this->GetY();
}
if($this->page > $maxpage)
$maxpage = $this->page;
}
// get the height we were in the last used page
$h = $tmpheight[$row.'-'.$maxpage];
// set the "pointer" to the left margin
$l = $this->lMargin;
// set the $currpage to the last page
$currpage = $maxpage;
$r++;
}
// draw the borders
// we start adding a horizontal line on the last page
$this->page = $maxpage;
$this->SetLineWidth(1.5);
//Immer gleich
if($h<=660)
$h=660;
else
$h=810;
$this->Line($l,$h,$fullwidth+$l,$h);
// now we start at the top of the document and walk down
for($i = $startpage; $i <= $maxpage; $i++)
{
$this->page = $i;
$l = $this->lMargin;
$t = ($i == $startpage) ? $startheight : $this->tMargin;
$lh = ($i == $maxpage) ? $h : $this->h-$this->bMargin;
$this->SetLineWidth(1.5);
$this->Line($l,$t,$l,$lh);
$n=0;
$maxcol=count($this->tablewidths)-1;
foreach($this->tablewidths AS $width)
{
$l += $width;
if($n==$maxcol) $this->SetLineWidth(1.5);
else $this->SetLineWidth(0.5);
$this->Line($l,$t,$l,$lh);
$n++;
}
}
// set it to the last page, if not it'll cause some problems
$this->page = $maxpage;
$this->SetY($h);
}
}
?>
+286
View File
@@ -0,0 +1,286 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>FAQ</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="fpdf.css">
</HEAD>
<BODY>
<H2>FAQ</H2>
<B>1.</B> <A HREF='#1'>What's exactly the license of FPDF? Are there any usage restrictions?</A><BR>
<B>2.</B> <A HREF='#2'>When I try to create a PDF, a lot of weird characters show on the screen. Why?</A><BR>
<B>3.</B> <A HREF='#3'>I try to generate a PDF and IE displays a blank page. What happens?</A><BR>
<B>4.</B> <A HREF='#4'>I send parameters using the POST method and the values don't appear in the PDF.</A><BR>
<B>5.</B> <A HREF='#5'>When I use a PHP session, IE doesn't display my PDF any more but asks me to download it.</A><BR>
<B>6.</B> <A HREF='#6'>When I'm on SSL, IE can't open the PDF.</A><BR>
<B>7.</B> <A HREF='#7'>When I execute a script I get the message "FPDF error: Don't alter the locale before including class file".</A><BR>
<B>8.</B> <A HREF='#8'>I try to put a PNG and Acrobat says "There was an error processing a page. A drawing error occurred".</A><BR>
<B>9.</B> <A HREF='#9'>I encounter the following error when I try to generate a PDF: Warning: Cannot add header information - headers already sent by (output started at script.php:X)</A><BR>
<B>10.</B> <A HREF='#10'>I try to display a variable in the Header method but nothing prints.</A><BR>
<B>11.</B> <A HREF='#11'>I defined the Header and Footer methods in my PDF class but nothing appears.</A><BR>
<B>12.</B> <A HREF='#12'>I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.</A><BR>
<B>13.</B> <A HREF='#13'>I try to put the euro symbol but it doesn't work.</A><BR>
<B>14.</B> <A HREF='#14'>I draw a frame with very precise dimensions, but when printed I notice some differences.</A><BR>
<B>15.</B> <A HREF='#15'>I'd like to use the whole surface of the page, but when printed I always have some margins. How can I get rid of them?</A><BR>
<B>16.</B> <A HREF='#16'>What's the limit of the file sizes I can generate with FPDF?</A><BR>
<B>17.</B> <A HREF='#17'>Can I modify a PDF with FPDF?</A><BR>
<B>18.</B> <A HREF='#18'>I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?</A><BR>
<B>19.</B> <A HREF='#19'>Can I convert an HTML page to PDF with FPDF?</A><BR>
<B>20.</B> <A HREF='#20'>Can I concatenate PDF files with FPDF?</A><BR>
<BR><BR>
<P><A NAME='1'></A><B>1.</B> <FONT CLASS='st'>What's exactly the license of FPDF? Are there any usage restrictions?</FONT></P>
FPDF is Freeware (it is stated at the beginning of the source file). There is no usage
restriction. You may embed it freely in your application (commercial or not), with or
without modification. You may redistribute it, too.
<P><A NAME='2'></A><B>2.</B> <FONT CLASS='st'>When I try to create a PDF, a lot of weird characters show on the screen. Why?</FONT></P>
These "weird" characters are in fact the actual content of your PDF. This behaviour is a bug of
IE. When it first receives an HTML page, then a PDF from the same URL, it displays it directly
without launching Acrobat. This happens frequently during the development stage: on the least
script error, an HTML page is sent, and after correction, the PDF arrives.
<BR>
To solve the problem, simply quit and restart IE. You can also go to another URL and come
back.
<BR>
To avoid this kind of inconvenience during the development, you can generate the PDF directly
to a file and open it through the explorer.
<P><A NAME='3'></A><B>3.</B> <FONT CLASS='st'>I try to generate a PDF and IE displays a blank page. What happens?</FONT></P>
First of all, check that you send nothing to the browser after the PDF (not even a space or a
carriage return). You can put an exit statement just after the call to the Output() method to
be sure.
<BR>
If it still doesn't work, it means you're a victim of the "blank page syndrome". IE used in
conjunction with the Acrobat plug-in suffers from numerous bugs, in all versions. You should
test your application with as many IE versions as possible (at least if you're on the Internet).
The problem occurs mostly with the POST method, so it is strongly advised to avoid it (all the
more that it causes other problems, see the next question). The GET works better but may fail
when the URL becomes too long: don't use a query string with more than 45 characters. However, a
tip exists to exceed this limit: end the URL with .pdf, which tricks IE. If you use a form, you
can add a hidden field at the last position:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
&lt;INPUT TYPE=&quot;HIDDEN&quot; NAME=&quot;ext&quot; VALUE=&quot;.pdf&quot;&gt;
</TT>
</TD></TR></TABLE><BR>
The usage of PHP sessions also often causes trouble (avoid using HTTP headers preventing caching).
See question 5 for a workaround.
<BR>
<BR>
To avoid all these problems in a reliable manner, two main techniques exist:
<BR>
<BR>
- Disable the plug-in and use Acrobat as a helper application. To do this, launch Acrobat; in
the File menu, Preferences, General, uncheck the option "Web Browser Integration" (for Acrobat
5: Edit, Preferences, Options, "Display PDF in Browser"). Then, the next time you load a PDF in
IE, it displays the dialog box "Open it" or "Save it to disk". Uncheck the option "Always ask
before opening this type of file" and choose Open. From now on, PDF files will open
automatically in an external Acrobat window.
<BR>
The drawback of the method is that you need to alter the client configuration, which you can do
in an intranet environment but not for the Internet.
<BR>
<BR>
- Use a redirection technique. It consists in generating the PDF in a temporary file on the
server and redirect the client on it (by using JavaScript, not the Location HTTP header which
also causes trouble). For instance, at the end of the script, you can put the following:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
//Determine a temporary file name in the current directory<BR>
$file=basename(tempnam(getcwd(),'tmp'));<BR>
//Save PDF to file<BR>
$pdf-&gt;Output($file);<BR>
//JavaScript redirection<BR>
echo &quot;&lt;HTML&gt;&lt;SCRIPT&gt;document.location='getpdf.php?f=$file';&lt;/SCRIPT&gt;&lt;/HTML&gt;&quot;;
</TT>
</TD></TR></TABLE><BR>
Then create the getpdf.php file with this:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
&lt;?php<BR>
$f=$HTTP_GET_VARS['f'];<BR>
//Check file (don't skip it!)<BR>
if(substr($f,0,3)!='tmp' or strpos($f,'/') or strpos($f,'\\'))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;die('Incorrect file name');<BR>
if(!file_exists($f))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;die('File does not exist');<BR>
//Handle special IE request if needed<BR>
if($HTTP_SERVER_VARS['HTTP_USER_AGENT']=='contype')<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;Header('Content-Type: application/pdf');<BR>
&nbsp;&nbsp;&nbsp;&nbsp;exit;<BR>
}<BR>
//Output PDF<BR>
Header('Content-Type: application/pdf');<BR>
Header('Content-Length: '.filesize($f));<BR>
readfile($f);<BR>
//Remove file<BR>
unlink($f);<BR>
exit;<BR>
?&gt;
</TT>
</TD></TR></TABLE><BR>
This method works in most cases but IE6 can still experience trouble. The "ultimate" method
consists in redirecting directly to the temporary file. The file name must therefore end with .pdf:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
//Determine a temporary file name in the current directory<BR>
$file=basename(tempnam(getcwd(),'tmp'));<BR>
rename($file,$file.'.pdf');<BR>
$file.='.pdf';<BR>
//Save PDF to file<BR>
$pdf-&gt;Output($file);<BR>
//JavaScript redirection<BR>
echo &quot;&lt;HTML&gt;&lt;SCRIPT&gt;document.location='$file';&lt;/SCRIPT&gt;&lt;/HTML&gt;&quot;;
</TT>
</TD></TR></TABLE><BR>
This method turns the dynamic PDF into a static one and avoids all troubles. But you have to do
some cleaning in order to delete the temporary files. For instance:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
function CleanFiles($dir)<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Delete temporary files<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$t=time();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$h=opendir($dir);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;while($file=readdir($h))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(substr($file,0,3)=='tmp' and substr($file,-4)=='.pdf')<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$path=$dir.'/'.$file;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($t-filemtime($path)&gt;3600)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@unlink($path);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;closedir($h);<BR>
}
</TT>
</TD></TR></TABLE><BR>
This function deletes all files of the form tmp*.pdf older than an hour in the specified
directory. You may call it where you want, for instance in the script which generates the PDF.
<BR>
<BR>
Remark: it is necessary to open the PDF in a new window, as you can't go backwards due to the
redirection.
<P><A NAME='4'></A><B>4.</B> <FONT CLASS='st'>I send parameters using the POST method and the values don't appear in the PDF.</FONT></P>
It's a problem affecting some versions of IE (especially the first 5.5). See the previous
question for the ways to work around it.
<P><A NAME='5'></A><B>5.</B> <FONT CLASS='st'>When I use a PHP session, IE doesn't display my PDF any more but asks me to download it.</FONT></P>
It's a problem affecting some versions of IE. To work around it, add the following line before
session_start():
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
session_cache_limiter('private');
</TT>
</TD></TR></TABLE><BR>
or do a redirection as explained in question 3.
<P><A NAME='6'></A><B>6.</B> <FONT CLASS='st'>When I'm on SSL, IE can't open the PDF.</FONT></P>
The problem may be fixed by adding this line:<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
Header('Pragma: public');
</TT>
</TD></TR></TABLE><BR>
<P><A NAME='7'></A><B>7.</B> <FONT CLASS='st'>When I execute a script I get the message "FPDF error: Don't alter the locale before including class file".</FONT></P>
When the decimal separator is configured as a comma before including a file, there is a
<A HREF="http://bugs.php.net/bug.php?id=17105" TARGET="_blank">bug</A> in some PHP versions and decimal
numbers get truncated. Therefore you shouldn't make a call to setlocale() before including the class.
On Unix, you shouldn't set the LC_ALL environment variable neither, for it is equivalent to a
setlocale() call.
<P><A NAME='8'></A><B>8.</B> <FONT CLASS='st'>I try to put a PNG and Acrobat says "There was an error processing a page. A drawing error occurred".</FONT></P>
Acrobat 5 has a bug and is unable to display transparent monochrome images (i.e. with 1 bit per
pixel). Remove transparency or save your image in 16 colors (4 bits per pixel) or more.
<P><A NAME='9'></A><B>9.</B> <FONT CLASS='st'>I encounter the following error when I try to generate a PDF: Warning: Cannot add header information - headers already sent by (output started at script.php:X)</FONT></P>
You must send nothing to the browser except the PDF itself: no HTML, no space, no carriage return,
neither before nor after. The script outputs something at line X.
<P><A NAME='10'></A><B>10.</B> <FONT CLASS='st'>I try to display a variable in the Header method but nothing prints.</FONT></P>
You have to use the <TT>global</TT> keyword, for instance:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
function Header()<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;global $title;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetFont('Arial','B',15);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Cell(0,10,$title,1,1,'C');<BR>
}
</TT>
</TD></TR></TABLE><BR>
<P><A NAME='11'></A><B>11.</B> <FONT CLASS='st'>I defined the Header and Footer methods in my PDF class but nothing appears.</FONT></P>
You have to create an object from the PDF class, not FPDF:<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
$pdf=new PDF();
</TT>
</TD></TR></TABLE><BR>
<P><A NAME='12'></A><B>12.</B> <FONT CLASS='st'>I can't make line breaks work. I put \n in the string printed by MultiCell but it doesn't work.</FONT></P>
You have to enclose your string with double quotes, not single ones.
<P><A NAME='13'></A><B>13.</B> <FONT CLASS='st'>I try to put the euro symbol but it doesn't work.</FONT></P>
The standard fonts have the euro character at position 128. You can define a constant like this
for convenience:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
define('EURO',chr(128));
</TT>
</TD></TR></TABLE><BR>
Note: Acrobat 4 or higher is required to display euro.
<P><A NAME='14'></A><B>14.</B> <FONT CLASS='st'>I draw a frame with very precise dimensions, but when printed I notice some differences.</FONT></P>
To respect dimensions, you have to uncheck the option "Fit to page" in the print dialog box.
<P><A NAME='15'></A><B>15.</B> <FONT CLASS='st'>I'd like to use the whole surface of the page, but when printed I always have some margins. How can I get rid of them?</FONT></P>
All printers have physical margins (different depending on the model), it is therefore impossible
to remove them and print on the totality of the paper.
<P><A NAME='16'></A><B>16.</B> <FONT CLASS='st'>What's the limit of the file sizes I can generate with FPDF?</FONT></P>
There is no particular limit. There are some constraints however:
<BR>
<BR>
- The maximum memory size allocated to PHP scripts defaults to 8MB. For very big documents,
especially with images, this limit may be reached (the file being built into memory). The
parameter is configured in the php.ini file.
<BR>
<BR>
- The maximum execution time allocated defaults to 30 seconds. This limit can of course be easily
reached. It is configured in php.ini and may be altered dynamically with set_time_limit().
<BR>
<BR>
- Browsers generally have a 5 minute time-out. If you send the PDF directly to the browser and
reach the limit, it will be lost. It is therefore advised for very big documents to
generate them in a file, and to send some data to the browser from time to time (for instance
page 1, page 2... with flush() to force the output). When the document is finished, you can send
a redirection on it with JavaScript or create a link.
<BR>
Remark: even when the browser goes in time-out, the script may continue to run on the server.
<P><A NAME='17'></A><B>17.</B> <FONT CLASS='st'>Can I modify a PDF with FPDF?</FONT></P>
No.
<P><A NAME='18'></A><B>18.</B> <FONT CLASS='st'>I'd like to make a search engine in PHP and index PDF files. Can I do it with FPDF?</FONT></P>
No. But a GPL C utility does exist, pdftotext, which is able to extract the textual content from
a PDF. It is provided with the Xpdf package:<BR>
<BR>
<A HREF="http://www.foolabs.com/xpdf/" TARGET="_blank">http://www.foolabs.com/xpdf/</A>
<P><A NAME='19'></A><B>19.</B> <FONT CLASS='st'>Can I convert an HTML page to PDF with FPDF?</FONT></P>
No. But a GPL C utility does exist, htmldoc, which allows to do it and gives good results:<BR>
<BR>
<A HREF="http://www.easysw.com/htmldoc/" TARGET="_blank">http://www.easysw.com/htmldoc/</A>
<P><A NAME='20'></A><B>20.</B> <FONT CLASS='st'>Can I concatenate PDF files with FPDF?</FONT></P>
No. But a free C utility exists to perform this task:<BR>
<BR>
<A HREF="http://thierry.schmit.free.fr/dev/mbtPdfAsm/enMbtPdfAsm2.html" TARGET="_blank">http://thierry.schmit.free.fr/dev/mbtPdfAsm/enMbtPdfAsm2.html</A>
</BODY>
</HTML>
+70
View File
@@ -0,0 +1,70 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>AcceptPageBreak</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>AcceptPageBreak</H2>
<TT><B>boolean</B> AcceptPageBreak()</TT>
<H4 CLASS='st'>Version</H4>
1.4
<H4 CLASS='st'>Description</H4>
Whenever a page break condition is met, the method is called, and the break is issued or not
depending on the returned value. The default implementation returns a value according to the
mode selected by SetAutoPageBreak().
<BR>
This method is called automatically and should not be called directly by the application.
<H4 CLASS='st'>Example</H4>
The method is overriden in an inherited class in order to obtain a 3 column layout:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
class PDF extends FPDF<BR>
{<BR>
var $col=0;<BR>
<BR>
function SetCol($col)<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Move position to a column<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;col=$col;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$x=10+$col*65;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetLeftMargin($x);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetX($x);<BR>
}<BR>
<BR>
function AcceptPageBreak()<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;if($this-&gt;col&lt;2)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Go to next column<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetCol($this-&gt;col+1);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetY(10);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;else<BR>
&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Go back to first column and issue page break<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetCol(0);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
}<BR>
}<BR>
<BR>
$pdf=new PDF();<BR>
$pdf-&gt;Open();<BR>
$pdf-&gt;AddPage();<BR>
$pdf-&gt;SetFont('Arial','',12);<BR>
for($i=1;$i&lt;=300;$i++)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$pdf-&gt;Cell(0,5,&quot;Line $i&quot;,0,1);<BR>
$pdf-&gt;Output();
</TT>
</TD></TR></TABLE><BR>
<H4 CLASS='st'>See also</H4>
<A HREF="setautopagebreak.htm">SetAutoPageBreak()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+62
View File
@@ -0,0 +1,62 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>AddFont</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>AddFont</H2>
<TT>AddFont(<B>string</B> family [, <B>string</B> style [, <B>string</B> file]])</TT>
<H4 CLASS='st'>Version</H4>
1.5
<H4 CLASS='st'>Description</H4>
Imports a TrueType or Type1 font and makes it available. It is necessary to generate a font
definition file first with the makefont.php utility.
<BR>
The definition file (and the font file itself when embedding) must be present either in the
current directory or in the one indicated by <TT>FPDF_FONTPATH</TT> if the constant is defined.
If it could not be found, the error "Could not include font definition file" is generated.
<H4 CLASS='st'>Parameters</H4>
<TT><U>family</U></TT>
<BLOCKQUOTE>
Font family. The name can be chosen arbitrarily. If it is a standard family name, it will
override the corresponding font.
</BLOCKQUOTE>
<TT><U>style</U></TT>
<BLOCKQUOTE>
Font style. Possible values are (case insensitive):
<UL>
<LI>empty string: regular
<LI><TT>B</TT>: bold
<LI><TT>I</TT>: italic
<LI><TT>BI</TT> or <TT>IB</TT>: bold italic
</UL>
The default value is regular.
</BLOCKQUOTE>
<TT><U>file</U></TT>
<BLOCKQUOTE>
The font definition file.
<BR>
By default, the name is built from the family and style, in lower case with no space.
</BLOCKQUOTE>
<H4 CLASS='st'>Example</H4>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
$pdf-&gt;AddFont('Comic','I');
</TT>
</TD></TR></TABLE><BR>
is equivalent to:
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
$pdf-&gt;AddFont('Comic','I','comici.php');
</TT>
</TD></TR></TABLE><BR>
<H4 CLASS='st'>See also</H4>
<A HREF="setfont.htm">SetFont()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+28
View File
@@ -0,0 +1,28 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>AddLink</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>AddLink</H2>
<TT><B>int</B> AddLink()</TT>
<H4 CLASS='st'>Version</H4>
1.5
<H4 CLASS='st'>Description</H4>
Creates a new internal link and returns its identifier. An internal link is a clickable area
which directs to another place within the document.
<BR>
The identifier can then be passed to Cell(), Write(), Image() or Link(). The destination is
defined with SetLink().
<H4 CLASS='st'>See also</H4>
<A HREF="cell.htm">Cell()</A>,
<A HREF="write.htm">Write()</A>,
<A HREF="image.htm">Image()</A>,
<A HREF="link.htm">Link()</A>,
<A HREF="setlink.htm">SetLink()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+42
View File
@@ -0,0 +1,42 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>AddPage</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>AddPage</H2>
<TT>AddPage([<B>string</B> orientation])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Adds a new page to the document. If a page is already present, the Footer() method is called
first to output the footer. Then the page is added, the current position set to the top-left
corner according to the left and top margins, and Header() is called to display the header.
<BR>
The font which was set before calling is automatically restored. There is no need to call
SetFont() again if you want to continue with the same font. The same is true for colors and
line width.
<BR>
The origin of the coordinate system is at the top-left corner and increasing ordinates go
downwards.
<H4 CLASS='st'>Parameters</H4>
<TT><U>orientation</U></TT>
<BLOCKQUOTE>
Page orientation. Possible values are (case insensitive):
<UL>
<LI><TT>P</TT> or <TT>Portrait</TT>
<LI><TT>L</TT> or <TT>Landscape</TT>
</UL>
The default value is the one passed to the constructor.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="fpdf.htm">FPDF()</A>,
<A HREF="header.htm">Header()</A>,
<A HREF="footer.htm">Footer()</A>,
<A HREF="setmargins.htm">SetMargins()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+47
View File
@@ -0,0 +1,47 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>AliasNbPages</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>AliasNbPages</H2>
<TT>AliasNbPages([<B>string</B> alias])</TT>
<H4 CLASS='st'>Version</H4>
1.4
<H4 CLASS='st'>Description</H4>
Defines an alias for the total number of pages. It will be substituted as the document is
closed.
<H4 CLASS='st'>Parameters</H4>
<TT><U>alias</U></TT>
<BLOCKQUOTE>
The alias. Default value: <TT>{nb}</TT>.
</BLOCKQUOTE>
<H4 CLASS='st'>Example</H4>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
class PDF extends FPDF<BR>
{<BR>
function Footer()<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Go to 1.5 cm from bottom<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetY(-15);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Select Arial italic 8<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetFont('Arial','I',8);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Print current and total page numbers<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Cell(0,10,'Page '.$this-&gt;PageNo().'/{nb}',0,0,'C');<BR>
}<BR>
}<BR>
<BR>
$pdf=new PDF();<BR>
$pdf-&gt;AliasNbPages();
</TT>
</TD></TR></TABLE><BR>
<H4 CLASS='st'>See also</H4>
<A HREF="pageno.htm">PageNo()</A>,
<A HREF="footer.htm">Footer()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+106
View File
@@ -0,0 +1,106 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Cell</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Cell</H2>
<TT>Cell(<B>float</B> w [, <B>float</B> h [, <B>string</B> txt [, <B>mixed</B> border [, <B>int</B> ln [, <B>string</B> align [, <B>int</B> fill [, <B>mixed</B> link]]]]]]])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Prints a cell (rectangular area) with optional borders, background color and character string.
The upper-left corner of the cell corresponds to the current position. The text can be aligned
or centered. After the call, the current position moves to the right or to the next line. It is
possible to put a link on the text.
<BR>
If automatic page breaking is enabled and the cell goes beyond the limit, a page break is
done before outputting.
<H4 CLASS='st'>Parameters</H4>
<TT><U>w</U></TT>
<BLOCKQUOTE>
Cell width. If <TT>0</TT>, the cell extends up to the right margin.
</BLOCKQUOTE>
<TT><U>h</U></TT>
<BLOCKQUOTE>
Cell height.
Default value: <TT>0</TT>.
</BLOCKQUOTE>
<TT><U>txt</U></TT>
<BLOCKQUOTE>
String to print.
Default value: empty string.
</BLOCKQUOTE>
<TT><U>border</U></TT>
<BLOCKQUOTE>
Indicates if borders must be drawn around the cell. The value can be either a number:
<UL>
<LI><TT>0</TT>: no border
<LI><TT>1</TT>: frame
</UL>
or a string containing some or all of the following characters (in any order):
<UL>
<LI><TT>L</TT>: left
<LI><TT>T</TT>: top
<LI><TT>R</TT>: right
<LI><TT>B</TT>: bottom
</UL>
Default value: <TT>0</TT>.
</BLOCKQUOTE>
<TT><U>ln</U></TT>
<BLOCKQUOTE>
Indicates where the current position should go after the call. Possible values are:
<UL>
<LI><TT>0</TT>: to the right
<LI><TT>1</TT>: to the beginning of the next line
<LI><TT>2</TT>: below
</UL>
Putting <TT>1</TT> is equivalent to putting <TT>0</TT> and calling Ln() just after.
Default value: <TT>0</TT>.
</BLOCKQUOTE>
<TT><U>align</U></TT>
<BLOCKQUOTE>
Allows to center or align the text. Possible values are:
<UL>
<LI><TT>L</TT> or empty string: left align (default value)
<LI><TT>C</TT>: center
<LI><TT>R</TT>: right align
</UL>
</BLOCKQUOTE>
<TT><U>fill</U></TT>
<BLOCKQUOTE>
Indicates if the cell background must be painted (<TT>1</TT>) or transparent (<TT>0</TT>).
Default value: <TT>0</TT>.
</BLOCKQUOTE>
<TT><U>link</U></TT>
<BLOCKQUOTE>
URL or identifier returned by AddLink().
</BLOCKQUOTE>
<H4 CLASS='st'>Example</H4>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
//Set font<BR>
$pdf-&gt;SetFont('Arial','B',16);<BR>
//Move to 8 cm to the right<BR>
$pdf-&gt;Cell(80);<BR>
//Centered text in a framed 20*10 mm cell and line break<BR>
$pdf-&gt;Cell(20,10,'Title',1,1,'C');
</TT>
</TD></TR></TABLE><BR>
<H4 CLASS='st'>See also</H4>
<A HREF="setfont.htm">SetFont()</A>,
<A HREF="setdrawcolor.htm">SetDrawColor()</A>,
<A HREF="setfillcolor.htm">SetFillColor()</A>,
<A HREF="settextcolor.htm">SetTextColor()</A>,
<A HREF="setlinewidth.htm">SetLineWidth()</A>,
<A HREF="addlink.htm">AddLink()</A>,
<A HREF="ln.htm">Ln()</A>,
<A HREF="multicell.htm">MultiCell()</A>,
<A HREF="write.htm">Write()</A>,
<A HREF="setautopagebreak.htm">SetAutoPageBreak()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+24
View File
@@ -0,0 +1,24 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Close</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Close</H2>
<TT>Close()</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Terminates the PDF document. It is not necessary to call this method explicitly because Output()
does it automatically.
<BR>
If the document contains no page, AddPage() is called to prevent from getting an invalid document.
<H4 CLASS='st'>See also</H4>
<A HREF="open.htm">Open()</A>,
<A HREF="output.htm">Output()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+25
View File
@@ -0,0 +1,25 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Error</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Error</H2>
<TT>Error(<B>string</B> msg)</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
This method is automatically called in case of fatal error; it simply outputs the message
and halts the execution. An inherited class may override it to customize the error handling
but should always halt the script, or the resulting document would probably be invalid.
<H4 CLASS='st'>Parameters</H4>
<TT><U>msg</U></TT>
<BLOCKQUOTE>
The error message.
</BLOCKQUOTE>
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+39
View File
@@ -0,0 +1,39 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Footer</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Footer</H2>
<TT>Footer()</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
This method is used to render the page footer. It is automatically called by AddPage() and
Close() and should not be called directly by the application. The implementation in FPDF is
empty, so you have to subclass it and override the method if you want a specific processing.
<H4 CLASS='st'>Example</H4>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
class PDF extends FPDF<BR>
{<BR>
function Footer()<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Go to 1.5 cm from bottom<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetY(-15);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Select Arial italic 8<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetFont('Arial','I',8);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Print centered page number<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Cell(0,10,'Page '.$this-&gt;PageNo(),0,0,'C');<BR>
}<BR>
}
</TT>
</TD></TR></TABLE><BR>
<H4 CLASS='st'>See also</H4>
<A HREF="header.htm">Header()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+57
View File
@@ -0,0 +1,57 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>FPDF</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>FPDF</H2>
<TT>FPDF([<B>string</B> orientation [, <B>string</B> unit [, <B>mixed</B> format]]])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
This is the class constructor. It allows to set up the page format, the orientation and the
measure unit used in all the methods (except for the font sizes).
<H4 CLASS='st'>Parameters</H4>
<TT><U>orientation</U></TT>
<BLOCKQUOTE>
Default page orientation. Possible values are (case insensitive):
<UL>
<LI><TT>P</TT> or <TT>Portrait</TT>
<LI><TT>L</TT> or <TT>Landscape</TT>
</UL>
Default value is <TT>P</TT>.
</BLOCKQUOTE>
<TT><U>unit</U></TT>
<BLOCKQUOTE>
User measure unit. Possible values are:
<UL>
<LI><TT>pt</TT>: point
<LI><TT>mm</TT>: millimeter
<LI><TT>cm</TT>: centimeter
<LI><TT>in</TT>: inch
</UL>
A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This
is a very common unit in typography; font sizes are expressed in that unit.
<BR>
<BR>
Default value is <TT>mm</TT>.
</BLOCKQUOTE>
<TT><U>format</U></TT>
<BLOCKQUOTE>
The format used for pages. It can be either one of the following values (case insensitive):
<UL>
<LI><TT>A3</TT>
<LI><TT>A4</TT>
<LI><TT>A5</TT>
<LI><TT>Letter</TT>
<LI><TT>Legal</TT>
</UL>
or a custom format in the form of a two-element array containing the width and the height
(expressed in the unit given by <TT>unit</TT>).
</BLOCKQUOTE>
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+23
View File
@@ -0,0 +1,23 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>GetStringWidth</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>GetStringWidth</H2>
<TT><B>float</B> GetStringWidth(<B>string</B> s)</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Returns the length of a string in user unit. A font must be selected.
<H4 CLASS='st'>Parameters</H4>
<TT><U>s</U></TT>
<BLOCKQUOTE>
The string whose length is to be computed.
</BLOCKQUOTE>
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+22
View File
@@ -0,0 +1,22 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>GetX</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>GetX</H2>
<TT><B>float</B> GetX()</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Returns the abscissa of the current position.
<H4 CLASS='st'>See also</H4>
<A HREF="setx.htm">SetX()</A>,
<A HREF="gety.htm">GetY()</A>,
<A HREF="sety.htm">SetY()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+22
View File
@@ -0,0 +1,22 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>GetY</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>GetY</H2>
<TT><B>float</B> GetY()</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Returns the ordinate of the current position.
<H4 CLASS='st'>See also</H4>
<A HREF="sety.htm">SetY()</A>,
<A HREF="getx.htm">GetX()</A>,
<A HREF="setx.htm">SetX()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+41
View File
@@ -0,0 +1,41 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Header</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Header</H2>
<TT>Header()</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
This method is used to render the page header. It is automatically called by AddPage() and
should not be called directly by the application. The implementation in FPDF is empty, so
you have to subclass it and override the method if you want a specific processing.
<H4 CLASS='st'>Example</H4>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
class PDF extends FPDF<BR>
{<BR>
function Header()<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Select Arial bold 15<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetFont('Arial','B',15);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Move to the right<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Cell(80);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Framed title<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Cell(30,10,'Title',1,0,'C');<BR>
&nbsp;&nbsp;&nbsp;&nbsp;//Line break<BR>
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Ln(20);<BR>
}<BR>
}
</TT>
</TD></TR></TABLE><BR>
<H4 CLASS='st'>See also</H4>
<A HREF="footer.htm">Footer()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+88
View File
@@ -0,0 +1,88 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Image</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Image</H2>
<TT>Image(<B>string</B> file, <B>float</B> x, <B>float</B> y [, <B>float</B> w [, <B>float</B> h [, <B>string</B> type [, <B>mixed</B> link]]]])</TT>
<H4 CLASS='st'>Version</H4>
1.1
<H4 CLASS='st'>Description</H4>
Puts an image in the page. The upper-left corner must be given. The dimensions can be specified
in different ways:
<UL>
<LI>explicit width and height (expressed in user unit)
<LI>one explicit dimension, the other being calculated automatically in order to keep the original
proportions
<LI>no explicit dimension, in which case the image is put at 72 dpi
</UL>
Supported formats are JPEG and PNG.
<BR>
<BR>
For JPEG, all flavors are allowed:
<UL>
<LI>gray scales
<LI>true colors (24 bits)
<LI>CMYK (32 bits)
</UL>
For PNG, are allowed:
<UL>
<LI>gray scales on at most 8 bits (256 levels)
<LI>indexed colors
<LI>true colors (24 bits)
</UL>
but are not supported:
<UL>
<LI>Interlacing
<LI>Alpha channel
</UL>
If a transparent color is defined, it will be taken into account (but will be only interpreted
by Acrobat 4 and above).
<BR>
The format can be specified explicitly or inferred from the file extension.
<BR>
It is possible to put a link on the image.
<BR>
<BR>
Remark: if an image is used several times, only one copy will be embedded in the file.
<H4 CLASS='st'>Parameters</H4>
<TT><U>file</U></TT>
<BLOCKQUOTE>
Name of the file containing the image.
</BLOCKQUOTE>
<TT><U>x</U></TT>
<BLOCKQUOTE>
Abscissa of the upper-left corner.
</BLOCKQUOTE>
<TT><U>y</U></TT>
<BLOCKQUOTE>
Ordinate of the upper-left corner.
</BLOCKQUOTE>
<TT><U>w</U></TT>
<BLOCKQUOTE>
Width of the image in the page. If not specified or equal to zero, it is automatically
calculated.
</BLOCKQUOTE>
<TT><U>h</U></TT>
<BLOCKQUOTE>
Height of the image in the page. If not specified or equal to zero, it is automatically
calculated.
</BLOCKQUOTE>
<TT><U>type</U></TT>
<BLOCKQUOTE>
Image format. Possible values are (case insensitive): <TT>JPG</TT>, <TT>JPEG</TT>, <TT>PNG</TT>.
If not specified, the type is inferred from the file extension.
</BLOCKQUOTE>
<TT><U>link</U></TT>
<BLOCKQUOTE>
URL or identifier returned by AddLink().
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="addlink.htm">AddLink()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+57
View File
@@ -0,0 +1,57 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>FPDF 1.52 Reference Manual</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>FPDF 1.52 Reference Manual</H2>
<A HREF="acceptpagebreak.htm">AcceptPageBreak</A> - accept or not automatic page break<BR>
<A HREF="addfont.htm">AddFont</A> - add a new font<BR>
<A HREF="addlink.htm">AddLink</A> - create an internal link<BR>
<A HREF="addpage.htm">AddPage</A> - add a new page<BR>
<A HREF="aliasnbpages.htm">AliasNbPages</A> - define an alias for number of pages<BR>
<A HREF="cell.htm">Cell</A> - print a cell<BR>
<A HREF="close.htm">Close</A> - terminate the document<BR>
<A HREF="error.htm">Error</A> - fatal error<BR>
<A HREF="footer.htm">Footer</A> - page footer<BR>
<A HREF="fpdf.htm">FPDF</A> - constructor<BR>
<A HREF="getstringwidth.htm">GetStringWidth</A> - compute string length<BR>
<A HREF="getx.htm">GetX</A> - get current x position<BR>
<A HREF="gety.htm">GetY</A> - get current y position<BR>
<A HREF="header.htm">Header</A> - page header<BR>
<A HREF="image.htm">Image</A> - output an image<BR>
<A HREF="line.htm">Line</A> - draw a line<BR>
<A HREF="link.htm">Link</A> - put a link<BR>
<A HREF="ln.htm">Ln</A> - line break<BR>
<A HREF="multicell.htm">MultiCell</A> - print text with line breaks<BR>
<A HREF="open.htm">Open</A> - create a document<BR>
<A HREF="output.htm">Output</A> - save or send the document<BR>
<A HREF="pageno.htm">PageNo</A> - page number<BR>
<A HREF="rect.htm">Rect</A> - draw a rectangle<BR>
<A HREF="setauthor.htm">SetAuthor</A> - set the document author<BR>
<A HREF="setautopagebreak.htm">SetAutoPageBreak</A> - set the automatic page breaking mode<BR>
<A HREF="setcompression.htm">SetCompression</A> - turn compression on or off<BR>
<A HREF="setcreator.htm">SetCreator</A> - set document creator<BR>
<A HREF="setdisplaymode.htm">SetDisplayMode</A> - set display mode<BR>
<A HREF="setdrawcolor.htm">SetDrawColor</A> - set drawing color<BR>
<A HREF="setfillcolor.htm">SetFillColor</A> - set filling color<BR>
<A HREF="setfont.htm">SetFont</A> - set font<BR>
<A HREF="setfontsize.htm">SetFontSize</A> - set font size<BR>
<A HREF="setkeywords.htm">SetKeywords</A> - associate keywords with document<BR>
<A HREF="setleftmargin.htm">SetLeftMargin</A> - set left margin<BR>
<A HREF="setlinewidth.htm">SetLineWidth</A> - set line width<BR>
<A HREF="setlink.htm">SetLink</A> - set internal link destination<BR>
<A HREF="setmargins.htm">SetMargins</A> - set margins<BR>
<A HREF="setrightmargin.htm">SetRightMargin</A> - set right margin<BR>
<A HREF="setsubject.htm">SetSubject</A> - set document subject<BR>
<A HREF="settextcolor.htm">SetTextColor</A> - set text color<BR>
<A HREF="settitle.htm">SetTitle</A> - set document title<BR>
<A HREF="settopmargin.htm">SetTopMargin</A> - set top margin<BR>
<A HREF="setx.htm">SetX</A> - set current x position<BR>
<A HREF="setxy.htm">SetXY</A> - set current x and y positions<BR>
<A HREF="sety.htm">SetY</A> - set current y position<BR>
<A HREF="text.htm">Text</A> - print a string<BR>
<A HREF="write.htm">Write</A> - print flowing text<BR>
</BODY>
</HTML>
+38
View File
@@ -0,0 +1,38 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Line</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Line</H2>
<TT>Line(<B>float</B> x1, <B>float</B> y1, <B>float</B> x2, <B>float</B> y2)</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Draws a line between two points.
<H4 CLASS='st'>Parameters</H4>
<TT><U>x1</U></TT>
<BLOCKQUOTE>
Abscissa of first point.
</BLOCKQUOTE>
<TT><U>y1</U></TT>
<BLOCKQUOTE>
Ordinate of first point.
</BLOCKQUOTE>
<TT><U>x2</U></TT>
<BLOCKQUOTE>
Abscissa of second point.
</BLOCKQUOTE>
<TT><U>y2</U></TT>
<BLOCKQUOTE>
Ordinate of second point.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setlinewidth.htm">SetLineWidth()</A>,
<A HREF="setdrawcolor.htm">SetDrawColor()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+46
View File
@@ -0,0 +1,46 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Link</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Link</H2>
<TT>Link(<B>float</B> x, <B>float</B> y, <B>float</B> w, <B>float</B> h, <B>mixed</B> link)</TT>
<H4 CLASS='st'>Version</H4>
1.5
<H4 CLASS='st'>Description</H4>
Puts a link on a rectangular area of the page. Text or image links are generally put via Cell(),
Write() or Image(), but this method can be useful for instance to define a clickable area inside
an image.
<H4 CLASS='st'>Parameters</H4>
<TT><U>x</U></TT>
<BLOCKQUOTE>
Abscissa of the upper-left corner of the rectangle.
</BLOCKQUOTE>
<TT><U>y</U></TT>
<BLOCKQUOTE>
Ordinate of the upper-left corner of the rectangle.
</BLOCKQUOTE>
<TT><U>w</U></TT>
<BLOCKQUOTE>
Width of the rectangle.
</BLOCKQUOTE>
<TT><U>h</U></TT>
<BLOCKQUOTE>
Height of the rectangle.
</BLOCKQUOTE>
<TT><U>link</U></TT>
<BLOCKQUOTE>
URL or identifier returned by AddLink().
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="addlink.htm">AddLink()</A>,
<A HREF="cell.htm">Cell()</A>,
<A HREF="write.htm">Write()</A>,
<A HREF="image.htm">Image()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+28
View File
@@ -0,0 +1,28 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Ln</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Ln</H2>
<TT>Ln([<B>float</B> h])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Performs a line break. The current abscissa goes back to the left margin and the ordinate
increases by the amount passed in parameter.
<H4 CLASS='st'>Parameters</H4>
<TT><U>h</U></TT>
<BLOCKQUOTE>
The height of the break.
<BR>
By default, the value equals the height of the last printed cell.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="cell.htm">Cell()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+76
View File
@@ -0,0 +1,76 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>MultiCell</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>MultiCell</H2>
<TT>MultiCell(<B>float</B> w, <B>float</B> h, <B>string</B> txt [, <B>mixed</B> border [, <B>string</B> align [, <B>int</B> fill]]])</TT>
<H4 CLASS='st'>Version</H4>
1.3
<H4 CLASS='st'>Description</H4>
This method allows printing text with line breaks. They can be automatic (as soon as the
text reaches the right border of the cell) or explicit (via the \n character). As many cells
as necessary are output, one below the other.
<BR>
Text can be aligned, centered or justified. The cell block can be framed and the background
painted.
<H4 CLASS='st'>Parameters</H4>
<TT><U>w</U></TT>
<BLOCKQUOTE>
Width of cells. If <TT>0</TT>, they extend up to the right margin of the page.
</BLOCKQUOTE>
<TT><U>h</U></TT>
<BLOCKQUOTE>
Height of cells.
</BLOCKQUOTE>
<TT><U>txt</U></TT>
<BLOCKQUOTE>
String to print.
</BLOCKQUOTE>
<TT><U>border</U></TT>
<BLOCKQUOTE>
Indicates if borders must be drawn around the cell block. The value can be either a number:
<UL>
<LI><TT>0</TT>: no border
<LI><TT>1</TT>: frame
</UL>
or a string containing some or all of the following characters (in any order):
<UL>
<LI><TT>L</TT>: left
<LI><TT>T</TT>: top
<LI><TT>R</TT>: right
<LI><TT>B</TT>: bottom
</UL>
Default value: <TT>0</TT>.
</BLOCKQUOTE>
<TT><U>align</U></TT>
<BLOCKQUOTE>
Sets the text alignment. Possible values are:
<UL>
<LI><TT>L</TT>: left alignment
<LI><TT>C</TT>: center
<LI><TT>R</TT>: right alignment
<LI><TT>J</TT>: justification (default value)
</UL>
</BLOCKQUOTE>
<TT><U>fill</U></TT>
<BLOCKQUOTE>
Indicates if the cell background must be painted (<TT>1</TT>) or transparent (<TT>0</TT>).
Default value: <TT>0</TT>.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setfont.htm">SetFont()</A>,
<A HREF="setdrawcolor.htm">SetDrawColor()</A>,
<A HREF="setfillcolor.htm">SetFillColor()</A>,
<A HREF="settextcolor.htm">SetTextColor()</A>,
<A HREF="setlinewidth.htm">SetLineWidth()</A>,
<A HREF="cell.htm">Cell()</A>,
<A HREF="write.htm">Write()</A>,
<A HREF="setautopagebreak.htm">SetAutoPageBreak()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+23
View File
@@ -0,0 +1,23 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Open</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Open</H2>
<TT>Open()</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
This method begins the generation of the PDF document. It is not necessary to call it
explicitly because AddPage() does it automatically.<BR>
Note: no page is created by this method.
<H4 CLASS='st'>See also</H4>
<A HREF="addpage.htm">AddPage()</A>,
<A HREF="close.htm">Close()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+47
View File
@@ -0,0 +1,47 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Output</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Output</H2>
<TT><B>string</B> Output([<B>string</B> name [, <B>string</B> dest]])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Send the document to a given destination: string, local file or browser. In the last case, the
plug-in may be used (if present) or a download ("Save as" dialog box) may be forced.
<BR>
The method first calls Close() if necessary to terminate the document.
<H4 CLASS='st'>Parameters</H4>
<TT><U>name</U></TT>
<BLOCKQUOTE>
The name of the file. If not given, the document will be sent to the browser
(destination <TT>I</TT>) with the name <TT>doc.pdf</TT>.
</BLOCKQUOTE>
<TT><U>dest</U></TT>
<BLOCKQUOTE>
Destination where to send the document. It can take one of the following values:
<UL>
<LI><TT>I</TT>: send the file inline to the browser. The plug-in is used if available.
The name given by <TT>name</TT> is used when one selects the "Save as" option on the
link generating the PDF.
<LI><TT>D</TT>: send to the browser and force a file download with the name given by
<TT>name</TT>.
<LI><TT>F</TT>: save to a local file with the name given by <TT>name</TT>.
<LI><TT>S</TT>: return the document as a string. <TT>name</TT> is ignored.
</UL>
If the parameter is not specified but a name is given, destination is <TT>F</TT>. If no
parameter is specified at all, destination is <TT>I</TT>.<BR>
<BR>
Note: for compatibility with previous versions, a boolean value is also accepted
(<TT>false</TT> for <TT>F</TT> and <TT>true</TT> for <TT>D</TT>).
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="close.htm">Close()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+20
View File
@@ -0,0 +1,20 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>PageNo</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>PageNo</H2>
<TT><B>int</B> PageNo()</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Returns the current page number.
<H4 CLASS='st'>See also</H4>
<A HREF="aliasnbpages.htm">AliasNbPages()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+48
View File
@@ -0,0 +1,48 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Rect</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Rect</H2>
<TT>Rect(<B>float</B> x, <B>float</B> y, <B>float</B> w, <B>float</B> h [, <B>string</B> style])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Outputs a rectangle. It can be drawn (border only), filled (with no border) or both.
<H4 CLASS='st'>Parameters</H4>
<TT><U>x</U></TT>
<BLOCKQUOTE>
Abscissa of upper-left corner.
</BLOCKQUOTE>
<TT><U>y</U></TT>
<BLOCKQUOTE>
Ordinate of upper-left corner.
</BLOCKQUOTE>
<TT><U>w</U></TT>
<BLOCKQUOTE>
Width.
</BLOCKQUOTE>
<TT><U>h</U></TT>
<BLOCKQUOTE>
Height.
</BLOCKQUOTE>
<TT><U>style</U></TT>
<BLOCKQUOTE>
Style of rendering. Possible values are:
<UL>
<LI><TT>D</TT> or empty string: draw. This is the default value.
<LI><TT>F</TT>: fill
<LI><TT>DF</TT> or <TT>FD</TT>: draw and fill
</UL>
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setlinewidth.htm">SetLineWidth()</A>,
<A HREF="setdrawcolor.htm">SetDrawColor()</A>,
<A HREF="setfillcolor.htm">SetFillColor()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+28
View File
@@ -0,0 +1,28 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetAuthor</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetAuthor</H2>
<TT>SetAuthor(<B>string</B> author)</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Defines the author of the document.
<H4 CLASS='st'>Parameters</H4>
<TT><U>author</U></TT>
<BLOCKQUOTE>
The name of the author.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setcreator.htm">SetCreator()</A>,
<A HREF="setkeywords.htm">SetKeywords()</A>,
<A HREF="setsubject.htm">SetSubject()</A>,
<A HREF="settitle.htm">SetTitle()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+33
View File
@@ -0,0 +1,33 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetAutoPageBreak</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetAutoPageBreak</H2>
<TT>SetAutoPageBreak(<B>boolean</B> auto [, <B>float</B> margin])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Enables or disables the automatic page breaking mode. When enabling, the second parameter is
the distance from the bottom of the page that defines the triggering limit. By default, the
mode is on and the margin is 2 cm.
<H4 CLASS='st'>Parameters</H4>
<TT><U>auto</U></TT>
<BLOCKQUOTE>
Boolean indicating if mode should be on or off.
</BLOCKQUOTE>
<TT><U>margin</U></TT>
<BLOCKQUOTE>
Distance from the bottom of the page.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="cell.htm">Cell()</A>,
<A HREF="multicell.htm">MultiCell()</A>,
<A HREF="acceptpagebreak.htm">AcceptPageBreak()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+31
View File
@@ -0,0 +1,31 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetCompression</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetCompression</H2>
<TT>SetCompression(<B>boolean</B> compress)</TT>
<H4 CLASS='st'>Version</H4>
1.4
<H4 CLASS='st'>Description</H4>
Activates or deactivates page compression. When activated, the internal representation of
each page is compressed, which leads to a compression ratio of about 2 for the resulting
document.
<BR>
Compression is on by default.
<BR>
<BR>
<B>Note: </B>the Zlib extension is required for this feature. If not present, compression
will be turned off.
<H4 CLASS='st'>Parameters</H4>
<TT><U>compress</U></TT>
<BLOCKQUOTE>
Boolean indicating if compression must be enabled.
</BLOCKQUOTE>
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+29
View File
@@ -0,0 +1,29 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetCreator</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetCreator</H2>
<TT>SetCreator(<B>string</B> creator)</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Defines the creator of the document. This is typically the name of the application that
generates the PDF.
<H4 CLASS='st'>Parameters</H4>
<TT><U>creator</U></TT>
<BLOCKQUOTE>
The name of the creator.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setauthor.htm">SetAuthor()</A>,
<A HREF="setkeywords.htm">SetKeywords()</A>,
<A HREF="setsubject.htm">SetSubject()</A>,
<A HREF="settitle.htm">SetTitle()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+47
View File
@@ -0,0 +1,47 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetDisplayMode</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetDisplayMode</H2>
<TT>SetDisplayMode(<B>mixed</B> zoom [, <B>string</B> layout])</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Defines the way the document is to be displayed by the viewer. The zoom level can be set: pages can be
displayed entirely on screen, occupy the full width of the window, use real size, be scaled by a
specific zooming factor or use viewer default (configured in the Preferences menu of Acrobat).
The page layout can be specified too: single at once, continuous display, two columns or viewer
default.
<BR>
By default, documents use the full width mode with continuous display.
<H4 CLASS='st'>Parameters</H4>
<TT><U>zoom</U></TT>
<BLOCKQUOTE>
The zoom to use. It can be one of the following string values:
<UL>
<LI><TT>fullpage</TT>: displays the entire page on screen
<LI><TT>fullwidth</TT>: uses maximum width of window
<LI><TT>real</TT>: uses real size (equivalent to 100% zoom)
<LI><TT>default</TT>: uses viewer default mode
</UL>
or a number indicating the zooming factor to use.
</BLOCKQUOTE>
<TT><U>layout</U></TT>
<BLOCKQUOTE>
The page layout. Possible values are:
<UL>
<LI><TT>single</TT>: displays one page at once
<LI><TT>continuous</TT>: displays pages continuously
<LI><TT>two</TT>: displays two pages on two columns
<LI><TT>default</TT>: uses viewer default mode
</UL>
Default value is <TT>continuous</TT>.
</BLOCKQUOTE>
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+41
View File
@@ -0,0 +1,41 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetDrawColor</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetDrawColor</H2>
<TT>SetDrawColor(<B>int</B> r [, <B>int</B> g, <B>int</B> b])</TT>
<H4 CLASS='st'>Version</H4>
1.3
<H4 CLASS='st'>Description</H4>
Defines the color used for all drawing operations (lines, rectangles and cell borders). It
can be expressed in RGB components or gray scale. The method can be called before the first
page is created and the value is retained from page to page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>r</U></TT>
<BLOCKQUOTE>
If <TT>g</TT> et <TT>b</TT> are given, red component; if not, indicates the gray level.
Value between 0 and 255.
</BLOCKQUOTE>
<TT><U>g</U></TT>
<BLOCKQUOTE>
Green component (between 0 and 255).
</BLOCKQUOTE>
<TT><U>b</U></TT>
<BLOCKQUOTE>
Blue component (between 0 and 255).
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setfillcolor.htm">SetFillColor()</A>,
<A HREF="settextcolor.htm">SetTextColor()</A>,
<A HREF="line.htm">Line()</A>,
<A HREF="rect.htm">Rect()</A>,
<A HREF="cell.htm">Cell()</A>,
<A HREF="multicell.htm">MultiCell()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+40
View File
@@ -0,0 +1,40 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetFillColor</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetFillColor</H2>
<TT>SetFillColor(<B>int</B> r [, <B>int</B> g, <B>int</B> b])</TT>
<H4 CLASS='st'>Version</H4>
1.3
<H4 CLASS='st'>Description</H4>
Defines the color used for all filling operations (filled rectangles and cell backgrounds).
It can be expressed in RGB components or gray scale. The method can be called before the first
page is created and the value is retained from page to page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>r</U></TT>
<BLOCKQUOTE>
If <TT>g</TT> and <TT>b</TT> are given, red component; if not, indicates the gray level.
Value between 0 and 255.
</BLOCKQUOTE>
<TT><U>g</U></TT>
<BLOCKQUOTE>
Green component (between 0 and 255).
</BLOCKQUOTE>
<TT><U>b</U></TT>
<BLOCKQUOTE>
Blue component (between 0 and 255).
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setdrawcolor.htm">SetDrawColor()</A>,
<A HREF="settextcolor.htm">SetTextColor()</A>,
<A HREF="rect.htm">Rect()</A>,
<A HREF="cell.htm">Cell()</A>,
<A HREF="multicell.htm">MultiCell()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+103
View File
@@ -0,0 +1,103 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetFont</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetFont</H2>
<TT>SetFont(<B>string</B> family [, <B>string</B> style [, <B>float</B> size]])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Sets the font used to print character strings. It is mandatory to call this method
at least once before printing text or the resulting document would not be valid.
<BR>
The font can be either a standard one or a font added via the AddFont() method. Standard fonts
use Windows encoding cp1252 (Western Europe).
<BR>
The method can be called before the first page is created and the font is retained from page
to page.
<BR>
If you just wish to change the current font size, it is simpler to call SetFontSize().
<BR>
<BR>
<B>Note: </B>for the standard fonts, the font metric files must be accessible. There are three
possibilities for this:
<BR>
<BR>
<UL>
<LI>They are in the current directory (the one where the running script lies)
<BR>
<LI>They are in one of the directories defined by the <TT>include_path</TT> parameter
<BR>
<LI>They are in the directory defined by the <TT>FPDF_FONTPATH</TT> constant
</UL>
Example for the last case (note the trailing slash):
<BR>
<BR>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
define('FPDF_FONTPATH','/home/www/font/');<BR>
require('fpdf.php');
</TT>
</TD></TR></TABLE><BR>
If the file corresponding to the requested font is not found, the error "Could not include
font metric file" is generated.
<H4 CLASS='st'>Parameters</H4>
<TT><U>family</U></TT>
<BLOCKQUOTE>
Family font. It can be either a name defined by AddFont() or one of the standard families (case
insensitive):
<UL>
<LI><TT>Courier</TT> (fixed-width)
<LI><TT>Helvetica<TT> or </TT>Arial</TT> (synonymous; sans serif)
<LI><TT>Times</TT> (serif)
<LI><TT>Symbol</TT> (symbolic)
<LI><TT>ZapfDingbats</TT> (symbolic)
</UL>
It is also possible to pass an empty string. In that case, the current family is retained.
</BLOCKQUOTE>
<TT><U>style</U></TT>
<BLOCKQUOTE>
Font style. Possible values are (case insensitive):
<UL>
<LI>empty string: regular
<LI><TT>B</TT>: bold
<LI><TT>I</TT>: italic
<LI><TT>U</TT>: underline
</UL>
or any combination. The default value is regular.
Bold and italic styles do not apply to <TT>Symbol</TT> and <TT>ZapfDingbats</TT>.
</BLOCKQUOTE>
<TT><U>size</U></TT>
<BLOCKQUOTE>
Font size in points.
<BR>
The default value is the current size. If no size has been specified since the beginning of
the document, the value taken is 12.
</BLOCKQUOTE>
<H4 CLASS='st'>Example</H4>
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
<TT>
//Times regular 12<BR>
$pdf-&gt;SetFont('Times');<BR>
//Arial bold 14<BR>
$pdf-&gt;SetFont('Arial','B',14);<BR>
//Removes bold<BR>
$pdf-&gt;SetFont('');<BR>
//Times bold, italic and underlined 14<BR>
$pdf-&gt;SetFont('Times','BIU');
</TT>
</TD></TR></TABLE><BR>
<H4 CLASS='st'>See also</H4>
<A HREF="addfont.htm">AddFont()</A>,
<A HREF="setfontsize.htm">SetFontSize()</A>,
<A HREF="cell.htm">Cell()</A>,
<A HREF="multicell.htm">MultiCell()</A>,
<A HREF="write.htm">Write()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+25
View File
@@ -0,0 +1,25 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetFontSize</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetFontSize</H2>
<TT>SetFontSize(<B>float</B> size)</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Defines the size of the current font.
<H4 CLASS='st'>Parameters</H4>
<TT><U>size</U></TT>
<BLOCKQUOTE>
The size (in points).
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setfont.htm">SetFont()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+28
View File
@@ -0,0 +1,28 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetKeywords</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetKeywords</H2>
<TT>SetKeywords(<B>string</B> keywords)</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Associates keywords with the document, generally in the form 'keyword1 keyword2 ...'.
<H4 CLASS='st'>Parameters</H4>
<TT><U>keywords</U></TT>
<BLOCKQUOTE>
The list of keywords.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setauthor.htm">SetAuthor()</A>,
<A HREF="setcreator.htm">SetCreator()</A>,
<A HREF="setsubject.htm">SetSubject()</A>,
<A HREF="settitle.htm">SetTitle()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+30
View File
@@ -0,0 +1,30 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetLeftMargin</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetLeftMargin</H2>
<TT>SetLeftMargin(<B>float</B> margin)</TT>
<H4 CLASS='st'>Version</H4>
1.4
<H4 CLASS='st'>Description</H4>
Defines the left margin. The method can be called before creating the first page.
<BR>
If the current abscissa gets out of page, it is brought back to the margin.
<H4 CLASS='st'>Parameters</H4>
<TT><U>margin</U></TT>
<BLOCKQUOTE>
The margin.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="settopmargin.htm">SetTopMargin()</A>,
<A HREF="setrightmargin.htm">SetRightMargin()</A>,
<A HREF="setautopagebreak.htm">SetAutoPageBreak()</A>,
<A HREF="setmargins.htm">SetMargins()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+29
View File
@@ -0,0 +1,29 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetLineWidth</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetLineWidth</H2>
<TT>SetLineWidth(<B>float</B> width)</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Defines the line width. By default, the value equals 0.2 mm. The method can be called before
the first page is created and the value is retained from page to page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>width</U></TT>
<BLOCKQUOTE>
The width.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="line.htm">Line()</A>,
<A HREF="rect.htm">Rect()</A>,
<A HREF="cell.htm">Cell()</A>,
<A HREF="multicell.htm">MultiCell()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+34
View File
@@ -0,0 +1,34 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetLink</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetLink</H2>
<TT>SetLink(<B>int</B> link [, <B>float</B> y [, <B>int</B> page]])</TT>
<H4 CLASS='st'>Version</H4>
1.5
<H4 CLASS='st'>Description</H4>
Defines the page and position a link points to.
<H4 CLASS='st'>Parameters</H4>
<TT><U>link</U></TT>
<BLOCKQUOTE>
The link identifier returned by AddLink().
</BLOCKQUOTE>
<TT><U>y</U></TT>
<BLOCKQUOTE>
Ordinate of target position; <TT>-1</TT> indicates the current position.
The default value is <TT>0</TT> (top of page).
</BLOCKQUOTE>
<TT><U>page</U></TT>
<BLOCKQUOTE>
Number of target page; <TT>-1</TT> indicates the current page. This is the default value.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="addlink.htm">AddLink()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+37
View File
@@ -0,0 +1,37 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetMargins</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetMargins</H2>
<TT>SetMargins(<B>float</B> left, <B>float</B> top [, <B>float</B> right])</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Defines the left, top and right margins. By default, they equal 1 cm. Call this method to change
them.
<H4 CLASS='st'>Parameters</H4>
<TT><U>left</U></TT>
<BLOCKQUOTE>
Left margin.
</BLOCKQUOTE>
<TT><U>top</U></TT>
<BLOCKQUOTE>
Top margin.
</BLOCKQUOTE>
<TT><U>right</U></TT>
<BLOCKQUOTE>
Right margin. Default value is the left one.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setleftmargin.htm">SetLeftMargin()</A>,
<A HREF="settopmargin.htm">SetTopMargin()</A>,
<A HREF="setrightmargin.htm">SetRightMargin()</A>,
<A HREF="setautopagebreak.htm">SetAutoPageBreak()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+28
View File
@@ -0,0 +1,28 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetRightMargin</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetRightMargin</H2>
<TT>SetRightMargin(<B>float</B> margin)</TT>
<H4 CLASS='st'>Version</H4>
1.5
<H4 CLASS='st'>Description</H4>
Defines the right margin. The method can be called before creating the first page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>margin</U></TT>
<BLOCKQUOTE>
The margin.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setleftmargin.htm">SetLeftMargin()</A>,
<A HREF="settopmargin.htm">SetTopMargin()</A>,
<A HREF="setautopagebreak.htm">SetAutoPageBreak()</A>,
<A HREF="setmargins.htm">SetMargins()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+28
View File
@@ -0,0 +1,28 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetSubject</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetSubject</H2>
<TT>SetSubject(<B>string</B> subject)</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Defines the subject of the document.
<H4 CLASS='st'>Parameters</H4>
<TT><U>subject</U></TT>
<BLOCKQUOTE>
The subject.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setauthor.htm">SetAuthor()</A>,
<A HREF="setcreator.htm">SetCreator()</A>,
<A HREF="setkeywords.htm">SetKeywords()</A>,
<A HREF="settitle.htm">SetTitle()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+40
View File
@@ -0,0 +1,40 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetTextColor</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetTextColor</H2>
<TT>SetTextColor(<B>int</B> r [, <B>int</B> g, <B>int</B> b])</TT>
<H4 CLASS='st'>Version</H4>
1.3
<H4 CLASS='st'>Description</H4>
Defines the color used for text. It can be expressed in RGB components or gray scale. The
method can be called before the first page is created and the value is retained from page to
page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>r</U></TT>
<BLOCKQUOTE>
If <TT>g</TT> et <TT>b</TT> are given, red component; if not, indicates the gray level.
Value between 0 and 255.
</BLOCKQUOTE>
<TT><U>g</U></TT>
<BLOCKQUOTE>
Green component (between 0 and 255).
</BLOCKQUOTE>
<TT><U>b</U></TT>
<BLOCKQUOTE>
Blue component (between 0 and 255).
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setdrawcolor.htm">SetDrawColor()</A>,
<A HREF="setfillcolor.htm">SetFillColor()</A>,
<A HREF="text.htm">Text()</A>,
<A HREF="cell.htm">Cell()</A>,
<A HREF="multicell.htm">MultiCell()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+28
View File
@@ -0,0 +1,28 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetTitle</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetTitle</H2>
<TT>SetTitle(<B>string</B> title)</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Defines the title of the document.
<H4 CLASS='st'>Parameters</H4>
<TT><U>title</U></TT>
<BLOCKQUOTE>
The title.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setauthor.htm">SetAuthor()</A>,
<A HREF="setcreator.htm">SetCreator()</A>,
<A HREF="setkeywords.htm">SetKeywords()</A>,
<A HREF="setsubject.htm">SetSubject()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+28
View File
@@ -0,0 +1,28 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetTopMargin</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetTopMargin</H2>
<TT>SetTopMargin(<B>float</B> margin)</TT>
<H4 CLASS='st'>Version</H4>
1.5
<H4 CLASS='st'>Description</H4>
Defines the top margin. The method can be called before creating the first page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>margin</U></TT>
<BLOCKQUOTE>
The margin.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setleftmargin.htm">SetLeftMargin()</A>,
<A HREF="setrightmargin.htm">SetRightMargin()</A>,
<A HREF="setautopagebreak.htm">SetAutoPageBreak()</A>,
<A HREF="setmargins.htm">SetMargins()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+29
View File
@@ -0,0 +1,29 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetX</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetX</H2>
<TT>SetX(<B>float</B> x)</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Defines the abscissa of the current position. If the passed value is negative, it is relative
to the right of the page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>x</U></TT>
<BLOCKQUOTE>
The value of the abscissa.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="getx.htm">GetX()</A>,
<A HREF="gety.htm">GetY()</A>,
<A HREF="sety.htm">SetY()</A>,
<A HREF="setxy.htm">SetXY()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+31
View File
@@ -0,0 +1,31 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetXY</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetXY</H2>
<TT>SetXY(<B>float</B> x, <B>float</B> y)</TT>
<H4 CLASS='st'>Version</H4>
1.2
<H4 CLASS='st'>Description</H4>
Defines the abscissa and ordinate of the current position. If the passed values are negative,
they are relative respectively to the right and bottom of the page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>x</U></TT>
<BLOCKQUOTE>
The value of the abscissa.
</BLOCKQUOTE>
<TT><U>y</U></TT>
<BLOCKQUOTE>
The value of the ordinate.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setx.htm">SetX()</A>,
<A HREF="sety.htm">SetY()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+29
View File
@@ -0,0 +1,29 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>SetY</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>SetY</H2>
<TT>SetY(<B>float</B> y)</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Moves the current abscissa back to the left margin and sets the ordinate. If the passed value
is negative, it is relative to the bottom of the page.
<H4 CLASS='st'>Parameters</H4>
<TT><U>y</U></TT>
<BLOCKQUOTE>
The value of the ordinate.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="getx.htm">GetX()</A>,
<A HREF="gety.htm">GetY()</A>,
<A HREF="sety.htm">SetY()</A>,
<A HREF="setxy.htm">SetXY()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>
+39
View File
@@ -0,0 +1,39 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE>Text</TITLE>
<LINK TYPE="text/css" REL="stylesheet" HREF="../fpdf.css">
</HEAD>
<BODY>
<H2>Text</H2>
<TT>Text(<B>float</B> x, <B>float</B> y, <B>string</B> txt)</TT>
<H4 CLASS='st'>Version</H4>
1.0
<H4 CLASS='st'>Description</H4>
Prints a character string. The origin is on the left of the first charcter, on the baseline.
This method allows to place a string precisely on the page, but it is usually easier to use
Cell(), MultiCell() or Write() which are the standard methods to print text.
<H4 CLASS='st'>Parameters</H4>
<TT><U>x</U></TT>
<BLOCKQUOTE>
Abscissa of the origin.
</BLOCKQUOTE>
<TT><U>y</U></TT>
<BLOCKQUOTE>
Ordinate of the origin.
</BLOCKQUOTE>
<TT><U>txt</U></TT>
<BLOCKQUOTE>
String to print.
</BLOCKQUOTE>
<H4 CLASS='st'>See also</H4>
<A HREF="setfont.htm">SetFont()</A>,
<A HREF="settextcolor.htm">SetTextColor()</A>,
<A HREF="cell.htm">Cell()</A>,
<A HREF="multicell.htm">MultiCell()</A>,
<A HREF="write.htm">Write()</A>.
<H6></H6>
<HR>
<DIV ALIGN="CENTER"><A HREF="index.htm">Index</A></DIV>
</BODY>
</HTML>

Some files were not shown because too many files have changed in this diff Show More