[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Fmsystem-commits] [12742] bkbooking: bugfix
From: |
Kjell Arne Espedal |
Subject: |
[Fmsystem-commits] [12742] bkbooking: bugfix |
Date: |
Thu, 12 Feb 2015 13:48:57 +0000 |
Revision: 12742
http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=12742
Author: kjell
Date: 2015-02-12 13:48:57 +0000 (Thu, 12 Feb 2015)
Log Message:
-----------
bkbooking: bugfix
Modified Paths:
--------------
branches/stavangerkommune/booking/inc/class.boapplication.inc.php
branches/stavangerkommune/booking/inc/class.boevent.inc.php
branches/stavangerkommune/booking/inc/class.uievent.inc.php
Modified: branches/stavangerkommune/booking/inc/class.boapplication.inc.php
===================================================================
--- branches/stavangerkommune/booking/inc/class.boapplication.inc.php
2015-02-12 13:26:23 UTC (rev 12741)
+++ branches/stavangerkommune/booking/inc/class.boapplication.inc.php
2015-02-12 13:48:57 UTC (rev 12742)
@@ -1,232 +1,237 @@
<?php
-phpgw::import_class('booking.bocommon');
-
-class booking_boapplication extends booking_bocommon
-{
- function __construct()
+ phpgw::import_class('booking.bocommon');
+
+ class booking_boapplication extends booking_bocommon
{
- parent::__construct();
- $this->activity_bo = CreateObject('booking.boactivity');
- $this->organization_bo = CreateObject('booking.boorganization');
- $this->so = CreateObject('booking.soapplication');
- }
+ function __construct()
+ {
+ 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_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>";
+ $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)
- {
- try
+ foreach ($buildingemail as $bemail)
{
- $send->msg('email', $bemail,
$bsubject, $bbody, '', '', '', $from, '', 'html');
- }
- catch (phpmailerException $e)
- {
+ try
+ {
+ $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');
}
- } 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>';
+ catch (phpmailerException $e)
+ {
+ // TODO: Inform user if something goes wrong
}
- } 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
- }
- }
+ /**
+ * @ 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');
- /**
- * @ 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');
+ $config = CreateObject('phpgwapi.config', 'booking');
+ $config->read();
- $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']}>";
- $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'];
- $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_comment_mail_subject_caseofficer'];
- $subject =
$config->config_data['application_comment_mail_subject_caseofficer'];
+ $mailadresses = $config->config_data['emails'];
+ $mailadresses = explode("\n", $mailadresses);
- $mailadresses = $config->config_data['emails'];
- $mailadresses = explode("\n", $mailadresses);
+ 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 ($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'];
+ $activity =
$this->activity_bo->read_single($application['activity_id']);
- $activity =
$this->activity_bo->read_single($application['activity_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/>';
+ }
- 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/>';
- }
+ $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 />';
- $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 />';
+ foreach ($mailadresses as $adr)
+ {
+ try
+ {
+ $send->msg('email', $adr, $subject, $body, '', '', '',
$from, '', 'html');
+ }
+ catch (phpmailerException $e)
+ {
+ // TODO: Inform user if something goes wrong
+ }
+ }
+ }
- foreach ($mailadresses as $adr)
+
+ /**
+ * 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)
{
- try
- {
- $send->msg('email', $adr, $subject, $body, '',
'', '', $from, '', 'html');
- }
- catch (phpmailerException $e)
- {
- // TODO: Inform user if something goes wrong
- }
- }
- }
+ $applications = array();
+ $this->db = & $GLOBALS['phpgw']->db;
-
- /**
- * 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
+# $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
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'];
+ foreach($result as $r)
+ {
+ $applications[] = $r['id'];
+ }
+
+ return $applications;
}
- return $applications;
- }
+ public function read_dashboard_data($for_case_officer_id =
array(null,null)) {
+ $params = $this->build_default_read_params();
- public function read_dashboard_data($for_case_officer_id =
array(null,null)) {
- $params = $this->build_default_read_params();
+ 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');
+ }
- if (!isset($params['filters'])) $params['filters'] = array();
- $where_clauses = !isset($params['filters']['where']) ? array()
: (array)$params['filters']['where'];
+ $params['filters']['where'] = $where_clauses;
- 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]).')';
+ return $this->so->read($params);
}
- 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
-{
- function __construct()
+ class booking_boapplication_association extends booking_bocommon
{
- parent::__construct();
- $this->so = new booking_soapplication_association();
+ function __construct()
+ {
+ 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
13:26:23 UTC (rev 12741)
+++ branches/stavangerkommune/booking/inc/class.boevent.inc.php 2015-02-12
13:48:57 UTC (rev 12742)
@@ -1,500 +1,150 @@
<?php
-phpgw::import_class('booking.uicommon');
-phpgw::import_class('phpgwapi.send');
+phpgw::import_class('booking.bocommon_authorized');
-class booking_uievent extends booking_uicommon
+class booking_boevent extends booking_bocommon_authorized
{
- public $public_functions = array
- (
- 'index' => true,
- 'add' => true,
- 'edit' => true,
- 'delete' => true,
- 'info' => true,
- 'toggle_show_inactive' => true,
- );
+ const ROLE_ADMIN = 'organization_admin';
- protected $customer_id;
-
- public function __construct()
+ function __construct()
{
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');
+ $this->so = CreateObject('booking.soevent');
}
-
- public function index()
+ /**
+ * @see booking_bocommon_authorized
+ */
+ protected function get_subject_roles($for_object = null,
$initial_roles=array())
{
- 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 ($this->current_app() == 'bookingfrontend') {
+ $bouser = CreateObject('bookingfrontend.bouser');
- 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']);
+ 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'];
}
- $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);
+ $org_id = is_array($for_object) ?
$for_object['customer_organization_id'] : (!is_null($for_object) ? $for_object
: null);
- foreach($events['results'] as &$event)
- {
- $event['from_'] = pretty_timestamp($event['from_']);
- $event['to_'] = pretty_timestamp($event['to_']);
+ if ($bouser->is_organization_admin($org_id)) {
+ $initial_roles[] = array('role' => self::ROLE_ADMIN);
+ }
}
-
- array_walk($events["results"], array($this, "_add_links"),
"booking.uievent.edit");
- return $this->yui_results($events);
+ return parent::get_subject_roles($for_object, $initial_roles);
}
- private function _combine_dates($from_, $to_)
+ /**
+ * @see bocommon_authorized
+ */
+ protected function get_object_role_permissions(array $forObject,
$defaultPermissions)
{
- return array('from_' => $from_, 'to_' => $to_);
- }
+ if ($this->current_app() == 'booking') {
+ $defaultPermissions[booking_sopermission::ROLE_DEFAULT] = array
+ (
+ 'read' => true,
+ 'delete' => true,
+ 'write' => true,
+ 'create' => true,
+ );
+ }
- protected function get_customer_identifier() {
- return $this->customer_id;
- }
+ 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 extract_customer_identifier(&$data) {
- $this->get_customer_identifier()->extract_form_data($data);
+ return $defaultPermissions;
}
- protected function validate_customer_identifier(&$data) {
- return $this->get_customer_identifier()->validate($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 install_customer_identifier_ui(&$entity) {
- $this->get_customer_identifier()->install($this, $entity);
+ return $defaultPermissions;
}
- protected function validate(&$entity) {
- $errors = array_merge($this->validate_customer_identifier($entity),
$this->bo->validate($entity));
- return $errors;
+ public function get_permissions(array $entity)
+ {
+ return parent::get_permissions($entity);
}
- 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 complete_expired(&$events) {
+ $this->so->complete_expired($events);
}
- protected function extract_and_validate($defaults = array()) {
- $entity = $this->extract_form_data($defaults);
- $errors = $this->validate($entity);
- return array($entity, $errors);
+ public function find_expired() {
+ return $this->so->find_expired();
}
- 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)
+ /**
+ * @ Send message about cancelation/modification on event to users of
building.
+ */
+ function send_notification($type, $event, $mailadresses, $orgdate = null)
{
- $data = array();
+ if (!(isset($GLOBALS['phpgw_info']['server']['smtp_server']) &&
$GLOBALS['phpgw_info']['server']['smtp_server']))
+ return;
+ $send = CreateObject('phpgwapi.send');
- foreach($errors['allocation'][0] as $e)
- {
- foreach($event['resources'] as $res)
- {
- $time =
$this->bo->so->get_overlap_time_info($res,$e,'allocation');
+ $config = CreateObject('phpgwapi.config','booking');
+ $config->read();
- $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');
+ $from = isset($config->config_data['email_sender']) &&
$config->config_data['email_sender'] ? $config->config_data['email_sender'] :
"noreply<address@hidden'phpgw_info']['server']['hostname']}>";
- $resource = $this->bo->so->get_resource_info($res);
- $_mymail = $this->bo->so->get_contact_mail($e,'allocation');
+ $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'];
- $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.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']);
- 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 ));
- }
- }
-
- }
+ $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'];
}
- return $data;
- }
- 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));
- }
+ 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['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_']) {
+ $event['from_'] = $event['to_'];
+ $event['to_'] = $_POST['org_to'];
+ $freetime = pretty_timestamp($event['from_']).' til
'.pretty_timestamp($event['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);
+ 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']);
+ } else {
+ $freetime = pretty_timestamp($event['from_']).' til
'.pretty_timestamp($event['to_'])."\n";
}
- 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'];
+ $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>";
- $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)
+ foreach ($mailadresses as $adr)
{
- echo "failed\n";
- return false;
- }
-
- if (strlen($receiver) > 0)
- {
- echo "$receiver - mail\n";
try
{
- $send->msg('email', $receiver, $subject, $body, '', '', '',
$from, '', 'html');
+ $send->msg('email', $adr, $subject, $body, '', '', '', $from,
'', 'html');
}
catch (phpmailerException $e)
{
@@ -503,331 +153,81 @@
}
}
- public function edit()
+ /**
+ * @ Send message about cancelation/modification on event to admins of
building.
+ */
+ function send_admin_notification($type, $event, $message = null, $orgdate
= null)
{
- $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'];
+ 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'];
- $link =
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uibuilding.schedule&id='.$event['building_id']."&date=".substr($event['from_'],0,-9);
- $errors = array();
- $customer = 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'];
+ if (!$type) {
+ $subject = $config->config_data['event_canceled_mail_subject'];
} 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'];
+ $subject = $config->config_data['event_edited_mail_subject'];
}
- list($event, $errors) = $this->extract_and_validate($event);
+ $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
/>';
- 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'];
- }
+ $mailadresses = $config->config_data['emails'];
+ $mailadresses = explode("\n",$mailadresses);
- 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());
+ $link =
$external_site_address.'/bookingfrontend/?menuaction=bookingfrontend.uibuilding.schedule&id=';
+ $link .= $event['building_id'].'&date='.substr($event['from_'], 0, 10);
- 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 (!$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($errors['allocation'])
- {
- $errors['allocation'] = lang('Event created, Overlaps with
existing allocation, Remember to send a notification');
+ 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_']);
}
- 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_']) {
+ $event['from_'] = $event['to_'];
+ $event['to_'] = $_POST['org_to'];
+ $freetime = pretty_timestamp($event['from_']).' til
'.pretty_timestamp($event['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'];
- }
-
- 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));
+ 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']);
} else {
- $this->redirect(array('menuaction' => 'booking.uievent.index'));
+ $freetime = pretty_timestamp($event['from_']).' til
'.pretty_timestamp($event['to_'])."\n";
}
- }
+ $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>";
- 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)
+ foreach ($mailadresses as $adr)
{
- $res_names[] = $res['name'];
+ try
+ {
+ $send->msg('email', $adr, $subject, $body, '', '', '', $from,
'', 'html');
+ }
+ catch (phpmailerException $e)
+ {
+ // TODO: Inform user if something goes wrong
+ }
}
- $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.uievent.inc.php
===================================================================
--- branches/stavangerkommune/booking/inc/class.uievent.inc.php 2015-02-12
13:26:23 UTC (rev 12741)
+++ branches/stavangerkommune/booking/inc/class.uievent.inc.php 2015-02-12
13:48:57 UTC (rev 12742)
@@ -1,26 +1,506 @@
-
<?php
-phpgw::import_class('booking.uievent');
+phpgw::import_class('booking.uicommon');
+phpgw::import_class('phpgwapi.send');
-class bookingfrontend_uievent extends booking_uievent
+class booking_uievent extends booking_uicommon
{
public $public_functions = array
(
- 'info' => true,
- 'report_numbers' => true,
- 'cancel' => true,
- 'edit' => true,
+ 'index' => true,
+ 'add' => true,
+ 'edit' => true,
+ 'delete' => true,
+ 'info' => true,
+ 'toggle_show_inactive' => true,
);
+ protected $customer_id;
+
public function __construct()
{
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');
- $this->building_bo = CreateObject('booking.bobuilding');
- $this->organization_bo = CreateObject('booking.boorganization');
- $this->booking_bo = CreateObject('booking.bobooking');
+ 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');
}
+ public function index()
+ {
+ 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);
+ }
+
+ 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']);
+ }
+ }
+
+ $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);
+
+ foreach($events['results'] as &$event)
+ {
+ $event['from_'] = pretty_timestamp($event['from_']);
+ $event['to_'] = pretty_timestamp($event['to_']);
+ }
+
+ array_walk($events["results"], array($this, "_add_links"),
"booking.uievent.edit");
+ return $this->yui_results($events);
+ }
+
+ private function _combine_dates($from_, $to_)
+ {
+ return array('from_' => $from_, 'to_' => $to_);
+ }
+
+ protected function get_customer_identifier() {
+ return $this->customer_id;
+ }
+
+ 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();
+
+ 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');
+
+ $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 ));
+ }
+ }
+ }
+ }
+
+ 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;
+ }
+
+ 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));
+ }
+ }
+ 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);
+
+ if (!phpgw::get_var('from_report', 'POST'))
+ {
+ $this->flash_form_errors($errors);
+ }
+
+ 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)
+ {
+ $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 (strlen($receiver) > 0)
+ {
+ try
+ {
+ $send->msg('email', $receiver, $subject, $body,
'', '', '', $from, '', 'plain');
+ }
+ catch (phpmailerException $e)
+ {
+ // TODO: Inform user if something goes wrong
+ }
+ }
+ }
+
public function edit()
{
$id = intval(phpgw::get_var('id', 'GET'));
@@ -28,9 +508,11 @@
$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();
+
+ $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();
@@ -52,69 +534,249 @@
$customer['customer_organization_number'] =
$organization['organization_number'];
$customer['customer_internal'] =
$organization['customer_internal'];
}
- if ($config->config_data['split_pool'] == 'yes')
- {
- $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);
-
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));
- }
+ list($event, $errors) = $this->extract_and_validate($event);
- $currres = $event['resources'];
-
-// list($event, $errors) = $this->extract_and_validate($event);
-
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'];
}
- $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_'];
- }
- }
-
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";
+ if (!$_POST['organization_name']) {
+ $event['customer_organization_name'] = Null;
+ $event['customer_organization_id'] = Null;
+ }
array_set_default($_POST, 'resources', array());
- if ($event['from_'] < $test['from_'] || $event['to_'] >
$test['to_']) {
- $errors['out_of_range'] = lang("You can't
extend the event, for that contact administrator");
+ 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 (sizeof($currres) != sizeof($_POST['resources'])) {
- $errors['resource_number'] = lang("You can't
change resources to the event, for that contact administrator");
+ 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['out_of_range'])
+ 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 ($event['from_'] > $test['from_'] ||
$event['to_'] < $test['to_']) {
+ 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);
- $this->bo->send_notification(true,
$event, $mailadresses, $orgdate);
+
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']."\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']."\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']));
+ }
}
- $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));
+ $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'])
+ {
+ $errors['booking'] = lang('Event created, Overlaps with
existing booking, Remember to send a notification');
+ }
$this->flash_form_errors($errors);
if ($customer['customer_identifier_type'])
{
@@ -124,12 +786,13 @@
$event['customer_internal'] =
$customer['customer_internal'];
}
- $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));
+ $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'];
@@ -137,240 +800,44 @@
$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 cancel()
+ public function delete()
{
- $config = CreateObject('phpgwapi.config','booking');
- $config->read();
+ $event_id = phpgw::get_var('event_id', 'GET');
+ $application_id = phpgw::get_var('application_id', 'GET');
- $event = $this->bo->read_single(intval(phpgw::get_var('id',
'GET')));
- $bouser = CreateObject('bookingfrontend.bouser');
- $errors = array();
-
- 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')
- {
- $can_delete_events = 0;
-
- } else {
- $can_delete_events = 1;
+ if ($GLOBALS['phpgw']->acl->check('admin', phpgwapi_acl::ADD,
'booking')) {
+ $this->bo->so->delete_event($event_id);
}
- 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'];
- }
-
- if ($config->config_data['split_pool'] == 'yes')
- {
- $split = 1;
+ if (isset($application_id)) {
+ $this->redirect(array('menuaction' =>
'booking.uiapplication.show', 'id'=>$application_id));
} else {
- $split = 0;
+ $this->redirect(array('menuaction' =>
'booking.uievent.index'));
}
- $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 {
- $event['active'] = 0;
- $this->bo->update($event);
- }
- $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");
- }
- } 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'];
- }
- }
- 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 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');
- $config->read();
- if ($config->config_data['user_can_delete_bookings'] != 'yes')
- {
- $user_can_delete_bookings = 0;
-
- } 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();
- }
-
$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' =>
'bookingfrontend.uibuilding.show', 'id' =>
$event['resources'][0]['building_id']));
+ $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_']);
- $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']));
- }
- self::render_template('event_info',
array('event'=>$event,'orginfo' => $orginfo, 'user_can_delete_bookings' =>
$user_can_delete_bookings));
+ $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
}
- 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'];
-
- $building_info = $this->bo->so->get_building_info($id);
- $building =
$this->building_bo->read_single($building_info['id']);
-
- 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($_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)
- {
- $temp_agegroup[$i]['agegroup_id'] =
$agegroup_id;
- $temp_agegroup[$i][$sex] = $value;
- $i++;
- }
- }
-
- $event['agegroups'] = $temp_agegroup;
- $event['reminder'] = 2; // status set to delivered
- $errors = $this->bo->validate($event);
- if(!$errors)
- {
- $receipt = $this->bo->update($event);
- $step++;
- }
- }
- self::render_template('report_numbers', array('event_object' =>
$event, 'agegroups' => $agegroups, 'building' => $building, 'step' => $step));
- }
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [12742] bkbooking: bugfix,
Kjell Arne Espedal <=