Merge branch '2016.11' into 2016.11-develop
authorPhilipp Schüle <p.schuele@metaways.de>
Wed, 4 Jan 2017 17:27:09 +0000 (18:27 +0100)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 4 Jan 2017 17:27:09 +0000 (18:27 +0100)
Change-Id: Ideaab02b6d6fdb22fa6bd75a53254738b8110e88

1  2 
tine20/Calendar/Controller/Event.php
tine20/Calendar/Setup/Update/Release10.php
tine20/Calendar/Setup/Update/Release9.php
tine20/Calendar/Setup/setup.xml
tine20/composer.lock

Simple merge
index 1406d58,0000000..5604485
mode 100644,000000..100644
--- /dev/null
@@@ -1,23 -1,0 +1,33 @@@
 +<?php
 +/**
 + * Tine 2.0
 + *
 + * @package     Calendar
 + * @subpackage  Setup
 + * @license     http://www.gnu.org/licenses/agpl.html AGPL3
 + * @copyright   Copyright (c) 2015-2016 Metaways Infosystems GmbH (http://www.metaways.de)
 + * @author      Philipp Schüle <p.schuele@metaways.de>
 + */
 +class Calendar_Setup_Update_Release10 extends Setup_Update_Abstract
 +{
 +    /**
 +     * update to 10.1
 +     * - Update Calendar Import Export definitions
 +     */
 +    public function update_0()
 +    {
 +        $release9 = new Calendar_Setup_Update_Release9($this->_backend);
 +        $release9->update_7();
 +        $this->setApplicationVersion('Calendar', '10.1');
 +    }
++
++    /**
++     * fix displaycontainer in organizers attendee records
++     */
++    public function update_1()
++    {
++        $release9 = new Calendar_Setup_Update_Release9($this->_backend);
++        $release9->update_8();
++        $this->setApplicationVersion('Calendar', '10.2');
++    }
 +}
