diff --git a/application/config/message.php b/application/config/message.php index 687922f70..8e7249feb 100644 --- a/application/config/message.php +++ b/application/config/message.php @@ -9,6 +9,7 @@ $config['msg_delivery'] = true; // Default true $config['system_person_id'] = 1; // Dummy sender, used for sending messages from the system $config['redirect_view_message_url'] = 'index.ci.php/Redirect/redirectByToken/'; // $config['message_html_view_url'] = 'index.ci.php/ViewMessage/toHTML/'; +$config['message_server'] = 'http://www.fhcomplete.org/'; $config['assistent_function'] = 'ass'; define('EMAIL_KONTAKT_TYPE', 'email'); // Email kontakt type diff --git a/application/controllers/api/v1/content/Dms.php b/application/controllers/api/v1/content/Dms.php index 059df2ffa..dd1156273 100644 --- a/application/controllers/api/v1/content/Dms.php +++ b/application/controllers/api/v1/content/Dms.php @@ -53,10 +53,11 @@ class Dms extends APIv1_Controller { $person_id = $this->get('person_id'); $dokument_kurzbz = $this->get('dokument_kurzbz'); + $no_file = $this->get('no_file'); if (isset($person_id)) { - $result = $this->dmslib->getAktenAcceptedDms($person_id, $dokument_kurzbz); + $result = $this->dmslib->getAktenAcceptedDms($person_id, $dokument_kurzbz, $no_file); $this->response($result, REST_Controller::HTTP_OK); } diff --git a/application/controllers/system/Messages.php b/application/controllers/system/Messages.php index 4be3a0e78..472f818d5 100755 --- a/application/controllers/system/Messages.php +++ b/application/controllers/system/Messages.php @@ -40,14 +40,13 @@ class Messages extends VileSci_Controller } // Get variables - $this->load->model('crm/Prestudent_model', 'PrestudentModel'); - $prestudent = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id); - if ($prestudent->error) + $this->load->model('system/Message_model', 'MessageModel'); + $msgVarsDataByPrestudentId = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id); + if ($msgVarsDataByPrestudentId->error) { - show_error($prestudent->retval); + show_error($msgVarsDataByPrestudentId->retval); } - $this->load->model('system/Message_model', 'MessageModel'); if (!hasData($variables = $this->MessageModel->getMessageVars())) { unset($variables); @@ -65,11 +64,33 @@ class Messages extends VileSci_Controller array_shift($variables->retval); // Remove person_id array_shift($variables->retval); // Remove prestudent_id + // Organisation units + $oe_kurzbz = array(); // A person can have more organisation units + $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); + $benutzerResult = $this->BenutzerfunktionModel->getByPersonId($sender_id); + if (hasData($benutzerResult)) + { + foreach($benutzerResult->retval as $val) + { + $oe_kurzbz[] = $val->oe_kurzbz; + } + } + + // Admin or commoner? + $this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel'); + $isAdmin = $this->BenutzerrolleModel->isAdminByPersonId($sender_id); + if (isError($isAdmin)) + { + show_error($isAdmin->retval); + } + $data = array ( 'sender_id' => $sender_id, - 'receivers' => $prestudent->retval, + 'receivers' => $msgVarsDataByPrestudentId->retval, 'message' => $msg, - 'variables' => $variablesArray + 'variables' => $variablesArray, + 'oe_kurzbz' => $oe_kurzbz, + 'isAdmin' => $isAdmin->retval ); $v = $this->load->view('system/messageWrite', $data); diff --git a/application/core/APIv1_Controller.php b/application/core/APIv1_Controller.php index 26fbeddac..76654b559 100644 --- a/application/core/APIv1_Controller.php +++ b/application/core/APIv1_Controller.php @@ -2,13 +2,15 @@ require_once APPPATH . '/libraries/REST_Controller.php'; -class APIv1_Controller extends REST_Controller +class APIv1_Controller extends REST_Controller { - function __construct() + function __construct() { parent::__construct(); // Loads return messages $this->load->helper('message'); + + log_message('debug', 'Called API: '.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); } } \ No newline at end of file diff --git a/application/helpers/fhc_helper.php b/application/helpers/fhc_helper.php index b76e2041d..c2832d55d 100644 --- a/application/helpers/fhc_helper.php +++ b/application/helpers/fhc_helper.php @@ -62,3 +62,17 @@ function generateToken($length = 64) $token .= $characters[mt_rand(0, $charactersLength)]; return $token; } + +/** + * var_dump_to_error_log() + * Gets the output of the var_dump function and print it out + * via the error log. It also removes the end line characters + */ +function var_dump_to_error_log($parameter) +{ + ob_start(); + var_dump($parameter); + $ob_get_contents = ob_get_contents(); + ob_end_clean(); + error_log(str_replace("\n", '', $ob_get_contents)); +} \ No newline at end of file diff --git a/application/helpers/fhcauth_helper.php b/application/helpers/fhcauth_helper.php index 5fa081712..42fe5889f 100644 --- a/application/helpers/fhcauth_helper.php +++ b/application/helpers/fhcauth_helper.php @@ -11,7 +11,8 @@ * @filesource */ if (! defined('BASEPATH')) exit('No direct script access allowed'); -require_once FCPATH.'include/authentication.class.php'; + +require_once FHCPATH.'include/authentication.class.php'; /** * FHC-Auth Helpers diff --git a/application/libraries/DmsLib.php b/application/libraries/DmsLib.php index d0b64b9cb..a4b82ef12 100644 --- a/application/libraries/DmsLib.php +++ b/application/libraries/DmsLib.php @@ -68,11 +68,11 @@ class DmsLib /** * */ - public function getAktenAcceptedDms($person_id, $dokument_kurzbz = null) + public function getAktenAcceptedDms($person_id, $dokument_kurzbz = null, $no_file = null) { $result = $this->ci->AkteModel->getAktenAcceptedDms($person_id, $dokument_kurzbz); - if (hasData($result)) + if (hasData($result) && $no_file == null) { for ($i = 0; $i < count($result->retval); $i++) { diff --git a/application/libraries/FHC_Auth.php b/application/libraries/FHC_Auth.php index 17cfd65f6..a56cf0237 100644 --- a/application/libraries/FHC_Auth.php +++ b/application/libraries/FHC_Auth.php @@ -11,8 +11,9 @@ * @filesource */ if (! defined('BASEPATH')) exit('No direct script access allowed'); -require_once FCPATH.'include/authentication.class.php'; -require_once FCPATH.'include/AddonAuthentication.php'; + +require_once FHCPATH.'include/authentication.class.php'; +require_once FHCPATH.'include/AddonAuthentication.php'; /** * FHC-Auth Helpers diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index 88c18e8ab..cbcb6863a 100755 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -453,7 +453,7 @@ class MessageLib // If the person has an email account if (!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '') { - $href = APP_ROOT . $this->ci->config->item('message_html_view_url') . $result->retval[0]->token; + $href = $this->ci->config->item('message_server') . $this->ci->config->item('message_html_view_url') . $result->retval[0]->token; // Using a template for the html email body $body = $this->ci->parser->parse( 'templates/mailHTML', @@ -588,7 +588,7 @@ class MessageLib if ($multiPartMime === true) { // Using a template for the html email body - $href = APP_ROOT . $this->ci->config->item('message_html_view_url') . $result->retval[0]->token; + $href = $this->ci->config->item('message_server') . $this->ci->config->item('message_html_view_url') . $result->retval[0]->token; $bodyMsg = $this->ci->parser->parse( 'templates/mailHTML', array( diff --git a/application/libraries/OrganisationseinheitLib.php b/application/libraries/OrganisationseinheitLib.php index be66e2157..8d125abc0 100644 --- a/application/libraries/OrganisationseinheitLib.php +++ b/application/libraries/OrganisationseinheitLib.php @@ -59,7 +59,48 @@ class OrganisationseinheitLib return $this->treeSearch($schema, $table, $select, $where, $orderby, $result->retval[0]->_ppk); } } + + return $result; + } + + public function treeSearchEntire($table, $alias, $fields, $where, $orderby, $oe_kurzbz) + { + $select = ""; + if (is_array($fields)) + { + for ($i = 0; $i < count($fields); $i++) + { + $select .= $fields[$i]; + if ($i != count($fields) - 1) + { + $select .= ", "; + } + } + } + else + { + $select = $fields; + } + $result = $this->ci->OrganisationseinheitModel->getOneLevelAlias($table, $alias, $select, $where, $orderby, $oe_kurzbz); + + if (hasData($result)) + { + if ($result->retval[0]->_pk != null && $result->retval[0]->_ppk != null && $result->retval[0]->_jtpk != null) + { + $tmpResult = $this->treeSearchEntire($table, $alias, $select, $where, $orderby, $result->retval[0]->_ppk); + + if (hasData($tmpResult) && $tmpResult->retval[0]->_pk != null && $tmpResult->retval[0]->_ppk != null && $tmpResult->retval[0]->_jtpk != null) + { + $result->retval = array_merge($result->retval, $tmpResult->retval); + } + } + else if ($result->retval[0]->_ppk != null) + { + $result = $this->treeSearchEntire($table, $alias, $select, $where, $orderby, $result->retval[0]->_ppk); + } + } + return $result; } } \ No newline at end of file diff --git a/application/libraries/PermissionLib.php b/application/libraries/PermissionLib.php index dd0b2242a..3bd70eb40 100644 --- a/application/libraries/PermissionLib.php +++ b/application/libraries/PermissionLib.php @@ -11,15 +11,15 @@ * @filesource */ -if (! defined('FCPATH')) exit('No direct script access allowed'); +if (! defined('BASEPATH')) exit('No direct script access allowed'); -require_once(FCPATH.'include/basis_db.class.php'); -require_once(FCPATH.'include/organisationseinheit.class.php'); -require_once(FCPATH.'include/studiengang.class.php'); -require_once(FCPATH.'include/fachbereich.class.php'); -require_once(FCPATH.'include/functions.inc.php'); -require_once(FCPATH.'include/wawi_kostenstelle.class.php'); -require_once(FCPATH.'include/benutzerberechtigung.class.php'); +require_once(FHCPATH.'include/basis_db.class.php'); +require_once(FHCPATH.'include/organisationseinheit.class.php'); +require_once(FHCPATH.'include/studiengang.class.php'); +require_once(FHCPATH.'include/fachbereich.class.php'); +require_once(FHCPATH.'include/functions.inc.php'); +require_once(FHCPATH.'include/wawi_kostenstelle.class.php'); +require_once(FHCPATH.'include/benutzerberechtigung.class.php'); class PermissionLib { @@ -29,34 +29,36 @@ class PermissionLib const INSERT_RIGHT = 'i'; const DELETE_RIGHT = 'd'; const REPLACE_RIGHT = 'ui'; - - private $bb; // benutzerberechtigung + private $acl; // conversion array from a source to a permission - + private static $bb; // benutzerberechtigung + /** - * + * PermissionLib's constructor + * Here is initialized the static property bb with all the rights of the user (API caller) */ function __construct() { // Loads CI instance $this->ci =& get_instance(); - + // Loads the library to manage the rights system //$this->ci->load->library('FHC_DB_ACL'); - + // Loads the auth helper $this->ci->load->helper('fhcauth'); - + // Loads the array of resources $this->acl = $this->ci->config->item('fhc_acl'); - // - $this->bb = new benutzerberechtigung(); + // API Caller rights initialization + self::$bb = new benutzerberechtigung(); + self::$bb->getBerechtigungen(getAuthUID()); } - + /** * Check if the user is entitled to get access to a source with the given access type - * + * * @return bool true if a user has the right to access to the specified * resource with a specified permission type, false otherwise */ @@ -66,7 +68,7 @@ class PermissionLib if (isset($this->acl[$sourceName])) { // Checks permission - return $this->isBerechtigt($this->acl[$sourceName], $permissionType); + return $this->_isBerechtigt($this->acl[$sourceName], $permissionType); } // if the resource does not exist, do not lose useful clock cycles else @@ -74,7 +76,7 @@ class PermissionLib return false; } } - + /** * Get a permission by a given source */ @@ -89,20 +91,22 @@ class PermissionLib return null; } } - + /** - * + * Checks user's (API caller) rights */ - private function isBerechtigt($berechtigung_kurzbz, $art = null, $oe_kurzbz = null, $kostenstelle_id = null) + private function _isBerechtigt($berechtigung_kurzbz, $art = null, $oe_kurzbz = null, $kostenstelle_id = null) { + $isBerechtigt = false; + if (!is_null($berechtigung_kurzbz)) { - $this->bb->getBerechtigungen(getAuthUID()); - return $this->bb->isBerechtigt($berechtigung_kurzbz, $oe_kurzbz, $art, $kostenstelle_id); - } - else - { - return false; + if(self::$bb->isBerechtigt($berechtigung_kurzbz, $oe_kurzbz, $art, $kostenstelle_id)) + { + $isBerechtigt = true; + } } + + return $isBerechtigt; } } \ No newline at end of file diff --git a/application/libraries/ReihungstestLib.php b/application/libraries/ReihungstestLib.php index 6d6960240..4030e50c3 100644 --- a/application/libraries/ReihungstestLib.php +++ b/application/libraries/ReihungstestLib.php @@ -23,7 +23,14 @@ class ReihungstestLib */ public function insertPersonReihungstest($ddReihungstest) { - return $this->ci->RtPersonModel->insert($ddReihungstest); + if (isset($ddReihungstest['rt_id']) && $this->checkAvailability($ddReihungstest['rt_id'])) + { + return $this->ci->RtPersonModel->insert($ddReihungstest); + } + else + { + return error('This test is not more available'); + } } /** @@ -62,4 +69,19 @@ class ReihungstestLib return $this->ci->ReihungstestModel->loadWhere($parametersArray); } + + /** + * It checks if the test is available + */ + public function checkAvailability($reihungstest_id) + { + $result = $this->ci->ReihungstestModel->checkAvailability($reihungstest_id); + + if (hasData($result)) + { + return true; + } + + return false; + } } \ No newline at end of file diff --git a/application/models/crm/Reihungstest_model.php b/application/models/crm/Reihungstest_model.php index 46e8702cc..a8d048463 100644 --- a/application/models/crm/Reihungstest_model.php +++ b/application/models/crm/Reihungstest_model.php @@ -11,4 +11,31 @@ class Reihungstest_model extends DB_Model $this->dbTable = 'public.tbl_reihungstest'; $this->pk = 'reihungstest_id'; } + + /** + * Gets a test from a test id only if it is available + */ + public function checkAvailability($reihungstest_id) + { + $query = 'SELECT public.tbl_reihungstest.* + FROM public.tbl_reihungstest LEFT JOIN public.tbl_rt_studienplan USING(reihungstest_id) + WHERE tbl_reihungstest.oeffentlich = TRUE + AND tbl_reihungstest.datum > NOW() + AND tbl_reihungstest.anmeldefrist >= NOW() + AND COALESCE ( + tbl_reihungstest.max_teilnehmer, + ( + SELECT SUM(arbeitsplaetze) + FROM public.tbl_ort JOIN public.tbl_rt_ort USING(ort_kurzbz) + WHERE rt_id = tbl_reihungstest.reihungstest_id + ) + ) - ( + SELECT COUNT(*) + FROM public.tbl_rt_person + WHERE rt_id = tbl_reihungstest.reihungstest_id + ) > 0 + AND reihungstest_id = ?'; + + return $this->execQuery($query, array($reihungstest_id)); + } } \ No newline at end of file diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php index ccab383cd..0414cd560 100755 --- a/application/models/organisation/Organisationseinheit_model.php +++ b/application/models/organisation/Organisationseinheit_model.php @@ -78,9 +78,34 @@ class Organisationseinheit_model extends DB_Model ) _joined_table ON (orgs._pk = _joined_table._pk) WHERE orgs._pk = ? ORDER BY %s"; - + $query = sprintf($query, $table, $fields, $schema, $table, $where, $orderby); - + return $this->execQuery($query, array($oe_kurzbz)); } -} + + public function getOneLevelAlias($table, $alias, $fields, $where, $orderby, $oe_kurzbz) + { + $query = "WITH RECURSIVE organizations(_pk, _ppk) AS + ( + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_parent_kurzbz IS NULL + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) + ) + SELECT orgs._pk, orgs._ppk, _joined_table.* + FROM organizations orgs LEFT JOIN ( + SELECT %s.oe_kurzbz as _jtpk, %s + FROM %s + WHERE %s + ) _joined_table ON (orgs._pk = _joined_table._jtpk) + WHERE orgs._pk = ? + ORDER BY %s"; + + $query = sprintf($query, $alias, $fields, $table, $where, $orderby); + + return $this->execQuery($query, array($oe_kurzbz)); + } +} \ No newline at end of file diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index ec98577f1..cc09c28fd 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -22,7 +22,7 @@ class Studiengang_model extends DB_Model return $isEntitled; if (($isEntitled = $this->isEntitled('bis.tbl_lgartcode', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)) !== true) return $isEntitled; - + $allForBewerbungQuery = 'SELECT DISTINCT studiengang_kz, typ, organisationseinheittyp_kurzbz, @@ -95,7 +95,7 @@ class Studiengang_model extends DB_Model WHERE t1.onlinebewerbung IS TRUE AND t1.aktiv IS TRUE ORDER BY typ, studiengangbezeichnung, tbl_lgartcode.bezeichnung ASC'; - + return $this->execQuery($allForBewerbungQuery); } @@ -110,11 +110,11 @@ class Studiengang_model extends DB_Model $this->addJoin('lehre.tbl_studienplan', 'studienordnung_id'); // Then join with table lehre.tbl_studienplan_semester on column studienplan_id $this->addJoin('lehre.tbl_studienplan_semester', 'studienplan_id'); - + // Ordering by studiengang_kz and studienplan_id $this->addOrder('public.tbl_studiengang.studiengang_kz'); $this->addOrder('lehre.tbl_studienplan.studienplan_id'); - + $result = $this->loadTree( 'public.tbl_studiengang', array( @@ -130,7 +130,7 @@ class Studiengang_model extends DB_Model 'studienplaene' ) ); - + return $result; } @@ -156,7 +156,7 @@ class Studiengang_model extends DB_Model // Ordering by studiengang_kz and studienplan_id $this->addOrder('public.tbl_studiengang.bezeichnung'); $this->addOrder('lehre.tbl_studienplan.studienplan_id'); - + $result = $this->loadTree( 'public.tbl_studiengang', array( @@ -175,12 +175,12 @@ class Studiengang_model extends DB_Model 'akadgrad' ) ); - + return $result; } - + /** - * + * */ public function getAppliedStudiengang($person_id, $studiensemester_kurzbz, $titel) { @@ -200,10 +200,10 @@ class Studiengang_model extends DB_Model 'prestudent_id', 'LEFT' ); - + // Ordering by studiengang_kz and studienplan_id $this->addOrder('public.tbl_studiengang.bezeichnung'); - + $result = $this->loadTree( 'public.tbl_studiengang', array( @@ -222,12 +222,12 @@ class Studiengang_model extends DB_Model 'notizen' ) ); - + return $result; } - + /** - * + * */ public function getAvailableReihungstestByPersonId($person_id) { @@ -241,22 +241,22 @@ class Studiengang_model extends DB_Model return $isEntitled; if (($isEntitled = $this->isEntitled('public.tbl_prestudent', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)) !== true) return $isEntitled; - + $this->addJoin('lehre.tbl_studienordnung', 'studiengang_kz'); - + $this->addJoin('lehre.tbl_studienplan', 'studienordnung_id'); - + $this->addJoin('public.tbl_prestudentstatus', 'studienplan_id'); - + $this->addJoin('public.tbl_prestudent', 'prestudent_id'); - + $this->addFrom( '(SELECT * FROM public.tbl_reihungstest LEFT JOIN public.tbl_rt_studienplan USING(reihungstest_id))', 'tbl_reihungstest' ); - + $this->addOrder('tbl_studiengang.bezeichnung, tbl_reihungstest.stufe, tbl_reihungstest.datum'); - + return $this->loadTree( 'public.tbl_studiengang', array('public.tbl_reihungstest'), diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index e570a8edf..e75540d92 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -1,7 +1,7 @@ dbTable = 'public.tbl_benutzerfunktion'; $this->pk = 'benutzerfunktion_id'; } -} + + /** + * Get the Benutzerfunktion using the person_id + */ + public function getByPersonId($person_id) + { + // Join with the table + $this->addJoin('public.tbl_benutzer', 'uid'); + + return $this->loadWhere(array('person_id' => $person_id)); + } +} \ No newline at end of file diff --git a/application/models/system/Benutzerrolle_model.php b/application/models/system/Benutzerrolle_model.php index 95ca90e71..13ebf57b6 100644 --- a/application/models/system/Benutzerrolle_model.php +++ b/application/models/system/Benutzerrolle_model.php @@ -1,7 +1,7 @@ dbTable = 'system.tbl_benutzerrolle'; $this->pk = 'benutzerberechtigung_id'; } -} + + /** + * Checks if the given user is an admin + */ + public function isAdminByPersonId($person_id) + { + // Join with the table tbl_benutzer + $this->addJoin('public.tbl_benutzer', 'uid'); + + $result = $this->loadWhere(array('person_id' => $person_id, 'rolle_kurzbz' => 'admin')); + + if (!isError($result)) + { + if (hasData($result)) + { + $result = success(true); + } + else if (!hasData($result)) + { + $result = success(false); + } + } + + return $result; + } +} \ No newline at end of file diff --git a/application/views/system/messageWrite.php b/application/views/system/messageWrite.php index 84757b5cc..4f4ea7427 100644 --- a/application/views/system/messageWrite.php +++ b/application/views/system/messageWrite.php @@ -93,7 +93,7 @@ widgetlib->widget( 'Vorlage_widget', - null, + array('oe_kurzbz' => $oe_kurzbz, 'isAdmin' => $isAdmin), array('name' => 'vorlage', 'id' => 'vorlageDnD') ); ?> diff --git a/application/widgets/vorlage_widget.php b/application/widgets/vorlage_widget.php index a720222b1..91cba301f 100644 --- a/application/widgets/vorlage_widget.php +++ b/application/widgets/vorlage_widget.php @@ -4,13 +4,28 @@ class Vorlage_widget extends DropdownWidget { public function display($widgetData) { - $this->load->model('system/Vorlage_model', 'VorlageModel'); - $this->VorlageModel->addOrder('vorlage_kurzbz'); + // All organization units to which the user belongs + $oe_kurzbz = $widgetData['oe_kurzbz']; + $idAdmin = $widgetData['isAdmin']; - $this->addSelectToModel($this->VorlageModel, 'vorlage_kurzbz', 'bezeichnung'); + $vorlage = null; + + // If the user is an admin + if ($idAdmin === true) + { + // Get all the vorlage with mimetype = text/html + $vorlage = $this->_getAllHTMLVorlage(); + } + else + { + // Get all the vorlage that belongs to the organisation units of the user + // and the parents of those organisation units until the root of the + // organisation unit tree + $vorlage = $this->_getUserVorlage($oe_kurzbz); + } $this->setElementsArray( - $this->VorlageModel->loadWhere(array('mimetype' => 'text/html')), + $vorlage, true, 'Select a vorlage...', 'No vorlage found' @@ -18,4 +33,96 @@ class Vorlage_widget extends DropdownWidget $this->loadDropDownView($widgetData); } + + /** + * Get all the vorlage with mimetype = text/html + */ + private function _getAllHTMLVorlage() + { + $this->load->model('system/Vorlage_model', 'VorlageModel'); + $this->VorlageModel->addOrder('vorlage_kurzbz'); + + $this->addSelectToModel($this->VorlageModel, 'vorlage_kurzbz', 'bezeichnung'); + + return $this->VorlageModel->loadWhere(array('mimetype' => 'text/html')); + } + + /** + * Get all the vorlage that belongs to the organisation units of the user + * and the parents of those organisation units until the root of the + * organisation unit tree + */ + private function _getUserVorlage($oe_kurzbz) + { + // Loads library OrganisationseinheitLib + $this->load->library('OrganisationseinheitLib'); + + $vorlage = success(array()); // Default value + + $table = '( + SELECT v.vorlage_kurzbz, v.bezeichnung, vs.version, vs.oe_kurzbz, vs.aktiv, vs.subject, vs.text, v.mimetype + FROM tbl_vorlagestudiengang vs INNER JOIN tbl_vorlage v USING(vorlage_kurzbz) + ) templates'; + $alias = 'templates'; + $fields = array("templates.vorlage_kurzbz AS id", "UPPER(templates.oe_kurzbz) || ' - ' || templates.bezeichnung || ' - V' || templates.version AS description"); + $where = 'templates.aktiv = TRUE + AND templates.subject IS NOT NULL + AND templates.text IS NOT NULL + AND templates.mimetype = \'text/html\''; + $order_by = 'description ASC'; + + if (!is_array($oe_kurzbz)) + { + $vorlage = $this->organisationseinheitlib->treeSearchEntire( + $table, + $alias, + $fields, + $where, + $order_by, + $oe_kurzbz + ); + } + else // is an array + { + // Get the vorlage for each organisation unit + foreach($oe_kurzbz as $val) + { + $tmpVorlage = $this->organisationseinheitlib->treeSearchEntire( + $table, + $alias, + $fields, + $where, + $order_by, + $val + ); + + // Everything is ok and data are inside + if (hasData($tmpVorlage)) + { + // If it's the first vorlage copy it + if (count($vorlage->retval) == 0) + { + $vorlage->retval = $tmpVorlage->retval; + } + else // checks for duplicates, if it's not already present push it into the array $vorlage->retval + { + for ($i = 0; $i < count($vorlage->retval); $i++) + { + for ($j = 0; $j < count($tmpVorlage->retval); $j++) + { + if ($vorlage->retval[$i]->_pk != $tmpVorlage->retval[$j]->_pk + && $vorlage->retval[$i]->_ppk != $tmpVorlage->retval[$j]->_ppk + && $vorlage->retval[$i]->_jtpk != $tmpVorlage->retval[$j]->_jtpk) + { + array_push($vorlage->retval, $tmpVorlage->retval[$j]); + } + } + } + } + } + } + } + + return $vorlage; + } } \ No newline at end of file diff --git a/cis/private/coodle/coodle_autocomplete.php b/cis/private/coodle/coodle_autocomplete.php index 3fbb51f48..3cd0d935b 100755 --- a/cis/private/coodle/coodle_autocomplete.php +++ b/cis/private/coodle/coodle_autocomplete.php @@ -20,6 +20,7 @@ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/ort.class.php'); require_once('../../../include/benutzer.class.php'); +require_once('../../../include/gruppe.class.php'); if(!isset($_REQUEST['work'])) die('Parameter Work missing'); @@ -64,6 +65,23 @@ switch($work) $item['bezeichnung']=$row->nachname.' '.$row->vorname; $result[]=$item; } + + $gruppe = new gruppe(); + + if(!$gruppe->searchGruppen(array($q))) + die('Fehler beim Laden der Gruppe: '.$gruppe->errormsg); + + foreach($gruppe->result as $row) + { + if ($row->sichtbar) + { + $item['uid']=$row->gruppe_kurzbz; + $item['typ']='Gruppe'; + $item['bezeichnung']='Gruppe'; + $result[]=$item; + } + } + echo json_encode($result); break; default: diff --git a/cis/private/coodle/coodle_worker.php b/cis/private/coodle/coodle_worker.php index 44c697e3e..000ae50a8 100644 --- a/cis/private/coodle/coodle_worker.php +++ b/cis/private/coodle/coodle_worker.php @@ -27,6 +27,7 @@ require_once('../../../include/functions.inc.php'); require_once('../../../include/ort.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/coodle.class.php'); +require_once('../../../include/gruppe.class.php'); $user = get_uid(); @@ -65,6 +66,7 @@ switch($work) $uid=''; $ort=''; $email=''; + $gruppe_kurzbz=''; $name=''; switch($typ) { @@ -74,27 +76,61 @@ switch($work) $email = $id; $name=$bezeichnung; break; + case 'Gruppe': $gruppe_kurzbz = $id; break; default: die('Ungueltiger Typ:'.$typ); break; - } - - if($coodle->RessourceExists($coodle_id, $uid, $ort, $email)) - die('Ressource ist bereits zugeteilt'); - - $coodle->coodle_id = $coodle_id; - $coodle->uid = $uid; - $coodle->ort_kurzbz = $ort; - $coodle->email = $email; - $coodle->name = $name; - $coodle->zugangscode = uniqid(); - $coodle->insertamum = date('Y-m-d H:i:s'); - $coodle->insertvon = $user; - $coodle->updateamum = date('Y-m-d H:i:s'); - $coodle->updatevon = $user; - - if($coodle->saveRessource(true)) + } + + if($typ=='Gruppe') + { + $gruppe = new gruppe(); + if(!$gruppe->loadUser($gruppe_kurzbz)) + die('Fehler: '.$gruppe->errormsg); + + foreach($gruppe->result as $row) + { + $coodle->coodle_id = $coodle_id; + $coodle->uid = $row->uid; + $coodle->ort_kurzbz = $ort; + $coodle->email = $email; + $coodle->name = $name; + $coodle->zugangscode = uniqid(); + $coodle->insertamum = date('Y-m-d H:i:s'); + $coodle->insertvon = $user; + $coodle->updateamum = date('Y-m-d H:i:s'); + $coodle->updatevon = $user; + + if(!$coodle->RessourceExists($coodle_id, $row->uid, $ort, $email)) + { + if(!$coodle->saveRessource(true)) + { + echo 'Fehler beim Speichern:'.$coodle->errormsg; + continue; + } + } + } echo 'true'; - else - echo 'Fehler beim Speichern:'.$coodle->errormsg; + } + else + { + if($coodle->RessourceExists($coodle_id, $uid, $ort, $email)) + die('Ressource ist bereits zugeteilt'); + + $coodle->coodle_id = $coodle_id; + $coodle->uid = $uid; + $coodle->ort_kurzbz = $ort; + $coodle->email = $email; + $coodle->name = $name; + $coodle->zugangscode = uniqid(); + $coodle->insertamum = date('Y-m-d H:i:s'); + $coodle->insertvon = $user; + $coodle->updateamum = date('Y-m-d H:i:s'); + $coodle->updatevon = $user; + + if($coodle->saveRessource(true)) + echo 'true'; + else + echo 'Fehler beim Speichern:'.$coodle->errormsg; + } break; case 'removeressource': @@ -122,20 +158,29 @@ switch($work) $uid=''; $ort=''; $email=''; + $gruppe=''; $name=''; switch($typ) { case 'Ort': $ort = $id; break; case 'Person': $uid = $id; break; case 'Extern': $email = $id; break; + case 'Gruppe': $gruppe = $id; break; default: die('Ungueltiger Typ'); break; } if($coodle_ressource_id = $coodle->RessourceExists($coodle_id, $uid, $ort, $email)) { - if($coodle->deleteRessource($coodle_ressource_id)) - echo 'true'; - else - echo 'Fehler:'.$coodle->errormsg; + //Person darf nur entfernt werden, wenn noch kein Termin gewaelt wurde + $coodle->getRessourceTermin($coodle_id, $coodle_ressource_id); + if (count($coodle->result) == 0) + { + if($coodle->deleteRessource($coodle_ressource_id)) + echo 'true'; + else + echo 'Fehler:'.$coodle->errormsg; + } + else + echo 'Die Person kann nicht entfern werden, da sie bereits eine Terminauswahl getroffen hat'; } else { @@ -206,10 +251,13 @@ switch($work) if($coodle->ersteller_uid!=$user) die('Diese Aktion ist nur durch den Ersteller der Umfrage möglich'); - + $coodletermin = new coodle(); if(!$coodletermin->loadTermin($coodle_termin_id)) die('Fehler: '.$coodletermin->errormsg); + + if($coodletermin->checkTerminGewaehlt($coodle_termin_id)) + die('Der Termin kann nicht verschoben werden, da er schon ausgewählt wurde'); $coodletermin->datum = $datum; $coodletermin->uhrzeit = $uhrzeit; @@ -249,6 +297,9 @@ switch($work) die('Termin und Umfrage passen nicht zusammen!'); } + if($coodletermin->checkTerminGewaehlt($coodle_termin_id)) + die('Der Termin kann nicht gelöscht werden, da er schon ausgewählt wurde'); + if($coodletermin->deleteTermin($coodle_termin_id)) echo 'true'; else diff --git a/cis/private/coodle/stammdaten.php b/cis/private/coodle/stammdaten.php index 6e01dbb21..58ab6db3c 100755 --- a/cis/private/coodle/stammdaten.php +++ b/cis/private/coodle/stammdaten.php @@ -38,17 +38,39 @@ if(!check_lektor($user)) echo ' + "http://www.w3.org/TR/html4/strict.dtd"> - + + - - + + + '.$p->t('coodle/coodle').' @@ -123,10 +236,24 @@ if(isset($_POST['save'])) { //Speichern $titel = $_POST['titel']; - $beschreibung = $_POST['beschreibung']; + $beschreibung = ($_POST['beschreibung']==''?null:$_POST['beschreibung']); $dauer = $_POST['dauer']; $endedatum = $_POST['endedatum']; $coodle_id = $_POST['coodle_id']; + if (isset($_POST['mailversand'])) + $mailversand = true; + else + $mailversand = false; + + if (isset($_POST['teilnehmer_anonym'])) + $teilnehmer_anonym = true; + else + $teilnehmer_anonym = false; + + if (isset($_POST['termin_anonym'])) + $termin_anonym = true; + else + $termin_anonym = false; $coodle = new coodle(); @@ -139,15 +266,15 @@ if(isset($_POST['save'])) { die($p->t('basis/keineBerechtigung')); } - $coodle->new=false; + $coodle->new = false; } else { - $coodle->new=true; + $coodle->new = true; $coodle->ersteller_uid = $user; $coodle->insertamum = date('Y-m-d H:i:s'); $coodle->insertvon = $user; - $coodle->coodle_status_kurzbz='neu'; + $coodle->coodle_status_kurzbz = 'neu'; } $coodle->titel = $titel; @@ -156,10 +283,25 @@ if(isset($_POST['save'])) $coodle->endedatum = $datum_obj->formatDatum($endedatum, 'Y-m-d'); $coodle->updateamum = date('Y-m-d H:i:s'); $coodle->updatevon = $user; + $coodle->mailversand = $mailversand; + $coodle->teilnehmer_anonym = $teilnehmer_anonym; + $coodle->termine_anonym = $termin_anonym; if($coodle->save()) { $message.= ''.$p->t('global/erfolgreichgespeichert').''; + //Fuer alle neuen Umfragen wird ein Termine am 01.01.1900 00:00:01 als Option fuer "Keine Auswahl" angelegt + if ($coodle->new == true) + { + $coodletermin = new coodle(); + + $coodletermin->datum = '1900-01-01'; + $coodletermin->uhrzeit = '00:00:01'; + $coodletermin->coodle_id = $coodle->coodle_id; + + if (!$coodletermin->saveTermin(true)) + $message.= ''.$coodletermin->errormsg.''; + } } else { @@ -175,9 +317,9 @@ elseif(isset($_GET['coodle_id'])) if($coodle->ersteller_uid!=$user) die($p->t('global/keineBerechtigungFuerDieseSeite')); - if($coodle->coodle_status_kurzbz!='neu') + if(($coodle->coodle_status_kurzbz!='neu') && ($coodle->coodle_status_kurzbz!='laufend')) { - // Wenn bereits gestartet, abgeschlosse oder storniert, + // Wenn bereits abgeschlosse oder storniert, // kann nicht mehr bearbeitet werden die($p->t('coodle/umfrageNichtGueltig')); } @@ -193,6 +335,7 @@ else $coodle = new coodle(); $coodle->endedatum=date('d.m.Y',strtotime("+7 day")); $coodle->dauer=60; + $coodle->mailversand=true; } echo ' << '.$p->t('coodle/zurueckZurUebersicht').'
@@ -202,6 +345,8 @@ echo '

