[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kolab-commits
Subject:    plugins/tasklist
From:       Aleksander Machniak <machniak () kolabsys ! com>
Date:       2014-11-27 12:20:12
Message-ID: 20141127122012.22BA76A5E4 () app08 ! kolabsys ! com
[Download RAW message or body]

 plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

New commits:
commit 87723eb9bb6e1616a03f2cfe14755e9d48f76a4a
Author: Aleksander Machniak <machniak@kolabsys.com>
Date:   Thu Nov 27 07:11:54 2014 -0500

    Performance: skip relation checks when only counting tasks (#3969)

diff --git a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php \
b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php index e94565e..97cdb63 \
                100644
--- a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
+++ b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php
@@ -490,7 +490,7 @@ class tasklist_kolab_driver extends tasklist_driver
                 continue;
             }
             foreach ($folder->select(array(array('tags','!~','x-complete'))) as \
                $record) {
-                $rec = $this->_to_rcube_task($record, $list_id);
+                $rec = $this->_to_rcube_task($record, $list_id, false);
 
                 if ($this->is_complete($rec))  // don't count complete tasks
                     continue;
@@ -691,7 +691,7 @@ class tasklist_kolab_driver extends tasklist_driver
                 if (!($record['valarms'] || $record['alarms']) || $record['status'] \
== 'COMPLETED' || $record['complete'] == 100)  // don't trust query :-)  continue;
 
-                $task = $this->_to_rcube_task($record, $lid);
+                $task = $this->_to_rcube_task($record, $lid, false);
 
                 // add to list if alarm is set
                 $alarm = libcalendaring::get_next_alarm($task, 'task');
@@ -923,7 +923,7 @@ class tasklist_kolab_driver extends tasklist_driver
     /**
      * Convert from Kolab_Format to internal representation
      */
-    private function _to_rcube_task($record, $list_id)
+    private function _to_rcube_task($record, $list_id, $all = true)
     {
         $id_prefix = $list_id . ':';
         $task = array(
@@ -941,10 +941,14 @@ class tasklist_kolab_driver extends tasklist_driver
             'organizer' => $record['organizer'],
             'sequence' => $record['sequence'],
             'tags' => $record['tags'],
-            'links' => $this->get_links($record['uid']),
             'list' => $list_id,
         );
 
+        // we can sometimes skip this expensive operation
+        if ($all) {
+            $task['links'] = $this->get_links($task['uid']);
+        }
+
         // convert from DateTime to internal date format
         if (is_a($record['due'], 'DateTime')) {
             $due = $this->plugin->lib->adjust_timezone($record['due']);


_______________________________________________
commits mailing list
commits@lists.kolab.org
https://lists.kolab.org/mailman/listinfo/commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic