瀏覽代碼

Merge branch 'master' of github.com:boonex/dolphin

Alex Trofimov 12 年之前
父節點
當前提交
0bde9d1a12

+ 8 - 0
inc/classes/BxDolModule.php

@@ -120,6 +120,14 @@ class BxDolModule extends BxDol
         return '_sys_module_' . strtolower(str_replace(' ', '_', $sUri));
     }
 
+	/**
+     * is module enabled
+     */
+    function isEnabled()
+    {
+        return (int)$this->_aModule['enabled'] == 1;
+    }
+
     /**
      * get module name
      */

+ 4 - 0
modules/base/general/classes/BxBaseModGeneralInstaller.php

@@ -130,6 +130,10 @@ class BxBaseModGeneralInstaller extends BxDolStudioInstaller
             }
         }
 
+        //request Timeline cleaning
+        if ($this->_bUpdateTimeline && BxDolRequest::serviceExists('timeline', 'delete_module_events'))
+            BxDolService::call('timeline', 'delete_module_events', array($this->_aConfig['home_uri']));
+
         return parent::uninstall($aParams, $bDisable);
     }
 }

+ 8 - 8
modules/boonex/timeline/classes/BxTimelineDb.php

@@ -41,10 +41,8 @@ class BxTimelineDb extends BxDolModuleDb
 
     public function insertData($aData)
     {
+    	//--- Update Timeline Handlers ---//
         foreach($aData['handlers'] as $aHandler) {
-            //--- Delete module related events ---//
-            $this->deleteEvent(array('type' => $aHandler['alert_unit'], 'action' => $aHandler['alert_action']));
-
             $sContent = '';
             if($aHandler['type'] == BX_TIMELINE_HANDLER_TYPE_INSERT)
                 $sContent = serialize(array(
@@ -55,7 +53,6 @@ class BxTimelineDb extends BxDolModuleDb
                     'group_by' => $aHandler['group_by']
                 ));
 
-            //--- Update Timeline Handlers ---//
             $sQuery = $this->prepare("INSERT INTO
                     `{$this->_sTableHandlers}`
                 SET
@@ -83,11 +80,8 @@ class BxTimelineDb extends BxDolModuleDb
 
     public function deleteData($aData)
     {
+    	//--- Update Timeline Handlers ---//
         foreach($aData['handlers'] as $aHandler) {
-            //--- Delete module related events ---//
-            $this->deleteEvent(array('type' => $aHandler['alert_unit'], 'action' => $aHandler['alert_action']));
-
-            //--- Update Wall Handlers ---//
             $sQuery = $this->prepare("DELETE FROM
                     `{$this->_sTableHandlers}`
                 WHERE
@@ -113,6 +107,12 @@ class BxTimelineDb extends BxDolModuleDb
         }
     }
 
+    public function deleteModuleEvents($aData)
+    {
+    	foreach($aData['handlers'] as $aHandler)
+            $this->deleteEvent(array('type' => $aHandler['alert_unit'], 'action' => $aHandler['alert_action']));
+    }
+
     public function getHandlers($aParams = array())
     {
         $sMethod = 'getAll';

+ 35 - 10
modules/boonex/timeline/classes/BxTimelineModule.php

@@ -289,12 +289,17 @@ class BxTimelineModule extends BxDolModule
      */
     public function serviceAddHandlers($sModuleUri = 'all')
     {
-        $this->_updateHandlers($sModuleUri, true);
+        $this->_updateModuleData('add_handlers', $sModuleUri);
     }
 
     public function serviceDeleteHandlers($sModuleUri = 'all')
     {
-        $this->_updateHandlers($sModuleUri, false);
+        $this->_updateModuleData('delete_handlers', $sModuleUri);
+    }
+
+	public function serviceDeleteModuleEvents($sModuleUri = 'all')
+    {
+        $this->_updateModuleData('delete_module_events', $sModuleUri);
     }
 
     function serviceGetActionsChecklist()
@@ -411,23 +416,34 @@ class BxTimelineModule extends BxDolModule
 
     public function serviceGetShareElementBlock($iOwnerId, $sType, $sAction, $iObjectId, $aParams = array())
     {
-        $aParams = array_merge($this->_oConfig->getShareDefaults(), $aParams);
+    	if(!$this->isEnabled())
+    		return '';
 
+        $aParams = array_merge($this->_oConfig->getShareDefaults(), $aParams);
         return $this->_oTemplate->getShareElement($iOwnerId, $sType, $sAction, $iObjectId, $aParams);
     }
 
     public function serviceGetShareCounter($sType, $sAction, $iObjectId)
     {
+    	if(!$this->isEnabled())
+    		return '';
+
         return $this->_oTemplate->getShareCounter($sType, $sAction, $iObjectId);
     }
 
     public function serviceGetShareJsScript()
     {
+    	if(!$this->isEnabled())
+    		return '';
+
         return $this->_oTemplate->getShareJsScript();
     }
 
     public function serviceGetShareJsClick($iOwnerId, $sType, $sAction, $iObjectId)
     {
+    	if(!$this->isEnabled())
+    		return '';
+
         return $this->_oTemplate->getShareJsClick($iOwnerId, $sType, $sAction, $iObjectId);
     }
 
@@ -885,7 +901,7 @@ class BxTimelineModule extends BxDolModule
         return bx_process_input($s, BX_DATA_TEXT_MULTILINE);
     }
 
-    protected function _updateHandlers($sModuleUri = 'all', $bInstall = true)
+    protected function _updateModuleData($sAction, $sModuleUri = 'all')
     {
         $aModules = $sModuleUri == 'all' ? $this->_oDb->getModules() : array($this->_oDb->getModuleByUri($sModuleUri));
 
@@ -897,13 +913,22 @@ class BxTimelineModule extends BxDolModule
             if(empty($aData) || !is_array($aData))
                 continue;
 
-            if($bInstall)
-                $this->_oDb->insertData($aData);
-            else
-                $this->_oDb->deleteData($aData);
+			switch($sAction) {
+				case 'add_handlers':
+					$this->_oDb->insertData($aData);
+					BxDolAlerts::cacheInvalidate();
+					break;
+
+				case 'delete_handlers':
+					$this->_oDb->deleteData($aData);
+					BxDolAlerts::cacheInvalidate();
+					break;
+
+				case 'delete_module_events':
+					$this->_oDb->deleteModuleEvents($aData);
+					break;
+			}
         }
-
-        BxDolAlerts::cacheInvalidate();
     }
 
     protected function _echoResultJson($a, $isAutoWrapForFormFileSubmit = false)