'; if($coodle->coodle_id=='') echo $p->t('coodle/neuerEintrag'); +elseif($coodle->coodle_status_kurzbz=='laufend') + echo $p->t('coodle/laufendeUmfrageBearbeiten'); else echo $p->t('coodle/bearbeiten'); echo '

'; @@ -210,27 +355,49 @@ echo ' - - + + + - + + - - + + - - + + + + + + + + + + + + + + + + + + - +
'.$p->t('coodle/titel').''.$p->t('coodle/titel').' + + coodle_status_kurzbz=='laufend'?'disabled':'').'/>'.$p->t('coodle/titelInfotext').'
'.$p->t('coodle/beschreibung').'

'.$p->t('coodle/beschreibungInfotext').'
'.$p->t('coodle/dauer').' - + '.$p->t('coodle/dauer').' + + coodle_status_kurzbz=='laufend'?'disabled':'').'/> '.$p->t('coodle/dauerminuten').' '.$p->t('coodle/dauerInfotext').'
'.$p->t('coodle/endedatum').''.$p->t('coodle/endedatum').''.$p->t('coodle/endeInfotext').'
'.$p->t('coodle/mailversand').'mailversand=='t'?'checked':'').'/>'.$p->t('coodle/infotextMailversand').'
'.$p->t('coodle/teilnehmerAnonym').'teilnehmer_anonym=='t'?'checked':'').'/>'.$p->t('coodle/infotextTeilnehmerAnonym').'
'.$p->t('coodle/terminAnonym').'termine_anonym=='t'?'checked':'').'/>'.$p->t('coodle/infotextTerminAnonym').'
'.$message.' '.$message.'
'; @@ -241,8 +408,10 @@ echo ' if($coodle->coodle_id) { - echo '
>> '.$p->t('coodle/weiterZurTerminauswahl').'
'; + echo '
'.$p->t('coodle/weiterZurTerminauswahl').'
'; } +/*elseif ($coodle->coodle_status_kurzbz=='laufend') + echo '
'.$p->t('coodle/umfrageLaeuftBereits').'
';*/ echo ' '; diff --git a/cis/private/coodle/termin.php b/cis/private/coodle/termin.php index bf34b27ef..b29e04cfa 100755 --- a/cis/private/coodle/termin.php +++ b/cis/private/coodle/termin.php @@ -55,7 +55,7 @@ if(!$coodle->load($coodle_id)) } $event_titel = $coodle->titel; -if($coodle->coodle_status_kurzbz == 'storniert' || $coodle->coodle_status_kurzbz == 'abgeschlossen' || $coodle->coodle_status_kurzbz=='laufend') +if($coodle->coodle_status_kurzbz == 'storniert' || $coodle->coodle_status_kurzbz == 'abgeschlossen') { die($p->t('coodle/umfrageNichtGueltig')); } @@ -67,7 +67,7 @@ if(isset($_POST['action']) && $_POST['action']=='start') echo ' - + @@ -132,15 +132,22 @@ if(isset($_POST['action']) && $_POST['action']=='start') $html=$anrede.'!

Sie wurden zu einer Terminumfrage zum Thema "'.$db->convert_html_chars($coodle->titel).'" eingeladen.
- Bitte folgen Sie dem Link um Ihre Terminwünsche bekannt zu geben: + Bitte folgen Sie dem Link, um Ihre Terminwünsche bekannt zu geben: Link zur Terminumfrage -

'.nl2br($sign); +

+ Beschreibung:

+ '.$coodle->beschreibung.'

+ '.nl2br($sign); $text=$anrede."!\n\nSie wurden zu einer Terminumfrage zum Thema \"".$db->convert_html_chars($coodle->titel)."\" eingeladen.\n - Bitte folgen Sie dem Link um Ihre Terminwünsche bekannt zu geben:\n - $link\n\n$sign"; + Bitte folgen Sie dem Link, um Ihre Terminwünsche bekannt zu geben:\n + $link\n\n + Beschreibung:\n\n + ".strip_tags($coodle->beschreibung)." + \n\n + $sign"; - $mail = new mail($email, $von,'Termineinladung - '.$coodle->titel, $text); + $mail = new mail($email, $von,'Terminumfrage - '.$coodle->titel, $text); $mail->setHTMLContent($html); if($mail->send()) { @@ -199,9 +206,11 @@ echo ' } #external-events h4 { - font-size: 16px; + font-size: 17px; margin-top: 0; - padding-top: 1em; + padding-top: 10px; + padding-bottom: 10px; + text-decoration: none; } .external-event { /* try to mimick the look of a real event */ @@ -211,6 +220,8 @@ echo ' color: #fff; font-size: .85em; cursor: pointer; + border-radius: 2px; + box-shadow: 3px 3px 3px #bbb; } #external-events p { @@ -239,9 +250,11 @@ echo ' } #ressourcen h4 { - font-size: 16px; + font-size: 17px; margin-top: 0; - padding-top: 1em; + padding-top: 10px; + padding-bottom: 10px; + text-decoration: none; } .ressourcen { @@ -285,9 +298,11 @@ echo ' #fertig h4 { - font-size: 16px; + font-size: 17px; margin-top: 0; - padding-top: 1em; + padding-top: 10px; + padding-bottom: 10px; + text-decoration: none; } #fertig p @@ -296,7 +311,7 @@ echo ' font-size: 11px; color: #666; } - + - - '; echo' '.$p->t('coodle/uebersicht').' - - '; + + '; $method = isset($_GET['method'])?$_GET['method']:''; // coodle umfrage löschen if($method=='delete') { - $coodle= new coodle(); - $coodle_id = isset($_GET['coodle_id'])?$_GET['coodle_id']:''; - - if($coodle->load($coodle_id)) + $coodle= new coodle(); + $coodle_id = isset($_GET['coodle_id'])?$_GET['coodle_id']:''; + + if($coodle->load($coodle_id)) { - // löschen nur von eigenen Umfragen möglich + // löschen nur von eigenen Umfragen möglich if($coodle->ersteller_uid!=$uid) $message = ''.$p->t('global/keineBerechtigung').''; - else - { - if($coodle->delete($coodle_id)) - $message ='Erfolgreich storniert!'; - else - $message =''.$p->t('coodle/umfrageKonnteNichtGeloeschtWerden').''; - } + else + { + if($coodle->delete($coodle_id)) + $message ='Erfolgreich storniert!'; + else + $message =''.$p->t('coodle/umfrageKonnteNichtGeloeschtWerden').''; + } } - else - $message = ''.$p->t('coodle/umfrageNichtGeladen').''; + else + $message = ''.$p->t('coodle/umfrageNichtGeladen').''; } -echo'

