Adds several interfaces for dbo actions
authorMatthias Schmidt <gravatronics@live.com>
Wed, 8 Aug 2012 18:49:29 +0000 (20:49 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Wed, 8 Aug 2012 19:53:54 +0000 (21:53 +0200)
Please be aware that the API for searching objects via AJAX changed!

12 files changed:
wcfsetup/install/files/js/WCF.js
wcfsetup/install/files/lib/data/AbstractDatabaseObjectAction.class.php
wcfsetup/install/files/lib/data/ICollapsibleContainerAction.class.php [new file with mode: 0644]
wcfsetup/install/files/lib/data/IDeleteAction.class.php [new file with mode: 0644]
wcfsetup/install/files/lib/data/ILoadableCollapsibleContainerAction.class.php [new file with mode: 0644]
wcfsetup/install/files/lib/data/IPositionAction.class.php [new file with mode: 0644]
wcfsetup/install/files/lib/data/ISearchAction.class.php [new file with mode: 0644]
wcfsetup/install/files/lib/data/IToggleAction.class.php [new file with mode: 0644]
wcfsetup/install/files/lib/data/category/CategoryAction.class.php
wcfsetup/install/files/lib/data/cronjob/CronjobAction.class.php
wcfsetup/install/files/lib/data/package/update/server/PackageUpdateServerAction.class.php
wcfsetup/install/files/lib/data/user/UserAction.class.php

index cd92118aae1af29ed4e59cbc7f942c421f08545e..6bedde44548e9476bd056f4e1bda8854e5d859c7 100755 (executable)
@@ -4045,7 +4045,7 @@ WCF.Search.Base = Class.extend({
                        };
                        
                        this._proxy.setOption('data', {
-                               actionName: 'getList',
+                               actionName: 'getSearchResultList',
                                className: this._className,
                                parameters: this._getParameters($parameters)
                        });
index f810bc0939e2981982a30b01e0f3ba7f6bfe9213..21682082e7f13a283f643a388c123b1ebba24487 100644 (file)
@@ -18,7 +18,7 @@ use wcf\util\StringUtil;
  * @subpackage data
  * @category   Community Framework
  */
-abstract class AbstractDatabaseObjectAction implements IDatabaseObjectAction {
+abstract class AbstractDatabaseObjectAction implements IDatabaseObjectAction, IDeleteAction {
        /**
         * pending action
         * @var string
@@ -228,7 +228,7 @@ abstract class AbstractDatabaseObjectAction implements IDatabaseObjectAction {
        }
        
        /**
-        * Validates permissions and parameters.
+        * @see wcf\data\IDeleteAction::validateDelete()
         */
        public function validateDelete() {
                // validate permissions
@@ -291,9 +291,7 @@ abstract class AbstractDatabaseObjectAction implements IDatabaseObjectAction {
        }
        
        /**
-        * Deletes database object and returns the number of deleted objects.
-        *
-        * @return      integer
+        * @see wcf\data\IDeleteAction::delete()
         */
        public function delete() {
                if (!count($this->objects)) {
diff --git a/wcfsetup/install/files/lib/data/ICollapsibleContainerAction.class.php b/wcfsetup/install/files/lib/data/ICollapsibleContainerAction.class.php
new file mode 100644 (file)
index 0000000..ba8aa44
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+namespace wcf\data;
+
+/**
+ * Every database object action whose objects represent a collapsible container
+ * has to implement this interface.
+ * 
+ * @author     Matthias Schmidt
+ * @copyright  2001-2012 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage data
+ * @category   Community Framework
+ */
+interface ICollapsibleContainerAction {
+       /**
+        * Toggles the container state of the relevant objects.
+        */
+       public function toggleContainer();
+       
+       /**
+        * Validates the "toggleContainer" action.
+        */
+       public function validateToggleContainer();
+}
diff --git a/wcfsetup/install/files/lib/data/IDeleteAction.class.php b/wcfsetup/install/files/lib/data/IDeleteAction.class.php
new file mode 100644 (file)
index 0000000..06ad12c
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+namespace wcf\data;
+
+/**
+ * Every database object action whose objects can be deleted (via AJAX) has to
+ * implement this interface.
+ * 
+ * @author     Matthias Schmidt
+ * @copyright  2001-2012 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage data
+ * @category   Community Framework
+ */
+interface IDeleteAction {
+       /**
+        * Deletes the relevant objects and returns the number of deleted objects.
+        * 
+        * @return      integer
+        */
+       public function delete();
+       
+       /**
+        * Validates the "delete" action.
+        */
+       public function validateDelete();
+}
diff --git a/wcfsetup/install/files/lib/data/ILoadableCollapsibleContainerAction.class.php b/wcfsetup/install/files/lib/data/ILoadableCollapsibleContainerAction.class.php
new file mode 100644 (file)
index 0000000..96d41a7
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+namespace wcf\data;
+
+/**
+ * Every database object action whose objects represent a collapsible container
+ * whose content can be loaded via AJAX has to implement this interface.
+ * 
+ * @author     Matthias Schmidt
+ * @copyright  2001-2012 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage data
+ * @category   Community Framework
+ */
+interface ILoadableCollapsibleContainerAction {
+       /**
+        * Toggles the container state of the relevant objects and loads their
+        * content if necessary.
+        */
+       public function loadContainer();
+       
+       /**
+        * Validates the "loadContainer" action.
+        */
+       public function validateLoadContainer();
+}
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/data/IPositionAction.class.php b/wcfsetup/install/files/lib/data/IPositionAction.class.php
new file mode 100644 (file)
index 0000000..2d91b40
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+namespace wcf\data;
+
+/**
+ * Every database object action whose objects can be positioned via AJAX has to
+ * implement this interface.
+ * 
+ * @author     Matthias Schmidt
+ * @copyright  2001-2012 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage data
+ * @category   Community Framework
+ */
+interface IPositionAction {
+       /**
+        * Updates the positions of the relevant objects.
+        */
+       public function updatePosition();
+       
+       /**
+        * Validates the "updatePosition" action.
+        */
+       public function validateUpdatePosition();
+}
diff --git a/wcfsetup/install/files/lib/data/ISearchAction.class.php b/wcfsetup/install/files/lib/data/ISearchAction.class.php
new file mode 100644 (file)
index 0000000..33629ba
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+namespace wcf\data;
+
+/**
+ * Every database object action whose objects can be searched via AJAX has to
+ * implement this interface.
+ * 
+ * @author     Matthias Schmidt
+ * @copyright  2001-2012 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage data
+ * @category   Community Framework
+ */
+interface ISearchAction {
+       /**
+        * Returns a list with data of objects that match the given search criteria.
+        * 
+        * @return      array<array>
+        */
+       public function getSearchResultList();
+       
+       /**
+        * Validates the "getSearchResultList" action.
+        */
+       public function validateGetSearchResultList();
+}
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/data/IToggleAction.class.php b/wcfsetup/install/files/lib/data/IToggleAction.class.php
new file mode 100644 (file)
index 0000000..e1fa414
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+namespace wcf\data;
+
+/**
+ * Every database object action whose objects can be toggled has to implement this
+ * interface.
+ * 
+ * @author     Matthias Schmidt
+ * @copyright  2001-2012 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage data
+ * @category   Community Framework
+ */
+interface IToggleAction {
+       /**
+        * Toggles the "isDisabled" status of the relevant objects.
+        */
+       public function toggle();
+       
+       /**
+        * Validates the "toggle" action.
+        */
+       public function validateToggle();
+}
index d20bab41a7e1d16f9a8bc3c34ee14cd0b601ab27..9fab9e7974a3a9130ded2ea061af2e6fb584917b 100644 (file)
@@ -1,6 +1,9 @@
 <?php
 namespace wcf\data\category;
 use wcf\data\AbstractDatabaseObjectAction;
+use wcf\data\ICollapsibleContainerAction;
+use wcf\data\IPositionAction;
+use wcf\data\IToggleAction;
 use wcf\system\category\CategoryHandler;
 use wcf\system\exception\PermissionDeniedException;
 use wcf\system\exception\ValidateActionException;
@@ -17,7 +20,7 @@ use wcf\system\WCF;
  * @subpackage data.category
  * @category   Community Framework
  */
-class CategoryAction extends AbstractDatabaseObjectAction {
+class CategoryAction extends AbstractDatabaseObjectAction implements ICollapsibleContainerAction, IPositionAction, IToggleAction {
        /**
         * categorized object type
         * @var wcf\data\object\type\ObjectType
@@ -39,7 +42,7 @@ class CategoryAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Toggles the activity status of categories.
+        * @see wcf\data\IToggleAction::toggle()
         */
        public function toggle() {
                foreach ($this->objects as $categoryEditor) {
@@ -50,7 +53,7 @@ class CategoryAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Toggles the collapse status of categories.
+        * @see wcf\data\ICollapsibleContainerAction::toggleContainer()
         */
        public function toggleContainer() {
                $objectTypeID = UserCollapsibleContentHandler::getInstance()->getObjectTypeID($this->objects[0]->getCategoryType()->getCollapsibleObjectTypeName());
@@ -66,7 +69,7 @@ class CategoryAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Updates the position of categories.
+        * @see wcf\data\IPositionAction::updatePosition()
         */
        public function updatePosition() {
                $showOrders = array();
@@ -145,14 +148,14 @@ class CategoryAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Validates the 'toggle' action.
+        * @see wcf\data\IToggleAction::validateToggle()
         */
        public function validateToggle() {
                $this->validateUpdate();
        }
        
        /**
-        * Validates the 'toggleContainer' action.
+        * @see wcf\data\ICollapsibleContainerAction::validateToggleContainer()
         */
        public function validateToggleContainer() {
                $this->validateUpdate();
@@ -189,7 +192,7 @@ class CategoryAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Validates the 'updatePosition' action.
+        * @see wcf\data\IPositionAction::validateUpdatePosition()
         */
        public function validateUpdatePosition() {
                // validate permissions
index e01e9577158ee1573581ac9b9949ef965ff12170..aba93de57c477edf6e68398939244ac33ab87976 100644 (file)
@@ -2,6 +2,7 @@
 namespace wcf\data\cronjob;
 use wcf\data\cronjob\log\CronjobLogEditor;
 use wcf\data\AbstractDatabaseObjectAction;
+use wcf\data\IToggleAction;
 use wcf\system\cronjob\CronjobScheduler;
 use wcf\system\exception\ValidateActionException;
 use wcf\system\WCF;
@@ -17,7 +18,7 @@ use wcf\util\DateUtil;
  * @subpackage data.cronjob
  * @category   Community Framework
  */
-class CronjobAction extends AbstractDatabaseObjectAction {
+class CronjobAction extends AbstractDatabaseObjectAction implements IToggleAction {
        /**
         * @see wcf\data\AbstractDatabaseObjectAction::$className
         */
@@ -70,7 +71,7 @@ class CronjobAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Validates permissions and parameters
+        * @see wcf\data\IToggleAction::validateToggle()
         */
        public function validateToggle() {
                parent::validateUpdate();
@@ -83,7 +84,7 @@ class CronjobAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Toggles status.
+        * @see wcf\data\IToggleAction::toggle()
         */
        public function toggle() {
                foreach ($this->objects as $cronjob) {
index b45b82a689e7a27907fa0320d547ca3751f425b8..68166df0b6301f6e714c7b93ce5bee9e4e2aba7a 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace wcf\data\package\update\server;
 use wcf\data\AbstractDatabaseObjectAction;
+use wcf\data\IToggleAction;
 
 /**
  * Executes package update server-related actions.
@@ -12,7 +13,7 @@ use wcf\data\AbstractDatabaseObjectAction;
  * @subpackage data.package.update.server
  * @category   Community Framework
  */
-class PackageUpdateServerAction extends AbstractDatabaseObjectAction {
+class PackageUpdateServerAction extends AbstractDatabaseObjectAction implements IToggleAction {
        /**
         * @see wcf\data\AbstractDatabaseObjectAction::$className
         */
@@ -34,14 +35,14 @@ class PackageUpdateServerAction extends AbstractDatabaseObjectAction {
        protected $permissionsUpdate = array('admin.system.package.canEditServer');
        
        /**
-        * Validates permissions and parameters
+        * @see wcf\data\IToggleAction::validateToggle()
         */
        public function validateToggle() {
                parent::validateUpdate();
        }
        
        /**
-        * Toggles status.
+        * @see wcf\data\IToggleAction::toggle()
         */
        public function toggle() {
                foreach ($this->objects as $server) {
index 58b532e2fad405bedc16100bc88e4a4e0a22c90e..75ccd723a8ac11bf7765085dd81230e38e85a69d 100644 (file)
@@ -2,6 +2,7 @@
 namespace wcf\data\user;
 use wcf\data\user\group\UserGroup;
 use wcf\data\AbstractDatabaseObjectAction;
+use wcf\data\ISearchAction;
 use wcf\system\database\util\PreparedStatementConditionBuilder;
 use wcf\system\exception\PermissionDeniedException;
 use wcf\system\exception\ValidateActionException;
@@ -18,7 +19,7 @@ use wcf\util\StringUtil;
  * @subpackage data.user
  * @category   Community Framework
  */
-class UserAction extends AbstractDatabaseObjectAction {
+class UserAction extends AbstractDatabaseObjectAction implements ISearchAction {
        /**
         * @see wcf\data\AbstractDatabaseObjectAction::$className
         */
@@ -195,9 +196,9 @@ class UserAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Validates parameters to search for users and -groups.
+        * @see wcf\data\ISearchAction::validateGetSearchResultList()
         */
-       public function validateGetList() {
+       public function validateGetSearchResultList() {
                if (!isset($this->parameters['data']['searchString'])) {
                        throw new ValidateActionException("Missing parameter 'searchString'");
                }
@@ -212,11 +213,9 @@ class UserAction extends AbstractDatabaseObjectAction {
        }
        
        /**
-        * Returns a list of users and -groups based upon given search criteria.
-        * 
-        * @return      array<array>
+        * @see wcf\data\ISearchAction::getSearchResultList()
         */
-       public function getList() {
+       public function getSearchResultList() {
                $searchString = $this->parameters['data']['searchString'];
                $excludedSearchValues = array();
                if (isset($this->parameters['data']['excludedSearchValues'])) {