fmsystem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fmsystem-commits] [12739] bkbooking: stavanger update


From: Kjell Arne Espedal
Subject: [Fmsystem-commits] [12739] bkbooking: stavanger update
Date: Thu, 12 Feb 2015 11:33:06 +0000

Revision: 12739
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=12739
Author:   kjell
Date:     2015-02-12 11:33:05 +0000 (Thu, 12 Feb 2015)
Log Message:
-----------
bkbooking:  stavanger update

Modified Paths:
--------------
    branches/stavangerkommune/booking/inc/class.boapplication.inc.php
    branches/stavangerkommune/booking/inc/class.boevent.inc.php
    branches/stavangerkommune/booking/inc/class.soresource.inc.php
    branches/stavangerkommune/booking/inc/class.uievent.inc.php
    branches/stavangerkommune/booking/inc/class.uiresource.inc.php
    branches/stavangerkommune/booking/setup/phpgw_no.lang
    branches/stavangerkommune/booking/setup/setup.inc.php
    branches/stavangerkommune/booking/setup/tables_current.inc.php
    branches/stavangerkommune/booking/setup/tables_update.inc.php
    branches/stavangerkommune/booking/templates/base/resource_form.xsl
    branches/stavangerkommune/bookingfrontend/inc/class.uibooking.inc.php
    branches/stavangerkommune/bookingfrontend/inc/class.uievent.inc.php
    branches/stavangerkommune/bookingfrontend/setup/phpgw_no.lang
    branches/stavangerkommune/bookingfrontend/setup/setup.inc.php

Modified: branches/stavangerkommune/booking/inc/class.boapplication.inc.php
===================================================================
--- branches/stavangerkommune/booking/inc/class.boapplication.inc.php   
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/inc/class.boapplication.inc.php   
2015-02-12 11:33:05 UTC (rev 12739)
@@ -1,237 +1,237 @@
 <?php