'.$p->t('coodle/uebersicht').'

-
'; +echo'

'.$p->t('coodle/uebersicht').'

'; + +echo $p->t('coodle/einfuehrungstext').'

'; if(check_lektor($uid)) { echo ' -
+

'; } echo ' -
'.$message.'
-
-
-

'.$p->t('coodle/laufendeUmfragen').'

- - - - - - - - - - '; +
'.$message.'
+
+
+

'.$p->t('coodle/laufendeUmfragen').'

+
'.$p->t('coodle/titel').''.$p->t('coodle/letzterStatus').''.$p->t('coodle/ersteller').''.$p->t('coodle/endedatum').''.$p->t('coodle/aktion').'
+ + + + + + + + + '; $beendeteUmfragen=''; $datum = new datum(); @@ -144,50 +151,52 @@ foreach($coodle->result as $c) $benutzer = new benutzer(); $benutzer->load($c->ersteller_uid); $ersteller = $benutzer->nachname.' '.$benutzer->vorname; - $row = ' - - - - - + + + + + - '; - - if($c->coodle_status_kurzbz=='laufend' || $c->coodle_status_kurzbz=='neu') + $row.=' + + '; + + if($c->coodle_status_kurzbz=='laufend' || $c->coodle_status_kurzbz=='neu') echo $row; else $beendeteUmfragen.=$row; @@ -217,17 +226,17 @@ if($beendeteUmfragen!='')

