- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / trigger / list.php
1 <?php
2 //
3 // Created on: <15-Aug-2002 14:37:29 bf>
4 //
5 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
6 // SOFTWARE NAME: eZ Publish
7 // SOFTWARE RELEASE: 4.1.x
8 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
9 // SOFTWARE LICENSE: GNU General Public License v2.0
10 // NOTICE: >
11 //   This program is free software; you can redistribute it and/or
12 //   modify it under the terms of version 2.0  of the GNU General
13 //   Public License as published by the Free Software Foundation.
14 //
15 //   This program is distributed in the hope that it will be useful,
16 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
17 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 //   GNU General Public License for more details.
19 //
20 //   You should have received a copy of version 2.0 of the GNU General
21 //   Public License along with this program; if not, write to the Free
22 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23 //   MA 02110-1301, USA.
24 //
25 //
26 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
27 //
28 function makeTriggerArray( $triggerList )
29 {
30     $triggerArray = array();
31     foreach ( $triggerList as $trigger )
32     {
33         $newKey = $trigger->attribute( 'module_name' ) . '_' . $trigger->attribute( 'function_name' ) . '_' . $trigger->attribute( 'connect_type' );
34         $triggerArray[$newKey] = $trigger;
35     }
36     return $triggerArray;
37 }
38
39 require_once( 'kernel/common/template.php' );
40 $http = eZHTTPTool::instance();
41
42 $Module = $Params['Module'];
43
44 $wfINI = eZINI::instance( 'workflow.ini' );
45 $operations = $wfINI->variableArray( 'OperationSettings', 'AvailableOperations' );
46 $operations = array_unique( array_merge( $operations, $wfINI->variable( 'OperationSettings', 'AvailableOperationList' ) ) );
47 $possibleTriggers = array();
48
49 $triggers = makeTriggerArray( eZTrigger::fetchList() );
50
51 foreach ( $operations as $operation )
52 {
53     if ( $operation == '' )
54     {
55         continue;
56     }
57     $trigger = array();
58
59     // the operation string has either two or three underscore characters.
60     // Eg: shop_checkout, before_shop_checkout, after_shop_checkout.
61     // Only the strings before and after are allowed in front of the module.
62     $explodedOperation = explode ('_', $operation);
63     $i = 0;
64
65     if (sizeof ($explodedOperation) >= 3)
66     {
67         if (strcmp($explodedOperation[$i], "before") == 0 || strcmp($explodedOperation[$i], "after") == 0)
68             $moduleParts = array ($explodedOperation[$i++]);
69     }
70     else
71     {
72         $moduleParts = array ("before", "after");
73     }
74
75     foreach ($moduleParts as $trigger['connect_type'])
76     {
77         $trigger['module'] = $explodedOperation[$i]; // $i is either 0 or 1
78         $trigger['operation'] = $explodedOperation[$i + 1];
79         $trigger['workflow_id'] = 0;
80         $trigger['key'] = $trigger['module'] . '_' . $trigger['operation'] . '_' . $trigger['connect_type'][0];
81         $trigger['allowed_workflows'] = eZWorkflow::fetchLimited( $trigger['module'], $trigger['operation'], $trigger['connect_type'] );
82
83         foreach ( $triggers as $existendTrigger )
84         {
85             if ( $existendTrigger->attribute( 'module_name' ) == $trigger['module'] &&
86                  $existendTrigger->attribute( 'function_name' ) == $trigger['operation'] &&
87                  $existendTrigger->attribute( 'connect_type' ) == $trigger['connect_type'][0] )
88             {
89                  $trigger['workflow_id'] = $existendTrigger->attribute( 'workflow_id' );
90             }
91         }
92
93         $possibleTriggers[] = $trigger;
94     }
95 }
96
97 if ( $http->hasPostVariable( 'StoreButton' )  )
98 {
99     $db = eZDB::instance();
100     $db->begin();
101     foreach ( $possibleTriggers as $trigger )
102     {
103         if ( $http->hasPostVariable( 'WorkflowID_' . $trigger['key'] ) )
104         {
105             $workflowID = $http->postVariable( 'WorkflowID_' . $trigger['key'] );
106             if( $workflowID != -1 )
107             {
108                 if ( !array_key_exists( $trigger['key'], $triggers ) )
109                 {
110                     //create trigger
111                     if ( $trigger['connect_type'] == 'before' )
112                     {
113                         $connectType = 'b';
114                     }
115                     else
116                     {
117                         $connectType = 'a';
118                     }
119                     $newTrigger = eZTrigger::createNew( $trigger['module'], $trigger['operation'], $connectType, $workflowID );
120                 }
121                 else
122                 {
123                     $existendTrigger = $triggers[$trigger['key']];
124                     if ( $existendTrigger->attribute( 'workflow_id' ) != $workflowID )
125                     {
126                         $existendTrigger = $triggers[$trigger['key']];
127                         $existendTrigger->setAttribute( 'workflow_id', $workflowID );
128                         $existendTrigger->store();
129                     }
130                     // update trigger
131                 }
132             }
133             else if ( array_key_exists( $trigger['key'], $triggers ) )
134             {
135                 $existendTrigger = $triggers[$trigger['key']];
136                 $existendTrigger->remove();
137                 //remove trigger
138             }
139         }
140     }
141     $db->commit();
142     $Module->redirectToView( 'list' );
143
144 }
145
146 $moduleName='*';
147 $functionName='*';
148
149 if ( $http->hasPostVariable( 'RemoveButton' )  )
150 {
151     if ( $http->hasPostVariable( 'DeleteIDArray' ) )
152     {
153         $deleteIDArray = $http->postVariable( 'DeleteIDArray' );
154
155         $db = eZDB::instance();
156         $db->begin();
157         foreach ( $deleteIDArray as $deleteID )
158         {
159             eZTrigger::remove( $deleteID );
160         }
161         $db->commit();
162     }
163 }
164
165 if ( $http->hasPostVariable( 'NewButton' )  )
166 {
167     $trigger = eZTrigger::createNew( );
168 }
169
170
171 $tpl = templateInit();
172
173 $triggers = eZTrigger::fetchList( array(
174                                        'module' => $moduleName,
175                                        'function' => $functionName
176                                        ) );
177 $showModuleList = false;
178 $showFunctionList = false;
179 $functionList = array();
180 $moduleList = array();
181 if ( $moduleName == '*' )
182 {
183     $showModuleList = true;
184     $ini = eZINI::instance( 'module.ini' );
185     $moduleList = $ini->variable( 'ModuleSettings', 'ModuleList' );
186 }
187 elseif( $functionName == '*' )
188 {
189     $mod = eZModule::exists( $moduleName );
190     $functionList = array_keys( $mod->attribute( 'available_functions' ) );
191     eZDebug::writeNotice( $functionList, "functions" );
192     $showFunctionList = true;
193 }
194
195 $tpl->setVariable( 'current_module', $moduleName );
196 $tpl->setVariable( 'current_function', $functionName );
197 $tpl->setVariable( 'show_functions', $showFunctionList );
198 $tpl->setVariable( 'show_modules', $showModuleList );
199
200 $tpl->setVariable( 'possible_triggers', $possibleTriggers );
201
202 $tpl->setVariable( 'modules', $moduleList );
203 $tpl->setVariable( 'functions', $functionList );
204
205 $tpl->setVariable( 'triggers', $triggers );
206 $tpl->setVariable( 'module', $Module );
207
208 $Result['content'] = $tpl->fetch( 'design:trigger/list.tpl' );
209 $Result['path'] = array( array( 'text' => ezpI18n::translate( 'kernel/trigger', 'Trigger' ),
210                                 'url' => false ),
211                          array( 'text' => ezpI18n::translate( 'kernel/trigger', 'List' ),
212                                 'url' => false ) );
213
214
215 ?>