Merge branch '2013.10' into 2014.11
authorPhilipp Schüle <p.schuele@metaways.de>
Wed, 18 Feb 2015 16:36:11 +0000 (17:36 +0100)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 18 Feb 2015 16:36:11 +0000 (17:36 +0100)
tine20/Calendar/Controller/MSEventFacade.php
tine20/Tinebase/Record/RecordSet.php
tine20/Tinebase/js/widgets/customfields/ConfigManager.js

index 2122da0..0b8e489 100644 (file)
@@ -941,14 +941,7 @@ class Calendar_Controller_MSEventFacade implements Tinebase_Controller_Record_In
         
         // get ids for toUpdate
         $idxIdMap = $this->_filterEventsByDTStarts($_currentPersistentExceptions, $toUpdateDtSTart)->getId();
-        try {
-            $migration['toUpdate']->setByIndices('id', $idxIdMap);
-        } catch (Tinebase_Exception_Record_NotDefined $ternd) {
-            // some debugging for 0008182: event with lots of exceptions breaks calendar sync
-            if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($idxIdMap, TRUE));
-            if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($migration['toUpdate']->toArray(), TRUE));
-            throw $ternd;
-        }
+        $migration['toUpdate']->setByIndices('id', $idxIdMap, /* $skipMissing = */ true);
         
         // filter exceptions marked as don't touch 
         foreach ($migration['toUpdate'] as $toUpdate) {
index 0f3cf0a..e20420b 100644 (file)
@@ -279,13 +279,20 @@ class Tinebase_Record_RecordSet implements IteratorAggregate, Countable, ArrayAc
      *
      * @param string $_name property name
      * @param array  $_values index => property value
+     * @param boolean $skipMissing
      * @throws Tinebase_Exception_Record_NotDefined
      */
-    public function setByIndices($_name, array $_values)
+    public function setByIndices($_name, array $_values, $skipMissing = false)
     {
         foreach ($_values as $index => $value) {
             if (! (isset($this->_listOfRecords[$index]) || array_key_exists($index, $this->_listOfRecords))) {
-                throw new Tinebase_Exception_Record_NotDefined('Could not find record with index ' . $index);
+                if ($skipMissing) {
+                    if (Tinebase_Core::isLogLevel(Zend_Log::NOTICE)) Tinebase_Core::getLogger()->notice(__METHOD__ . '::' . __LINE__ 
+                        . ' Skip missing record ' . $index . ' => ' . $value . ' property: ' . $_name);
+                    continue;
+                } else {
+                    throw new Tinebase_Exception_Record_NotDefined('Could not find record with index ' . $index);
+                }
             }
             $this->_listOfRecords[$index]->$_name = $value;
         }
index d8ef207..5b05752 100644 (file)
@@ -20,17 +20,14 @@ Tine.widgets.customfields.ConfigManager = function() {
                 data: allCfs ? allCfs : []
             });
             
-            // place customefield keyFieldConfig in registry so we can use the standard widgets
-            // keyfields are used for key/value customfields with a defined store 
+            // place keyFieldConfig in registry so we can use the standard widgets
             stores[app.appName].each(function(cfConfig) {
                 var definition = cfConfig.get('definition'),
                     options = definition.options ? definition.options : {},
                     keyFieldConfig = definition.keyFieldConfig ? definition.keyFieldConfig : null;
                     
                 if (keyFieldConfig) {
-                    var config = app.getRegistry().get('config');
-                    config[cfConfig.get('name')] = keyFieldConfig;
-                    app.getRegistry().set('config', config);
+                    app.getRegistry().get('config')[cfConfig.get('name')] = keyFieldConfig;
                 }
             });
         }