'; // end col
+
+ $studiensemester = new Studiensemester();
+ $tmp_ss = $selected_ss == $akt_ss->studiensemester_kurzbz ? $studiensemester->getPrevious() : $akt_ss->studiensemester_kurzbz;
+ $studiensemester->load($tmp_ss);
+
+ $zwg = new Zeitwunsch_gueltigkeit();
+ $zwg->getByUID($uid, 4, true, $studiensemester->ende);
+ $past_zwg_arr = $zwg->result;
+ echo '
';
+ echo '';
+ echo '
'; // end col
+ echo '
'; // end divCopyZWG
+
+ echo '
';
+
+ // Mail Adressen der Studiengaenge, wo Lektor ueber eine LV bereits verplant ist
+ $stgKzOfVerplant_arr = getStgOfVerplant($uid, $selected_ss);
+ $stgMail_arr = getStgMail($stgKzOfVerplant_arr);
+
+ echo '
diff --git a/composer.json b/composer.json
index 4d1c2a896..14e2ab141 100644
--- a/composer.json
+++ b/composer.json
@@ -313,5 +313,12 @@
},
"config": {
"bin-dir": "vendor/bin"
+ },
+ "require-dev": {
+ "squizlabs/php_codesniffer": "3.6.*",
+ "phpmd/phpmd": "2.*",
+ "phpmetrics/phpmetrics": "2.*",
+ "sebastian/phpcpd": "3.*"
}
}
+
diff --git a/composer.lock b/composer.lock
index 6fc201986..ea8f24af0 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "ab181b377c4128ccde03cc50571b7ab6",
- "content-hash": "e19ca762a6a929e69ae3b0e649fa4f6d",
+ "hash": "7e7441d3ba7b9b2be1f647b9bfc2c941",
+ "content-hash": "d59d1c1f4957fc2e3dc019cbb99b5aa2",
"packages": [
{
"name": "BlackrockDigital/startbootstrap-sb-admin-2",
@@ -1323,16 +1323,16 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "2.0.36",
+ "version": "2.0.37",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "a97547126396548c224703a267a30af1592be146"
+ "reference": "c812fbb4d6b4d7f30235ab7298a12f09ba13b37c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/a97547126396548c224703a267a30af1592be146",
- "reference": "a97547126396548c224703a267a30af1592be146",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c812fbb4d6b4d7f30235ab7298a12f09ba13b37c",
+ "reference": "c812fbb4d6b4d7f30235ab7298a12f09ba13b37c",
"shasum": ""
},
"require": {
@@ -1410,7 +1410,7 @@
"x.509",
"x509"
],
- "time": "2022-01-30 08:48:36"
+ "time": "2022-04-04 04:57:45"
},
{
"name": "rmariuzzo/jquery-checkboxes",
@@ -2065,7 +2065,1111 @@
"time": "2007-12-17 09:04:44"
}
],
- "packages-dev": [],
+ "packages-dev": [
+ {
+ "name": "composer/pcre",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "time": "2022-01-21 20:24:37"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "2.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a",
+ "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a",
+ "shasum": ""
+ },
+ "require": {
+ "composer/pcre": "^1",
+ "php": "^5.3.2 || ^7.0 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "time": "2022-02-24 20:20:32"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "time": "2021-11-30 19:35:32"
+ },
+ {
+ "name": "pdepend/pdepend",
+ "version": "2.10.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/pdepend/pdepend.git",
+ "reference": "da3166a06b4a89915920a42444f707122a1584c9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pdepend/pdepend/zipball/da3166a06b4a89915920a42444f707122a1584c9",
+ "reference": "da3166a06b4a89915920a42444f707122a1584c9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.7",
+ "symfony/config": "^2.3.0|^3|^4|^5|^6.0",
+ "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0",
+ "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0"
+ },
+ "require-dev": {
+ "easy-doc/easy-doc": "0.0.0|^1.2.3",
+ "gregwar/rst": "^1.0",
+ "phpunit/phpunit": "^4.8.36|^5.7.27",
+ "squizlabs/php_codesniffer": "^2.0.0"
+ },
+ "bin": [
+ "src/bin/pdepend"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PDepend\\": "src/main/php/PDepend"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Official version of pdepend to be handled with Composer",
+ "time": "2022-02-23 07:53:09"
+ },
+ {
+ "name": "phpmd/phpmd",
+ "version": "2.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpmd/phpmd.git",
+ "reference": "c0b678ba71902f539c27c14332aa0ddcf14388ec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpmd/phpmd/zipball/c0b678ba71902f539c27c14332aa0ddcf14388ec",
+ "reference": "c0b678ba71902f539c27c14332aa0ddcf14388ec",
+ "shasum": ""
+ },
+ "require": {
+ "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
+ "ext-xml": "*",
+ "pdepend/pdepend": "^2.10.3",
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "easy-doc/easy-doc": "0.0.0 || ^1.3.2",
+ "ext-json": "*",
+ "ext-simplexml": "*",
+ "gregwar/rst": "^1.0",
+ "mikey179/vfsstream": "^1.6.8",
+ "phpunit/phpunit": "^4.8.36 || ^5.7.27",
+ "squizlabs/php_codesniffer": "^2.0"
+ },
+ "bin": [
+ "src/bin/phpmd"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "PHPMD\\": "src/main/php"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Manuel Pichler",
+ "email": "github@manuel-pichler.de",
+ "homepage": "https://github.com/manuelpichler",
+ "role": "Project Founder"
+ },
+ {
+ "name": "Marc Würth",
+ "email": "ravage@bluewin.ch",
+ "homepage": "https://github.com/ravage84",
+ "role": "Project Maintainer"
+ },
+ {
+ "name": "Other contributors",
+ "homepage": "https://github.com/phpmd/phpmd/graphs/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
+ "homepage": "https://phpmd.org/",
+ "keywords": [
+ "mess detection",
+ "mess detector",
+ "pdepend",
+ "phpmd",
+ "pmd"
+ ],
+ "time": "2022-03-24 13:33:01"
+ },
+ {
+ "name": "phpmetrics/phpmetrics",
+ "version": "v2.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpmetrics/PhpMetrics.git",
+ "reference": "e279f7317390f642339941b693359e9a181817a7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpmetrics/PhpMetrics/zipball/e279f7317390f642339941b693359e9a181817a7",
+ "reference": "e279f7317390f642339941b693359e9a181817a7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "nikic/php-parser": "^3|^4",
+ "php": ">=5.5"
+ },
+ "replace": {
+ "halleck45/php-metrics": "*",
+ "halleck45/phpmetrics": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14",
+ "sebastian/comparator": ">=1.2.3",
+ "squizlabs/php_codesniffer": "^3.5",
+ "symfony/dom-crawler": "^3.0 || ^4.0 || ^5.0"
+ },
+ "bin": [
+ "bin/phpmetrics"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "./src/functions.php"
+ ],
+ "psr-0": {
+ "Hal\\": "./src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jean-François Lépine",
+ "email": "lepinejeanfrancois@yahoo.fr",
+ "homepage": "http://www.lepine.pro",
+ "role": "Copyright Holder"
+ }
+ ],
+ "description": "Static analyzer tool for PHP : Coupling, Cyclomatic complexity, Maintainability Index, Halstead's metrics... and more !",
+ "homepage": "http://www.phpmetrics.org",
+ "keywords": [
+ "analysis",
+ "qa",
+ "quality",
+ "testing"
+ ],
+ "time": "2022-03-24 10:19:51"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2017-02-26 11:10:40"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14 16:28:37"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2021-05-03 11:20:27"
+ },
+ {
+ "name": "sebastian/finder-facade",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/finder-facade.git",
+ "reference": "4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f",
+ "reference": "4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/finder": "~2.3|~3.0|~4.0",
+ "theseer/fdomdocument": "~1.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.",
+ "homepage": "https://github.com/sebastianbergmann/finder-facade",
+ "abandoned": true,
+ "time": "2017-11-18 17:31:49"
+ },
+ {
+ "name": "sebastian/phpcpd",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpcpd.git",
+ "reference": "dfed51c1288790fc957c9433e2f49ab152e8a564"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/dfed51c1288790fc957c9433e2f49ab152e8a564",
+ "reference": "dfed51c1288790fc957c9433e2f49ab152e8a564",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6|^7.0",
+ "phpunit/php-timer": "^1.0.6",
+ "sebastian/finder-facade": "^1.1",
+ "sebastian/version": "^1.0|^2.0",
+ "symfony/console": "^2.7|^3.0|^4.0"
+ },
+ "bin": [
+ "phpcpd"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Copy/Paste Detector (CPD) for PHP code.",
+ "homepage": "https://github.com/sebastianbergmann/phpcpd",
+ "time": "2017-11-16 08:49:28"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-10-03 07:35:21"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.6.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a",
+ "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "bin": [
+ "bin/phpcs",
+ "bin/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "keywords": [
+ "phpcs",
+ "standards"
+ ],
+ "time": "2021-12-12 21:44:58"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v3.4.47",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f",
+ "reference": "bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/filesystem": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3",
+ "symfony/finder": "<3.3"
+ },
+ "require-dev": {
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/event-dispatcher": "~3.3|~4.0",
+ "symfony/finder": "~3.3|~4.0",
+ "symfony/yaml": "~3.0|~4.0"
+ },
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Config\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Config Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-10-24 10:57:07"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v3.4.47",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81",
+ "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/debug": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/process": "<3.3"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.3|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.3|~4.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-10-24 10:57:07"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v3.4.47",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/ab42889de57fdfcfcc0759ab102e2fd4ea72dcae",
+ "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-10-24 10:57:07"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v3.4.47",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "51d2a2708c6ceadad84393f8581df1dcf9e5e84b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/51d2a2708c6ceadad84393f8581df1dcf9e5e84b",
+ "reference": "51d2a2708c6ceadad84393f8581df1dcf9e5e84b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/container": "^1.0"
+ },
+ "conflict": {
+ "symfony/config": "<3.3.7",
+ "symfony/finder": "<3.3",
+ "symfony/proxy-manager-bridge": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "provide": {
+ "psr/container-implementation": "1.0"
+ },
+ "require-dev": {
+ "symfony/config": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/config": "",
+ "symfony/expression-language": "For using expressions in service container configuration",
+ "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
+ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DependencyInjection\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DependencyInjection Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-10-24 10:57:07"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v3.4.47",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/e58d7841cddfed6e846829040dca2cca0ebbbbb3",
+ "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-10-24 10:57:07"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v3.4.47",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
+ "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-11-16 17:02:08"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.19.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b5f7b932ee6fa802fc792eabd77c4c88084517ce",
+ "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2020-10-23 09:01:57"
+ },
+ {
+ "name": "theseer/fdomdocument",
+ "version": "1.6.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/fDOMDocument.git",
+ "reference": "5cddd4f9076a9a2b85c5135935bba2dcb3ed7574"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/5cddd4f9076a9a2b85c5135935bba2dcb3ed7574",
+ "reference": "5cddd4f9076a9a2b85c5135935bba2dcb3ed7574",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "lib-libxml": "*",
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.",
+ "homepage": "https://github.com/theseer/fDOMDocument",
+ "abandoned": true,
+ "time": "2022-01-25 23:10:35"
+ }
+ ],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
diff --git a/config/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php
index cd45e6979..fd03cf844 100644
--- a/config/vilesci.config-default.inc.php
+++ b/config/vilesci.config-default.inc.php
@@ -254,4 +254,13 @@ define('BIS_STANDORTCODE_LEHRGAENGE', '0');
// bPk Abfrage
define('BPK_FUER_ALLE_BENUTZER_ABFRAGEN', false);
+
+// Bei folgenden Buchungstypen wird ein Anlegen geprüft ob bereits ein Eintrag für diesen Typ vorhanden ist im selben
+// Semester und ggf ein Hinweis ausgegeben
+define('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK', serialize(
+ array('StudiengebuehrAnzahlung', 'Studiengebuehr', 'StudiengebuehrRestzahlung', 'OEH')
+));
+
+// Spezialnoten die am Zeunigs und Diplomasupplement ignoriert werden
+define('ZEUGNISNOTE_NICHT_ANZEIGEN',serialize(array('iar', 'nz')));
?>
diff --git a/content/fas.xul.php b/content/fas.xul.php
index 19b24b0f0..d387cb525 100644
--- a/content/fas.xul.php
+++ b/content/fas.xul.php
@@ -239,7 +239,7 @@ foreach($addon_obj->result as $addon)
getAll();
+ $stsemobj->getAll('desc');
foreach ($stsemobj->studiensemester as $stsem)
{
echo "
@@ -934,6 +934,9 @@ foreach($addon_obj->result as $addon)
oncommand="studiensemesterChange('', 1)"
/>
+
+
+
diff --git a/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php b/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php
index c6bee8942..fda16c07a 100644
--- a/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php
+++ b/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php
@@ -120,6 +120,10 @@ echo "
+
+
@@ -151,6 +155,7 @@ echo "
+
diff --git a/content/lvplanung/stpl-week-overlay.xul.php b/content/lvplanung/stpl-week-overlay.xul.php
index 58d73d47d..0e6c083ce 100644
--- a/content/lvplanung/stpl-week-overlay.xul.php
+++ b/content/lvplanung/stpl-week-overlay.xul.php
@@ -247,6 +247,10 @@ echo '
+
+
+
diff --git a/content/lvplanung/timetable-week.xul.php b/content/lvplanung/timetable-week.xul.php
index 7e3a144dd..fd55b5393 100644
--- a/content/lvplanung/timetable-week.xul.php
+++ b/content/lvplanung/timetable-week.xul.php
@@ -681,12 +681,12 @@ while ($begin<=$ende)
{
$wunsch=new zeitwunsch();
if ($type=='lektor')
- if ($wunsch->loadPerson($pers_uid,$datum))
+ if ($wunsch->loadPerson($pers_uid,montag($datum)))
$zeitwunsch=$wunsch->zeitwunsch;
else
$error_msg.=$wunsch->errormsg;
if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
- if ($wunsch->loadZwLE($lva_id,$datum))
+ if ($wunsch->loadZwLE($lva_id,montag($datum)))
$zeitwunsch=$wunsch->zeitwunsch;
else
$error_msg.=$wunsch->errormsg;
diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php
index a2c6eca51..4a4b64201 100644
--- a/content/student/studentDBDML.php
+++ b/content/student/studentDBDML.php
@@ -2272,6 +2272,21 @@ if(!$error)
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
+ elseif(isset($_POST['type']) && $_POST['type']=='checkbuchung')
+ {
+ $person_ids = explode(';',$_POST['person_ids']);
+ $exists = false;
+ if (defined('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK') && (in_array($_POST['buchungstyp_kurzbz'], unserialize(FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK))))
+ {
+ $konto = new konto();
+ $exists = $konto->checkDoppelteBuchung($person_ids, $_POST['studiensemester_kurzbz'], $_POST['buchungstyp_kurzbz']);
+ }
+
+ if($exists)
+ $return = true;
+ else
+ $return = false;
+ }
elseif(isset($_POST['type']) && $_POST['type']=='neuebuchung')
{
//Speichert eine neue Buchung
diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php
index c41c60be1..5444504b1 100644
--- a/content/student/studentoverlay.js.php
+++ b/content/student/studentoverlay.js.php
@@ -3085,6 +3085,20 @@ function StudentKontoNeuSpeichern(dialog, person_ids, studiengang_kz)
return false;
}
+ var tocheck = ;
+
+ var exists = false;
+
+ if (tocheck)
+ {
+ exists = StudentCheckBuchung(person_ids, studiensemester_kurzbz, buchungstyp_kurzbz, studiengang_kz);
+ }
+ if (exists)
+ {
+ if(!confirm('Die Buchung ist bereits vorhanden. Trotzdem fortfahren?'))
+ return false;
+ }
+
req.add('type', 'neuebuchung');
req.add('person_ids', person_ids);
@@ -3116,6 +3130,28 @@ function StudentKontoNeuSpeichern(dialog, person_ids, studiengang_kz)
return true;
}
}
+// ****
+// * Prüft ob die Buchung bereits vorhanden ist
+// ****
+function StudentCheckBuchung(person_ids, studiensemester_kurzbz, buchungstyp_kurzbz, studiengang_kz)
+{
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ var url = 'content/student/studentDBDML.php';
+ var req = new phpRequest(url,'','');
+ req.add('type', 'checkbuchung');
+
+ req.add('person_ids', person_ids);
+ req.add('studiensemester_kurzbz', studiensemester_kurzbz);
+ req.add('buchungstyp_kurzbz', buchungstyp_kurzbz);
+ req.add('studiengang_kz', studiengang_kz);
+
+ var response = req.executePOST();
+
+ var val = new ParseReturnValue(response);
+
+ return(val.dbdml_return);
+}
// *****
// * Druckt eine Zahlungsbestaetigung aus
diff --git a/content/tempusoverlay.js.php b/content/tempusoverlay.js.php
index c8bc787e8..ca37a397c 100644
--- a/content/tempusoverlay.js.php
+++ b/content/tempusoverlay.js.php
@@ -334,6 +334,29 @@ function onLektorSelect(event)
}
}
+function LektorFunktionLoadZeitwunschAdminUrl(){
+
+ var treeLektor = document.getElementById('tree-lektor');
+ var col = treeLektor.columns ? treeLektor.columns["uid"] : "uid";
+ try
+ {
+ var uid = treeLektor.view.getCellText(treeLektor.currentIndex,col);
+ }
+ catch(e)
+ {
+ }
+
+ if (uid == '' || uid == undefined)
+ {
+ alert('LektorIn auswählen, um Zeitwünsche einsehen zu können.');
+ return;
+ }
+ else
+ {
+ window.open('vilesci/personen/zeitwunsch.php?uid=' + uid);
+ }
+}
+
function loadURL(event)
{
var contentFrame = document.getElementById('contentFrame');
diff --git a/content/tempusoverlay.xul.php b/content/tempusoverlay.xul.php
index 0e35d71f0..2e1da8b8b 100644
--- a/content/tempusoverlay.xul.php
+++ b/content/tempusoverlay.xul.php
@@ -186,6 +186,8 @@ echo '
+
+
diff --git a/include/adresse.class.php b/include/adresse.class.php
index 0d4e6a7ca..3426d358d 100644
--- a/include/adresse.class.php
+++ b/include/adresse.class.php
@@ -53,8 +53,6 @@ class adresse extends basis_db
public $rechnungsadresse=false; // boolean
public $anmerkung; // string
public $co_name;
- public $adressentyp;
- public $bezeichnung;
public $bezeichnung_mehrsprachig;
/**
@@ -523,29 +521,5 @@ class adresse extends basis_db
}
return true;
}
-
- public function getAdressentyp()
- {
- $qry = "SELECT * FROM public.tbl_adressentyp ORDER BY sort";
-
- if($this->db_query($qry))
- {
- while($row = $this->db_fetch_object())
- {
- $obj = new adresse();
-
- $obj->adressentyp = $row->adressentyp_kurzbz;
- $obj->bezeichnung = $row->bezeichnung;
-
- $this->result[] = $obj;
- }
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
}
?>
diff --git a/include/adressentyp.class.php b/include/adressentyp.class.php
new file mode 100644
index 000000000..b3f005a94
--- /dev/null
+++ b/include/adressentyp.class.php
@@ -0,0 +1,41 @@
+db_query($qry))
+ {
+ while($row = $this->db_fetch_object())
+ {
+ $obj = new adressentyp();
+
+ $obj->adressentyp = $row->adressentyp_kurzbz;
+ $obj->bezeichnung = $row->bezeichnung;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+}
+
+?>
diff --git a/include/functions.inc.php b/include/functions.inc.php
index 8109a2035..7b3560dde 100644
--- a/include/functions.inc.php
+++ b/include/functions.inc.php
@@ -1182,4 +1182,18 @@ function generateUniqueToken($length = 64)
return $token;
}
+
+/**
+ * Berechnet die Anzahl von ganzen Tagen zwischen zwei Daten
+ * @param string $date1 Datum im Format '2022-02-22'.
+ * @param string $date2 Datum im Format '2022-04-22'.
+ * @return Anzahl der Tage
+ */
+function anzahlTage($date1, $date2)
+{
+ $date1_ts = strtotime($date1);
+ $date2_ts = strtotime($date2);
+ $diff = $date2_ts - $date1_ts;
+ return round($diff / 86400);
+}
?>
diff --git a/include/globals.inc.php b/include/globals.inc.php
index bbe9cf738..da2fda055 100644
--- a/include/globals.inc.php
+++ b/include/globals.inc.php
@@ -2,13 +2,14 @@
// Hintergrundfarben fuer Tabellen beim Zeitwunsch
global $cfgStdBgcolor;
$cfgStdBgcolor=array();
- $cfgStdBgcolor[0]="#CC0000";
- $cfgStdBgcolor[1]="#FF2200";
- $cfgStdBgcolor[2]="#FF9922";
- $cfgStdBgcolor[3]="#FFFF55";
- $cfgStdBgcolor[4]="#C0ECC3";
- $cfgStdBgcolor[5]="#48FA66";
- $cfgStdBgcolor[6]="#CCFFCC";
+ $cfgStdBgcolor[0]="#CC0000"; // rot
+ $cfgStdBgcolor[1]="#FF2200"; // hellrot
+ $cfgStdBgcolor[2]="#FF9922"; // orange
+ $cfgStdBgcolor[3]="#FFFF55"; // gelb
+ $cfgStdBgcolor[4]="#C0ECC3"; // hellgrün mittel
+ $cfgStdBgcolor[5]="#48FA66"; // dunkelgrün mittel
+ $cfgStdBgcolor[6]="#CCFFCC"; // hellgrün heller
+ $cfgStdBgcolor[7]="#59b359 "; // dunkelgrün dunkler
// Mehrsprachige Wochentage
global $tagbez;
diff --git a/include/konto.class.php b/include/konto.class.php
index 09afa5303..ca0950e34 100644
--- a/include/konto.class.php
+++ b/include/konto.class.php
@@ -553,31 +553,38 @@ class konto extends basis_db
/**
* Überprüft, ob das Konto einer Person ausgeglichen ist, oder ob noch Zahlungen offen sind
- * @param $person_id ID der Person, die geprüft werden soll
- * @return true wenn ausgeglichen, false wenn Zahlungen offen, false mit errormsg wenn ein Fehler aufgetreten ist
+ * @param int $person_id ID der Person, die geprüft werden soll.
+ * @param bool $aktuelleBuchungenOnly True, wenn nur Zahlungen mit Buchungsdatum <= aktuelles Datum berücksichtigt werden sollen.
+ * @return boolean true wenn ausgeglichen, false wenn Zahlungen offen, false mit errormsg wenn ein Fehler aufgetreten ist
*/
- public function checkKontostand($person_id)
+ public function checkKontostand($person_id, $aktuelleBuchungenOnly = false)
{
- $qry="SELECT sum(betrag) as summe FROM public.tbl_konto WHERE person_id=".$this->db_add_param($person_id);
- if($result=$this->db_query($qry))
+ $qry = "SELECT sum(betrag) as summe
+ FROM public.tbl_konto
+ WHERE person_id=".$this->db_add_param($person_id);
+
+ if($aktuelleBuchungenOnly)
+ $qry .= " AND buchungsdatum <= now()";
+
+ if ($result = $this->db_query($qry))
{
- if($row=$this->db_fetch_object())
+ if ($row = $this->db_fetch_object())
{
- if($row->summe>=0)
+ if ($row->summe >= 0)
return true;
else
return false;
}
else
{
+ $this->errormsg = "Fehler beim Holen der Daten";
return false;
- $this->errormsg="Fehler beim Holen der Daten";
}
}
else
{
+ $this->errormsg = "Fehler bei der Datenbankabfrage";
return false;
- $this->errormsg="Fehler bei der Datenbankabfrage";
}
}
@@ -957,6 +964,30 @@ class konto extends basis_db
return false;
}
}
+
+ public function checkDoppelteBuchung($person_ids, $stsem, $typ)
+ {
+ $qry = "SELECT betrag
+ FROM public.tbl_konto
+ JOIN public.tbl_benutzer benutzer USING(person_id)
+ WHERE person_id IN (".$this->implode4SQL(array_filter($person_ids)).")
+ AND studiensemester_kurzbz = ".$this->db_add_param($stsem)."
+ AND buchungstyp_kurzbz = ".$this->db_add_param($typ)."
+ GROUP BY buchungsnr";
+
+ if ($result = $this->db_query($qry))
+ {
+ if ($this->db_num_rows($result) > 0)
+ return true;
+ else
+ return false;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler bei der Abfrage aufgetreten';
+ return false;
+ }
+ }
}
?>
diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php
index 23677a6e3..7d407cee4 100644
--- a/include/lehreinheit.class.php
+++ b/include/lehreinheit.class.php
@@ -681,8 +681,11 @@ class lehreinheit extends basis_db
else
{
$row=$this->db_fetch_object($erg_zs);
- $this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->mitarbeiter_uid|$row->zeitsperretyp_kurzbz|$row->bezeichnung|$row->vondatum/$row->vonstunde-$row->bisdatum/$row->bisstunde - $row->vertretung_uid";
- return false;
+ if ($row->zeitsperretyp_kurzbz != 'ZVerfueg')
+ {
+ $this->errormsg = "Kollision (Zeitsperre): $row->zeitsperre_id|$row->mitarbeiter_uid|$row->zeitsperretyp_kurzbz|$row->bezeichnung|$row->vondatum/$row->vonstunde-$row->bisdatum/$row->bisstunde - $row->vertretung_uid";
+ return false;
+ }
}
}
return true;
diff --git a/include/lehrelisthelper.class.php b/include/lehrelisthelper.class.php
index e78792732..c7fdb9959 100644
--- a/include/lehrelisthelper.class.php
+++ b/include/lehrelisthelper.class.php
@@ -202,9 +202,12 @@ class LehreListHelper
$qry = 'SELECT
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, public.tbl_student.student_uid,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
- (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
+ (SELECT status_kurzbz FROM public.tbl_prestudentstatus
+ WHERE prestudent_id=tbl_student.prestudent_id
+ ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
- tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang, tbl_mobilitaet.mobilitaetstyp_kurzbz,
+ tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang,
+ tbl_mobilitaet.mobilitaetstyp_kurzbz, tbl_zeugnisnote.note,
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree
FROM
campus.vw_student_lehrveranstaltung
@@ -212,7 +215,9 @@ class LehreListHelper
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
- LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
+ LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
+ AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
+ AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN lehre.tbl_note USING (note)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
@@ -254,8 +259,10 @@ class LehreListHelper
else
$zusatz='';
- if($row->bisio_id!='' && $row->status!='Incoming' && ($row->bis > $stsemdatumvon || $row->bis=='') && $row->von < $stsemdatumbis) //Outgoing
- $zusatz.='(o)(ab '.$datum->formatDatum($row->von,'d.m.Y').')';
+ //Outgoing
+ if($row->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '')
+ && $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30))
+ $zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
$zusatz.= '('. $row->anmerkung. ')';
@@ -281,7 +288,8 @@ class LehreListHelper
'gruppe'=>trim($row->gruppe),
'zusatz'=>$zusatz,
'studiengang_kurzbz'=>$row->kurzbzlang,
- 'mobilitaetstyp_kurzbz'=>$row->mobilitaetstyp_kurzbz
+ 'mobilitaetstyp_kurzbz'=>$row->mobilitaetstyp_kurzbz,
+ 'note'=>$row->note
));
}
}
diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php
index 71dbf3319..e2bba04e6 100644
--- a/include/lehrstunde.class.php
+++ b/include/lehrstunde.class.php
@@ -34,6 +34,8 @@ require_once(dirname(__FILE__).'/variable.class.php');
class lehrstunde extends basis_db
{
+ public $result = array();
+
public $stundenplan_id; /// @brief ID in der Datenbank
public $lehreinheit_id; /// @brief id der Lehreinheit in der DB
public $unr; // @brief Unterrichtsnummer
@@ -876,8 +878,12 @@ class lehrstunde extends basis_db
if ($anz_zs!=0)
{
$row = $this->db_fetch_object($erg_zs);
- $this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
- return true;
+
+ if ($row->zeitsperretyp_kurzbz != 'ZVerfueg')
+ {
+ $this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
+ return true;
+ }
}
return false;
}
@@ -1060,7 +1066,19 @@ class lehrstunde extends basis_db
return $result;
}
- public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
+ /**
+ * Holt Studenplandaten.
+ *
+ * @param $db_stpl_table
+ * @param null $lehrveranstaltung_id
+ * @param null $studiensemester_kurzbz
+ * @param null $lehreinheit_id
+ * @param null $mitarbeiter_uid
+ * @param null $student_uid
+ * @param false $nurBevorstehende Wenn true, dann werden nur bevorstehende LVs abgefragt.
+ * @return bool
+ */
+ public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
{
$qry = "SELECT
@@ -1112,6 +1130,11 @@ class lehrstunde extends basis_db
else
return false;
+ if($nurBevorstehende)
+ {
+ $qry.= " AND datum >= NOW()::date ";
+ }
+
$qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
@@ -1136,7 +1159,10 @@ class lehrstunde extends basis_db
return true;
}
else
+ {
+ $this->errormsg = 'Fehler beim Einholen der Stundenplandaten';
return false;
+ }
}
}
diff --git a/include/prestudent.class.php b/include/prestudent.class.php
index eebe39d01..3a7769b2a 100644
--- a/include/prestudent.class.php
+++ b/include/prestudent.class.php
@@ -834,11 +834,26 @@ class prestudent extends person
$stg_obj = new studiengang();
$stg_obj->load($studiengang_kz);
if($stg_obj->typ=='m')
- $qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null AND a.zgvmas_erfuellt = 't'";
+ {
+ $qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null";
+
+ if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN)
+ $qry .= " AND a.zgvmas_erfuellt = 't'";
+ }
elseif($stg_obj->typ=='p')
- $qry.=" AND a.rolle='Interessent' AND a.zgvdoktor_code is not null AND a.zgvdoktor_erfuellt = 't'";
+ {
+ $qry.=" AND a.rolle='Interessent' AND a.zgvdoktor_code is not null";
+
+ if (defined('ZGV_DOKTOR_ANZEIGEN') && ZGV_DOKTOR_ANZEIGEN)
+ $qry .= " AND a.zgvdoktor_erfuellt = 't'";
+ }
else
- $qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null AND a.zgv_erfuellt = 't'";
+ {
+ $qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null";
+
+ if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN)
+ $qry .= " AND a.zgv_erfuellt = 't'";
+ }
break;
case "reihungstestangemeldet":
$qry.="
@@ -2489,10 +2504,14 @@ class prestudent extends person
$qry = "SELECT
UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) as kuerzel
FROM
- public.tbl_prestudent
+ public.tbl_prestudent pt
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
+ AND NOT EXISTS
+ (SELECT * FROM public.tbl_prestudentstatus ps
+ WHERE ps.prestudent_id = pt.prestudent_id
+ AND status_kurzbz = 'Abbrecher' )
AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student')
AND typ in ('b','m','d')
ORDER BY status_kurzbz ASC
diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php
index 29b4db23f..0ac59a9ff 100644
--- a/include/wochenplan.class.php
+++ b/include/wochenplan.class.php
@@ -1235,7 +1235,9 @@ class wochenplan extends basis_db
if (isset($wunsch[$i][$j]))
{
$index=$wunsch[$i][$j];
- if ($index==-3)
+
+ // Negative und positive Zeitsperren beruecksichtigen
+ if ($index==-3 || $index == 4)
{
//Wenn eine Zeitsperre eingetragen ist, dann diese im Tooltiptext anzeigen
$zeitsperre = new zeitsperre();
diff --git a/include/zeitsperre.class.php b/include/zeitsperre.class.php
index 57d2ba09a..0e737eaf0 100644
--- a/include/zeitsperre.class.php
+++ b/include/zeitsperre.class.php
@@ -537,5 +537,60 @@ class zeitsperre extends basis_db
return $this->bisdatum;
}
+
+ /**
+ * Liefert die Zeitsperren eines Users innerhalb einer bestimmten Zeitspanne.
+ * Einschränkung nach Zeitsperrentyp möglich.
+ *
+ * @param $uid
+ * @param $von string Datum im Format YYYY-MM-DD
+ * @param $bis string Datum im Format YYYY-MM-DD
+ * @param null $zeitsperretyp_kurzbz
+ * @return bool
+ */
+ public function getVonBis($uid, $von, $bis, $zeitsperretyp_kurzbz = null)
+ {
+ $qry = '
+ SELECT
+ zeitsperre_id, zeitsperretyp_kurzbz, vondatum, vonstunde, bisdatum, bisstunde
+ FROM
+ campus.tbl_zeitsperre
+ LEFT JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz)
+ WHERE
+ mitarbeiter_uid = '. $this->db_add_param($uid). '
+ AND (
+ (vondatum BETWEEN '.$this->db_add_param($von).' AND '.$this->db_add_param($bis).')
+ OR
+ (bisdatum BETWEEN '.$this->db_add_param($von).' AND '.$this->db_add_param($bis).')
+ )';
+
+ if (!is_null($zeitsperretyp_kurzbz))
+ {
+ $qry.= '
+ AND zeitsperretyp_kurzbz = '. $this->db_add_param($zeitsperretyp_kurzbz);
+ }
+
+ if (!$this->db_query($qry))
+ {
+ $this->errormsg=$this->db_last_error();
+ return false;
+ }
+ else
+ {
+ while($row = $this->db_fetch_object())
+ {
+ $obj = new stdClass();
+ $obj->zeitsperre_id = $row->zeitsperre_id;
+ $obj->zeitsperretyp_kurzbz = $row->zeitsperretyp_kurzbz;
+ $obj->vondatum = $row->vondatum;
+ $obj->vonstunde = $row->vonstunde;
+ $obj->bisdatum = $row->bisdatum;
+ $obj->bisstunde = $row->bisstunde;
+
+ $this->result[]= $obj;
+ }
+ return true;
+ }
+ }
}
?>
diff --git a/include/zeitwunsch.class.php b/include/zeitwunsch.class.php
index ca15fdb4d..a8c90f09c 100644
--- a/include/zeitwunsch.class.php
+++ b/include/zeitwunsch.class.php
@@ -1,374 +1,454 @@
-,
- * Andreas Oesterreicher and
- * Rudolf Hangl .
- */
-require_once(dirname(__FILE__).'/basis_db.class.php');
-
-class zeitwunsch extends basis_db
-{
- public $new; // boolean
- public $zeitwunsch;
-
- //Tabellenspalten
- public $stunde; // smalint
- public $mitarbeiter_uid; // varchar(32)
- public $tag; // smalint
- public $gewicht; // smalint
- public $min_stunde;
- public $max_stunde;
- public $insertamum;
- public $insertvon;
- public $updateamum;
- public $updatevon;
-
- /**
- * Konstruktor
- */
- public function __construct()
- {
- parent::__construct();
-
- $this->init();
- }
-
- /**
- * Initialisierung
- *
- */
- private function init()
- {
- // Stundenraster abfragen
- $sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;';
- if(!$this->db_query($sql))
- {
- $this->errormsg=$this->db_last_error();
- return false;
- }
- else
- {
- $row=$this->db_fetch_object();
- $this->min_stunde=$row->min_stunde;
- $this->max_stunde=$row->max_stunde;
- }
- return true;
- }
-
- /**
- * Prueft die Variablen vor dem Speichern
- * auf Gueltigkeit.
- * @return true wenn ok, false im Fehlerfall
- */
- protected function validate()
- {
- if(mb_strlen($this->mitarbeiter_uid)>32)
- {
- $this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein.';
- return false;
- }
- if($this->mitarbeiter_uid == '')
- {
- $this->errormsg = 'UID muss angegeben werden';
- return false;
- }
- if(!is_numeric($this->stunde))
- {
- $this->errormsg = 'Stunde muss eine gueltige Zahl sein';
- return false;
- }
- if(!is_numeric($this->gewicht))
- {
- $this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
- return false;
- }
- if(!is_numeric($this->tag))
- {
- $this->errormsg = 'Tag muss eine gueltige Zahl sein';
- return false;
- }
-
- return true;
- }
-
- /**
- * Speichert einen Zeitwunsch in die Datenbank
- * Wenn $new auf true gesetzt ist wird ein neuer Datensatz
- * angelegt, ansonsten der Datensatz upgedated
- * @return true wenn erfolgreich, false im Fehlerfall
- */
- public function save()
- {
- //Variablen auf Gueltigkeit pruefen
- if(!$this->validate())
- return false;
-
- if($this->new)
- {
- $qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
- insertamum, insertvon, updateamum, updatevon) VALUES('.
- $this->db_add_param($this->mitarbeiter_uid).','.
- $this->db_add_param($this->tag, FHC_INTEGER).','.
- $this->db_add_param($this->stunde, FHC_INTEGER).','.
- $this->db_add_param($this->gewicht, FHC_INTEGER).','.
- $this->db_add_param($this->insertamum).','.
- $this->db_add_param($this->insertvon).','.
- $this->db_add_param($this->updateamum).','.
- $this->db_add_param($this->updatevon).');';
- }
- else
- {
- $qry = 'UPDATE campus.tbl_zeitwunsch SET'.
- ' gewicht='.$this->db_add_param($this->gewicht, FHC_INTEGER).', '.
- ' updateamum='.$this->db_add_param($this->updateamum).', '.
- ' updatevon='.$this->db_add_param($this->updatevon).
- " WHERE
- mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid, FHC_STRING, false)."
- AND tag=".$this->db_add_param($this->tag, FHC_INTEGER)."
- AND stunde=".$this->db_add_param($this->stunde, FHC_INTEGER);
- }
-
- if($this->db_query($qry))
- {
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Speichern des Zeitwunsches';
- return false;
- }
- }
-
- /**
- * Zeitwunsch einer Person laden
- * @param uid
- * @param datum
- * @return boolean Ergebnis steht in Array $zeitwunsch wenn true
- */
- public function loadPerson($uid,$datum=null)
- {
- // Zeitwuensche abfragen
- if(!$this->db_query("SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$this->db_add_param($uid)))
- {
- $this->errormsg = $this->db_last_error();
- return false;
- }
- else
- {
- while ($row = $this->db_fetch_object())
- {
- $this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
- $this->insertamum = $row->insertamum;
- $this->insertvon = $row->insertvon;
- $this->updateamum = $row->updateamum;
- $this->updatevon = $row->updatevon;
- }
- }
-
- if (!is_null($datum))
- {
- $beginn=montag($datum);
- $start=date('Y-m-d',$beginn);
- $ende=date('Y-m-d',jump_day($beginn,7));
-
- // Zeitsperren abfragen
- $sql="
- SELECT
- vondatum,vonstunde,bisdatum,bisstunde
- FROM
- campus.tbl_zeitsperre
- WHERE
- mitarbeiter_uid=".$this->db_add_param($uid)."
- AND vondatum<=".$this->db_add_param($ende)."
- AND bisdatum>=".$this->db_add_param($start);
-
- if(!$this->db_query($sql))
- {
- $this->errormsg=$this->db_last_error();
- return false;
- }
- else
- {
- while($row = $this->db_fetch_object())
- {
- $beginn=montag($datum);
- for ($i=1;$i<=7;$i++)
- {
- $date_iso=date('Y-m-d',$beginn);
- //echo "\n".$date_iso."\n".$row->vondatum."\n";
- if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
- for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
- $this->zeitwunsch[$i][$j]=-3;
- if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
- {
- if (is_null($row->vonstunde))
- $row->vonstunde=$this->min_stunde;
- for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
- $this->zeitwunsch[$i][$j]=-3;
- }
- if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
- {
- if (is_null($row->bisstunde))
- $row->bisstunde=$this->max_stunde;
- for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
- $this->zeitwunsch[$i][$j]=-3;
- }
- if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
- {
- if (is_null($row->vonstunde))
- $row->vonstunde=$this->min_stunde;
- if (is_null($row->bisstunde))
- $row->bisstunde=$this->max_stunde;
- for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
- $this->zeitwunsch[$i][$j]=-3;
- }
- $beginn=jump_day($beginn,1);
- }
- }
- }
- }
- return true;
- }
-
-
- /**
- * Zeitwunsch der Personen in Lehreinheiten laden
- * @param $le_id LehreinheitID Array
- * @param $datum
- * @return true oder false
- */
- public function loadZwLE($le_id,$datum=null)
- {
- //$this->init();
- // SUB-Select fuer LVAs
- $sql_query_leid='';
- $sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE ';
- for ($i=0;$idb_add_param($ende)."
- AND bisdatum>=".$this->db_add_param($start);
-
- if(!$this->db_query($sql))
- {
- $this->errormsg = $this->db_last_error();
- return false;
- }
- while($row = $this->db_fetch_object())
- {
- $beginn=montag($datum);
- for ($i=1;$i<=7;$i++)
- {
- $date_iso=date('Y-m-d',$beginn);
- //echo "\n".$date_iso."\n".$row->vondatum."\n";
- if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
- for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
- $this->zeitwunsch[$i][$j]=-3;
- if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
- {
- if (is_null($row->vonstunde))
- $row->vonstunde=$this->min_stunde;
- for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
- $this->zeitwunsch[$i][$j]=-3;
- }
- if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
- {
- if (is_null($row->bisstunde))
- $row->bisstunde=$this->max_stunde;
- for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
- $this->zeitwunsch[$i][$j]=-3;
- }
- if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
- {
- if (is_null($row->vonstunde))
- $row->vonstunde=$this->min_stunde;
- if (is_null($row->bisstunde))
- $row->bisstunde=$this->max_stunde;
- for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
- $this->zeitwunsch[$i][$j]=-3;
- }
- $beginn=jump_day($beginn,1);
- }
- }
- }
- return true;
- }
-
- /**
- * Prueft ob bereits ein Zeitwunsch eingetragen ist
- *
- * @param $uid
- * @param $stunde
- * @param $tag
- * @return true wenn vorhanden sonst false
- */
- function exists($uid, $stunde, $tag)
- {
- $qry = "SELECT 1 FROM campus.tbl_zeitwunsch
- WHERE
- mitarbeiter_uid=".$this->db_add_param($uid)."
- AND stunde=".$this->db_add_param($stunde, FHC_INTEGER)."
- AND tag=".$this->db_add_param($tag, FHC_INTEGER);
- if($this->db_query($qry))
- {
- if($this->db_num_rows()>0)
- return true;
- else
- return false;
- }
- else
- {
- $this->errormsg='Fehler beim Abfragen des Zeitwunsches';
- return false;
- }
- }
-}
-?>
\ No newline at end of file
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ */
+require_once(dirname(__FILE__).'/basis_db.class.php');
+
+class zeitwunsch extends basis_db
+{
+ public $new; // boolean
+ public $zeitwunsch;
+
+ //Tabellenspalten
+ public $stunde; // smalint
+ public $mitarbeiter_uid; // varchar(32)
+ public $tag; // smalint
+ public $gewicht; // smalint
+ public $min_stunde;
+ public $max_stunde;
+ public $insertamum;
+ public $insertvon;
+ public $updateamum;
+ public $updatevon;
+ public $zeitwunsch_id;
+ public $zeitwunsch_gueltigkeit_id;
+
+ /**
+ * Konstruktor
+ */
+ public function __construct()
+ {
+ parent::__construct();
+
+ $this->init();
+ }
+
+ /**
+ * Initialisierung
+ *
+ */
+ private function init()
+ {
+ // Stundenraster abfragen
+ $sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;';
+ if(!$this->db_query($sql))
+ {
+ $this->errormsg=$this->db_last_error();
+ return false;
+ }
+ else
+ {
+ $row=$this->db_fetch_object();
+ $this->min_stunde=$row->min_stunde;
+ $this->max_stunde=$row->max_stunde;
+ }
+ return true;
+ }
+
+ /**
+ * Prueft die Variablen vor dem Speichern
+ * auf Gueltigkeit.
+ * @return true wenn ok, false im Fehlerfall
+ */
+ protected function validate()
+ {
+ if(mb_strlen($this->mitarbeiter_uid)>32)
+ {
+ $this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein.';
+ return false;
+ }
+ if($this->mitarbeiter_uid == '')
+ {
+ $this->errormsg = 'UID muss angegeben werden';
+ return false;
+ }
+ if(!is_numeric($this->stunde))
+ {
+ $this->errormsg = 'Stunde muss eine gueltige Zahl sein';
+ return false;
+ }
+ if(!is_numeric($this->gewicht))
+ {
+ $this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
+ return false;
+ }
+ if(!is_numeric($this->tag))
+ {
+ $this->errormsg = 'Tag muss eine gueltige Zahl sein';
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Speichert einen Zeitwunsch in die Datenbank
+ * Wenn $new auf true gesetzt ist wird ein neuer Datensatz
+ * angelegt, ansonsten der Datensatz upgedated
+ * @return true wenn erfolgreich, false im Fehlerfall
+ */
+ public function save()
+ {
+ //Variablen auf Gueltigkeit pruefen
+ if(!$this->validate())
+ return false;
+
+ if($this->new)
+ {
+ $qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
+ insertamum, insertvon, updateamum, updatevon, zeitwunsch_gueltigkeit_id) VALUES('.
+ $this->db_add_param($this->mitarbeiter_uid).','.
+ $this->db_add_param($this->tag, FHC_INTEGER).','.
+ $this->db_add_param($this->stunde, FHC_INTEGER).','.
+ $this->db_add_param($this->gewicht, FHC_INTEGER).','.
+ $this->db_add_param($this->insertamum).','.
+ $this->db_add_param($this->insertvon).','.
+ $this->db_add_param($this->updateamum).','.
+ $this->db_add_param($this->updatevon).','.
+ $this->db_add_param($this->zeitwunsch_gueltigkeit_id).');';
+ }
+ else
+ {
+ $qry = 'UPDATE campus.tbl_zeitwunsch SET'.
+ ' gewicht='.$this->db_add_param($this->gewicht, FHC_INTEGER).', '.
+ ' updateamum='.$this->db_add_param($this->updateamum).', '.
+ ' updatevon='.$this->db_add_param($this->updatevon).
+ " WHERE
+ mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid, FHC_STRING, false)."
+ AND tag=".$this->db_add_param($this->tag, FHC_INTEGER)."
+ AND stunde=".$this->db_add_param($this->stunde, FHC_INTEGER). "
+ AND zeitwunsch_gueltigkeit_id=".$this->db_add_param($this->zeitwunsch_gueltigkeit_id, FHC_INTEGER);
+ }
+
+ if($this->db_query($qry))
+ {
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Speichern des Zeitwunsches';
+ return false;
+ }
+ }
+
+ /**
+ * Zeitwunsch einer Person zu bestimmter Zeitwunschgueltigkeit laden
+ * @param $uid
+ * @param $zeitwunsch_gueltigkeit_id
+ * @return boolean
+ */
+ public function loadByZWG($uid, $zeitwunsch_gueltigkeit_id)
+ {
+ $qry = '
+ SELECT *
+ FROM campus.tbl_zeitwunsch
+ JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
+ WHERE zwg.mitarbeiter_uid = ' . $this->db_add_param($uid) . '
+ AND zeitwunsch_gueltigkeit_id = ' . $this->db_add_param($zeitwunsch_gueltigkeit_id) . '
+ ORDER BY tag, stunde
+ ';
+
+ if ($this->db_query($qry))
+ {
+ while ($row = $this->db_fetch_object())
+ {
+ $this->zeitwunsch[$row->tag][$row->stunde] = $row->gewicht;
+ $this->insertamum = $row->insertamum;
+ $this->insertvon = $row->insertvon;
+ $this->updateamum = $row->updateamum;
+ $this->updatevon = $row->updatevon;
+ $this->zeitwunsch_id = $row->zeitwunsch_id;
+ $this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = $this->db_last_error();
+ return false;
+ }
+ }
+
+ /**
+ * Alle Zeitwuensche einer Person laden.
+ * Um auf einen Zeitwunsch einer bestimmten Zeit, also innerhalb einer bestimmten Zeitwunschgueltigkeit
+ * zu beschraenken, kann ein Datum mitgegeben werden.
+ * @param uid
+ * @param datum UNIX timestamp, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
+ * @return boolean Ergebnis steht in Array $zeitwunsch wenn true
+ */
+ public function loadPerson($uid,$datum=null)
+ {
+ // Default datum: jetzt
+ if (is_null($datum))
+ {
+ $datum = time();
+ }
+
+ $qry = "
+ SELECT *
+ FROM campus.tbl_zeitwunsch
+ JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
+ WHERE zwg.mitarbeiter_uid=". $this->db_add_param($uid). "
+ AND ". $this->db_add_param(date('Y-m-d', $datum)). " BETWEEN von AND COALESCE(bis,'2999-01-01');
+ ";
+
+
+ // Zeitwuensche abfragen
+ if(!$this->db_query($qry))
+ {
+ $this->errormsg = $this->db_last_error();
+ return false;
+ }
+ else
+ {
+ while ($row = $this->db_fetch_object())
+ {
+ $this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
+ $this->insertamum = $row->insertamum;
+ $this->insertvon = $row->insertvon;
+ $this->updateamum = $row->updateamum;
+ $this->updatevon = $row->updatevon;
+ $this->zeitwunsch_id = $row->zeitwunsch_id;
+ $this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
+ }
+ }
+
+ if (!is_null($datum))
+ {
+ $beginn=montag($datum);
+ $start=date('Y-m-d',$beginn);
+ $ende=date('Y-m-d',jump_day($beginn,7));
+
+ // Zeitsperren abfragen
+ $sql="
+ SELECT
+ zeitsperretyp_kurzbz, vondatum,vonstunde,bisdatum,bisstunde
+ FROM
+ campus.tbl_zeitsperre
+ WHERE
+ mitarbeiter_uid=".$this->db_add_param($uid)."
+ AND vondatum<=".$this->db_add_param($ende)."
+ AND bisdatum>=".$this->db_add_param($start). "
+ -- Negative Zeitsperren sollen im Plan eine positive Zeitsperre 'ZVerfueg' overrulen
+ ORDER BY
+ CASE
+ WHEN zeitsperretyp_kurzbz = 'ZVerfueg' THEN 1
+ ELSE 2
+ END;";
+
+ if(!$this->db_query($sql))
+ {
+ $this->errormsg=$this->db_last_error();
+ return false;
+ }
+ else
+ {
+ // Zeitsperren negativ (-3) gewichten.
+ // Ausnahme: positive Zeitsperren: diese positiv (4) gewichten.
+ while($row = $this->db_fetch_object())
+ {
+ $beginn=montag($datum);
+ for ($i=1;$i<=7;$i++)
+ {
+ $date_iso=date('Y-m-d',$beginn);
+ //echo "\n".$date_iso."\n".$row->vondatum."\n";
+ if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
+ for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
+ $this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
+
+ if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
+ {
+ if (is_null($row->vonstunde))
+ $row->vonstunde=$this->min_stunde;
+ for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
+ $this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
+ }
+ if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
+ {
+ if (is_null($row->bisstunde))
+ $row->bisstunde=$this->max_stunde;
+ for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
+ $this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
+ }
+ if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
+ {
+ if (is_null($row->vonstunde))
+ $row->vonstunde=$this->min_stunde;
+ if (is_null($row->bisstunde))
+ $row->bisstunde=$this->max_stunde;
+ for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
+ $this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
+ }
+ $beginn=jump_day($beginn,1);
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Zeitwunsch der Personen in Lehreinheiten laden
+ * @param $le_id LehreinheitID Array
+ * @param $datum UNIX timestamp Datum, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
+ * @return true oder false
+ */
+ public function loadZwLE($le_id, $datum = null)
+ {
+ // Default datum: jetzt
+ if (is_null($datum))
+ {
+ $datum = time();
+ }
+ // SUB-Select fuer LVAs
+ $sql_query_leid='';
+ $sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE ';
+ for ($i=0;$idb_add_param($ende)."
+ AND bisdatum>=".$this->db_add_param($start);
+
+ if(!$this->db_query($sql))
+ {
+ $this->errormsg = $this->db_last_error();
+ return false;
+ }
+ while($row = $this->db_fetch_object())
+ {
+ $beginn=montag($datum);
+ for ($i=1;$i<=7;$i++)
+ {
+ $date_iso=date('Y-m-d',$beginn);
+ //echo "\n".$date_iso."\n".$row->vondatum."\n";
+ if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
+ for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
+ $this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
+ if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
+ {
+ if (is_null($row->vonstunde))
+ $row->vonstunde=$this->min_stunde;
+ for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
+ $this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
+ }
+ if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
+ {
+ if (is_null($row->bisstunde))
+ $row->bisstunde=$this->max_stunde;
+ for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
+ $this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
+ }
+ if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
+ {
+ if (is_null($row->vonstunde))
+ $row->vonstunde=$this->min_stunde;
+ if (is_null($row->bisstunde))
+ $row->bisstunde=$this->max_stunde;
+ for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
+ $this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
+ }
+ $beginn=jump_day($beginn,1);
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Prueft ob bereits ein Zeitwunsch eingetragen ist
+ *
+ * @param $uid
+ * @param $zwg_id
+ * @param $stunde
+ * @param $tag
+ * @return true wenn vorhanden sonst false
+ */
+ function exists($uid, $zwg_id, $stunde, $tag)
+ {
+ $qry = "SELECT 1 FROM campus.tbl_zeitwunsch
+ WHERE
+ mitarbeiter_uid=".$this->db_add_param($uid)."
+ AND stunde=".$this->db_add_param($stunde, FHC_INTEGER)."
+ AND tag=".$this->db_add_param($tag, FHC_INTEGER). "
+ AND zeitwunsch_gueltigkeit_id = ".$this->db_add_param($zwg_id, FHC_INTEGER);
+ if($this->db_query($qry))
+ {
+ if($this->db_num_rows()>0)
+ return true;
+ else
+ return false;
+ }
+ else
+ {
+ $this->errormsg='Fehler beim Abfragen des Zeitwunsches';
+ return false;
+ }
+ }
+}
+
+?>
diff --git a/include/zeitwunsch_gueltigkeit.class.php b/include/zeitwunsch_gueltigkeit.class.php
new file mode 100644
index 000000000..b39027987
--- /dev/null
+++ b/include/zeitwunsch_gueltigkeit.class.php
@@ -0,0 +1,271 @@
+load($zeitwunsch_gueltigkeit_id);
+ }
+ }
+
+ /**
+ * Ladet eine Zeitwunschgueltigkeit.
+ * @param $zeitwunsch_gueltigkeit_id
+ * @return bool
+ */
+ public function load($zeitwunsch_gueltigkeit_id)
+ {
+ if (!is_numeric($zeitwunsch_gueltigkeit_id))
+ {
+ $this->errormsg = 'Wrong parameter zeitwunsch_gueltigkeit_id.';
+ return false;
+ }
+
+ $qry = '
+ SELECT *, studiensemester_kurzbz, start, ende
+ FROM campus.tbl_zeitwunsch_gueltigkeit, public.tbl_studiensemester
+ WHERE zeitwunsch_gueltigkeit_id = '.$this->db_add_param($zeitwunsch_gueltigkeit_id). '
+ AND (von < ende AND COALESCE(bis, \'2999-12-31\'::date ) > start)
+ ORDER BY start ASC
+ LIMIT 1
+ ';
+
+ if ($result = $this->db_query($qry))
+ {
+ while ($row = $this->db_fetch_object($result))
+ {
+ $this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
+ $this->von = $row->von;
+ $this->bis = $row->bis;
+ $this->insertamum = $row->insertamum;
+ $this->insertvon = $row->insertvon;
+ $this->updateamum = $row->updateamum;
+ $this->updatevon = $row->updatevon;
+ $this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
+ $this->start = $row->start;
+ $this->ende = $row->ende;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler bei der Datenbankabfrage';
+ return false;
+ }
+
+ }
+
+ /**
+ * Speichert eine Zeitwunschgueltigkeit
+ */
+ public function save()
+ {
+ if($this->new)
+ {
+ $qry = '
+ INSERT INTO campus.tbl_zeitwunsch_gueltigkeit (mitarbeiter_uid, von, bis, insertvon)
+ VALUES ('.
+ $this->db_add_param($this->mitarbeiter_uid).', '.
+ $this->db_add_param($this->von).', '.
+ $this->db_add_param($this->bis).', '.
+ $this->db_add_param($this->insertvon). ')
+ RETURNING zeitwunsch_gueltigkeit_id;
+ ';
+ }
+ else
+ {
+ $qry = '
+ UPDATE campus.tbl_zeitwunsch_gueltigkeit SET'.
+ ' bis = '. $this->db_add_param($this->bis). ', '.
+ ' updateamum = NOW(), '.
+ ' updatevon = '.$this->db_add_param($this->updatevon).
+ ' WHERE zeitwunsch_gueltigkeit_id = ' .$this->db_add_param($this->zeitwunsch_gueltigkeit_id, FHC_INTEGER);
+
+ }
+
+ if($result = $this->db_query($qry))
+ {
+ // Wenn neuer Eintrag
+ if ($this->new)
+ {
+ if($row = $this->db_fetch_object($result))
+ {
+ // ZWG ID des neuen ZWG Eintrags zurueckgeben
+ $this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
+ }
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Speichern der Zeitwunschgueltigkeit';
+ return false;
+ }
+ }
+
+ /**
+ * Ladet Zeitwunschgueltigkeiten einer UID mitsamt den zugehoerigen Studiensemestern.
+ * @param $uid
+ * @param numeric $limit limit = null liefert alle ZWG; limit = 1 liefert die letztgueltige Zeitwunsch-Gueltigkeit.
+ * @param bool $activeOnly Wenn während des laufenden Semesters der Zeitwunsch geaendert werden, werden mehrere ZWG im Semester hinterlegt.
+ * true liefert pro Studiensemester nur die letztgueltigen ZWG;
+ * false liefert alle ZWG pro Studiensemester
+ * @param string $bis string date, z.B. 2022-01-31
+ * @return bool
+ */
+ public function getByUID($uid, $limit = null, $activeOnly = true, $bis = null)
+ {
+ $qry = '
+ WITH basic_select AS (
+ SELECT *,
+ row_number() over (PARTITION BY studiensemester_kurzbz ORDER BY von DESC) r
+ FROM campus.tbl_zeitwunsch_gueltigkeit, public.tbl_studiensemester
+ WHERE mitarbeiter_uid = ' . $this->db_add_param($uid);
+
+ // Wenn Bis-Datum angegeben
+ if (!is_null($bis))
+ {
+ // Zeitwuensche nur bis zum angegebenen Bis-Datum
+ $qry.= '
+ AND (von < ende AND '. $this->db_add_param($bis). '::date > start))
+ ';
+ }
+ // Wenn kein Bis-Datum angegeben ist
+ else
+ {
+ // Zeitwuensche bis zum Semesterende des chronologisch letzten Zeitwunsches (also der ZWG, wo bis NULL ist)
+ $qry.= '
+ AND (von < ende AND COALESCE(bis, (SELECT ende FROM public.tbl_studiensemester WHERE von BETWEEN start AND ende)) > start))';
+ }
+
+ $qry.= '
+ SELECT *
+ FROM basic_select
+ ';
+
+ // Wenn nur aktive Zeitwunschgueltigkeiten angezeigt werden sollen
+ if ($activeOnly)
+ {
+ $qry.= ' WHERE r = 1';
+ }
+
+ $qry.= ' ORDER BY von DESC, start DESC';
+
+ // Wenn Limit angegeben
+ if (!is_null($limit))
+ {
+ $qry.= ' LIMIT '.$this->db_add_param($limit);
+ }
+
+ if ($result = $this->db_query($qry))
+ {
+ $this->result = array();
+
+ while ($row = $this->db_fetch_object($result))
+ {
+ $obj = new StdClass();
+ $obj->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
+ $obj->von = $row->von;
+ $obj->bis = $row->bis;
+ $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
+ $obj->start = $row->start;
+ $obj->ende = $row->ende;
+ $obj->insertamum = $row->insertamum;
+ $obj->insertvon = $row->insertvon;
+ $obj->updateamum = $row->updateamum;
+ $obj->updatevon = $row->updatevon;
+
+ $this->result[]= $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler bei der Datenbankabfrage';
+ return false;
+ }
+ }
+
+ /**
+ * Ladet Zeitwunschgueltigkeiten einer UID und eines bestimmten Semesters (defaultmaeßig nur die letztgueltige)
+ * @param $uid
+ * @param $studiensemester_kurzbz
+ * @param null $limit limit = null liefert alle ZWG des Studiensemesters; limit = 1 liefert die letztgueltige ZWG.
+ * @return bool
+ */
+ public function getByStudiensemester($uid, $studiensemester_kurzbz, $limit = 1)
+ {
+ $qry = '
+ WITH studiensemester AS
+ (
+ SELECT studiensemester_kurzbz, start, ende
+ FROM public.tbl_studiensemester
+ WHERE studiensemester_kurzbz = '.$this->db_add_param($studiensemester_kurzbz). '
+ )
+
+ SELECT zwg.*, studiensemester_kurzbz, start, ende
+ FROM campus.tbl_zeitwunsch_gueltigkeit zwg, studiensemester ss
+ WHERE zwg.mitarbeiter_uid = '.$this->db_add_param($uid). '
+ AND (zwg.von < ss.ende AND COALESCE(zwg.bis, ss.ende) >= ss.start)
+ ORDER BY von DESC, bis DESC
+ ';
+
+ // Wenn Limit angegeben
+ if (!is_null($limit))
+ {
+ // Ausgabe limitieren
+ $qry.= 'LIMIT '.$this->db_add_param($limit);
+ }
+
+ if ($result = $this->db_query($qry))
+ {
+ $this->result = array();
+
+ while ($row = $this->db_fetch_object($result))
+ {
+ $obj = new StdClass();
+ $obj->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
+ $obj->von = $row->von;
+ $obj->bis = $row->bis;
+ $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
+ $obj->start = $row->start;
+ $obj->ende = $row->ende;
+ $obj->insertamum = $row->insertamum;
+ $obj->insertvon = $row->insertvon;
+ $obj->updateamum = $row->updateamum;
+ $obj->updatevon = $row->updatevon;
+
+ $this->result[]= $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler bei der Datenbankabfrage';
+ return false;
+ }
+ }
+}
+
diff --git a/include/zeugnisnote.class.php b/include/zeugnisnote.class.php
index f045e99c2..5ad5d4e58 100644
--- a/include/zeugnisnote.class.php
+++ b/include/zeugnisnote.class.php
@@ -256,7 +256,7 @@ class zeugnisnote extends basis_db
* $studiensemester_kurzbz
* @return true wenn ok, false wenn Fehler
*/
- public function getZeugnisnoten($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz)
+ public function getZeugnisnoten($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz, $nichtAnzeigen = null)
{
$where='';
if($lehrveranstaltung_id!=null)
@@ -265,6 +265,8 @@ class zeugnisnote extends basis_db
$where.=" AND uid=".$this->db_add_param($student_uid);
if($studiensemester_kurzbz!=null)
$where.=" AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
+ if ($nichtAnzeigen != null)
+ $where.=" AND tbl_note.anmerkung NOT IN (".$this->db_implode4SQL($nichtAnzeigen).")";
$where2='';
if($lehrveranstaltung_id!=null)
$where2.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER);
@@ -272,6 +274,8 @@ class zeugnisnote extends basis_db
$where2.=" AND student_uid=".$this->db_add_param($student_uid);
if($studiensemester_kurzbz!=null)
$where2.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
+ if ($nichtAnzeigen != null)
+ $where2.=" AND tbl_note.anmerkung NOT IN (".$this->db_implode4SQL($nichtAnzeigen).")";
$qry = "SELECT vw_student_lehrveranstaltung.lehrveranstaltung_id, uid,
vw_student_lehrveranstaltung.studiensemester_kurzbz, note, punkte, uebernahmedatum, benotungsdatum,
diff --git a/locale/de-AT/global.php b/locale/de-AT/global.php
index 586614ece..7104a83a5 100644
--- a/locale/de-AT/global.php
+++ b/locale/de-AT/global.php
@@ -66,6 +66,7 @@ $this->phrasen['global/pdfExport']='PDF Export';
$this->phrasen['global/und']='und';
$this->phrasen['global/oder']='oder';
$this->phrasen['global/faelligAm']='Fällig am';
+$this->phrasen['global/aenderungenZuruecksetzen']= "Änderungen zurücksetzen";
$this->phrasen['global/username']='Username';
$this->phrasen['global/vorname']='Vorname';
diff --git a/locale/de-AT/lvplan.php b/locale/de-AT/lvplan.php
index f0e802896..59fd5169a 100644
--- a/locale/de-AT/lvplan.php
+++ b/locale/de-AT/lvplan.php
@@ -21,6 +21,7 @@ $this->phrasen['lvplan/lehrverbaende']='Lehrverbände';
$this->phrasen['lvplan/uebersichtDerLehrverbaende']='Übersicht der Lehrverbände';
$this->phrasen['lvplan/fehlerUndFeedback']='Feedback geben';
$this->phrasen['lvplan/lvKoordinationsstelle']='LV-Koordinationsstelle';
+$this->phrasen['lvplan/lvPlanung']='LV-Planung';
$this->phrasen['lvplan/reservierungen']='Reservierungen';
$this->phrasen['lvplan/reservierungWurdeGeloescht']='Reservierung wurde geloescht';
$this->phrasen['lvplan/alleReservierungen']='Alle Reservierungen';
diff --git a/locale/de-AT/zeitwunsch.php b/locale/de-AT/zeitwunsch.php
index a84da2b0e..e9d13a558 100644
--- a/locale/de-AT/zeitwunsch.php
+++ b/locale/de-AT/zeitwunsch.php
@@ -3,12 +3,13 @@ $this->phrasen['zeitwunsch/falscheWerteEingetragen']='Es duerfen nur die Werte -
$this->phrasen['zeitwunsch/zeitwunsch']='Zeitwunsch';
$this->phrasen['zeitwunsch/help']='HELP';
$this->phrasen['zeitwunsch/zeitwunschVon']='Zeitwünsche von';
-$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Tragen Sie in dieses Normwochenraster Ihre Verfügbarkeit in einer durchschnittlichen Arbeitswoche ein.';
+$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']="Tragen Sie in dieses Normwochenraster Ihre Verfügbarkeit in einer durchschnittlichen Arbeitswoche ein. Klicken Sie danach auf 'Speichern'";
$this->phrasen['zeitwunsch/letzteAenderung']='Letzte Änderung';
$this->phrasen['zeitwunsch/von']='von';
$this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='Das Formular zum Eintragen der Zeitsperren finden Sie %s hier';
$this->phrasen['zeitwunsch/erklärung']='Erklärung';
$this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='Bitte kontrollieren/ändern Sie Ihre Zeitwünsche und klicken Sie anschließend auf "Speichern"';
+$this->phrasen['zeitwunsch/erstellenSieIhreZeitwuensche']='Bitte erstellen / ändern Sie Ihre Zeitwünsche und klicken Sie anschließend auf "Speichern"';
$this->phrasen['zeitwunsch/wert']='Wert';
$this->phrasen['zeitwunsch/bedeutung']='Bedeutung';
$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='Hier möchte ich unterrichten';
@@ -23,4 +24,21 @@ $this->phrasen['zeitwunsch/erklaerung']='Erklärung';
$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='Bei Problemen wenden Sie sich bitte an die';
$this->phrasen['zeitwunsch/profil']='Profil';
$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.';
+$this->phrasen['zeitwunsch/gueltigIm']="Mein Zeitwunsch gültig im: ";
+$this->phrasen['zeitwunsch/erklaerungstext']="Sie können Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.
+ Solange Sie keine Änderungen vornehmen, wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen.";
+$this->phrasen['zeitwunsch/werteAuf1setzen']="Alle Werte auf 1 setzen";
+$this->phrasen['zeitwunsch/kopierenText']="Wählen Sie rechts das gewünschte Studiensemester aus.
+ Der Zeitwunsch wird dann automatisch in die Tabelle übernommen.
+ Nehmen Sie gegebenenfalls Änderungen vor und klicken danach auf 'Speichern'.";
+$this->phrasen['zeitwunsch/kopieren']= "ändern";
+$this->phrasen['zeitwunsch/aendern']= "kopieren von früherem Studiensemester ";
+$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Stunden für %s bereits verplant';
+$this->phrasen['zeitwunsch/fuer']='Zeitwunsch für %s ';
+$this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Bearbeitung deaktiviert';
+$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='Ihnen wurden im %s bereits Lehrveranstaltung(en) zugeteilt.
+ Bitte stimmen Sie sich vor einer Änderung per Mail mit den betroffenen Studiengängen ab.
+ Möchten Sie trotzdem ohne Abstimmung bzw. nach bereits erfolgter Abstimmung fortsetzen?';
+$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Bearbeitung aktivieren';
+$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: Kompetenzfeld wird über die Änderung per Mail informiert';
?>
diff --git a/locale/en-US/global.php b/locale/en-US/global.php
index 5fa89acbb..97f5cfe26 100644
--- a/locale/en-US/global.php
+++ b/locale/en-US/global.php
@@ -65,6 +65,7 @@ $this->phrasen['global/drucken']='Print';
$this->phrasen['global/und']='and';
$this->phrasen['global/oder']='or';
$this->phrasen['global/faelligAm']='Due on';
+$this->phrasen['global/aenderungenZuruecksetzen']= "Reset changes";
$this->phrasen['global/username']='Username';
$this->phrasen['global/vorname']='First Name';
diff --git a/locale/en-US/lvplan.php b/locale/en-US/lvplan.php
index bd2b4b1eb..1a8c865bf 100644
--- a/locale/en-US/lvplan.php
+++ b/locale/en-US/lvplan.php
@@ -21,6 +21,7 @@ $this->phrasen['lvplan/lehrverbaende']='Teaching Groups';
$this->phrasen['lvplan/uebersichtDerLehrverbaende']='Overview of Teaching Groups';
$this->phrasen['lvplan/fehlerUndFeedback']='Send Feedback';
$this->phrasen['lvplan/lvKoordinationsstelle']='Course-Coordination Office';
+$this->phrasen['lvplan/lvPlanung']='Course-Planning Office';
$this->phrasen['lvplan/reservierungen']='Reservations';
$this->phrasen['lvplan/reservierungWurdeGeloescht'] = 'Reservation successfully deleted';
$this->phrasen['lvplan/alleReservierungen']='All reservations';
diff --git a/locale/en-US/zeitwunsch.php b/locale/en-US/zeitwunsch.php
index dd9abdc3e..7aa8a6932 100644
--- a/locale/en-US/zeitwunsch.php
+++ b/locale/en-US/zeitwunsch.php
@@ -3,12 +3,13 @@ $this->phrasen['zeitwunsch/falscheWerteEingetragen']='Invalid input. Only the va
$this->phrasen['zeitwunsch/zeitwunsch']='Preferred teaching time';
$this->phrasen['zeitwunsch/help']='HELP';
$this->phrasen['zeitwunsch/zeitwunschVon']='Preferred teaching times for';
-$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Enter your availability for an average week in this standard week grid.';
+$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Enter your availability for an average week in this standard week grid and click "Save"';
$this->phrasen['zeitwunsch/letzteAenderung']='Last Update';
$this->phrasen['zeitwunsch/von']='from';
$this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='The form for entering times when you are unavailable to teach can be found %s here';
$this->phrasen['zeitwunsch/erklärung']='Explanation';
$this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='Please check/change your preferred teaching times and click "Save"';
+$this->phrasen['zeitwunsch/erstellenSieIhreZeitwuensche']='Please enter / change your preferred teaching times and click "Save"';
$this->phrasen['zeitwunsch/wert']='Value';
$this->phrasen['zeitwunsch/bedeutung']='Meaning';
$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='I would like to teach at this time';
@@ -23,4 +24,21 @@ $this->phrasen['zeitwunsch/erklaerung']='Explanation';
$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='If you are having problems, please contact the ';
$this->phrasen['zeitwunsch/profil']='Profile';
$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.';
+$this->phrasen['zeitwunsch/gueltigIm']="My preferred times valid in: ";
+$this->phrasen['zeitwunsch/erklaerungstext']="You can edit your preferred times directly in the table or copy a your preferred times from a previous semester.
+ As long as you do not make any changes, your preferred times will be carried over to the next study semester.";
+$this->phrasen['zeitwunsch/werteAuf1setzen']="Set all values to 1";
+$this->phrasen['zeitwunsch/kopierenText']="Select the desired semester on the right.
+ Your preferred time of that semester is then automatically transferred to the table.
+ Make changes if necessary and then click on 'Save'.";
+$this->phrasen['zeitwunsch/kopieren']= "change";
+$this->phrasen['zeitwunsch/aendern']= "copy from a previous semester";
+$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Hours already scheduled for %s';
+$this->phrasen['zeitwunsch/fuer']='Preferred time for %s ';
+$this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Editing disabled';
+$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='You have already been assigned to course(s) in %s.
+ Please agree per Mail with the degree programs concerned, before making a change.
+ Would you still like to continue without agreement or after having agreed?';
+$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Enable editing';
+$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: The field of competence will be informed of your changes by email';
?>
diff --git a/phpci.yml b/phpci.yml
deleted file mode 100644
index 2978796e3..000000000
--- a/phpci.yml
+++ /dev/null
@@ -1,127 +0,0 @@
-# Globally valid entries
-build_settings:
- ignore: # Ignores vendor and tests folders
- - "vendor"
- - "tests"
- pgsql: # PostgreSQL connection parameters
- host: "localhost;dbname=template1" # Connects to the template1 database to be able to drop database fhcomplete
- user: "fhcomplete"
- pass: "fhcomplete"
-
-setup: # First!
- pgsql: # Close previous connections to database -> drop database -> create database
- - "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = 'fhcomplete';"
- - "DROP DATABASE IF EXISTS fhcomplete;"
- - "CREATE DATABASE fhcomplete;"
- composer: # Run composer to install all the required 3rd party software
- shell:
- # Install addons
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Abrechnung.git %BUILD_PATH%/addons/abrechnung"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Asterisk.git %BUILD_PATH%/addons/asterisk"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Aufnahme.git %BUILD_PATH%/addons/aufnahme"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Bewerbung.git %BUILD_PATH%/addons/bewerbung"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-CaseTime.git %BUILD_PATH%/addons/casetime"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-LDAP.git %BUILD_PATH%/addons/ldap"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Lehrmittel.git %BUILD_PATH%/addons/lehrmittel"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-LV-Evaluierung.git %BUILD_PATH%/addons/lvevaluierung"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-LVInfo.git %BUILD_PATH%/addons/lvinfo"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Kompetenzen.git %BUILD_PATH%/addons/kompetenzen"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Moodle.git %BUILD_PATH%/addons/moodle"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Reports.git %BUILD_PATH%/addons/reports"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Studiengangsverwaltung.git %BUILD_PATH%/addons/studiengangsverwaltung"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Textbausteine.git %BUILD_PATH%/addons/textbausteine"
- - "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-WaWi.git %BUILD_PATH%/addons/wawi"
- # Copy addons configs
- - "cp -R /var/www/configs/fhc/abrechnung/* %BUILD_PATH%/addons/abrechnung"
- - "cp -R /var/www/configs/fhc/asterisk/* %BUILD_PATH%/addons/asterisk"
- - "cp -R /var/www/configs/fhc/bewerbung/* %BUILD_PATH%/addons/bewerbung"
- - "cp -R /var/www/configs/fhc/casetime/* %BUILD_PATH%/addons/casetime"
- - "cp -R /var/www/configs/fhc/lehrmittel/* %BUILD_PATH%/addons/lehrmittel"
- - "cp -R /var/www/configs/fhc/lvinfo/* %BUILD_PATH%/addons/lvinfo"
- - "cp -R /var/www/configs/fhc/reports/* %BUILD_PATH%/addons/reports"
- - "cp -R /var/www/configs/fhc/wawi/* %BUILD_PATH%/addons/wawi"
- # Copy core configs and .htaccess
- - "cp -R /var/www/configs/fhc/configs/* ./config"
- - "cp /var/www/configs/fhc/configs/.htaccess ./cis/private/"
- - "cp /var/www/configs/fhc/configs/.htaccess ./content"
- - "cp /var/www/configs/fhc/configs/.htaccess ./rdf"
- - "cp /var/www/configs/fhc/configs/.htaccess ./system"
- - "cp /var/www/configs/fhc/configs/.htaccess ./vilesci"
- # Create core directories
- - "mkdir documents"
- - "mkdir documents/csv_import"
- - "mkdir documents/dms"
- - "mkdir documents/import"
- - "mkdir documents/benotungstool"
- - "mkdir paabgabe"
- # Copy codeigniter configs
- - "mkdir ./application/config/development"
- - "cp -R /var/www/configs/ci/* ./application/config/development"
- # Clone extensions
- - "git clone --quiet https://github.com/FH-Complete/FHC-Core-MobilityOnline.git /tmp/FHC-Core-MobilityOnline"
- - "git clone --quiet https://github.com/FH-Complete/FHC-Core-Budget.git /tmp/FHC-Core-Budget"
- - "git clone --quiet https://github.com/FH-Complete/FHC-Core-DSMS.git /tmp/FHC-Core-DSMS"
- - "git clone --quiet https://github.com/FH-Complete/FHC-Core-Nextcloud.git /tmp/FHC-Core-Nextcloud"
- # Create extensions archives
- - "tar cfzP /tmp/FHC-Core-MobilityOnline.tgz /tmp/FHC-Core-MobilityOnline/"
- - "tar cfzP /tmp/FHC-Core-Budget.tgz /tmp/FHC-Core-Budget/"
- - "tar cfzP /tmp/FHC-Core-DSMS.tgz /tmp/FHC-Core-DSMS/"
- - "tar cfzP /tmp/FHC-Core-Nextcloud.tgz /tmp/FHC-Core-Nextcloud/"
- # Install extensions
- #- "php index.ci.php system/extensions/CLI_Manager uploadExtension FHC-Core-MobilityOnline /tmp/FHC-Core-MobilityOnline.tgz"
- #- "php index.ci.php system/extensions/CLI_Manager uploadExtension FHC-Core-Budget /tmp/FHC-Core-Budget.tgz"
- #- "php index.ci.php system/extensions/CLI_Manager uploadExtension FHC-Core-DSMS /tmp/FHC-Core-DSMS.tgz"
- #- "php index.ci.php system/extensions/CLI_Manager uploadExtension FHC-Core-Nextcloud /tmp/FHC-Core-Nextcloud.tgz"
- # Remove temporary files
- - "rm -fR /tmp/FHC-Core-MobilityOnline*"
- - "rm -fR /tmp/FHC-Core-Budget*"
- - "rm -fR /tmp/FHC-Core-DSMS*"
- - "rm -fR /tmp/FHC-Core-Nextcloud*"
- # Change files permissions
- - "chmod -R 0770 *"
- - "find . -type f -exec chmod 0644 {} \\;"
- # Create a symlink to the current build folder
- - "ln -s %BUILD_PATH% ../fhcomplete"
-
-test: # Run tests
- php_parallel_lint: # Lint cannot fail!
- php_mess_detector: # Mess detector
- rules:
- - "unusedcode"
- - "codesize"
- - "design"
- allow_failures: true
- php_cpd: # Copy/paste detector
- ignore:
- - "rdf"
- - "config"
- - "locale"
- - "application/config"
- - "application/views"
- # Global ignore is overwritten by the specific one
- - "vendor"
- - "tests"
- allow_failures: true
- php_code_sniffer: # Code sniffer
- standard: "tests/codesniffer/FHComplete"
- ignore:
- - "rdf"
- - "locale"
- - "application/views"
- allowed_warnings: -1 # Warnings are ignored for a successful build
- allow_failures: true
- #codeception: # Codeception
- # config: "tests/codeception/"
- # path: "tests/codeception/_output/"
- # allow_failures: true
-
-failure: # On failure
- email: # Send an email to warn the team
- default_mailto_address: systementwicklung@technikum-wien.at
-
-complete: # Last!
- pgsql: # Close previous connections to database -> drop database
- - "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = 'fhcomplete';"
- - "DROP DATABASE IF EXISTS fhcomplete;"
- shell: # Remove the previously created symlink
- - "rm ../fhcomplete"
diff --git a/public/js/lehre/anrechnung/requestAnrechnung.js b/public/js/lehre/anrechnung/requestAnrechnung.js
index fa7d02de8..b664812dc 100644
--- a/public/js/lehre/anrechnung/requestAnrechnung.js
+++ b/public/js/lehre/anrechnung/requestAnrechnung.js
@@ -3,6 +3,8 @@ const ANRECHNUNGSTATUS_REJECTED = 'rejected';
const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
$(function(){
+ const uploadMaxFilesize = $('#requestAnrechnung-uploadfile').data('maxsize') ; // in byte
+
// Set status alert color
requestAnrechnung.setStatusAlertColor();
@@ -26,6 +28,12 @@ $(function(){
// Avoid form redirecting automatically
e.preventDefault();
+ var fileInput = $('#requestAnrechnung-uploadfile');
+ if (!requestAnrechnung.fileSizeOk(fileInput, uploadMaxFilesize)) // in byte
+ {
+ return FHC_DialogLib.alertWarning(FHC_PhrasesLib.t("ui", "errorDokumentZuGross"));
+ }
+
FHC_AjaxClient.ajaxCallPost(
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/apply",
{
@@ -161,5 +169,19 @@ var requestAnrechnung = {
// Disable all form elements
$("#requestAnrechnung-form :input").prop("disabled", true);
+ },
+ fileSizeOk: function(fileInput, maxSize){
+
+ if (fileInput.get(0).files.length){
+
+ var fileSize = fileInput.get(0).files[0].size; // in bytes
+
+ if (fileSize > maxSize)
+ {
+ return false;
+ }
+
+ return true;
+ }
}
}
\ No newline at end of file
diff --git a/public/js/lehre/lvplanung/zverfueg.js b/public/js/lehre/lvplanung/zverfueg.js
new file mode 100644
index 000000000..6bb5419ce
--- /dev/null
+++ b/public/js/lehre/lvplanung/zverfueg.js
@@ -0,0 +1,176 @@
+$(function(){
+ var studiensemesterStart = $("#studsemStart").val();
+
+ Zverfueg.initDatepicker(studiensemesterStart);
+
+ $('#form-zeitverfuegbarkeit').submit(function(e){
+
+ e.preventDefault();
+
+ let zeitsperre_id = this.zeitsperre_id.value;
+ let mitarbeiter_uid = this.mitarbeiter_uid.value;
+ let lektor = this.mitarbeiter_uid.options[this.mitarbeiter_uid.selectedIndex].text;
+ let bezeichnung = this.bezeichnung.value;
+ let vondatum = this.vondatum.value;
+ let vonstunde = this.vonstunde.value;
+ let bisdatum = this.bisdatum.value;
+ let bisstunde = this.bisstunde.value;
+
+ FHC_AjaxClient.ajaxCallPost(
+ FHC_JS_DATA_STORAGE_OBJECT.called_path + "/saveZeitverfuegbarkeit",
+ {
+ zeitsperre_id: zeitsperre_id,
+ mitarbeiter_uid: mitarbeiter_uid,
+ bezeichnung: bezeichnung,
+ zeitsperretyp_kurzbz: 'ZVerfueg',
+ vondatum: vondatum,
+ vonstunde: vonstunde,
+ bisdatum: bisdatum,
+ bisstunde: bisstunde
+ },
+ {
+ successCallback: function (data, textStatus, jqXHR)
+ {
+ if (FHC_AjaxClient.isError(data))
+ {
+ FHC_DialogLib.alertWarning(FHC_AjaxClient.getError(data));
+ }
+
+ if (FHC_AjaxClient.hasData(data))
+ {
+ if (zeitsperre_id == '')
+ {
+ // Add row
+ $('#tableWidgetTabulator').tabulator('addRow', {
+ zeitsperre_id: FHC_AjaxClient.getData(data).zeitsperre_id,
+ mitarbeiter_uid: mitarbeiter_uid,
+ lektor: lektor,
+ vondatum: vondatum,
+ vonstunde: $.isNumeric(vonstunde) ? vonstunde : '',
+ bisdatum: bisdatum,
+ bisstunde: $.isNumeric(bisstunde) ? bisstunde : '',
+ bezeichnung: bezeichnung
+ }, true); // true adds new row on top
+ }
+ else {
+ $('#tableWidgetTabulator').tabulator('updateData', [{
+ zeitsperre_id: zeitsperre_id,
+ vondatum: vondatum,
+ vonstunde: $.isNumeric(vonstunde) ? vonstunde : '',
+ bisdatum: bisdatum,
+ bisstunde: $.isNumeric(bisstunde) ? bisstunde : '',
+ bezeichnung: bezeichnung
+ }]);
+ }
+
+ // Reset form
+ Zverfueg.resetFormFields();
+
+ // Disable form elements
+ Zverfueg.disableFormElements();
+
+ // Display success message
+ FHC_DialogLib.alertSuccess(FHC_AjaxClient.getData(data).msg);
+ }
+ },
+ errorCallback: function (jqXHR, textStatus, errorThrown)
+ {
+ FHC_DialogLib.alertError(FHC_PhrasesLib.t("ui", "systemfehler"));
+ }
+ }
+ );
+ })
+
+ $('#btn-delete').click(function() {
+ let zeitsperre_id = $('#zeitsperre_id').val();
+
+ FHC_AjaxClient.ajaxCallPost(
+ FHC_JS_DATA_STORAGE_OBJECT.called_path + "/deleteZeitverfuegbarkeit",
+ {
+ zeitsperre_id: zeitsperre_id,
+ },
+ {
+ successCallback: function (data, textStatus, jqXHR) {
+ if (FHC_AjaxClient.isError(data)) {
+ FHC_DialogLib.alertWarning(FHC_AjaxClient.getError(data));
+ }
+
+ if (FHC_AjaxClient.hasData(data)) {
+
+ // Delete row
+ let row = $('#tableWidgetTabulator').tabulator('getRow', zeitsperre_id);
+ row.delete(zeitsperre_id);
+
+ // Reset form
+ Zverfueg.resetFormFields();
+
+ // Disable form elements
+ Zverfueg.disableFormElements();
+
+ // Display delete message
+ FHC_DialogLib.alertSuccess(FHC_AjaxClient.getData(data).msg);
+ }
+ },
+ errorCallback: function (jqXHR, textStatus, errorThrown)
+ {
+ FHC_DialogLib.alertError(FHC_PhrasesLib.t("ui", "systemfehler"));
+ }
+ });
+ });
+
+ $('#btn-break').click(function () {
+ Zverfueg.disableFormElements();
+ })
+
+})
+
+var Zverfueg = {
+ initDatepicker: function (studiensemesterStart) {
+
+ // Prevent opening HTMl date picker
+ $('input[type=date]').on('click', function(event) {
+ event.preventDefault();
+ });
+
+ $.datepicker.setDefaults($.datepicker.regional['de']);
+ $( ".zverfueg-datepicker" ).datepicker({
+ "dateFormat": "yy-mm-dd",
+ "minDate": $.datepicker.formatDate('yy-mm-dd', new Date(studiensemesterStart))
+ });
+ },
+ resetFormFields: function(){
+ $('#form-zeitverfuegbarkeit')
+ .trigger('reset')
+ .find('input:hidden[name=zeitsperre_id]').val('')
+ .find('textarea[name=bezeichnung]').val('');
+ },
+ disableFormElements: function (){
+ $('#btn-delete').prop('disabled', true).tooltip('enable');
+ $('#mitarbeiter_uid').prop('disabled', false);
+ },
+ enableFormElements: function (){
+ $('#btn-delete').prop('disabled', false).tooltip('disable');
+ $('#mitarbeiter_uid').prop('disabled', true);
+ }
+}
+
+// TABULATOR FUNCTIONS
+// ---------------------------------------------------------------------------------------------------------------------
+function func_rowSelected(row){
+ Zverfueg.enableFormElements();
+
+ // Set form fields
+ $('#zeitsperre_id').val(row.getData().zeitsperre_id);
+ $('#mitarbeiter_uid').val(row.getData().mitarbeiter_uid);
+ $('#bezeichnung').val(row.getData().bezeichnung);
+ $('#vondatum').datepicker('setDate', row.getData().vondatum);
+ $('#bisdatum').datepicker('setDate', row.getData().bisdatum);
+ $('#vonstunde').val(row.getData().vonstunde);
+ $('#bisstunde').val(row.getData().bisstunde);
+}
+
+function func_rowDeselected(row){
+ Zverfueg.resetFormFields();
+ Zverfueg.disableFormElements();
+ Zverfueg.resetFormFields();
+}
\ No newline at end of file
diff --git a/rdf/adressentyp.rdf.php b/rdf/adressentyp.rdf.php
index b34a96cc6..1f12cc6eb 100644
--- a/rdf/adressentyp.rdf.php
+++ b/rdf/adressentyp.rdf.php
@@ -30,9 +30,9 @@ header("Content-type: application/xhtml+xml");
echo '';
// DAO
require_once('../config/vilesci.config.inc.php');
-require_once('../include/adresse.class.php');
+require_once('../include/adressentyp.class.php');
-$adresse = new adresse();
+$adresse = new adressentyp();
$rdf_url='http://www.technikum-wien.at/adressentyp';
echo '
@@ -44,7 +44,7 @@ echo '
';
-if ($adresse->getAdressentyp())
+if ($adresse->getAll())
{
foreach ($adresse->result as $row)
{
diff --git a/rdf/ausbildungsvertrag.xml.php b/rdf/ausbildungsvertrag.xml.php
index 80259af32..293ee7959 100644
--- a/rdf/ausbildungsvertrag.xml.php
+++ b/rdf/ausbildungsvertrag.xml.php
@@ -287,7 +287,7 @@ if($prestudent_help->load($prest_id))
$titel_kurzbz = '';
}
- if ($prestudent_help->getLastStatus($prest_id, null, 'Student'))
+ if ($prestudent_help->getLastStatus($prest_id, null))
{
$studienplan_id = $prestudent_help->studienplan_id;
$studienordnung = new studienordnung();
@@ -327,7 +327,7 @@ foreach($prestudent_arr as $prest_id)
$lehrgangstyp = new studiengang();
$lehrgangstyp->loadLehrgangstyp($studiengang->lgartcode);
- if ($prestudent->getLastStatus($prestudent->prestudent_id, null, 'Student'))
+ if ($prestudent->getLastStatus($prestudent->prestudent_id, null))
{
$studienplan_id = $prestudent->studienplan_id;
$studienordnung = new studienordnung();
diff --git a/rdf/diplomasupplement.xml.php b/rdf/diplomasupplement.xml.php
index d55187c6c..47da798b7 100644
--- a/rdf/diplomasupplement.xml.php
+++ b/rdf/diplomasupplement.xml.php
@@ -649,7 +649,16 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
WHERE
student_uid = ".$db->db_add_param($uid_arr[$i])."
AND zeugnis = true
- AND studiensemester_kurzbz in (".$sqlStudent->implode4SQL($aktuellesSemester).")
+ AND studiensemester_kurzbz in (".$sqlStudent->implode4SQL($aktuellesSemester).")";
+
+ if (defined('ZEUGNISNOTE_NICHT_ANZEIGEN'))
+ {
+ $qry .="
+ AND note.anmerkung NOT IN (".$sqlStudent->implode4SQL(unserialize(ZEUGNISNOTE_NICHT_ANZEIGEN)).")
+ ";
+ };
+
+ $qry .= "
AND NOT EXISTS(SELECT 1 FROM bis.tbl_bisio JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
AND student_uid=".$db->db_add_param($uid_arr[$i])."
@@ -916,6 +925,13 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
lehrveranstaltung_id = ".$db->db_add_param($row_outgoing->lehrveranstaltung_id)."
AND student_uid = ".$db->db_add_param($uid_arr[$i]);
+ if (defined('ZEUGNISNOTE_NICHT_ANZEIGEN'))
+ {
+ $qry_outgoing_note .= "
+ AND tbl_note.anmerkung NOT IN (".$db->implode4SQL(unserialize(ZEUGNISNOTE_NICHT_ANZEIGEN)).")
+ ";
+ };
+
if($result_outgoing_note = $db->db_query($qry_outgoing_note))
{
if($row_outgoing_note = $db->db_fetch_object($result_outgoing_note))
diff --git a/rdf/lehreinheit-lvplan.rdf.php b/rdf/lehreinheit-lvplan.rdf.php
index a7c89ac98..c3c53a7b6 100644
--- a/rdf/lehreinheit-lvplan.rdf.php
+++ b/rdf/lehreinheit-lvplan.rdf.php
@@ -40,6 +40,8 @@ require_once('../include/mitarbeiter.class.php');
require_once('../include/zeitaufzeichnung_gd.class.php');
require_once('../include/lehreinheitmitarbeiter.class.php');
require_once('../include/vertrag.class.php');
+require_once('../include/studiensemester.class.php');
+require_once('../include/zeitsperre.class.php');
$uid=get_uid();
$error_msg='';
@@ -63,7 +65,7 @@ if (isset($_GET['sem']))
else
$sem=0;
if (isset($_GET['lektor']))
- $lektor=$_GET['lektor'];
+ $lektor=$_GET['lektor'];
else
$lektor=$uid;
if (isset($_GET['ver']))
@@ -136,6 +138,14 @@ if (!$error_msg)
die ('Fehler bei Methode getLehreinheitLVPL(): '.$lehreinheit->errormsg);
$lva=$lehreinheit->lehreinheiten;
$rdf_url='http://www.technikum-wien.at/lehreinheit-lvplan/';
+
+// Positive Zeitsperre 'Zeitverfuegbarkeit' holen
+$ss = new Studiensemester($studiensemester);
+
+$zeitsperre = new Zeitsperre();
+$zeitsperre->getVonBis($lektor, $ss->start, $ss->ende, 'ZVerfueg');
+
+$zeitverfuegbarkeit = count($zeitsperre->result) > 0 ? 'Zeit verfügbar' : '';
?>
0)
'.$anzahl_notizen.''.$l->lehreinheit_id[0].''.$vertragsstatus.'
+ '. $zeitverfuegbarkeit. '
';
}
diff --git a/rdf/projektbetreuer.rdf.php b/rdf/projektbetreuer.rdf.php
index 666943793..e132fd416 100644
--- a/rdf/projektbetreuer.rdf.php
+++ b/rdf/projektbetreuer.rdf.php
@@ -80,7 +80,7 @@ function draw_content($row)
faktor.']]>name.']]>punkte.']]>
- stunden,1).']]>
+ stunden.']]>stundensatz.']]>betreuerart_kurzbz.']]>vertrag_id.']]>
@@ -90,4 +90,4 @@ function draw_content($row)
}
?>
-
\ No newline at end of file
+
diff --git a/rdf/zeugnis.rdf.php b/rdf/zeugnis.rdf.php
index 53d948424..2021c8335 100644
--- a/rdf/zeugnis.rdf.php
+++ b/rdf/zeugnis.rdf.php
@@ -256,9 +256,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
}
$obj = new zeugnisnote();
-
- $obj->getZeugnisnoten($lehrveranstaltung_id=null, $uid_arr[$i], $studiensemester_kurzbz);
-
+ $obj->getZeugnisnoten($lehrveranstaltung_id=null, $uid_arr[$i], $studiensemester_kurzbz, (defined('ZEUGNISNOTE_NICHT_ANZEIGEN')) ? unserialize(ZEUGNISNOTE_NICHT_ANZEIGEN) : null);
$ects_gesamt = $ects_gesamt_positiv = 0;
$prestudent_id = $row->prestudent_id;
diff --git a/rdf/zeugnisnote.rdf.php b/rdf/zeugnisnote.rdf.php
index 7bbc893e9..a2f01a2b9 100644
--- a/rdf/zeugnisnote.rdf.php
+++ b/rdf/zeugnisnote.rdf.php
@@ -118,6 +118,7 @@ foreach ($obj->result as $row)
vorname.']]>studiengang_kz])?$stg_arr[$benutzer->studiengang_kz]:'').']]>studiengang_kz.']]>
+ verband.']]>studiengang_kz].']]>studiengang_kz.']]>semester.']]>
diff --git a/skin/tempus.css b/skin/tempus.css
index de025ef27..7684fddb1 100644
--- a/skin/tempus.css
+++ b/skin/tempus.css
@@ -20,6 +20,12 @@ label.tempus_vertrag_info
font-size: x-small
}
+label.tempus_lektor_verfuegbarezeit
+{
+ font-weight: bold;
+ color: green;
+}
+
label.kalenderwoche
{
font-size: medium;
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index fa073bcba..5ea1bd4a0 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -5940,7 +5940,6 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_zeita
echo 'Index fuer campus.tbl_zeitaufzeichnung.uid hinzugefuegt ';
}
}
-
// Change size of wawi.tbl_kostenstelle.kostenstelle_nr from character varying(4) to character varying(6)
if ($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='wawi' AND TABLE_NAME='tbl_kostenstelle' AND COLUMN_NAME = 'kostenstelle_nr' AND character_maximum_length < 6"))
{
@@ -5965,6 +5964,126 @@ if(!$result = @$db->db_query("SELECT behebung_parameter FROM system.tbl_issue LI
echo ' Added column behebung_parameter to table system.tbl_issue';
}
+// Add table campus.tbl_zeitwunsch_gueltigkeit and migrate initial data
+if($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_schema LIKE 'campus' AND table_name = 'tbl_zeitwunsch_gueltigkeit'"))
+{
+ if ($db->db_fetch_object($result) == false)
+ {
+ $qry = "
+ CREATE TABLE campus.tbl_zeitwunsch_gueltigkeit
+ (
+ zeitwunsch_gueltigkeit_id INTEGER NOT NULL,
+ mitarbeiter_uid CHARACTER VARYING(32) NOT NULL,
+ von DATE,
+ bis DATE,
+ insertamum TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
+ insertvon CHARACTER VARYING(32),
+ updateamum TIMESTAMP WITHOUT TIME ZONE,
+ updatevon CHARACTER VARYING(32)
+ );
+
+ CREATE SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+ -- Add Primary Key
+ ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ADD CONSTRAINT pk_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id PRIMARY KEY (zeitwunsch_gueltigkeit_id);
+ ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ALTER COLUMN zeitwunsch_gueltigkeit_id SET DEFAULT nextval('campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id');
+
+ -- Add Permissions
+ GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO vilesci;
+ GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO web;
+
+ GRANT SELECT, INSERT, UPDATE, DELETE ON campus.tbl_zeitwunsch_gueltigkeit TO vilesci;
+ GRANT SELECT, INSERT, UPDATE ON campus.tbl_zeitwunsch_gueltigkeit TO web;
+
+ -- Initial data migration
+ INSERT INTO campus.tbl_zeitwunsch_gueltigkeit
+ (
+ mitarbeiter_uid,
+ von,
+ bis,
+ insertamum,
+ insertvon,
+ updateamum,
+ updatevon
+ )
+ SELECT * FROM
+ (
+ -- Unique Mitarbeiter from Zeitwunsch Tabelle, Start of actual Studiensemester and open end
+ SELECT DISTINCT mitarbeiter_uid,
+ (SELECT start FROM public.tbl_studiensemester WHERE start <= NOW() AND ende >= NOW()),
+ NULL::DATE AS \"ende\",
+ NOW(),
+ 'system',
+ NOW(),
+ 'system'
+ FROM campus.tbl_zeitwunsch
+ ORDER BY mitarbeiter_uid
+ ) AS init_data
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_zeitwunsch_gueltigkeit: '.$db->db_last_error().' ';
+ else
+ echo 'campus.tbl_zeitwunsch_gueltigkeit: Tabelle hinzugefuegt ';
+ }
+}
+
+// Add column zeitwunsch_id (as new primary key) and zeitwunsch_gueltigkeit_id to campus.tbl_zeitwunsch
+if ($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_zeitwunsch' AND column_name IN ('zeitwunsch_id', 'zeitwunsch_gueltigkeit_id')"))
+{
+ if ($db->db_num_rows($result) <> 2)
+ {
+ $qry = "
+ ALTER TABLE campus.tbl_zeitwunsch DROP CONSTRAINT IF EXISTS pk_tbl_zeitwunsch; -- Drop combined pk stunde/mitarbeiter_uid/tag
+
+ -- Add primary key and foreign key
+ ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_id INTEGER;
+ ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_gueltigkeit_id INTEGER;
+
+ -- Add comments
+ COMMENT ON COLUMN campus.tbl_zeitwunsch.zeitwunsch_gueltigkeit_id IS 'Ordnet die Zeitwuensche einer Gueltigkeitsdauer von-bis zu';
+ COMMENT ON COLUMN campus.tbl_zeitwunsch.mitarbeiter_uid IS 'DEPRECATED';
+
+ CREATE SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+ ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET DEFAULT nextval('campus.seq_zeitwunsch_zeitwunsch_id');
+ UPDATE campus.tbl_zeitwunsch SET zeitwunsch_id = nextval('campus.seq_zeitwunsch_zeitwunsch_id');
+
+ ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT pk_zeitwunsch_zeitwunsch_id PRIMARY KEY (zeitwunsch_id);
+ ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT fk_zeitwunsch_zeitwunsch_gueltigkeit_id FOREIGN KEY (zeitwunsch_gueltigkeit_id) REFERENCES campus.tbl_zeitwunsch_gueltigkeit(zeitwunsch_gueltigkeit_id) ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ -- Set initial zeitwunsch_gueltigkeit_id values to Gueltigkeitszeitraum of actual Studiensemester
+ UPDATE campus.tbl_zeitwunsch
+ SET zeitwunsch_gueltigkeit_id = (
+ SELECT zeitwunsch_gueltigkeit_id
+ FROM campus.tbl_zeitwunsch_gueltigkeit zwg
+ WHERE tbl_zeitwunsch.mitarbeiter_uid = zwg.mitarbeiter_uid
+ );
+
+ -- Set primary key and foreign key NOT NULL
+ ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET NOT NULL;
+ ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_gueltigkeit_id SET NOT NULL;
+
+ -- Set permissions
+ GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO vilesci;
+ GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO web;
+ ";
+
+ if (!$db->db_query($qry))
+ echo 'campus.tbl_zeitwunsch: ' . $db->db_last_error() . ' ';
+ else
+ echo ' campus.tbl_zeitwunsch: Neue Spalte zeitwunsch_id hinzugefuegt.';
+ }
+}
+
// Add index beschreibung to system.tbl_webservicelog
if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservicelog_beschreibung'"))
{
@@ -5979,6 +6098,34 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic
}
}
+// Insert postive Zeitsperre 'Zeitverfuegbarkeit' to tbl_zeitsperretyp
+if($result = @$db->db_query("SELECT 1 FROM campus.tbl_zeitsperretyp WHERE zeitsperretyp_kurzbz = 'ZVerfueg';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO campus.tbl_zeitsperretyp(zeitsperretyp_kurzbz, beschreibung) VALUES('ZVerfueg', 'Zeitverfügbarkeit');";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_zeitsperretyp '.$db->db_last_error().' ';
+ else
+ echo 'campus.tbl_zeitsperretyp: Added value \'ZVerfueg\' ';
+ }
+}
+
+// Add permission to administrate zeitverfuegbarkeiten
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/zeitverfuegbarkeit';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/zeitverfuegbarkeit', 'Zeitverfuegbarkeit verwalten');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_berechtigung: Added permission for lehre/zeitverfuegbarkeit ';
+ }
+}
+
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '
Pruefe Tabellen und Attribute!
';
@@ -6071,7 +6218,8 @@ $tabellen=array(
"campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"),
"campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"),
"campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"),
- "campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"),
+ "campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon", "zeitwunsch_id", "zeitwunsch_gueltigkeit_id"),
+ "campus.tbl_zeitwunsch_gueltigkeit" => array("zeitwunsch_gueltigkeit_id","mitarbeiter_uid","von","bis","insertamum","insertvon", "updateamum","updatevon"),
"fue.tbl_aktivitaet" => array("aktivitaet_kurzbz","beschreibung","sort"),
"fue.tbl_aufwandstyp" => array("aufwandstyp_kurzbz","bezeichnung"),
"fue.tbl_projekt" => array("projekt_kurzbz","nummer","titel","beschreibung","beginn","ende","oe_kurzbz","budget","farbe","aufwandstyp_kurzbz","ressource_id","anzahl_ma","aufwand_pt","projekt_id","projekttyp_kurzbz","zeitaufzeichnung"),
diff --git a/system/filtersupdate.php b/system/filtersupdate.php
index 79b46b107..6605f00d4 100644
--- a/system/filtersupdate.php
+++ b/system/filtersupdate.php
@@ -1026,7 +1026,9 @@ $filters = array(
{"name": "nachname"},
{"name": "matrikelnummer"},
{"name": "studiengang"},
- {"name": "studiensemester"}
+ {"name": "studiensemester"},
+ {"name": "last_status"},
+ {"name": "bismelden"}
],
"filters": []
}
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 3b43a1ac0..ed9d02710 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -1554,6 +1554,26 @@ $phrases = array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'geloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Deleted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -12353,6 +12373,46 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'errorDokumentZuGross',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Dokument zu groß",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "Document maximum size exceeded",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'errorUploadFehltOderZuGross',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Dokument fehlt oder zu groß",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "Document missing or maximum size exceeded",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'ui',
diff --git a/tests/codeception/_bootstrap.php b/tests/codeception/_bootstrap.php
deleted file mode 100644
index 243f9c85b..000000000
--- a/tests/codeception/_bootstrap.php
+++ /dev/null
@@ -1,2 +0,0 @@
-haveInDatabase('users', array('name' => 'miles', 'email' => 'miles@davis.com'));
- * ?>
- * ```
- *
- * @param string $table
- * @param array $data
- *
- * @return integer $id
- * @see \Codeception\Module\Db::haveInDatabase()
- */
- public function haveInDatabase($table, $data) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('haveInDatabase', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Asserts that a row with the given column values exists.
- * Provide table name and column values.
- *
- * ``` php
- * seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
- * ```
- * Fails if no such user found.
- *
- * @param string $table
- * @param array $criteria
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Module\Db::seeInDatabase()
- */
- public function canSeeInDatabase($table, $criteria = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInDatabase', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Asserts that a row with the given column values exists.
- * Provide table name and column values.
- *
- * ``` php
- * seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
- * ```
- * Fails if no such user found.
- *
- * @param string $table
- * @param array $criteria
- * @see \Codeception\Module\Db::seeInDatabase()
- */
- public function seeInDatabase($table, $criteria = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInDatabase', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Asserts that the given number of records were found in the database.
- *
- * ``` php
- * seeNumRecords(1, 'users', ['name' => 'davert'])
- * ?>
- * ```
- *
- * @param int $expectedNumber Expected number
- * @param string $table Table name
- * @param array $criteria Search criteria [Optional]
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Module\Db::seeNumRecords()
- */
- public function canSeeNumRecords($expectedNumber, $table, $criteria = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumRecords', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Asserts that the given number of records were found in the database.
- *
- * ``` php
- * seeNumRecords(1, 'users', ['name' => 'davert'])
- * ?>
- * ```
- *
- * @param int $expectedNumber Expected number
- * @param string $table Table name
- * @param array $criteria Search criteria [Optional]
- * @see \Codeception\Module\Db::seeNumRecords()
- */
- public function seeNumRecords($expectedNumber, $table, $criteria = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumRecords', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Effect is opposite to ->seeInDatabase
- *
- * Asserts that there is no record with the given column values in a database.
- * Provide table name and column values.
- *
- * ``` php
- * dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
- * ```
- * Fails if such user was found.
- *
- * @param string $table
- * @param array $criteria
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Module\Db::dontSeeInDatabase()
- */
- public function cantSeeInDatabase($table, $criteria = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInDatabase', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Effect is opposite to ->seeInDatabase
- *
- * Asserts that there is no record with the given column values in a database.
- * Provide table name and column values.
- *
- * ``` php
- * dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
- * ```
- * Fails if such user was found.
- *
- * @param string $table
- * @param array $criteria
- * @see \Codeception\Module\Db::dontSeeInDatabase()
- */
- public function dontSeeInDatabase($table, $criteria = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInDatabase', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Fetches a single column value from a database.
- * Provide table name, desired column and criteria.
- *
- * ``` php
- * grabFromDatabase('users', 'email', array('name' => 'Davert'));
- * ```
- *
- * @param string $table
- * @param string $column
- * @param array $criteria
- *
- * @return mixed
- * @see \Codeception\Module\Db::grabFromDatabase()
- */
- public function grabFromDatabase($table, $column, $criteria = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFromDatabase', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Returns the number of rows in a database
- *
- * @param string $table Table name
- * @param array $criteria Search criteria [Optional]
- *
- * @return int
- * @see \Codeception\Module\Db::grabNumRecords()
- */
- public function grabNumRecords($table, $criteria = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabNumRecords', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Alias to `haveHttpHeader`
- *
- * @param $name
- * @param $value
- * @see \Codeception\Module\PhpBrowser::setHeader()
- */
- public function setHeader($name, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('setHeader', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Authenticates user for HTTP_AUTH
- *
- * @param $username
- * @param $password
- * @see \Codeception\Module\PhpBrowser::amHttpAuthenticated()
- */
- public function amHttpAuthenticated($username, $password) {
- return $this->getScenario()->runStep(new \Codeception\Step\Condition('amHttpAuthenticated', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Open web page at the given absolute URL and sets its hostname as the base host.
- *
- * ``` php
- * amOnUrl('http://codeception.com');
- * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart
- * ?>
- * ```
- * @see \Codeception\Module\PhpBrowser::amOnUrl()
- */
- public function amOnUrl($url) {
- return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Changes the subdomain for the 'url' configuration parameter.
- * Does not open a page; use `amOnPage` for that.
- *
- * ``` php
- * amOnSubdomain('user');
- * $I->amOnPage('/');
- * // moves to http://user.mysite.com/
- * ?>
- * ```
- *
- * @param $subdomain
- *
- * @return mixed
- * @see \Codeception\Module\PhpBrowser::amOnSubdomain()
- */
- public function amOnSubdomain($subdomain) {
- return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Low-level API method.
- * If Codeception commands are not enough, use [Guzzle HTTP Client](http://guzzlephp.org/) methods directly
- *
- * Example:
- *
- * ``` php
- * executeInGuzzle(function (\GuzzleHttp\Client $client) {
- * $client->get('/get', ['query' => ['foo' => 'bar']]);
- * });
- * ?>
- * ```
- *
- * It is not recommended to use this command on a regular basis.
- * If Codeception lacks important Guzzle Client methods, implement them and submit patches.
- *
- * @param callable $function
- * @see \Codeception\Module\PhpBrowser::executeInGuzzle()
- */
- public function executeInGuzzle($function) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('executeInGuzzle', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Sets the HTTP header to the passed value - which is used on
- * subsequent HTTP requests through PhpBrowser.
- *
- * Example:
- * ```php
- * setHeader('X-Requested-With', 'Codeception');
- * $I->amOnPage('test-headers.php');
- * ?>
- * ```
- *
- * @param string $name the name of the request header
- * @param string $value the value to set it to for subsequent
- * requests
- * @see \Codeception\Lib\InnerBrowser::haveHttpHeader()
- */
- public function haveHttpHeader($name, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('haveHttpHeader', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Deletes the header with the passed name. Subsequent requests
- * will not have the deleted header in its request.
- *
- * Example:
- * ```php
- * haveHttpHeader('X-Requested-With', 'Codeception');
- * $I->amOnPage('test-headers.php');
- * // ...
- * $I->deleteHeader('X-Requested-With');
- * $I->amOnPage('some-other-page.php');
- * ?>
- * ```
- *
- * @param string $name the name of the header to delete.
- * @see \Codeception\Lib\InnerBrowser::deleteHeader()
- */
- public function deleteHeader($name) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('deleteHeader', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Opens the page for the given relative URI.
- *
- * ``` php
- * amOnPage('/');
- * // opens /register page
- * $I->amOnPage('/register');
- * ```
- *
- * @param $page
- * @see \Codeception\Lib\InnerBrowser::amOnPage()
- */
- public function amOnPage($page) {
- return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Perform a click on a link or a button, given by a locator.
- * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string.
- * For buttons, the "value" attribute, "name" attribute, and inner text are searched.
- * For links, the link text is searched.
- * For images, the "alt" attribute and inner text of any parent links are searched.
- *
- * The second parameter is a context (CSS or XPath locator) to narrow the search.
- *
- * Note that if the locator matches a button of type `submit`, the form will be submitted.
- *
- * ``` php
- * click('Logout');
- * // button of form
- * $I->click('Submit');
- * // CSS button
- * $I->click('#form input[type=submit]');
- * // XPath
- * $I->click('//form/*[@type=submit]');
- * // link in context
- * $I->click('Logout', '#nav');
- * // using strict locator
- * $I->click(['link' => 'Login']);
- * ?>
- * ```
- *
- * @param $link
- * @param $context
- * @see \Codeception\Lib\InnerBrowser::click()
- */
- public function click($link, $context = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('click', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string (case insensitive).
- *
- * You can specify a specific HTML element (via CSS or XPath) as the second
- * parameter to only search within that element.
- *
- * ``` php
- * see('Logout'); // I can suppose user is logged in
- * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page
- * $I->see('Sign Up', '//body/h1'); // with XPath
- * ```
- *
- * Note that the search is done after stripping all HTML tags from the body,
- * so `$I->see('strong')` will return true for strings like:
- *
- * - `
I am Stronger than thou
`
- * - ``
- *
- * But will *not* be true for strings like:
- *
- * - `Home`
- * - `
Home`
- * - ``
- *
- * For checking the raw source code, use `seeInSource()`.
- *
- * @param $text
- * @param null $selector
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::see()
- */
- public function canSee($text, $selector = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string (case insensitive).
- *
- * You can specify a specific HTML element (via CSS or XPath) as the second
- * parameter to only search within that element.
- *
- * ``` php
- * see('Logout'); // I can suppose user is logged in
- * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page
- * $I->see('Sign Up', '//body/h1'); // with XPath
- * ```
- *
- * Note that the search is done after stripping all HTML tags from the body,
- * so `$I->see('strong')` will return true for strings like:
- *
- * - `
I am Stronger than thou
`
- * - ``
- *
- * But will *not* be true for strings like:
- *
- * - `Home`
- * - `
Home`
- * - ``
- *
- * For checking the raw source code, use `seeInSource()`.
- *
- * @param $text
- * @param null $selector
- * @see \Codeception\Lib\InnerBrowser::see()
- */
- public function see($text, $selector = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('see', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page doesn't contain the text specified (case insensitive).
- * Give a locator as the second parameter to match a specific region.
- *
- * ```php
- * dontSee('Login'); // I can suppose user is already logged in
- * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page
- * $I->dontSee('Sign Up','//body/h1'); // with XPath
- * ```
- *
- * Note that the search is done after stripping all HTML tags from the body,
- * so `$I->dontSee('strong')` will fail on strings like:
- *
- * - `
Home`
- * - ``
- *
- * For checking the raw source code, use `seeInSource()`.
- *
- * @param $text
- * @param null $selector
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSee()
- */
- public function cantSee($text, $selector = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page doesn't contain the text specified (case insensitive).
- * Give a locator as the second parameter to match a specific region.
- *
- * ```php
- * dontSee('Login'); // I can suppose user is already logged in
- * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page
- * $I->dontSee('Sign Up','//body/h1'); // with XPath
- * ```
- *
- * Note that the search is done after stripping all HTML tags from the body,
- * so `$I->dontSee('strong')` will fail on strings like:
- *
- * - `
Home`
- * - ``
- *
- * For checking the raw source code, use `seeInSource()`.
- *
- * @param $text
- * @param null $selector
- * @see \Codeception\Lib\InnerBrowser::dontSee()
- */
- public function dontSee($text, $selector = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string in its
- * raw source code.
- *
- * ``` php
- * seeInSource('
Green eggs & ham
');
- * ```
- *
- * @param $raw
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::seeInSource()
- */
- public function canSeeInSource($raw) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInSource', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string in its
- * raw source code.
- *
- * ``` php
- * seeInSource('
Green eggs & ham
');
- * ```
- *
- * @param $raw
- * @see \Codeception\Lib\InnerBrowser::seeInSource()
- */
- public function seeInSource($raw) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInSource', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string in its
- * raw source code.
- *
- * ```php
- * dontSeeInSource('
Green eggs & ham
');
- * ```
- *
- * @param $raw
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSeeInSource()
- */
- public function cantSeeInSource($raw) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInSource', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current page contains the given string in its
- * raw source code.
- *
- * ```php
- * dontSeeInSource('
Green eggs & ham
');
- * ```
- *
- * @param $raw
- * @see \Codeception\Lib\InnerBrowser::dontSeeInSource()
- */
- public function dontSeeInSource($raw) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInSource', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that there's a link with the specified text.
- * Give a full URL as the second parameter to match links with that exact URL.
- *
- * ``` php
- * seeLink('Logout'); // matches Logout
- * $I->seeLink('Logout','/logout'); // matches Logout
- * ?>
- * ```
- *
- * @param $text
- * @param null $url
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::seeLink()
- */
- public function canSeeLink($text, $url = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that there's a link with the specified text.
- * Give a full URL as the second parameter to match links with that exact URL.
- *
- * ``` php
- * seeLink('Logout'); // matches Logout
- * $I->seeLink('Logout','/logout'); // matches Logout
- * ?>
- * ```
- *
- * @param $text
- * @param null $url
- * @see \Codeception\Lib\InnerBrowser::seeLink()
- */
- public function seeLink($text, $url = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the page doesn't contain a link with the given string.
- * If the second parameter is given, only links with a matching "href" attribute will be checked.
- *
- * ``` php
- * dontSeeLink('Logout'); // I suppose user is not logged in
- * $I->dontSeeLink('Checkout now', '/store/cart.php');
- * ?>
- * ```
- *
- * @param $text
- * @param null $url
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSeeLink()
- */
- public function cantSeeLink($text, $url = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the page doesn't contain a link with the given string.
- * If the second parameter is given, only links with a matching "href" attribute will be checked.
- *
- * ``` php
- * dontSeeLink('Logout'); // I suppose user is not logged in
- * $I->dontSeeLink('Checkout now', '/store/cart.php');
- * ?>
- * ```
- *
- * @param $text
- * @param null $url
- * @see \Codeception\Lib\InnerBrowser::dontSeeLink()
- */
- public function dontSeeLink($text, $url = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that current URI contains the given string.
- *
- * ``` php
- * seeInCurrentUrl('home');
- * // to match: /users/1
- * $I->seeInCurrentUrl('/users/');
- * ?>
- * ```
- *
- * @param $uri
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl()
- */
- public function canSeeInCurrentUrl($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that current URI contains the given string.
- *
- * ``` php
- * seeInCurrentUrl('home');
- * // to match: /users/1
- * $I->seeInCurrentUrl('/users/');
- * ?>
- * ```
- *
- * @param $uri
- * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl()
- */
- public function seeInCurrentUrl($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URI doesn't contain the given string.
- *
- * ``` php
- * dontSeeInCurrentUrl('/users/');
- * ?>
- * ```
- *
- * @param $uri
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl()
- */
- public function cantSeeInCurrentUrl($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URI doesn't contain the given string.
- *
- * ``` php
- * dontSeeInCurrentUrl('/users/');
- * ?>
- * ```
- *
- * @param $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl()
- */
- public function dontSeeInCurrentUrl($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL is equal to the given string.
- * Unlike `seeInCurrentUrl`, this only matches the full URL.
- *
- * ``` php
- * seeCurrentUrlEquals('/');
- * ?>
- * ```
- *
- * @param $uri
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals()
- */
- public function canSeeCurrentUrlEquals($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL is equal to the given string.
- * Unlike `seeInCurrentUrl`, this only matches the full URL.
- *
- * ``` php
- * seeCurrentUrlEquals('/');
- * ?>
- * ```
- *
- * @param $uri
- * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals()
- */
- public function seeCurrentUrlEquals($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL doesn't equal the given string.
- * Unlike `dontSeeInCurrentUrl`, this only matches the full URL.
- *
- * ``` php
- * dontSeeCurrentUrlEquals('/');
- * ?>
- * ```
- *
- * @param $uri
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals()
- */
- public function cantSeeCurrentUrlEquals($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL doesn't equal the given string.
- * Unlike `dontSeeInCurrentUrl`, this only matches the full URL.
- *
- * ``` php
- * dontSeeCurrentUrlEquals('/');
- * ?>
- * ```
- *
- * @param $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals()
- */
- public function dontSeeCurrentUrlEquals($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL matches the given regular expression.
- *
- * ``` php
- * seeCurrentUrlMatches('~$/users/(\d+)~');
- * ?>
- * ```
- *
- * @param $uri
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches()
- */
- public function canSeeCurrentUrlMatches($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the current URL matches the given regular expression.
- *
- * ``` php
- * seeCurrentUrlMatches('~$/users/(\d+)~');
- * ?>
- * ```
- *
- * @param $uri
- * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches()
- */
- public function seeCurrentUrlMatches($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that current url doesn't match the given regular expression.
- *
- * ``` php
- * dontSeeCurrentUrlMatches('~$/users/(\d+)~');
- * ?>
- * ```
- *
- * @param $uri
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches()
- */
- public function cantSeeCurrentUrlMatches($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that current url doesn't match the given regular expression.
- *
- * ``` php
- * dontSeeCurrentUrlMatches('~$/users/(\d+)~');
- * ?>
- * ```
- *
- * @param $uri
- * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches()
- */
- public function dontSeeCurrentUrlMatches($uri) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Executes the given regular expression against the current URI and returns the first match.
- * If no parameters are provided, the full URI is returned.
- *
- * ``` php
- * grabFromCurrentUrl('~$/user/(\d+)/~');
- * $uri = $I->grabFromCurrentUrl();
- * ?>
- * ```
- *
- * @param null $uri
- *
- * @return mixed
- * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl()
- */
- public function grabFromCurrentUrl($uri = null) {
- return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the specified checkbox is checked.
- *
- * ``` php
- * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms
- * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form.
- * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]');
- * ?>
- * ```
- *
- * @param $checkbox
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked()
- */
- public function canSeeCheckboxIsChecked($checkbox) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the specified checkbox is checked.
- *
- * ``` php
- * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms
- * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form.
- * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]');
- * ?>
- * ```
- *
- * @param $checkbox
- * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked()
- */
- public function seeCheckboxIsChecked($checkbox) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Check that the specified checkbox is unchecked.
- *
- * ``` php
- * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms
- * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form.
- * ?>
- * ```
- *
- * @param $checkbox
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked()
- */
- public function cantSeeCheckboxIsChecked($checkbox) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Check that the specified checkbox is unchecked.
- *
- * ``` php
- * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms
- * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form.
- * ?>
- * ```
- *
- * @param $checkbox
- * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked()
- */
- public function dontSeeCheckboxIsChecked($checkbox) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the given input field or textarea contains the given value.
- * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath.
- *
- * ``` php
- * seeInField('Body','Type your comment here');
- * $I->seeInField('form textarea[name=body]','Type your comment here');
- * $I->seeInField('form input[type=hidden]','hidden_value');
- * $I->seeInField('#searchform input','Search');
- * $I->seeInField('//form/*[@name=search]','Search');
- * $I->seeInField(['name' => 'search'], 'Search');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::seeInField()
- */
- public function canSeeInField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that the given input field or textarea contains the given value.
- * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath.
- *
- * ``` php
- * seeInField('Body','Type your comment here');
- * $I->seeInField('form textarea[name=body]','Type your comment here');
- * $I->seeInField('form input[type=hidden]','hidden_value');
- * $I->seeInField('#searchform input','Search');
- * $I->seeInField('//form/*[@name=search]','Search');
- * $I->seeInField(['name' => 'search'], 'Search');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * @see \Codeception\Lib\InnerBrowser::seeInField()
- */
- public function seeInField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that an input field or textarea doesn't contain the given value.
- * For fuzzy locators, the field is matched by label text, CSS and XPath.
- *
- * ``` php
- * dontSeeInField('Body','Type your comment here');
- * $I->dontSeeInField('form textarea[name=body]','Type your comment here');
- * $I->dontSeeInField('form input[type=hidden]','hidden_value');
- * $I->dontSeeInField('#searchform input','Search');
- * $I->dontSeeInField('//form/*[@name=search]','Search');
- * $I->dontSeeInField(['name' => 'search'], 'Search');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSeeInField()
- */
- public function cantSeeInField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks that an input field or textarea doesn't contain the given value.
- * For fuzzy locators, the field is matched by label text, CSS and XPath.
- *
- * ``` php
- * dontSeeInField('Body','Type your comment here');
- * $I->dontSeeInField('form textarea[name=body]','Type your comment here');
- * $I->dontSeeInField('form input[type=hidden]','hidden_value');
- * $I->dontSeeInField('#searchform input','Search');
- * $I->dontSeeInField('//form/*[@name=search]','Search');
- * $I->dontSeeInField(['name' => 'search'], 'Search');
- * ?>
- * ```
- *
- * @param $field
- * @param $value
- * @see \Codeception\Lib\InnerBrowser::dontSeeInField()
- */
- public function dontSeeInField($field, $value) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks if the array of form parameters (name => value) are set on the form matched with the
- * passed selector.
- *
- * ``` php
- * seeInFormFields('form[name=myform]', [
- * 'input1' => 'value',
- * 'input2' => 'other value',
- * ]);
- * ?>
- * ```
- *
- * For multi-select elements, or to check values of multiple elements with the same name, an
- * array may be passed:
- *
- * ``` php
- * seeInFormFields('.form-class', [
- * 'multiselect' => [
- * 'value1',
- * 'value2',
- * ],
- * 'checkbox[]' => [
- * 'a checked value',
- * 'another checked value',
- * ],
- * ]);
- * ?>
- * ```
- *
- * Additionally, checkbox values can be checked with a boolean.
- *
- * ``` php
- * seeInFormFields('#form-id', [
- * 'checkbox1' => true, // passes if checked
- * 'checkbox2' => false, // passes if unchecked
- * ]);
- * ?>
- * ```
- *
- * Pair this with submitForm for quick testing magic.
- *
- * ``` php
- * 'value',
- * 'field2' => 'another value',
- * 'checkbox1' => true,
- * // ...
- * ];
- * $I->submitForm('//form[@id=my-form]', $form, 'submitButton');
- * // $I->amOnPage('/path/to/form-page') may be needed
- * $I->seeInFormFields('//form[@id=my-form]', $form);
- * ?>
- * ```
- *
- * @param $formSelector
- * @param $params
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::seeInFormFields()
- */
- public function canSeeInFormFields($formSelector, $params) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks if the array of form parameters (name => value) are set on the form matched with the
- * passed selector.
- *
- * ``` php
- * seeInFormFields('form[name=myform]', [
- * 'input1' => 'value',
- * 'input2' => 'other value',
- * ]);
- * ?>
- * ```
- *
- * For multi-select elements, or to check values of multiple elements with the same name, an
- * array may be passed:
- *
- * ``` php
- * seeInFormFields('.form-class', [
- * 'multiselect' => [
- * 'value1',
- * 'value2',
- * ],
- * 'checkbox[]' => [
- * 'a checked value',
- * 'another checked value',
- * ],
- * ]);
- * ?>
- * ```
- *
- * Additionally, checkbox values can be checked with a boolean.
- *
- * ``` php
- * seeInFormFields('#form-id', [
- * 'checkbox1' => true, // passes if checked
- * 'checkbox2' => false, // passes if unchecked
- * ]);
- * ?>
- * ```
- *
- * Pair this with submitForm for quick testing magic.
- *
- * ``` php
- * 'value',
- * 'field2' => 'another value',
- * 'checkbox1' => true,
- * // ...
- * ];
- * $I->submitForm('//form[@id=my-form]', $form, 'submitButton');
- * // $I->amOnPage('/path/to/form-page') may be needed
- * $I->seeInFormFields('//form[@id=my-form]', $form);
- * ?>
- * ```
- *
- * @param $formSelector
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::seeInFormFields()
- */
- public function seeInFormFields($formSelector, $params) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks if the array of form parameters (name => value) are not set on the form matched with
- * the passed selector.
- *
- * ``` php
- * dontSeeInFormFields('form[name=myform]', [
- * 'input1' => 'non-existent value',
- * 'input2' => 'other non-existent value',
- * ]);
- * ?>
- * ```
- *
- * To check that an element hasn't been assigned any one of many values, an array can be passed
- * as the value:
- *
- * ``` php
- * dontSeeInFormFields('.form-class', [
- * 'fieldName' => [
- * 'This value shouldn\'t be set',
- * 'And this value shouldn\'t be set',
- * ],
- * ]);
- * ?>
- * ```
- *
- * Additionally, checkbox values can be checked with a boolean.
- *
- * ``` php
- * dontSeeInFormFields('#form-id', [
- * 'checkbox1' => true, // fails if checked
- * 'checkbox2' => false, // fails if unchecked
- * ]);
- * ?>
- * ```
- *
- * @param $formSelector
- * @param $params
- * Conditional Assertion: Test won't be stopped on fail
- * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields()
- */
- public function cantSeeInFormFields($formSelector, $params) {
- return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args()));
- }
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Checks if the array of form parameters (name => value) are not set on the form matched with
- * the passed selector.
- *
- * ``` php
- * dontSeeInFormFields('form[name=myform]', [
- * 'input1' => 'non-existent value',
- * 'input2' => 'other non-existent value',
- * ]);
- * ?>
- * ```
- *
- * To check that an element hasn't been assigned any one of many values, an array can be passed
- * as the value:
- *
- * ``` php
- * dontSeeInFormFields('.form-class', [
- * 'fieldName' => [
- * 'This value shouldn\'t be set',
- * 'And this value shouldn\'t be set',
- * ],
- * ]);
- * ?>
- * ```
- *
- * Additionally, checkbox values can be checked with a boolean.
- *
- * ``` php
- * dontSeeInFormFields('#form-id', [
- * 'checkbox1' => true, // fails if checked
- * 'checkbox2' => false, // fails if unchecked
- * ]);
- * ?>
- * ```
- *
- * @param $formSelector
- * @param $params
- * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields()
- */
- public function dontSeeInFormFields($formSelector, $params) {
- return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args()));
- }
-
-
- /**
- * [!] Method is generated. Documentation taken from corresponding module.
- *
- * Submits the given form on the page, optionally with the given form
- * values. Pass the form field's values as an array in the second
- * parameter.
- *
- * Although this function can be used as a short-hand version of
- * `fillField()`, `selectOption()`, `click()` etc. it has some important
- * differences:
- *
- * * Only field *names* may be used, not CSS/XPath selectors nor field labels
- * * If a field is sent to this function that does *not* exist on the page,
- * it will silently be added to the HTTP request. This is helpful for testing
- * some types of forms, but be aware that you will *not* get an exception
- * like you would if you called `fillField()` or `selectOption()` with
- * a missing field.
- *
- * Fields that are not provided will be filled by their values from the page,
- * or from any previous calls to `fillField()`, `selectOption()` etc.
- * You don't need to click the 'Submit' button afterwards.
- * This command itself triggers the request to form's action.
- *
- * You can optionally specify which button's value to include
- * in the request with the last parameter (as an alternative to
- * explicitly setting its value in the second parameter), as
- * button values are not otherwise included in the request.
- *
- * Examples:
- *
- * ``` php
- * submitForm('#login', [
- * 'login' => 'davert',
- * 'password' => '123456'
- * ]);
- * // or
- * $I->submitForm('#login', [
- * 'login' => 'davert',
- * 'password' => '123456'
- * ], 'submitButtonName');
- *
- * ```
- *
- * For example, given this sample "Sign Up" form:
- *
- * ``` html
- *