===== Developer ===== The Search Plus have two interfaces you could use to implement your own custom columns and conditions. With this power you could integrate almost everything within ListView! \\ You found everything within the extends directory, like in my other modules. IN this directory, nothing is encrypted. ==== Custom Columns ==== This interfaces is stored in **extends/field** directory and allow to add virtual columns, which are not related to a field in vtigercrm. Use it to calculate values, summarize something, … How to add such virtual column: Create a file in **extends / fields** with filename structure **.inc.php**. **Use the following class stub for the file:** array ( 'label' => '[Visible Column Label]', 'columnname' => '_[virtualuniquecolumnname]', 'typeofdata' => '[typeofdata of column. Normally: V~O]', 'uitype' => [uitype of column. Normally: 1], 'displaytype' => 3, ), '[columnSlug2]' => array ( 'label' => '[Visible Column Label]', 'columnname' => '_[virtualuniquecolumnname]', 'typeofdata' => '[typeofdata of column. Normally: V~O]', 'uitype' => [uitype of column. Normally: 1], 'displaytype' => 3, ), ); // } return $operators; } public function execute($key, $moduleName) { $adb = \PearDatabase::getInstance(); // default calculations switch($key) { case 'columnSlug1': /* public function addJoinTable($fromTableName, $joinFromColumn, $toTableName, $joinToColumn, $tableDefinition, $tableDefinitionUniqueKey = false) { $fromTableName = vtiger_crmentity in almost any situation $joinFromColumn = crmid in almost any situation. These both columns define the SRC ID for JOIN $toTableName = Result Table Name of $tableDefinition $joinToColumn = Join Target of $tableDefinition to SRC iD $tableDefinition = The SQL Query, which generate the result $tableDefinitionUniqueKey = In some situation it is necessary to manually set a UniqueKey, if more extensions use an equal tableDefinition This example use the Total SUM Calculation of Account */ $tableName = self::$tableHander->addJoinTable('vtiger_crmentity', 'crmid', 'vtiger_invoice', 'accountid', 'SELECT ROUND(SUM(total)) as _totalinvoicesum, accountid FROM vtiger_invoice GROUP BY vtiger_invoice.accountid'); break; case 'columnSlug2': .... break; } return $tableName; } } \SWSearchPlus\Customfield::register('[uniqueextensionkey]', '\\SWSearchPlus\\Plugin\\Field\\ClassName'); Every file could register multiple columns. Placeholder description: | Placeholder | Description | | ClassName | Your ClassName Unique within Folder extends/fields | | uniqueextensionkey | A unique key, for your extension | | columnSlug1,columnSlug2 | Unique Key of your column. Used internally to call your class | | Visible Column Label | Label of Column, shown to User and during CustomView Edit | | virtualuniquecolumnname | An unique virtual fieldname you must set. Prefixed with _ to be really unique | | typeofdata of column | The type of Data. Necessary for vtiger. Set to V~O works in any case | | uitype of column | The UIType of this virtual column. Set to 1 works in any case and make this colum handled like text |