* @package Tine_Tool
* @license http://www.gnu.org/licenses/agpl.html AGPL Version 3
* @author Flávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
- * @copyright Copyright (c) 2013 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright Copyright (c) 2014 Metaways Infosystems GmbH (http://www.metaways.de)
* @version $Id$
*/
function main()
{
- prepareEnvironment();
-
- try {
- $opts = new Zend_Console_Getopt(array(
- 'create application|a=s'=>'create application option with required string parameter',
- 'help'=>'help option with no required parameter'
- )
- );
- $opts->parse();
- } catch (Zend_Console_Getopt_Exception $e) {
- echo $e->getUsageMessage();
- exit;
- }
+ prepareEnvironment();
- if ($applicationName = $opts->getOption('a'))
- {
- create(APPLICATION, array($applicationName));
- echo "Application $applicationName was created successfully into tine20 folder! \n";
- exit;
- }
- echo $e->getUsageMessage();
- exit;
+ try {
+ $opts = new Zend_Console_Getopt(array(
+ 'create application|a=s'=>'create application option with required string parameter',
+ 'help'=>'help option with no required parameter'
+ )
+ );
+ $opts->parse();
+ } catch (Zend_Console_Getopt_Exception $e) {
+ echo $e->getUsageMessage();
+ exit;
+ }
+
+ if ($applicationName = $opts->getOption('a'))
+ {
+ echo create(APPLICATION, array($applicationName));
+ exit;
+ }
+ echo "UNEXPECTED ERROR: missing argument. Type tn -help to see parameters \n";
+ exit;
}
/**
*/
function prepareEnvironment()
{
- $paths = array(
- realpath(dirname(__FILE__) . '/../tine20'),
- realpath(dirname(__FILE__) . '/../tine20/library'),
- get_include_path()
- );
- set_include_path(implode(PATH_SEPARATOR, $paths));
+ $paths = array(
+ realpath(__DIR__ . '/../tine20'),
+ realpath(__DIR__ . '/../tine20/library'),
+ get_include_path()
+ );
+ set_include_path(implode(PATH_SEPARATOR, $paths));
- require_once 'Zend/Loader/Autoloader.php';
- $autoloader = Zend_Loader_Autoloader::getInstance();
- $autoloader->setFallbackAutoloader(true);
- Tinebase_Autoloader::initialize($autoloader);
+ require_once realpath(__DIR__ . '/../tine20') . '/bootstrap.php';
}
/**
* Creates an instance of a class that knows how to build the requested structure
+ * Command can executed from everywhere, because the path is determined by __DIR__
* @param string $builder
+ * @param array $args
+ * @return string message
*/
function create($builder, array $args)
-{
- // last argument is path of Tine 2.0
- $args[] = realpath(dirname(__FILE__) . '/../tine20');
+{
+ // last argument is path of Tine 2.0
+ $args[] = realpath(__DIR__ . '/../tine20');
- $className = 'Tool_CodeGenerator_' . $builder;
- $tcg = new $className();
- $tcg->build($args);
-}
\ No newline at end of file
+ $className = 'Tool_CodeGenerator_' . $builder;
+ $tcg = new $className();
+ return $tcg->build($args);
+}
-<?xml version="1.0" encoding="UTF-8"?>\r
-<doc>\r
- <sources>\r
- <!-- <source src="../tine20/library/ExtJS/src" match="*.js"/> -->\r
-\r
-\r
- <source src="../tine20/Tinebase/js/" match="*.js"/>\r
-\r
-\r
- <source src="../tine20/Addressbook/js/ContactGrid.js"/>\r
- <source src="../tine20/Addressbook/js/SearchCombo.js"/>\r
- <!-- <source src="../tine20/Admin/js/UserEditDialog.js"/> -->\r
- <!-- <source src="../tine20/Calendar/js" match="*.js"/> -->\r
- <source src="../tine20/Calendar/js/AttendeeGridPanel.js"/>\r
- <source src="../tine20/Calendar/js/Calendar.js"/>\r
- <source src="../tine20/Calendar/js/CalendarPanel.js"/>\r
- <source src="../tine20/Calendar/js/CalendarSelectWidget.js"/>\r
- <source src="../tine20/Calendar/js/ColorManager.js"/>\r
- <source src="../tine20/Calendar/js/DaysView.js"/>\r
- <source src="../tine20/Calendar/js/EventEditDialog.js"/> \r
- <!-- <source src="../tine20/Calendar/js/EventSelectionModel.js"/> \r
- <source src="../tine20/Calendar/js/EventUI.js"/> \r
- <source src="../tine20/Calendar/js/MainScreenCenterPanel.js"/> -->\r
- <source src="../tine20/Calendar/js/Model.js"/>\r
- <!-- <source src="../tine20/Calendar/js/MonthView.js"/> \r
- <source src="../tine20/Calendar/js/PagingToolbar.js"/> \r
- <source src="../tine20/Calendar/js/ParallelEventsRegistry.js"/> \r
- <source src="../tine20/Calendar/js/RrulePanel.js"/> -->\r
- <source src="../tine20/Crm/js" match="*.js"/>\r
- <source src="../tine20/ExampleApplication/js/ExampleRecordGridPanel.js"/>\r
- <source src="../tine20/ExampleApplication/js/ExampleRecordEditDialog.js"/>\r
- <source src="../tine20/Felamimail/js" match="*.js"/>\r
- <source src="../tine20/Sales/js" match="*.js"/>\r
- <!-- <source src="../tine20/Setup/js" match="*.js"/> -->\r
- <!-- <source src="../tine20/Tasks/js/EditDialog.js"/> -->\r
- <source src="../tine20/Tasks/js/GridPanel.js"/>\r
- <source src="../tine20/Timetracker/js/TimesheetGridPanel.js"/>\r
- <source src="../tine20/Timetracker/js/TimeaccountGridPanel.js"/>\r
- </sources>\r
- <tags>\r
- <tag name="author" title="Author"/>\r
- <tag name="copyright" title="Copyright"/>\r
- <tag name="license" title="License"/>\r
- <tag name="version" title="Version"/>\r
- <tag name="note" format="<i>NOTE: {0}</i>"/>\r
- <tag name="demo" title="Demo" format="<a href="{0}">{0}</a>" /> \r
- </tags>\r
-</doc>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<doc>
+ <sources>
+ <!-- <source src="../tine20/library/ExtJS/src" match="*.js"/> -->
+
+ <source src="../tine20/Tinebase/js/" match="*.js"/>
+
+ <source src="../tine20/Addressbook/js/ContactGrid.js"/>
+ <source src="../tine20/Addressbook/js/SearchCombo.js"/>
+ <!-- <source src="../tine20/Admin/js/UserEditDialog.js"/> -->
+ <!-- <source src="../tine20/Calendar/js" match="*.js"/> -->
+ <source src="../tine20/Calendar/js/AttendeeGridPanel.js"/>
+ <source src="../tine20/Calendar/js/Calendar.js"/>
+ <source src="../tine20/Calendar/js/CalendarPanel.js"/>
+ <source src="../tine20/Calendar/js/CalendarSelectWidget.js"/>
+ <source src="../tine20/Calendar/js/ColorManager.js"/>
+ <source src="../tine20/Calendar/js/DaysView.js"/>
+ <source src="../tine20/Calendar/js/EventEditDialog.js"/>
+ <!-- <source src="../tine20/Calendar/js/EventSelectionModel.js"/>
+ <source src="../tine20/Calendar/js/EventUI.js"/>
+ <source src="../tine20/Calendar/js/MainScreenCenterPanel.js"/> -->
+ <source src="../tine20/Calendar/js/Model.js"/>
+ <!-- <source src="../tine20/Calendar/js/MonthView.js"/>
+ <source src="../tine20/Calendar/js/PagingToolbar.js"/>
+ <source src="../tine20/Calendar/js/ParallelEventsRegistry.js"/>
+ <source src="../tine20/Calendar/js/RrulePanel.js"/> -->
+ <source src="../tine20/Crm/js" match="*.js"/>
+ <source src="../tine20/ExampleApplication/js/ExampleRecordGridPanel.js"/>
+ <source src="../tine20/ExampleApplication/js/ExampleRecordEditDialog.js"/>
+ <source src="../tine20/Felamimail/js" match="*.js"/>
+ <source src="../tine20/Sales/js" match="*.js"/>
+ <!-- <source src="../tine20/Setup/js" match="*.js"/> -->
+ <!-- <source src="../tine20/Tasks/js/EditDialog.js"/> -->
+ <source src="../tine20/Tasks/js/GridPanel.js"/>
+ <source src="../tine20/Timetracker/js/TimesheetGridPanel.js"/>
+ <source src="../tine20/Timetracker/js/TimeaccountGridPanel.js"/>
+ </sources>
+ <tags>
+ <tag name="author" title="Author"/>
+ <tag name="copyright" title="Copyright"/>
+ <tag name="license" title="License"/>
+ <tag name="version" title="Version"/>
+ <tag name="note" format="<i>NOTE: {0}</i>"/>
+ <tag name="demo" title="Demo" format="<a href="{0}">{0}</a>" />
+ </tags>
+</doc>
+tine20 (2014.09.1-0) natty; urgency=low
+
+ * New upstream release "Koriander"
+
+ -- Philipp Schüle <p.schuele@metaways.de> Thu, 11 Sep 2014 13:00:31 +0200
+
+tine20 (2014.09.0~preview1-0) natty; urgency=low
+
+ * New upstream release "Koriander" Preview 1
+
+ -- Philipp Schüle <p.schuele@metaways.de> Thu, 04 Sep 2014 14:51:30 +0200
+
tine20 (2013.10.6-0) natty; urgency=low
* New upstream release "Collin" Service Release 5
RewriteRule ^webdav index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
RewriteRule ^principals index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
RewriteRule ^remote.php index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
+
+ # Anonymous downloads
+ RewriteRule ^download/get/(.*) index.php?method=Download.downloadNode&path=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
+ RewriteRule ^download/show/(.*) index.php?method=Download.displayNode&path=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
</IfModule>
<IfModule mod_expires.c>
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -9,10 +9,10 @@
+ // set 'count' equal zero to disable captcha, or set to number of invalid logins before request captcha.
+ 'captcha' => array('count'=>0),
+ 'database' => array(
+- 'host' => 'ENTER DATABASE HOSTNAME',
+- 'dbname' => 'ENTER DATABASE NAME',
+- 'username' => 'ENTER DATABASE USERNAME',
+- 'password' => 'ENTER DATABASE PASSWORD',
++ 'host' => '_DBC_DBSERVER_',
++ 'dbname' => '_DBC_DBNAME_',
++ 'username' => '_DBC_DBUSER_',
++ 'password' => '_DBC_DBPASS_',
+ 'adapter' => 'pdo_mysql',
+ 'tableprefix' => 'tine20_',
+ ),
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -17,8 +17,8 @@
+ 'tableprefix' => 'tine20_',
+ ),
+ 'setupuser' => array(
+- 'username' => 'SETUP USERNAME',
+- 'password' => 'SETUP PASSWORD'
++ 'username' => '_SETUPUSERNAME_',
++ 'password' => '_SETUPPASSWORD_'
+ ),
+
+ /* // optional cache (recommended)
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -21,13 +21,11 @@
+ 'password' => '_SETUPPASSWORD_'
+ ),
+
+- /* // optional cache (recommended)
+ 'caching' => array (
+ 'active' => true,
+- 'path' => 'PATH TO CACHE (NEEDS TO BE WRITEABLE BY WEBSERVER)',
++ 'path' => '/var/lib/tine20/cache',
+ 'lifetime' => 3600,
+ ),
+- */
+
+ /* // optional logger
+ 'logger' => array (
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -27,12 +27,10 @@
+ 'lifetime' => 3600,
+ ),
+
+- /* // optional logger
+ 'logger' => array (
+ 'active' => true,
+- 'filename' => 'LOG FILE (NEEDS TO BE WRITEABLE BY WEBSERVER)',
+- 'priority' => '7',
++ 'filename' => '/var/log/tine20/tine20.log',
++ 'priority' => '3',
+ ),
+- */
+ );
+
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -32,5 +32,9 @@
+ 'filename' => '/var/log/tine20/tine20.log',
+ 'priority' => '3',
+ ),
++ 'tmpdir' => '/var/lib/tine20/tmp',
++ 'sessiondir' => '/var/lib/tine20/sessions',
++ 'filesdir' => '/var/lib/tine20/files',
++ 'mapPanel' => 1
+ );
+
+++ /dev/null
---- a/config.inc.php.dist
-+++ b/config.inc.php.dist
-@@ -9,32 +9,29 @@
- // set 'count' equal zero to disable captcha, or set to number of invalid logins before request captcha.
- 'captcha' => array('count'=>0),
- 'database' => array(
-- 'host' => 'ENTER DATABASE HOSTNAME',
-- 'dbname' => 'ENTER DATABASE NAME',
-- 'username' => 'ENTER DATABASE USERNAME',
-- 'password' => 'ENTER DATABASE PASSWORD',
-+ 'host' => '_DBC_DBSERVER_',
-+ 'dbname' => '_DBC_DBNAME_',
-+ 'username' => '_DBC_DBUSER_',
-+ 'password' => '_DBC_DBPASS_',
- 'adapter' => 'pdo_mysql',
- 'tableprefix' => 'tine20_',
- ),
- 'setupuser' => array(
-- 'username' => 'SETUP USERNAME',
-- 'password' => 'SETUP PASSWORD'
-+ 'username' => '_SETUPUSERNAME_',
-+ 'password' => '_SETUPPASSWORD_'
- ),
--
-- /* // optional cache (recommended)
- 'caching' => array (
- 'active' => true,
-- 'path' => 'PATH TO CACHE (NEEDS TO BE WRITEABLE BY WEBSERVER)',
-+ 'path' => '/var/lib/tine20/cache',
- 'lifetime' => 3600,
- ),
-- */
--
-- /* // optional logger
- 'logger' => array (
- 'active' => true,
-- 'filename' => 'LOG FILE (NEEDS TO BE WRITEABLE BY WEBSERVER)',
-- 'priority' => '7',
-+ 'filename' => '/var/log/tine20/tine20.log',
-+ 'priority' => '3',
- ),
-- */
-+ 'tmpdir' => '/var/lib/tine20/tmp',
-+ 'sessiondir' => '/var/lib/tine20/sessions',
-+ 'filesdir' => '/var/lib/tine20/files',
-+ 'mapPanel' => 1
- );
--
-config.inc.php.dist.diff
+01_database_settings.diff
+02_setupuser_settings.diff
+03_caching_settings.diff
+04_logger_settings.diff
+05_path_settings.diff
status.php /usr/share/tine20
themes /usr/share/tine20
tine20.php /usr/share/tine20
+init_plugins.php /usr/share/tine20
debian/etc/php5.ini /etc/tine20
TEMPDIR="$BASEDIR/temp"
MISCPACKAGESDIR="$BASEDIR/packages/misc"
-CODENAME="Collin"
+CODENAME="Koriander"
GITURL="http://git.tine20.org/git/tine20"
RELEASE=""
-GITBRANCH=""
+GITBRANCH="master"
+#GITBRANCH="2014.09"
PACKAGEDIR=""
PATH=$MISCPACKAGESDIR:$TEMPDIR/tine20/vendor/bin:$PATH
echo -n "building "
local FILES="Addressbook Admin Setup Tinebase Zend images library vendor docs fonts themes"
local FILES="$FILES config.inc.php.dist index.php langHelper.php setup.php tine20.php bootstrap.php worker.php status.php"
- local FILES="$FILES CREDITS LICENSE PRIVACY README RELEASENOTES chrome_web_app.json"
+ local FILES="$FILES CREDITS LICENSE PRIVACY README RELEASENOTES init_plugins.php chrome_web_app.json"
(cd $TEMPDIR/tine20; tar cjf ../../packages/tine20/$RELEASE/tine20-${UCFILE}_$RELEASE.tar.bz2 $FILES)
(cd $TEMPDIR/tine20; zip -qr ../../packages/tine20/$RELEASE/tine20-${UCFILE}_$RELEASE.zip $FILES)
+tine20 (2014.09.1-0) natty; urgency=low
+
+ * New upstream release "Koriander"
+
+ -- Philipp Schüle <p.schuele@metaways.de> Thu, 11 Sep 2014 13:00:31 +0200
+
+tine20 (2014.09.0~preview1-0) natty; urgency=low
+
+ * New upstream release "Koriander" Preview 1
+
+ -- Philipp Schüle <p.schuele@metaways.de> Thu, 04 Sep 2014 14:51:30 +0200
+
tine20 (2013.10.6-0) natty; urgency=low
* New upstream release "Collin" Service Release 5
wwwconfig-common,
apache2 | lighttpd | nginx,
libapache2-mod-php5 | php5-fpm,
- php5-mysql | php5-mysqli | php5-pgsql,
+ php5-mysqlnd | php5-mysql | php5-pgsql,
php5-mcrypt,
php5-gd,
php5-intl,
Architecture: all
Depends: ${tine20:Modules},
tine20-libraries (= ${binary:Version}),
- php5-mysql | php5-mysqli | php5-pgsql,
+ php5-mysqlnd | php5-mysql | php5-pgsql,
php5-mcrypt,
php5-gd,
php5-cli,
RewriteRule ^webdav index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
RewriteRule ^principals index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
RewriteRule ^remote.php index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
+
+ # Anonymous downloads
+ RewriteRule ^download/get/(.*) index.php?method=Download.downloadNode&path=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
+ RewriteRule ^download/show/(.*) index.php?method=Download.displayNode&path=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
</IfModule>
<IfModule mod_expires.c>
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -9,10 +9,10 @@
+ // set 'count' equal zero to disable captcha, or set to number of invalid logins before request captcha.
+ 'captcha' => array('count'=>0),
+ 'database' => array(
+- 'host' => 'ENTER DATABASE HOSTNAME',
+- 'dbname' => 'ENTER DATABASE NAME',
+- 'username' => 'ENTER DATABASE USERNAME',
+- 'password' => 'ENTER DATABASE PASSWORD',
++ 'host' => '_DBC_DBSERVER_',
++ 'dbname' => '_DBC_DBNAME_',
++ 'username' => '_DBC_DBUSER_',
++ 'password' => '_DBC_DBPASS_',
+ 'adapter' => 'pdo_mysql',
+ 'tableprefix' => 'tine20_',
+ ),
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -17,8 +17,8 @@
+ 'tableprefix' => 'tine20_',
+ ),
+ 'setupuser' => array(
+- 'username' => 'SETUP USERNAME',
+- 'password' => 'SETUP PASSWORD'
++ 'username' => '_SETUPUSERNAME_',
++ 'password' => '_SETUPPASSWORD_'
+ ),
+
+ /* // optional cache (recommended)
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -21,13 +21,11 @@
+ 'password' => '_SETUPPASSWORD_'
+ ),
+
+- /* // optional cache (recommended)
+ 'caching' => array (
+ 'active' => true,
+- 'path' => 'PATH TO CACHE (NEEDS TO BE WRITEABLE BY WEBSERVER)',
++ 'path' => '/var/lib/tine20/cache',
+ 'lifetime' => 3600,
+ ),
+- */
+
+ /* // optional logger
+ 'logger' => array (
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -27,12 +27,10 @@
+ 'lifetime' => 3600,
+ ),
+
+- /* // optional logger
+ 'logger' => array (
+ 'active' => true,
+- 'filename' => 'LOG FILE (NEEDS TO BE WRITEABLE BY WEBSERVER)',
+- 'priority' => '7',
++ 'filename' => '/var/log/tine20/tine20.log',
++ 'priority' => '3',
+ ),
+- */
+ );
+
--- /dev/null
+--- a/config.inc.php.dist
++++ b/config.inc.php.dist
+@@ -32,5 +32,9 @@
+ 'filename' => '/var/log/tine20/tine20.log',
+ 'priority' => '3',
+ ),
++ 'tmpdir' => '/var/lib/tine20/tmp',
++ 'sessiondir' => '/var/lib/tine20/sessions',
++ 'filesdir' => '/var/lib/tine20/files',
++ 'mapPanel' => 1
+ );
+
+++ /dev/null
---- a/config.inc.php.dist
-+++ b/config.inc.php.dist
-@@ -9,32 +9,29 @@
- // set 'count' equal zero to disable captcha, or set to number of invalid logins before request captcha.
- 'captcha' => array('count'=>0),
- 'database' => array(
-- 'host' => 'ENTER DATABASE HOSTNAME',
-- 'dbname' => 'ENTER DATABASE NAME',
-- 'username' => 'ENTER DATABASE USERNAME',
-- 'password' => 'ENTER DATABASE PASSWORD',
-+ 'host' => '_DBC_DBSERVER_',
-+ 'dbname' => '_DBC_DBNAME_',
-+ 'username' => '_DBC_DBUSER_',
-+ 'password' => '_DBC_DBPASS_',
- 'adapter' => 'pdo_mysql',
- 'tableprefix' => 'tine20_',
- ),
- 'setupuser' => array(
-- 'username' => 'SETUP USERNAME',
-- 'password' => 'SETUP PASSWORD'
-+ 'username' => '_SETUPUSERNAME_',
-+ 'password' => '_SETUPPASSWORD_'
- ),
--
-- /* // optional cache (recommended)
- 'caching' => array (
- 'active' => true,
-- 'path' => 'PATH TO CACHE (NEEDS TO BE WRITEABLE BY WEBSERVER)',
-+ 'path' => '/var/lib/tine20/cache',
- 'lifetime' => 3600,
- ),
-- */
--
-- /* // optional logger
- 'logger' => array (
- 'active' => true,
-- 'filename' => 'LOG FILE (NEEDS TO BE WRITEABLE BY WEBSERVER)',
-- 'priority' => '7',
-+ 'filename' => '/var/log/tine20/tine20.log',
-+ 'priority' => '3',
- ),
-- */
-+ 'tmpdir' => '/var/lib/tine20/tmp',
-+ 'sessiondir' => '/var/lib/tine20/sessions',
-+ 'filesdir' => '/var/lib/tine20/files',
-+ 'mapPanel' => 1
- );
--
-config.inc.php.dist.diff
+01_database_settings.diff
+02_setupuser_settings.diff
+03_caching_settings.diff
+04_logger_settings.diff
+05_path_settings.diff
status.php /usr/share/tine20
themes /usr/share/tine20
tine20.php /usr/share/tine20
+init_plugins.php /usr/share/tine20
debian/etc/php5.ini /etc/tine20
RewriteRule ^webdav index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
RewriteRule ^principals index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
RewriteRule ^remote.php index.php?frontend=webdav [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
+
+ # Anonymous downloads
+ RewriteRule ^download/get/(.*) index.php?method=Download.downloadNode&path=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
+ RewriteRule ^download/show/(.*) index.php?method=Download.displayNode&path=$1 [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
</IfModule>
<IfModule mod_expires.c>
# Wbxml/ - not found in Fedora
# Zend/ - there is php-ZendFramework, strip it out
-%global vyear 2013
-%global vmonth 10
-%global vmin 6
+%global vyear 2014
+%global vmonth 09
+%global vmin 1
# comment out release suffix when not an unstable release
# %global rsuffix rc2
Summary: Tine 2.0 webserver integration package
Requires: httpd
Requires: php >= 5.3.0
-Requires: php-gd php-mysqli php-mcrypt php-pecl-apc
-%if 0%{?fedora} >= 19
-Requires: php-opcache
-%else
-Requires: php-pecl-apc
-%endif
+Requires: php-gd php-mysqlnd php-mcrypt php-opcache
#Requires: php-ZendFramework php-ZendFramework-Ldap
Requires: %{name}-tinebase %{name}-activesync %{name}-calendar %{name}-crm %{name}-felamimail %{name}-filemanager %{name}-projects %{name}-sales %{name}-tasks %{name}-timetracker
%{_datadir}/%{name}/setup.php
%{_datadir}/%{name}/status.php
%{_datadir}/%{name}/%{name}.php
+%{_datadir}/%{name}/init_plugins.php
%{_datadir}/%{name}/themes
%dir %{_sysconfdir}/%{name}/
%changelog
+* Thu Sep 11 2014 Philipp Schüle <p.schuele@metaways.de> - 2014.09.1-0
+- New upstream release Koriander
+
* Wed Feb 14 2014 Philipp Schüle <p.schuele@metaways.de> - 2013.10.6-0
- New upstream release Collin Service Release 5
{
parent::setUp();
+ Calendar_Controller_Event::getInstance()->doContainerACLChecks(true);
+
// replace email to make current user organizer and attendee
$testConfig = Zend_Registry::get('testConfig');
$email = ($testConfig->email) ? $testConfig->email : Tinebase_Core::getUser()->accountEmailAddress;
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<config>
+ <model>Addressbook_Model_Contact</model>
+ <name>adb_tagmatrix_ods</name>
+ <type>export</type>
+ <plugin>Addressbook_Export_Ods</plugin>
+ <description>default ods contact export definition</description>
+ <header>1</header>
+ <headers>
+ <header>{date}</header>
+ <header>{user}</header>
+ </headers>
+ <columns>
+ <!--column>
+ <identifier>account_id</identifier>
+ </column-->
+ <column>
+ <identifier>id</identifier>
+ </column>
+ <column>
+ <identifier>tags</identifier>
+ <type>tags</type>
+ <separateColumns>1</separateColumns>
+ </column>
+ </columns>
+</config>
/**
* Test class for Addressbook_Frontend_Json
*/
-class Addressbook_JsonTest extends PHPUnit_Framework_TestCase
+class Addressbook_JsonTest extends TestCase
{
/**
* set geodata for contacts
}
if (! empty($this->objects['createdTagIds'])) {
- Tinebase_Tags::getInstance()->deleteTags($this->objects['createdTagIds']);
+ try {
+ Tinebase_Tags::getInstance()->deleteTags($this->objects['createdTagIds'], TRUE);
+ $this->objects['createdTagIds'] = array();
+ } catch (Tinebase_Exception_AccessDenied $e) {
+ $this->objects['createdTagIds'] = array();
+ }
}
}
}
/**
- * get tag
- *
- * @param string $tagType
- * @param string $tagName
- * @return Tinebase_Model_Tag
- */
- protected function _getTag($tagType = Tinebase_Model_Tag::TYPE_SHARED, $tagName = NULL)
- {
- if ($tagName) {
- try {
- $tag = Tinebase_Tags::getInstance()->getTagByName($tagName);
- return $tag;
- } catch (Tinebase_Exception_NotFound $tenf) {
- }
- } else {
- $tagName = Tinebase_Record_Abstract::generateUID();
- }
-
- return new Tinebase_Model_Tag(array(
- 'type' => $tagType,
- 'name' => $tagName,
- 'description' => 'testTagDescription',
- 'color' => '#009B31',
- ));
- }
-
- /**
* testExportXlsWithCustomfield
*
* @see 0006634: custom fields missing in XLS export
}
/**
+ * each tag should have an own column
+ */
+ public function testExportOdsWithTagMatrix()
+ {
+ $filter = new Tinebase_Model_TagFilter(array());
+ try {
+ $allTags = Tinebase_Tags::getInstance()->searchTags($filter);
+ if ($allTags->count()) {
+ Tinebase_Tags::getInstance()->deleteTags($allTags->getId(), TRUE);
+ }
+ } catch (Tinebase_Exception_AccessDenied $e) {
+ $this->markTestSkipped('This fails each 2nd time.');
+ }
+
+ $controller = Addressbook_Controller_Contact::getInstance();
+
+ $t1 = $this->_getTag(Tinebase_Model_Tag::TYPE_SHARED, 'tag1');
+ $this->objects['createdTagIds'][] = $t1->getId();
+
+ $c1 = new Addressbook_Model_Contact(array(
+ 'n_given' => 'ali',
+ 'n_family' => 'PHPUNIT',
+ 'org_name' => 'test',
+ 'container_id' => $this->container->id,
+ 'tags' => array($t1)
+ ));
+
+ $c1 = $controller->create($c1);
+ $this->_contactIdsToDelete[] = $c1->getId();
+
+ $t2 = $this->_getTag(Tinebase_Model_Tag::TYPE_SHARED, 'tag2');
+ $this->objects['createdTagIds'][] = $t2->getId();
+
+ // this tag should not occur, this is the addressbook application
+ $crmAppId = Tinebase_Application::getInstance()->getApplicationByName('Crm')->getId();
+ $t3 = $this->_getTag(Tinebase_Model_Tag::TYPE_SHARED, 'tag3', array($crmAppId));
+ $this->objects['createdTagIds'][] = $t3->getId();
+
+ $c2 = new Addressbook_Model_Contact(array(
+ 'n_given' => 'alisabeth',
+ 'n_family' => 'PHPUNIT',
+ 'org_name' => 'test',
+ 'container_id' => $this->container->id,
+ 'tags' => array($t2)
+ ));
+
+ $c2 = $controller->create($c2);
+ $this->_contactIdsToDelete[] = $c2->getId();
+
+ $this->assertNotEmpty($c1->tags);
+ $this->assertNotEmpty($c2->tags);
+
+ $filter = new Addressbook_Model_ContactFilter(array(array(
+ 'field' => 'n_family',
+ 'operator' => 'equals',
+ 'value' => 'PHPUNIT'
+ )));
+
+ $definition = dirname(__FILE__) . '/Export/definitions/adb_tagmatrix_ods.xml';
+ $exporter = new Addressbook_Export_Ods($filter, Addressbook_Controller_Contact::getInstance(), array('definitionFilename' => $definition));
+ $doc = $exporter->generate();
+
+ $xml = $this->_getContentXML($doc);
+
+ $ns = $xml->getNamespaces(true);
+ $spreadsheetXml = $xml->children($ns['office'])->{'body'}->{'spreadsheet'};
+
+ $headerRowXml = $spreadsheetXml->children($ns['table'])->{'table'}->{'table-row'}->{1};
+
+ // the tags should exist in the header row
+ $this->assertEquals('tag1', (string) $headerRowXml->children($ns['table'])->{'table-cell'}->{1}->children($ns['text'])->{0});
+ $this->assertEquals('tag2', (string) $headerRowXml->children($ns['table'])->{'table-cell'}->{2}->children($ns['text'])->{0});
+
+ // if there is no more header column, tag3 is not shown
+ $this->assertEquals(3, (string) $headerRowXml->children($ns['table'])->{'table-cell'}->count());
+ }
+
+ /**
* test import
*
* @see 0006226: Data truncated for column 'adr_two_lon'
'description' => 'hidden group',
'visibility' => Tinebase_Model_Group::VISIBILITY_HIDDEN
));
+
try {
$hiddenGroup = Admin_Controller_Group::getInstance()->create($hiddenGroup);
} catch (Exception $e) {
'operator' => 'equals',
'value' => 'hiddengroup'
));
+
$result = $this->_instance->searchLists($filter, array());
$this->assertEquals(0, $result['totalcount'], 'should not find hidden list: ' . print_r($result, TRUE));
}
$this->objects['configSemicolon'] = '<?xml version="1.0" encoding="UTF-8"?>
<config>
<model>Tinebase_Model_FullUser</model>
- <plugin>Admin_Import_Csv</plugin>
+ <plugin>Admin_Import_User_Csv</plugin>
<type>import</type>
<headline>1</headline>
<dryrun>0</dryrun>
$this->objects['configEmailuser'] = '<?xml version="1.0" encoding="UTF-8"?>
<config>
<model>Tinebase_Model_FullUser</model>
- <plugin>Admin_Import_Csv</plugin>
+ <plugin>Admin_Import_User_Csv</plugin>
<type>import</type>
<headline>1</headline>
<dryrun>0</dryrun>
'name' => $_definition,
'type' => 'import',
'model' => 'Tinebase_Model_FullUser',
- 'plugin' => 'Admin_Import_Csv',
+ 'plugin' => 'Admin_Import_User_Csv',
'plugin_options' => $_config
)));
}
}
unlink("test2.csv");
}
+
+ /**
+ * tests if import with members from csv works correctly
+ */
+ public function testImportGroups()
+ {
+ $opts = new Zend_Console_Getopt('abp:');
+ $opts->setArguments(array(dirname(__FILE__) . '/files/import_groups.csv', 'definition=admin_group_import_csv'));
+
+ // start import (dry run)
+ ob_start();
+ $this->_cli->importGroups($opts);
+ $out = ob_get_clean();
+ $this->assertStringStartsWith('Imported 4 records.', $out);
+
+ $expected = array('men' => 3, 'women' => 2, 'highperformers' => 2, 'lowperformers' => 3);
+ $this->_testImportGroupsHelper($expected);
+
+ $opts->setArguments(array(dirname(__FILE__) . '/files/import_groups_update.csv', 'definition=admin_group_import_csv'));
+ ob_start();
+ $this->_cli->importGroups($opts);
+ $out = ob_get_clean();
+ $this->assertStringStartsWith('Imported 0 records.', $out);
+
+ $expected = array('men' => 3, 'women' => 2, 'lowperformers' => 2, 'highperformers' => 3);
+ $this->_testImportGroupsHelper($expected);
+ }
+
+ protected function _testImportGroupsHelper($expected)
+ {
+ $be = new Tinebase_Group_Sql();
+
+ foreach($expected as $name => $count) {
+ $group = $be->getGroupByName($name);
+ $members = $be->getGroupMembers($group);
+
+ $this->assertEquals($count, count($members), 'Group ' . $name . ' should have ' . $count . ' members!');
+ $this->assertEquals('displayed', $group->visibility, 'Group ' . $name . ' should be visible!');
+ }
+ }
}
$this->assertEquals('disabled', $account->accountStatus);
}
+
+ /**
+ * test send deactivation notification
+ *
+ * @see 0009956: send mail on account deactivation
+ */
+ public function testAccountDeactivationNotification()
+ {
+ $smtpConfig = Tinebase_Config::getInstance()->get(Tinebase_Config::SMTP);
+ if (! isset($smtpConfig->from) && ! isset($smtpConfig->primarydomain)) {
+ $this->markTestSkipped('no notification service address configured.');
+ }
+
+ Tinebase_Config::getInstance()->set(Tinebase_Config::ACCOUNT_DEACTIVATION_NOTIFICATION, true);
+
+ $userArray = $this->testSaveAccount();
+
+ self::flushMailer();
+
+ $this->_json->setAccountState(array($userArray['accountId']), 'disabled');
+
+ $messages = self::getMessages();
+
+ $this->assertEquals(1, count($messages), 'did not get notification message');
+
+ $message = $messages[0];
+ $bodyText = $message->getBodyText(/* textOnly = */ true);
+
+ $translate = Tinebase_Translation::getTranslation('Tinebase');
+ $this->assertEquals($translate->_('Your Tine 2.0 account has been deactivated'), $message->getSubject());
+ // @todo make this work. currently it does not work in de translation as the user name is cropped (tine20phpuni=)
+ //$this->assertContains($userArray['accountLoginName'], $bodyText);
+ $this->assertContains(Tinebase_Core::getHostname(), $bodyText);
+ }
/**
* try to reset password
--- /dev/null
+"women";"Women in our Company";"rwright sclever"
+"men";"Men in our Company";"pwulf jsmith jmcblack"
+"highperformers";"High Performers in our company";"rwright sclever"
+"lowperformers";"Low Performers in our company";"pwulf jsmith jmcblack"
\ No newline at end of file
--- /dev/null
+"women";"Women in our Company";"rwright sclever"
+"men";"Men in our Company";"pwulf jsmith jmcblack"
+"highperformers";"High Performers in our company";"rwright sclever pwulf"
+"lowperformers";"Low Performers in our company";"jsmith jmcblack"
$suite->addTest(Projects_AllTests::suite());
$suite->addTest(HumanResources_AllTests::suite());
$suite->addTest(Inventory_AllTests::suite());
+ $suite->addTest(ExampleApplication_AllTests::suite());
$suite->addTest(Sipgate_AllTests::suite());
$suite->addTest(SimpleFAQ_AllTests::suite());
$suite->addTest(Zend_AllTests::suite());
*
* @package Calendar
* @license http://www.gnu.org/licenses/agpl.html AGPL Version 3
- * @copyright Copyright (c) 2009-2013 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright Copyright (c) 2009-2014 Metaways Infosystems GmbH (http://www.metaways.de)
* @author Cornelius Weiss <c.weiss@metaways.de>
*/
/**
- * Test helper
- */
-require_once dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
-
-/**
* Test class for Calendar_Backend_Sql
*
* @package Calendar
}
+ /**
+ * test search events
+ */
public function testSearchEvents()
{
$from = '2009-04-03 00:00:00';
'dtend' => '2009-04-02 23:59:59',
'summary' => 'non recur event ending before search period => should _not_ be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
- Tinebase_Model_Grants::GRANT_READ => true
+ Tinebase_Model_Grants::GRANT_READ => true,
),
array(
'dtstart' => '2009-04-02 23:30:00',
'dtend' => '2009-04-03 00:30:00',
'summary' => 'non recur event ending within search period => should be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
Tinebase_Model_Grants::GRANT_READ => true
'dtend' => '2009-04-07 12:00:00',
'summary' => 'non recur event completly within search period => should be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
Tinebase_Model_Grants::GRANT_READ => true
'dtend' => '2009-04-11 00:30:00',
'summary' => 'non recur event starting within search period => should be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
Tinebase_Model_Grants::GRANT_READ => true
'dtend' => '2009-04-11 02:00:00',
'summary' => 'non recur event starting after search period => should _not_ be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
Tinebase_Model_Grants::GRANT_READ => true
'rrule' => 'FREQ=DAILY;INTERVAL=1;UNTIL=2009-04-02 23:59:59',
'summary' => 'recur event ending before search period => should _not_ be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
'rrule_until' => '2009-04-02 23:59:59',
- Tinebase_Model_Grants::GRANT_READ => true
+ Tinebase_Model_Grants::GRANT_READ => true,
+ 'originator_tz' => Tinebase_Core::get(Tinebase_Core::USERTIMEZONE)
),
array(
'dtstart' => '2009-03-27 22:00:00',
'rrule' => 'FREQ=DAILY;INTERVAL=1;UNTIL=2009-04-05 23:59:59',
'summary' => 'recur event ending within search period => should be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
'rrule_until' => '2009-04-05 23:59:59',
- Tinebase_Model_Grants::GRANT_READ => true
+ Tinebase_Model_Grants::GRANT_READ => true,
+ 'originator_tz' => Tinebase_Core::get(Tinebase_Core::USERTIMEZONE)
),
array(
'dtstart' => '2009-04-03 22:00:00',
'rrule' => 'FREQ=DAILY;INTERVAL=1;UNTIL=2009-04-06 23:59:59',
'summary' => 'recur event completly within search period => should be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
'rrule_until' => '2009-04-06 23:59:59',
- Tinebase_Model_Grants::GRANT_READ => true
+ Tinebase_Model_Grants::GRANT_READ => true,
+ 'originator_tz' => Tinebase_Core::get(Tinebase_Core::USERTIMEZONE)
),
array(
'dtstart' => '2009-04-03 22:00:00',
'rrule' => 'FREQ=DAILY;INTERVAL=1;UNTIL=2009-04-12 23:59:59',
'summary' => 'recur event starting within search period => should be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
'rrule_until' => '2009-04-12 23:59:59',
- Tinebase_Model_Grants::GRANT_READ => true
+ Tinebase_Model_Grants::GRANT_READ => true,
+ 'originator_tz' => Tinebase_Core::get(Tinebase_Core::USERTIMEZONE)
),
array(
'dtstart' => '2009-04-11 00:00:00',
'rrule' => 'FREQ=DAILY;INTERVAL=1;UNTIL=2009-04-15 02:00:00',
'summary' => 'recur event starting after search period => should _not_ be found',
'attendee' => $this->_getAttendee(),
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'organizer' => Tinebase_Core::getUser()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
'rrule_until' => '2009-04-15 02:00:00',
- Tinebase_Model_Grants::GRANT_READ => true
+ Tinebase_Model_Grants::GRANT_READ => true,
+ 'originator_tz' => Tinebase_Core::get(Tinebase_Core::USERTIMEZONE)
)
));
}
$filter = new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
array('field' => 'period' , 'operator' => 'within', 'value' => array(
'from' => $from,
'until' => $until
$this->_setupTestCalendars();
$this->_uit = Calendar_Controller_Event::getInstance();
+ $this->_uit->doContainerACLChecks(true);
}
public function tearDown()
*/
public function testAddPersonalCalendarGrants()
{
- $grants = Tinebase_Container::getInstance()->getGrantsOfContainer($this->_testCalendar->getId(), TRUE);
+ $grants = Tinebase_Container::getInstance()->getGrantsOfContainer($this->_getTestCalendar()->getId(), TRUE);
$anyoneIdx = array_search(Tinebase_Acl_Rights::ACCOUNT_TYPE_ANYONE, $grants->account_type);
$this->assertTrue($anyoneIdx !== false, 'anyone has no grant entry');
$this->assertTrue($grants[$anyoneIdx]->{Tinebase_Model_Grants::GRANT_FREEBUSY}, 'anyone has not freebusy grant');
$persistentEvent = $this->_createEventInPersonasCalendar('rwright', 'rwright', 'sclever');
$loadedEvent = $this->_uit->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => "/personal/{$this->_personas['sclever']->getId()}"),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => "/personal/{$this->_getPersona('sclever')->getId()}"),
array('field' => 'id', 'operator' => 'equals', 'value' => $persistentEvent->getId())
)))->getFirstRecord();
public function testFreeBusyViaAttendee()
{
// whipe grants from jmcblack
- Tinebase_Container::getInstance()->setGrants($this->_personasDefaultCals['jmcblack'], new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
- 'account_id' => $this->_personas['jmcblack']->getId(),
+ Tinebase_Container::getInstance()->setGrants($this->_getPersonasDefaultCals('jmcblack'), new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
+ 'account_id' => $this->_getPersona('jmcblack')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
array('field' => 'id', 'operator' => 'equals', 'value' => $persistentEvent->getId()),
array('field' => 'attender', 'operator' => 'in', 'value' => array(array(
'user_type' => 'user',
- 'user_id' => $this->_personas['rwright']->contact_id,
+ 'user_id' => $this->_getPersona('rwright')->contact_id,
))),
)
)
// array('field' => 'attender', 'operator' => 'in', 'value' => array(
// array(
// 'user_type' => Calendar_Model_Attender::USERTYPE_USER,
-// 'user_id' => $this->_personasContacts['rwright']->getId()
+// 'user_id' => $this->_getPersonasContacts('rwright')->getId()
// )
// ))
// )), NULL, FALSE, FALSE);
$persistentEvent = $this->_createEventInPersonasCalendar('rwright', 'rwright');
// for shure, this is esoteric, but it enshures that record GRANTS are in charge
- Tinebase_Container::getInstance()->setGrants($this->_testCalendar, new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
+ Tinebase_Container::getInstance()->setGrants($this->_getTestCalendar(), new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
'account_id' => Tinebase_Core::getUser()->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_FREEBUSY => FALSE,
$this->markTestIncomplete('temporarily disabled until fixed');
// set testuser to have editgrant for sclever
- Tinebase_Container::getInstance()->setGrants($this->_personasDefaultCals['sclever'], new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
- 'account_id' => $this->_personas['sclever']->getId(),
+ Tinebase_Container::getInstance()->setGrants($this->_getPersonasDefaultCals('sclever'), new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
+ 'account_id' => $this->_getPersona('sclever')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
protected function _createEventInPersonasCalendar($_calendarPersona, $_organizerPersona = NULL, $_attenderPersona = NULL, $_classification = Calendar_Model_Event::CLASS_PUBLIC)
{
- $calendarId = $this->_personasDefaultCals[$_calendarPersona]->getId();
- $organizerId = $_organizerPersona ? $this->_personasContacts[$_organizerPersona]->getId() : $this->_testUserContact->getId();
- $attenderId = $_attenderPersona ? $this->_personasContacts[$_attenderPersona]->getId() : $this->_testUserContact->getId();
+ $calendarId = $this->_getPersonasDefaultCals($_calendarPersona)->getId();
+ $organizerId = $_organizerPersona ? $this->_getPersonasContacts($_organizerPersona)->getId() : $this->_getTestUserContact()->getId();
+ $attenderId = $_attenderPersona ? $this->_getPersonasContacts($_attenderPersona)->getId() : $this->_getTestUserContact()->getId();
$event = $this->_getEvent();
$event->class = $_classification;
protected function _setupTestCalendars()
{
// jsmith: anyone freebusyGrant, readGrant, addGrant, editGrant, deleteGrant
- Tinebase_Container::getInstance()->setGrants($this->_personasDefaultCals['jsmith'], new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
- 'account_id' => $this->_personas['jsmith']->getId(),
+ Tinebase_Container::getInstance()->setGrants($this->_getPersonasDefaultCals('jsmith'), new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
+ 'account_id' => $this->_getPersona('jsmith')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
))), true);
// pwulf: anyone readGrant, sclever addGrant, readGrant, editGrant, deleteGrant, privateGrant
- Tinebase_Container::getInstance()->setGrants($this->_personasDefaultCals['pwulf'], new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
- 'account_id' => $this->_personas['pwulf']->getId(),
+ Tinebase_Container::getInstance()->setGrants($this->_getPersonasDefaultCals('pwulf'), new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
+ 'account_id' => $this->_getPersona('pwulf')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
Tinebase_Model_Grants::GRANT_DELETE => false,
Tinebase_Model_Grants::GRANT_ADMIN => false,
), array(
- 'account_id' => $this->_personas['sclever']->getId(),
+ 'account_id' => $this->_getPersona('sclever')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
))), true);
// sclever: testuser addGrant, readGrant, editGrant, deleteGrant, privateGrant
- Tinebase_Container::getInstance()->setGrants($this->_personasDefaultCals['sclever'], new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
- 'account_id' => $this->_personas['sclever']->getId(),
+ Tinebase_Container::getInstance()->setGrants($this->_getPersonasDefaultCals('sclever'), new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
+ 'account_id' => $this->_getPersona('sclever')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
))), true);
// jmacblack: prim group of testuser readGrant, testuser privateGrant
- Tinebase_Container::getInstance()->setGrants($this->_personasDefaultCals['jmcblack'], new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
- 'account_id' => $this->_personas['jmcblack']->getId(),
+ Tinebase_Container::getInstance()->setGrants($this->_getPersonasDefaultCals('jmcblack'), new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
+ 'account_id' => $this->_getPersona('jmcblack')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
))), true);
// rwright: testuser freebusyGrant, sclever has readGrant and editGrant
- Tinebase_Container::getInstance()->setGrants($this->_personasDefaultCals['rwright'], new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
- 'account_id' => $this->_personas['rwright']->getId(),
+ Tinebase_Container::getInstance()->setGrants($this->_getPersonasDefaultCals('rwright'), new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
+ 'account_id' => $this->_getPersona('rwright')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
Tinebase_Model_Grants::GRANT_ADMIN => false,
Tinebase_Model_Grants::GRANT_FREEBUSY => true,
), array(
- 'account_id' => $this->_personas['sclever']->getId(),
+ 'account_id' => $this->_getPersona('sclever')->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => false,
*/
protected function cleanupTestCalendars()
{
- foreach ($this->_personasDefaultCals as $loginName => $calendar) {
+ foreach ($this->_getAllPersonasDefaultCals() as $loginName => $calendar) {
Tinebase_Container::getInstance()->setGrants($calendar, new Tinebase_Record_RecordSet('Tinebase_Model_Grants', array(array(
- 'account_id' => $this->_personas[$loginName]->getId(),
+ 'account_id' => $this->_getPersona($loginName)->getId(),
'account_type' => 'user',
Tinebase_Model_Grants::GRANT_READ => true,
Tinebase_Model_Grants::GRANT_ADD => true,
*/
protected $_notificationController;
- /**
- * @var Tinebase_Model_Container
- */
- protected $_testCalendar;
-
/**
* email test class
*
$this->_assertMail('pwulf, sclever, jmcblack, rwright', 'invit');
self::flushMailer();
- $persistentEvent = $this->_eventController->delete($persistentEvent);
+
+ $persistentEvent = $this->_eventController->delete($persistentEvent);
$this->_assertMail('jsmith', NULL);
$this->_assertMail('pwulf, sclever, jmcblack, rwright', 'cancel');
}
/**
+ * Test event creation with muted invitation
+ */
+ public function testMuteToogle()
+ {
+ $event = $this->_getEvent(false, /* $mute = */ 1);
+ $event->attendee = $this->_getPersonaAttendee('jsmith, pwulf, sclever, jmcblack, rwright');
+
+ self::flushMailer();
+ $persistentEvent = $this->_eventController->create($event);
+ $this->_assertMail('jsmith, pwulf, sclever, jmcblack, rwright', NULL);
+
+ $this->assertEquals($event->mute, 1);
+ }
+
+ /**
* testInvitationWithAttachment
*
* @see 0008592: append event file attachments to invitation mail
$persistentEvent->attendee->merge($this->_getPersonaAttendee('jsmith, sclever'));
$persistentEvent->attendee->removeRecord(
- $persistentEvent->attendee->find('user_id', $this->_personasContacts['pwulf']->getId())
+ $persistentEvent->attendee->find('user_id', $this->_getPersonasContacts('pwulf')->getId())
);
- $persistentEvent->attendee->find('user_id', $this->_personasContacts['rwright']->getId())->status =
+ $persistentEvent->attendee->find('user_id', $this->_getPersonasContacts('rwright')->getId())->status =
Calendar_Model_Attender::STATUS_ACCEPTED;
- $persistentEvent->attendee->find('user_id', $this->_personasContacts['jmcblack']->getId())->status =
+ $persistentEvent->attendee->find('user_id', $this->_getPersonasContacts('jmcblack')->getId())->status =
Calendar_Model_Attender::STATUS_DECLINED;
self::flushMailer();
{
$event = $this->_getEvent();
$event->attendee = $this->_getPersonaAttendee('jsmith, pwulf');
- $event->organizer = $this->_personasContacts['jsmith']->getId();
+ $event->organizer = $this->_getPersonasContacts('jsmith')->getId();
$persistentEvent = $this->_eventController->create($event);
$persistentEvent->attendee[1]->status = Calendar_Model_Attender::STATUS_DECLINED;
{
$event = $this->_getEvent(TRUE);
$event->attendee = $this->_getPersonaAttendee('jsmith, pwulf');
- $event->organizer = $this->_personasContacts['pwulf']->getId();
+ $event->organizer = $this->_getPersonasContacts('pwulf')->getId();
$persistentEvent = $this->_eventController->create($event);
$persistentEvent->attendee[1]->status = Calendar_Model_Attender::STATUS_DECLINED;
{
$event = $this->_getEvent(TRUE);
$event->attendee = $this->_getPersonaAttendee('pwulf');
- $event->organizer = $this->_personasContacts['pwulf']->getId();
+ $event->organizer = $this->_getPersonasContacts('pwulf')->getId();
// add nonaccount attender
$nonAccountEmail = 'externer@example.org';
'dtstart' => '2012-03-14 09:00:00',
'dtend' => '2012-03-14 10:00:00',
'rrule' => 'FREQ=DAILY;INTERVAL=1',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'attendee' => $this->_getPersonaAttendee('jmcblack'),
));
{
$event = $this->_getEvent();
$event->attendee = $this->_getPersonaAttendee('sclever, pwulf');
- $event->organizer = $this->_personasContacts['sclever']->getId();
+ $event->organizer = $this->_getPersonasContacts('sclever')->getId();
$event->dtstart = Tinebase_DateTime::now()->addMinute(25);
$event->dtend = clone $event->dtstart;
$event->alarms->setOption('skip', array(
array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['pwulf']->getId(),
+ 'user_id' => $this->_getPersonasContacts('pwulf')->getId(),
)
));
{
$event = $this->_getEvent();
$event->attendee = $this->_getPersonaAttendee('sclever, pwulf');
- $event->organizer = $this->_personasContacts['sclever']->getId();
+ $event->organizer = $this->_getPersonasContacts('sclever')->getId();
$event->dtstart = Tinebase_DateTime::now()->addMinute(25);
$event->dtend = clone $event->dtstart;
));
$event->alarms->setOption('attendee', array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['pwulf']->getId()
+ 'user_id' => $this->_getPersonasContacts('pwulf')->getId()
));
Tinebase_Alarm::getInstance()->sendPendingAlarms("Tinebase_Event_Async_Minutely");
{
$event = $this->_getEvent();
$event->attendee = $this->_getPersonaAttendee('pwulf');
- $event->organizer = $this->_personasContacts['pwulf']->getId();
+ $event->organizer = $this->_getPersonasContacts('pwulf')->getId();
// lets flush mailer so next flushing ist faster!
Tinebase_Alarm::getInstance()->sendPendingAlarms("Tinebase_Event_Async_Minutely");
{
$event = $this->_getEvent();
$event->attendee = $this->_getPersonaAttendee('pwulf');
- $event->organizer = $this->_personasContacts['pwulf']->getId();
+ $event->organizer = $this->_getPersonasContacts('pwulf')->getId();
$event->dtstart = Tinebase_DateTime::now()->subDay(1)->addMinute(15);
$event->dtend = clone $event->dtstart;
{
$event = $this->_getEvent();
$event->attendee = $this->_getPersonaAttendee('pwulf');
- $event->organizer = $this->_personasContacts['pwulf']->getId();
+ $event->organizer = $this->_getPersonasContacts('pwulf')->getId();
$event->dtstart = Tinebase_DateTime::now()->addWeek(1)->addMinute(15);
$event->dtend = clone $event->dtstart;
'summary' => 'Cleanup',
'dtstart' => '2012-01-31 07:30:00',
'dtend' => '2012-01-31 10:30:00',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
'uid' => Calendar_Model_Event::generateUID(),
'rrule' => 'FREQ=WEEKLY;INTERVAL=1;WKST=MO;BYDAY=TU',
'originator_tz'=> 'Europe/Berlin',
{
$event = $this->_getEvent();
$event->attendee = $this->_getPersonaAttendee('sclever, pwulf');
- $event->organizer = $this->_personasContacts['sclever']->getId();
+ $event->organizer = $this->_getPersonasContacts('sclever')->getId();
$event->dtstart = Tinebase_DateTime::now()->addMinute(25);
$event->dtend = clone $event->dtstart;
self::flushMailer();
$vcalendar = Calendar_Frontend_WebDAV_EventTest::getVCalendar(dirname(__FILE__) . '/../Import/files/apple_ical_remind_part1.ics');
$id = Tinebase_Record_Abstract::generateUID();
- $event = Calendar_Frontend_WebDAV_Event::create($this->_testCalendar, "$id.ics", $vcalendar);
+ $event = Calendar_Frontend_WebDAV_Event::create($this->_getTestCalendar(), "$id.ics", $vcalendar);
return $event;
}
$otherRecipients = array();
$personaEmail = strstr($personaName, '@') ?
$personaName :
- $this->_personas[trim($personaName)]->accountEmailAddress;
+ $this->_getPersona(trim($personaName))->accountEmailAddress;
foreach ($messages as $message) {
if (array_value(0, $message->getRecipients()) == $personaEmail) {
{
$attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender');
foreach (explode(',', $_personas) as $personaName) {
- $attendee->addRecord($this->_createAttender($this->_personasContacts[trim($personaName)]->getId()));
+ $attendee->addRecord($this->_createAttender($this->_getPersonasContacts(trim($personaName))->getId()));
}
return $attendee;
$calPreferences->setValueForUser(
Calendar_Preference::NOTIFICATION_LEVEL,
Calendar_Controller_EventNotifications::NOTIFICATION_LEVEL_NONE,
- $this->_personas['jsmith']->getId(), TRUE
+ $this->_getPersona('jsmith')->getId(), TRUE
);
$calPreferences->setValueForUser(
Calendar_Preference::NOTIFICATION_LEVEL,
Calendar_Controller_EventNotifications::NOTIFICATION_LEVEL_INVITE_CANCEL,
- $this->_personas['pwulf']->getId(), TRUE
+ $this->_getPersona('pwulf')->getId(), TRUE
);
$calPreferences->setValueForUser(
Calendar_Preference::NOTIFICATION_LEVEL,
Calendar_Controller_EventNotifications::NOTIFICATION_LEVEL_EVENT_RESCHEDULE,
- $this->_personas['sclever']->getId(), TRUE
+ $this->_getPersona('sclever')->getId(), TRUE
);
$calPreferences->setValueForUser(
Calendar_Preference::NOTIFICATION_LEVEL,
Calendar_Controller_EventNotifications::NOTIFICATION_LEVEL_EVENT_UPDATE,
- $this->_personas['jmcblack']->getId(), TRUE
+ $this->_getPersona('jmcblack')->getId(), TRUE
);
$calPreferences->setValueForUser(
Calendar_Preference::NOTIFICATION_LEVEL,
Calendar_Controller_EventNotifications::NOTIFICATION_LEVEL_ATTENDEE_STATUS_UPDATE,
- $this->_personas['rwright']->getId(), TRUE
+ $this->_getPersona('rwright')->getId(), TRUE
);
// set all languages to en
$preferences = Tinebase_Core::getPreference('Tinebase');
- foreach ($this->_personas as $name => $account) {
+ foreach ($this->_getPersonas() as $name => $account) {
$preferences->setValueForUser(Tinebase_Preference::LOCALE, 'en', $account->getId(), TRUE);
}
}
protected $_controller;
/**
- * @var Tinebase_Model_Container
- */
- protected $_testCalendar;
-
- /**
* (non-PHPdoc)
* @see Calendar_TestCase::setUp()
*/
$event->attendee = $this->_getAttendee();
$event->attendee[1] = new Calendar_Model_Attender(array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['pwulf']->getId(),
+ 'user_id' => $this->_getPersonasContacts('pwulf')->getId(),
));
$persistentEvent = $this->_controller->create($event);
$pwulf = $updatedEvent->attendee
->filter('user_type', Calendar_Model_Attender::USERTYPE_USER)
- ->filter('user_id', $this->_personasContacts['pwulf']->getId())
+ ->filter('user_id', $this->_getPersonasContacts('pwulf')->getId())
->getFirstRecord();
$this->assertEquals(Calendar_Model_Attender::STATUS_DECLINED, $currentUser->status, 'current users status must not be touched');
$event->attendee = $this->_getAttendee();
$event->attendee[1] = new Calendar_Model_Attender(array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['pwulf']->getId()
+ 'user_id' => $this->_getPersonasContacts('pwulf')->getId()
));
$persistendEvent = $this->_controller->create($event);
$event1 = $this->_getEvent();
$event1->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
array('user_id' => Tinebase_Core::getUser()->contact_id),
- array('user_id' => $this->_personasContacts['pwulf']->getId())
+ array('user_id' => $this->_getPersonasContacts('pwulf')->getId())
));
$persistentEvent1 = $this->_controller->create($event1);
$event2 = $this->_getEvent();
$event2->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
array('user_id' => Tinebase_Core::getUser()->contact_id),
- array('user_id' => $this->_personasContacts['sclever']->getId()),
+ array('user_id' => $this->_getPersonasContacts('sclever')->getId()),
));
$persistentEvent2 = $this->_controller->create($event2);
$event3 = $this->_getEvent();
$event3->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
array('user_id' => Tinebase_Core::getUser()->contact_id),
- array('user_id' => $this->_personasContacts['sclever']->getId()),
+ array('user_id' => $this->_getPersonasContacts('sclever')->getId()),
));
$persistentEvent3 = $this->_controller->create($event3);
// test sclever
$filter = new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
array('field' => 'attender' , 'operator' => 'equals', 'value' => array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['sclever']->getId()
+ 'user_id' => $this->_getPersonasContacts('sclever')->getId()
)),
));
$eventsFound = $this->_controller->search($filter, new Tinebase_Model_Pagination());
// test pwulf
$filter = new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
array('field' => 'attender' , 'operator' => 'equals', 'value' => array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['pwulf']->getId()
+ 'user_id' => $this->_getPersonasContacts('pwulf')->getId()
)),
));
$eventsFound = $this->_controller->search($filter, new Tinebase_Model_Pagination());
// test sclever OR pwulf
$filter = new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
array('field' => 'attender' , 'operator' => 'in', 'value' => array(
array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['sclever']->getId()
+ 'user_id' => $this->_getPersonasContacts('sclever')->getId()
),
array (
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['pwulf']->getId()
+ 'user_id' => $this->_getPersonasContacts('pwulf')->getId()
)
)),
));
$event = $this->_getEvent();
$event->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
array('user_id' => Tinebase_Core::getUser()->contact_id),
- array('user_id' => $this->_personasContacts['sclever']->getId())
+ array('user_id' => $this->_getPersonasContacts('sclever')->getId())
));
$persistentEvent = $this->_controller->create($event);
$filter = new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
array('field' => 'attender' , 'operator' => 'in', 'value' => array(
array(
'user_type' => Calendar_Model_AttenderFilter::USERTYPE_MEMBEROF,
- 'user_id' => $this->_personas['sclever']->accountPrimaryGroup
+ 'user_id' => $this->_getPersona('sclever')->accountPrimaryGroup
)
)),
));
{
$event = $this->_getEvent();
$event->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
- array('user_id' => $this->_personasContacts['sclever']->getId()),
- array('user_id' => $this->_personasContacts['pwulf']->getId())
+ array('user_id' => $this->_getPersonasContacts('sclever')->getId()),
+ array('user_id' => $this->_getPersonasContacts('pwulf')->getId())
));
$persistentEvent = $this->_controller->create($event);
'application_id' => Tinebase_Application::getInstance()->getApplicationByName('Calendar')->getId()
), true));
- $this->_testCalendars->addRecord($testCal);
+ $this->_getTestCalendars()->addRecord($testCal);
// create event in testcal
$event = $this->_getEvent();
$events = $this->_controller->search(new Calendar_Model_EventFilter(array(
array('field' => 'attender', 'operator' => 'equals', 'value' => array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_testUserContact->getId()
+ 'user_id' => $this->_getTestUserContact()->getId()
))
)), NULL, FALSE, FALSE);
$event = $this->_getEvent();
$event->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['sclever']->getId()),
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['pwulf']->getId())
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('sclever')->getId()),
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('pwulf')->getId())
));
$persistentEvent = $this->_controller->create($event);
$conflictEvent = $this->_getEvent();
$conflictEvent->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['sclever']->getId()),
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['pwulf']->getId())
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('sclever')->getId()),
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('pwulf')->getId())
));
try {
$conflictEvent = $this->_getEvent();
$conflictEvent->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['sclever']->getId()),
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['pwulf']->getId())
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('sclever')->getId()),
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('pwulf')->getId())
));
try {
$nonConflictEvent = $this->_getEvent();
$nonConflictEvent->transp = Calendar_Model_Event::TRANSP_TRANSP;
$nonConflictEvent->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['sclever']->getId()),
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['pwulf']->getId())
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('sclever')->getId()),
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('pwulf')->getId())
));
$this->_controller->create($nonConflictEvent, TRUE);
$nonConflictEvent = $this->_getEvent();
$nonConflictEvent->attendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender', array(
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['sclever']->getId()),
- array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_personasContacts['pwulf']->getId())
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('sclever')->getId()),
+ array('user_type' => Calendar_Model_Attender::USERTYPE_USER, 'user_id' => $this->_getPersonasContacts('pwulf')->getId())
));
$this->_controller->create($nonConflictEvent, TRUE);
// assert test condition
$pwulf = $persistentEvent->attendee
->filter('user_type', Calendar_Model_Attender::USERTYPE_GROUPMEMBER)
- ->filter('user_id', $this->_personasContacts['pwulf']->getId());
+ ->filter('user_id', $this->_getPersonasContacts('pwulf')->getId());
$this->assertEquals(0, count($pwulf), 'invalid test condition, pwulf should not be member or admin group');
- Admin_Controller_Group::getInstance()->addGroupMember($defaultAdminGroup->getId(), $this->_personasContacts['pwulf']->account_id);
+ Admin_Controller_Group::getInstance()->addGroupMember($defaultAdminGroup->getId(), $this->_getPersonasContacts('pwulf')->account_id);
if (isset(Tinebase_Core::getConfig()->actionqueue)) {
Tinebase_ActionQueue::getInstance()->processQueue(10000);
}
// assert pwulf is in
$pwulf = $loadedEvent->attendee
->filter('user_type', Calendar_Model_Attender::USERTYPE_GROUPMEMBER)
- ->filter('user_id', $this->_personasContacts['pwulf']->getId());
+ ->filter('user_id', $this->_getPersonasContacts('pwulf')->getId());
$this->assertEquals(1, count($pwulf), 'pwulf is not attender of event, but should be');
- Admin_Controller_Group::getInstance()->removeGroupMember($defaultAdminGroup->getId(), $this->_personasContacts['pwulf']->account_id);
+ Admin_Controller_Group::getInstance()->removeGroupMember($defaultAdminGroup->getId(), $this->_getPersonasContacts('pwulf')->account_id);
if (isset(Tinebase_Core::getConfig()->actionqueue)) {
Tinebase_ActionQueue::getInstance()->processQueue(10000);
}
// assert pwulf is missing
$pwulf = $loadedEvent->attendee
->filter('user_type', Calendar_Model_Attender::USERTYPE_GROUPMEMBER)
- ->filter('user_id', $this->_personasContacts['pwulf']->getId());
+ ->filter('user_id', $this->_getPersonasContacts('pwulf')->getId());
$this->assertEquals(0, count($pwulf), 'pwulf is attender of event, but not should be');
// Test the same with update
$loadedEvent = $this->_controller->get($persistentEvent->getId());
$pwulf = $loadedEvent->attendee
->filter('user_type', Calendar_Model_Attender::USERTYPE_GROUPMEMBER)
- ->filter('user_id', $this->_personasContacts['pwulf']->getId());
+ ->filter('user_id', $this->_getPersonasContacts('pwulf')->getId());
$this->assertEquals(1, count($pwulf), 'pwulf is not attender of event, but should be (via update)');
$group->members = array_diff(Admin_Controller_Group::getInstance()->getGroupMembers($defaultAdminGroup->getId()), array(array_value('pwulf', Zend_Registry::get('personas'))->getId()));
$loadedEvent = $this->_controller->get($persistentEvent->getId());
$pwulf = $loadedEvent->attendee
->filter('user_type', Calendar_Model_Attender::USERTYPE_GROUPMEMBER)
- ->filter('user_id', $this->_personasContacts['pwulf']->getId());
+ ->filter('user_id', $this->_getPersonasContacts('pwulf')->getId());
$this->assertEquals(0, count($pwulf), 'pwulf is attender of event, but not should be');
}
}
$events = $this->_backend->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'in', 'value' => $this->_testCalendars->getId()),
+ array('field' => 'container_id', 'operator' => 'in', 'value' => $this->_getTestCalendars()->getId()),
)), new Tinebase_Model_Pagination(array()));
$oldSeries = $events->filter('rrule_until', '/.+/', TRUE)->getFirstRecord();
}
$events = $this->_backend->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'in', 'value' => $this->_testCalendars->getId()),
+ array('field' => 'container_id', 'operator' => 'in', 'value' => $this->_getTestCalendars()->getId()),
)), new Tinebase_Model_Pagination(array()));
$newSeries = $events->filter('rrule_until', '/^$/', TRUE)->getFirstRecord();
'originator_tz' => 'Europe/Berlin',
'rrule' => 'FREQ=DAILY;INTERVAL=1;UNTIL=2009-04-02 21:59:59',
'exdate' => '2009-03-27 18:00:00,2009-03-31 17:00:00',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
Tinebase_Model_Grants::GRANT_EDIT => true,
));
$this->_controller->delete($persistentEvent->getId());
- $contentSeq = Tinebase_Container::getInstance()->getContentSequence($this->_testCalendar);
+ $contentSeq = Tinebase_Container::getInstance()->getContentSequence($this->_getTestCalendar());
$this->assertEquals(2, $contentSeq, 'container content seq should be increased 2 times!');
$this->setExpectedException('Tinebase_Exception_NotFound');
$persistentEvent = $this->testCreateEvent();
$events = $this->_controller->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
array('field' => 'period', 'operator' => 'within', 'value' => array(
'from' => '2009-04-07',
'until' => '2010-04-07'
* returns a simple event
*
* @return Calendar_Model_Event
+ * @param bool $_now
+ * @param bool $mute
+ * @todo replace with TestCase::_getEvent
*/
- protected function _getEvent($_now=FALSE)
+ protected function _getEvent($_now = FALSE, $mute = NULL)
{
$event = new Calendar_Model_Event(array(
'summary' => 'Mittagspause',
'dtend' => '2009-04-06 13:30:00',
'description' => 'Wieslaw Brudzinski: Das Gesetz garantiert zwar die Mittagspause, aber nicht das Mittagessen...',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
Tinebase_Model_Grants::GRANT_EDIT => true,
));
'dtend' => '2014-04-06 19:00:00',
'description' => 'Guten Appetit',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
Tinebase_Model_Grants::GRANT_EDIT => true,
'customfields' => array('unittest' => 'Hello')
));
{
parent::setUp();
+ Calendar_Controller_Event::getInstance()->doContainerACLChecks(true);
+
$this->_uit = Calendar_Controller_MSEventFacade::getInstance();
$this->_uit->setEventFilter(new Calendar_Model_EventFilter(array(
array('field' => 'attender', 'operator' => 'equals', 'value' => array(
), TRUE);
$event->alarms[0]->setOption('skip', array(array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_testUserContact->getId(),
+ 'user_id' => $this->_getTestUserContact()->getId(),
'organizer' => Tinebase_Core::getUser()->contact_id
)));
$event->alarms[1]->setOption('attendee', array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_testUserContact->getId(),
+ 'user_id' => $this->_getTestUserContact()->getId(),
'organizer' => Tinebase_Core::getUser()->contact_id
));
$event->alarms[2]->setOption('skip', array(array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['sclever']->getId(),
+ 'user_id' => $this->_getPersonasContacts('sclever')->getId(),
'organizer' => Tinebase_Core::getUser()->contact_id
)));
$event->alarms[3]->setOption('attendee', array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['sclever']->getId(),
+ 'user_id' => $this->_getPersonasContacts('sclever')->getId(),
'organizer' => Tinebase_Core::getUser()->contact_id
));
$this->testCreate();
$events = $this->_uit->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'in', 'value' => $this->_testCalendars->getId()),
+ array('field' => 'container_id', 'operator' => 'in', 'value' => $this->_getTestCalendars()->getId()),
)));
$this->assertEquals(1, $events->count());
$cbe->delete($event->getId());
$events = $this->_uit->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'in', 'value' => $this->_testCalendars->getId()),
+ array('field' => 'container_id', 'operator' => 'in', 'value' => $this->_getTestCalendars()->getId()),
)));
$this->assertEquals(1, $events->count());
$this->_assertTestEvent($event);
$sclever = new Calendar_Model_Attender(array(
- 'user_id' => $this->_personasContacts['sclever']->getId(),
+ 'user_id' => $this->_getPersonasContacts('sclever')->getId(),
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
));
$event = $this->testCreate();
$sclever = new Calendar_Model_Attender(array(
- 'user_id' => $this->_personasContacts['sclever']->getId(),
+ 'user_id' => $this->_getPersonasContacts('sclever')->getId(),
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
));
$currUser = $this->_uit->setCalendarUser($sclever);
$this->_uit->setEventFilter(new Calendar_Model_EventFilter(array(
array('field' => 'attender', 'operator' => 'equals', 'value' => array(
'user_type' => Calendar_Model_Attender::USERTYPE_USER,
- 'user_id' => $this->_personasContacts['sclever']->getId(),
+ 'user_id' => $this->_getPersonasContacts('sclever')->getId(),
)),
array(
'field' => 'attender_status', 'operator' => 'notin', 'value' => array(
*
* @package Calendar
* @license http://www.gnu.org/licenses/agpl.html AGPL Version 3
- * @copyright Copyright (c) 2010-2013 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright Copyright (c) 2010-2014 Metaways Infosystems GmbH (http://www.metaways.de)
* @author Goekmen Ciyiltepe <g.ciyiltepe@metaways.de>
*/
/**
- * Test helper
- */
-require_once dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
-
-/**
* Test class for Calendar_Controller_Event
*
* @package Calendar
'dtend' => '2012-06-01 18:30:00',
'originator_tz' => 'Europe/Berlin',
'rrule' => 'FREQ=DAILY;INTERVAL=1;UNTIL=2011-05-31 17:30:00',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
));
$this->setExpectedException('Tinebase_Exception_Record_Validation');
'dtend' => '2011-04-20 15:30:00',
'originator_tz' => 'Europe/Berlin',
'rrule' => 'FREQ=WEEKLY;INTERVAL=3;WKST=SU;BYDAY=TU,TH',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
Tinebase_Model_Grants::GRANT_EDIT => true,
));
$persistentEventException = $this->_controller->createRecurException($eventException);
$weekviewEvents = $this->_controller->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
)));
Calendar_Model_Rrule::mergeRecurrenceSet($weekviewEvents, $from, $until);
'dtend' => '2012-02-22 15:30:00',
'originator_tz' => 'Europe/Berlin',
'rrule' => 'FREQ=DAILY;COUNT=3',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
));
$persistentEvent = $this->_controller->create($event);
// create exception
$weekviewEvents = $this->_controller->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
)));
Calendar_Model_Rrule::mergeRecurrenceSet($weekviewEvents, $from, $until);
$weekviewEvents[2]->dtstart->subHour(5);
// load series
$weekviewEvents = $this->_controller->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
)));
Calendar_Model_Rrule::mergeRecurrenceSet($weekviewEvents, $from, $until);
$weekviewEvents->sort('dtstart', 'ASC');
'is_all_day_event' => true,
'originator_tz' => 'Europe/Berlin',
'rrule' => 'FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH',
- 'container_id' => $this->_testCalendar->getId(),
+ 'container_id' => $this->_getTestCalendar()->getId(),
Tinebase_Model_Grants::GRANT_EDIT => true,
));
$persistentEvent = $this->_controller->create($event);
$weekviewEvents = $this->_controller->search(new Calendar_Model_EventFilter(array(
- array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testCalendar->getId()),
+ array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_getTestCalendar()->getId()),
)));
Calendar_Model_Rrule::mergeRecurrenceSet($weekviewEvents, $from, $until);
$persistentEventException = $this->_controller->createRecurException($exception, TRUE);
$weekviewEvents = $this->_controller->search(new Calendar_Model_EventFilter(array(
- array('field' => 'c