'.$p->t('coodle/beendeteUmfragen').'

'.$p->t('coodle/titel').''.$p->t('coodle/letzterStatus').''.$p->t('coodle/ersteller').''.$p->t('coodle/endedatum').''.$p->t('coodle/aktion').'
'.$coodle->convert_html_chars($c->titel).''.$coodle->convert_html_chars($coodle->status_arr[$c->coodle_status_kurzbz]).''.$coodle->convert_html_chars($ersteller).''.$coodle->convert_html_chars($datum->formatDatum($c->endedatum, 'd.m.Y')).' - '; - - // Bearbeiten Button - if(($c->coodle_status_kurzbz=='neu') && $uid==$c->ersteller_uid) - { - $row.= ' -   - '; - } - else + $row = '
'.$coodle->convert_html_chars($c->titel).''.$coodle->convert_html_chars($coodle->status_arr[$c->coodle_status_kurzbz]).''.$coodle->convert_html_chars($ersteller).''.$coodle->convert_html_chars($datum->formatDatum($c->endedatum, 'd.m.Y')).' + '; + + // Bearbeiten Button + if((($c->coodle_status_kurzbz=='neu')||($c->coodle_status_kurzbz=='laufend')) && $uid==$c->ersteller_uid) { if($c->coodle_status_kurzbz=='laufend') $title=$p->t('coodle/umfrageWurdeBereitsGestartet'); else - $title=$p->t('global/keineBerechtigung'); + $title=$p->t('coodle/bearbeiten'); + + $row.= '  + + '; + } + else + { + $title=$p->t('global/keineBerechtigung'); $row.= ' '; - } - - // Storno Button - if($uid==$c->ersteller_uid && $c->coodle_status_kurzbz!='storniert' && $c->coodle_status_kurzbz!='abgeschlossen') - { - $row.= ' -   - '; - } - else - { - $row.='  '; - } - - // Umfrage Button - if($c->coodle_status_kurzbz=='laufend' || $c->coodle_status_kurzbz=='abgeschlossen') - { - $row.= ' -   + } + + // Storno Button + if($uid==$c->ersteller_uid && $c->coodle_status_kurzbz!='storniert' && $c->coodle_status_kurzbz!='abgeschlossen') + { + $row.= '  + '; - } + } + else + { + $row.='  '; + } + + // Umfrage Button + if($c->coodle_status_kurzbz=='laufend' || $c->coodle_status_kurzbz=='abgeschlossen') + { + $row.= '  + + '; + } else { if($c->coodle_status_kurzbz=='neu') @@ -198,11 +207,11 @@ foreach($coodle->result as $c) $row.='   '; } - $row.=' -
- - - - - - - - - + + + + + + + + + - '.$beendeteUmfragen.' + '.$beendeteUmfragen.'
'.$p->t('coodle/titel').''.$p->t('coodle/letzterStatus').''.$p->t('coodle/ersteller').''.$p->t('coodle/endedatum').''.$p->t('coodle/aktion').'
'.$p->t('coodle/titel').''.$p->t('coodle/letzterStatus').''.$p->t('coodle/ersteller').''.$p->t('coodle/endedatum').''.$p->t('coodle/aktion').'
'; diff --git a/cis/private/freifaecher/anmeldungsuebersicht.php b/cis/private/freifaecher/anmeldungsuebersicht.php index f54416bcd..5b6720ac1 100644 --- a/cis/private/freifaecher/anmeldungsuebersicht.php +++ b/cis/private/freifaecher/anmeldungsuebersicht.php @@ -20,11 +20,9 @@ * Rudolf Hangl < rudolf.hangl@technikum-wien.at > * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > */ - /* * Ermoeglicht das Anmelden zu Freifaechern */ - require_once('../../../config/cis.config.inc.php'); require_once('../../../include/basis_db.class.php'); require_once('../../../include/functions.inc.php'); @@ -33,20 +31,19 @@ require_once('../../../include/lehrveranstaltung.class.php'); require_once('../../../include/phrasen.class.php'); if (!$db = new basis_db()) - $db=false; + $db = false; $sprache = getSprache(); $p = new phrasen($sprache); $user = get_uid(); ?> - - + + - - - <?php echo $p->t('freifach/freifaecherAnmeldungsuebersicht');?> + + + <?php echo $p->t('freifach/freifaecherAnmeldungsuebersicht');?> -

