mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-21 22:19:27 +00:00
enabled sending messages with person ids as receivers, person data can be retrieved by uid, link in infocenter details to send message
This commit is contained in:
@@ -26,6 +26,8 @@ class Messages extends VileSci_Controller
|
||||
public function write($sender_id, $msg_id = null, $receiver_id = null)
|
||||
{
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
$person_id = $this->input->post('person_id');
|
||||
|
||||
$msg = null;
|
||||
|
||||
// Get message data if possible
|
||||
@@ -42,30 +44,15 @@ class Messages extends VileSci_Controller
|
||||
}
|
||||
}
|
||||
|
||||
$variablesArray = array();
|
||||
$msgVarsData = array();
|
||||
|
||||
// Get variables
|
||||
$this->load->model('system/Message_model', 'MessageModel');
|
||||
$msgVarsDataByPrestudentId = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
|
||||
if ($msgVarsDataByPrestudentId->error)
|
||||
{
|
||||
show_error($msgVarsDataByPrestudentId->retval);
|
||||
}
|
||||
|
||||
if (!hasData($variables = $this->MessageModel->getMessageVars()))
|
||||
{
|
||||
unset($variables);
|
||||
}
|
||||
else
|
||||
{
|
||||
$variablesArray = array();
|
||||
// Skip person_id and prestudent_id
|
||||
for($i = 2; $i < count($variables->retval); $i++)
|
||||
{
|
||||
$variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
|
||||
}
|
||||
}
|
||||
|
||||
array_shift($variables->retval); // Remove person_id
|
||||
array_shift($variables->retval); // Remove prestudent_id
|
||||
if($prestudent_id !== null)
|
||||
$this->getPrestudentMsgData($prestudent_id, $variablesArray, $msgVarsData);
|
||||
elseif($person_id !== null)
|
||||
$this->getPersonMsgData($person_id, $variablesArray, $msgVarsData);
|
||||
|
||||
// Organisation units used to get the templates
|
||||
$oe_kurzbz = array(); // A person can have more organisation units
|
||||
@@ -89,7 +76,7 @@ class Messages extends VileSci_Controller
|
||||
|
||||
$data = array (
|
||||
'sender_id' => $sender_id,
|
||||
'receivers' => $msgVarsDataByPrestudentId->retval,
|
||||
'receivers' => $msgVarsData->retval,
|
||||
'message' => $msg,
|
||||
'variables' => $variablesArray,
|
||||
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
|
||||
@@ -99,6 +86,56 @@ class Messages extends VileSci_Controller
|
||||
$v = $this->load->view('system/messageWrite', $data);
|
||||
}
|
||||
|
||||
private function getPrestudentMsgData($prestudent_id, &$variablesArray, &$msgVarsData)
|
||||
{
|
||||
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
|
||||
if ($msgVarsData->error)
|
||||
{
|
||||
show_error($msgVarsData->retval);
|
||||
}
|
||||
|
||||
if (!hasData($variables = $this->MessageModel->getMessageVars()))
|
||||
{
|
||||
unset($variables);
|
||||
}
|
||||
else
|
||||
{
|
||||
$variablesArray = array();
|
||||
// Skip person_id and prestudent_id
|
||||
for($i = 2; $i < count($variables->retval); $i++)
|
||||
{
|
||||
$variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
|
||||
}
|
||||
}
|
||||
|
||||
array_shift($variables->retval); // Remove person_id
|
||||
array_shift($variables->retval); // Remove prestudent_id
|
||||
}
|
||||
|
||||
private function getPersonMsgData($person_id, &$variablesArray, &$msgVarsData)
|
||||
{
|
||||
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
|
||||
if ($msgVarsData->error)
|
||||
{
|
||||
show_error($msgVarsData->retval);
|
||||
}
|
||||
|
||||
if (!hasData($variables = $this->MessageModel->getMessageVarsPerson()))
|
||||
{
|
||||
unset($variables);
|
||||
}
|
||||
else
|
||||
{
|
||||
$variablesArray = array();
|
||||
// Skip person_id
|
||||
for($i = 1; $i < count($variables->retval); $i++)
|
||||
{
|
||||
$variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
|
||||
}
|
||||
array_shift($variables->retval); // Remove person_id
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* send
|
||||
*/
|
||||
@@ -109,6 +146,7 @@ class Messages extends VileSci_Controller
|
||||
$subject = $this->input->post('subject');
|
||||
$body = $this->input->post('body');
|
||||
$prestudents = $this->input->post('prestudents');
|
||||
$persons = $this->input->post('persons');
|
||||
$relationmessage_id = $this->input->post('relationmessage_id');
|
||||
|
||||
if (!isset($relationmessage_id) || $relationmessage_id == '')
|
||||
@@ -116,15 +154,20 @@ class Messages extends VileSci_Controller
|
||||
$relationmessage_id = null;
|
||||
}
|
||||
|
||||
//
|
||||
$data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
|
||||
// get message data of prestudents or persons
|
||||
$prestudentsData = array();
|
||||
if($prestudents !== null)
|
||||
{
|
||||
$data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
|
||||
//
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
|
||||
}
|
||||
else
|
||||
$data = $this->MessageModel->getMsgVarsDataByPersonId($persons);
|
||||
|
||||
//
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
|
||||
|
||||
//
|
||||
if (hasData($data) && hasData($prestudentsData))
|
||||
// send message(s)
|
||||
if (hasData($data))
|
||||
{
|
||||
for ($i = 0; $i < count($data->retval); $i++)
|
||||
{
|
||||
@@ -138,12 +181,15 @@ class Messages extends VileSci_Controller
|
||||
|
||||
$parsedText = $this->messagelib->parseMessageText($body, $dataArray);
|
||||
|
||||
$oe_kurzbz = '';
|
||||
for ($p = 0; $p < count($prestudentsData->retval); $p++)
|
||||
$oe_kurzbz = null;
|
||||
if(hasData($prestudentsData))
|
||||
{
|
||||
if ($prestudentsData->retval[$p]->prestudent_id == $data->retval[$i]->prestudent_id)
|
||||
for ($p = 0; $p < count($prestudentsData->retval); $p++)
|
||||
{
|
||||
$oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz;
|
||||
if ($prestudentsData->retval[$p]->prestudent_id == $data->retval[$i]->prestudent_id)
|
||||
{
|
||||
$oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -474,7 +474,7 @@ class InfoCenter extends VileSci_Controller
|
||||
|
||||
if (isError($dokumente_nachgereicht))
|
||||
{
|
||||
show_error($dokumente->retval);
|
||||
show_error($dokumente_nachgereicht->retval);
|
||||
}
|
||||
|
||||
$logs = $this->personloglib->getLogs($person_id);
|
||||
@@ -486,12 +486,22 @@ class InfoCenter extends VileSci_Controller
|
||||
show_error($notizen->retval);
|
||||
}
|
||||
|
||||
$user_person = $this->PersonModel->getByUid($this->uid);
|
||||
|
||||
if (isError($user_person))
|
||||
{
|
||||
show_error($user_person->retval);
|
||||
}
|
||||
|
||||
$messagelink = base_url('/index.ci.php/system/Messages/write/'.$user_person->retval[0]->person_id);
|
||||
|
||||
$data = array (
|
||||
'stammdaten' => $stammdaten->retval,
|
||||
'dokumente' => $dokumente->retval,
|
||||
'dokumente_nachgereicht' => $dokumente_nachgereicht->retval,
|
||||
'logs' => $logs,
|
||||
'notizen' => $notizen->retval
|
||||
'notizen' => $notizen->retval,
|
||||
'messagelink' => $messagelink
|
||||
);
|
||||
|
||||
return $data;
|
||||
|
||||
@@ -157,13 +157,13 @@ class Person_model extends DB_Model
|
||||
* gets Stammdaten for a person, including contactdata in textform from other tables
|
||||
* nation, kontakt, adresse
|
||||
* @param $person_id
|
||||
* @return array
|
||||
* @return array, null when no person found
|
||||
*/
|
||||
public function getPersonStammdaten($person_id)
|
||||
{
|
||||
$this->addSelect('tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
|
||||
$this->addJoin('bis.tbl_nation s', 'tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT');
|
||||
$this->addJoin('bis.tbl_nation g', 'tbl_person.geburtsnation = g.nation_code', 'LEFT');
|
||||
$this->addSelect('public.tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
|
||||
$this->addJoin('bis.tbl_nation s', 'public.tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT');
|
||||
$this->addJoin('bis.tbl_nation g', 'public.tbl_person.geburtsnation = g.nation_code', 'LEFT');
|
||||
|
||||
$person = $this->load($person_id);
|
||||
|
||||
@@ -194,4 +194,18 @@ class Person_model extends DB_Model
|
||||
|
||||
return success($stammdaten);
|
||||
}
|
||||
|
||||
/**
|
||||
* gets person data from uid
|
||||
* @param $uid
|
||||
* @return array
|
||||
*/
|
||||
public function getByUid($uid)
|
||||
{
|
||||
$this->addSelect('vorname, nachname, gebdatum, person_id');
|
||||
$this->addJoin('tbl_benutzer', 'person_id');
|
||||
|
||||
return $this->loadWhere(array('uid' => $uid));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -102,6 +102,23 @@ class Message_model extends DB_Model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* getMessageVars for person
|
||||
*/
|
||||
public function getMessageVarsPerson()
|
||||
{
|
||||
$result = $this->db->query('SELECT * FROM public.vw_msg_vars_person WHERE 0 = 1');
|
||||
|
||||
if ($result)
|
||||
{
|
||||
return success($result->list_fields());
|
||||
}
|
||||
else
|
||||
{
|
||||
return error($this->db->error(), FHC_DB_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* getMsgVarsDataByPrestudentId
|
||||
*/
|
||||
@@ -111,4 +128,14 @@ class Message_model extends DB_Model
|
||||
|
||||
return $this->execQuery(sprintf($query, is_array($prestudent_id) ? 'IN' : '='), array($prestudent_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* getMsgVarsDataByPersonId
|
||||
*/
|
||||
public function getMsgVarsDataByPersonId($person_id)
|
||||
{
|
||||
$query = 'SELECT * FROM public.vw_msg_vars_person WHERE person_id %s ?';
|
||||
|
||||
return $this->execQuery(sprintf($query, is_array($person_id) ? 'IN' : '='), array($person_id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ $this->load->view(
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header">Infocenter
|
||||
Details: <?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?></h3>
|
||||
Details: <?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<section>
|
||||
@@ -132,11 +133,26 @@ $this->load->view(
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php if (isset($stammdaten->zugangscode)): ?>
|
||||
Zugang Bewerbung: <a
|
||||
href="<?php echo base_url('addons/bewerbung/cis/registration.php?code='.html_escape($stammdaten->zugangscode)) ?>"
|
||||
target='_blank'><?php echo html_escape($stammdaten->zugangscode) ?></a>
|
||||
<?php endif; ?>
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<form id="sendmsgform" method="post" action="<?php echo $messagelink ?>"
|
||||
target="_blank">
|
||||
<input type="hidden" name="person_id"
|
||||
value="<?php echo $stammdaten->person_id ?>">
|
||||
<a id="sendmsglink" href="javascript:void(0);"><i
|
||||
class="fa fa-envelope"></i> Nachricht senden</a>
|
||||
</form>
|
||||
</div>
|
||||
<?php if (isset($stammdaten->zugangscode)): ?>
|
||||
<div class="col-lg-6 text-right">
|
||||
<a
|
||||
href="<?php echo base_url('addons/bewerbung/cis/registration.php?code='.html_escape($stammdaten->zugangscode)) ?>"
|
||||
target='_blank'><i
|
||||
class="glyphicon glyphicon-new-window"></i> Zugang
|
||||
Bewerbung</a>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div> <!-- ./column -->
|
||||
</div> <!-- ./row -->
|
||||
</div> <!-- ./panel-body -->
|
||||
@@ -727,11 +743,19 @@ $this->load->view(
|
||||
"dateFormat": "dd.mm.yy"
|
||||
});
|
||||
|
||||
//javascript hack - not nice!
|
||||
//javascript bootstrap hack - not nice!
|
||||
$("select").addClass('form-control');
|
||||
$("table").addClass('table-condensed');
|
||||
$("#logtable, #notiztable").addClass('table-hover');
|
||||
|
||||
//add submit event to message send link
|
||||
$("#sendmsglink").click(
|
||||
function()
|
||||
{
|
||||
$("#sendmsgform").submit();
|
||||
}
|
||||
);
|
||||
|
||||
//add click events to "formal geprüft" checkboxes
|
||||
<?php foreach($dokumente as $dokument): ?>
|
||||
|
||||
|
||||
@@ -126,8 +126,9 @@
|
||||
<?php
|
||||
foreach($receivers as $receiver)
|
||||
{
|
||||
$receiverid = isset($receiver->prestudent_id) ? $receiver->prestudent_id : $receiver->person_id;
|
||||
?>
|
||||
<option value="<?php echo $receiver->prestudent_id; ?>"><?php echo $receiver->Nachname . " " . $receiver->Vorname; ?></option>
|
||||
<option value="<?php echo $receiverid; ?>"><?php echo $receiver->Vorname . " " . $receiver->Nachname; ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
@@ -156,7 +157,17 @@
|
||||
for($i = 0; $i < count($receivers); $i++)
|
||||
{
|
||||
$receiver = $receivers[$i];
|
||||
echo '<input type="hidden" name="prestudents[]" value="' . $receiver->prestudent_id . '">' . "\n";
|
||||
if (isset($receiver->prestudent_id))
|
||||
{
|
||||
$receiverid = $receiver->prestudent_id;
|
||||
$fieldname= 'prestudents[]';
|
||||
}
|
||||
else
|
||||
{
|
||||
$receiverid = $receiver->person_id;
|
||||
$fieldname= 'persons[]';
|
||||
}
|
||||
echo '<input type="hidden" name="' . $fieldname . '" value="' . $receiverid . '">' . "\n";
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
@@ -127,6 +127,75 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars LIMIT 1"))
|
||||
else
|
||||
echo '<br>Granted privileges to <strong>vilesci</strong> on public.vw_msg_vars';
|
||||
}
|
||||
|
||||
if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars_person LIMIT 1"))
|
||||
{
|
||||
// CREATE OR REPLACE VIEW public.vw_msg_vars and grants privileges
|
||||
$qry = '
|
||||
CREATE OR REPLACE VIEW public.vw_msg_vars_person AS (
|
||||
SELECT DISTINCT ON(p.person_id) p.person_id,
|
||||
p.nachname AS "Nachname",
|
||||
p.vorname AS "Vorname",
|
||||
p.anrede AS "Anrede",
|
||||
a.strasse AS "Strasse",
|
||||
a.ort AS "Ort",
|
||||
a.plz AS "PLZ",
|
||||
a.gemeinde AS "Gemeinde",
|
||||
a.langtext AS "Nation",
|
||||
ke.kontakt AS "Email",
|
||||
kt.kontakt AS "Telefon"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT person_id,
|
||||
kontakt
|
||||
FROM public.tbl_kontakt
|
||||
WHERE zustellung = TRUE
|
||||
AND kontakttyp = \'email\'
|
||||
ORDER BY kontakt_id DESC
|
||||
) ke USING(person_id)
|
||||
LEFT JOIN (
|
||||
SELECT person_id,
|
||||
kontakt
|
||||
FROM public.tbl_kontakt
|
||||
WHERE zustellung = TRUE
|
||||
AND kontakttyp IN (\'telefon\', \'mobil\')
|
||||
ORDER BY kontakt_id DESC
|
||||
) kt USING(person_id)
|
||||
LEFT JOIN (
|
||||
SELECT person_id,
|
||||
strasse,
|
||||
ort,
|
||||
plz,
|
||||
gemeinde,
|
||||
langtext
|
||||
FROM public.tbl_adresse
|
||||
LEFT JOIN bis.tbl_nation ON(bis.tbl_nation.nation_code = public.tbl_adresse.nation)
|
||||
WHERE public.tbl_adresse.heimatadresse = TRUE
|
||||
ORDER BY adresse_id DESC
|
||||
) a USING(person_id)
|
||||
ORDER BY p.person_id ASC
|
||||
);';
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>public.vw_msg_vars_person: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>public.vw_msg_vars_person view created';
|
||||
|
||||
$qry = 'GRANT SELECT ON TABLE public.vw_msg_vars_person TO web;';
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>public.vw_msg_vars_person: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Granted privileges to <strong>web</strong> on public.vw_msg_vars_person';
|
||||
|
||||
$qry = 'GRANT SELECT ON TABLE public.vw_msg_vars_person TO vilesci;';
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>public.vw_msg_vars_person: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Granted privileges to <strong>vilesci</strong> on public.vw_msg_vars_person';
|
||||
}
|
||||
|
||||
//Spalte anmerkung und rechnungsadresse in tbl_adresse
|
||||
if(!$result = @$db->db_query("SELECT rechnungsadresse FROM public.tbl_adresse LIMIT 1"))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user