From 850777476ee59aa7e8ceb39bfa2fb9138f587817 Mon Sep 17 00:00:00 2001 From: Paminger Date: Thu, 9 Jun 2016 10:00:23 +0200 Subject: [PATCH] Message --- application/config/fhcomplete.php | 12 +-- application/config/migration.php | 3 +- application/config/template.php | 6 +- application/controllers/DBTools.php | 35 ++++++--- application/controllers/system/Message.php | 51 ++++++++++-- application/core/APIv1_Controller.php | 7 +- application/core/FHC_Controller.php | 13 +++- application/core/FHC_Model.php | 8 +- application/migrations/008_message.php | 78 +++++++++++++------ .../Organisationseinheit_model.php | 29 ++++++- application/models/system/Thread_model.php | 14 ---- 11 files changed, 179 insertions(+), 77 deletions(-) delete mode 100644 application/models/system/Thread_model.php diff --git a/application/config/fhcomplete.php b/application/config/fhcomplete.php index daf66411a..cb307908c 100644 --- a/application/config/fhcomplete.php +++ b/application/config/fhcomplete.php @@ -155,8 +155,10 @@ $config['fhc_acl'] = array 'public.tbl_lehrverband' => 'basis/lehrverband', 'public.tbl_log' => 'basis/log', 'public.tbl_mitarbeiter' => 'basis/mitarbeiter', - 'public.tbl_msg_message' => 'basis/msg_message', - 'public.tbl_msg_thread' => 'basis/msg_thread', + 'public.tbl_msg_message' => 'basis/message', + 'public.tbl_msg_recipient' => 'basis/message', + 'public.tbl_msg_status' => 'basis/message', + 'public.tbl_msg_attachment' => 'basis/message', 'public.tbl_notiz' => 'basis/notiz', 'public.tbl_notizzuordnung' => 'basis/notizzuordnung', 'public.tbl_organisationseinheit' => 'basis/organisationseinheit', @@ -228,7 +230,5 @@ $config['fhc_acl'] = array 'wawi.tbl_rechnungstyp' => 'basis/rechnungstyp', 'wawi.tbl_zahlungstyp' => 'basis/zahlungstyp', - 'public.tbl_sprache' => 'admin', - 'public.tbl_msg_thread' => 'admin', - 'public.tbl_msg_message' => 'admin' -); \ No newline at end of file + 'public.tbl_sprache' => 'admin' +); diff --git a/application/config/migration.php b/application/config/migration.php index 33ddfa277..095644a91 100755 --- a/application/config/migration.php +++ b/application/config/migration.php @@ -55,7 +55,8 @@ $config['migration_type'] = 'sequential'; | will migrate up. This must be set. | */ -$config['migration_table'] = 'system.ci_migrations'; +//$config['migration_table'] = 'system.ci_migrations'; // A missing feature or a bug cannot use another schema than public. Bug: tableExists only looks in the public schema. +$config['migration_table'] = 'ci_migrations'; /* |-------------------------------------------------------------------------- diff --git a/application/config/template.php b/application/config/template.php index 5dbf44178..d47a13d4f 100644 --- a/application/config/template.php +++ b/application/config/template.php @@ -10,6 +10,6 @@ | 'cache_ttl' = the time all partials should be cache in seconds, 0 means no global caching */ -$config['parser'] = FALSE; -$config['template'] = 'template'; -$config['cache_ttl'] = 0; \ No newline at end of file +$config['parser'] = TRUE; +$config['template'] = 'templates/vilesci'; +$config['cache_ttl'] = 0; diff --git a/application/controllers/DBTools.php b/application/controllers/DBTools.php index ea0b61e6f..dc3925269 100644 --- a/application/controllers/DBTools.php +++ b/application/controllers/DBTools.php @@ -91,16 +91,16 @@ class DBTools extends FHC_Controller */ public function migrate($version = 'latest') { - if ($this->cli && $this->migration->current() === false) - { - show_error($this->migration->error_string()); - } - elseif ($version != 'latest' && $version != 'current') + echo 'DB-Migration'; + if ($version != 'latest' && $version != 'current') { $this->__failed('Migration version must be either latest or current'); } - - if (!$this->migration->$version()) + elseif ($this->cli && !$this->migration->$version()) + { + show_error($this->migration->error_string()); + } + elseif (!$this->migration->$version()) { $this->__failed(); } @@ -181,6 +181,8 @@ class DBTools extends FHC_Controller $method = 'seed'; $pending = array(); + + foreach ($seeds as $number => $file) { include_once($file); @@ -203,13 +205,24 @@ class DBTools extends FHC_Controller $pending[$number] = array($class, $method); } + // Now just run the necessary seeds foreach ($pending as $number => $seed) { - log_message('debug', 'Seeding '.$method); - - $seed[0] = new $seed[0]; - call_user_func($seed); + if (is_null($name)) + { + log_message('debug', 'Seeding '.$method); + + $seed[0] = new $seed[0]; + call_user_func($seed); + } + elseif ($seed[0] == 'Seed_'.$name) + { + log_message('debug', 'Seeding '.$method); + + $seed[0] = new $seed[0]; + call_user_func($seed); + } } } diff --git a/application/controllers/system/Message.php b/application/controllers/system/Message.php index 8ed3331b6..4bfb2af98 100755 --- a/application/controllers/system/Message.php +++ b/application/controllers/system/Message.php @@ -7,16 +7,55 @@ class Message extends FHC_Controller { { parent::__construct(); //$this->load->library('Messaging'); - $this->load->model('message/Message_model'); $this->load->model('person/Person_model'); + $this->load->model('system/Message_model'); } public function index() { - $person=$this->Person_model->getPersonFromBenutzerUID('pam'); - $msg_id=1; - $msg = $this->Message_model->getMessage($msg_id, $person[0]->person_id); - //$this->load->view('welcome_message'); - //$msg = $this->Message_model->send_new_message(1, $msg_id, 'test', 'This is a test!', 1); + //$messages = $this->Message_model->getMessages(); + $msg = $this->Message_model->load(1); + if ($msg->error) + show_error($msg->retval); + + $data = array + ( + 'message' => $msg->retval[0] + ); + $v = $this->load->view('test.php', $data); + } + + public function view($id) + { + //$messages = $this->Message_model->getMessages(); + $msg = $this->Message_model->load($id); + if ($msg->error) + show_error($msg->retval); + if (count($msg->retval) != 1) + show_error('Nachricht nicht vorhanden! ID: '.$id); + + $data = array + ( + 'message' => $msg->retval[0] + ); + var_dump($data); + $v = $this->load->view('system/message', $data); + } + + public function neu() + { + //$messages = $this->Message_model->getMessages(); + $msg = $this->Message_model->load($id); + if ($msg->error) + show_error($msg->retval); + if (count($msg->retval) != 1) + show_error('Nachricht nicht vorhanden! ID: '.$id); + + $data = array + ( + 'message' => $msg->retval[0] + ); + var_dump($data); + $v = $this->load->view('system/message', $data); } } diff --git a/application/core/APIv1_Controller.php b/application/core/APIv1_Controller.php index cc3d3fef8..50b5e1f52 100644 --- a/application/core/APIv1_Controller.php +++ b/application/core/APIv1_Controller.php @@ -6,10 +6,9 @@ class APIv1_Controller extends REST_Controller { function __construct() { - parent::__construct(); - //$this->load->library('session'); // -> autoload - //$this->load->library('database'); -> autoload - + parent::__construct(); + //$this->load->library('session'); // -> autoload + //$this->load->library('database'); -> autoload } /** diff --git a/application/core/FHC_Controller.php b/application/core/FHC_Controller.php index 7c45a2fc3..ad29804c6 100644 --- a/application/core/FHC_Controller.php +++ b/application/core/FHC_Controller.php @@ -3,9 +3,20 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); class FHC_Controller extends CI_Controller { + public $uid; + function __construct() { parent::__construct(); + $this->load->library('template'); + $this->load->library('session'); //$this->load->helper('language'); + + // look if User is logged in and set uid + if (isset($_SERVER['PHP_AUTH_USER'])) + $this->uid = $_SERVER['PHP_AUTH_USER']; + if (isset($_SESSION['uid'])) + $this->uid = $_SESSION['uid']; + $this->session->set_userdata('uid', 'pam'); } -} \ No newline at end of file +} diff --git a/application/core/FHC_Model.php b/application/core/FHC_Model.php index a4cc9b4e7..f5d0c9487 100644 --- a/application/core/FHC_Model.php +++ b/application/core/FHC_Model.php @@ -14,15 +14,11 @@ class FHC_Model extends CI_Model $uid = null; // Get UID from CI session - if(isset($this->session->uid)) - { + if(isset($_SESSION['uid'])) $uid = $this->session->uid; - } // Get UID from the environment (HTTP authentication via authentication.class.php) - else if(isset($_SERVER['PHP_AUTH_USER'])) - { + elseif(isset($_SERVER['PHP_AUTH_USER'])) $uid = $_SERVER['PHP_AUTH_USER']; - } $this->load->library('FHC_DB_ACL', array('uid' => $uid)); } diff --git a/application/migrations/008_message.php b/application/migrations/008_message.php index 0621272dc..5cc00c48f 100644 --- a/application/migrations/008_message.php +++ b/application/migrations/008_message.php @@ -8,14 +8,25 @@ class Migration_Message extends CI_Migration { { if (! $this->db->table_exists('public.tbl_msg_message')) { + $this->db->insert('system.tbl_berechtigung', array( + 'berechtigung_kurzbz' => 'basis/message', + 'beschreibung' => 'Nachrichtensystem von FH-Complete')); + $this->db->insert('system.tbl_rolleberechtigung', array( + 'berechtigung_kurzbz' => 'basis/message', + 'rolle_kurzbz' => 'admin', + 'art' => 'suid')); + $query= " CREATE TABLE public.tbl_msg_message ( message_id serial, - thread_id bigint NOT NULL, + person_id bigint NOT NULL, + subject varchar(256) NOT NULL, body text NOT NULL, priority smallint NOT NULL DEFAULT 0, - person_id bigint NOT NULL, - cdate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + relationmessage_id bigint, + oe_kurzbz varchar(32), + insertamum timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + insertvon varchar(32), PRIMARY KEY (message_id) ); COMMENT ON COLUMN public.tbl_msg_message.person_id IS 'Sender'; @@ -27,37 +38,45 @@ class Migration_Message extends CI_Migration { GRANT SELECT, UPDATE ON SEQUENCE public.tbl_msg_message_message_id_seq TO admin; GRANT SELECT, UPDATE ON SEQUENCE public.tbl_msg_message_message_id_seq TO vilesci; - CREATE TABLE public.tbl_msg_participant ( + CREATE TABLE public.tbl_msg_recipient ( person_id bigint NOT NULL, - thread_id bigint NOT NULL, - cdate timestamp NOT NULL DEFAULT now(), - PRIMARY KEY (person_id,thread_id) + message_id bigint NOT NULL, + insertamum timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + insertvon varchar(32), + PRIMARY KEY (person_id,message_id) ); - GRANT SELECT ON TABLE public.tbl_msg_participant TO web; - GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_participant TO admin; - GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_participant TO vilesci; + GRANT SELECT ON TABLE public.tbl_msg_recipient TO web; + GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_recipient TO admin; + GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_recipient TO vilesci; CREATE TABLE public.tbl_msg_status ( message_id bigint NOT NULL, person_id bigint NOT NULL, status smallint NOT NULL, + statusinfo text, + insertamum timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + insertvon varchar(32), + updateamum timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + updatevon varchar(32), PRIMARY KEY (message_id,person_id) ); GRANT SELECT ON TABLE public.tbl_msg_status TO web; GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_status TO admin; GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_status TO vilesci; - CREATE TABLE public.tbl_msg_thread ( - thread_id serial, - subject text, - PRIMARY KEY (thread_id) + CREATE TABLE public.tbl_msg_attachment ( + attachment_id serial, + message_id bigint NOT NULL, + name text, + filename text, + PRIMARY KEY (message_id) ); - GRANT SELECT ON TABLE public.tbl_msg_thread TO web; - GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_thread TO admin; - GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_thread TO vilesci; - GRANT SELECT, UPDATE ON SEQUENCE public.tbl_msg_thread_thread_id_seq TO web; - GRANT SELECT, UPDATE ON SEQUENCE public.tbl_msg_thread_thread_id_seq TO admin; - GRANT SELECT, UPDATE ON SEQUENCE public.tbl_msg_thread_thread_id_seq TO vilesci; + GRANT SELECT ON TABLE public.tbl_msg_attachment TO web; + GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_attachment TO admin; + GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.tbl_msg_attachment TO vilesci; + GRANT SELECT, UPDATE ON SEQUENCE public.tbl_msg_attachment_attachment_id_seq TO web; + GRANT SELECT, UPDATE ON SEQUENCE public.tbl_msg_attachment_attachment_id_seq TO admin; + GRANT SELECT, UPDATE ON SEQUENCE public.tbl_msg_attachment_attachment_id_seq TO vilesci; "; if (!$this->db->simple_query($query)) { @@ -68,10 +87,21 @@ class Migration_Message extends CI_Migration { public function down() { - $this->dbforge->drop_table('public.tbl_msg_message'); - $this->dbforge->drop_table('public.tbl_msg_participant'); - $this->dbforge->drop_table('public.tbl_msg_status'); - $this->dbforge->drop_table('public.tbl_msg_thread'); + try + { + $this->db->delete('system.tbl_rolleberechtigung', array('berechtigung_kurzbz' => 'basis/message')); + $this->db->delete('system.tbl_berechtigung', array('berechtigung_kurzbz' => 'basis/message')); + $this->dbforge->drop_table('public.tbl_msg_recipient'); + $this->dbforge->drop_table('public.tbl_msg_status'); + $this->dbforge->drop_table('public.tbl_msg_attachment'); + $this->dbforge->drop_table('public.tbl_msg_message'); + echo "Table public.tbl_msg_message, public.tbl_msg_status, public.tbl_msg_attachment and public.tbl_msg_recipient dropped!"; + } + catch(Exception $e) + { + echo 'Exception abgefangen: ', $e->getMessage(), "\n"; + echo $this->db->error(); + } } } diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php index e64654872..840594af0 100644 --- a/application/models/organisation/Organisationseinheit_model.php +++ b/application/models/organisation/Organisationseinheit_model.php @@ -10,4 +10,31 @@ class Organisationseinheit_model extends DB_Model $this->dbTable = 'public.tbl_organisationseinheit'; $this->pk = 'oe_kurzbz'; } -} \ No newline at end of file + + public function getRecursiveList() + { + $qry = "WITH RECURSIVE tree (oe_kurzbz, bezeichnung,path) AS + ( + SELECT + oe_kurzbz, + bezeichnung||' ('||organisationseinheittyp_kurzbz||')' AS bezeichnung, + oe_kurzbz||'|' AS path + FROM tbl_organisationseinheit + WHERE oe_parent_kurzbz IS NULL AND aktiv + UNION ALL + SELECT + oe.oe_kurzbz, + oe.bezeichnung||' ('||oe.organisationseinheittyp_kurzbz||')' AS bezeichnung, + tree.path ||oe.oe_kurzbz||'|' AS path + FROM tree + JOIN tbl_organisationseinheit oe ON (tree.oe_kurzbz=oe.oe_parent_kurzbz) + ) + SELECT oe_kurzbz AS value, substring(regexp_replace(path, '[A-z]+\|', '-','g')||bezeichnung,2) AS name, path FROM tree ORDER BY path;"; + + + if ($res = $this->db->query($qry)) + return $this->_success($res); + else + return $this->_error($this->db->error()); + } +} diff --git a/application/models/system/Thread_model.php b/application/models/system/Thread_model.php deleted file mode 100644 index f5f1ee3ca..000000000 --- a/application/models/system/Thread_model.php +++ /dev/null @@ -1,14 +0,0 @@ -dbTable = 'public.tbl_msg_thread'; - $this->pk = 'thread_id'; - } -}