t('freifach/freifaecherAnmeldungsuebersicht');?>

t('freifach/bitteFreifachAuswaehlen');?> @@ -59,21 +56,21 @@ $stsem_obj = new studiensemester(); $stsem = $stsem_obj->getaktorNext(); $lv_obj = new lehrveranstaltung(); -if($lv_obj->load_lva('0',null,null,true,null,'bezeichnung')) +if ($lv_obj->load_lva('0',null,null,true,null,'bezeichnung')) { - echo "
"; - echo ""; + if ($lvid == '') + echo "\n"; + foreach ($lv_obj->lehrveranstaltungen as $row) + { + if ($lvid == $row->lehrveranstaltung_id) + echo "\n"; + else + echo "\n"; } - echo "\n"; - echo "\n
"; + echo "\n"; + echo "\n"; } else { @@ -81,9 +78,8 @@ else } //Wenn das Formular abgeschickt wurde -if($lvid!='') +if ($lvid != '') { - $qry = "SELECT vorname, nachname, @@ -96,53 +92,49 @@ if($lvid!='') (public.tbl_student LEFT JOIN public.tbl_studiengang using (studiengang_kz)) ON (student_uid = uid) WHERE uid IN (SELECT uid FROM campus.tbl_benutzerlvstudiensemester - WHERE lehrveranstaltung_id='".addslashes($lvid)."' AND studiensemester_kurzbz='".addslashes($stsem)."') + WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND studiensemester_kurzbz=".$db->db_add_param($stsem).") ORDER BY nachname, vorname"; - - if($result=$db->db_query($qry)) + + if ($result = $db->db_query($qry)) { $ff = array(); $content=''; - - //$mailto= " ".$p->t('global/nachname')."".$p->t('global/vorname')."".$p->t('global/mail')."".$p->t('global/studiengang')."".$p->t('global/semester').""; $i=0; - while($row=$db->db_fetch_object($result)) + while ($row = $db->db_fetch_object($result)) { $i++; $content .= "\n$i$row->nachname$row->vorname$row->uid@technikum-wien.at$row->kurzbzlang$row->semester"; - - if(isset($mailto[$mailto_idx]) && mb_strlen($mailto[$mailto_idx])>450) + + if (isset($mailto[$mailto_idx]) && mb_strlen($mailto[$mailto_idx])>450) $mailto_idx++; - - if(isset($mailto[$mailto_idx])) + + if (isset($mailto[$mailto_idx])) $mailto[$mailto_idx]=$mailto[$mailto_idx].','; else $mailto[$mailto_idx]=''; $mailto[$mailto_idx]=$mailto[$mailto_idx].$row->uid.'@'.DOMAIN; } - //$mailto.="'>".$p->t('freifach/MailAnAlleSenden').""; - $content .= ""; - - if($i==0) + + if ($i == 0) { echo "".$p->t('freifach/keineAnmeldungenFuerDiesesFreifach').""; } else { - //echo "Anzahl der Anmeldungen: ".$i; echo $content; echo "
"; echo " + - + .infotext + { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + padding: 6px; + } + .abgeschlossen + { + width: 70%; + color: #3c763d; + background-color: #dff0d8; + padding: 15px; + border: 1px solid #d6e9c6; + } + << ".$p->t('coodle/zurueckZurUebersicht').""; echo '

'; echo '
'; - + $coodle_help = new coodle(); $coodle_help->load($coodle_id); - + $alt = strtotime($coodle_help->insertamum) ; $differenz = time() - $alt; $differenz = $differenz / 86400; $benutzer = new benutzer(); $benutzer->load($coodle->ersteller_uid); -$ersteller_name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); +//$ersteller_name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); +$ersteller_name = trim($benutzer->vorname.' '.$benutzer->nachname); echo '

'.$coodle->titel.'

'; $erstellt = array($ersteller_name, round($differenz)); echo ''.$p->t('coodle/erstelltVon', $erstellt).'

'; // echo '
Erstellt von '.$coodle->ersteller_uid.' ( vor '.round($differenz).' Tagen)
'; echo $coodle->beschreibung; -echo ' -
-

+echo '
'; + +if($abgeschlossen) +{ + $datum = new datum(); + $coodle_abgeschlossen = new coodle(); + $termin_id = $coodle_abgeschlossen->getTerminAuswahl($coodle_id); + $coodle_abgeschlossen->loadTermin($termin_id); + echo '

'.$p->t('coodle/umfrageAbgeschlossen',array($datum->formatDatum($coodle_abgeschlossen->datum, 'd.m.Y').' '.$coodle_abgeschlossen->uhrzeit)).'
'; +} + +echo '

'; - - $coodle_ressourcen = new coodle(); - $coodle_ressourcen->getRessourcen($coodle_id); - - // alle termine der coodle umfrage holen - $coodle_termine = new coodle(); - $coodle_termine->getTermine($coodle_id); - - $datum = new datum(); - - echo "
-
+ + $coodle_ressourcen = new coodle(); + $coodle_ressourcen->getRessourcen($coodle_id); + + // alle termine der coodle umfrage holen + $coodle_termine = new coodle(); + $coodle_termine->getTermine($coodle_id); - - "; - foreach($coodle_termine->result as $termin) - { - $class_auswahl='normal'; - $time = strtotime($termin->uhrzeit); - $coodle_auswahl = new coodle(); - - // Falls es schon eine Auswahl gibt - hervorheben - if($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) - $class_auswahl = 'auswahl'; - - echo ""; - } - if($ersteller) - echo ''; - echo ""; - - // ressourcen durchlaufen - foreach($coodle_ressourcen->result as $ressource) - { - $name = ''; - $class ='normal'; - $benutzer = new benutzer(); - - // wenn uid gesetzt ist nimm uid - if($ressource->uid != '') - { - $benutzer->load($ressource->uid); - $name =($benutzer->titelpre!='')?$benutzer->titelpre.' ':''; - $name.= $benutzer->vorname.' '; - $name.=$benutzer->nachname.' '; - $name.=$benutzer->titelpost; - } + $datum = new datum(); + $datum_colspan = ''; + $mailadressen = '?subject=Coodle%20Umfrage%20'.htmlspecialchars($coodle->titel).'&bcc='; - // wenn uid nicht gesetzt ist nimm zugangscode - if($ressource->zugangscode !='' && $ressource->uid =='') - $name = $ressource->name; - - if($ressource->ort_kurzbz != '') - continue; - - // eigene Reihe farbig hervorheben - if(isset($_GET['zugangscode']) && $_GET['zugangscode'] == $ressource->zugangscode) - $class ='owner'; - if(!isset($_GET['zugangscode']) && $ressource->uid == $uid) - $class = 'owner'; - - echo ""; - // termine zu ressourcen anzeigen - foreach($coodle_termine->result as $termin) - { - $checked =''; - $disabled=''; - if($coodle_termine->checkTermin($termin->coodle_termin_id, $ressource->coodle_ressource_id)) - $checked = 'checked'; - - $coodle_help = new coodle(); - if(isset($_GET['zugangscode'])) - { - $coodle_help->getRessourceFromUser($coodle_id, '', $_GET['zugangscode']); - if($ressource->coodle_ressource_id != $coodle_help->coodle_ressource_id) - $disabled = 'disabled'; - }else - { - $coodle_help->getRessourceFromUser($coodle_id, $uid); - if($ressource->coodle_ressource_id != $coodle_help->coodle_ressource_id) - $disabled = 'disabled'; - } - - if($abgeschlossen) - $disabled='disabled'; - - echo ""; - } - if($ersteller) - echo ''; - echo ''; - } - - $disabled = $abgeschlossen?'disabled':''; - - if($ersteller) - { - // buttons für auswahl des endgültigen termins - echo ''; - foreach($coodle_termine->result as $termin) - { - $checked=($termin->auswahl)?'checked':''; - echo ''; - } - echo ''; - echo ""; - } + echo "
+ - - echo " -
-
".$datum->formatDatum($termin->datum, 'd.m.Y').'
'.date('H:i',$time)."
'.$p->t('coodle/keineAuswahl').'
".$name."
'.$p->t('coodle/auswahlEndtermin').'
 
"; - + + "; + // Für Colspan bei Datum + $max_colspan = array(); + foreach($coodle_termine->result as $termin) + { + $max_colspan[] .= $termin->datum; + } + + foreach($coodle_termine->result as $termin) + { + $class_auswahl = 'normal'; + $time = strtotime($termin->uhrzeit); + $coodle_auswahl = new coodle(); + + // Falls es schon eine Auswahl gibt - hervorheben + if($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) + $class_auswahl = 'auswahl'; + + // Colspan für Datum berechnen + $count = array_count_values($max_colspan); + $colspan = $count[$termin->datum]; + + if($datum_colspan != $termin->datum && $termin->datum != '1900-01-01') + echo ""; + + $datum_colspan = $termin->datum; + } + if($ersteller) + echo ''; + echo ""; + + foreach($coodle_termine->result as $termin) + { + $class_auswahl='normal_uhrzeit'; + $time = strtotime($termin->uhrzeit); + $coodle_auswahl = new coodle(); + + // Falls es schon eine Auswahl gibt - hervorheben + if($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) + $class_auswahl = 'auswahl_uhrzeit'; + + if($termin->datum != '1900-01-01') + echo ""; + else + echo ''; + } + echo ""; + + foreach($coodle_ressourcen->result as $ressource) + { + $name = ''; + $benutzer = new benutzer(); + + // wenn uid gesetzt ist nimm uid + if($ressource->uid != '') + { + $benutzer->load($ressource->uid); + //$name .= ($benutzer->titelpre!='')?$benutzer->titelpre.' ':''; + $name .= $benutzer->vorname.' '; + $name .= $benutzer->nachname.' '; + //$name .= $benutzer->titelpost; + + $mailadressen .= $ressource->uid.'@'.DOMAIN.';'; + + $ressource->anzeigename = $name; + $ressource->vorname = $benutzer->vorname; + $ressource->nachname = $benutzer->nachname; + } + + // wenn uid nicht gesetzt ist nimm zugangscode + if($ressource->zugangscode != '' && $ressource->uid == '') + { + $name = $ressource->name; + $ressource->anzeigename = $name; + $ressource->vorname = $name; + $ressource->nachname = $name; + + $mailadressen .= ';'.$ressource->email; + } + + + } + + //Sortiert die Ressourcen alphabetisch nach anzeigename + function sortRessourcen($a, $b) + { + return strcmp($a->nachname.''.$a->vorname, $b->nachname.''.$b->vorname); + } + usort($coodle_ressourcen->result, "sortRessourcen"); + + $owner = false; + // ressourcen durchlaufen + foreach($coodle_ressourcen->result as $ressource) + { + $owner = false; + // Ist der User ident mit einer Ressource + if(isset($_GET['zugangscode']) && $_GET['zugangscode'] == $ressource->zugangscode) + $owner = true; + if(!isset($_GET['zugangscode']) && $ressource->uid == $uid) + $owner = true; + + if ($coodle_help->teilnehmer_anonym && !$owner) + continue; + else + { + + // Ort-Ressourcen ueberspringen + if($ressource->ort_kurzbz != '') + continue; + + $class = 'normal'; + // eigene Reihe farbig hervorheben + if ($owner) + $class = 'owner'; + // Bei anonymen TeilnehmerInnen entfaellt das Hervorheben + if ($coodle_help->teilnehmer_anonym) + $class = 'normal'; + + echo ""; + + $termin_datum = ''; + $disabled = false; + $checked = false; + + $coodle_ressource = new coodle(); + if (isset($_GET['zugangscode'])) + { + $coodle_ressource->getRessourceFromUser($coodle_id, '', $_GET['zugangscode']); + if($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) + $disabled = true; + } + else + { + $coodle_ressource->getRessourceFromUser($coodle_id, $uid); + if($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) + $disabled = true; + } + + if($abgeschlossen) + $disabled = true; + + // termine zu ressourcen anzeigen + foreach($coodle_termine->result as $termin) + { + $checked = false; + $style = ''; + if($coodle_termine->checkTermin($termin->coodle_termin_id, $ressource->coodle_ressource_id)) + $checked = true; + + if ($termin_datum != '' && $termin_datum != $termin->datum) + $style = 'style="border-left: 1px solid #DCDDDF;"'; + + if ($coodle_help->termine_anonym && !$owner && !$ersteller) + echo ""; + else + { + if ($disabled) + { + if ($checked) + echo ''; + else + echo ''; + } + else + { + // Der 01.01.1900 wird fuer "Keine Auswahl" verwendet. Beim anklicken der Checkbox werden alle anderen Checkboxen deaktiviert + echo ''; + } + } + + $termin_datum = $termin->datum; + } + if($ersteller) + echo ""; + echo ''; + } + } + + $disabled = $abgeschlossen?'disabled':''; + + // Counter fuer Anzahl der Auswahlen pro Termin + $counter_arr = array(); + foreach($coodle_termine->result as $termin) + { + $countTermine = new coodle(); + $countTermine->countTermin($termin->coodle_termin_id); + + $counter_arr[] = $countTermine->anzahl; + } + if ($coodle_help->teilnehmer_anonym) + echo ''; + elseif ($coodle_help->termine_anonym) + echo ''; + + echo ''; + foreach($coodle_termine->result as $termin) + { + $countTermine = new coodle(); + $countTermine->countTermin($termin->coodle_termin_id); + + if ($countTermine->anzahl == max($counter_arr)) + echo ''; + else + echo ''; + } + if($ersteller) + echo ''; + echo ""; + + if($ersteller) + { + // buttons für auswahl des endgültigen termins + echo ''; + foreach($coodle_termine->result as $termin) + { + $checked=($termin->auswahl)?'checked':''; + if ($termin->datum != '1900-01-01') + echo ''; + else + echo ''; + } + echo ''; + echo ""; + } + if($ersteller && $abgeschlossen) + echo ' '; + echo ' + -
".$datum->formatDatum($termin->datum, 'd.m.Y')."
".date('H:i',$time)."'.$p->t('coodle/keinTerminMoeglich').'
".$ressource->anzeigename." + datum == '1900-01-01'?'id="disableCheckboxes"':'').' + name="check_'.$ressource->coodle_ressource_id.'_'.$termin->coodle_termin_id.'"> +
Die TeilnehmerInnen dieser Umfrage sind anonym
Die Terminwahl dieser Umfrage erfolgt anonym
Summe der Einträge'.$countTermine->anzahl.''.$countTermine->anzahl.''.$p->t('coodle/keineAuswahl').'
'.$p->t('coodle/auswahlEndtermin').'
Mail an alle schicken
'; + if($ersteller && $abgeschlossen) echo ''; if($saveOk===true) echo ' '.$p->t('global/erfolgreichgespeichert').''; echo "
- ".$message.'
'.$mailMessage; - if($abgeschlossen) - echo '