@@@ -135,12 -134,79 +134,89 @@@ class Calendar_Setup_Update_Release9 ex
      }
  
      /**
-     public function update_8()
+      * fix displaycontainer in organizers attendee records
+      */
+     public function update_8()
+     {
+         $allBroken = $this->_db->query(
+             "SELECT " . $this->_db->quoteIdentifier('events.id') . " AS " . $this->_db->quoteIdentifier('event_id') . "," .
+             $this->_db->quoteIdentifier('events.is_deleted') . " AS " . $this->_db->quoteIdentifier('event_is_deleted') . "," .
+             $this->_db->quoteIdentifier('events.container_id') . "," .
+             $this->_db->quoteIdentifier('events.seq') . "," .
+             $this->_db->quoteIdentifier('attendee.id') . " AS " . $this->_db->quoteIdentifier('attendee_id') .
+             " FROM " . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "cal_events") . " AS " . $this->_db->quoteIdentifier('events') .
+             " INNER JOIN " . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "container") . " AS " . $this->_db->quoteIdentifier('container') . " ON " .
+             $this->_db->quoteIdentifier('events.container_id') . " = " . $this->_db->quoteIdentifier('container.id') . " AND " .
+             $this->_db->quoteIdentifier('container.type') . " = " . $this->_db->quote('personal') .
+             " INNER JOIN " . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "accounts") . " AS " . $this->_db->quoteIdentifier('owner') . " ON " .
+             $this->_db->quoteIdentifier('container.owner_id') . " = " . $this->_db->quoteIdentifier('owner.id') .
+             " INNER JOIN " . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "cal_attendee") . " AS " . $this->_db->quoteIdentifier('attendee') . " ON " .
+             $this->_db->quoteIdentifier('attendee.cal_event_id') . " = " . $this->_db->quoteIdentifier('events.id') . " AND " .
+             $this->_db->quoteIdentifier('attendee.user_id') . " = " . $this->_db->quoteIdentifier('owner.contact_id') . " AND " .
+             $this->_db->quoteIdentifier('attendee.user_type') . " IN (" . $this->_db->quote(array('user', 'groupmember')) . ") AND " .
+             $this->_db->quoteIdentifier('attendee.displaycontainer_id') . " != " . $this->_db->quoteIdentifier('events.container_id')
+         )->fetchAll(Zend_Db::FETCH_ASSOC);
+         foreach ($allBroken as $broken) {
+             $time = Tinebase_DateTime::now()->toString();
+             $this->_db->query("START TRANSACTION");
+             $this->_db->query(
+                 "UPDATE " . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "cal_attendee") .
+                 " SET " . $this->_db->quoteIdentifier("displaycontainer_id") . " = " . $this->_db->quote($broken['container_id']) .
+                 " WHERE " . $this->_db->quoteIdentifier("id") . " = " . $this->_db->quote($broken['attendee_id'])
+             );
+             // care for consistent history for client updates
+             if (!$broken['event_is_deleted']) {
+                 $this->_db->query(
+                     "UPDATE " . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "cal_events") .
+                     " SET " . $this->_db->quoteIdentifier("seq") . " = (" . $this->_db->quoteIdentifier('seq') . " +1)," .
+                     $this->_db->quoteIdentifier("last_modified_time") . " = " . $this->_db->quote($time) .
+                     " WHERE " . $this->_db->quoteIdentifier("id") . " = " . $this->_db->quote($broken['event_id'])
+                 );
+                 $this->_db->query(
+                     "UPDATE " . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "container") .
+                     " SET " . $this->_db->quoteIdentifier("content_seq") . " = (" . $this->_db->quoteIdentifier('content_seq') . " +1)" .
+                     " WHERE " . $this->_db->quoteIdentifier("id") . " = " . $this->_db->quote($broken['container_id'])
+                 );
+                 $content_seq = Tinebase_Helper::array_value('content_seq', Tinebase_Helper::array_value(0, $this->_db->query(
+                     "SELECT " . $this->_db->quoteIdentifier('content_seq') .
+                     " FROM " . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "container") .
+                     " WHERE " . $this->_db->quoteIdentifier('id') . " = " . $this->_db->quote($broken['container_id'])
+                 )->fetchAll(Zend_Db::FETCH_ASSOC)));
+                 $this->_db->query(
+                     "INSERT INTO" . $this->_db->quoteIdentifier(SQL_TABLE_PREFIX . "container_content") .
+                     " (" .
+                     $this->_db->quoteIdentifier("id") . "," .
+                     $this->_db->quoteIdentifier("container_id") . "," .
+                     $this->_db->quoteIdentifier("record_id") . "," .
+                     $this->_db->quoteIdentifier("action") . "," .
+                     $this->_db->quoteIdentifier("content_seq") . "," .
+                     $this->_db->quoteIdentifier("time") .
+                     ") VALUES (" .
+                     $this->_db->quote(Tinebase_Record_Abstract::generateUID()) . "," .
+                     $this->_db->quote($broken['container_id']) . "," .
+                     $this->_db->quote($broken['event_id']) . "," .
+                     $this->_db->quote('update') . "," .
+                     $this->_db->quote($content_seq) . "," .
+                     $this->_db->quote($time) .
+                     ")"
+                 );
+             }
+             $this->_db->query("COMMIT");
+         }
+         $this->setApplicationVersion('Calendar', '9.9');
+     }
++
++    /**
 +     * update to 10.0
 +     *
 +     * @return void
 +     */
++    public function update_9()
 +    {
 +        $this->setApplicationVersion('Calendar', '10.0');
 +    }
  }
@@@ -2,7 -2,7 +2,7 @@@
  <application>
      <name>Calendar</name>
      <!-- gettext('Calendar') -->   
-     <version>10.1</version>
 -    <version>9.9</version>
++    <version>10.2</version>
      <order>15</order>
      <status>enabled</status>
      <tables>
Simple merge