[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(
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [12739] bkbooking: stavanger update,
Kjell Arne Espedal <=