'.$p->t('coodle/umfrageAbgeschlossen').''; - - ?> - - +
+
".$message.'
'.$mailMessage; + + ?> +
+ @@ -454,37 +663,49 @@ echo ' * Sendet eine Email an den Ersteller der Umfrage * @param type $ersteller */ -function sendBenachrichtigung($coodle_id) +function sendBenachrichtigung($coodle_id,$teilnehmer_id) { - $coodle_send = new coodle(); - if(!$coodle_send->load($coodle_id)) - { - die("Fehler beim senden aufgetreten"); - } - - $email = ''; - $mitarbeiter = new mitarbeiter(); - $mitarbeiter->load($coodle_send->ersteller_uid); - $person = new person(); - $person->load($mitarbeiter->person_id); - - $name = ''; - $name.= ($person->titelpre != '')?$person->titelpre.' ':''; - $name.= $person->vorname.' '.$person->nachname; - $name.= ($person->titelpost != '')?' '.$person->titelpost:''; - - - if($person->geschlecht == 'w') - $email.= 'Sehr geehrte Frau '.$name."!

"; - else - $email.="Sehr geehrter Herr ".$name."!

"; - - $email.="Ein Termin Ihrer Coodle-Umfrage wurde ausgewählt
Link zu Ihrer Coodle Übersicht