-       phpgw::import_class('booking.bocommon');
-       
-       class booking_boapplication extends booking_bocommon
+phpgw::import_class('booking.bocommon');
+
+class booking_boapplication extends booking_bocommon
+{
+       function __construct()
        {
-               function __construct()
-               {
-                       parent::__construct();
-            $this->activity_bo = CreateObject('booking.boactivity');
-            $this->organization_bo = CreateObject('booking.boorganization');
-                       $this->so = CreateObject('booking.soapplication');
-               }
+               parent::__construct();
+               $this->activity_bo = CreateObject('booking.boactivity');
+               $this->organization_bo = CreateObject('booking.boorganization');
+               $this->so = CreateObject('booking.soapplication');
+       }
 
-               function send_notification($application, $created=false, 
$assocciated=false)
-               {
-                       if 
(!(isset($GLOBALS['phpgw_info']['server']['smtp_server']) && 
$GLOBALS['phpgw_info']['server']['smtp_server']))
-                               return;
-                       $send = CreateObject('phpgwapi.send');
+       function send_notification($application, $created=false, 
$assocciated=false)
+       {
+               if (!(isset($GLOBALS['phpgw_info']['server']['smtp_server']) && 
$GLOBALS['phpgw_info']['server']['smtp_server']))
+                       return;
+               $send = CreateObject('phpgwapi.send');
 
-                       $config = CreateObject('phpgwapi.config','booking');
-                       $config->read();
-                       $from = isset($config->config_data['email_sender']) && 
$config->config_data['email_sender'] ? $config->config_data['email_sender'] : 
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
-                       $external_site_address = 
isset($config->config_data['external_site_address']) && 
$config->config_data['external_site_address'] ? 
$config->config_data['external_site_address'] : 
$GLOBALS['phpgw_info']['server']['webserver_url'];
+               $config = CreateObject('phpgwapi.config','booking');
+               $config->read();
+               $from = isset($config->config_data['email_sender']) && 
$config->config_data['email_sender'] ? $config->config_data['email_sender'] : 
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
+               $external_site_address = 
isset($config->config_data['external_site_address']) && 
$config->config_data['external_site_address'] ? 
$config->config_data['external_site_address'] : 
$GLOBALS['phpgw_info']['server']['webserver_url'];
 
-                       $subject = 
$config->config_data['application_mail_subject'];
+               $subject = $config->config_data['application_mail_subject'];
 
-                       $link = 
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uiapplication.show&id='.$application['id'].'&secret='.$application['secret'];
+               $link = 
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uiapplication.show&id='.$application['id'].'&secret='.$application['secret'];
 
-                       if ($created) {
-                               $body = 
"<pre>".$config->config_data['application_mail_created']."</pre>";
-                               $body .= '<p><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></p>';
+               if ($created) {
+                       $body = 
"<pre>".$config->config_data['application_mail_created']."</pre>";
+                       $body .= '<p><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></p>';
 
-                       } elseif ($application['status'] == 'PENDING') {
-                               $body = "<p>Din søknad i 
".$config->config_data['application_mail_systemname']." om leie/lån er 
".lang($application['status']); 
-                               $body .= 
"</p><pre>".$config->config_data['application_mail_pending']."</pre>";
-                               $body .= '<p><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></p>';
-                               if ($application['comment'] != '') {
-                                       $body .= '<p>Kommentar fra 
saksbehandler:<br />'.$application['comment'].'</p>';
-                               }
-                       } elseif ($application['status'] == 'ACCEPTED') {
-                               $accepted = 
$this->so->get_accepted($application['id']);                                
-                               $adates = "";
-                               foreach ($accepted as $key => $date) {
-                                               if($key === 0)
-                                                       $adates .= implode(" - 
",$date)."\n";
-                                               else                            
                
-                                                       $adates .= 
"\t".implode(" - ",$date)."\n";
-                               }
-                               $rejected = 
$this->so->get_rejected($application['id']);                                
-                               $rdates = "";
-                               foreach ($rejected as $key => $date) {
-                                               if($key === 0)
-                                                       $rdates .= implode(" - 
",$date)."\n";
-                                               else                            
                
-                                                       $rdates .= 
"\t".implode(" - ",$date)."\n";
-                               }
+               } elseif ($application['status'] == 'PENDING') {
+                       $body = "<p>Din søknad i 
".$config->config_data['application_mail_systemname']." om leie/lån er 
".lang($application['status']);
+                       $body .= 
"</p><pre>".$config->config_data['application_mail_pending']."</pre>";
+                       $body .= '<p><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></p>';
+                       if ($application['comment'] != '') {
+                               $body .= '<p>Kommentar fra saksbehandler:<br 
/>'.$application['comment'].'</p>';
+                       }
+               } elseif ($application['status'] == 'ACCEPTED') {
+                       $accepted = $this->so->get_accepted($application['id']);
+                       $adates = "";
+                       foreach ($accepted as $key => $date) {
+                               if($key === 0)
+                                       $adates .= implode(" - ",$date)."\n";
+                               else
+                                       $adates .= "\t".implode(" - 
",$date)."\n";
+                       }
+                       $rejected = $this->so->get_rejected($application['id']);
+                       $rdates = "";
+                       foreach ($rejected as $key => $date) {
+                               if($key === 0)
+                                       $rdates .= implode(" - ",$date)."\n";
+                               else
+                                       $rdates .= "\t".implode(" - 
",$date)."\n";
+                       }
 
-                               $body = "<p>Din søknad i 
".$config->config_data['application_mail_systemname']." om leie/lån er 
".lang($application['status']); 
-                               $body .= 
'</p><pre>'.$config->config_data['application_mail_pending'].' <a 
href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></pre>';
-                               $body .= "<pre>Godkjent: ".$adates."</pre>";
-                               $body .= "<pre>Avvist: ".$rdates."</pre>";
+                       $body = "<p>Din søknad i 
".$config->config_data['application_mail_systemname']." om leie/lån er 
".lang($application['status']);
+                       $body .= 
'</p><pre>'.$config->config_data['application_mail_accepted'].'<br /><a 
href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></pre>';
+                       $body .= "<pre>Godkjent: ".$adates."</pre>";
+                       $body .= "<pre>Avvist: ".$rdates."</pre>";
 
-                               if ($application['comment'] != '') {
-                                       $body .= "<p>Kommentar fra 
saksbehandler:<br />".$application['comment']."</p>";
-                               }
+                       if ($application['comment'] != '') {
+                               $body .= "<p>Kommentar fra saksbehandler:<br 
/>".$application['comment']."</p>";
+                       }
 
-                               $buildingemail = 
$this->get_tilsyn_email($application['building_name']);
-                               if ($buildingemail['email1'] != '' || 
$buildingemail['email2'] != '' || $buildingemail['email3'] != '') {
-                                       $resourcename = 
implode(",",$this->get_resource_name($application['resources']));
-                                       $bsubject = 
$config->config_data['application_mail_subject'].": En søknad om leie/lån av 
".$resourcename." på ".$application['building_name']." er godkjent";
-                                       $bbody = 
"<p>".$application['contact_name']." sin søknad  om leie/lån av 
".$resourcename." på ".$application['building_name']."</p>"; 
-                                       $bbody .= "<p>Den ".$adates."er 
Godkjent</p>";
-                    $bbody .= "<p><b>Ekstra informasjon fra søker:</b><br 
/>".$application['equipment']."</p>";
+                       $buildingemail = 
$this->get_tilsyn_email($application['building_name']);
+                       if ($buildingemail['email1'] != '' || 
$buildingemail['email2'] != '' || $buildingemail['email3'] != '') {
+                               $resourcename = 
implode(",",$this->get_resource_name($application['resources']));
+                               $bsubject = 
$config->config_data['application_mail_subject'].": En søknad om leie/lån av 
".$resourcename." på ".$application['building_name']." er godkjent";
+                               $bbody = "<p>".$application['contact_name']." 
sin søknad  om leie/lån av ".$resourcename." på 
".$application['building_name']."</p>";
+                               $bbody .= "<p>Den ".$adates."er Godkjent</p>";
+                               $bbody .= "<p><b>Ekstra informasjon fra 
søker:</b><br />".$application['equipment']."</p>";
 
-                                       foreach ($buildingemail as $bemail)
+                               foreach ($buildingemail as $bemail)
+                               {
+                                       try
                                        {
-                                               try
-                                               {
-                                                       $send->msg('email', 
$bemail, $bsubject, $bbody, '', '', '', $from, '', 'html');
-                                               }
-                                               catch (phpmailerException $e)
-                                               {
+                                               $send->msg('email', $bemail, 
$bsubject, $bbody, '', '', '', $from, '', 'html');
+                                       }
+                                       catch (phpmailerException $e)
+                                       {
                                                // TODO: Inform user if 
something goes wrong
-                                               }
+                                       }
 
-                                       }
                                }
-                       } elseif ($application['status'] == 'REJECTED') {
-                               $body = "<p>Din søknad i 
".$config->config_data['application_mail_systemname']." om leie/lån er 
".lang($application['status']); 
-                               $body .= 
'</p><pre>'.$config->config_data['application_mail_rejected'].' <a 
href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></pre>';
-                               if ($application['comment'] != '') {
-                                       $body .= '<p>Kommentar fra 
saksbehandler:<br />'.$application['comment'].'</p>';
-                               }
-                       } else {
-                $subject = 
$config->config_data['application_comment_mail_subject'];
-                $body = 
"<pre><p>".$config->config_data['application_comment_added_mail']."</p>";
-                $body .= '<p>Kommentar fra saksbehandler:<br 
/>'.$application['comment'].'</p></pre>';
-                $body .= '<p><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></p>';
-            }
-                       $body .= 
"<p>".$config->config_data['application_mail_signature']."</p>";
-
-                       try
-                       {
-                               $send->msg('email', 
$application['contact_email'], $subject, $body, '', '', '', $from, '', 'html');
                        }
-                       catch (phpmailerException $e)
-                       {
-                               // TODO: Inform user if something goes wrong
+               } elseif ($application['status'] == 'REJECTED') {
+                       $body = "<p>Din søknad i 
".$config->config_data['application_mail_systemname']." om leie/lån er 
".lang($application['status']);
+                       $body .= 
'</p><pre>'.$config->config_data['application_mail_rejected'].' <a 
href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></pre>';
+                       if ($application['comment'] != '') {
+                               $body .= '<p>Kommentar fra saksbehandler:<br 
/>'.$application['comment'].'</p>';
                        }
+               } else {
+                       $subject = 
$config->config_data['application_comment_mail_subject'];
+                       $body = 
"<pre><p>".$config->config_data['application_comment_added_mail']."</p>";
+                       $body .= '<p>Kommentar fra saksbehandler:<br 
/>'.$application['comment'].'</p></pre>';
+                       $body .= '<p><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].': søknad 
#'.$application['id'].'</a></p>';
                }
+               $body .= 
"<p>".$config->config_data['application_mail_signature']."</p>";
 
-        /**
-         * @ Send message about comment on application to case officer.
-         */
-        function send_admin_notification($application, $message = null)
-        {
-            if (!(isset($GLOBALS['phpgw_info']['server']['smtp_server']) && 
$GLOBALS['phpgw_info']['server']['smtp_server']))
-                return;
-            $send = CreateObject('phpgwapi.send');
+               try
+               {
+                       $send->msg('email', $application['contact_email'], 
$subject, $body, '', '', '', $from, '', 'html');
+               }
+               catch (phpmailerException $e)
+               {
+                       // TODO: Inform user if something goes wrong
+               }
+       }
 
-            $config = CreateObject('phpgwapi.config', 'booking');
-            $config->read();
+       /**
+        * @ Send message about comment on application to case officer.
+        */
+       function send_admin_notification($application, $message = null)
+       {
+               if (!(isset($GLOBALS['phpgw_info']['server']['smtp_server']) && 
$GLOBALS['phpgw_info']['server']['smtp_server']))
+                       return;
+               $send = CreateObject('phpgwapi.send');
 
-            $from = isset($config->config_data['email_sender']) && 
$config->config_data['email_sender'] ? $config->config_data['email_sender'] : 
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
+               $config = CreateObject('phpgwapi.config', 'booking');
+               $config->read();
 
-            $external_site_address = 
isset($config->config_data['external_site_address']) && 
$config->config_data['external_site_address'] ? 
$config->config_data['external_site_address'] : 
$GLOBALS['phpgw_info']['server']['webserver_url'];
+               $from = isset($config->config_data['email_sender']) && 
$config->config_data['email_sender'] ? $config->config_data['email_sender'] : 
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
 
-            $subject = 
$config->config_data['application_comment_mail_subject_caseofficer'];
+               $external_site_address = 
isset($config->config_data['external_site_address']) && 
$config->config_data['external_site_address'] ? 
$config->config_data['external_site_address'] : 
$GLOBALS['phpgw_info']['server']['webserver_url'];
 
-            $mailadresses = $config->config_data['emails'];
-            $mailadresses = explode("\n", $mailadresses);
+               $subject = 
$config->config_data['application_comment_mail_subject_caseofficer'];
 
-            if ($GLOBALS['phpgw_info']['server']['webserver_url'] != '' && 
isset($config->config_data['external_site_address']))
-                $link = $external_site_address . 
$GLOBALS['phpgw_info']['server']['webserver_url'] . 
'/index.php?menuaction=booking.uiapplication.show&id=' . $application['id'];
-            else
-                $link = $external_site_address . 
'/index.php?menuaction=booking.uiapplication.show&id=' . $application['id'];
+               $mailadresses = $config->config_data['emails'];
+               $mailadresses = explode("\n", $mailadresses);
 
-            $activity = 
$this->activity_bo->read_single($application['activity_id']);
+               if ($GLOBALS['phpgw_info']['server']['webserver_url'] != '' && 
isset($config->config_data['external_site_address']))
+                       $link = $external_site_address . 
$GLOBALS['phpgw_info']['server']['webserver_url'] . 
'/index.php?menuaction=booking.uiapplication.show&id=' . $application['id'];
+               else
+                       $link = $external_site_address . 
'/index.php?menuaction=booking.uiapplication.show&id=' . $application['id'];
 
-            if (strlen($application['customer_organization_number']) == 9) {
-                $orgid = 
$this->organization_bo->so->get_orgid($application['customer_organization_number']);
-                $organization = $this->organization_bo->read_single($orgid);
-                $body = '<b>Kommentar fra ' . $organization['name'] . '</b><br 
/>' . $message . '<br /><br/>';
-            } else {
-                $body = '<b>Kommentar fra 
'.$application['contact_name'].'</b><br />'.$message.'<br /><br/>';
-            }
+               $activity = 
$this->activity_bo->read_single($application['activity_id']);
 
-            $body .= '<b>Bygg: </b>'.$application['building_name'].'<br />';
-            $body .= '<b>Aktivitet: </b>'.$activity['name'].'<br /><br />';
-            $body .= '<b>Kontaktperson:</b> 
'.$application['contact_name'].'<br />';
-            $body .= '<b>Epost:</b> '.$application['contact_email'].'<br />';
-            $body .= '<b>Telefon:</b> '.$application['contact_phone'].'<br 
/><br />';
-            $body .= '<a href="'.$link.'">Lenke til søknad</a><br /><br />';
+               if (strlen($application['customer_organization_number']) == 9) {
+                       $orgid = 
$this->organization_bo->so->get_orgid($application['customer_organization_number']);
+                       $organization = 
$this->organization_bo->read_single($orgid);
+                       $body = '<b>Kommentar fra ' . $organization['name'] . 
'</b><br />' . $message . '<br /><br/>';
+               } else {
+                       $body = '<b>Kommentar fra 
'.$application['contact_name'].'</b><br />'.$message.'<br /><br/>';
+               }
 
-            foreach ($mailadresses as $adr)
-            {
-                try
-                {
-                    $send->msg('email', $adr, $subject, $body, '', '', '', 
$from, '', 'html');
-                }
-                catch (phpmailerException $e)
-                {
-                    // TODO: Inform user if something goes wrong
-                }
-            }
-        }
+               $body .= '<b>Bygg: </b>'.$application['building_name'].'<br />';
+               $body .= '<b>Aktivitet: </b>'.$activity['name'].'<br /><br />';
+               $body .= '<b>Kontaktperson:</b> 
'.$application['contact_name'].'<br />';
+               $body .= '<b>Epost:</b> '.$application['contact_email'].'<br 
/>';
+               $body .= '<b>Telefon:</b> '.$application['contact_phone'].'<br 
/><br />';
+               $body .= '<a href="'.$link.'">Lenke til søknad</a><br /><br />';
 
-
-        /**
-               * Returns an array of application ids from applications 
assocciated with buildings
-               * which the given user has access to
-               *
-               * @param int $user_id
-               */
-               public function accessable_applications($user_id)
+               foreach ($mailadresses as $adr)
                {
-                       $applications = array();
-                       $this->db = & $GLOBALS['phpgw']->db;
+                       try
+                       {
+                               $send->msg('email', $adr, $subject, $body, '', 
'', '', $from, '', 'html');
+                       }
+                       catch (phpmailerException $e)
+                       {
+                               // TODO: Inform user if something goes wrong
+                       }
+               }
+       }
 
+
+       /**
+        * Returns an array of application ids from applications assocciated 
with buildings
+        * which the given user has access to
+        *
+        * @param int $user_id
+        */
+       public function accessable_applications($user_id)
+       {
+               $applications = array();
+               $this->db = & $GLOBALS['phpgw']->db;
+
 #                      $sql = "select distinct ap.id
 #                                      from bb_application ap
 #                                      inner join bb_application_resource ar 
on ar.application_id = ap.id
 #                                      inner join bb_resource re on re.id = 
ar.resource_id
 #                                      inner join bb_building bu on bu.id = 
re.building_id";
-                       $sql = "select distinct ap.id
+               $sql = "select distinct ap.id
                                        from bb_application ap
                                        inner join bb_application_resource ar 
on ar.application_id = ap.id
                                        inner join bb_resource re on re.id = 
ar.resource_id
                                        inner join bb_building bu on bu.id = 
re.building_id
                                        inner join bb_permission pe on 
pe.object_id = bu.id and pe.object_type = 'building'
                                        where pe.subject_id = ".$user_id;
-                       $this->db->query($sql);
-                       $result = $this->db->resultSet;
+               $this->db->query($sql);
+               $result = $this->db->resultSet;
 
-                       foreach($result as $r)
-                       {
-                               $applications[] = $r['id'];
-                       }
-
-                       return $applications;
+               foreach($result as $r)
+               {
+                       $applications[] = $r['id'];
                }
 
-               public function read_dashboard_data($for_case_officer_id = 
array(null,null)) {
-                       $params = $this->build_default_read_params();
+               return $applications;
+       }
 
-                       if (!isset($params['filters'])) $params['filters'] = 
array();
-                       $where_clauses = !isset($params['filters']['where']) ? 
array() : (array)$params['filters']['where'];
-                       
-                       if (!is_null($for_case_officer_id[0])) {
-                               $where_clauses[] = 
"(%%table%%.display_in_dashboard = 1 AND %%table%%.case_officer_id = 
".intval($for_case_officer_id[1]).')';
-                       } else {
-                               $where_clauses[] = "(%%table%%.case_officer_id 
= ".intval($for_case_officer_id[1]).')';
-                       }
-                       
-                       if ($building_id = phpgw::get_var('filter_building_id', 
'int', 'GET', false)) {
-                               $where_clauses[] = "(%%table%%.id IN (SELECT 
DISTINCT a.id FROM bb_application a, bb_application_resource ar, bb_resource r 
WHERE ar.application_id = a.id AND ar.resource_id = r.id AND r.building_id = 
".intval($building_id)."))";
-                       }
-                       
-                       if ( $status = phpgw::get_var('status') != '') {
-                    $params['filters']['status'] = phpgw::get_var('status');   
    
-                       }
+       public function read_dashboard_data($for_case_officer_id = 
array(null,null)) {
+               $params = $this->build_default_read_params();
 
-                       $params['filters']['where'] = $where_clauses;
+               if (!isset($params['filters'])) $params['filters'] = array();
+               $where_clauses = !isset($params['filters']['where']) ? array() 
: (array)$params['filters']['where'];
 
-                       return $this->so->read($params);
+               if (!is_null($for_case_officer_id[0])) {
+                       $where_clauses[] = "(%%table%%.display_in_dashboard = 1 
AND %%table%%.case_officer_id = ".intval($for_case_officer_id[1]).')';
+               } else {
+                       $where_clauses[] = "(%%table%%.case_officer_id = 
".intval($for_case_officer_id[1]).')';
                }
 
+               if ($building_id = phpgw::get_var('filter_building_id', 'int', 
'GET', false)) {
+                       $where_clauses[] = "(%%table%%.id IN (SELECT DISTINCT 
a.id FROM bb_application a, bb_application_resource ar, bb_resource r WHERE 
ar.application_id = a.id AND ar.resource_id = r.id AND r.building_id = 
".intval($building_id)."))";
+               }
+
+               if ( $status = phpgw::get_var('status') != '') {
+                       $params['filters']['status'] = phpgw::get_var('status');
+               }
+
+               $params['filters']['where'] = $where_clauses;
+
+               return $this->so->read($params);
        }
 
-       class booking_boapplication_association extends booking_bocommon
+}
+
+class booking_boapplication_association extends booking_bocommon
+{
+       function __construct()
        {
-               function __construct()
-               {
-                       parent::__construct();
-                       $this->so = new booking_soapplication_association();
-               }
+               parent::__construct();
+               $this->so = new booking_soapplication_association();
        }
+}

Modified: branches/stavangerkommune/booking/inc/class.boevent.inc.php
===================================================================
--- branches/stavangerkommune/booking/inc/class.boevent.inc.php 2015-02-12 
09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/inc/class.boevent.inc.php 2015-02-12 
11:33:05 UTC (rev 12739)
@@ -1,148 +1,500 @@
 <?php
-phpgw::import_class('booking.bocommon_authorized');
+phpgw::import_class('booking.uicommon');
+phpgw::import_class('phpgwapi.send');
 
-class booking_boevent extends booking_bocommon_authorized
+class booking_uievent extends booking_uicommon
 {
-    const ROLE_ADMIN = 'organization_admin';
+    public $public_functions = array
+    (
+        'index'                        =>      true,
+        'add'                  =>      true,
+        'edit'                 =>      true,
+        'delete'                       =>      true,
+        'info'                 =>      true,
+        'toggle_show_inactive' =>      true,
+    );
 
-    function __construct()
+    protected $customer_id;
+
+    public function __construct()
     {
         parent::__construct();
-        $this->so = CreateObject('booking.soevent');
+        $this->bo = CreateObject('booking.boevent');
+        $this->customer_id = CreateObject('booking.customer_identifier');
+        $this->activity_bo = CreateObject('booking.boactivity');
+        $this->agegroup_bo = CreateObject('booking.boagegroup');
+        $this->audience_bo = CreateObject('booking.boaudience');
+        $this->organization_bo = CreateObject('booking.boorganization');
+        $this->resource_bo = CreateObject('booking.boresource');
+        self::set_active_menu('booking::applications::events');
+        $this->fields = array('activity_id', 'description',
+            'resources', 'cost', 'application_id',
+            'building_id', 'building_name',
+            'contact_name', 'contact_email', 'contact_phone',
+            'from_', 'to_', 'active', 'audience', 'reminder',
+            'is_public', 'sms_total', 'customer_internal');
     }
-    /**
-     * @see booking_bocommon_authorized
-     */
-    protected function get_subject_roles($for_object = null, 
$initial_roles=array())
+
+    public function index()
     {
-        if ($this->current_app() == 'bookingfrontend') {
-            $bouser = CreateObject('bookingfrontend.bouser');
+        if(phpgw::get_var('phpgw_return_as') == 'json') {
+            return $this->index_json();
+        }
+        self::add_javascript('booking', 'booking', 'datatable.js');
+        phpgwapi_yui::load_widget('datatable');
+        phpgwapi_yui::load_widget('paginator');
+        $data = array(
+            'form' => array(
+                'toolbar' => array(
+                    'item' => array(
+                        array(
+                            'type' => 'link',
+                            'value' => lang('New event'),
+                            'href' => self::link(array('menuaction' => 
'booking.uievent.add'))
+                        ),
+                        array('type' => 'filter',
+                            'name' => 'buildings',
+                            'text' => lang('Building').':',
+                            'list' => $this->bo->so->get_buildings(),
+                        ),
+                        array('type' => 'filter',
+                            'name' => 'activities',
+                            'text' => lang('Activity').':',
+                            'list' => 
$this->bo->so->get_activities_main_level(),
+                        ),
+                        array('type' => 'text',
+                            'name' => 'query'
+                        ),
+                        array(
+                            'type' => 'submit',
+                            'name' => 'search',
+                            'value' => lang('Search')
+                        ),
+                        array(
+                            'type' => 'link',
+                            'value' => $_SESSION['showall'] ? lang('Show only 
active') : lang('Show all'),
+                            'href' => self::link(array('menuaction' => 
$this->url_prefix.'.toggle_show_inactive'))
+                        ),
+                    )
+                ),
+            ),
+            'datatable' => array(
+                'source' => self::link(array('menuaction' => 
'booking.uievent.index', 'phpgw_return_as' => 'json')),
+                'field' => array(
+                    array(
+                        'key' => 'id',
+                        'label' => lang('ID'),
+                        'formatter' => 'YAHOO.booking.formatLink'
+                    ),
+                    array(
+                        'key' => 'description',
+                        'label' => lang('Event'),
+                    ),
+                    array(
+                        'key' => 'activity_name',
+                        'label' => lang('Activity'),
+                    ),
+                    array(
+                        'key' => 'customer_organization_name',
+                        'label' => lang('Organization'),
+                    ),
+                    array(
+                        'key' => 'contact_name',
+                        'label' => lang('Contact'),
+                    ),
+                    array(
+                        'key' => 'building_name',
+                        'label' => lang('Building')
+                    ),
+                    array(
+                        'key' => 'from_',
+                        'label' => lang('From')
+                    ),
+                    array(
+                        'key' => 'to_',
+                        'label' => lang('To')
+                    ),
+                    array(
+                        'key' => 'active',
+                        'label' => lang('Active')
+                    ),
+                    array(
+                        'key' => 'link',
+                        'hidden' => true
+                    )
+                )
+            )
+        );
+        self::render_template('datatable', $data);
+    }
 
-            if (is_array($for_object) && 
$for_object['customer_organization_number']) {
-                $org = 
$this->so->get_org($for_object['customer_organization_number']);
-                $for_object['customer_organization_id'] = $org['id'];
-                $for_object['customer_organization_name'] = $org['name'];
+    public function index_json()
+
+    {
+        if(isset($_SESSION['showall']))
+        {
+            unset($filters['building_name']);
+            unset($filters['activity_id']);
+        } else {
+            $testdata =  phpgw::get_var('buildings', 'int', 'REQUEST', null);
+            if ($testdata != 0) {
+                $filters['building_name'] = 
$this->bo->so->get_building(phpgw::get_var('buildings', 'int', 'REQUEST', 
null));
+            } else {
+                unset($filters['building_name']);
             }
+            $testdata2 =  phpgw::get_var('activities', 'int', 'REQUEST', null);
+            if ($testdata2 != 0) {
+                $filters['activity_id'] = 
$this->bo->so->get_activities(phpgw::get_var('activities', 'int', 'REQUEST', 
null));
+            } else {
+                unset($filters['activity_id']);
+            }
+        }
 
-            $org_id = is_array($for_object) ? 
$for_object['customer_organization_id'] : (!is_null($for_object) ? $for_object 
: null);
+        $params = array(
+            'start' => phpgw::get_var('startIndex', 'int', 'REQUEST', 0),
+            'results' => phpgw::get_var('results', 'int', 'REQUEST', null),
+            'query'    => phpgw::get_var('query'),
+            'sort'     => phpgw::get_var('sort'),
+            'dir'      => phpgw::get_var('dir'),
+            'filters' => $filters
+        );
+        $events = $this->bo->so->read($params);
 
-            if ($bouser->is_organization_admin($org_id)) {
-                $initial_roles[] = array('role' => self::ROLE_ADMIN);
-            }
+        foreach($events['results'] as &$event)
+        {
+            $event['from_'] = pretty_timestamp($event['from_']);
+            $event['to_'] = pretty_timestamp($event['to_']);
         }
-        return parent::get_subject_roles($for_object, $initial_roles);
+
+        array_walk($events["results"], array($this, "_add_links"), 
"booking.uievent.edit");
+        return $this->yui_results($events);
     }
 
-    /**
-     * @see bocommon_authorized
-     */
-    protected function get_object_role_permissions(array $forObject, 
$defaultPermissions)
+    private function _combine_dates($from_, $to_)
     {
-        if ($this->current_app() == 'booking') {
-            $defaultPermissions[booking_sopermission::ROLE_DEFAULT] = array
-            (
-                'read'                 => true,
-                'delete'       => true,
-                'write'        => true,
-                'create'       => true,
-            );
-        }
+        return array('from_' => $from_, 'to_' => $to_);
+    }
 
-        if ($this->current_app() == 'bookingfrontend') {
-            $defaultPermissions[self::ROLE_ADMIN] = array
-            (
-                'write' => 
array_fill_keys(array('active','description','from_','to_','contact_name','contact_email',
-                                                 
'contact_phone','activity_name','audience','agegroups','is_public'), true),
-            );
-        }
+    protected function get_customer_identifier() {
+        return $this->customer_id;
+    }
 
-        return $defaultPermissions;
+    protected function extract_customer_identifier(&$data) {
+        $this->get_customer_identifier()->extract_form_data($data);
     }
 
-    /**
-     * @see bocommon_authorized
-     */
-    protected function get_collection_role_permissions($defaultPermissions)
-    {
-        if ($this->current_app() == 'booking')
-        {
-            $defaultPermissions[booking_sopermission::ROLE_DEFAULT]['create'] 
= true;
-            $defaultPermissions[booking_sopermission::ROLE_DEFAULT]['write'] = 
true;
-        }
+    protected function validate_customer_identifier(&$data) {
+        return $this->get_customer_identifier()->validate($data);
+    }
 
-        return $defaultPermissions;
+    protected function install_customer_identifier_ui(&$entity) {
+        $this->get_customer_identifier()->install($this, $entity);
     }
 
-    public function get_permissions(array $entity)
-    {
-        return parent::get_permissions($entity);
+    protected function validate(&$entity) {
+        $errors = array_merge($this->validate_customer_identifier($entity), 
$this->bo->validate($entity));
+        return $errors;
     }
 
-    public function complete_expired(&$events) {
-           $this->so->complete_expired($events);
-       }
+    protected function extract_form_data($defaults = array()) {
+        $entity = array_merge($defaults, extract_values($_POST, 
$this->fields));
+        $this->agegroup_bo->extract_form_data($entity);
+        $this->extract_customer_identifier($entity);
+        return $entity;
+    }
 
-       public function find_expired() {
-           return $this->so->find_expired();
-       }
+    protected function extract_and_validate($defaults = array()) {
+        $entity = $this->extract_form_data($defaults);
+        $errors = $this->validate($entity);
+        return array($entity, $errors);
+    }
 
-    /**
-     * @ Send message about cancelation/modification on event to users of 
building.
-     */
-    function send_notification($type, $event, $mailadresses, $orgdate = null)
+    protected function add_comment(&$event, $comment, $type = 'comment') {
+        $event['comments'][] = array(
+            'time'=> 'now',
+            'author'=>$this->current_account_fullname(),
+            'comment'=>$comment,
+            'type' => $type
+        );
+    }
+
+    protected function 
create_sendt_mail_notification_comment_text($event,$errors)
     {
-        if (!(isset($GLOBALS['phpgw_info']['server']['smtp_server']) && 
$GLOBALS['phpgw_info']['server']['smtp_server']))
-            return;
-        $send = CreateObject('phpgwapi.send');
+        $data = array();
 
-        $config        = CreateObject('phpgwapi.config','booking');
-        $config->read();
+        foreach($errors['allocation'][0] as $e)
+        {
+            foreach($event['resources'] as $res)
+            {
+                $time = 
$this->bo->so->get_overlap_time_info($res,$e,'allocation');
 
-        $from = isset($config->config_data['email_sender']) && 
$config->config_data['email_sender'] ? $config->config_data['email_sender'] : 
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
+                $from_ = new DateTime($time['from']);
+                $to_ = new DateTime($time['to']);
+                $date = $from_->format('d-m-Y');
+                $start = $from_->format('H:i');
+                $end = $to_->format('H:i');
 
-        $external_site_address = 
isset($config->config_data['external_site_address']) && 
$config->config_data['external_site_address'] ? 
$config->config_data['external_site_address'] : 
$GLOBALS['phpgw_info']['server']['webserver_url'];
+                $resource = $this->bo->so->get_resource_info($res);
+                $_mymail = $this->bo->so->get_contact_mail($e,'allocation');
 
-//        $link = 
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uiapplication.add&building_id=';
-//        $link .= 
$event['building_id'].'&building_name='.urlencode($event['building_name']).'&from_[]=';
-//        $link .= 
urlencode($event['from_']).'&to_[]='.urlencode($event['to_']).'&resource='.implode(",",$event['resources']);
+                $a = $_mymail[0];
+                if(array_key_exists($a,$data))
+                {
+                    $data[$a][] = array('date' => $date, 'building' => 
$event['building_name'], 'resource' => $resource['name'], 'start' => $start, 
'end' => $end );
+                }
+                else
+                {
+                    $data[$a] =  array( array('date' => $date, 'building' => 
$event['building_name'], 'resource' => $resource['name'], 'start' => $start, 
'end' => $end ));
+                }
+                if ($_mymail[1])
+                {
+                    $b = $_mymail[1];
+                    if(array_key_exists($a,$data))
+                    {
+                        $data[$b][] = array('date' => $date, 'building' => 
$event['building_name'], 'resource' => $resource['name'], 'start' => $start, 
'end' => $end );
+                    }
+                    else
+                    {
+                        $data[$b] =  array( array('date' => $date, 'building' 
=> $event['building_name'], 'resource' => $resource['name'], 'start' => $start, 
'end' => $end ));
+                    }
+                }
+            }
+        }
 
-        $link = 
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uibuilding.schedule&id=';
-        $link .= $event['building_id'].'&date='.substr($event['from_'], 0, 10);
-        $body = "";
-        $subject = "";
-        if (!$type) {
-            $subject .= $config->config_data['event_canceled_mail_subject'];
-            $body .= "<p>".$config->config_data['event_canceled_mail'];
-        } else {
-            $subject .= $config->config_data['event_edited_mail_subject'];
-            $body .= "<p>".$config->config_data['event_edited_mail'];
+        foreach($errors['booking'][0] as $e)
+        {
+            foreach($event['resources'] as $res)
+            {
+                $time = 
$this->bo->so->get_overlap_time_info($res,$e,'booking');
+
+                $from_ = new DateTime($time['from']);
+                $to_ = new DateTime($time['to']);
+                $date = $from_->format('d-m-Y');
+                $start = $from_->format('H:i');
+                $end = $to_->format('H:i');
+
+                $resource = $this->bo->so->get_resource_info($res);
+                $_mymail = $this->bo->so->get_contact_mail($e,'booking');
+
+                $a = $_mymail[0];
+                if(array_key_exists($a,$data))
+                {
+                    $data[$a][] = array('date' => $date, 'building' => 
$event['building_name'], 'resource' => $resource['name'], 'start' => $start, 
'end' => $end );
+                }
+                else
+                {
+                    $data[$a] =  array( array('date' => $date, 'building' => 
$event['building_name'], 'resource' => $resource['name'], 'start' => $start, 
'end' => $end ));
+                }
+                if ($_mymail[1])
+                {
+                    $b = $_mymail[1];
+                    if(array_key_exists($a,$data))
+                    {
+                        $data[$b][] = array('date' => $date, 'building' => 
$event['building_name'], 'resource' => $resource['name'], 'start' => $start, 
'end' => $end );
+                    }
+                    else
+                    {
+                        $data[$b] =  array( array('date' => $date, 'building' 
=> $event['building_name'], 'resource' => $resource['name'], 'start' => $start, 
'end' => $end ));
+                    }
+                }
+
+            }
         }
+        return $data;
+    }
 
-        if ($_POST['org_from'] < $event['from_'] && $_POST['org_to'] == 
$event['to_']) {
-            $event['from_'] = $_POST['org_from'];
-            $event['to_'] = $event['from_'];
-            $freetime = pretty_timestamp($event['from_']).' til 
'.pretty_timestamp($event['to_']);
+    public function add()
+    {
+        $errors = array();
+        $event = array('customer_internal' => 0);
+        if($_SERVER['REQUEST_METHOD'] == 'POST')
+        {
+
+            array_set_default($_POST, 'from_', array());
+            array_set_default($_POST, 'to_', array());
+            $event['dates'] = array_map(array(self, '_combine_dates'), 
$_POST['from_'], $_POST['to_']);
+
+            array_set_default($_POST, 'resources', array());
+            $event['active'] = '1';
+            $event['completed'] = '0';
+
+            array_set_default($event, 'audience', array());
+            array_set_default($event, 'agegroups', array());
+            $event['secret'] = $this->generate_secret();
+            $event['is_public'] = 1;
+            $event['building_name'] = $_POST['building_name'];
+
+            if ($_POST['organization_name'] || $_POST['org_id2']) {
+                if ($_POST['organization_name']) {
+                    $event['customer_organization_name'] = 
$_POST['organization_name'];
+                    $event['customer_organization_id'] = 
$_POST['organization_id'];
+                    $organization = 
$this->organization_bo->read_single(intval(phpgw::get_var('organization_id', 
'POST')));
+                } else {
+                    $orgid = $this->bo->so->get_org($_POST['org_id2']);
+                    $event['org_id2'] = $_POST['org_id2'];
+                    $event['customer_organization_name'] = $orgid['name'];
+                    $event['customer_organization_id'] = $orgid['id'];
+                    $organization = 
$this->organization_bo->read_single(intval($orgid['id']));
+                }
+
+                if ($organization['customer_internal'] == 0) {
+                    $_POST['customer_identifier_type'] = 
$organization['customer_identifier_type'];
+                    $_POST['customer_internal'] = 
$organization['customer_internal'];
+                    if (strlen($organization['customer_organization_number']) 
== 9) {
+                        $_POST['customer_organization_number'] = 
$organization['customer_organization_number'];
+                    } else {
+                        $errors['organization_number'] = lang('The 
organization number is wrong or not present');
+                    }
+                } else {
+                    $_POST['customer_identifier_type'] = 'organization_number';
+                    $_POST['customer_internal'] = 
$organization['customer_internal'];
+                    if ((strlen($organization['customer_number']) == 6) || 
(strlen($organization['customer_number']) == 5)) {
+                        $_POST['customer_organization_number'] = 
$organization['customer_number'];
+                    } else {
+                        $errors['resource_number'] = lang('The resource number 
is wrong or not present');
+                    }
+                }
+                if ($organization['contacts'][0]['name'] != '') {
+                    $_POST['contact_name'] = 
$organization['contacts'][0]['name'];
+                    $_POST['contact_email'] = 
$organization['contacts'][0]['email'];
+                    $_POST['contact_phone'] = 
$organization['contacts'][0]['phone'];
+                } else {
+                    $_POST['contact_name'] = 
$organization['contacts'][1]['name'];
+                    $_POST['contact_email'] = 
$organization['contacts'][1]['email'];
+                    $_POST['contact_phone'] = 
$organization['contacts'][1]['phone'];
+                }
+            }
+            if (!$_POST['application_id'])
+            {
+                $temp_errors = array();
+                foreach( $event['dates'] as $checkdate)
+                {
+                    $event['from_'] = $checkdate['from_'];
+                    $_POST['from_'] = $checkdate['from_'];
+                    $event['to_'] = $checkdate['to_'];
+                    $_POST['to_'] = $checkdate['to_'];
+                    list($event, $errors) = 
$this->extract_and_validate($event);
+                    $time_from = split(" ",$_POST['from_']);
+                    $time_to = split(" ",$_POST['to_']);
+                    if ($time_from[0] == $time_to[0])
+                    {
+                        if ($time_from[1] >= $time_to[1])
+                        {
+                            $errors['time'] = lang('Time is set wrong');
+                        }
+                    }
+                    if ($errors != array()) {
+                        $temp_errors = $errors;
+                    }
+                }
+                $errors = $temp_errors;
+            }
+            else
+            {
+                list($event, $errors) = $this->extract_and_validate($event);
+                $time_from = split(" ",$_POST['from_']);
+                $time_to = split(" ",$_POST['to_']);
+                if ($time_from[0] == $time_to[0]) {
+                    if ($time_from[1] >= $time_to[1])
+                    {
+                        $errors['time'] = lang('Time is set wrong');
+                    }
+                }
+            }
+
+            if ($_POST['cost'] != 0 and 
!$event['customer_organization_number'] and !$event['customer_ssn']) {
+                $errors['invoice_data'] = lang('There is set a cost, but no 
invoice data is filled inn');
+            }
+            if(($_POST['organization_name'] != '' or $_POST['org_id2'] != '') 
and isset($errors['contact_name'])) {
+                $errors['contact_name'] = lang('Organization is missing 
booking charge');
+            }
+            if(!$errors['event'] && !$errors['from_'] && !$errors['time'] && 
!$errors['invoice_data'] && !$errors['resource_number'] && 
!$errors['organization_number'] && !$errors['contact_name'] && !$errors['cost'] 
&& !$errors['activity_id'])
+            {
+                if (!$_POST['application_id'])
+                {
+                    $allids = array();
+                    foreach( $event['dates'] as $checkdate)
+                    {
+                        $event['from_'] = $checkdate['from_'];
+                        $event['to_'] = $checkdate['to_'];
+
+                        unset($event['comments']);
+                        if (count($event['dates']) < 2)
+                        {
+                            $this->add_comment($event, lang('Event was 
created'));
+                            $receipt = $this->bo->add($event);
+                        }
+                        else
+                        {
+                            $this->add_comment($event, lang('Multiple Events 
was created'));
+                            $receipt = $this->bo->add($event);
+                            $allids[] = array($receipt['id']);
+                        }
+                    }
+                    if ($allids)
+                    {
+                        $this->bo->so->update_comment($allids);
+                        $this->bo->so->update_id_string();
+                    }
+                }
+                else
+                {
+                    $this->add_comment($event, lang('Event was created'));
+                    $receipt = $this->bo->add($event);
+                    $this->bo->so->update_id_string();
+                }
+                $this->redirect(array('menuaction' => 'booking.uievent.edit', 
'id'=>$receipt['id'], 'secret'=>$event['secret'], 'warnings'=>$errors));
+            }
         }
-        elseif ($_POST['org_from'] == $event['from_'] && $_POST['org_to'] > 
$event['to_']) {
-            $event['from_'] = $event['to_'];
-            $event['to_'] = $_POST['org_to'];
-            $freetime = pretty_timestamp($event['from_']).' til 
'.pretty_timestamp($event['to_']);
+        if ($errors['event']) {
+            $errors['warning'] = lang('NB! No data will be saved, if you 
navigate away you will loose all.');
         }
-        elseif ($_POST['org_from'] < $event['from_'] && $_POST['org_to'] > 
$event['to_']) {
-            $freetime = pretty_timestamp($_POST['org_from']).' til 
'.pretty_timestamp($event['from_'])." og \n";
-            $freetime .= pretty_timestamp($event['to_']).' til 
'.pretty_timestamp($_POST['org_to']);
+        $default_dates = array_map(array(self, '_combine_dates'), '','');
+        array_set_default($event, 'dates', $default_dates);
+
+        if (!phpgw::get_var('from_report', 'POST'))
+        {
+            $this->flash_form_errors($errors);
         }
 
-        $body .= '</p><p>'.$event['customer_organization_name'].' har 
avbestilt tid i '.$event['building_name'].':<br />';
-        $body .= implode(", 
",$this->so->get_resources(implode(",",$event['resources']))).' den '.$freetime;
-        $body .= ' - <a href="'.$link.'">'.lang('Check calendar').'</a></p>';
-        $body .= 
"<p>".$config->config_data['application_mail_signature']."</p>";
+        self::add_javascript('booking', 'booking', 'event.js');
+        array_set_default($event, 'resources', array());
+        $event['resources_json'] = json_encode(array_map('intval', 
$event['resources']));
+        $event['cancel_link'] = self::link(array('menuaction' => 
'booking.uievent.index'));
+        array_set_default($event, 'cost', '0');
+        $activities = $this->activity_bo->fetch_activities();
+        $activities = $activities['results'];
+        $agegroups = $this->agegroup_bo->fetch_age_groups();
+        $agegroups = $agegroups['results'];
+        $audience = $this->audience_bo->fetch_target_audience();
+        $audience = $audience['results'];
 
-        foreach ($mailadresses as $adr)
+        $this->install_customer_identifier_ui($event);
+
+        $this->add_template_helpers();
+        self::render_template('event_new', array('event' => $event, 
'activities' => $activities, 'agegroups' => $agegroups, 'audience' => 
$audience));
+    }
+
+    private function send_mailnotification($receiver, $subject, $body)
+    {
+        $send = CreateObject('phpgwapi.send');
+
+        $config        = CreateObject('phpgwapi.config','booking');
+        $config->read();
+        $from = isset($config->config_data['email_sender']) && 
$config->config_data['email_sender'] ? $config->config_data['email_sender'] : 
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
+
+        if (strlen(trim($body)) == 0)
         {
+            echo "failed\n";
+            return false;
+        }
+
+        if (strlen($receiver) > 0)
+        {
+            echo "$receiver - mail\n";
             try
             {
-                $send->msg('email', $adr, $subject, $body, '', '', '', $from, 
'', 'html');
+                $send->msg('email', $receiver, $subject, $body, '', '', '', 
$from, '', 'html');
             }
             catch (phpmailerException $e)
             {
@@ -151,79 +503,331 @@
         }
     }
 
-    /**
-     * @ Send message about cancelation/modification on event to admins of 
building.
-     */
-    function send_admin_notification($type, $event, $message = null, $orgdate 
= null)
+    public function edit()
     {
-        if (!(isset($GLOBALS['phpgw_info']['server']['smtp_server']) && 
$GLOBALS['phpgw_info']['server']['smtp_server']))
-            return;
-        $send = CreateObject('phpgwapi.send');
-
+        $id = intval(phpgw::get_var('id', 'GET'));
+        $event = $this->bo->read_single($id);
+        $building_info = $this->bo->so->get_building_info($id);
+        $event['building_id'] = $building_info['id'];
+        $event['building_name'] = $building_info['name'];
         $config        = CreateObject('phpgwapi.config','booking');
         $config->read();
 
-        $from = isset($config->config_data['email_sender']) && 
$config->config_data['email_sender'] ? $config->config_data['email_sender'] : 
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
-
         $external_site_address = 
isset($config->config_data['external_site_address']) && 
$config->config_data['external_site_address'] ? 
$config->config_data['external_site_address'] : 
$GLOBALS['phpgw_info']['server']['webserver_url'];
+        $link = 
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uibuilding.schedule&id='.$event['building_id']."&date=".substr($event['from_'],0,-9);
+        $errors = array();
+        $customer = array();
 
-        if (!$type) {
-            $subject = $config->config_data['event_canceled_mail_subject'];
+        if ($event['customer_identifier_type'])
+        {
+            $customer['customer_identifier_type'] = 
$event['customer_identifier_type'];
+            $customer['customer_ssn'] = $event['customer_ssn'];
+            $customer['customer_organization_number'] = 
$event['customer_organization_number'];
+            $customer['customer_internal'] = $event['customer_internal'];
+            $orginfo = 
$this->bo->so->get_org($event['customer_organization_number']);
+            $customer['customer_organization_id'] = $orginfo['id'];
+            $customer['customer_organization_name'] = $orginfo['name'];
         } else {
-            $subject = $config->config_data['event_edited_mail_subject'];
+            $customer['customer_organization_name'] = 
$event['customer_organization_name'];
+            $customer['customer_organization_id'] = 
$event['customer_organization_id'];
+            $organization = 
$this->organization_bo->read_single($event['customer_organization_id']);
+            $customer['customer_identifier_type'] = 'organization_number';
+            $customer['customer_ssn'] = $organization['customer_internal'];
+            $customer['customer_organization_number'] = 
$organization['organization_number'];
+            $customer['customer_internal'] = 
$organization['customer_internal'];
         }
 
-        $body = '<b>Beksjed fra 
'.$event['customer_organization_name'].'</b><br />'.$message.'<br /><br/>';
-        $body .= '<b>Kontaktperson:</b> '.$event['contact_name'].'<br />';
-        $body .= '<b>Epost:</b> '.$event['contact_email'].'<br />';
-        $body .= '<b>Telefon:</b> '.$event['contact_phone'].'<br /><br />';
-        $body .= '<br /><b>Epost som er sendt til brukere av Hallen:</b><br 
/>';
+        list($event, $errors) = $this->extract_and_validate($event);
 
-        $mailadresses = $config->config_data['emails'];
-        $mailadresses = explode("\n",$mailadresses);
+        if ($event['customer_organization_number']) {
+            $orginfo = 
$this->bo->so->get_org($event['customer_organization_number']);
+            $event['customer_organization_id'] = $orginfo['id'];
+            $event['customer_organization_name'] = $orginfo['name'];
+        }
 
-        $link = 
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uibuilding.schedule&id=';
-        $link .= $event['building_id'].'&date='.substr($event['from_'], 0, 10);
+        if($_SERVER['REQUEST_METHOD'] == 'POST') {
+            if (!$_POST['organization_name']) {
+                $event['customer_organization_name'] = Null;
+                $event['customer_organization_id'] = Null;
+            }
+            array_set_default($_POST, 'resources', array());
 
-        if (!$type) {
-            $body .= $config->config_data['event_canceled_mail_subject'];
-            $body .= "<p>".$config->config_data['event_canceled_mail'];
-        } else {
-            $body .= $config->config_data['event_edited_mail_subject'];
-            $body .= "<p>".$config->config_data['event_edited_mail'];
+            if ($_POST['organization_name']) {
+                $event['customer_organization_name'] = 
$_POST['organization_name'];
+                $event['customer_organization_id'] = $_POST['organization_id'];
+                $organization = 
$this->organization_bo->read_single(intval(phpgw::get_var('organization_id', 
'POST')));
+
+                if ($organization['customer_internal'] == 0) {
+                    $event['customer_identifier_type'] = 
$organization['customer_identifier_type'];
+                    $event['customer_internal'] = 
$organization['customer_internal'];
+                    if (strlen($organization['customer_organization_number']) 
== 9) {
+                        $event['customer_organization_number'] = 
$organization['customer_organization_number'];
+                    } else {
+                        $errors['organization_number'] = lang('The 
organization number is wrong or not present');
+                    }
+                } else {
+                    $event['customer_identifier_type'] = 'organization_number';
+                    $event['customer_internal'] = 
$organization['customer_internal'];
+                    if ((strlen($organization['customer_number']) == 6) || 
(strlen($organization['customer_number']) == 5)) {
+                        $event['customer_organization_number'] = 
$organization['customer_number'];
+                    } else {
+                        $errors['resource_number'] = lang('The resource number 
is wrong or not present');
+                    }
+                }
+            } elseif ($_POST['customer_identifier_type'] == 'ssn') {
+                $event['customer_identifier_type'] = 'ssn';
+                $event['customer_ssn'] = $_POST['customer_ssn'];
+
+            } elseif ($_POST['customer_identifier_type'] == 
'organization_number') {
+                $event['customer_identifier_type'] = 'organization_number';
+                $event['customer_organization_number'] = 
$_POST['customer_organization_number'];
+            }
+
+            if ($_POST['cost'] != 0 and 
!$event['customer_organization_number'] and !$event['customer_ssn']) {
+                $errors['invoice_data'] = lang('There is set a cost, but no 
invoice data is filled inn');
+            }
+
+            if (!$errors['event'] and !$errors['resource_number'] and 
!$errors['organization_number'] and !$errors['invoice_data'] && 
!$errors['contact_name'] && !$errors['cost']) {
+                if ((phpgw::get_var('sendtorbuilding', 'POST') || 
phpgw::get_var('sendtocontact', 'POST') || phpgw::get_var('sendtocollision', 
'POST')) && phpgw::get_var('active', 'POST')) {
+
+                    if (phpgw::get_var('sendtocollision', 'POST') || 
phpgw::get_var('sendtocontact', 'POST') || phpgw::get_var('sendtorbuilding', 
'POST')) {
+                        $maildata = 
$this->create_sendt_mail_notification_comment_text($event, $errors);
+
+                        if (phpgw::get_var('sendtocollision', 'POST')) {
+                            $comment_text_log = "<span style='color: green;'>" 
. lang('Message sent about the changes in the reservations') . ':</span><br />';
+                            $res = array();
+                            $resname = '';
+                            foreach ($event['resources'] as $resid) {
+                                $res = 
$this->bo->so->get_resource_info($resid);
+                                $resname .= $res['name'] . ', ';
+                            }
+                            $comment_text_log .= $event['building_name'] . " 
(" . substr($resname, 0, -2) . ") " . pretty_timestamp($event['from_']) . " - " 
. pretty_timestamp($event['to_']);
+                            $this->add_comment($event, $comment_text_log);
+                        }
+                        if (phpgw::get_var('sendtocollision', 'POST')) {
+
+                            $subject = 
$config->config_data['event_conflict_mail_subject'];
+                            $body = "<p>" . 
$config->config_data['event_mail_conflict_contact_active_collision'] . "<br 
/>\n" . phpgw::get_var('mail', 'POST') . "\n";
+                            $body .= '<br /><a href="' . $link . '">Link til ' 
. $config->config_data['application_mail_systemname'] . '</a></p>';
+                            $body .= "<p>" . 
$config->config_data['application_mail_signature'] . "</p>";
+                            $mail_sendt_to = '';
+                            foreach (array_keys($maildata) as $mail) {
+                                $mailbody = '';
+                                $comment_text_log = "Reserverasjoner som har 
blitt overskrevet: \n";
+                                $mail_sendt_to = $mail_sendt_to . ' ' . $mail;
+                                foreach ($maildata[$mail] as $data) {
+                                    $comment_text_log .= $data['date'] . ', ' 
. $data['building'] . ', ' . $data['resource'] . ', Kl. ' . $data['start'] . ' 
- ' . $data['end'] . " \n";
+                                }
+                                $mailbody .= $body . "<pre>" . 
$comment_text_log . "</pre>";
+                                $this->send_mailnotification($mail, $subject, 
$mailbody);
+                            }
+                            if (strpos($mail_sendt_to, '@') !== False) {
+                                $comment = "<p>Melding om konflikt er sendt 
til" . $mail_sendt_to . "<br />\n" . phpgw::get_var('mail', 'POST') . "</p>";
+                                $this->add_comment($event, $comment);
+                            }
+                        }
+                        if (phpgw::get_var('sendtocontact', 'POST')) {
+                            $subject = 
$config->config_data['event_change_mail_subject'];
+                            $body = "<p>" . 
$config->config_data['event_change_mail'] . "<br />\n" . phpgw::get_var('mail', 
'POST');
+                            $body .= '<br /><a href="' . $link . '">Link til ' 
. $config->config_data['application_mail_systemname'] . '</a></p>';
+                            
$this->send_mailnotification($event['contact_email'], $subject, $body);
+                            $comment = $comment_text_log . '<br />Denne er 
sendt til ' . $event['contact_email'];
+                            $this->add_comment($event, $comment);
+                        }
+                        if (phpgw::get_var('sendtorbuilding', 'POST')) {
+
+                            $subject = 
$config->config_data['event_mail_building_subject'];
+
+                            $body = "<p>" . 
$config->config_data['event_mail_building'] . "<br />\n" . 
phpgw::get_var('mail', 'POST') . "</p>";
+
+                            if ($event['customer_organization_name']) {
+                                $username = 
$event['customer_organization_name'];
+                            } else {
+                                $username = $event['contact_name'];
+                            }
+                            $res = array();
+                            $resname = '';
+                            foreach ($event['resources'] as $resid) {
+                                $res = 
$this->bo->so->get_resource_info($resid);
+                                $resname .= $res['name'] . ', ';
+                            }
+                            $resources = $event['building_name'] . " (" . 
substr($resname, 0, -2) . ") " . pretty_timestamp($event['from_']) . " - " . 
pretty_timestamp($event['to_']);
+
+                            $body .= '<p>' . $username . ' har fått innvilget 
et arrangement i ' . $resources . ".";
+                            $body .= '<br /><a href="' . $link . '">Link til ' 
. $config->config_data['application_mail_systemname'] . '</a></p>';
+                            $body .= "<p>" . 
$config->config_data['application_mail_signature'] . "</p>";
+
+                            $sendt = 0;
+                            $mail_sendt_to = '';
+                            if ($event['contact_email']) {
+                                $sendt++;
+                                $mail_sendt_to = $mail_sendt_to . ' ' . 
$event['contact_email'];
+                                
$this->send_mailnotification($event['contact_email'], $subject, $body);
+                            }
+                            if ($building_info['email']) {
+                                $sendt++;
+                                $mail_sendt_to = $mail_sendt_to . ' ' . 
$building_info['email'];
+                                
$this->send_mailnotification($building_info['email'], $subject, $body);
+                            }
+                            if ($building_info['tilsyn_email']) {
+                                $sendt++;
+                                $mail_sendt_to = $mail_sendt_to . ' ' . 
$building_info['tilsyn_email'];
+                                
$this->send_mailnotification($building_info['tilsyn_email'], $subject, $body);
+                            }
+                            if ($building_info['tilsyn_email2']) {
+                                $sendt++;
+                                $mail_sendt_to = $mail_sendt_to . ' ' . 
$building_info['tilsyn_email2'];
+                                
$this->send_mailnotification($building_info['sendtorbuilding_email2'], 
$subject, $body);
+                            }
+                            if ($_POST['sendtorbuilding_email1']) {
+                                $sendt++;
+                                $mail_sendt_to = $mail_sendt_to . ' ' . 
$_POST['sendtorbuilding_email1'];
+                                
$this->send_mailnotification($_POST['sendtorbuilding_email1'], $subject, $body);
+                            }
+                            if ($_POST['sendtorbuilding_email2']) {
+                                $sendt++;
+                                $mail_sendt_to = $mail_sendt_to . ' ' . 
$_POST['sendtorbuilding_email2'];
+                                
$this->send_mailnotification($_POST['sendtorbuilding_email2'], $subject, $body);
+                            }
+                            if ($sendt <= 0) {
+                                $errors['mailtobuilding'] = lang('Unable to 
send warning, No mailadresses found');
+                            } else {
+                                $comment_text_log = phpgw::get_var('mail', 
'POST');
+                                $comment = 'Melding om endring er sendt til 
ansvarlig for bygg: ' . $mail_sendt_to . '<br />' . $comment_text_log;
+                                $this->add_comment($event, $comment);
+                            }
+                        }
+                    }
+                }
+                if (!phpgw::get_var('active', 'POST')) {
+
+                    $subject = 
$config->config_data['event_canceled_mail_subject'];
+                    $body = 
$config->config_data['event_canceled_mail']."\n".phpgw::get_var('mail', 'POST');
+
+                    if ($event['customer_organization_name']) {
+                        $comment_text_log = 
$event['customer_organization_name'];
+                    } else {
+                        $comment_text_log = $event['contact_name'];
+                    }
+                    $comment_text_log = $comment_text_log.' sitt arrangement i 
'.$event['building_name'].' '.date('d-m-Y H:i', strtotime($event['from_']))." 
har blitt kansellert.";
+
+                    $body .= "<br />\n".$comment_text_log;
+                    $body = html_entity_decode($body);
+
+                    $sendt = 0;
+                    $mail_sendt_to = '';
+                    if($building_info['email']) {
+                        $sendt++;
+                        $mail_sendt_to = $mail_sendt_to.' 
'.$building_info['email'];
+                        $this->send_mailnotification($building_info['email'], 
$subject, $body);
+                    }
+                    if ($building_info['tilsyn_email']) {
+                        $sendt++;
+                        $mail_sendt_to = $mail_sendt_to.' 
'.$building_info['tilsyn_email'];
+                        
$this->send_mailnotification($building_info['tilsyn_email'], $subject, $body);
+
+                    }
+                    if ($building_info['tilsyn_email2']) {
+                        $sendt++;
+                        $mail_sendt_to = $mail_sendt_to.' 
'.$building_info['tilsyn_email2'];
+                        
$this->send_mailnotification($building_info['tilsyn_email2'], $subject, $body);
+                    }
+                    if ($_POST['sendtorbuilding_email1']) {
+                        $sendt++;
+                        $mail_sendt_to = $mail_sendt_to.' 
'.$_POST['sendtorbuilding_email1'];
+                        
$this->send_mailnotification($_POST['sendtorbuilding_email1'], $subject, $body);
+
+                    }
+                    if ($_POST['sendtorbuilding_email2']) {
+                        $sendt++;
+                        $mail_sendt_to = $mail_sendt_to.' 
'.$_POST['sendtorbuilding_email2'];
+                        
$this->send_mailnotification($_POST['sendtorbuilding_email2'], $subject, $body);
+                    }
+                    if ($sendt <= 0) {
+                        $errors['mailtobuilding'] = lang('Unable to send 
warning, No mailadresses found');
+                    }
+                    else
+                    {
+                        $comment = '<span style="color:red;">Dette 
arrangemenet er kanselert</span>. Denne er sendt til '.$mail_sendt_to.'<br 
/>'.phpgw::get_var('mail', 'POST');
+                        $this->add_comment($event,$comment);
+                    }
+                }
+                $receipt = $this->bo->update($event);
+                $this->redirect(array('menuaction' => 'booking.uievent.edit', 
'id' => $event['id']));
+            }
         }
 
-        if ($_POST['org_from'] < $event['from_'] && $_POST['org_to'] == 
$event['to_']) {
-            $event['from_'] = $_POST['org_from'];
-            $event['to_'] = $event['from_'];
-            $freetime = pretty_timestamp($event['from_']).' til 
'.pretty_timestamp($event['to_']);
+        if($errors['allocation'])
+        {
+            $errors['allocation'] = lang('Event created, Overlaps with 
existing allocation, Remember to send a notification');
         }
-        elseif ($_POST['org_from'] == $event['from_'] && $_POST['org_to'] > 
$event['to_']) {
-            $event['from_'] = $event['to_'];
-            $event['to_'] = $_POST['org_to'];
-            $freetime = pretty_timestamp($event['from_']).' til 
'.pretty_timestamp($event['to_']);
+        elseif($errors['booking'])
+        {
+            $errors['booking'] = lang('Event created, Overlaps with existing 
booking, Remember to send a notification');
         }
-        elseif ($_POST['org_from'] < $event['from_'] && $_POST['org_to'] > 
$event['to_']) {
-            $freetime = pretty_timestamp($_POST['org_from']).' til 
'.pretty_timestamp($event['from_'])." og \n";
-            $freetime .= pretty_timestamp($event['to_']).' til 
'.pretty_timestamp($_POST['org_to']);
+        $this->flash_form_errors($errors);
+        if ($customer['customer_identifier_type'])
+        {
+            $event['customer_identifier_type'] = 
$customer['customer_identifier_type'];
+            $event['customer_ssn'] = $customer['customer_ssn'];
+            $event['customer_organization_number'] = 
$customer['customer_organization_number'];
+            $event['customer_internal'] = $customer['customer_internal'];
         }
 
-        $body .= '</p><p>'.$event['customer_organization_name'].' har 
avbestilt tid i '.$event['building_name'].':<br />';
-        $body .= implode(", 
",$this->so->get_resources(implode(",",$event['resources']))).' den '.$freetime;
-        $body .= ' - <a href="'.$link.'">'.lang('Check calendar').'</a></p>';
-        $body .= 
"<p>".$config->config_data['application_mail_signature']."</p>";
+        self::add_javascript('booking', 'booking', 'event.js');
+        $event['resources_json'] = json_encode(array_map('intval', 
$event['resources']));
+        $event['application_link'] = self::link(array('menuaction' => 
'booking.uiapplication.show', 'id'=> $event['application_id']));
+        $event['cancel_link'] = self::link(array('menuaction' => 
'booking.uievent.index'));
+        $activities = $this->activity_bo->fetch_activities();
+        $activities = $activities['results'];
+#                      $comments = array_reverse($event['comments']);
+        $comments = $this->bo->so->get_ordered_comments($id);
+        $agegroups = $this->agegroup_bo->fetch_age_groups();
+        $agegroups = $agegroups['results'];
+        $audience = $this->audience_bo->fetch_target_audience();
+        $audience = $audience['results'];
+        $this->install_customer_identifier_ui($event);
+        $this->add_template_helpers();
+        self::render_template('event_edit', array('event' => $event, 
'activities' => $activities, 'agegroups' => $agegroups, 'audience' => 
$audience, 'comments' => $comments));
+    }
 
-        foreach ($mailadresses as $adr)
+    public function delete()
+    {
+        $event_id = phpgw::get_var('event_id', 'GET');
+        $application_id = phpgw::get_var('application_id', 'GET');
+
+        if ($GLOBALS['phpgw']->acl->check('admin', phpgwapi_acl::ADD, 
'booking')) {
+            $this->bo->so->delete_event($event_id);
+        }
+        if (isset($application_id)) {
+            $this->redirect(array('menuaction' => 
'booking.uiapplication.show', 'id'=>$application_id));
+        } else {
+            $this->redirect(array('menuaction' => 'booking.uievent.index'));
+        }
+
+    }
+
+    public function info()
+    {
+        $event = $this->bo->read_single(intval(phpgw::get_var('id', 'GET')));
+        $resources = 
$this->resource_bo->so->read(array('filters'=>array('id'=>$event['resources']), 
'sort'=>'name'));
+        $event['resources'] = $resources['results'];
+        $res_names = array();
+        foreach($event['resources'] as $res)
         {
-            try
-            {
-                $send->msg('email', $adr, $subject, $body, '', '', '', $from, 
'', 'html');
-            }
-            catch (phpmailerException $e)
-            {
-                // TODO: Inform user if something goes wrong
-            }
+            $res_names[] = $res['name'];
         }
+        $event['resource'] = phpgw::get_var('resource', 'GET');
+        $event['resource_info'] = join(', ', $res_names);
+        $event['building_link'] = self::link(array('menuaction' => 
'booking.uibuilding.show', 'id' => $event['resources'][0]['building_id']));
+        $event['org_link'] = self::link(array('menuaction' => 
'booking.uiorganization.show', 'id' => $event['organization_id']));
+        $event['add_link'] = self::link(array('menuaction' => 
'booking.uibooking.add', 'allocation_id'=>$event['id'], 
'from_'=>$event['from_'], 'to_'=>$event['to_'], 
'resource'=>$event['resource']));
+        $event['when'] = pretty_timestamp($event['from_']).' - 
'.pretty_timestamp($event['to_']);
+
+        $event['edit_link'] = self::link(array('menuaction' => 
'booking.uievent.edit', 'id' => $event['id']));
+
+        self::render_template('event_info', array('event'=>$event));
+        $GLOBALS['phpgw']->xslttpl->set_output('wml'); // Evil hack to disable 
page chrome
     }
 
 }

Modified: branches/stavangerkommune/booking/inc/class.soresource.inc.php
===================================================================
--- branches/stavangerkommune/booking/inc/class.soresource.inc.php      
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/inc/class.soresource.inc.php      
2015-02-12 11:33:05 UTC (rev 12739)
@@ -18,6 +18,7 @@
                                        'type'                  => array('type' 
=> 'string', 'query' => true, 'required' => true),
                                        'description'                   => 
array('type' => 'string', 'query' => true, 'required' => false),
                                        'activity_id'                   => 
array('type' => 'int', 'required' => false),
+                                       'organizations_ids'             => 
array('type' => 'string'),
                                        'building_name' => array('type' => 
'string',
                                                  'query'               => true,
                                                  'join'                => 
array(

Modified: branches/stavangerkommune/booking/inc/class.uievent.inc.php
===================================================================
--- branches/stavangerkommune/booking/inc/class.uievent.inc.php 2015-02-12 
09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/inc/class.uievent.inc.php 2015-02-12 
11:33:05 UTC (rev 12739)
@@ -1,843 +1,376 @@
+
 <?php
-       phpgw::import_class('booking.uicommon');
-       phpgw::import_class('phpgwapi.send');
+phpgw::import_class('booking.uievent');
 
-       class booking_uievent extends booking_uicommon
+class bookingfrontend_uievent extends booking_uievent
+{
+       public $public_functions = array
+       (
+               'info'                          =>      true,
+               'report_numbers'        =>      true,
+               'cancel'                        =>      true,
+               'edit'              =>  true,
+       );
+
+       public function __construct()
        {
-               public $public_functions = array
-               (
-                       'index'                 =>      true,
-                       'add'                   =>      true,
-                       'edit'                  =>      true,
-                       'delete'                        =>      true,
-                       'info'                  =>      true,
-                       'toggle_show_inactive'  =>      true,
-               );
-               
-               protected $customer_id;
+               parent::__construct();
+               $this->resource_bo = CreateObject('booking.boresource');
+               $this->building_bo = CreateObject('booking.bobuilding');
+               $this->organization_bo = CreateObject('booking.boorganization');
+               $this->booking_bo = CreateObject('booking.bobooking');
+       }
 
-               public function __construct()
+       public function edit()
+       {
+               $id = intval(phpgw::get_var('id', 'GET'));
+               $event = $this->bo->read_single($id);
+               $building_info = $this->bo->so->get_building_info($id);
+               $event['building_id'] = $building_info['id'];
+               $event['building_name'] = $building_info['name'];
+               $bouser = CreateObject('bookingfrontend.bouser');
+               $config = CreateObject('phpgwapi.config','booking');
+               $config->read();
+               $errors = array();
+               $customer = array();
+
+               if ($event['customer_identifier_type'])
                {
-                       parent::__construct();
-                       $this->bo = CreateObject('booking.boevent');
-                       $this->customer_id = 
CreateObject('booking.customer_identifier');
-                       $this->activity_bo = CreateObject('booking.boactivity');
-                       $this->agegroup_bo = CreateObject('booking.boagegroup');
-                       $this->audience_bo = CreateObject('booking.boaudience');
-                       $this->organization_bo = 
CreateObject('booking.boorganization');
-                       $this->resource_bo = CreateObject('booking.boresource');
-                       self::set_active_menu('booking::applications::events');
-                       $this->fields = array('activity_id', 'description',
-                                                                               
'resources', 'cost', 'application_id',
-                                                                               
'building_id', 'building_name', 
-                                                                               
'contact_name', 'contact_email', 'contact_phone',
-                                                                               
'from_', 'to_', 'active', 'audience', 'reminder',
-                                                                               
'is_public', 'sms_total', 'customer_internal');
+                       $customer['customer_identifier_type'] = 
$event['customer_identifier_type'];
+                       $customer['customer_ssn'] = $event['customer_ssn'];
+                       $customer['customer_organization_number'] = 
$event['customer_organization_number'];
+                       $customer['customer_internal'] = 
$event['customer_internal'];
+                       $orginfo = 
$this->bo->so->get_org($event['customer_organization_number']);
+                       $customer['customer_organization_id'] = $orginfo['id'];
+                       $customer['customer_organization_name'] = 
$orginfo['name'];
+               } else {
+                       $customer['customer_organization_name'] = 
$event['customer_organization_name'];
+                       $customer['customer_organization_id'] = 
$event['customer_organization_id'];
+                       $organization = 
$this->organization_bo->read_single($event['customer_organization_id']);
+                       $customer['customer_identifier_type'] = 
'organization_number';
+                       $customer['customer_ssn'] = 
$organization['customer_internal'];
+                       $customer['customer_organization_number'] = 
$organization['organization_number'];
+                       $customer['customer_internal'] = 
$organization['customer_internal'];
                }
-               
-               public function index()
+               if ($config->config_data['split_pool'] == 'yes')
                {
-                       if(phpgw::get_var('phpgw_return_as') == 'json') {
-                               return $this->index_json();
-                       }
-                       self::add_javascript('booking', 'booking', 
'datatable.js');
-                       phpgwapi_yui::load_widget('datatable');
-                       phpgwapi_yui::load_widget('paginator');
-                       $data = array(
-                               'form' => array(
-                                       'toolbar' => array(
-                                               'item' => array(
-                                                       array(
-                                                               'type' => 
'link',
-                                                               'value' => 
lang('New event'),
-                                                               'href' => 
self::link(array('menuaction' => 'booking.uievent.add'))
-                                                       ),
-                                                       array('type' => 
'filter', 
-                                                               'name' => 
'buildings',
-                                'text' => lang('Building').':',
-                                'list' => $this->bo->so->get_buildings(),
-                                                       ),
-                                                       array('type' => 
'filter', 
-                                                               'name' => 
'activities',
-                                'text' => lang('Activity').':',
-                                'list' => 
$this->bo->so->get_activities_main_level(),
-                                                       ),
-                                                       array('type' => 'text', 
-                                                               'name' => 
'query'
-                                                       ),
-                                                       array(
-                                                               'type' => 
'submit',
-                                                               'name' => 
'search',
-                                                               'value' => 
lang('Search')
-                                                       ),
-                                                       array(
-                                                               'type' => 
'link',
-                                                               'value' => 
$_SESSION['showall'] ? lang('Show only active') : lang('Show all'),
-                                                               'href' => 
self::link(array('menuaction' => $this->url_prefix.'.toggle_show_inactive'))
-                                                       ),
-                                               )
-                                       ),
-                               ),
-                               'datatable' => array(
-                                       'source' => 
self::link(array('menuaction' => 'booking.uievent.index', 'phpgw_return_as' => 
'json')),
-                                       'field' => array(
-                                               array(
-                                                       'key' => 'id',
-                                                       'label' => lang('ID'),
-                                                       'formatter' => 
'YAHOO.booking.formatLink'
-                                               ),
-                                               array(
-                                                       'key' => 'description',
-                                                       'label' => 
lang('Event'),
-                                               ),
-                                               array(
-                                                       'key' => 
'activity_name',
-                                                       'label' => 
lang('Activity'),
-                                               ),
-                                               array(
-                                                       'key' => 
'customer_organization_name',
-                                                       'label' => 
lang('Organization'),
-                                               ),
-                                               array(
-                                                       'key' => 'contact_name',
-                                                       'label' => 
lang('Contact'),
-                                               ),
-                                               array(
-                                                       'key' => 
'building_name',
-                                                       'label' => 
lang('Building')
-                                               ),
-                                               array(
-                                                       'key' => 'from_',
-                                                       'label' => lang('From')
-                                               ),
-                                               array(
-                                                       'key' => 'to_',
-                                                       'label' => lang('To')
-                                               ),
-                                               array(
-                                                       'key' => 'active',
-                                                       'label' => 
lang('Active')
-                                               ),
-                                               array(
-                                                       'key' => 'link',
-                                                       'hidden' => true
-                                               )
-                                       )
-                               )
-                       );
-                       self::render_template('datatable', $data);
+                       $split = 1;
+               } else {
+                       $split = 0;
                }
+               $resources = $event['resources'];
+               
$activity=$this->organization_bo->so->get_resource_activity($resources);
+               $mailadresses = $this->building_users($event['building_id'], 
$split, $activity);
 
-               public function index_json()
+               
if(!$bouser->is_organization_admin($customer['customer_organization_id'])) {
+                       $date = substr($event['from_'], 0, 10);
+                       $this->redirect(array('menuaction' => 
'bookingfrontend.uibuilding.schedule', 'id'=> $event['building_id'], 'date' => 
$date));
+               }
 
-               {
-                       if(isset($_SESSION['showall']))
-                       {
-                       unset($filters['building_name']);
-                unset($filters['activity_id']);
-                       } else {
-                $testdata =  phpgw::get_var('buildings', 'int', 'REQUEST', 
null);
-                if ($testdata != 0) {
-                    $filters['building_name'] = 
$this->bo->so->get_building(phpgw::get_var('buildings', 'int', 'REQUEST', 
null));        
-                } else {
-                    unset($filters['building_name']);                
-                }
-                $testdata2 =  phpgw::get_var('activities', 'int', 'REQUEST', 
null);
-                if ($testdata2 != 0) {
-                    $filters['activity_id'] = 
$this->bo->so->get_activities(phpgw::get_var('activities', 'int', 'REQUEST', 
null));        
-                } else {
-                    unset($filters['activity_id']);                
-                }
-            }
-            
-                       $params = array(
-                               'start' => phpgw::get_var('startIndex', 'int', 
'REQUEST', 0),
-                               'results' => phpgw::get_var('results', 'int', 
'REQUEST', null),
-                               'query' => phpgw::get_var('query'),
-                               'sort'  => phpgw::get_var('sort'),
-                               'dir'   => phpgw::get_var('dir'),
-                               'filters' => $filters
-                       );
-                       $events = $this->bo->so->read($params);
+               $currres = $event['resources'];
 
-                       foreach($events['results'] as &$event)
-                       {
-                               $event['from_'] = 
pretty_timestamp($event['from_']);
-                               $event['to_'] = pretty_timestamp($event['to_']);
-                       }
+//            list($event, $errors) = $this->extract_and_validate($event);
 
-                       array_walk($events["results"], array($this, 
"_add_links"), "booking.uievent.edit");
-                       return $this->yui_results($events);
+               if ($event['customer_organization_number']) {
+                       $orginfo = 
$this->bo->so->get_org($event['customer_organization_number']);
+                       $event['customer_organization_id'] = $orginfo['id'];
+                       $event['customer_organization_name'] = $orginfo['name'];
                }
-               
-               private function _combine_dates($from_, $to_)
-               {
-                       return array('from_' => $from_, 'to_' => $to_);
-               }
 
-               protected function get_customer_identifier() {
-                       return $this->customer_id;
+               $orgdate = array();
+               foreach ($event['dates'] as $odate) {
+                       if(substr($odate['from_'],0,10) == 
substr($event['from_'],0,10)) {
+                               $orgdate['from'] = $odate['from_'];
+                               $orgdate['to'] = $odate['to_'];
+                       }
                }
-               
-               protected function extract_customer_identifier(&$data) {
-                       
$this->get_customer_identifier()->extract_form_data($data);
-               }
-               
-               protected function validate_customer_identifier(&$data) {
-                       return 
$this->get_customer_identifier()->validate($data);
-               }
-               
-               protected function install_customer_identifier_ui(&$entity) {
-                       $this->get_customer_identifier()->install($this, 
$entity);
-               }
-               
-               protected function validate(&$entity) {
-                       $errors = 
array_merge($this->validate_customer_identifier($entity), 
$this->bo->validate($entity));
-                       return $errors;
-               }
-               
-               protected function extract_form_data($defaults = array()) {
-                       $entity = array_merge($defaults, extract_values($_POST, 
$this->fields));
-                       $this->agegroup_bo->extract_form_data($entity);
-                       $this->extract_customer_identifier($entity);
-                       return $entity;
-               }
-               
-               protected function extract_and_validate($defaults = array()) {
-                       $entity = $this->extract_form_data($defaults);
-                       $errors = $this->validate($entity);
-                       return array($entity, $errors);
-               }
-               
-               protected function add_comment(&$event, $comment, $type = 
'comment') {
-                       $event['comments'][] = array(
-                               'time'=> 'now',
-                               'author'=>$this->current_account_fullname(),
-                               'comment'=>$comment,
-                               'type' => $type
-                       );
-               }
 
-           protected function 
create_sendt_mail_notification_comment_text($event,$errors)
-           {
-                       $data = array();
+               if($_SERVER['REQUEST_METHOD'] == 'POST')
+               {
+                       $test = $this->bo->read_single($event['id']);
+                       $event['from_'] = 
substr($_POST['org_from'],0,11).$_POST['from_'].":00";
+                       $event['to_'] = 
substr($_POST['org_to'],0,11).$_POST['to_'].":00";
+                       array_set_default($_POST, 'resources', array());
 
-                       foreach($errors['allocation'][0] as $e)
-                       {       
-                               foreach($event['resources'] as $res)
-                               {
-                                       $time = 
$this->bo->so->get_overlap_time_info($res,$e,'allocation');
-                                       
-                                       $from_ = new DateTime($time['from']);
-                                       $to_ = new DateTime($time['to']);
-                                       $date = $from_->format('d-m-Y');
-                                       $start = $from_->format('H:i');
-                                       $end = $to_->format('H:i');
+                       if ($event['from_'] < $test['from_'] || $event['to_'] > 
$test['to_']) {
+                               $errors['out_of_range'] = lang("You can't 
extend the event, for that contact administrator");
+                       }
 
-                                       $resource = 
$this->bo->so->get_resource_info($res);
-                                       $_mymail = 
$this->bo->so->get_contact_mail($e,'allocation');
-                               
-                                       $a = $_mymail[0];
-                                       if(array_key_exists($a,$data))
-                                       {
-                                               $data[$a][] = array('date' => 
$date, 'building' => $event['building_name'], 'resource' => $resource['name'], 
'start' => $start, 'end' => $end );        
-                                       }
-                                       else
-                                       {
-                                               $data[$a] =  array( 
array('date' => $date, 'building' => $event['building_name'], 'resource' => 
$resource['name'], 'start' => $start, 'end' => $end )); 
-                                       }
-                                       if ($_mymail[1])
-                                       {
-                                               $b = $_mymail[1];
-                                               if(array_key_exists($a,$data))
-                                               {
-                                                       $data[$b][] = 
array('date' => $date, 'building' => $event['building_name'], 'resource' => 
$resource['name'], 'start' => $start, 'end' => $end );        
-                                               }
-                                               else
-                                               {
-                                                       $data[$b] =  array( 
array('date' => $date, 'building' => $event['building_name'], 'resource' => 
$resource['name'], 'start' => $start, 'end' => $end )); 
-                                               }
-                                       }
+                       if (sizeof($currres) != sizeof($_POST['resources'])) {
+                               $errors['resource_number'] = lang("You can't 
change resources to the event, for that contact administrator");
+                       }
+
+                       if(!$errors['event'] and !$errors['resource_number'] 
and !$errors['organization_number'] and !$errors['invoice_data']  && 
!$errors['contact_name'] && !$errors['out_of_range'])
+                       {
+
+                               if ($event['from_'] > $test['from_'] || 
$event['to_'] < $test['to_']) {
+
+                                       $this->bo->send_notification(true, 
$event, $mailadresses, $orgdate);
                                }
+                               $message = '';
+                               $this->bo->send_admin_notification(true, 
$event, $message, $orgdate);
+                               $this->bo->update($event);
+                               $date = substr($event['from_'], 0, 10);
+                               $this->redirect(array('menuaction' => 
'bookingfrontend.uibuilding.schedule', 'id'=> $event['building_id'], 'date' => 
$date));
                        }
+               }
 
-                       foreach($errors['booking'][0] as $e)
-                       {       
-                               foreach($event['resources'] as $res)
-                               {
-                                       $time = 
$this->bo->so->get_overlap_time_info($res,$e,'booking');
+               $this->flash_form_errors($errors);
+               if ($customer['customer_identifier_type'])
+               {
+                       $event['customer_identifier_type'] = 
$customer['customer_identifier_type'];
+                       $event['customer_ssn'] = $customer['customer_ssn'];
+                       $event['customer_organization_number'] = 
$customer['customer_organization_number'];
+                       $event['customer_internal'] = 
$customer['customer_internal'];
+               }
 
-                                       $from_ = new DateTime($time['from']);
-                                       $to_ = new DateTime($time['to']);
-                                       $date = $from_->format('d-m-Y');
-                                       $start = $from_->format('H:i');
-                                       $end = $to_->format('H:i');
+               $date = substr($event['from_'], 0, 10);
+               self::add_javascript('booking', 'booking', 'event.js');
+               $event['resources_json'] = json_encode(array_map('intval', 
$event['resources']));
+               $event['cancel_link'] = self::link(array('menuaction' => 
'bookingfrontend.uibuilding.schedule', 'id'=> $event['building_id'], 'date' => 
$date));
+               $activities = $this->activity_bo->fetch_activities();
+               $activities = $activities['results'];
+               $comments = $this->bo->so->get_ordered_comments($id);
+               $agegroups = $this->agegroup_bo->fetch_age_groups();
+               $agegroups = $agegroups['results'];
+               $audience = $this->audience_bo->fetch_target_audience();
+               $audience = $audience['results'];
+               $this->install_customer_identifier_ui($event);
+               $this->add_template_helpers();
 
-                                       $resource = 
$this->bo->so->get_resource_info($res);
-                                       $_mymail = 
$this->bo->so->get_contact_mail($e,'booking');
+               self::render_template('event_edit', array('event' => $event, 
'activities' => $activities, 'agegroups' => $agegroups, 'audience' => 
$audience, 'comments' => $comments));
+       }
 
-                                       $a = $_mymail[0];
-                                       if(array_key_exists($a,$data))
-                                       {
-                                               $data[$a][] = array('date' => 
$date, 'building' => $event['building_name'], 'resource' => $resource['name'], 
'start' => $start, 'end' => $end );        
-                                       }
-                                       else
-                                       {
-                                               $data[$a] =  array( 
array('date' => $date, 'building' => $event['building_name'], 'resource' => 
$resource['name'], 'start' => $start, 'end' => $end )); 
-                                       }
-                                       if ($_mymail[1])
-                                       {
-                                               $b = $_mymail[1];
-                                               if(array_key_exists($a,$data))
-                                               {
-                                                       $data[$b][] = 
array('date' => $date, 'building' => $event['building_name'], 'resource' => 
$resource['name'], 'start' => $start, 'end' => $end );        
-                                               }
-                                               else
-                                               {
-                                                       $data[$b] =  array( 
array('date' => $date, 'building' => $event['building_name'], 'resource' => 
$resource['name'], 'start' => $start, 'end' => $end )); 
-                                               }
-                                       }
+       public function cancel()
+       {
+               $config = CreateObject('phpgwapi.config','booking');
+               $config->read();
 
-                               }
-                       }
-                       return $data;
-          }
+               $event = $this->bo->read_single(intval(phpgw::get_var('id', 
'GET')));
+               $bouser = CreateObject('bookingfrontend.bouser');
+               $errors = array();
 
-               public function add()
+               date_default_timezone_set("Europe/Oslo");
+               $currdate = new DateTime(phpgw::get_var('date'));
+               $cdate = $currdate->format('Y-m-d H:m:s');
+               if ($config->config_data['user_can_delete_events'] != 'yes')
                {
-                       $errors = array();
-                       $event = array('customer_internal' => 0);
-                       if($_SERVER['REQUEST_METHOD'] == 'POST')
-                       {
+                       $can_delete_events = 0;
 
-                               array_set_default($_POST, 'from_', array());
-                               array_set_default($_POST, 'to_', array());
-                               $event['dates'] = array_map(array(self, 
'_combine_dates'), $_POST['from_'], $_POST['to_']);
+               } else {
+                       $can_delete_events = 1;
+               }
+               if ($event['customer_organization_number']) {
+                       $orginfo = 
$this->bo->so->get_org($event['customer_organization_number']);
+                       $event['customer_organization_id'] = $orginfo['id'];
+                       $event['customer_organization_name'] = $orginfo['name'];
+               }
 
-                               array_set_default($_POST, 'resources', array());
-                               $event['active'] = '1';
-                               $event['completed'] = '0';
-                               
-                               array_set_default($event, 'audience', array());
-                               array_set_default($event, 'agegroups', array());
-                               $event['secret'] = $this->generate_secret();
-                               $event['is_public'] = 1;
-                               $event['building_name'] = 
$_POST['building_name'];
+               if ($config->config_data['split_pool'] == 'yes')
+               {
+                       $split = 1;
+               } else {
+                       $split = 0;
+               }
 
-                               if ($_POST['organization_name'] || 
$_POST['org_id2']) {
-                                       if ($_POST['organization_name']) {
-                                               
$event['customer_organization_name'] = $_POST['organization_name'];
-                                               
$event['customer_organization_id'] = $_POST['organization_id'];
-                                               $organization = 
$this->organization_bo->read_single(intval(phpgw::get_var('organization_id', 
'POST')));
+               $resources = $event['resources'];
+               
$activity=$this->organization_bo->so->get_resource_activity($resources);
+               $mailadresses = $this->building_users($event['building_id'], 
$split, $activity);
+               $extra_mailadresses = $this->resource_users($resources);
+               $mailadresses = array_merge($mailadresses, $extra_mailadresses);
+
+               if($_SERVER['REQUEST_METHOD'] == 'POST')
+               {
+                       if($cdate < $event['to_']) {
+                               
if($bouser->is_organization_admin($event['customer_organization_id'])) {
+                                       $this->bo->send_notification(false, 
$event, $mailadresses);
+                                       
$this->bo->send_admin_notification(false, $event, $_POST['message']);
+                                       if ($can_delete_events) {
+                                               
$this->bo->so->delete_event($event['id']);
                                        } else {
-                                               $orgid = 
$this->bo->so->get_org($_POST['org_id2']);
-                                               $event['org_id2'] = 
$_POST['org_id2'];
-                                               
$event['customer_organization_name'] = $orgid['name'];
-                                               
$event['customer_organization_id'] = $orgid['id'];
-                                               $organization = 
$this->organization_bo->read_single(intval($orgid['id']));
+                                               $event['active'] = 0;
+                                               $this->bo->update($event);
                                        }
-                                                                               
-                                       if ($organization['customer_internal'] 
== 0) {
-                                               
$_POST['customer_identifier_type'] = $organization['customer_identifier_type'];
-                                               $_POST['customer_internal'] = 
$organization['customer_internal'];
-                                               if 
(strlen($organization['customer_organization_number']) == 9) {
-                                                       
$_POST['customer_organization_number'] = 
$organization['customer_organization_number'];
-                                               } else {
-                                                       
$errors['organization_number'] = lang('The organization number is wrong or not 
present');
-                                               }
-                                       } else {
-                                               
$_POST['customer_identifier_type'] = 'organization_number';
-                                               $_POST['customer_internal'] = 
$organization['customer_internal'];
-                                               if 
((strlen($organization['customer_number']) == 6) || 
(strlen($organization['customer_number']) == 5)) {
-                                                       
$_POST['customer_organization_number'] = $organization['customer_number'];
-                                               } else {
-                                                       
$errors['resource_number'] = lang('The resource number is wrong or not 
present');
-                                               }
-                                       }
-                    if ($organization['contacts'][0]['name'] != '') {
-                        $_POST['contact_name'] = 
$organization['contacts'][0]['name'];
-                        $_POST['contact_email'] = 
$organization['contacts'][0]['email'];
-                        $_POST['contact_phone'] = 
$organization['contacts'][0]['phone'];
-                    } else {
-                        $_POST['contact_name'] = 
$organization['contacts'][1]['name'];
-                        $_POST['contact_email'] = 
$organization['contacts'][1]['email'];
-                        $_POST['contact_phone'] = 
$organization['contacts'][1]['phone'];
-                    }
+                                       $date = substr($event['from_'], 0, 10);
+                                       $this->redirect(array('menuaction' => 
'bookingfrontend.uibuilding.schedule', 'id' =>$event['building_id'], 'date' => 
$date));
+
+                               } else {
+                                       $errors['not_admin'] = lang("You can't 
cancel events");
                                }
-                               if (!$_POST['application_id'])
-                               {
-                   $temp_errors = array();
-                                       foreach( $event['dates'] as $checkdate) 
                        
-                                       {
-                                               $event['from_'] = 
$checkdate['from_'];
-                                               $_POST['from_'] = 
$checkdate['from_'];
-                                               $event['to_'] = 
$checkdate['to_'];
-                                               $_POST['to_'] = 
$checkdate['to_'];
-                                               list($event, $errors) = 
$this->extract_and_validate($event);
-                                               $time_from = split(" 
",$_POST['from_']);
-                                               $time_to = split(" 
",$_POST['to_']);
-                                               if ($time_from[0] == 
$time_to[0]) 
-                                               {
-                                                       if ($time_from[1] >= 
$time_to[1])
-                                                       {
-                                                               $errors['time'] 
= lang('Time is set wrong');
-                                                       }
-                                               }  
-                        if ($errors != array()) {
-                            $temp_errors = $errors;
-                        }
-                                       }                                       
        
-                    $errors = $temp_errors;
+                       } else {
+                               $errors['started'] = lang("You can't cancel 
event that has started, for help contacts site admin");
+                       }
+               }
+               $this->flash_form_errors($errors);
+               $date = substr($event['from_'], 0, 10);
+               self::add_javascript('booking', 'booking', 'event.js');
+               $event['resources_json'] = json_encode(array_map('intval', 
$event['resources']));
+               $event['cancel_link'] = self::link(array('menuaction' => 
'bookingfrontend.uibuilding.schedule', 'id'=> $event['building_id'], 'date' => 
$date));
+               $activities = $this->activity_bo->fetch_activities();
+               $activities = $activities['results'];
+               $this->install_customer_identifier_ui($event);
+               $this->add_template_helpers();
+
+               self::render_template('event_delete', array('event' => $event, 
'activities' => $activities, 'can_delete_events' => $can_delete_events));
+       }
+
+       public function building_users($building_id, $type=false, 
$activities=array()) {
+               $contacts = array();
+               $organizations = 
$this->organization_bo->find_building_users($building_id, $type, $activities);
+               foreach($organizations['results'] as $key => $org)
+               {
+                       if ($org['email'] != '' && strstr($org['email'], '@')) {
+                               if (!in_array($org['email'], $contacts)) {
+                                       $contacts[] = $org['email'];
                                }
-                               else
-                               {
-                                       list($event, $errors) = 
$this->extract_and_validate($event);
-                                       $time_from = split(" ",$_POST['from_']);
-                                       $time_to = split(" ",$_POST['to_']);
-                                       if ($time_from[0] == $time_to[0]) {
-                                               if ($time_from[1] >= 
$time_to[1])
-                                               {
-                                                       $errors['time'] = 
lang('Time is set wrong');
-                                               }
-                                       }  
+                       }
+                       if ($org['contacts'][0]['email'] != '' && 
strstr($org['contacts'][0]['email'], '@')) {
+                               if (!in_array($org['contacts'][0]['email'], 
$contacts)) {
+                                       $contacts[] = 
$org['contacts'][0]['email'];
                                }
-                               
-                               if ($_POST['cost'] != 0 and 
!$event['customer_organization_number'] and !$event['customer_ssn']) {
-                                       $errors['invoice_data'] = lang('There 
is set a cost, but no invoice data is filled inn');
+                       }
+                       if ($org['contacts'][1]['email'] != '' && 
strstr($org['contacts'][1]['email'], '@')) {
+                               if (!in_array($org['contacts'][1]['email'], 
$contacts)) {
+                                       $contacts[] = 
$org['contacts'][1]['email'];
                                }
-                               if(($_POST['organization_name'] != '' or 
$_POST['org_id2'] != '') and isset($errors['contact_name'])) {
-                                       $errors['contact_name'] = 
lang('Organization is missing booking charge');
+                       }
+                       $grp_con = 
$this->booking_bo->so->get_group_contacts_of_organization($org['id']);
+                       foreach ($grp_con as $grp) {
+                               if (!in_array($grp['email'], $contacts) && 
strstr($grp['email'], '@')) {
+                                       $contacts[] = $grp['email'];
                                }
-                               if(!$errors['event'] && !$errors['from_'] && 
!$errors['time'] && !$errors['invoice_data'] && !$errors['resource_number'] && 
!$errors['organization_number'] && !$errors['contact_name'] && !$errors['cost'] 
&& !$errors['activity_id'])
-                               {
-                                       if (!$_POST['application_id'])
-                                       {
-                                               $allids = array();
-                                               foreach( $event['dates'] as 
$checkdate)                         
-                                               {
-                                                       $event['from_'] = 
$checkdate['from_'];
-                                                       $event['to_'] = 
$checkdate['to_'];
-
-                                                       
unset($event['comments']);
-                                                       if 
(count($event['dates']) < 2)                                 
-                                                       {
-                                                               
$this->add_comment($event, lang('Event was created'));
-                                                               $receipt = 
$this->bo->add($event);
-                                                       }                       
                
-                                                       else
-                                                       {
-                                                               
$this->add_comment($event, lang('Multiple Events was created'));
-                                                               $receipt = 
$this->bo->add($event);
-                                                               $allids[] = 
array($receipt['id']);
-                                                       }
-                                               }
-                                               if ($allids) 
-                                               { 
-                                                       
$this->bo->so->update_comment($allids);
-                            $this->bo->so->update_id_string();
-                                               }
-                                       }
-                                       else
-                                       {
-                                               $this->add_comment($event, 
lang('Event was created'));
-                                               $receipt = 
$this->bo->add($event);
-                        $this->bo->so->update_id_string();
-                                       }
-                                       $this->redirect(array('menuaction' => 
'booking.uievent.edit', 'id'=>$receipt['id'], 'secret'=>$event['secret'], 
'warnings'=>$errors));
-                               }
                        }
-            if ($errors['event']) {
-                $errors['warning'] = lang('NB! No data will be saved, if you 
navigate away you will loose all.'); 
-            }
-                       $default_dates = array_map(array(self, 
'_combine_dates'), '','');
-                       array_set_default($event, 'dates', $default_dates);
+               }
+               return $contacts;
+       }
 
-                       if (!phpgw::get_var('from_report', 'POST'))
-                       {
-                                       $this->flash_form_errors($errors);
+       public function resource_users($resources) {
+               $contacts = array();
+               $orglist = array();
+               foreach($resources as $res){
+                       $cres = $this->resource_bo->read_single($res);
+                       if($cres['organizations_ids'] != '') {
+                               $orglist .= $cres['organizations_ids'].',';
                        }
-
-                       self::add_javascript('booking', 'booking', 'event.js');
-                       array_set_default($event, 'resources', array());
-                       $event['resources_json'] = 
json_encode(array_map('intval', $event['resources']));
-                       $event['cancel_link'] = self::link(array('menuaction' 
=> 'booking.uievent.index'));
-                       array_set_default($event, 'cost', '0');
-                       $activities = $this->activity_bo->fetch_activities();
-                       $activities = $activities['results'];
-                       $agegroups = $this->agegroup_bo->fetch_age_groups();
-                       $agegroups = $agegroups['results'];
-                       $audience = $this->audience_bo->fetch_target_audience();
-                       $audience = $audience['results'];
-                       
-                       $this->install_customer_identifier_ui($event);
-                       
-                       $this->add_template_helpers();
-                       self::render_template('event_new', array('event' => 
$event, 'activities' => $activities, 'agegroups' => $agegroups, 'audience' => 
$audience));
                }
-
-               private function send_mailnotification($receiver, $subject, 
$body)
+               $orgs = explode(",", rtrim($orglist, ","));
+               $organizations = 
$this->organization_bo->so->read(array('filters'=>array('id'=>$orgs), 
'sort'=>'name'));
+               foreach($organizations['results'] as $key => $org)
                {
-                       $send = CreateObject('phpgwapi.send');
-
-                       $config = CreateObject('phpgwapi.config','booking');
-                       $config->read();
-                       $from = isset($config->config_data['email_sender']) && 
$config->config_data['email_sender'] ? $config->config_data['email_sender'] : 
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
-                       if (strlen(trim($body)) == 0)
-                       {
-                               return false;
+                       if ($org['email'] != '' && strstr($org['email'], '@')) {
+                               if (!in_array($org['email'], $contacts)) {
+                                       $contacts[] = $org['email'];
+                               }
                        }
-                       
-                       if (strlen($receiver) > 0) 
-                       {
-                               try
-                               {
-                                       $send->msg('email', $receiver, 
$subject, $body, '', '', '', $from, '', 'html');
+                       if ($org['contacts'][0]['email'] != '' && 
strstr($org['contacts'][0]['email'], '@')) {
+                               if (!in_array($org['contacts'][0]['email'], 
$contacts)) {
+                                       $contacts[] = 
$org['contacts'][0]['email'];
                                }
-                               catch (phpmailerException $e)
-                               {
-                                       // TODO: Inform user if something goes 
wrong
+                       }
+                       if ($org['contacts'][1]['email'] != '' && 
strstr($org['contacts'][1]['email'], '@')) {
+                               if (!in_array($org['contacts'][1]['email'], 
$contacts)) {
+                                       $contacts[] = 
$org['contacts'][1]['email'];
                                }
                        }
+                       $grp_con = 
$this->booking_bo->so->get_group_contacts_of_organization($org['id']);
+                       foreach ($grp_con as $grp) {
+                               if (!in_array($grp['email'], $contacts) && 
strstr($grp['email'], '@')) {
+                                       $contacts[] = $grp['email'];
+                               }
+                       }
                }
+               return $contacts;
+       }
 
-               public function edit()
+       public function info()
+       {
+               $config = CreateObject('phpgwapi.config','booking');
+               $config->read();
+               if ($config->config_data['user_can_delete_bookings'] != 'yes')
                {
-                       $id = intval(phpgw::get_var('id', 'GET'));
-                       $event = $this->bo->read_single($id);
-                       $building_info = $this->bo->so->get_building_info($id);
-                       $event['building_id'] = $building_info['id'];
-                       $event['building_name'] = $building_info['name'];
-                       $config = CreateObject('phpgwapi.config','booking');
-                       $config->read();
+                       $user_can_delete_bookings = 0;
 
-            $external_site_address = 
isset($config->config_data['external_site_address']) && 
$config->config_data['external_site_address'] ? 
$config->config_data['external_site_address'] : 
$GLOBALS['phpgw_info']['server']['webserver_url'];
-            $link = 
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uibuilding.schedule&id='.$event['building_id']."&date=".substr($event['from_'],0,-9);
-                       $errors = array();
-                       $customer = array();
+               } else {
+                       $user_can_delete_bookings = 1;
+               }
+               $event = $this->bo->read_single(intval(phpgw::get_var('id', 
'GET')));
+               unset($event['comments']);
+               $resources = 
$this->resource_bo->so->read(array('filters'=>array('id'=>$event['resources']), 
'sort'=>'name'));
+               if ($event['customer_organization_number'] != '')
+               {
+                       $orginfo = 
$this->bo->so->get_org($event['customer_organization_number']);
+                       if ($orginfo != array()) {
+                               $event['customer_organization_id'] = 
$orginfo['id'];
+                               $event['customer_organization_name'] = 
$orginfo['name'];
+                               $orginfo['link'] = 
self::link(array('menuaction' => 'bookingfrontend.uiorganization.show', 'id' => 
$orginfo['id']));
+                       }
+               } else {
+                       $orginfo = array();
+               }
 
-            if ($event['customer_identifier_type'])
-            {
-                $customer['customer_identifier_type'] = 
$event['customer_identifier_type'];
-                $customer['customer_ssn'] = $event['customer_ssn'];
-                $customer['customer_organization_number'] = 
$event['customer_organization_number'];
-                $customer['customer_internal'] = $event['customer_internal'];
-                $orginfo = 
$this->bo->so->get_org($event['customer_organization_number']);
-                $customer['customer_organization_id'] = $orginfo['id'];
-                $customer['customer_organization_name'] = $orginfo['name'];
-            } else {
-                $customer['customer_organization_name'] = 
$event['customer_organization_name'];
-                $customer['customer_organization_id'] = 
$event['customer_organization_id'];
-                $organization = 
$this->organization_bo->read_single($event['customer_organization_id']);
-                $customer['customer_identifier_type'] = 'organization_number';
-                $customer['customer_ssn'] = $organization['customer_internal'];
-                $customer['customer_organization_number'] = 
$organization['organization_number'];
-                $customer['customer_internal'] = 
$organization['customer_internal'];
-            }
+               $event['resources'] = $resources['results'];
+               $res_names = array();
+               foreach($event['resources'] as $res)
+               {
+                       $res_names[] = $res['name'];
+               }
+               $event['resource_info'] = join(', ', $res_names);
+               $event['building_link'] = self::link(array('menuaction' => 
'bookingfrontend.uibuilding.show', 'id' => 
$event['resources'][0]['building_id']));
+               $event['when'] = pretty_timestamp($event['from_']).' - 
'.pretty_timestamp($event['to_']);
+               $bouser = CreateObject('bookingfrontend.bouser');
+               
if($bouser->is_organization_admin($event['customer_organization_id']))
+               {
+                       $event['edit_link'] = self::link(array('menuaction' => 
'bookingfrontend.uievent.edit', 'id' => $event['id']));
+                       $event['cancel_link'] = self::link(array('menuaction' 
=> 'bookingfrontend.uievent.cancel', 'id' => $event['id']));
+               }
 
-                       list($event, $errors) = 
$this->extract_and_validate($event);
+               self::render_template('event_info', 
array('event'=>$event,'orginfo' => $orginfo, 'user_can_delete_bookings' => 
$user_can_delete_bookings));
+               $GLOBALS['phpgw']->xslttpl->set_output('wml'); // Evil hack to 
disable page chrome
+       }
 
-            if ($event['customer_organization_number']) {
-                $orginfo = 
$this->bo->so->get_org($event['customer_organization_number']);
-                $event['customer_organization_id'] = $orginfo['id'];
-                $event['customer_organization_name'] = $orginfo['name'];
-            }
+       public function report_numbers()
+       {
+               $step = 1;
+               $id = intval(phpgw::get_var('id', 'GET'));
+               $event = $this->bo->read_single($id);
+               $agegroups = $this->agegroup_bo->fetch_age_groups();
+               $agegroups = $agegroups['results'];
 
-                       if($_SERVER['REQUEST_METHOD'] == 'POST')
-                       {
-                               if (!$_POST['organization_name']) {
-                                       $event['customer_organization_name'] = 
Null;
-                                       $event['customer_organization_id'] = 
Null;
-                               }
-                               array_set_default($_POST, 'resources', array());
-                       
-                               if ($_POST['organization_name']) {
-                                       $event['customer_organization_name'] = 
$_POST['organization_name'];
-                                       $event['customer_organization_id'] = 
$_POST['organization_id'];
-                                       $organization = 
$this->organization_bo->read_single(intval(phpgw::get_var('organization_id', 
'POST')));
+               $building_info = $this->bo->so->get_building_info($id);
+               $building = 
$this->building_bo->read_single($building_info['id']);
 
-                                       if ($organization['customer_internal'] 
== 0) {                                  
-                                               
$event['customer_identifier_type'] = $organization['customer_identifier_type'];
-                                               $event['customer_internal'] = 
$organization['customer_internal'];
-                                               if 
(strlen($organization['customer_organization_number']) == 9) {
-                                                       
$event['customer_organization_number'] = 
$organization['customer_organization_number'];
-                                               } else {
-                                                       
$errors['organization_number'] = lang('The organization number is wrong or not 
present');
-                                               }
-                                       } else {
-                                               
$event['customer_identifier_type'] = 'organization_number';
-                                               $event['customer_internal'] = 
$organization['customer_internal'];
-                                               if 
((strlen($organization['customer_number']) == 6) || 
(strlen($organization['customer_number']) == 5)) {
-                                                       
$event['customer_organization_number'] = $organization['customer_number'];
-                                               } else {
-                                                       
$errors['resource_number'] = lang('The resource number is wrong or not 
present');
-                                               }
-                                       }
-                               } elseif ($_POST['customer_identifier_type'] == 
'ssn') {
-                                       $event['customer_identifier_type'] = 
'ssn';
-                                       $event['customer_ssn'] = 
$_POST['customer_ssn'];
-                                       
-                               } elseif ($_POST['customer_identifier_type'] == 
'organization_number') {
-                                       $event['customer_identifier_type'] = 
'organization_number';
-                                       $event['customer_organization_number'] 
= $_POST['customer_organization_number'];
-                               }
+               if ($event['secret'] != phpgw::get_var('secret', 'GET'))
+               {
+                       $step = -1; // indicates that an error message should 
be displayed in the template
+                       self::render_template('report_numbers', 
array('event_object' => $event, 'agegroups' => $agegroups, 'building' => 
$building, 'step' => $step));
+                       return false;
+               }
 
-                               if ($_POST['cost'] != 0 and 
!$event['customer_organization_number'] and !$event['customer_ssn']) {
-                                       $errors['invoice_data'] = lang('There 
is set a cost, but no invoice data is filled inn');
-                               } 
-                               if(!$errors['event'] and 
!$errors['resource_number'] and !$errors['organization_number'] and 
!$errors['invoice_data']  && !$errors['contact_name'] && !$errors['cost'])
+               if($_SERVER['REQUEST_METHOD'] == 'POST')
+               {
+                       //reformatting the post variable to fit the booking 
object
+                       $temp_agegroup = array();
+                       $sexes = array('male', 'female');
+                       foreach($sexes as $sex)
+                       {
+                               $i = 0;
+                               foreach(phpgw::get_var($sex, 'POST') as 
$agegroup_id => $value)
                                {
-                                       if (( phpgw::get_var('sendtorbuilding', 
'POST') || phpgw::get_var('sendtocontact', 'POST') || 
phpgw::get_var('sendtocollision', 'POST')) && phpgw::get_var('active', 'POST'))
-                                       {
-
-                        if(phpgw::get_var('sendtocollision', 'POST') || 
phpgw::get_var('sendtocontact', 'POST') || phpgw::get_var('sendtorbuilding', 
'POST'))
-                                               {
-                                                       $maildata = 
$this->create_sendt_mail_notification_comment_text($event,$errors);
-                            
-                            if(phpgw::get_var('sendtocollision', 'POST'))
-                            {
-                                                           $comment_text_log = 
"<span style='color: green;'>".lang('Message sent about the changes in the 
reservations').':</span><br />';
-                                $res = array();
-                                $resname= '';
-                                foreach ($event['resources'] as $resid) {
-                                    $res = 
$this->bo->so->get_resource_info($resid);
-                                    $resname .= $res['name'].', ';
-                                }
-                                $comment_text_log .= $event['building_name']." 
(".substr($resname,0,-2).") ".pretty_timestamp($event['from_'])." - 
".pretty_timestamp($event['to_']);
-                                                           
$this->add_comment($event, $comment_text_log);
-                               }
-                                                       
if(phpgw::get_var('sendtocollision', 'POST'))
-                                                       {
-                                                               
-                                $subject = 
$config->config_data['event_conflict_mail_subject'];
-                                $body = 
"<p>".$config->config_data['event_mail_conflict_contact_active_collision']."<br 
/>\n".phpgw::get_var('mail', 'POST')."\n";
-                                $body .= '<br /><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].'</a></p>';
-                                $body .= 
"<p>".$config->config_data['application_mail_signature']."</p>";
-                                                               $mail_sendt_to 
= '';
-                                                               foreach 
(array_keys($maildata) as $mail)
-                                                               {
-                                    $mailbody = '';                            
                                        
-                                    $comment_text_log = "Reserverasjoner som 
har blitt overskrevet: \n";
-                                                                       
$mail_sendt_to = $mail_sendt_to.' '.$mail;
-                                                                       
foreach($maildata[$mail] as $data)
-                                                                       {
-                                                                               
$comment_text_log .= $data['date'].', '.$data['building'].', 
'.$data['resource'].', Kl. '.$data['start'].' - '.$data['end']." \n";
-                                                                       }
-                                    $mailbody .= 
$body."<pre>".$comment_text_log."</pre>";
-                                                                       
$this->send_mailnotification($mail, $subject, $mailbody);
-                                                               }
-                                                               if 
(strpos($mail_sendt_to,'@') !== False)                               
-                                                               {
-                                                                       
$comment = "<p>Melding om konflikt er sendt til".$mail_sendt_to."<br 
/>\n".phpgw::get_var('mail', 'POST')."</p>";
-                                                                       
$this->add_comment($event,$comment);                    
-                                                               }
-                                                       }
-                                                       
if(phpgw::get_var('sendtocontact', 'POST'))
-                                                       {
-                                $subject = 
$config->config_data['event_change_mail_subject'];
-                                $body = 
"<p>".$config->config_data['event_change_mail']."<br 
/>\n".phpgw::get_var('mail', 'POST');
-                                $body .= '<br /><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].'</a></p>';
-                                                               
$this->send_mailnotification($event['contact_email'], $subject, $body);
-                                                               $comment = 
$comment_text_log.'<br />Denne er sendt til '.$event['contact_email'];
-                                                               
$this->add_comment($event,$comment);                    
-                                                       }
-                                                       
if(phpgw::get_var('sendtorbuilding', 'POST'))
-                                                       {
-                                                               
-                                $subject = 
$config->config_data['event_mail_building_subject'];
-
-                                $body = 
"<p>".$config->config_data['event_mail_building']."<br 
/>\n".phpgw::get_var('mail', 'POST')."</p>";
-
-                                                               if 
($event['customer_organization_name']) {
-                                                                       
$username = $event['customer_organization_name'];
-                                                               } else {
-                                                                       
$username = $event['contact_name'];
-                                                               }
-                                $res = array();
-                                $resname= '';
-                                foreach ($event['resources'] as $resid) {
-                                    $res = 
$this->bo->so->get_resource_info($resid);
-                                    $resname .= $res['name'].', ';
-                                }
-                                $resources = $event['building_name']." 
(".substr($resname,0,-2).") ".pretty_timestamp($event['from_'])." - 
".pretty_timestamp($event['to_']);
-
-                                                               $body  .= 
'<p>'.$username.' har fått innvilget et arrangement i '.$resources.".";
-                                $body .= '<br /><a href="'.$link.'">Link til 
'.$config->config_data['application_mail_systemname'].'</a></p>';
-                                $body .= 
"<p>".$config->config_data['application_mail_signature']."</p>";
-
-                                                               $sendt = 0;
-                                                               $mail_sendt_to 
= '';
-                                                               
if($event['contact_email']) {
-                                                                       
$sendt++;
-                                                                       
$mail_sendt_to = $mail_sendt_to.' '.$event['contact_email'];
-                                    
$this->send_mailnotification($event['contact_email'], $subject, $body);
-                                                               } 
-                                                               
if($building_info['email']) {
-                                                                       
$sendt++;
-                                                                       
$mail_sendt_to = $mail_sendt_to.' '.$building_info['email'];
-                                                                       
$this->send_mailnotification($building_info['email'], $subject, $body);
-                                                               } 
-                                                               if 
($building_info['tilsyn_email']) {
-                                                                       
$sendt++;
-                                                                       
$mail_sendt_to = $mail_sendt_to.' '.$building_info['tilsyn_email'];
-                                                                       
$this->send_mailnotification($building_info['tilsyn_email'], $subject, $body);
-                                                               } 
-                                                               if 
($building_info['tilsyn_email2']) {
-                                                                       
$sendt++;
-                                                                       
$mail_sendt_to = $mail_sendt_to.' '.$building_info['tilsyn_email2'];
-                                                                       
$this->send_mailnotification($building_info['sendtorbuilding_email2'], 
$subject, $body);
-                                                               }
-                                                               if 
($_POST['sendtorbuilding_email1']) {
-                                                                       
$sendt++;
-                                                                       
$mail_sendt_to = $mail_sendt_to.' '.$_POST['sendtorbuilding_email1'];
-                                                                       
$this->send_mailnotification($_POST['sendtorbuilding_email1'], $subject, $body);
-                                                               } 
-                                                               if 
($_POST['sendtorbuilding_email2']) {
-                                                                       
$sendt++;
-                                                                       
$mail_sendt_to = $mail_sendt_to.' '.$_POST['sendtorbuilding_email2'];
-                                                                       
$this->send_mailnotification($_POST['sendtorbuilding_email2'], $subject, $body);
-                                                               }
-                                                               if ($sendt <= 
0) {
-                                                                       
$errors['mailtobuilding'] = lang('Unable to send warning, No mailadresses 
found');
-                                                               } 
-                                                               else 
-                                                               {
-                                    $comment_text_log = phpgw::get_var('mail', 
'POST');
-                                                                       
$comment = 'Melding om endring er sendt til ansvarlig for bygg: 
'.$mail_sendt_to.'<br />'.$comment_text_log;
-                                                                       
$this->add_comment($event,$comment);                    
-                                                               }
-                                                       }
-                                               }
-                    }
-                                       $receipt = $this->bo->update($event);
-                                       $this->redirect(array('menuaction' => 
'booking.uievent.edit', 'id'=>$event['id']));
+                                       $temp_agegroup[$i]['agegroup_id'] = 
$agegroup_id;
+                                       $temp_agegroup[$i][$sex] = $value;
+                                       $i++;
                                }
-                if (!phpgw::get_var('active', 'POST')) {
-
-                    $subject = 
$config->config_data['event_canceled_mail_subject'];
-                    $body = 
$config->config_data['event_canceled_mail']."\n".phpgw::get_var('mail', 'POST');
-
-                    if ($event['customer_organization_name']) {
-                        $comment_text_log = 
$event['customer_organization_name'];
-                    } else {
-                        $comment_text_log = $event['contact_name'];
-                    }
-                    $comment_text_log = $comment_text_log.' sitt arrangement i 
'.$event['building_name'].' '.date('d-m-Y H:i', strtotime($event['from_']))." 
har blitt kansellert.";
-
-                    $body .= "<br />\n".$comment_text_log;
-                    $body = html_entity_decode($body);
-
-                    $sendt = 0;
-                    $mail_sendt_to = '';
-                    if($building_info['email']) {
-                        $sendt++;
-                        $mail_sendt_to = $mail_sendt_to.' 
'.$building_info['email'];
-                        $this->send_mailnotification($building_info['email'], 
$subject, $body);
-                    }
-                    if ($building_info['tilsyn_email']) {
-                        $sendt++;
-                        $mail_sendt_to = $mail_sendt_to.' 
'.$building_info['tilsyn_email'];
-                        
$this->send_mailnotification($building_info['tilsyn_email'], $subject, $body);
-
-                    }
-                    if ($building_info['tilsyn_email2']) {
-                        $sendt++;
-                        $mail_sendt_to = $mail_sendt_to.' 
'.$building_info['tilsyn_email2'];
-                        
$this->send_mailnotification($building_info['tilsyn_email2'], $subject, $body);
-                    }
-                    if ($_POST['sendtorbuilding_email1']) {
-                        $sendt++;
-                        $mail_sendt_to = $mail_sendt_to.' 
'.$_POST['sendtorbuilding_email1'];
-                        
$this->send_mailnotification($_POST['sendtorbuilding_email1'], $subject, $body);
-
-                    }
-                    if ($_POST['sendtorbuilding_email2']) {
-                        $sendt++;
-                        $mail_sendt_to = $mail_sendt_to.' 
'.$_POST['sendtorbuilding_email2'];
-                        
$this->send_mailnotification($_POST['sendtorbuilding_email2'], $subject, $body);
-                    }
-                    if ($sendt <= 0) {
-                        $errors['mailtobuilding'] = lang('Unable to send 
warning, No mailadresses found');
-                    }
-                    else
-                    {
-                        $comment = '<span style="color:red;">Dette 
arrangemenet er kanselert</span>. Denne er sendt til '.$mail_sendt_to.'<br 
/>'.phpgw::get_var('mail', 'POST');
-                        $this->add_comment($event,$comment);
-                    }
-                    $receipt = $this->bo->update($event);
-                    $this->redirect(array('menuaction' => 
'booking.uievent.edit', 'id'=>$event['id']));
-
-                }
                        }
 
-                       if($errors['allocation'])
-                       {       
-                               $errors['allocation'] = lang('Event created, 
Overlaps with existing allocation, Remember to send a notification');
-                       }
-                       elseif($errors['booking'])
+                       $event['agegroups'] = $temp_agegroup;
+                       $event['reminder'] = 2; // status set to delivered
+                       $errors = $this->bo->validate($event);
+                       if(!$errors)
                        {
-                               $errors['booking'] = lang('Event created, 
Overlaps with existing booking, Remember to send a notification');
+                               $receipt = $this->bo->update($event);
+                               $step++;
                        }
-                       $this->flash_form_errors($errors);
-                       if ($customer['customer_identifier_type'])
-                       {
-                               $event['customer_identifier_type'] = 
$customer['customer_identifier_type'];
-                               $event['customer_ssn'] = 
$customer['customer_ssn'];
-                               $event['customer_organization_number'] = 
$customer['customer_organization_number'];
-                               $event['customer_internal'] = 
$customer['customer_internal'];
-                       }                       
-
-                       self::add_javascript('booking', 'booking', 'event.js');
-                       $event['resources_json'] = 
json_encode(array_map('intval', $event['resources']));
-                       $event['application_link'] = 
self::link(array('menuaction' => 'booking.uiapplication.show', 'id'=> 
$event['application_id']));
-                       $event['cancel_link'] = self::link(array('menuaction' 
=> 'booking.uievent.index'));
-                       $activities = $this->activity_bo->fetch_activities();
-                       $activities = $activities['results'];
-#                      $comments = array_reverse($event['comments']);
-                       $comments = $this->bo->so->get_ordered_comments($id);
-                       $agegroups = $this->agegroup_bo->fetch_age_groups();
-                       $agegroups = $agegroups['results'];
-                       $audience = $this->audience_bo->fetch_target_audience();
-                       $audience = $audience['results'];
-                       $this->install_customer_identifier_ui($event);
-                       $this->add_template_helpers();
-                       self::render_template('event_edit', array('event' => 
$event, 'activities' => $activities, 'agegroups' => $agegroups, 'audience' => 
$audience, 'comments' => $comments));
                }
-               public function delete()
-               {
-                       $event_id = phpgw::get_var('event_id', 'GET');
-                       $application_id = phpgw::get_var('application_id', 
'GET');
-
-                       if ($GLOBALS['phpgw']->acl->check('admin', 
phpgwapi_acl::ADD, 'booking')) {
-                               $this->bo->so->delete_event($event_id);
-                       }
-                       if (isset($application_id)) {
-                               $this->redirect(array('menuaction' => 
'booking.uiapplication.show', 'id'=>$application_id));
-                       } else {
-                               $this->redirect(array('menuaction' => 
'booking.uievent.index'));
-                       }
-
-               }
-               public function info()
-               {
-                       $event = 
$this->bo->read_single(intval(phpgw::get_var('id', 'GET')));
-                       $resources = 
$this->resource_bo->so->read(array('filters'=>array('id'=>$event['resources']), 
'sort'=>'name'));
-                       $event['resources'] = $resources['results'];
-                       $res_names = array();
-                       foreach($event['resources'] as $res)
-                       {
-                               $res_names[] = $res['name'];
-                       }
-                       $event['resource'] = phpgw::get_var('resource', 'GET');
-                       $event['resource_info'] = join(', ', $res_names);
-                       $event['building_link'] = self::link(array('menuaction' 
=> 'booking.uibuilding.show', 'id' => $event['resources'][0]['building_id']));
-                       $event['org_link'] = self::link(array('menuaction' => 
'booking.uiorganization.show', 'id' => $event['organization_id']));
-                       $event['add_link'] = self::link(array('menuaction' => 
'booking.uibooking.add', 'allocation_id'=>$event['id'], 
'from_'=>$event['from_'], 'to_'=>$event['to_'], 
'resource'=>$event['resource']));
-                       $event['when'] = pretty_timestamp($event['from_']).' - 
'.pretty_timestamp($event['to_']);
-
-                       $event['edit_link'] = self::link(array('menuaction' => 
'booking.uievent.edit', 'id' => $event['id']));
-
-                       self::render_template('event_info', 
array('event'=>$event));
-                       $GLOBALS['phpgw']->xslttpl->set_output('wml'); // Evil 
hack to disable page chrome
-               }
-
+               self::render_template('report_numbers', array('event_object' => 
$event, 'agegroups' => $agegroups, 'building' => $building, 'step' => $step));
        }
+}

Modified: branches/stavangerkommune/booking/inc/class.uiresource.inc.php
===================================================================
--- branches/stavangerkommune/booking/inc/class.uiresource.inc.php      
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/inc/class.uiresource.inc.php      
2015-02-12 11:33:05 UTC (rev 12739)
@@ -23,7 +23,7 @@
                        
                        $this->bo = CreateObject('booking.boresource');
                        $this->activity_bo = CreateObject('booking.boactivity');
-                       $this->fields = array('name', 'building_id', 
'building_name','description','activity_id', 'active', 'type', 'sort');
+                       $this->fields = array('name', 'building_id', 
'building_name','description','activity_id', 'active', 'type', 'sort', 
'organizations_ids');
                        self::set_active_menu('booking::resources');
                }
                

Modified: branches/stavangerkommune/booking/setup/phpgw_no.lang
===================================================================
--- branches/stavangerkommune/booking/setup/phpgw_no.lang       2015-02-12 
09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/setup/phpgw_no.lang       2015-02-12 
11:33:05 UTC (rev 12739)
@@ -668,7 +668,9 @@
 Last 300 days  booking no      Siste 300 dager
 Cancelation Email Addresses    booking no      Hvem som skal få kanselerings 
e-post. (saksbehandeler)
 One e-mail pr. line.   booking no      Bare en e-post adresse pr. linje.
-Application email settings  booking no  Søknad epost innstillinger
-Application comment email settings  booking no  Søknad kommentar epost 
innstillinger
-Subject caseofficer booking no  Emne Saksbehandler
-Mail text for comment added booking no  Ekstra epost tekst for kommentar
\ No newline at end of file
+Application email settings     booking no      Søknad epost innstillinger
+Application comment email settings     booking no      Søknad kommentar epost 
innstillinger
+Subject caseofficer    booking no      Emne Saksbehandler
+Mail text for comment added    booking no      Ekstra epost tekst for kommentar
+organzations_ids_description   booking no      Her kan du legge inn en komma 
separert liste med organisasjons IDer som vil få epost viss noen avbestiller 
denne ressursen.
+organzations_ids       booking no      Organisasjons IDer
\ No newline at end of file

Modified: branches/stavangerkommune/booking/setup/setup.inc.php
===================================================================
--- branches/stavangerkommune/booking/setup/setup.inc.php       2015-02-12 
09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/setup/setup.inc.php       2015-02-12 
11:33:05 UTC (rev 12739)
@@ -1,6 +1,6 @@
 <?php
        $setup_info['booking']['name'] = 'booking';
-       $setup_info['booking']['version'] = '0.2.17';
+       $setup_info['booking']['version'] = '0.2.18';
        $setup_info['booking']['app_order'] = 9;
        $setup_info['booking']['enable'] = 1;
        $setup_info['booking']['app_group'] = 'office';

Modified: branches/stavangerkommune/booking/setup/tables_current.inc.php
===================================================================
--- branches/stavangerkommune/booking/setup/tables_current.inc.php      
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/setup/tables_current.inc.php      
2015-02-12 11:33:05 UTC (rev 12739)
@@ -113,6 +113,7 @@
                                'description' => array('type' => 'text', 
'nullable' => True),
                                'activity_id' => array('type' => 
'int','precision' => '4','nullable' => False),
                                'sort' => array('type' => 'int','precision' => 
'4','nullable' => False,'default' => 0),
+                               'organizations_ids' => array('type' => 
'varchar','precision' => '50','nullable' => True),
                        ),
                        'pk' => array('id'),
                        'fk' => array(

Modified: branches/stavangerkommune/booking/setup/tables_update.inc.php
===================================================================
--- branches/stavangerkommune/booking/setup/tables_update.inc.php       
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/setup/tables_update.inc.php       
2015-02-12 11:33:05 UTC (rev 12739)
@@ -2792,4 +2792,16 @@
         $GLOBALS['setup_info']['booking']['currentver'] = '0.2.17';
         return $GLOBALS['setup_info']['booking']['currentver'];
     }
+}
+
+$test[] = '0.2.17';
+function booking_upgrade0_2_17()
+{
+       $GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
+       $GLOBALS['phpgw_setup']->oProc->m_odb->query("ALTER TABLE bb_resource 
ADD COLUMN organizations_ids varchar(50) DEFAULT NULL");
+       if($GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit())
+       {
+               $GLOBALS['setup_info']['booking']['currentver'] = '0.2.18';
+               return $GLOBALS['setup_info']['booking']['currentver'];
+       }
 }
\ No newline at end of file

Modified: branches/stavangerkommune/booking/templates/base/resource_form.xsl
===================================================================
--- branches/stavangerkommune/booking/templates/base/resource_form.xsl  
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/booking/templates/base/resource_form.xsl  
2015-02-12 11:33:05 UTC (rev 12739)
@@ -35,7 +35,7 @@
                                                </xsl:for-each>
                                        </select>
                                </dd>
-                               <dt><label for="field_name"><xsl:value-of 
select="php:function('lang', 'Sort order')" /></label></dt>
+                               <dt><label for="field_sort"><xsl:value-of 
select="php:function('lang', 'Sort order')" /></label></dt>
                                <dd><input name="sort" id="field_sort" 
type="text" value="{resource/sort}"/></dd>
                        </dl>
                        <dl class="form-col">
@@ -98,9 +98,16 @@
                                        <textarea id="field_description" 
name="description" type="text"><xsl:value-of 
select="resource/description"/></textarea>
                                </dd>
                        </dl>
-                       
                        <div class="clr"/>
-                       
+                       <dl class="form-col">
+
+                               <dt><label 
for="field_organizations_ids"><xsl:value-of select="php:function('lang', 
'organzations_ids')" /></label></dt>
+                               <dt><p><xsl:value-of 
select="php:function('lang', 'organzations_ids_description')" /></p></dt>
+                               <dd><input name="organizations_ids" 
id="field_organizations_ids" type="text" 
value="{resource/organizations_ids}"/></dd>
+
+                       </dl>
+                       <div class="clr"/>
+
                        <div class="form-buttons">
                                <input type="submit" id="button">
                                        <xsl:attribute name="value">

Modified: branches/stavangerkommune/bookingfrontend/inc/class.uibooking.inc.php
===================================================================
--- branches/stavangerkommune/bookingfrontend/inc/class.uibooking.inc.php       
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/bookingfrontend/inc/class.uibooking.inc.php       
2015-02-12 11:33:05 UTC (rev 12739)
@@ -624,6 +624,48 @@
                        return $contacts;
                }
 
+               public function resource_users($resources, $group_id) {
+                       $contacts = array();
+                       $orglist = array();
+                       foreach($resources as $res){
+                               $cres = $this->resource_bo->read_single($res);
+                               if($cres['organizations_ids'] != '') {
+                                       $orglist .= 
$cres['organizations_ids'].',';
+                               }
+                       }
+                       $orgs = explode(",", rtrim($orglist, ","));
+
+
+                       $organizations = 
$this->organization_bo->so->read(array('filters'=>array('id'=>$orgs), 
'sort'=>'name'));
+                       foreach($organizations['results'] as $org)
+                       {
+                               if ($org['email'] != '' && 
strstr($org['email'], '@')) {
+                                       if (!in_array($org['email'], 
$contacts)) {
+                                               $contacts[] = $org['email'];
+                                       }
+                               }
+                               if ($org['contacts'][0]['email'] != '' && 
strstr($org['contacts'][0]['email'], '@')) {
+                                       if 
(!in_array($org['contacts'][0]['email'], $contacts)) {
+                                               $contacts[] =  
$org['contacts'][0]['email'];
+                                       }
+                               }
+                               if ($org['contacts'][1]['email'] != '' && 
strstr($org['contacts'][1]['email'], '@')) {
+                                       if 
(!in_array($org['contacts'][1]['email'], $contacts)) {
+                                               $contacts[] = 
$org['contacts'][1]['email'];
+                                       }
+                               }
+                               $grp_con = 
$this->bo->so->get_group_contacts_of_organization($org['id']);
+                               foreach ($grp_con as $grp) {
+                                       if ($grp['email'] != '' && 
strstr($grp['email'], '@') && $grp['group_id'] != $group_id ) {
+                                               if (!in_array($grp['email'], 
$contacts)) {
+                                                       $contacts[] =  
$grp['email'];
+                                               }
+                                       }
+                               }
+                       }
+                       return $contacts;
+               }
+
                public function organization_users($group_id) {
 
             $contacts = array();
@@ -723,6 +765,9 @@
                 
$activity=$this->organization_bo->so->get_resource_activity($resources);
                 $mailadresses = 
$this->building_users($booking['building_id'],$booking['group_id'], $split, 
$activity);
 
+                               $extra_mailadresses = 
$this->resource_users($resources, $booking['group_id']);
+                               $mailadresses = array_merge($mailadresses, 
$extra_mailadresses);
+
                 $maildata = array();
                 $maildata['outseason'] = $outseason;           
                 $maildata['recurring'] = $recurring;           

Modified: branches/stavangerkommune/bookingfrontend/inc/class.uievent.inc.php
===================================================================
--- branches/stavangerkommune/bookingfrontend/inc/class.uievent.inc.php 
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/bookingfrontend/inc/class.uievent.inc.php 
2015-02-12 11:33:05 UTC (rev 12739)
@@ -176,6 +176,8 @@
             $resources = $event['resources'];
             
$activity=$this->organization_bo->so->get_resource_activity($resources);
             $mailadresses = $this->building_users($event['building_id'], 
$split, $activity);
+            $extra_mailadresses = $this->resource_users($resources);
+            $mailadresses = array_merge($mailadresses, $extra_mailadresses);
 
             if($_SERVER['REQUEST_METHOD'] == 'POST')
             {
@@ -242,6 +244,44 @@
             return $contacts;
         }
 
+        public function resource_users($resources) {
+            $contacts = array();
+            $orglist = array();
+            foreach($resources as $res){
+                $cres = $this->resource_bo->read_single($res);
+                if($cres['organizations_ids'] != '') {
+                    $orglist .= $cres['organizations_ids'].',';
+                }
+            }
+            $orgs = explode(",", rtrim($orglist, ","));
+            $organizations = 
$this->organization_bo->so->read(array('filters'=>array('id'=>$orgs), 
'sort'=>'name'));
+            foreach($organizations['results'] as $key => $org)
+            {
+                if ($org['email'] != '' && strstr($org['email'], '@')) {
+                    if (!in_array($org['email'], $contacts)) {
+                        $contacts[] = $org['email'];
+                    }
+                }
+                if ($org['contacts'][0]['email'] != '' && 
strstr($org['contacts'][0]['email'], '@')) {
+                    if (!in_array($org['contacts'][0]['email'], $contacts)) {
+                        $contacts[] = $org['contacts'][0]['email'];
+                    }
+                }
+                if ($org['contacts'][1]['email'] != '' && 
strstr($org['contacts'][1]['email'], '@')) {
+                    if (!in_array($org['contacts'][1]['email'], $contacts)) {
+                        $contacts[] = $org['contacts'][1]['email'];
+                    }
+                }
+                $grp_con = 
$this->booking_bo->so->get_group_contacts_of_organization($org['id']);
+                foreach ($grp_con as $grp) {
+                    if (!in_array($grp['email'], $contacts) && 
strstr($grp['email'], '@')) {
+                        $contacts[] = $grp['email'];
+                    }
+                }
+            }
+            return $contacts;
+        }
+
         public function info()
         {
             $config    = CreateObject('phpgwapi.config','booking');

Modified: branches/stavangerkommune/bookingfrontend/setup/phpgw_no.lang
===================================================================
--- branches/stavangerkommune/bookingfrontend/setup/phpgw_no.lang       
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/bookingfrontend/setup/phpgw_no.lang       
2015-02-12 11:33:05 UTC (rev 12739)
@@ -376,4 +376,4 @@
 Check calendar bookingfrontend no      Sjekk kalender
 You can't cancel event that has started, for help contacts site admin  
bookingfrontend no      Du kan ikke slette arrangement som er over.
 You can't extend the event, for that contact administrator     bookingfrontend 
no      Du kan ikke øke lengden på arrangementet, for det må du kontakte 
administrator
-You can't change resources to the event, for that contact administrator        
bookingfrontend no      Du kan ikke forandre på ressurser, ofr det må du 
kontakte administrator
+You can't change resources to the event, for that contact administrator        
bookingfrontend no      Du kan ikke forandre på ressurser, for det må du 
kontakte administrator

Modified: branches/stavangerkommune/bookingfrontend/setup/setup.inc.php
===================================================================
--- branches/stavangerkommune/bookingfrontend/setup/setup.inc.php       
2015-02-12 09:38:16 UTC (rev 12738)
+++ branches/stavangerkommune/bookingfrontend/setup/setup.inc.php       
2015-02-12 11:33:05 UTC (rev 12739)
@@ -21,7 +21,7 @@
 
        $setup_info['bookingfrontend']['depends'][] = array(
                'appname' => 'booking',
-               'versions' => 
Array('0.2.06','0.2.07','0.2.08','0.2.09','0.2.10', 
'0.2.11','0.2.12','0.2.13','0.2.14','0.2.15','0.2.16','0.2.17')
+               'versions' => Array('0.2.10', 
'0.2.11','0.2.12','0.2.13','0.2.14','0.2.15','0.2.16','0.2.17','0.2.18')
        );
 
        $setup_info['bookingfrontend']['depends'][] = array(




reply via email to

[Prev in Thread] Current Thread [Next in Thread]