Mit freundlichen Grüßen

- Fachhochschule Technikum Wien
- Höchstädtplatz 6
- 1200 Wien"; - - $mail = new mail($coodle_send->ersteller_uid.'@'.DOMAIN, 'no-reply', 'Coodle Umfrage', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'); + $coodle_send = new coodle(); + if(!$coodle_send->load($coodle_id)) + { + die("Fehler beim senden aufgetreten"); + } + + $mitarbeiter = new mitarbeiter(); + $person = new person(); + $teilnehmer = new coodle(); + + $teilnehmer->getRessourceFromId($teilnehmer_id); + if ($teilnehmer->zugangscode!='') + $tn = $teilnehmer->name; + else + { + $mitarbeiter->load($teilnehmer->uid); + $person->load($mitarbeiter->person_id); + $tn = $person->vorname." ".$person->nachname; + } + $mitarbeiter->load($coodle_send->ersteller_uid); + $person->load($mitarbeiter->person_id); + + $email = ''; + + $name = ''; + $name.= ($person->titelpre != '')?$person->titelpre.' ':''; + $name.= $person->vorname.' '.$person->nachname; + $name.= ($person->titelpost != '')?' '.$person->titelpost:''; + + + if($person->geschlecht == 'w') + $email.= 'Sehr geehrte Frau '.$name."!

"; + else + $email.="Sehr geehrter Herr ".$name."!

"; + + $email.= $tn." hat einen Termin Ihrer Coodle-Umfrage ausgewählt
Link zu Ihrer Coodle Übersicht

Mit freundlichen Grüßen

+ Fachhochschule Technikum Wien
+ Höchstädtplatz 6
+ 1200 Wien"; + + $mail = new mail($coodle_send->ersteller_uid.'@'.DOMAIN, 'no-reply', 'Coodle Umfrage', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'); $mail->setHTMLContent($email); if(!$mail->send()) die("Fehler beim senden des Mails aufgetreten"); @@ -499,64 +720,64 @@ function sendBenachrichtigung($coodle_id) function sendEmail($coodle_id) { global $mailMessage; - global $p; - $coodle_help = new coodle(); - $termin_id = $coodle_help->getTerminAuswahl($coodle_id); - $coodle_help->loadTermin($termin_id); - - $coodle_ressource = new coodle(); - $coodle_ressource->getRessourcen($coodle_id); - $coodle= new coodle(); - $coodle->load($coodle_id); - $ort=''; - $teilnehmer=''; - foreach($coodle_ressource->result as $row) - { - if($row->ort_kurzbz!='') - { - if($ort!='') - $ort.=', '; - $ort.="$row->ort_kurzbz"; - } - else - { - if($row->uid!='') - { - $benutzer = new benutzer(); - $benutzer->load($row->uid); - $name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); - $mail = $row->uid.'@'.DOMAIN; - } - else - { - $mail = $row->email; - $name = $row->name; - } - $coodle_ressource_termin = new coodle(); - $partstat=''; - if($coodle_ressource_termin->checkTermin($termin_id, $row->coodle_ressource_id)) - $partstat='ACCEPTED'; - else - $partstat='TENTATIVE'; - - $teilnehmer.='ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT='.$partstat.';CN='.$name."\n :MAILTO:".$mail."\n"; - } - } - $date = new DateTime($coodle_help->datum.' '.$coodle_help->uhrzeit); - //Datum des Termins ins richtige Format bringen - $dtstart = $date->format('Ymd\THis'); + global $p; + $coodle_help = new coodle(); + $termin_id = $coodle_help->getTerminAuswahl($coodle_id); + $coodle_help->loadTermin($termin_id); + + $coodle_ressource = new coodle(); + $coodle_ressource->getRessourcen($coodle_id); + $coodle= new coodle(); + $coodle->load($coodle_id); + $ort=''; + $teilnehmer=''; + foreach($coodle_ressource->result as $row) + { + if($row->ort_kurzbz!='') + { + if($ort!='') + $ort.=', '; + $ort.="$row->ort_kurzbz"; + } + else + { + if($row->uid!='') + { + $benutzer = new benutzer(); + $benutzer->load($row->uid); + $name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); + $mail = $row->uid.'@'.DOMAIN; + } + else + { + $mail = $row->email; + $name = $row->name; + } + $coodle_ressource_termin = new coodle(); + $partstat=''; + if($coodle_ressource_termin->checkTermin($termin_id, $row->coodle_ressource_id)) + $partstat='ACCEPTED'; + else + $partstat='TENTATIVE'; + + $teilnehmer.='ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT='.$partstat.';CN='.$name."\n :MAILTO:".$mail."\n"; + } + } + $date = new DateTime($coodle_help->datum.' '.$coodle_help->uhrzeit); + //Datum des Termins ins richtige Format bringen + $dtstart = $date->format('Ymd\THis'); - //Ende Datum berechnen - $interval =new DateInterval('PT'.$coodle->dauer.'M'); - $date->add($interval); - $dtend = $date->format('Ymd\THis'); - $date = new DateTime(); - $dtstamp = $date->format('Ymd\THis'); - $benutzer = new benutzer(); - $benutzer->load($coodle->ersteller_uid); - $erstellername = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); - //Ical File erstellen - $ical = "BEGIN:VCALENDAR + //Ende Datum berechnen + $interval =new DateInterval('PT'.$coodle->dauer.'M'); + $date->add($interval); + $dtend = $date->format('Ymd\THis'); + $date = new DateTime(); + $dtstamp = $date->format('Ymd\THis'); + $benutzer = new benutzer(); + $benutzer->load($coodle->ersteller_uid); + $erstellername = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); + //Ical File erstellen + $ical = "BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN VERSION:2.0 METHOD:PUBLISH @@ -594,69 +815,69 @@ CLASS:PUBLIC END:VEVENT END:VCALENDAR"; - if(count($coodle_ressource->result)>0) - { - foreach($coodle_ressource->result as $row) - { - if($row->uid!='') - { - $benutzer = new benutzer(); - if(!$benutzer->load($row->uid)) - { - $mailMessage.="Fehler beim Laden des Benutzers ".$coodle_ressource->convert_html_chars($row->uid); - continue; - } - - if($benutzer->geschlecht=='w') - $anrede = "Sehr geehrte Frau "; - else - $anrede = "Sehr geehrter Herr "; - - $anrede.= $benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost; - - // Interner Teilnehmer - $email = $row->uid.'@'.DOMAIN; - } - elseif($row->email!='') - { - // Externe Teilnehmer - $email = $row->email; - $anrede='Sehr geehrte(r) Herr/Frau '.$row->name; - } - else + if(count($coodle_ressource->result)>0) + { + foreach($coodle_ressource->result as $row) + { + if($row->uid!='') { - // Raueme bekommen kein Mail - continue; - } - $anrede = trim($anrede); - $sign = $p->t('mail/signatur'); + $benutzer = new benutzer(); + if(!$benutzer->load($row->uid)) + { + $mailMessage.="Fehler beim Laden des Benutzers ".$coodle_ressource->convert_html_chars($row->uid); + continue; + } - $datum = new datum(); + if($benutzer->geschlecht=='w') + $anrede = "Sehr geehrte Frau "; + else + $anrede = "Sehr geehrter Herr "; - $html=$anrede.'!

- Die Terminumfrage zum Thema "'.$coodle_ressource->convert_html_chars($coodle->titel).'" ist beendet. -
- Der Termin wurde auf den '.$datum->formatDatum($coodle_help->datum, 'd.m.Y').' '.$coodle_help->uhrzeit.' festgelegt. -

'.nl2br($sign); + $anrede.= $benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost; - $text=$anrede."!\n\nDie Terminumfrage zum Thema \"".$coodle_help->convert_html_chars($coodle->titel).'"\" ist beendet.\n - Der Termin wurde auf den '.$datum->formatDatum($coodle_help->datum, 'd.m.Y').' '.$coodle_help->uhrzeit." festgelegt\n. - \n\n$sign"; + // Interner Teilnehmer + $email = $row->uid.'@'.DOMAIN; + } + elseif($row->email!='') + { + // Externe Teilnehmer + $email = $row->email; + $anrede='Sehr geehrte(r) Herr/Frau '.$row->name; + } + else + { + // Raueme bekommen kein Mail + continue; + } + $anrede = trim($anrede); + $sign = $p->t('mail/signatur'); - $mail = new mail($email, 'no-reply@'.DOMAIN,'Terminbestätigung - '.$coodle->titel, $text); - $mail->setHTMLContent($html); - //ICal Termineinladung hinzufuegen - $mail->addAttachmentPlain($ical, 'text/calendar', 'meeting.ics'); - if($mail->send()) - { - $mailMessage.= $p->t('coodle/mailVersandtAn',array($email))."
"; - } - } - } - else - { - die($p->t('coodle/keineRessourcenVorhanden')); - } + $datum = new datum(); + + $html=$anrede.'!

+ Die Terminumfrage zum Thema "'.$coodle_ressource->convert_html_chars($coodle->titel).'" ist beendet. +
+ Der Termin wurde auf den '.$datum->formatDatum($coodle_help->datum, 'd.m.Y').' '.$coodle_help->uhrzeit.' festgelegt. +

'.nl2br($sign); + + $text=$anrede."!\n\nDie Terminumfrage zum Thema \"".$coodle_help->convert_html_chars($coodle->titel).'"\" ist beendet.\n + Der Termin wurde auf den '.$datum->formatDatum($coodle_help->datum, 'd.m.Y').' '.$coodle_help->uhrzeit." festgelegt\n. + \n\n$sign"; + + $mail = new mail($email, 'no-reply@'.DOMAIN,'Terminbestätigung - '.$coodle->titel, $text); + $mail->setHTMLContent($html); + //ICal Termineinladung hinzufuegen + $mail->addAttachmentPlain($ical, 'text/calendar', 'meeting.ics'); + if($mail->send()) + { + $mailMessage.= $p->t('coodle/mailVersandtAn',array($email))."
"; + } + } + } + else + { + die($p->t('coodle/keineRessourcenVorhanden')); + } } /** diff --git a/cis/public/incoming/incoming.php b/cis/public/incoming/incoming.php index 77c83c5d6..53907be87 100644 --- a/cis/public/incoming/incoming.php +++ b/cis/public/incoming/incoming.php @@ -455,7 +455,7 @@ else if($method=="lehrveranstaltungen") if(!$preincoming->checkLehrveranstaltung($preincoming->preincoming_id, $_GET['id']) && $freieplaetze>0) { - if($preincoming->addLehrveranstaltung($preincoming->preincoming_id, $_GET['id'], date('Y-m-d H:i:s'))) + if($preincoming->addLehrveranstaltung($preincoming->preincoming_id, $_GET['id'], date('Y-m-d H:i:s'), 'Incoming '.$preincoming->preincoming_id)) $message = ''.($p->t('global/erfolgreichgespeichert')).''; else $message = ''.($p->t('global/fehleraufgetreten')).''; diff --git a/cis/testtool/admin/auswertung.php b/cis/testtool/admin/auswertung.php index 2f47370e4..62760478a 100644 --- a/cis/testtool/admin/auswertung.php +++ b/cis/testtool/admin/auswertung.php @@ -166,7 +166,13 @@ if($result = $db->db_query($qry)) $zgvma_arr[$row->zgvmas_code]=$row->zgvmas_kurzbz; // Reihungstests laden -$sql_query="SELECT * FROM public.tbl_reihungstest WHERE date_part('year',datum)=date_part('year',now()) ORDER BY datum,uhrzeit"; +$sql_query = "SELECT * FROM public.tbl_reihungstest WHERE date_part('year',datum)=date_part('year',now()) "; + +// Wenn Reihungstest ID gesetzt ist, diesen Test zusaetzlich laden, um auch jene außerhalbs des Datumszeitraums zu erwischen +if ($reihungstest != '') +$sql_query .= "UNION SELECT * FROM public.tbl_reihungstest WHERE reihungstest_id=".$db->db_add_param($reihungstest, FHC_INTEGER); + +$sql_query .= " ORDER BY datum,uhrzeit"; if(!($result=$db->db_query($sql_query))) die($db->db_last_error()); diff --git a/cms/news.php b/cms/news.php index 651262d85..1c6905299 100755 --- a/cms/news.php +++ b/cms/news.php @@ -331,6 +331,7 @@ function getStgContent($studiengang_kz, $semester, $sprache) $xml.=''; $xml.='titelpre.' '.$ma->vorname.' '.$ma->nachname.' '.$ma->titelpost.']]>'; + $xml.='bezeichnung.']]>'; $alias = new benutzer(); $alias->load($ma->uid); if($alias->alias!='') diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php old mode 100644 new mode 100755 index 648b1a379..48a2c091b --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -212,6 +212,14 @@ define('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN',true); //User, welcher für das Anlegen von Anrechnungen bei der Prüfungsanmeldung verwendet wird define('CIS_PRUEFUNGSANMELDUNG_USER','p.pruefungsanmeldung'); +// Anmeldefristen für Prüfungen in Tagen; +// Wenn nicht definiert: 3 +//define('CIS_PRUEFUNGSANMELDUNG_FRIST',3); + +// Mindestvorlaufzeit beim Anlegen von Prüfungen in Tagen +// Wenn nicht definiert: 14 +//define('CIS_PRUEFUNGSTERMIN_FRIST',14); + // Soll für die Prüfungsanmeldungen eine Anrechnung erstellt werden define('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG', true); @@ -224,6 +232,6 @@ define('CIS_MEINELV_ANZAHL_SEMESTER_PAST', 3); //Gibt an, welche Buchungstypen bei der Überprüfung auf Einzahlung berücksichtigt werden define('CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN', serialize(array("Studiengebuehr"))); -//Gibt an bei welcher Länge die LV-Bezeichnungen im Menü abgeschnitten werden. Default: 21 +//Gibt an bei welcher Länge die LV-Bezeichnungen im Menü abgeschnitten werden. Default: 21 define('CIS_LVMENUE_CUTLENGTH', 21); ?> diff --git a/content/fas.xul.php b/content/fas.xul.php index 84b34a11d..6765359c5 100644 --- a/content/fas.xul.php +++ b/content/fas.xul.php @@ -95,6 +95,7 @@ foreach($addon_obj->result as $addon) + @@ -266,6 +267,14 @@ foreach($addon_obj->result as $addon) checkbox ="true" checked ="variable->kontofilterstg;?>" /> + diff --git a/content/fasoverlay.js.php b/content/fasoverlay.js.php index 6fbfb0efa..345ae6afe 100644 --- a/content/fasoverlay.js.php +++ b/content/fasoverlay.js.php @@ -2047,3 +2047,71 @@ function OrganisationseinheitTreeRefresh() oe_datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); tree.database.AddDataSource(oe_datasource); } + +// **** +// * Oeffnet ein Fenster zum Aendern eines Variablenwertes +// **** +function variableChangeValue(variable) +{ + var variablevalue = getvariable(variable); + + if(variablevalue = prompt('Bitte geben Sie den neuen Wert fuer '+variable+' ein', variablevalue)) + { + variableChange(variable, '', variablevalue); + } +} + +// **** +// * Sendet einen Request zum Aendern einer Variable +// **** +function variableChange(variable, id, wert) +{ + if(id!=null) + item = document.getElementById(id); + + if(typeof(wert)==='undefined') + { + if(item.getAttribute('checked')=='true') + checked='true'; + else + checked='false'; + } + else + checked=wert; + + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + // Request absetzen + + var url = 'content/fasDBDML.php'; + + var req = new phpRequest(url,'',''); + + req.add('type', 'variablechange'); + req.add('name', variable); + req.add('wert', checked); + + var response = req.executePOST(); + + var val = new ParseReturnValue(response) + + if (!val.dbdml_return) + { + if(val.dbdml_errormsg=='') + alert(response) + else + alert(val.dbdml_errormsg) + } + else + { + if(variable=='ignore_kollision') + updateignorekollision(); + if(variable=='db_stpl_table') + { + document.getElementById("statusbarpanel-db_table").label = wert; + updatedbstpltable(); + } + //Statusbar setzen + document.getElementById("statusbarpanel-text").label = "Variable erfolgreich geaendert"; + } +} diff --git a/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php b/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php index 85c4bfd61..4f9951d57 100644 --- a/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php +++ b/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php @@ -66,63 +66,63 @@ echo "