Completed
Push — console-installer ( e2b50d...6ce748 )
by Adam
22:30
created
include/database/DBManager.php 2 patches
Indentation   +3266 added lines, -3266 removed lines patch added patch discarded remove patch
@@ -97,389 +97,389 @@  discard block
 block discarded – undo
97 97
  */
98 98
 abstract class DBManager
99 99
 {
100
-	/**
101
-	 * Name of database
102
-	 * @var resource
103
-	 */
104
-	public $database = null;
105
-
106
-	/**
107
-	 * Indicates whether we should die when we get an error from the DB
108
-	 */
109
-	protected $dieOnError = false;
110
-
111
-	/**
112
-	 * Indicates whether we should html encode the results from a query by default
113
-	 */
114
-	protected $encode = true;
115
-
116
-	/**
117
-	 * Records the execution time of the last query
118
-	 */
119
-	protected $query_time = 0;
120
-
121
-	/**
122
-	 * Last error message from the DB backend
123
-	 */
124
-	protected $last_error = false;
125
-
126
-	/**
127
-	 * Registry of available result sets
128
-	 */
129
-	protected $lastResult;
130
-
131
-	/**
132
-	 * Current query count
133
-	 */
134
-	private static $queryCount = 0;
135
-
136
-	/**
137
-	 * Query threshold limit
138
-	 */
139
-	private static $queryLimit = 0;
140
-
141
-	/**
142
-	 * Array of prepared statements and their correspoding parsed tokens
143
-	 */
144
-	protected $preparedTokens = array();
145
-
146
-	/**
147
-	 * TimeDate instance
148
-	 * @var TimeDate
149
-	 */
150
-	protected $timedate;
151
-
152
-	/**
153
-	 * PHP Logger
154
-	 * @var Logger
155
-	 */
156
-	protected $log;
157
-
158
-	/**
159
-	 * Table descriptions
160
-	 * @var array
161
-	 */
162
-	protected static $table_descriptions = array();
163
-
164
-	/**
165
-	 * Index descriptions
166
-	 * @var array
167
-	 */
168
-	protected static $index_descriptions = array();
169
-
170
-	/**
171
-	 * Maximum length of identifiers
172
-	 * @abstract
173
-	 * @var array
174
-	 */
175
-	protected $maxNameLengths = array(
176
-		'table' => 64,
177
-		'column' => 64,
178
-		'index' => 64,
179
-		'alias' => 64
180
-	);
181
-
182
-	/**
183
-	 * DB driver priority
184
-	 * Higher priority drivers override lower priority ones
185
-	 * @var int
186
-	 */
187
-	public $priority = 0;
188
-
189
-	/**
190
-	 * Driver name label, for install
191
-	 * @absrtact
192
-	 * @var string
193
-	 */
194
-	public $label = '';
195
-
196
-	/**
197
-	 * Type names map
198
-	 * @abstract
199
-	 * @var array
200
-	 */
201
-	protected $type_map = array();
202
-
203
-	/**
204
-	 * Type classification into:
205
-	 * - int
206
-	 * - bool
207
-	 * - float
208
-	 * - date
209
-	 * @abstract
210
-	 * @var array
211
-	 */
212
-	protected $type_class = array(
213
-			'int'      => 'int',
214
-			'double'   => 'float',
215
-			'float'    => 'float',
216
-			'uint'     => 'int',
217
-			'ulong'    => 'bigint',
218
-			'long'     => 'bigint',
219
-			'short'    => 'int',
220
-			'date'     => 'date',
221
-			'datetime' => 'date',
222
-			'datetimecombo' => 'date',
223
-			'time'     => 'time',
224
-			'bool'     => 'bool',
225
-			'tinyint'  => 'int',
226
-			'currency' => 'float',
227
-			'decimal'  => 'float',
228
-			'decimal2' => 'float',
229
-	);
230
-
231
-	/**
232
-	 * Capabilities this DB supports. Supported list:
233
-	 * affected_rows	Can report query affected rows for UPDATE/DELETE
234
-	 * 					implement getAffectedRowCount()
235
-	 * select_rows		Can report row count for SELECT
236
-	 * 					implement getRowCount()
237
-	 * case_sensitive	Supports case-sensitive text columns
238
-	 * fulltext			Supports fulltext search indexes
239
-	 * inline_keys		Supports defining keys together with the table
240
-	 * auto_increment_sequence Autoincrement support implemented as sequence
241
-	 * limit_subquery   Supports LIMIT clauses in subqueries
242
-	 * create_user		Can create users for Sugar
243
-	 * create_db		Can create databases
244
-	 * collation		Supports setting collations
245
-	 * disable_keys     Supports temporarily disabling keys (for upgrades, etc.)
246
-	 *
247
-	 * @abstract
248
-	 * Special cases:
249
-	 * fix:expandDatabase - needs expandDatabase fix, see expandDatabase.php
250
-	 * TODO: verify if we need these cases
251
-	 */
252
-	protected $capabilities = array();
253
-
254
-	/**
255
-	 * Database options
256
-	 * @var array
257
-	 */
258
-	protected $options = array();
100
+    /**
101
+     * Name of database
102
+     * @var resource
103
+     */
104
+    public $database = null;
105
+
106
+    /**
107
+     * Indicates whether we should die when we get an error from the DB
108
+     */
109
+    protected $dieOnError = false;
110
+
111
+    /**
112
+     * Indicates whether we should html encode the results from a query by default
113
+     */
114
+    protected $encode = true;
115
+
116
+    /**
117
+     * Records the execution time of the last query
118
+     */
119
+    protected $query_time = 0;
120
+
121
+    /**
122
+     * Last error message from the DB backend
123
+     */
124
+    protected $last_error = false;
125
+
126
+    /**
127
+     * Registry of available result sets
128
+     */
129
+    protected $lastResult;
130
+
131
+    /**
132
+     * Current query count
133
+     */
134
+    private static $queryCount = 0;
135
+
136
+    /**
137
+     * Query threshold limit
138
+     */
139
+    private static $queryLimit = 0;
140
+
141
+    /**
142
+     * Array of prepared statements and their correspoding parsed tokens
143
+     */
144
+    protected $preparedTokens = array();
145
+
146
+    /**
147
+     * TimeDate instance
148
+     * @var TimeDate
149
+     */
150
+    protected $timedate;
151
+
152
+    /**
153
+     * PHP Logger
154
+     * @var Logger
155
+     */
156
+    protected $log;
157
+
158
+    /**
159
+     * Table descriptions
160
+     * @var array
161
+     */
162
+    protected static $table_descriptions = array();
163
+
164
+    /**
165
+     * Index descriptions
166
+     * @var array
167
+     */
168
+    protected static $index_descriptions = array();
169
+
170
+    /**
171
+     * Maximum length of identifiers
172
+     * @abstract
173
+     * @var array
174
+     */
175
+    protected $maxNameLengths = array(
176
+        'table' => 64,
177
+        'column' => 64,
178
+        'index' => 64,
179
+        'alias' => 64
180
+    );
181
+
182
+    /**
183
+     * DB driver priority
184
+     * Higher priority drivers override lower priority ones
185
+     * @var int
186
+     */
187
+    public $priority = 0;
188
+
189
+    /**
190
+     * Driver name label, for install
191
+     * @absrtact
192
+     * @var string
193
+     */
194
+    public $label = '';
195
+
196
+    /**
197
+     * Type names map
198
+     * @abstract
199
+     * @var array
200
+     */
201
+    protected $type_map = array();
202
+
203
+    /**
204
+     * Type classification into:
205
+     * - int
206
+     * - bool
207
+     * - float
208
+     * - date
209
+     * @abstract
210
+     * @var array
211
+     */
212
+    protected $type_class = array(
213
+            'int'      => 'int',
214
+            'double'   => 'float',
215
+            'float'    => 'float',
216
+            'uint'     => 'int',
217
+            'ulong'    => 'bigint',
218
+            'long'     => 'bigint',
219
+            'short'    => 'int',
220
+            'date'     => 'date',
221
+            'datetime' => 'date',
222
+            'datetimecombo' => 'date',
223
+            'time'     => 'time',
224
+            'bool'     => 'bool',
225
+            'tinyint'  => 'int',
226
+            'currency' => 'float',
227
+            'decimal'  => 'float',
228
+            'decimal2' => 'float',
229
+    );
230
+
231
+    /**
232
+     * Capabilities this DB supports. Supported list:
233
+     * affected_rows	Can report query affected rows for UPDATE/DELETE
234
+     * 					implement getAffectedRowCount()
235
+     * select_rows		Can report row count for SELECT
236
+     * 					implement getRowCount()
237
+     * case_sensitive	Supports case-sensitive text columns
238
+     * fulltext			Supports fulltext search indexes
239
+     * inline_keys		Supports defining keys together with the table
240
+     * auto_increment_sequence Autoincrement support implemented as sequence
241
+     * limit_subquery   Supports LIMIT clauses in subqueries
242
+     * create_user		Can create users for Sugar
243
+     * create_db		Can create databases
244
+     * collation		Supports setting collations
245
+     * disable_keys     Supports temporarily disabling keys (for upgrades, etc.)
246
+     *
247
+     * @abstract
248
+     * Special cases:
249
+     * fix:expandDatabase - needs expandDatabase fix, see expandDatabase.php
250
+     * TODO: verify if we need these cases
251
+     */
252
+    protected $capabilities = array();
253
+
254
+    /**
255
+     * Database options
256
+     * @var array
257
+     */
258
+    protected $options = array();
259 259
 
260 260
     /**
261 261
      * Create DB Driver
262 262
      */
263
-	public function __construct()
264
-	{
265
-		$this->timedate = TimeDate::getInstance();
266
-		$this->log = isset($GLOBALS['log']) ? $GLOBALS['log'] : null;
267
-		$this->helper = $this; // compatibility
268
-	}
263
+    public function __construct()
264
+    {
265
+        $this->timedate = TimeDate::getInstance();
266
+        $this->log = isset($GLOBALS['log']) ? $GLOBALS['log'] : null;
267
+        $this->helper = $this; // compatibility
268
+    }
269 269
 
270 270
     /**
271 271
      * Wrapper for those trying to access the private and protected class members directly
272 272
      * @param string $p var name
273 273
      * @return mixed
274 274
      */
275
-	public function __get($p)
276
-	{
277
-		$this->log->info('Call to DBManager::$'.$p.' is deprecated');
278
-		return $this->$p;
279
-	}
280
-
281
-	/**
282
-	 * Returns the current database handle
283
-	 * @return resource
284
-	 */
285
-	public function getDatabase()
286
-	{
287
-		$this->checkConnection();
288
-		return $this->database;
289
-	}
290
-
291
-	/**
292
-	 * Returns this instance's DBHelper
293
-	 * Actually now returns $this
294
-	 * @deprecated
295
-	 * @return DBManager
296
-	 */
297
-	public function getHelper()
298
-	{
299
-		return $this;
300
-	}
301
-
302
-	/**
303
-	 * Checks for error happening in the database
304
-	 *
305
-	 * @param  string $msg        message to prepend to the error message
306
-	 * @param  bool   $dieOnError true if we want to die immediately on error
307
-	 * @return bool True if there was an error
308
-	 */
309
-	public function checkError($msg = '', $dieOnError = false)
310
-	{
311
-		if (empty($this->database)) {
312
-			$this->registerError($msg, "Database Is Not Connected", $dieOnError);
313
-			return true;
314
-		}
315
-
316
-		$dberror = $this->lastDbError();
317
-		if($dberror === false) {
318
-    		$this->last_error = false;
319
-	    	return false;
320
-		}
321
-		$this->registerError($msg, $dberror, $dieOnError);
275
+    public function __get($p)
276
+    {
277
+        $this->log->info('Call to DBManager::$'.$p.' is deprecated');
278
+        return $this->$p;
279
+    }
280
+
281
+    /**
282
+     * Returns the current database handle
283
+     * @return resource
284
+     */
285
+    public function getDatabase()
286
+    {
287
+        $this->checkConnection();
288
+        return $this->database;
289
+    }
290
+
291
+    /**
292
+     * Returns this instance's DBHelper
293
+     * Actually now returns $this
294
+     * @deprecated
295
+     * @return DBManager
296
+     */
297
+    public function getHelper()
298
+    {
299
+        return $this;
300
+    }
301
+
302
+    /**
303
+     * Checks for error happening in the database
304
+     *
305
+     * @param  string $msg        message to prepend to the error message
306
+     * @param  bool   $dieOnError true if we want to die immediately on error
307
+     * @return bool True if there was an error
308
+     */
309
+    public function checkError($msg = '', $dieOnError = false)
310
+    {
311
+        if (empty($this->database)) {
312
+            $this->registerError($msg, "Database Is Not Connected", $dieOnError);
313
+            return true;
314
+        }
315
+
316
+        $dberror = $this->lastDbError();
317
+        if($dberror === false) {
318
+            $this->last_error = false;
319
+            return false;
320
+        }
321
+        $this->registerError($msg, $dberror, $dieOnError);
322 322
         return true;
323
-	}
324
-
325
-	/**
326
-	 * Register database error
327
-	 * If die-on-error flag is set, logs the message and dies,
328
-	 * otherwise sets last_error to the message
329
-	 * @param string $userMessage Message from function user
330
-	 * @param string $message Message from SQL driver
331
-	 * @param bool $dieOnError
332
-	 */
333
-	protected function registerError($userMessage, $message, $dieOnError = false)
334
-	{
335
-		if(!empty($message)) {
336
-			if(!empty($userMessage)) {
337
-				$message = "$userMessage: $message";
338
-			}
339
-			if(empty($message)) {
340
-			    $message = "Database error";
341
-			}
342
-			$this->log->fatal($message);
343
-			if ($dieOnError || $this->dieOnError) {
344
-				if(isset($GLOBALS['app_strings']['ERR_DB_FAIL'])) {
345
-					sugar_die($GLOBALS['app_strings']['ERR_DB_FAIL']);
346
-				} else {
347
-					sugar_die("Database error. Please check suitecrm.log for details.");
348
-				}
349
-			} else {
350
-				$this->last_error = $message;
351
-			}
352
-		}
353
-	}
354
-
355
-	/**
356
-	 * Return DB error message for the last query executed
357
-	 * @return string Last error message
358
-	 */
359
-	public function lastError()
360
-	{
361
-		return $this->last_error;
362
-	}
363
-
364
-	/**
365
-	 * This method is called by every method that runs a query.
366
-	 * If slow query dumping is turned on and the query time is beyond
367
-	 * the time limit, we will log the query. This function may do
368
-	 * additional reporting or log in a different area in the future.
369
-	 *
370
-	 * @param  string  $query query to log
371
-	 * @return boolean true if the query was logged, false otherwise
372
-	 */
373
-	protected function dump_slow_queries($query)
374
-	{
375
-		global $sugar_config;
376
-
377
-		$do_the_dump = isset($sugar_config['dump_slow_queries'])
378
-			? $sugar_config['dump_slow_queries'] : false;
379
-		$slow_query_time_msec = isset($sugar_config['slow_query_time_msec'])
380
-			? $sugar_config['slow_query_time_msec'] : 5000;
381
-
382
-		if($do_the_dump) {
383
-			if($slow_query_time_msec < ($this->query_time * 1000)) {
384
-				// Then log both the query and the query time
385
-				$this->log->fatal('Slow Query (time:'.$this->query_time."\n".$query);
386
-				return true;
387
-			}
388
-		}
389
-		return false;
390
-	}
323
+    }
324
+
325
+    /**
326
+     * Register database error
327
+     * If die-on-error flag is set, logs the message and dies,
328
+     * otherwise sets last_error to the message
329
+     * @param string $userMessage Message from function user
330
+     * @param string $message Message from SQL driver
331
+     * @param bool $dieOnError
332
+     */
333
+    protected function registerError($userMessage, $message, $dieOnError = false)
334
+    {
335
+        if(!empty($message)) {
336
+            if(!empty($userMessage)) {
337
+                $message = "$userMessage: $message";
338
+            }
339
+            if(empty($message)) {
340
+                $message = "Database error";
341
+            }
342
+            $this->log->fatal($message);
343
+            if ($dieOnError || $this->dieOnError) {
344
+                if(isset($GLOBALS['app_strings']['ERR_DB_FAIL'])) {
345
+                    sugar_die($GLOBALS['app_strings']['ERR_DB_FAIL']);
346
+                } else {
347
+                    sugar_die("Database error. Please check suitecrm.log for details.");
348
+                }
349
+            } else {
350
+                $this->last_error = $message;
351
+            }
352
+        }
353
+    }
354
+
355
+    /**
356
+     * Return DB error message for the last query executed
357
+     * @return string Last error message
358
+     */
359
+    public function lastError()
360
+    {
361
+        return $this->last_error;
362
+    }
363
+
364
+    /**
365
+     * This method is called by every method that runs a query.
366
+     * If slow query dumping is turned on and the query time is beyond
367
+     * the time limit, we will log the query. This function may do
368
+     * additional reporting or log in a different area in the future.
369
+     *
370
+     * @param  string  $query query to log
371
+     * @return boolean true if the query was logged, false otherwise
372
+     */
373
+    protected function dump_slow_queries($query)
374
+    {
375
+        global $sugar_config;
376
+
377
+        $do_the_dump = isset($sugar_config['dump_slow_queries'])
378
+            ? $sugar_config['dump_slow_queries'] : false;
379
+        $slow_query_time_msec = isset($sugar_config['slow_query_time_msec'])
380
+            ? $sugar_config['slow_query_time_msec'] : 5000;
381
+
382
+        if($do_the_dump) {
383
+            if($slow_query_time_msec < ($this->query_time * 1000)) {
384
+                // Then log both the query and the query time
385
+                $this->log->fatal('Slow Query (time:'.$this->query_time."\n".$query);
386
+                return true;
387
+            }
388
+        }
389
+        return false;
390
+    }
391 391
 
392 392
 /**
393
-	* Scans order by to ensure that any field being ordered by is.
394
-	*
395
-	* It will throw a warning error to the log file - fatal if slow query logging is enabled
396
-	*
397
-	* @param  string $sql         query to be run
398
-	* @param  bool   $object_name optional, object to look up indices in
399
-	* @return bool   true if an index is found false otherwise
400
-	*/
393
+ * Scans order by to ensure that any field being ordered by is.
394
+ *
395
+ * It will throw a warning error to the log file - fatal if slow query logging is enabled
396
+ *
397
+ * @param  string $sql         query to be run
398
+ * @param  bool   $object_name optional, object to look up indices in
399
+ * @return bool   true if an index is found false otherwise
400
+ */
401 401
 protected function checkQuery($sql, $object_name = false)
402 402
 {
403
-	$match = array();
404
-	preg_match_all("'.* FROM ([^ ]*).* ORDER BY (.*)'is", $sql, $match);
405
-	$indices = false;
406
-	if (!empty($match[1][0]))
407
-		$table = $match[1][0];
408
-	else
409
-		return false;
410
-
411
-	if (!empty($object_name) && !empty($GLOBALS['dictionary'][$object_name]))
412
-		$indices = $GLOBALS['dictionary'][$object_name]['indices'];
413
-
414
-	if (empty($indices)) {
415
-		foreach ( $GLOBALS['dictionary'] as $current ) {
416
-			if ($current['table'] == $table){
417
-				$indices = $current['indices'];
418
-				break;
419
-			}
420
-		}
421
-	}
422
-	if (empty($indices)) {
423
-		$this->log->warn('CHECK QUERY: Could not find index definitions for table ' . $table);
424
-		return false;
425
-	}
426
-	if (!empty($match[2][0])) {
427
-		$orderBys = explode(' ', $match[2][0]);
428
-		foreach ($orderBys as $orderBy){
429
-			$orderBy = trim($orderBy);
430
-			if (empty($orderBy))
431
-				continue;
432
-			$orderBy = strtolower($orderBy);
433
-			if ($orderBy == 'asc' || $orderBy == 'desc')
434
-				continue;
435
-
436
-			$orderBy = str_replace(array($table . '.', ','), '', $orderBy);
437
-
438
-			foreach ($indices as $index)
439
-				if (empty($index['db']) || $index['db'] == $this->dbType)
440
-					foreach ($index['fields'] as $field)
441
-						if ($field == $orderBy)
442
-							return true;
443
-
444
-			$warning = 'Missing Index For Order By Table: ' . $table . ' Order By:' . $orderBy ;
445
-			if (!empty($GLOBALS['sugar_config']['dump_slow_queries']))
446
-				$this->log->fatal('CHECK QUERY:' .$warning);
447
-			else
448
-				$this->log->warn('CHECK QUERY:' .$warning);
449
-		}
450
-	}
451
-	return false;
452
-	}
453
-
454
-	/**
455
-	 * Returns the time the last query took to execute
456
-	 *
457
-	 * @return int
458
-	 */
459
-	public function getQueryTime()
460
-	{
461
-		return $this->query_time;
462
-	}
463
-
464
-	/**
465
-	 * Checks the current connection; if it is not connected then reconnect
466
-	 */
467
-	public function checkConnection()
468
-	{
469
-		$this->last_error = '';
470
-		if (!isset($this->database))
471
-			$this->connect();
472
-	}
473
-
474
-	/**
475
-	 * Sets the dieOnError value
476
-	 *
477
-	 * @param bool $value
478
-	 */
479
-	public function setDieOnError($value)
480
-	{
481
-		$this->dieOnError = $value;
482
-	}
403
+    $match = array();
404
+    preg_match_all("'.* FROM ([^ ]*).* ORDER BY (.*)'is", $sql, $match);
405
+    $indices = false;
406
+    if (!empty($match[1][0]))
407
+        $table = $match[1][0];
408
+    else
409
+        return false;
410
+
411
+    if (!empty($object_name) && !empty($GLOBALS['dictionary'][$object_name]))
412
+        $indices = $GLOBALS['dictionary'][$object_name]['indices'];
413
+
414
+    if (empty($indices)) {
415
+        foreach ( $GLOBALS['dictionary'] as $current ) {
416
+            if ($current['table'] == $table){
417
+                $indices = $current['indices'];
418
+                break;
419
+            }
420
+        }
421
+    }
422
+    if (empty($indices)) {
423
+        $this->log->warn('CHECK QUERY: Could not find index definitions for table ' . $table);
424
+        return false;
425
+    }
426
+    if (!empty($match[2][0])) {
427
+        $orderBys = explode(' ', $match[2][0]);
428
+        foreach ($orderBys as $orderBy){
429
+            $orderBy = trim($orderBy);
430
+            if (empty($orderBy))
431
+                continue;
432
+            $orderBy = strtolower($orderBy);
433
+            if ($orderBy == 'asc' || $orderBy == 'desc')
434
+                continue;
435
+
436
+            $orderBy = str_replace(array($table . '.', ','), '', $orderBy);
437
+
438
+            foreach ($indices as $index)
439
+                if (empty($index['db']) || $index['db'] == $this->dbType)
440
+                    foreach ($index['fields'] as $field)
441
+                        if ($field == $orderBy)
442
+                            return true;
443
+
444
+            $warning = 'Missing Index For Order By Table: ' . $table . ' Order By:' . $orderBy ;
445
+            if (!empty($GLOBALS['sugar_config']['dump_slow_queries']))
446
+                $this->log->fatal('CHECK QUERY:' .$warning);
447
+            else
448
+                $this->log->warn('CHECK QUERY:' .$warning);
449
+        }
450
+    }
451
+    return false;
452
+    }
453
+
454
+    /**
455
+     * Returns the time the last query took to execute
456
+     *
457
+     * @return int
458
+     */
459
+    public function getQueryTime()
460
+    {
461
+        return $this->query_time;
462
+    }
463
+
464
+    /**
465
+     * Checks the current connection; if it is not connected then reconnect
466
+     */
467
+    public function checkConnection()
468
+    {
469
+        $this->last_error = '';
470
+        if (!isset($this->database))
471
+            $this->connect();
472
+    }
473
+
474
+    /**
475
+     * Sets the dieOnError value
476
+     *
477
+     * @param bool $value
478
+     */
479
+    public function setDieOnError($value)
480
+    {
481
+        $this->dieOnError = $value;
482
+    }
483 483
 
484 484
     /**
485 485
      * Implements a generic insert for any bean.
@@ -488,67 +488,67 @@  discard block
 block discarded – undo
488 488
      * @return bool query result
489 489
      *
490 490
      */
491
-	public function insert(SugarBean $bean)
492
-	{
493
-		$sql = $this->insertSQL($bean);
494
-		$tablename =  $bean->getTableName();
495
-		$msg = "Error inserting into table: $tablename:";
496
-		return $this->query($sql,true,$msg);
497
-	}
498
-
499
-	/**
500
-	 * Insert data into table by parameter definition
501
-	 * @param string $table Table name
502
-	 * @param array $field_defs Definitions in vardef-like format
503
-	 * @param array $data Key/value to insert
504
-	 * @param array $field_map Fields map from SugarBean
505
-	 * @param bool $execute Execute or return query?
491
+    public function insert(SugarBean $bean)
492
+    {
493
+        $sql = $this->insertSQL($bean);
494
+        $tablename =  $bean->getTableName();
495
+        $msg = "Error inserting into table: $tablename:";
496
+        return $this->query($sql,true,$msg);
497
+    }
498
+
499
+    /**
500
+     * Insert data into table by parameter definition
501
+     * @param string $table Table name
502
+     * @param array $field_defs Definitions in vardef-like format
503
+     * @param array $data Key/value to insert
504
+     * @param array $field_map Fields map from SugarBean
505
+     * @param bool $execute Execute or return query?
506 506
      * @return bool query result
507 507
      */
508
-	public function insertParams($table, $field_defs, $data, $field_map = null, $execute = true)
509
-	{
510
-		$values = array();
511
-		foreach ($field_defs as $field => $fieldDef)
512
-		{
513
-			if (isset($fieldDef['source']) && $fieldDef['source'] != 'db')  continue;
514
-			//custom fields handle there save seperatley
515
-			if(!empty($field_map) && !empty($field_map[$field]['custom_type'])) continue;
516
-
517
-			if(isset($data[$field])) {
518
-				// clean the incoming value..
519
-				$val = from_html($data[$field]);
520
-			} else {
521
-				if(isset($fieldDef['default']) && strlen($fieldDef['default']) > 0) {
522
-					$val = $fieldDef['default'];
523
-				} else {
524
-					$val = null;
525
-				}
526
-			}
527
-
528
-			//handle auto increment values here - we may have to do something like nextval for oracle
529
-			if (!empty($fieldDef['auto_increment'])) {
530
-				$auto = $this->getAutoIncrementSQL($table, $fieldDef['name']);
531
-				if(!empty($auto)) {
532
-					$values[$field] = $auto;
533
-				}
534
-			} elseif ($fieldDef['name'] == 'deleted') {
535
-				$values['deleted'] = (int)$val;
536
-			} else {
537
-				// need to do some thing about types of values
538
-				if(!is_null($val) || !empty($fieldDef['required'])) {
539
-					$values[$field] = $this->massageValue($val, $fieldDef);
540
-				}
541
-			}
542
-		}
543
-
544
-		if (empty($values))
545
-			return $execute?true:''; // no columns set
546
-
547
-		// get the entire sql
548
-		$query = "INSERT INTO $table (".implode(",", array_keys($values)).")
508
+    public function insertParams($table, $field_defs, $data, $field_map = null, $execute = true)
509
+    {
510
+        $values = array();
511
+        foreach ($field_defs as $field => $fieldDef)
512
+        {
513
+            if (isset($fieldDef['source']) && $fieldDef['source'] != 'db')  continue;
514
+            //custom fields handle there save seperatley
515
+            if(!empty($field_map) && !empty($field_map[$field]['custom_type'])) continue;
516
+
517
+            if(isset($data[$field])) {
518
+                // clean the incoming value..
519
+                $val = from_html($data[$field]);
520
+            } else {
521
+                if(isset($fieldDef['default']) && strlen($fieldDef['default']) > 0) {
522
+                    $val = $fieldDef['default'];
523
+                } else {
524
+                    $val = null;
525
+                }
526
+            }
527
+
528
+            //handle auto increment values here - we may have to do something like nextval for oracle
529
+            if (!empty($fieldDef['auto_increment'])) {
530
+                $auto = $this->getAutoIncrementSQL($table, $fieldDef['name']);
531
+                if(!empty($auto)) {
532
+                    $values[$field] = $auto;
533
+                }
534
+            } elseif ($fieldDef['name'] == 'deleted') {
535
+                $values['deleted'] = (int)$val;
536
+            } else {
537
+                // need to do some thing about types of values
538
+                if(!is_null($val) || !empty($fieldDef['required'])) {
539
+                    $values[$field] = $this->massageValue($val, $fieldDef);
540
+                }
541
+            }
542
+        }
543
+
544
+        if (empty($values))
545
+            return $execute?true:''; // no columns set
546
+
547
+        // get the entire sql
548
+        $query = "INSERT INTO $table (".implode(",", array_keys($values)).")
549 549
 					VALUES (".implode(",", $values).")";
550
-		return $execute?$this->query($query):$query;
551
-	}
550
+        return $execute?$this->query($query):$query;
551
+    }
552 552
 
553 553
     /**
554 554
      * Implements a generic update for any bean
@@ -560,13 +560,13 @@  discard block
 block discarded – undo
560 560
      * @return bool query result
561 561
      *
562 562
      */
563
-	public function update(SugarBean $bean, array $where = array())
564
-	{
565
-		$sql = $this->updateSQL($bean, $where);
566
-		$tablename = $bean->getTableName();
567
-		$msg = "Error updating table: $tablename:";
568
-		return $this->query($sql,true,$msg);
569
-	}
563
+    public function update(SugarBean $bean, array $where = array())
564
+    {
565
+        $sql = $this->updateSQL($bean, $where);
566
+        $tablename = $bean->getTableName();
567
+        $msg = "Error updating table: $tablename:";
568
+        return $this->query($sql,true,$msg);
569
+    }
570 570
 
571 571
     /**
572 572
      * Implements a generic delete for any bean identified by id
@@ -577,215 +577,215 @@  discard block
 block discarded – undo
577 577
      * If where is not passed, it defaults to id of table
578 578
      * @return bool query result
579 579
      */
580
-	public function delete(SugarBean $bean, array $where = array())
581
-	{
582
-		$sql = $this->deleteSQL($bean, $where);
583
-		$tableName = $bean->getTableName();
584
-		$msg = "Error deleting from table: ".$tableName. ":";
585
-		return $this->query($sql,true,$msg);
586
-	}
587
-
588
-	/**
589
-	 * Implements a generic retrieve for any bean identified by id
590
-	 *
591
-	 * If we want to pass multiple values for a name, pass it as an array
592
-	 * If where is not passed, it defaults to id of table
593
-	 *
594
-	 * @param  SugarBean   $bean  Sugarbean instance
595
-	 * @param  array    $where values with the keys as names of fields.
596
-	 * @return resource result from the query
597
-	 */
598
-	public function retrieve(SugarBean $bean, array $where = array())
599
-	{
600
-		$sql = $this->retrieveSQL($bean, $where);
601
-		$tableName = $bean->getTableName();
602
-		$msg = "Error retriving values from table:".$tableName. ":";
603
-		return $this->query($sql,true,$msg);
604
-	}
605
-
606
-	/**
607
-	 * Implements a generic retrieve for a collection of beans.
608
-	 *
609
-	 * These beans will be joined in the sql by the key attribute of field defs.
610
-	 * Currently, this function does support outer joins.
611
-	 *
612
-	 * @param  array $beans Sugarbean instance(s)
613
-	 * @param  array $cols  columns to be returned with the keys as names of bean as identified by
614
-	 * get_class of bean. Values of this array is the array of fieldDefs to be returned for a bean.
615
-	 * If an empty array is passed, all columns are selected.
616
-	 * @param  array $where  values with the keys as names of bean as identified by get_class of bean
617
-	 * Each value at the first level is an array of values for that bean identified by name of fields.
618
-	 * If we want to pass multiple values for a name, pass it as an array
619
-	 * If where is not passed, all the rows will be returned.
620
-	 * @return resource
621
-	 */
622
-	public function retrieveView(array $beans, array $cols = array(), array $where = array())
623
-	{
624
-		$sql = $this->retrieveViewSQL($beans, $cols, $where);
625
-		$msg = "Error retriving values from View Collection:";
626
-		return $this->query($sql,true,$msg);
627
-	}
628
-
629
-
630
-	/**
631
-	 * Implements creation of a db table for a bean.
632
-	 *
633
-	 * NOTE: does not handle out-of-table constraints, use createConstraintSQL for that
634
-	 * @param SugarBean $bean  Sugarbean instance
635
-	 */
636
-	public function createTable(SugarBean $bean)
637
-	{
638
-		$sql = $this->createTableSQL($bean);
639
-		$tablename = $bean->getTableName();
640
-		$msg = "Error creating table: $tablename:";
641
-		$this->query($sql,true,$msg);
642
-		if(!$this->supports("inline_keys")) {
643
-		// handle constraints and indices
644
-			$indicesArr = $this->createConstraintSql($bean);
645
-			if (count($indicesArr) > 0)
646
-				foreach ($indicesArr as $indexSql)
647
-					$this->query($indexSql, true, $msg);
648
-		}
649
-	}
650
-
651
-	/**
652
-	 * returns SQL to create constraints or indices
653
-	 *
654
-	 * @param  SugarBean $bean SugarBean instance
655
-	 * @return array list of SQL statements
656
-	 */
657
-	protected function createConstraintSql(SugarBean $bean)
658
-	{
659
-		return $this->getConstraintSql($bean->getIndices(), $bean->getTableName());
660
-	}
661
-
662
-	/**
663
-	 * Implements creation of a db table
664
-	 *
665
-	 * @param string $tablename
666
-	 * @param array  $fieldDefs  Field definitions, in vardef format
667
-	 * @param array  $indices    Index definitions, in vardef format
668
-	 * @param string $engine    Engine parameter, used for MySQL engine so far
580
+    public function delete(SugarBean $bean, array $where = array())
581
+    {
582
+        $sql = $this->deleteSQL($bean, $where);
583
+        $tableName = $bean->getTableName();
584
+        $msg = "Error deleting from table: ".$tableName. ":";
585
+        return $this->query($sql,true,$msg);
586
+    }
587
+
588
+    /**
589
+     * Implements a generic retrieve for any bean identified by id
590
+     *
591
+     * If we want to pass multiple values for a name, pass it as an array
592
+     * If where is not passed, it defaults to id of table
593
+     *
594
+     * @param  SugarBean   $bean  Sugarbean instance
595
+     * @param  array    $where values with the keys as names of fields.
596
+     * @return resource result from the query
597
+     */
598
+    public function retrieve(SugarBean $bean, array $where = array())
599
+    {
600
+        $sql = $this->retrieveSQL($bean, $where);
601
+        $tableName = $bean->getTableName();
602
+        $msg = "Error retriving values from table:".$tableName. ":";
603
+        return $this->query($sql,true,$msg);
604
+    }
605
+
606
+    /**
607
+     * Implements a generic retrieve for a collection of beans.
608
+     *
609
+     * These beans will be joined in the sql by the key attribute of field defs.
610
+     * Currently, this function does support outer joins.
611
+     *
612
+     * @param  array $beans Sugarbean instance(s)
613
+     * @param  array $cols  columns to be returned with the keys as names of bean as identified by
614
+     * get_class of bean. Values of this array is the array of fieldDefs to be returned for a bean.
615
+     * If an empty array is passed, all columns are selected.
616
+     * @param  array $where  values with the keys as names of bean as identified by get_class of bean
617
+     * Each value at the first level is an array of values for that bean identified by name of fields.
618
+     * If we want to pass multiple values for a name, pass it as an array
619
+     * If where is not passed, all the rows will be returned.
620
+     * @return resource
621
+     */
622
+    public function retrieveView(array $beans, array $cols = array(), array $where = array())
623
+    {
624
+        $sql = $this->retrieveViewSQL($beans, $cols, $where);
625
+        $msg = "Error retriving values from View Collection:";
626
+        return $this->query($sql,true,$msg);
627
+    }
628
+
629
+
630
+    /**
631
+     * Implements creation of a db table for a bean.
632
+     *
633
+     * NOTE: does not handle out-of-table constraints, use createConstraintSQL for that
634
+     * @param SugarBean $bean  Sugarbean instance
635
+     */
636
+    public function createTable(SugarBean $bean)
637
+    {
638
+        $sql = $this->createTableSQL($bean);
639
+        $tablename = $bean->getTableName();
640
+        $msg = "Error creating table: $tablename:";
641
+        $this->query($sql,true,$msg);
642
+        if(!$this->supports("inline_keys")) {
643
+        // handle constraints and indices
644
+            $indicesArr = $this->createConstraintSql($bean);
645
+            if (count($indicesArr) > 0)
646
+                foreach ($indicesArr as $indexSql)
647
+                    $this->query($indexSql, true, $msg);
648
+        }
649
+    }
650
+
651
+    /**
652
+     * returns SQL to create constraints or indices
653
+     *
654
+     * @param  SugarBean $bean SugarBean instance
655
+     * @return array list of SQL statements
656
+     */
657
+    protected function createConstraintSql(SugarBean $bean)
658
+    {
659
+        return $this->getConstraintSql($bean->getIndices(), $bean->getTableName());
660
+    }
661
+
662
+    /**
663
+     * Implements creation of a db table
664
+     *
665
+     * @param string $tablename
666
+     * @param array  $fieldDefs  Field definitions, in vardef format
667
+     * @param array  $indices    Index definitions, in vardef format
668
+     * @param string $engine    Engine parameter, used for MySQL engine so far
669 669
      * @todo: refactor engine param to be more generic
670 670
      * @return bool success value
671 671
      */
672
-	public function createTableParams($tablename, $fieldDefs, $indices, $engine = null)
673
-	{
674
-		if (!empty($fieldDefs)) {
675
-			$sql = $this->createTableSQLParams($tablename, $fieldDefs, $indices, $engine);
676
-			$res = true;
677
-			if ($sql) {
678
-				$msg = "Error creating table: $tablename";
679
-				$res = ($res and $this->query($sql,true,$msg));
680
-			}
681
-			if(!$this->supports("inline_keys")) {
682
-				// handle constraints and indices
683
-				$indicesArr = $this->getConstraintSql($indices, $tablename);
684
-				if (count($indicesArr) > 0)
685
-					foreach ($indicesArr as $indexSql)
686
-						$res = ($res and $this->query($indexSql, true, "Error creating indexes"));
687
-			}
688
-			return $res;
689
-		}
690
-		return false;
691
-	}
692
-
693
-	/**
694
-	 * Implements repair of a db table for a bean.
695
-	 *
696
-	 * @param  SugarBean $bean    SugarBean instance
697
-	 * @param  bool   $execute true if we want the action to take place, false if we just want the sql returned
698
-	 * @return string SQL statement or empty string, depending upon $execute
699
-	 */
700
-	public function repairTable(SugarBean $bean, $execute = true)
701
-	{
702
-		$indices   = $bean->getIndices();
703
-		$fielddefs = $bean->getFieldDefinitions();
704
-		$tablename = $bean->getTableName();
705
-
706
-		//Clean the indexes to prevent duplicate definitions
707
-		$new_index = array();
708
-		foreach($indices as $ind_def){
709
-			$new_index[$ind_def['name']] = $ind_def;
710
-		}
711
-		//jc: added this for beans that do not actually have a table, namely
712
-		//ForecastOpportunities
713
-		if($tablename == 'does_not_exist' || $tablename == '')
714
-			return '';
715
-
716
-		global $dictionary;
717
-		$engine=null;
718
-		if (isset($dictionary[$bean->getObjectName()]['engine']) && !empty($dictionary[$bean->getObjectName()]['engine']) )
719
-			$engine = $dictionary[$bean->getObjectName()]['engine'];
720
-
721
-		return $this->repairTableParams($tablename, $fielddefs,$new_index,$execute,$engine);
722
-	}
723
-
724
-	/**
725
-	 * Can this field be null?
726
-	 * Auto-increment and ID fields can not be null
727
-	 * @param array $vardef
672
+    public function createTableParams($tablename, $fieldDefs, $indices, $engine = null)
673
+    {
674
+        if (!empty($fieldDefs)) {
675
+            $sql = $this->createTableSQLParams($tablename, $fieldDefs, $indices, $engine);
676
+            $res = true;
677
+            if ($sql) {
678
+                $msg = "Error creating table: $tablename";
679
+                $res = ($res and $this->query($sql,true,$msg));
680
+            }
681
+            if(!$this->supports("inline_keys")) {
682
+                // handle constraints and indices
683
+                $indicesArr = $this->getConstraintSql($indices, $tablename);
684
+                if (count($indicesArr) > 0)
685
+                    foreach ($indicesArr as $indexSql)
686
+                        $res = ($res and $this->query($indexSql, true, "Error creating indexes"));
687
+            }
688
+            return $res;
689
+        }
690
+        return false;
691
+    }
692
+
693
+    /**
694
+     * Implements repair of a db table for a bean.
695
+     *
696
+     * @param  SugarBean $bean    SugarBean instance
697
+     * @param  bool   $execute true if we want the action to take place, false if we just want the sql returned
698
+     * @return string SQL statement or empty string, depending upon $execute
699
+     */
700
+    public function repairTable(SugarBean $bean, $execute = true)
701
+    {
702
+        $indices   = $bean->getIndices();
703
+        $fielddefs = $bean->getFieldDefinitions();
704
+        $tablename = $bean->getTableName();
705
+
706
+        //Clean the indexes to prevent duplicate definitions
707
+        $new_index = array();
708
+        foreach($indices as $ind_def){
709
+            $new_index[$ind_def['name']] = $ind_def;
710
+        }
711
+        //jc: added this for beans that do not actually have a table, namely
712
+        //ForecastOpportunities
713
+        if($tablename == 'does_not_exist' || $tablename == '')
714
+            return '';
715
+
716
+        global $dictionary;
717
+        $engine=null;
718
+        if (isset($dictionary[$bean->getObjectName()]['engine']) && !empty($dictionary[$bean->getObjectName()]['engine']) )
719
+            $engine = $dictionary[$bean->getObjectName()]['engine'];
720
+
721
+        return $this->repairTableParams($tablename, $fielddefs,$new_index,$execute,$engine);
722
+    }
723
+
724
+    /**
725
+     * Can this field be null?
726
+     * Auto-increment and ID fields can not be null
727
+     * @param array $vardef
728 728
      * @return bool
729 729
      */
730
-	protected function isNullable($vardef)
731
-	{
732
-
733
-		if(isset($vardef['isnull']) && (strtolower($vardef['isnull']) == 'false' || $vardef['isnull'] === false)
734
-			&& !empty($vardef['required'])) {
735
-				/* required + is_null=false => not null */
736
-			return false;
737
-		}
738
-		if(empty($vardef['auto_increment']) && (empty($vardef['type']) || $vardef['type'] != 'id')
739
-					&& (empty($vardef['dbType']) || $vardef['dbType'] != 'id')
740
-					&& (empty($vardef['name']) || ($vardef['name'] != 'id' && $vardef['name'] != 'deleted'))
741
-		) {
742
-			return true;
743
-		}
744
-		return false;
745
-	}
746
-
747
-
748
-	/**
749
-	 * Builds the SQL commands that repair a table structure
750
-	 *
751
-	 * @param  string $tablename
752
-	 * @param  array  $fielddefs Field definitions, in vardef format
753
-	 * @param  array  $indices   Index definitions, in vardef format
754
-	 * @param  bool   $execute   optional, true if we want the queries executed instead of returned
755
-	 * @param  string $engine    optional, MySQL engine
730
+    protected function isNullable($vardef)
731
+    {
732
+
733
+        if(isset($vardef['isnull']) && (strtolower($vardef['isnull']) == 'false' || $vardef['isnull'] === false)
734
+            && !empty($vardef['required'])) {
735
+                /* required + is_null=false => not null */
736
+            return false;
737
+        }
738
+        if(empty($vardef['auto_increment']) && (empty($vardef['type']) || $vardef['type'] != 'id')
739
+                    && (empty($vardef['dbType']) || $vardef['dbType'] != 'id')
740
+                    && (empty($vardef['name']) || ($vardef['name'] != 'id' && $vardef['name'] != 'deleted'))
741
+        ) {
742
+            return true;
743
+        }
744
+        return false;
745
+    }
746
+
747
+
748
+    /**
749
+     * Builds the SQL commands that repair a table structure
750
+     *
751
+     * @param  string $tablename
752
+     * @param  array  $fielddefs Field definitions, in vardef format
753
+     * @param  array  $indices   Index definitions, in vardef format
754
+     * @param  bool   $execute   optional, true if we want the queries executed instead of returned
755
+     * @param  string $engine    optional, MySQL engine
756 756
      * @todo: refactor engine param to be more generic
757 757
      * @return string
758 758
      */
759
-	public function repairTableParams($tablename, $fielddefs,  $indices, $execute = true, $engine = null)
760
-	{
761
-		//jc: had a bug when running the repair if the tablename is blank the repair will
762
-		//fail when it tries to create a repair table
763
-		if ($tablename == '' || empty($fielddefs))
764
-			return '';
765
-
766
-		//if the table does not exist create it and we are done
767
-		$sql = "/* Table : $tablename */\n";
768
-		if (!$this->tableExists($tablename)) {
769
-			$createtablesql = $this->createTableSQLParams($tablename,$fielddefs,$indices,$engine);
770
-			if($execute && $createtablesql){
771
-				$this->createTableParams($tablename,$fielddefs,$indices,$engine);
772
-			}
773
-
774
-			$sql .= "/* MISSING TABLE: {$tablename} */\n";
775
-			$sql .= $createtablesql . "\n";
776
-			return $sql;
777
-		}
778
-
779
-		$compareFieldDefs = $this->get_columns($tablename);
780
-		$compareIndices = $this->get_indices($tablename);
781
-
782
-		$take_action = false;
783
-
784
-		// do column comparisons
785
-		$sql .=	"/*COLUMNS*/\n";
786
-		foreach ($fielddefs as $name => $value) {
787
-			if (isset($value['source']) && $value['source'] != 'db')
788
-				continue;
759
+    public function repairTableParams($tablename, $fielddefs,  $indices, $execute = true, $engine = null)
760
+    {
761
+        //jc: had a bug when running the repair if the tablename is blank the repair will
762
+        //fail when it tries to create a repair table
763
+        if ($tablename == '' || empty($fielddefs))
764
+            return '';
765
+
766
+        //if the table does not exist create it and we are done
767
+        $sql = "/* Table : $tablename */\n";
768
+        if (!$this->tableExists($tablename)) {
769
+            $createtablesql = $this->createTableSQLParams($tablename,$fielddefs,$indices,$engine);
770
+            if($execute && $createtablesql){
771
+                $this->createTableParams($tablename,$fielddefs,$indices,$engine);
772
+            }
773
+
774
+            $sql .= "/* MISSING TABLE: {$tablename} */\n";
775
+            $sql .= $createtablesql . "\n";
776
+            return $sql;
777
+        }
778
+
779
+        $compareFieldDefs = $this->get_columns($tablename);
780
+        $compareIndices = $this->get_indices($tablename);
781
+
782
+        $take_action = false;
783
+
784
+        // do column comparisons
785
+        $sql .=	"/*COLUMNS*/\n";
786
+        foreach ($fielddefs as $name => $value) {
787
+            if (isset($value['source']) && $value['source'] != 'db')
788
+                continue;
789 789
 
790 790
             // Bug #42406. Skipping breaked vardef without type or name
791 791
             if (isset($value['name']) == false || $value['name'] == false)
@@ -799,183 +799,183 @@  discard block
 block discarded – undo
799 799
                 continue;
800 800
             }
801 801
 
802
-			$name = strtolower($value['name']);
803
-			// add or fix the field defs per what the DB is expected to give us back
804
-			$this->massageFieldDef($value,$tablename);
805
-
806
-			$ignorerequired=false;
807
-
808
-			//Do not track requiredness in the DB, auto_increment, ID,
809
-			// and deleted fields are always required in the DB, so don't force those
810
-			if ($this->isNullable($value)) {
811
-				$value['required'] = false;
812
-			}
813
-			//Should match the conditions in DBManager::oneColumnSQLRep for DB required fields, type='id' fields will sometimes
814
-
815
-			//come into this function as 'type' = 'char', 'dbType' = 'id' without required set in $value. Assume they are correct and leave them alone.
816
-			else if (($name == 'id' || $value['type'] == 'id' || (isset($value['dbType']) && $value['dbType'] == 'id'))
817
-				&& (!isset($value['required']) && isset($compareFieldDefs[$name]['required'])))
818
-			{
819
-				$value['required'] = $compareFieldDefs[$name]['required'];
820
-			}
821
-
822
-			if ( !isset($compareFieldDefs[$name]) ) {
823
-				// ok we need this field lets create it
824
-				$sql .=	"/*MISSING IN DATABASE - $name -  ROW*/\n";
825
-				$sql .= $this->addColumnSQL($tablename, $value) .  "\n";
826
-				if ($execute)
827
-					$this->addColumn($tablename, $value);
828
-				$take_action = true;
829
-			} elseif ( !$this->compareVarDefs($compareFieldDefs[$name],$value)) {
830
-				//fields are different lets alter it
831
-				$sql .=	"/*MISMATCH WITH DATABASE - $name -  ROW ";
832
-				foreach($compareFieldDefs[$name] as $rKey => $rValue) {
833
-					$sql .=	"[$rKey] => '$rValue'  ";
834
-				}
835
-				$sql .=	"*/\n";
836
-				$sql .=	"/* VARDEF - $name -  ROW";
837
-				foreach($value as $rKey => $rValue) {
838
-					$sql .=	"[$rKey] => '$rValue'  ";
839
-				}
840
-				$sql .=	"*/\n";
841
-
842
-				//jc: oracle will complain if you try to execute a statement that sets a column to (not) null
843
-				//when it is already (not) null
844
-				if ( isset($value['isnull']) && isset($compareFieldDefs[$name]['isnull']) &&
845
-					$value['isnull'] === $compareFieldDefs[$name]['isnull']) {
846
-					unset($value['required']);
847
-					$ignorerequired=true;
848
-				}
849
-
850
-				//dwheeler: Once a column has been defined as null, we cannot try to force it back to !null
851
-				if ((isset($value['required']) && ($value['required'] === true || $value['required'] == 'true' || $value['required'] === 1))
852
-					&& (empty($compareFieldDefs[$name]['required']) || $compareFieldDefs[$name]['required'] != 'true'))
853
-				{
854
-					$ignorerequired = true;
855
-				}
856
-				$altersql = $this->alterColumnSQL($tablename, $value,$ignorerequired);
857
-				if(is_array($altersql)) {
858
-					$altersql = join("\n", $altersql);
859
-				}
860
-				$sql .= $altersql .  "\n";
861
-				if($execute){
862
-					$this->alterColumn($tablename, $value, $ignorerequired);
863
-				}
864
-				$take_action = true;
865
-			}
866
-		}
867
-
868
-		// do index comparisons
869
-		$sql .=	"/* INDEXES */\n";
870
-		$correctedIndexs = array();
802
+            $name = strtolower($value['name']);
803
+            // add or fix the field defs per what the DB is expected to give us back
804
+            $this->massageFieldDef($value,$tablename);
871 805
 
872
-        $compareIndices_case_insensitive = array();
806
+            $ignorerequired=false;
873 807
 
874
-		// do indices comparisons case-insensitive
875
-		foreach($compareIndices as $k => $value){
876
-			$value['name'] = strtolower($value['name']);
877
-			$compareIndices_case_insensitive[strtolower($k)] = $value;
878
-		}
879
-		$compareIndices = $compareIndices_case_insensitive;
880
-		unset($compareIndices_case_insensitive);
881
-
882
-		foreach ($indices as $value) {
883
-			if (isset($value['source']) && $value['source'] != 'db')
884
-				continue;
885
-
886
-
887
-			$validDBName = $this->getValidDBName($value['name'], true, 'index', true);
888
-			if (isset($compareIndices[$validDBName])) {
889
-				$value['name'] = $validDBName;
890
-			}
891
-		    $name = strtolower($value['name']);
892
-
893
-			//Don't attempt to fix the same index twice in one pass;
894
-			if (isset($correctedIndexs[$name]))
895
-				continue;
896
-
897
-			//don't bother checking primary nothing we can do about them
898
-			if (isset($value['type']) && $value['type'] == 'primary')
899
-				continue;
900
-
901
-			//database helpers do not know how to handle full text indices
902
-			if ($value['type']=='fulltext')
903
-				continue;
904
-
905
-			if ( in_array($value['type'],array('alternate_key','foreign')) )
906
-				$value['type'] = 'index';
907
-
908
-			if ( !isset($compareIndices[$name]) ) {
909
-				//First check if an index exists that doesn't match our name, if so, try to rename it
910
-				$found = false;
911
-				foreach ($compareIndices as $ex_name => $ex_value) {
912
-					if($this->compareVarDefs($ex_value, $value, true)) {
913
-						$found = $ex_name;
914
-						break;
915
-					}
916
-				}
917
-				if ($found) {
918
-					$sql .=	 "/*MISSNAMED INDEX IN DATABASE - $name - $ex_name */\n";
919
-					$rename = $this->renameIndexDefs($ex_value, $value, $tablename);
920
-					if($execute) {
921
-						$this->query($rename, true, "Cannot rename index");
922
-					}
923
-					$sql .= is_array($rename)?join("\n", $rename). "\n":$rename."\n";
924
-
925
-				} else {
926
-					// ok we need this field lets create it
927
-					$sql .=	 "/*MISSING INDEX IN DATABASE - $name -{$value['type']}  ROW */\n";
928
-					$sql .= $this->addIndexes($tablename,array($value), $execute) .  "\n";
929
-				}
930
-				$take_action = true;
931
-				$correctedIndexs[$name] = true;
932
-			} elseif ( !$this->compareVarDefs($compareIndices[$name],$value) ) {
933
-				// fields are different lets alter it
934
-				$sql .=	"/*INDEX MISMATCH WITH DATABASE - $name -  ROW ";
935
-				foreach ($compareIndices[$name] as $n1 => $t1) {
936
-					$sql .=	 "<$n1>";
937
-					if ( $n1 == 'fields' )
938
-						foreach($t1 as $rKey => $rValue)
939
-							$sql .= "[$rKey] => '$rValue'  ";
940
-					else
941
-						$sql .= " $t1 ";
942
-				}
943
-				$sql .=	"*/\n";
944
-				$sql .=	"/* VARDEF - $name -  ROW";
945
-				foreach ($value as $n1 => $t1) {
946
-					$sql .=	"<$n1>";
947
-					if ( $n1 == 'fields' )
948
-						foreach ($t1 as $rKey => $rValue)
949
-							$sql .=	"[$rKey] => '$rValue'  ";
950
-					else
951
-						$sql .= " $t1 ";
952
-				}
953
-				$sql .=	"*/\n";
954
-				$sql .= $this->modifyIndexes($tablename,array($value), $execute) .  "\n";
955
-				$take_action = true;
956
-				$correctedIndexs[$name] = true;
957
-			}
958
-		}
959
-
960
-		return ($take_action === true) ? $sql : '';
961
-	}
808
+            //Do not track requiredness in the DB, auto_increment, ID,
809
+            // and deleted fields are always required in the DB, so don't force those
810
+            if ($this->isNullable($value)) {
811
+                $value['required'] = false;
812
+            }
813
+            //Should match the conditions in DBManager::oneColumnSQLRep for DB required fields, type='id' fields will sometimes
962 814
 
963
-    /**
964
-     * Compares two vardefs
965
-     *
966
-     * @param  array  $fielddef1 This is from the database
967
-     * @param  array  $fielddef2 This is from the vardef
968
-     * @param bool $ignoreName Ignore name-only differences?
969
-     * @return bool   true if they match, false if they don't
970
-     */
971
-	public function compareVarDefs($fielddef1, $fielddef2, $ignoreName = false)
972
-	{
973
-		foreach ( $fielddef1 as $key => $value ) {
974
-			if ($key == 'name' && $ignoreName)
975
-				continue;
976
-            if (isset($fielddef2[$key]))
815
+            //come into this function as 'type' = 'char', 'dbType' = 'id' without required set in $value. Assume they are correct and leave them alone.
816
+            else if (($name == 'id' || $value['type'] == 'id' || (isset($value['dbType']) && $value['dbType'] == 'id'))
817
+                && (!isset($value['required']) && isset($compareFieldDefs[$name]['required'])))
977 818
             {
978
-                if (!is_array($fielddef1[$key]) && !is_array($fielddef2[$key]))
819
+                $value['required'] = $compareFieldDefs[$name]['required'];
820
+            }
821
+
822
+            if ( !isset($compareFieldDefs[$name]) ) {
823
+                // ok we need this field lets create it
824
+                $sql .=	"/*MISSING IN DATABASE - $name -  ROW*/\n";
825
+                $sql .= $this->addColumnSQL($tablename, $value) .  "\n";
826
+                if ($execute)
827
+                    $this->addColumn($tablename, $value);
828
+                $take_action = true;
829
+            } elseif ( !$this->compareVarDefs($compareFieldDefs[$name],$value)) {
830
+                //fields are different lets alter it
831
+                $sql .=	"/*MISMATCH WITH DATABASE - $name -  ROW ";
832
+                foreach($compareFieldDefs[$name] as $rKey => $rValue) {
833
+                    $sql .=	"[$rKey] => '$rValue'  ";
834
+                }
835
+                $sql .=	"*/\n";
836
+                $sql .=	"/* VARDEF - $name -  ROW";
837
+                foreach($value as $rKey => $rValue) {
838
+                    $sql .=	"[$rKey] => '$rValue'  ";
839
+                }
840
+                $sql .=	"*/\n";
841
+
842
+                //jc: oracle will complain if you try to execute a statement that sets a column to (not) null
843
+                //when it is already (not) null
844
+                if ( isset($value['isnull']) && isset($compareFieldDefs[$name]['isnull']) &&
845
+                    $value['isnull'] === $compareFieldDefs[$name]['isnull']) {
846
+                    unset($value['required']);
847
+                    $ignorerequired=true;
848
+                }
849
+
850
+                //dwheeler: Once a column has been defined as null, we cannot try to force it back to !null
851
+                if ((isset($value['required']) && ($value['required'] === true || $value['required'] == 'true' || $value['required'] === 1))
852
+                    && (empty($compareFieldDefs[$name]['required']) || $compareFieldDefs[$name]['required'] != 'true'))
853
+                {
854
+                    $ignorerequired = true;
855
+                }
856
+                $altersql = $this->alterColumnSQL($tablename, $value,$ignorerequired);
857
+                if(is_array($altersql)) {
858
+                    $altersql = join("\n", $altersql);
859
+                }
860
+                $sql .= $altersql .  "\n";
861
+                if($execute){
862
+                    $this->alterColumn($tablename, $value, $ignorerequired);
863
+                }
864
+                $take_action = true;
865
+            }
866
+        }
867
+
868
+        // do index comparisons
869
+        $sql .=	"/* INDEXES */\n";
870
+        $correctedIndexs = array();
871
+
872
+        $compareIndices_case_insensitive = array();
873
+
874
+        // do indices comparisons case-insensitive
875
+        foreach($compareIndices as $k => $value){
876
+            $value['name'] = strtolower($value['name']);
877
+            $compareIndices_case_insensitive[strtolower($k)] = $value;
878
+        }
879
+        $compareIndices = $compareIndices_case_insensitive;
880
+        unset($compareIndices_case_insensitive);
881
+
882
+        foreach ($indices as $value) {
883
+            if (isset($value['source']) && $value['source'] != 'db')
884
+                continue;
885
+
886
+
887
+            $validDBName = $this->getValidDBName($value['name'], true, 'index', true);
888
+            if (isset($compareIndices[$validDBName])) {
889
+                $value['name'] = $validDBName;
890
+            }
891
+            $name = strtolower($value['name']);
892
+
893
+            //Don't attempt to fix the same index twice in one pass;
894
+            if (isset($correctedIndexs[$name]))
895
+                continue;
896
+
897
+            //don't bother checking primary nothing we can do about them
898
+            if (isset($value['type']) && $value['type'] == 'primary')
899
+                continue;
900
+
901
+            //database helpers do not know how to handle full text indices
902
+            if ($value['type']=='fulltext')
903
+                continue;
904
+
905
+            if ( in_array($value['type'],array('alternate_key','foreign')) )
906
+                $value['type'] = 'index';
907
+
908
+            if ( !isset($compareIndices[$name]) ) {
909
+                //First check if an index exists that doesn't match our name, if so, try to rename it
910
+                $found = false;
911
+                foreach ($compareIndices as $ex_name => $ex_value) {
912
+                    if($this->compareVarDefs($ex_value, $value, true)) {
913
+                        $found = $ex_name;
914
+                        break;
915
+                    }
916
+                }
917
+                if ($found) {
918
+                    $sql .=	 "/*MISSNAMED INDEX IN DATABASE - $name - $ex_name */\n";
919
+                    $rename = $this->renameIndexDefs($ex_value, $value, $tablename);
920
+                    if($execute) {
921
+                        $this->query($rename, true, "Cannot rename index");
922
+                    }
923
+                    $sql .= is_array($rename)?join("\n", $rename). "\n":$rename."\n";
924
+
925
+                } else {
926
+                    // ok we need this field lets create it
927
+                    $sql .=	 "/*MISSING INDEX IN DATABASE - $name -{$value['type']}  ROW */\n";
928
+                    $sql .= $this->addIndexes($tablename,array($value), $execute) .  "\n";
929
+                }
930
+                $take_action = true;
931
+                $correctedIndexs[$name] = true;
932
+            } elseif ( !$this->compareVarDefs($compareIndices[$name],$value) ) {
933
+                // fields are different lets alter it
934
+                $sql .=	"/*INDEX MISMATCH WITH DATABASE - $name -  ROW ";
935
+                foreach ($compareIndices[$name] as $n1 => $t1) {
936
+                    $sql .=	 "<$n1>";
937
+                    if ( $n1 == 'fields' )
938
+                        foreach($t1 as $rKey => $rValue)
939
+                            $sql .= "[$rKey] => '$rValue'  ";
940
+                    else
941
+                        $sql .= " $t1 ";
942
+                }
943
+                $sql .=	"*/\n";
944
+                $sql .=	"/* VARDEF - $name -  ROW";
945
+                foreach ($value as $n1 => $t1) {
946
+                    $sql .=	"<$n1>";
947
+                    if ( $n1 == 'fields' )
948
+                        foreach ($t1 as $rKey => $rValue)
949
+                            $sql .=	"[$rKey] => '$rValue'  ";
950
+                    else
951
+                        $sql .= " $t1 ";
952
+                }
953
+                $sql .=	"*/\n";
954
+                $sql .= $this->modifyIndexes($tablename,array($value), $execute) .  "\n";
955
+                $take_action = true;
956
+                $correctedIndexs[$name] = true;
957
+            }
958
+        }
959
+
960
+        return ($take_action === true) ? $sql : '';
961
+    }
962
+
963
+    /**
964
+     * Compares two vardefs
965
+     *
966
+     * @param  array  $fielddef1 This is from the database
967
+     * @param  array  $fielddef2 This is from the vardef
968
+     * @param bool $ignoreName Ignore name-only differences?
969
+     * @return bool   true if they match, false if they don't
970
+     */
971
+    public function compareVarDefs($fielddef1, $fielddef2, $ignoreName = false)
972
+    {
973
+        foreach ( $fielddef1 as $key => $value ) {
974
+            if ($key == 'name' && $ignoreName)
975
+                continue;
976
+            if (isset($fielddef2[$key]))
977
+            {
978
+                if (!is_array($fielddef1[$key]) && !is_array($fielddef2[$key]))
979 979
                 {
980 980
                     if (strtolower($fielddef1[$key]) == strtolower($fielddef2[$key]))
981 981
                     {
@@ -990,64 +990,64 @@  discard block
 block discarded – undo
990 990
                     }
991 991
                 }
992 992
             }
993
-			//Ignore len if its not set in the vardef
994
-			if ($key == 'len' && empty($fielddef2[$key]))
995
-				continue;
993
+            //Ignore len if its not set in the vardef
994
+            if ($key == 'len' && empty($fielddef2[$key]))
995
+                continue;
996 996
             // if the length in db is greather than the vardef, ignore it
997 997
             if ($key == 'len' && ($fielddef1[$key] >= $fielddef2[$key])) {
998 998
                 continue;
999 999
             }
1000
-			return false;
1001
-		}
1002
-
1003
-		return true;
1004
-	}
1005
-
1006
-	/**
1007
-	 * Compare a field in two tables
1008
-	 * @deprecated
1009
-	 * @param  string $name   field name
1010
-	 * @param  string $table1
1011
-	 * @param  string $table2
1012
-	 * @return array  array with keys 'msg','table1','table2'
1013
-	 */
1014
-	public function compareFieldInTables($name, $table1, $table2)
1015
-	{
1016
-		$row1 = $this->describeField($name, $table1);
1017
-		$row2 = $this->describeField($name, $table2);
1018
-		$returnArray = array(
1019
-			'table1' => $row1,
1020
-			'table2' => $row2,
1021
-			'msg'    => 'error',
1022
-			);
1023
-
1024
-		$ignore_filter = array('Key'=>1);
1025
-		if ($row1) {
1026
-			if (!$row2) {
1027
-				// Exists on table1 but not table2
1028
-				$returnArray['msg'] = 'not_exists_table2';
1029
-			}
1030
-			else {
1031
-				if (sizeof($row1) != sizeof($row2)) {
1032
-					$returnArray['msg'] = 'no_match';
1033
-				}
1034
-				else {
1035
-					$returnArray['msg'] = 'match';
1036
-					foreach($row1 as $key => $value){
1037
-						//ignore keys when checking we will check them when we do the index check
1038
-						if( !isset($ignore_filter[$key]) && (!isset($row2[$key]) || $row1[$key] !== $row2[$key])){
1039
-							$returnArray['msg'] = 'no_match';
1040
-						}
1041
-					}
1042
-				}
1043
-			}
1044
-		}
1045
-		else {
1046
-			$returnArray['msg'] = 'not_exists_table1';
1047
-		}
1048
-
1049
-		return $returnArray;
1050
-	}
1000
+            return false;
1001
+        }
1002
+
1003
+        return true;
1004
+    }
1005
+
1006
+    /**
1007
+     * Compare a field in two tables
1008
+     * @deprecated
1009
+     * @param  string $name   field name
1010
+     * @param  string $table1
1011
+     * @param  string $table2
1012
+     * @return array  array with keys 'msg','table1','table2'
1013
+     */
1014
+    public function compareFieldInTables($name, $table1, $table2)
1015
+    {
1016
+        $row1 = $this->describeField($name, $table1);
1017
+        $row2 = $this->describeField($name, $table2);
1018
+        $returnArray = array(
1019
+            'table1' => $row1,
1020
+            'table2' => $row2,
1021
+            'msg'    => 'error',
1022
+            );
1023
+
1024
+        $ignore_filter = array('Key'=>1);
1025
+        if ($row1) {
1026
+            if (!$row2) {
1027
+                // Exists on table1 but not table2
1028
+                $returnArray['msg'] = 'not_exists_table2';
1029
+            }
1030
+            else {
1031
+                if (sizeof($row1) != sizeof($row2)) {
1032
+                    $returnArray['msg'] = 'no_match';
1033
+                }
1034
+                else {
1035
+                    $returnArray['msg'] = 'match';
1036
+                    foreach($row1 as $key => $value){
1037
+                        //ignore keys when checking we will check them when we do the index check
1038
+                        if( !isset($ignore_filter[$key]) && (!isset($row2[$key]) || $row1[$key] !== $row2[$key])){
1039
+                            $returnArray['msg'] = 'no_match';
1040
+                        }
1041
+                    }
1042
+                }
1043
+            }
1044
+        }
1045
+        else {
1046
+            $returnArray['msg'] = 'not_exists_table1';
1047
+        }
1048
+
1049
+        return $returnArray;
1050
+    }
1051 1051
 //
1052 1052
 //    /**
1053 1053
 //     * Compare an index in two different tables
@@ -1097,193 +1097,193 @@  discard block
 block discarded – undo
1097 1097
 //    }
1098 1098
 
1099 1099
 
1100
-	/**
1101
-	 * Creates an index identified by name on the given fields.
1102
-	 *
1103
-	 * @param SugarBean $bean      SugarBean instance
1104
-	 * @param array  $fieldDefs Field definitions, in vardef format
1105
-	 * @param string $name      index name
1106
-	 * @param bool   $unique    optional, true if we want to create an unique index
1100
+    /**
1101
+     * Creates an index identified by name on the given fields.
1102
+     *
1103
+     * @param SugarBean $bean      SugarBean instance
1104
+     * @param array  $fieldDefs Field definitions, in vardef format
1105
+     * @param string $name      index name
1106
+     * @param bool   $unique    optional, true if we want to create an unique index
1107 1107
      * @return bool query result
1108 1108
      */
1109
-	public function createIndex(SugarBean $bean, $fieldDefs, $name, $unique = true)
1110
-	{
1111
-		$sql = $this->createIndexSQL($bean, $fieldDefs, $name, $unique);
1112
-		$tablename = $bean->getTableName();
1113
-		$msg = "Error creating index $name on table: $tablename:";
1114
-		return $this->query($sql,true,$msg);
1115
-	}
1116
-
1117
-	/**
1118
-	 * returns a SQL query that creates the indices as defined in metadata
1119
-	 * @param  array  $indices Assoc array with index definitions from vardefs
1120
-	 * @param  string $table Focus table
1121
-	 * @return array  Array of SQL queries to generate indices
1122
-	 */
1123
-	public function getConstraintSql($indices, $table)
1124
-	{
1125
-		if (!$this->isFieldArray($indices))
1126
-			$indices = array($indices);
1127
-
1128
-		$columns = array();
1129
-
1130
-		foreach ($indices as $index) {
1131
-			if(!empty($index['db']) && $index['db'] != $this->dbType)
1132
-				continue;
1133
-			if (isset($index['source']) && $index['source'] != 'db')
1134
-			continue;
1135
-
1136
-			$sql = $this->add_drop_constraint($table, $index);
1137
-
1138
-			if(!empty($sql)) {
1139
-				$columns[] = $sql;
1140
-			}
1141
-		}
1142
-
1143
-		return $columns;
1144
-	}
1145
-
1146
-	/**
1147
-	 * Adds a new indexes
1148
-	 *
1149
-	 * @param  string $tablename
1150
-	 * @param  array  $indexes   indexes to add
1151
-	 * @param  bool   $execute   true if we want to execute the returned sql statement
1152
-	 * @return string SQL statement
1153
-	 */
1154
-	public function addIndexes($tablename, $indexes, $execute = true)
1155
-	{
1156
-		$alters = $this->getConstraintSql($indexes, $tablename);
1157
-		if ($execute) {
1158
-			foreach($alters as $sql) {
1159
-				$this->query($sql, true, "Error adding index: ");
1160
-			}
1161
-		}
1162
-		if(!empty($alters)) {
1163
-			$sql = join(";\n", $alters).";\n";
1164
-		} else {
1165
-			$sql = '';
1166
-		}
1167
-		return $sql;
1168
-	}
1169
-
1170
-	/**
1171
-	 * Drops indexes
1172
-	 *
1173
-	 * @param  string $tablename
1174
-	 * @param  array  $indexes   indexes to drop
1175
-	 * @param  bool   $execute   true if we want to execute the returned sql statement
1176
-	 * @return string SQL statement
1177
-	 */
1178
-	public function dropIndexes($tablename, $indexes, $execute = true)
1179
-	{
1180
-		$sqls = array();
1181
-		foreach ($indexes as $index) {
1182
-			$name =$index['name'];
1183
-			$sqls[$name] = $this->add_drop_constraint($tablename,$index,true);
1184
-		}
1185
-		if (!empty($sqls) && $execute) {
1186
-			foreach($sqls as $name => $sql) {
1187
-				unset(self::$index_descriptions[$tablename][$name]);
1188
-				$this->query($sql);
1189
-			}
1190
-		}
1191
-		if(!empty($sqls)) {
1192
-			return join(";\n",$sqls).";";
1193
-		} else {
1194
-			return '';
1195
-		}
1196
-	}
1197
-
1198
-	/**
1199
-	 * Modifies indexes
1200
-	 *
1201
-	 * @param  string $tablename
1202
-	 * @param  array  $indexes   indexes to modify
1203
-	 * @param  bool   $execute   true if we want to execute the returned sql statement
1204
-	 * @return string SQL statement
1205
-	 */
1206
-	public function modifyIndexes($tablename, $indexes, $execute = true)
1207
-	{
1208
-		return $this->dropIndexes($tablename, $indexes, $execute)."\n".
1209
-			$this->addIndexes($tablename, $indexes, $execute);
1210
-	}
1211
-
1212
-	/**
1213
-	 * Adds a column to table identified by field def.
1214
-	 *
1215
-	 * @param string $tablename
1216
-	 * @param array  $fieldDefs
1109
+    public function createIndex(SugarBean $bean, $fieldDefs, $name, $unique = true)
1110
+    {
1111
+        $sql = $this->createIndexSQL($bean, $fieldDefs, $name, $unique);
1112
+        $tablename = $bean->getTableName();
1113
+        $msg = "Error creating index $name on table: $tablename:";
1114
+        return $this->query($sql,true,$msg);
1115
+    }
1116
+
1117
+    /**
1118
+     * returns a SQL query that creates the indices as defined in metadata
1119
+     * @param  array  $indices Assoc array with index definitions from vardefs
1120
+     * @param  string $table Focus table
1121
+     * @return array  Array of SQL queries to generate indices
1122
+     */
1123
+    public function getConstraintSql($indices, $table)
1124
+    {
1125
+        if (!$this->isFieldArray($indices))
1126
+            $indices = array($indices);
1127
+
1128
+        $columns = array();
1129
+
1130
+        foreach ($indices as $index) {
1131
+            if(!empty($index['db']) && $index['db'] != $this->dbType)
1132
+                continue;
1133
+            if (isset($index['source']) && $index['source'] != 'db')
1134
+            continue;
1135
+
1136
+            $sql = $this->add_drop_constraint($table, $index);
1137
+
1138
+            if(!empty($sql)) {
1139
+                $columns[] = $sql;
1140
+            }
1141
+        }
1142
+
1143
+        return $columns;
1144
+    }
1145
+
1146
+    /**
1147
+     * Adds a new indexes
1148
+     *
1149
+     * @param  string $tablename
1150
+     * @param  array  $indexes   indexes to add
1151
+     * @param  bool   $execute   true if we want to execute the returned sql statement
1152
+     * @return string SQL statement
1153
+     */
1154
+    public function addIndexes($tablename, $indexes, $execute = true)
1155
+    {
1156
+        $alters = $this->getConstraintSql($indexes, $tablename);
1157
+        if ($execute) {
1158
+            foreach($alters as $sql) {
1159
+                $this->query($sql, true, "Error adding index: ");
1160
+            }
1161
+        }
1162
+        if(!empty($alters)) {
1163
+            $sql = join(";\n", $alters).";\n";
1164
+        } else {
1165
+            $sql = '';
1166
+        }
1167
+        return $sql;
1168
+    }
1169
+
1170
+    /**
1171
+     * Drops indexes
1172
+     *
1173
+     * @param  string $tablename
1174
+     * @param  array  $indexes   indexes to drop
1175
+     * @param  bool   $execute   true if we want to execute the returned sql statement
1176
+     * @return string SQL statement
1177
+     */
1178
+    public function dropIndexes($tablename, $indexes, $execute = true)
1179
+    {
1180
+        $sqls = array();
1181
+        foreach ($indexes as $index) {
1182
+            $name =$index['name'];
1183
+            $sqls[$name] = $this->add_drop_constraint($tablename,$index,true);
1184
+        }
1185
+        if (!empty($sqls) && $execute) {
1186
+            foreach($sqls as $name => $sql) {
1187
+                unset(self::$index_descriptions[$tablename][$name]);
1188
+                $this->query($sql);
1189
+            }
1190
+        }
1191
+        if(!empty($sqls)) {
1192
+            return join(";\n",$sqls).";";
1193
+        } else {
1194
+            return '';
1195
+        }
1196
+    }
1197
+
1198
+    /**
1199
+     * Modifies indexes
1200
+     *
1201
+     * @param  string $tablename
1202
+     * @param  array  $indexes   indexes to modify
1203
+     * @param  bool   $execute   true if we want to execute the returned sql statement
1204
+     * @return string SQL statement
1205
+     */
1206
+    public function modifyIndexes($tablename, $indexes, $execute = true)
1207
+    {
1208
+        return $this->dropIndexes($tablename, $indexes, $execute)."\n".
1209
+            $this->addIndexes($tablename, $indexes, $execute);
1210
+    }
1211
+
1212
+    /**
1213
+     * Adds a column to table identified by field def.
1214
+     *
1215
+     * @param string $tablename
1216
+     * @param array  $fieldDefs
1217 1217
      * @return bool query result
1218 1218
      */
1219
-	public function addColumn($tablename, $fieldDefs)
1220
-	{
1221
-		$sql = $this->addColumnSQL($tablename, $fieldDefs);
1222
-		if ($this->isFieldArray($fieldDefs)){
1223
-			$columns = array();
1224
-			foreach ($fieldDefs as $fieldDef)
1225
-				$columns[] = $fieldDef['name'];
1226
-			$columns = implode(",", $columns);
1227
-		}
1228
-		else {
1229
-			$columns = $fieldDefs['name'];
1230
-		}
1231
-		$msg = "Error adding column(s) $columns on table: $tablename:";
1232
-		return $this->query($sql,true,$msg);
1233
-	}
1234
-
1235
-	/**
1236
-	 * Alters old column identified by oldFieldDef to new fieldDef.
1237
-	 *
1238
-	 * @param string $tablename
1239
-	 * @param array  $newFieldDef
1240
-	 * @param bool   $ignoreRequired optional, true if we are ignoring this being a required field
1219
+    public function addColumn($tablename, $fieldDefs)
1220
+    {
1221
+        $sql = $this->addColumnSQL($tablename, $fieldDefs);
1222
+        if ($this->isFieldArray($fieldDefs)){
1223
+            $columns = array();
1224
+            foreach ($fieldDefs as $fieldDef)
1225
+                $columns[] = $fieldDef['name'];
1226
+            $columns = implode(",", $columns);
1227
+        }
1228
+        else {
1229
+            $columns = $fieldDefs['name'];
1230
+        }
1231
+        $msg = "Error adding column(s) $columns on table: $tablename:";
1232
+        return $this->query($sql,true,$msg);
1233
+    }
1234
+
1235
+    /**
1236
+     * Alters old column identified by oldFieldDef to new fieldDef.
1237
+     *
1238
+     * @param string $tablename
1239
+     * @param array  $newFieldDef
1240
+     * @param bool   $ignoreRequired optional, true if we are ignoring this being a required field
1241 1241
      * @return bool query result
1242 1242
      */
1243
-	public function alterColumn($tablename, $newFieldDef, $ignoreRequired = false)
1244
-	{
1245
-		$sql = $this->alterColumnSQL($tablename, $newFieldDef,$ignoreRequired);
1246
-		if ($this->isFieldArray($newFieldDef)){
1247
-			$columns = array();
1248
-			foreach ($newFieldDef as $fieldDef) {
1249
-				$columns[] = $fieldDef['name'];
1250
-			}
1251
-			$columns = implode(",", $columns);
1252
-		}
1253
-		else {
1254
-			$columns = $newFieldDef['name'];
1255
-		}
1256
-
1257
-		$msg = "Error altering column(s) $columns on table: $tablename:";
1258
-		$res = $this->query($sql,true,$msg);
1259
-		if($res) {
1260
-			$this->getTableDescription($tablename, true); // reload table description after altering
1261
-		}
1262
-		return $res;
1263
-	}
1264
-
1265
-	/**
1266
-	 * Drops the table associated with a bean
1267
-	 *
1268
-	 * @param SugarBean $bean SugarBean instance
1243
+    public function alterColumn($tablename, $newFieldDef, $ignoreRequired = false)
1244
+    {
1245
+        $sql = $this->alterColumnSQL($tablename, $newFieldDef,$ignoreRequired);
1246
+        if ($this->isFieldArray($newFieldDef)){
1247
+            $columns = array();
1248
+            foreach ($newFieldDef as $fieldDef) {
1249
+                $columns[] = $fieldDef['name'];
1250
+            }
1251
+            $columns = implode(",", $columns);
1252
+        }
1253
+        else {
1254
+            $columns = $newFieldDef['name'];
1255
+        }
1256
+
1257
+        $msg = "Error altering column(s) $columns on table: $tablename:";
1258
+        $res = $this->query($sql,true,$msg);
1259
+        if($res) {
1260
+            $this->getTableDescription($tablename, true); // reload table description after altering
1261
+        }
1262
+        return $res;
1263
+    }
1264
+
1265
+    /**
1266
+     * Drops the table associated with a bean
1267
+     *
1268
+     * @param SugarBean $bean SugarBean instance
1269 1269
      * @return bool query result
1270
-	 */
1271
-	public function dropTable(SugarBean $bean)
1272
-	{
1273
-		return $this->dropTableName($bean->getTableName());
1274
-	}
1275
-
1276
-	/**
1277
-	 * Drops the table by name
1278
-	 *
1279
-	 * @param string $name Table name
1270
+     */
1271
+    public function dropTable(SugarBean $bean)
1272
+    {
1273
+        return $this->dropTableName($bean->getTableName());
1274
+    }
1275
+
1276
+    /**
1277
+     * Drops the table by name
1278
+     *
1279
+     * @param string $name Table name
1280 1280
      * @return bool query result
1281
-	 */
1282
-	public function dropTableName($name)
1283
-	{
1284
-		$sql = $this->dropTableNameSQL($name);
1285
-		return $this->query($sql,true,"Error dropping table $name:");
1286
-	}
1281
+     */
1282
+    public function dropTableName($name)
1283
+    {
1284
+        $sql = $this->dropTableNameSQL($name);
1285
+        return $this->query($sql,true,"Error dropping table $name:");
1286
+    }
1287 1287
 
1288 1288
     /**
1289 1289
      * Deletes a column identified by fieldDef.
@@ -1292,13 +1292,13 @@  discard block
 block discarded – undo
1292 1292
      * @param array  $fieldDefs Vardef definition of the field
1293 1293
      * @return bool query result
1294 1294
      */
1295
-	public function deleteColumn(SugarBean $bean, $fieldDefs)
1296
-	{
1297
-		$tablename = $bean->getTableName();
1298
-		$sql = $this->dropColumnSQL($tablename, $fieldDefs);
1299
-		$msg = "Error deleting column(s) on table: $tablename:";
1300
-		return $this->query($sql,true,$msg);
1301
-	}
1295
+    public function deleteColumn(SugarBean $bean, $fieldDefs)
1296
+    {
1297
+        $tablename = $bean->getTableName();
1298
+        $sql = $this->dropColumnSQL($tablename, $fieldDefs);
1299
+        $msg = "Error deleting column(s) on table: $tablename:";
1300
+        return $this->query($sql,true,$msg);
1301
+    }
1302 1302
 
1303 1303
     /**
1304 1304
      * Generate a set of Insert statements based on the bean given
@@ -1313,228 +1313,228 @@  discard block
 block discarded – undo
1313 1313
      * @param bool $is_related_query
1314 1314
      * @return string SQL insert statement
1315 1315
      */
1316
-	public function generateInsertSQL(SugarBean $bean, $select_query, $start, $count = -1, $table, $is_related_query = false)
1317
-	{
1318
-		$this->log->info('call to DBManager::generateInsertSQL() is deprecated');
1319
-		global $sugar_config;
1320
-
1321
-		$rows_found = 0;
1322
-		$count_query = $bean->create_list_count_query($select_query);
1323
-		if(!empty($count_query))
1324
-		{
1325
-			// We have a count query.  Run it and get the results.
1326
-			$result = $this->query($count_query, true, "Error running count query for $this->object_name List: ");
1327
-			$assoc = $this->fetchByAssoc($result);
1328
-			if(!empty($assoc['c']))
1329
-			{
1330
-				$rows_found = $assoc['c'];
1331
-			}
1332
-		}
1333
-		if($count == -1){
1334
-			$count 	= $sugar_config['list_max_entries_per_page'];
1335
-		}
1336
-		$next_offset = $start + $count;
1337
-
1338
-		$result = $this->limitQuery($select_query, $start, $count);
1339
-		// get basic insert
1340
-		$sql = "INSERT INTO ".$table;
1341
-		$custom_sql = "INSERT INTO ".$table."_cstm";
1342
-
1343
-		// get field definitions
1344
-		$fields = $bean->getFieldDefinitions();
1345
-		$custom_fields = array();
1346
-
1347
-		if($bean->hasCustomFields()){
1348
-			foreach ($fields as $fieldDef){
1349
-				if($fieldDef['source'] == 'custom_fields'){
1350
-					$custom_fields[$fieldDef['name']] = $fieldDef['name'];
1351
-				}
1352
-			}
1353
-			if(!empty($custom_fields)){
1354
-				$custom_fields['id_c'] = 'id_c';
1355
-				$id_field = array('name' => 'id_c', 'custom_type' => 'id',);
1356
-				$fields[] = $id_field;
1357
-			}
1358
-		}
1359
-
1360
-		// get column names and values
1361
-		$row_array = array();
1362
-		$columns = array();
1363
-		$cstm_row_array = array();
1364
-		$cstm_columns = array();
1365
-		$built_columns = false;
1366
-		while(($row = $this->fetchByAssoc($result)) != null)
1367
-		{
1368
-			$values = array();
1369
-			$cstm_values = array();
1370
-			if(!$is_related_query){
1371
-				foreach ($fields as $fieldDef)
1372
-				{
1373
-					if(isset($fieldDef['source']) && $fieldDef['source'] != 'db' && $fieldDef['source'] != 'custom_fields') continue;
1374
-					$val = $row[$fieldDef['name']];
1375
-
1376
-					//handle auto increment values here only need to do this on insert not create
1377
-					if ($fieldDef['name'] == 'deleted'){
1378
-							$values['deleted'] = $val;
1379
-							if(!$built_columns){
1380
-							$columns[] = 'deleted';
1381
-						}
1382
-					}
1383
-					else
1384
-					{
1385
-						$type = $fieldDef['type'];
1386
-						if(!empty($fieldDef['custom_type'])){
1387
-							$type = $fieldDef['custom_type'];
1388
-						}
1389
-						// need to do some thing about types of values
1390
-						if($this->dbType == 'mysql' && $val == '' && ($type == 'datetime' ||  $type == 'date' || $type == 'int' || $type == 'currency' || $type == 'decimal')){
1391
-							if(!empty($custom_fields[$fieldDef['name']]))
1392
-								$cstm_values[$fieldDef['name']] = 'null';
1393
-							else
1394
-								$values[$fieldDef['name']] = 'null';
1395
-						}else{
1396
-							if(isset($type) && $type=='int') {
1397
-								if(!empty($custom_fields[$fieldDef['name']]))
1398
-									$cstm_values[$fieldDef['name']] = $GLOBALS['db']->quote(from_html($val));
1399
-								else
1400
-									$values[$fieldDef['name']] = $GLOBALS['db']->quote(from_html($val));
1401
-							} else {
1402
-								if(!empty($custom_fields[$fieldDef['name']]))
1403
-									$cstm_values[$fieldDef['name']] = "'".$GLOBALS['db']->quote(from_html($val))."'";
1404
-								else
1405
-									$values[$fieldDef['name']] = "'".$GLOBALS['db']->quote(from_html($val))."'";
1406
-							}
1407
-						}
1408
-						if(!$built_columns){
1409
-							if(!empty($custom_fields[$fieldDef['name']]))
1410
-								$cstm_columns[] = $fieldDef['name'];
1411
-							else
1412
-								$columns[] = $fieldDef['name'];
1413
-						}
1414
-					}
1415
-
1416
-				}
1417
-			} else {
1418
-			foreach ($row as $key=>$val)
1419
-			{
1420
-					if($key != 'orc_row'){
1421
-						$values[$key] = "'$val'";
1422
-						if(!$built_columns){
1423
-							$columns[] = $key;
1424
-						}
1425
-					}
1426
-			}
1427
-			}
1428
-			$built_columns = true;
1429
-			if(!empty($values)){
1430
-				$row_array[] = $values;
1431
-			}
1432
-			if(!empty($cstm_values) && !empty($cstm_values['id_c']) && (strlen($cstm_values['id_c']) > 7)){
1433
-				$cstm_row_array[] = $cstm_values;
1434
-			}
1435
-		}
1436
-
1437
-		//if (sizeof ($values) == 0) return ""; // no columns set
1438
-
1439
-		// get the entire sql
1440
-		$sql .= "(".implode(",", $columns).") ";
1441
-		$sql .= "VALUES";
1442
-		for($i = 0; $i < count($row_array); $i++){
1443
-			$sql .= " (".implode(",", $row_array[$i]).")";
1444
-			if($i < (count($row_array) - 1)){
1445
-				$sql .= ", ";
1446
-			}
1447
-		}
1448
-		//custom
1449
-		// get the entire sql
1450
-		$custom_sql .= "(".implode(",", $cstm_columns).") ";
1451
-		$custom_sql .= "VALUES";
1452
-
1453
-		for($i = 0; $i < count($cstm_row_array); $i++){
1454
-			$custom_sql .= " (".implode(",", $cstm_row_array[$i]).")";
1455
-			if($i < (count($cstm_row_array) - 1)){
1456
-				$custom_sql .= ", ";
1457
-			}
1458
-		}
1459
-		return array('data' => $sql, 'cstm_sql' => $custom_sql, /*'result_count' => $row_count, */ 'total_count' => $rows_found, 'next_offset' => $next_offset);
1460
-	}
1461
-
1462
-	/**
1463
-	 * @deprecated
1464
-	 * Disconnects all instances
1465
-	 */
1466
-	public function disconnectAll()
1467
-	{
1468
-		DBManagerFactory::disconnectAll();
1469
-	}
1470
-
1471
-	/**
1472
-	 * This function sets the query threshold limit
1473
-	 *
1474
-	 * @param int $limit value of query threshold limit
1475
-	 */
1476
-	public static function setQueryLimit($limit)
1477
-	{
1478
-		//reset the queryCount
1479
-		self::$queryCount = 0;
1480
-		self::$queryLimit = $limit;
1481
-	}
1482
-
1483
-	/**
1484
-	 * Returns the static queryCount value
1485
-	 *
1486
-	 * @return int value of the queryCount static variable
1487
-	 */
1488
-	public static function getQueryCount()
1489
-	{
1490
-		return self::$queryCount;
1491
-	}
1492
-
1493
-
1494
-	/**
1495
-	 * Resets the queryCount value to 0
1496
-	 *
1497
-	 */
1498
-	public static function resetQueryCount()
1499
-	{
1500
-		self::$queryCount = 0;
1501
-	}
1502
-
1503
-	/**
1504
-	 * This function increments the global $sql_queries variable
1505
-	 */
1506
-	public function countQuery()
1507
-	{
1508
-		if (self::$queryLimit != 0 && ++self::$queryCount > self::$queryLimit
1509
-			&&(empty($GLOBALS['current_user']) || !is_admin($GLOBALS['current_user']))) {
1316
+    public function generateInsertSQL(SugarBean $bean, $select_query, $start, $count = -1, $table, $is_related_query = false)
1317
+    {
1318
+        $this->log->info('call to DBManager::generateInsertSQL() is deprecated');
1319
+        global $sugar_config;
1320
+
1321
+        $rows_found = 0;
1322
+        $count_query = $bean->create_list_count_query($select_query);
1323
+        if(!empty($count_query))
1324
+        {
1325
+            // We have a count query.  Run it and get the results.
1326
+            $result = $this->query($count_query, true, "Error running count query for $this->object_name List: ");
1327
+            $assoc = $this->fetchByAssoc($result);
1328
+            if(!empty($assoc['c']))
1329
+            {
1330
+                $rows_found = $assoc['c'];
1331
+            }
1332
+        }
1333
+        if($count == -1){
1334
+            $count 	= $sugar_config['list_max_entries_per_page'];
1335
+        }
1336
+        $next_offset = $start + $count;
1337
+
1338
+        $result = $this->limitQuery($select_query, $start, $count);
1339
+        // get basic insert
1340
+        $sql = "INSERT INTO ".$table;
1341
+        $custom_sql = "INSERT INTO ".$table."_cstm";
1342
+
1343
+        // get field definitions
1344
+        $fields = $bean->getFieldDefinitions();
1345
+        $custom_fields = array();
1346
+
1347
+        if($bean->hasCustomFields()){
1348
+            foreach ($fields as $fieldDef){
1349
+                if($fieldDef['source'] == 'custom_fields'){
1350
+                    $custom_fields[$fieldDef['name']] = $fieldDef['name'];
1351
+                }
1352
+            }
1353
+            if(!empty($custom_fields)){
1354
+                $custom_fields['id_c'] = 'id_c';
1355
+                $id_field = array('name' => 'id_c', 'custom_type' => 'id',);
1356
+                $fields[] = $id_field;
1357
+            }
1358
+        }
1359
+
1360
+        // get column names and values
1361
+        $row_array = array();
1362
+        $columns = array();
1363
+        $cstm_row_array = array();
1364
+        $cstm_columns = array();
1365
+        $built_columns = false;
1366
+        while(($row = $this->fetchByAssoc($result)) != null)
1367
+        {
1368
+            $values = array();
1369
+            $cstm_values = array();
1370
+            if(!$is_related_query){
1371
+                foreach ($fields as $fieldDef)
1372
+                {
1373
+                    if(isset($fieldDef['source']) && $fieldDef['source'] != 'db' && $fieldDef['source'] != 'custom_fields') continue;
1374
+                    $val = $row[$fieldDef['name']];
1375
+
1376
+                    //handle auto increment values here only need to do this on insert not create
1377
+                    if ($fieldDef['name'] == 'deleted'){
1378
+                            $values['deleted'] = $val;
1379
+                            if(!$built_columns){
1380
+                            $columns[] = 'deleted';
1381
+                        }
1382
+                    }
1383
+                    else
1384
+                    {
1385
+                        $type = $fieldDef['type'];
1386
+                        if(!empty($fieldDef['custom_type'])){
1387
+                            $type = $fieldDef['custom_type'];
1388
+                        }
1389
+                        // need to do some thing about types of values
1390
+                        if($this->dbType == 'mysql' && $val == '' && ($type == 'datetime' ||  $type == 'date' || $type == 'int' || $type == 'currency' || $type == 'decimal')){
1391
+                            if(!empty($custom_fields[$fieldDef['name']]))
1392
+                                $cstm_values[$fieldDef['name']] = 'null';
1393
+                            else
1394
+                                $values[$fieldDef['name']] = 'null';
1395
+                        }else{
1396
+                            if(isset($type) && $type=='int') {
1397
+                                if(!empty($custom_fields[$fieldDef['name']]))
1398
+                                    $cstm_values[$fieldDef['name']] = $GLOBALS['db']->quote(from_html($val));
1399
+                                else
1400
+                                    $values[$fieldDef['name']] = $GLOBALS['db']->quote(from_html($val));
1401
+                            } else {
1402
+                                if(!empty($custom_fields[$fieldDef['name']]))
1403
+                                    $cstm_values[$fieldDef['name']] = "'".$GLOBALS['db']->quote(from_html($val))."'";
1404
+                                else
1405
+                                    $values[$fieldDef['name']] = "'".$GLOBALS['db']->quote(from_html($val))."'";
1406
+                            }
1407
+                        }
1408
+                        if(!$built_columns){
1409
+                            if(!empty($custom_fields[$fieldDef['name']]))
1410
+                                $cstm_columns[] = $fieldDef['name'];
1411
+                            else
1412
+                                $columns[] = $fieldDef['name'];
1413
+                        }
1414
+                    }
1415
+
1416
+                }
1417
+            } else {
1418
+            foreach ($row as $key=>$val)
1419
+            {
1420
+                    if($key != 'orc_row'){
1421
+                        $values[$key] = "'$val'";
1422
+                        if(!$built_columns){
1423
+                            $columns[] = $key;
1424
+                        }
1425
+                    }
1426
+            }
1427
+            }
1428
+            $built_columns = true;
1429
+            if(!empty($values)){
1430
+                $row_array[] = $values;
1431
+            }
1432
+            if(!empty($cstm_values) && !empty($cstm_values['id_c']) && (strlen($cstm_values['id_c']) > 7)){
1433
+                $cstm_row_array[] = $cstm_values;
1434
+            }
1435
+        }
1436
+
1437
+        //if (sizeof ($values) == 0) return ""; // no columns set
1438
+
1439
+        // get the entire sql
1440
+        $sql .= "(".implode(",", $columns).") ";
1441
+        $sql .= "VALUES";
1442
+        for($i = 0; $i < count($row_array); $i++){
1443
+            $sql .= " (".implode(",", $row_array[$i]).")";
1444
+            if($i < (count($row_array) - 1)){
1445
+                $sql .= ", ";
1446
+            }
1447
+        }
1448
+        //custom
1449
+        // get the entire sql
1450
+        $custom_sql .= "(".implode(",", $cstm_columns).") ";
1451
+        $custom_sql .= "VALUES";
1452
+
1453
+        for($i = 0; $i < count($cstm_row_array); $i++){
1454
+            $custom_sql .= " (".implode(",", $cstm_row_array[$i]).")";
1455
+            if($i < (count($cstm_row_array) - 1)){
1456
+                $custom_sql .= ", ";
1457
+            }
1458
+        }
1459
+        return array('data' => $sql, 'cstm_sql' => $custom_sql, /*'result_count' => $row_count, */ 'total_count' => $rows_found, 'next_offset' => $next_offset);
1460
+    }
1461
+
1462
+    /**
1463
+     * @deprecated
1464
+     * Disconnects all instances
1465
+     */
1466
+    public function disconnectAll()
1467
+    {
1468
+        DBManagerFactory::disconnectAll();
1469
+    }
1470
+
1471
+    /**
1472
+     * This function sets the query threshold limit
1473
+     *
1474
+     * @param int $limit value of query threshold limit
1475
+     */
1476
+    public static function setQueryLimit($limit)
1477
+    {
1478
+        //reset the queryCount
1479
+        self::$queryCount = 0;
1480
+        self::$queryLimit = $limit;
1481
+    }
1482
+
1483
+    /**
1484
+     * Returns the static queryCount value
1485
+     *
1486
+     * @return int value of the queryCount static variable
1487
+     */
1488
+    public static function getQueryCount()
1489
+    {
1490
+        return self::$queryCount;
1491
+    }
1492
+
1493
+
1494
+    /**
1495
+     * Resets the queryCount value to 0
1496
+     *
1497
+     */
1498
+    public static function resetQueryCount()
1499
+    {
1500
+        self::$queryCount = 0;
1501
+    }
1502
+
1503
+    /**
1504
+     * This function increments the global $sql_queries variable
1505
+     */
1506
+    public function countQuery()
1507
+    {
1508
+        if (self::$queryLimit != 0 && ++self::$queryCount > self::$queryLimit
1509
+            &&(empty($GLOBALS['current_user']) || !is_admin($GLOBALS['current_user']))) {
1510 1510
             require_once('include/resource/ResourceManager.php');
1511 1511
             $resourceManager = ResourceManager::getInstance();
1512 1512
             $resourceManager->notifyObservers('ERR_QUERY_LIMIT');
1513
-		}
1514
-	}
1513
+        }
1514
+    }
1515
+
1516
+    /**
1517
+     * Pre-process string for quoting
1518
+     * @internal
1519
+     * @param string $string
1520
+     * @return string
1521
+     */
1522
+    protected function quoteInternal($string)
1523
+    {
1524
+        return from_html($string);
1525
+    }
1515 1526
 
1516
-	/**
1517
-	 * Pre-process string for quoting
1518
-	 * @internal
1519
-	 * @param string $string
1527
+    /**
1528
+     * Return string properly quoted with ''
1529
+     * @param string $string
1520 1530
      * @return string
1521 1531
      */
1522
-	protected function quoteInternal($string)
1523
-	{
1524
-		return from_html($string);
1525
-	}
1526
-
1527
-	/**
1528
-	 * Return string properly quoted with ''
1529
-	 * @param string $string
1530
-	 * @return string
1531
-	 */
1532
-	public function quoted($string)
1533
-	{
1534
-		return "'".$this->quote($string)."'";
1535
-	}
1536
-
1537
-	/**
1532
+    public function quoted($string)
1533
+    {
1534
+        return "'".$this->quote($string)."'";
1535
+    }
1536
+
1537
+    /**
1538 1538
      * Quote value according to type
1539 1539
      * Numerics aren't quoted
1540 1540
      * Dates are converted and quoted
@@ -1544,13 +1544,13 @@  discard block
 block discarded – undo
1544 1544
      * @return string Quoted value
1545 1545
      */
1546 1546
     public function quoteType($type, $value)
1547
-	{
1548
-	    if($type == 'date') {
1549
-	        return $this->convert($this->quoted($value), "date");
1550
-	    }
1551
-	    if($type == 'time') {
1552
-	        return $this->convert($this->quoted($value), "time");
1553
-	    }
1547
+    {
1548
+        if($type == 'date') {
1549
+            return $this->convert($this->quoted($value), "date");
1550
+        }
1551
+        if($type == 'time') {
1552
+            return $this->convert($this->quoted($value), "time");
1553
+        }
1554 1554
         if(isset($this->type_class[$type]) &&  $this->type_class[$type] == "date") {
1555 1555
             return $this->convert($this->quoted($value), "datetime");
1556 1556
         }
@@ -1559,7 +1559,7 @@  discard block
 block discarded – undo
1559 1559
         }
1560 1560
 
1561 1561
         return $this->quoted($value);
1562
-	}
1562
+    }
1563 1563
 
1564 1564
     /**
1565 1565
      * Quote the strings of the passed in array
@@ -1569,177 +1569,177 @@  discard block
 block discarded – undo
1569 1569
      * @param array $array
1570 1570
      * @return array Quoted strings
1571 1571
      */
1572
-	public function arrayQuote(array &$array)
1573
-	{
1574
-		foreach($array as &$val) {
1575
-			$val = $this->quote($val);
1576
-		}
1577
-		return $array;
1578
-	}
1572
+    public function arrayQuote(array &$array)
1573
+    {
1574
+        foreach($array as &$val) {
1575
+            $val = $this->quote($val);
1576
+        }
1577
+        return $array;
1578
+    }
1579 1579
 
1580 1580
     /**
1581 1581
      * Frees out previous results
1582 1582
      *
1583 1583
      * @param resource|bool $result optional, pass if you want to free a single result instead of all results
1584 1584
      */
1585
-	protected function freeResult($result = false)
1586
-	{
1587
-		if($result) {
1588
-			$this->freeDbResult($result);
1589
-		}
1590
-		if($this->lastResult) {
1591
-			$this->freeDbResult($this->lastResult);
1592
-			$this->lastResult = null;
1593
-		}
1594
-	}
1595
-
1596
-	/**
1597
-	 * @abstract
1598
-	 * Check if query has LIMIT clause
1599
-	 * Relevant for now only for Mysql
1600
-	 * @param string $sql
1601
-	 * @return bool
1602
-	 */
1603
-	protected function hasLimit($sql)
1604
-	{
1605
-	    return false;
1606
-	}
1607
-
1608
-	/**
1609
-	 * Runs a query and returns a single row containing single value
1610
-	 *
1611
-	 * @param  string   $sql        SQL Statement to execute
1612
-	 * @param  bool     $dieOnError True if we want to call die if the query returns errors
1613
-	 * @param  string   $msg        Message to log if error occurs
1614
-	 * @return array    single value from the query
1615
-	 */
1616
-	public function getOne($sql, $dieOnError = false, $msg = '')
1617
-	{
1618
-		$this->log->info("Get One: |$sql|");
1619
-		if(!$this->hasLimit($sql)) {
1620
-		    $queryresult = $this->limitQuery($sql, 0, 1, $dieOnError, $msg);
1621
-		} else {
1622
-		    // support old code that passes LIMIT to sql
1623
-		    // works only for mysql, so do not rely on this
1624
-		    $queryresult = $this->query($sql, $dieOnError, $msg);
1625
-		}
1626
-		$this->checkError($msg.' Get One Failed:' . $sql, $dieOnError);
1627
-		if (!$queryresult) return false;
1628
-		$row = $this->fetchByAssoc($queryresult);
1629
-		if(!empty($row)) {
1630
-			return array_shift($row);
1631
-		}
1632
-		return false;
1633
-	}
1634
-
1635
-	/**
1636
-	 * Runs a query and returns a single row
1637
-	 *
1638
-	 * @param  string   $sql        SQL Statement to execute
1639
-	 * @param  bool     $dieOnError True if we want to call die if the query returns errors
1640
-	 * @param  string   $msg        Message to log if error occurs
1641
-	 * @param  bool     $suppress   Message to log if error occurs
1642
-	 * @return array    single row from the query
1643
-	 */
1644
-	public function fetchOne($sql, $dieOnError = false, $msg = '', $suppress = false)
1645
-	{
1646
-		$this->log->info("Fetch One: |$sql|");
1647
-		$this->checkConnection();
1648
-		$queryresult = $this->query($sql, $dieOnError, $msg);
1649
-		$this->checkError($msg.' Fetch One Failed:' . $sql, $dieOnError);
1650
-
1651
-		if (!$queryresult) return false;
1652
-
1653
-		$row = $this->fetchByAssoc($queryresult);
1654
-		if ( !$row ) return false;
1655
-
1656
-		$this->freeResult($queryresult);
1657
-		return $row;
1658
-	}
1585
+    protected function freeResult($result = false)
1586
+    {
1587
+        if($result) {
1588
+            $this->freeDbResult($result);
1589
+        }
1590
+        if($this->lastResult) {
1591
+            $this->freeDbResult($this->lastResult);
1592
+            $this->lastResult = null;
1593
+        }
1594
+    }
1659 1595
 
1660 1596
     /**
1661
-     * Returns the number of rows affected by the last query
1662 1597
      * @abstract
1663
-	 * See also affected_rows capability, will return 0 unless the DB supports it
1664
-     * @param resource $result query result resource
1665
-     * @return int
1598
+     * Check if query has LIMIT clause
1599
+     * Relevant for now only for Mysql
1600
+     * @param string $sql
1601
+     * @return bool
1666 1602
      */
1667
-	public function getAffectedRowCount($result)
1668
-	{
1669
-		return 0;
1670
-	}
1671
-
1672
-	/**
1673
-	 * Returns the number of rows returned by the result
1674
-	 *
1675
-	 * This function can't be reliably implemented on most DB, do not use it.
1676
-	 * @abstract
1677
-	 * @deprecated
1678
-	 * @param  resource $result
1679
-	 * @return int
1680
-	 */
1681
-	public function getRowCount($result)
1682
-	{
1683
-	    return 0;
1684
-	}
1685
-
1686
-	/**
1687
-     * Get table description
1688
-     * @param string $tablename
1603
+    protected function hasLimit($sql)
1604
+    {
1605
+        return false;
1606
+    }
1607
+
1608
+    /**
1609
+     * Runs a query and returns a single row containing single value
1610
+     *
1611
+     * @param  string   $sql        SQL Statement to execute
1612
+     * @param  bool     $dieOnError True if we want to call die if the query returns errors
1613
+     * @param  string   $msg        Message to log if error occurs
1614
+     * @return array    single value from the query
1615
+     */
1616
+    public function getOne($sql, $dieOnError = false, $msg = '')
1617
+    {
1618
+        $this->log->info("Get One: |$sql|");
1619
+        if(!$this->hasLimit($sql)) {
1620
+            $queryresult = $this->limitQuery($sql, 0, 1, $dieOnError, $msg);
1621
+        } else {
1622
+            // support old code that passes LIMIT to sql
1623
+            // works only for mysql, so do not rely on this
1624
+            $queryresult = $this->query($sql, $dieOnError, $msg);
1625
+        }
1626
+        $this->checkError($msg.' Get One Failed:' . $sql, $dieOnError);
1627
+        if (!$queryresult) return false;
1628
+        $row = $this->fetchByAssoc($queryresult);
1629
+        if(!empty($row)) {
1630
+            return array_shift($row);
1631
+        }
1632
+        return false;
1633
+    }
1634
+
1635
+    /**
1636
+     * Runs a query and returns a single row
1637
+     *
1638
+     * @param  string   $sql        SQL Statement to execute
1639
+     * @param  bool     $dieOnError True if we want to call die if the query returns errors
1640
+     * @param  string   $msg        Message to log if error occurs
1641
+     * @param  bool     $suppress   Message to log if error occurs
1642
+     * @return array    single row from the query
1643
+     */
1644
+    public function fetchOne($sql, $dieOnError = false, $msg = '', $suppress = false)
1645
+    {
1646
+        $this->log->info("Fetch One: |$sql|");
1647
+        $this->checkConnection();
1648
+        $queryresult = $this->query($sql, $dieOnError, $msg);
1649
+        $this->checkError($msg.' Fetch One Failed:' . $sql, $dieOnError);
1650
+
1651
+        if (!$queryresult) return false;
1652
+
1653
+        $row = $this->fetchByAssoc($queryresult);
1654
+        if ( !$row ) return false;
1655
+
1656
+        $this->freeResult($queryresult);
1657
+        return $row;
1658
+    }
1659
+
1660
+    /**
1661
+     * Returns the number of rows affected by the last query
1662
+     * @abstract
1663
+     * See also affected_rows capability, will return 0 unless the DB supports it
1664
+     * @param resource $result query result resource
1665
+     * @return int
1666
+     */
1667
+    public function getAffectedRowCount($result)
1668
+    {
1669
+        return 0;
1670
+    }
1671
+
1672
+    /**
1673
+     * Returns the number of rows returned by the result
1674
+     *
1675
+     * This function can't be reliably implemented on most DB, do not use it.
1676
+     * @abstract
1677
+     * @deprecated
1678
+     * @param  resource $result
1679
+     * @return int
1680
+     */
1681
+    public function getRowCount($result)
1682
+    {
1683
+        return 0;
1684
+    }
1685
+
1686
+    /**
1687
+     * Get table description
1688
+     * @param string $tablename
1689 1689
      * @param bool $reload true means load from DB, false allows using cache
1690 1690
      * @return array Vardef-format table description
1691 1691
      *
1692 1692
      */
1693
-	public function getTableDescription($tablename, $reload = false)
1694
-	{
1695
-		if($reload || empty(self::$table_descriptions[$tablename])) {
1696
-			self::$table_descriptions[$tablename] = $this->get_columns($tablename);
1697
-		}
1698
-		return self::$table_descriptions[$tablename];
1699
-	}
1700
-
1701
-	/**
1702
-	 * Returns the field description for a given field in table
1703
-	 *
1704
-	 * @param  string $name
1705
-	 * @param  string $tablename
1706
-	 * @return array
1707
-	 */
1708
-	protected function describeField($name, $tablename)
1709
-	{
1710
-		$table = $this->getTableDescription($tablename);
1711
-		if(!empty($table) && isset($table[$name]))
1712
-			return 	$table[$name];
1713
-
1714
-		$table = $this->getTableDescription($tablename, true);
1715
-
1716
-		if(isset($table[$name]))
1717
-		return $table[$name];
1718
-
1719
-		return array();
1720
-	}
1721
-
1722
-	/**
1723
-	 * Returns the index description for a given index in table
1724
-	 *
1725
-	 * @param  string $name
1726
-	 * @param  string $tablename
1727
-	 * @return array
1728
-	 */
1729
-	protected function describeIndex($name, $tablename)
1730
-	{
1731
-		if(isset(self::$index_descriptions[$tablename]) && isset(self::$index_descriptions[$tablename]) && isset(self::$index_descriptions[$tablename][$name])){
1732
-			return 	self::$index_descriptions[$tablename][$name];
1733
-		}
1734
-
1735
-		self::$index_descriptions[$tablename] = $this->get_indices($tablename);
1736
-
1737
-		if(isset(self::$index_descriptions[$tablename][$name])){
1738
-			return 	self::$index_descriptions[$tablename][$name];
1739
-		}
1740
-
1741
-		return array();
1742
-	}
1693
+    public function getTableDescription($tablename, $reload = false)
1694
+    {
1695
+        if($reload || empty(self::$table_descriptions[$tablename])) {
1696
+            self::$table_descriptions[$tablename] = $this->get_columns($tablename);
1697
+        }
1698
+        return self::$table_descriptions[$tablename];
1699
+    }
1700
+
1701
+    /**
1702
+     * Returns the field description for a given field in table
1703
+     *
1704
+     * @param  string $name
1705
+     * @param  string $tablename
1706
+     * @return array
1707
+     */
1708
+    protected function describeField($name, $tablename)
1709
+    {
1710
+        $table = $this->getTableDescription($tablename);
1711
+        if(!empty($table) && isset($table[$name]))
1712
+            return 	$table[$name];
1713
+
1714
+        $table = $this->getTableDescription($tablename, true);
1715
+
1716
+        if(isset($table[$name]))
1717
+        return $table[$name];
1718
+
1719
+        return array();
1720
+    }
1721
+
1722
+    /**
1723
+     * Returns the index description for a given index in table
1724
+     *
1725
+     * @param  string $name
1726
+     * @param  string $tablename
1727
+     * @return array
1728
+     */
1729
+    protected function describeIndex($name, $tablename)
1730
+    {
1731
+        if(isset(self::$index_descriptions[$tablename]) && isset(self::$index_descriptions[$tablename]) && isset(self::$index_descriptions[$tablename][$name])){
1732
+            return 	self::$index_descriptions[$tablename][$name];
1733
+        }
1734
+
1735
+        self::$index_descriptions[$tablename] = $this->get_indices($tablename);
1736
+
1737
+        if(isset(self::$index_descriptions[$tablename][$name])){
1738
+            return 	self::$index_descriptions[$tablename][$name];
1739
+        }
1740
+
1741
+        return array();
1742
+    }
1743 1743
 
1744 1744
     /**
1745 1745
      * Truncates a string to a given length
@@ -1749,14 +1749,14 @@  discard block
 block discarded – undo
1749 1749
      * @return string
1750 1750
      *
1751 1751
      */
1752
-	public function truncate($string, $len)
1753
-	{
1754
-		if ( is_numeric($len) && $len > 0)
1755
-		{
1756
-			$string = mb_substr($string,0,(int) $len, "UTF-8");
1757
-		}
1758
-		return $string;
1759
-	}
1752
+    public function truncate($string, $len)
1753
+    {
1754
+        if ( is_numeric($len) && $len > 0)
1755
+        {
1756
+            $string = mb_substr($string,0,(int) $len, "UTF-8");
1757
+        }
1758
+        return $string;
1759
+    }
1760 1760
 
1761 1761
     /**
1762 1762
      * Returns the database string needed for concatinating multiple database strings together
@@ -1766,121 +1766,121 @@  discard block
 block discarded – undo
1766 1766
      * @param string $space Separator between strings, default is single space
1767 1767
      * @return string
1768 1768
      */
1769
-	public function concat($table, array $fields, $space = ' ')
1770
-	{
1771
-		if(empty($fields)) return '';
1772
-		$elems = array();
1773
-		$space = $this->quoted($space);
1774
-		foreach ( $fields as $field ) {
1775
-			if(!empty($elems)) $elems[] = $space;
1776
-			$elems[] = $this->convert("$table.$field", 'IFNULL', array("''"));
1777
-		}
1778
-		$first = array_shift($elems);
1779
-		return "LTRIM(RTRIM(".$this->convert($first, 'CONCAT', $elems)."))";
1780
-	}
1781
-
1782
-	/**
1783
-	 * Given a sql stmt attempt to parse it into the sql and the tokens. Then return the index of this prepared statement
1784
-	 * Tokens can come in the following forms:
1785
-	 * ? - a scalar which will be quoted
1786
-	 * ! - a literal which will not be quoted
1787
-	 * & - binary data to read from a file
1788
-	 *
1789
-	 * @param  string	$sql        The sql to parse
1790
-	 * @return int index of the prepared statement to be used with execute
1791
-	 */
1792
-	public function prepareQuery($sql)
1793
-	{
1794
-		//parse out the tokens
1795
-		$tokens = preg_split('/((?<!\\\)[&?!])/', $sql, -1, PREG_SPLIT_DELIM_CAPTURE);
1796
-
1797
-		//maintain a count of the actual tokens for quick reference in execute
1798
-		$count = 0;
1799
-
1800
-		$sqlStr = '';
1801
-		foreach ($tokens as $key => $val) {
1802
-			switch ($val) {
1803
-				case '?' :
1804
-				case '!' :
1805
-				case '&' :
1806
-					$count++;
1807
-					$sqlStr .= '?';
1808
-					break;
1809
-
1810
-				default :
1811
-					//escape any special characters
1812
-					$tokens[$key] = preg_replace('/\\\([&?!])/', "\\1", $val);
1813
-					$sqlStr .= $tokens[$key];
1814
-					break;
1815
-			} // switch
1816
-		} // foreach
1817
-
1818
-		$this->preparedTokens[] = array('tokens' => $tokens, 'tokenCount' => $count, 'sqlString' => $sqlStr);
1819
-		end($this->preparedTokens);
1820
-		return key($this->preparedTokens);
1821
-	}
1822
-
1823
-	/**
1824
-	 * Takes a prepared stmt index and the data to replace and creates the query and runs it.
1825
-	 *
1826
-	 * @param  int		$stmt       The index of the prepared statement from preparedTokens
1827
-	 * @param  array    $data 		The array of data to replace the tokens with.
1828
-	 * @return resource result set or false on error
1829
-	 */
1830
-	public function executePreparedQuery($stmt, $data = array())
1831
-	{
1832
-		if(!empty($this->preparedTokens[$stmt])){
1833
-			if(!is_array($data)){
1834
-				$data = array($data);
1835
-			}
1836
-
1837
-			$pTokens = $this->preparedTokens[$stmt];
1838
-
1839
-			//ensure that the number of data elements matches the number of replacement tokens
1840
-			//we found in prepare().
1841
-			if(count($data) != $pTokens['tokenCount']){
1842
-				//error the data count did not match the token count
1843
-				return false;
1844
-			}
1845
-
1846
-			$query = '';
1847
-			$dataIndex = 0;
1848
-			$tokens = $pTokens['tokens'];
1849
-			foreach ($tokens as $val) {
1850
-				switch ($val) {
1851
-					case '?':
1852
-						$query .= $this->quote($data[$dataIndex++]);
1853
-						break;
1854
-					case '&':
1855
-						$filename = $data[$dataIndex++];
1856
-						$query .= file_get_contents($filename);
1857
-						break;
1858
-					case '!':
1859
-						$query .= $data[$dataIndex++];
1860
-						break;
1861
-					default:
1862
-						$query .= $val;
1863
-						break;
1864
-				}//switch
1865
-			}//foreach
1866
-			return $this->query($query);
1867
-		}else{
1868
-			return false;
1869
-		}
1870
-	}
1871
-
1872
-	/**
1873
-	 * Run both prepare and execute without the client having to run both individually.
1874
-	 *
1875
-	 * @param  string	$sql        The sql to parse
1876
-	 * @param  array    $data 		The array of data to replace the tokens with.
1877
-	 * @return resource result set or false on error
1878
-	 */
1879
-	public function pQuery($sql, $data = array())
1880
-	{
1881
-		$stmt = $this->prepareQuery($sql);
1882
-		return $this->executePreparedQuery($stmt, $data);
1883
-	}
1769
+    public function concat($table, array $fields, $space = ' ')
1770
+    {
1771
+        if(empty($fields)) return '';
1772
+        $elems = array();
1773
+        $space = $this->quoted($space);
1774
+        foreach ( $fields as $field ) {
1775
+            if(!empty($elems)) $elems[] = $space;
1776
+            $elems[] = $this->convert("$table.$field", 'IFNULL', array("''"));
1777
+        }
1778
+        $first = array_shift($elems);
1779
+        return "LTRIM(RTRIM(".$this->convert($first, 'CONCAT', $elems)."))";
1780
+    }
1781
+
1782
+    /**
1783
+     * Given a sql stmt attempt to parse it into the sql and the tokens. Then return the index of this prepared statement
1784
+     * Tokens can come in the following forms:
1785
+     * ? - a scalar which will be quoted
1786
+     * ! - a literal which will not be quoted
1787
+     * & - binary data to read from a file
1788
+     *
1789
+     * @param  string	$sql        The sql to parse
1790
+     * @return int index of the prepared statement to be used with execute
1791
+     */
1792
+    public function prepareQuery($sql)
1793
+    {
1794
+        //parse out the tokens
1795
+        $tokens = preg_split('/((?<!\\\)[&?!])/', $sql, -1, PREG_SPLIT_DELIM_CAPTURE);
1796
+
1797
+        //maintain a count of the actual tokens for quick reference in execute
1798
+        $count = 0;
1799
+
1800
+        $sqlStr = '';
1801
+        foreach ($tokens as $key => $val) {
1802
+            switch ($val) {
1803
+                case '?' :
1804
+                case '!' :
1805
+                case '&' :
1806
+                    $count++;
1807
+                    $sqlStr .= '?';
1808
+                    break;
1809
+
1810
+                default :
1811
+                    //escape any special characters
1812
+                    $tokens[$key] = preg_replace('/\\\([&?!])/', "\\1", $val);
1813
+                    $sqlStr .= $tokens[$key];
1814
+                    break;
1815
+            } // switch
1816
+        } // foreach
1817
+
1818
+        $this->preparedTokens[] = array('tokens' => $tokens, 'tokenCount' => $count, 'sqlString' => $sqlStr);
1819
+        end($this->preparedTokens);
1820
+        return key($this->preparedTokens);
1821
+    }
1822
+
1823
+    /**
1824
+     * Takes a prepared stmt index and the data to replace and creates the query and runs it.
1825
+     *
1826
+     * @param  int		$stmt       The index of the prepared statement from preparedTokens
1827
+     * @param  array    $data 		The array of data to replace the tokens with.
1828
+     * @return resource result set or false on error
1829
+     */
1830
+    public function executePreparedQuery($stmt, $data = array())
1831
+    {
1832
+        if(!empty($this->preparedTokens[$stmt])){
1833
+            if(!is_array($data)){
1834
+                $data = array($data);
1835
+            }
1836
+
1837
+            $pTokens = $this->preparedTokens[$stmt];
1838
+
1839
+            //ensure that the number of data elements matches the number of replacement tokens
1840
+            //we found in prepare().
1841
+            if(count($data) != $pTokens['tokenCount']){
1842
+                //error the data count did not match the token count
1843
+                return false;
1844
+            }
1845
+
1846
+            $query = '';
1847
+            $dataIndex = 0;
1848
+            $tokens = $pTokens['tokens'];
1849
+            foreach ($tokens as $val) {
1850
+                switch ($val) {
1851
+                    case '?':
1852
+                        $query .= $this->quote($data[$dataIndex++]);
1853
+                        break;
1854
+                    case '&':
1855
+                        $filename = $data[$dataIndex++];
1856
+                        $query .= file_get_contents($filename);
1857
+                        break;
1858
+                    case '!':
1859
+                        $query .= $data[$dataIndex++];
1860
+                        break;
1861
+                    default:
1862
+                        $query .= $val;
1863
+                        break;
1864
+                }//switch
1865
+            }//foreach
1866
+            return $this->query($query);
1867
+        }else{
1868
+            return false;
1869
+        }
1870
+    }
1871
+
1872
+    /**
1873
+     * Run both prepare and execute without the client having to run both individually.
1874
+     *
1875
+     * @param  string	$sql        The sql to parse
1876
+     * @param  array    $data 		The array of data to replace the tokens with.
1877
+     * @return resource result set or false on error
1878
+     */
1879
+    public function pQuery($sql, $data = array())
1880
+    {
1881
+        $stmt = $this->prepareQuery($sql);
1882
+        return $this->executePreparedQuery($stmt, $data);
1883
+    }
1884 1884
 
1885 1885
 /********************** SQL FUNCTIONS ****************************/
1886 1886
     /**
@@ -1890,933 +1890,933 @@  discard block
 block discarded – undo
1890 1890
      * @param SugarBean $bean SugarBean instance
1891 1891
      * @return string SQL Create Table statement
1892 1892
      */
1893
-	public function createTableSQL(SugarBean $bean)
1894
-	{
1895
-		$tablename = $bean->getTableName();
1896
-		$fieldDefs = $bean->getFieldDefinitions();
1897
-		$indices = $bean->getIndices();
1898
-		return $this->createTableSQLParams($tablename, $fieldDefs, $indices);
1899
-	}
1900
-
1901
-	/**
1902
-	 * Generates SQL for insert statement.
1903
-	 *
1904
-	 * @param  SugarBean $bean SugarBean instance
1905
-	 * @return string SQL Create Table statement
1906
-	 */
1907
-	public function insertSQL(SugarBean $bean)
1908
-	{
1909
-		// get column names and values
1910
-		$sql = $this->insertParams($bean->getTableName(), $bean->getFieldDefinitions(), get_object_vars($bean),
1911
-		        isset($bean->field_name_map)?$bean->field_name_map:null, false);
1912
-		return $sql;
1913
-	}
1914
-
1915
-	/**
1916
-	 * Generates SQL for update statement.
1917
-	 *
1918
-	 * @param  SugarBean $bean SugarBean instance
1919
-	 * @param  array  $where Optional, where conditions in an array
1920
-	 * @return string SQL Create Table statement
1921
-	 */
1922
-	public function updateSQL(SugarBean $bean, array $where = array())
1923
-	{
1924
-		$primaryField = $bean->getPrimaryFieldDefinition();
1925
-		$columns = array();
1893
+    public function createTableSQL(SugarBean $bean)
1894
+    {
1895
+        $tablename = $bean->getTableName();
1896
+        $fieldDefs = $bean->getFieldDefinitions();
1897
+        $indices = $bean->getIndices();
1898
+        return $this->createTableSQLParams($tablename, $fieldDefs, $indices);
1899
+    }
1900
+
1901
+    /**
1902
+     * Generates SQL for insert statement.
1903
+     *
1904
+     * @param  SugarBean $bean SugarBean instance
1905
+     * @return string SQL Create Table statement
1906
+     */
1907
+    public function insertSQL(SugarBean $bean)
1908
+    {
1909
+        // get column names and values
1910
+        $sql = $this->insertParams($bean->getTableName(), $bean->getFieldDefinitions(), get_object_vars($bean),
1911
+                isset($bean->field_name_map)?$bean->field_name_map:null, false);
1912
+        return $sql;
1913
+    }
1914
+
1915
+    /**
1916
+     * Generates SQL for update statement.
1917
+     *
1918
+     * @param  SugarBean $bean SugarBean instance
1919
+     * @param  array  $where Optional, where conditions in an array
1920
+     * @return string SQL Create Table statement
1921
+     */
1922
+    public function updateSQL(SugarBean $bean, array $where = array())
1923
+    {
1924
+        $primaryField = $bean->getPrimaryFieldDefinition();
1925
+        $columns = array();
1926 1926
         $fields = $bean->getFieldDefinitions();
1927
-		// get column names and values
1928
-		foreach ($fields as $field => $fieldDef) {
1929
-			if (isset($fieldDef['source']) && $fieldDef['source'] != 'db')  continue;
1930
-			// Do not write out the id field on the update statement.
1931
-    		// We are not allowed to change ids.
1932
-    		if (empty($fieldDef['name']) || $fieldDef['name'] == $primaryField['name']) continue;
1933
-
1934
-    		// If the field is an auto_increment field, then we shouldn't be setting it.  This was added
1935
-    		// specially for Bugs and Cases which have a number associated with them.
1936
-    		if (!empty($bean->field_name_map[$field]['auto_increment'])) continue;
1937
-
1938
-    		//custom fields handle their save separately
1939
-    		if(isset($bean->field_name_map) && !empty($bean->field_name_map[$field]['custom_type']))  continue;
1940
-
1941
-    		// no need to clear deleted since we only update not deleted records anyway
1942
-    		if($fieldDef['name'] == 'deleted' && empty($bean->deleted)) continue;
1943
-
1944
-    		if(isset($bean->$field)) {
1945
-    			$val = from_html($bean->$field);
1946
-    		} else {
1947
-    			continue;
1948
-    		}
1949
-
1950
-    		if(!empty($fieldDef['type']) && $fieldDef['type'] == 'bool'){
1951
-    			$val = $bean->getFieldValue($field);
1952
-    		}
1953
-
1954
-    		if(strlen($val) == 0) {
1955
-    			if(isset($fieldDef['default']) && strlen($fieldDef['default']) > 0) {
1956
-    				$val = $fieldDef['default'];
1957
-    			} else {
1958
-    				$val = null;
1959
-    			}
1960
-    		}
1961
-
1962
-    		if(!empty($val) && !empty($fieldDef['len']) && strlen($val) > $fieldDef['len']) {
1963
-			    $val = $this->truncate($val, $fieldDef['len']);
1964
-			}
1965
-		$columnName = $this->quoteIdentifier($fieldDef['name']);
1966
-    		if(!is_null($val) || !empty($fieldDef['required'])) {
1967
-    			$columns[] = "{$columnName}=".$this->massageValue($val, $fieldDef);
1968
-    		} elseif($this->isNullable($fieldDef)) {
1969
-    			$columns[] = "{$columnName}=NULL";
1970
-    		} else {
1971
-    		    $columns[] = "{$columnName}=".$this->emptyValue($fieldDef['type']);
1972
-    		}
1973
-		}
1974
-
1975
-		if ( sizeof($columns) == 0 )
1976
-			return ""; // no columns set
1977
-
1978
-		// build where clause
1979
-		$where = $this->getWhereClause($bean, $this->updateWhereArray($bean, $where));
1980
-		if(isset($fields['deleted'])) {
1981
-		    $where .= " AND deleted=0";
1982
-		}
1983
-
1984
-		return "UPDATE ".$bean->getTableName()."
1927
+        // get column names and values
1928
+        foreach ($fields as $field => $fieldDef) {
1929
+            if (isset($fieldDef['source']) && $fieldDef['source'] != 'db')  continue;
1930
+            // Do not write out the id field on the update statement.
1931
+            // We are not allowed to change ids.
1932
+            if (empty($fieldDef['name']) || $fieldDef['name'] == $primaryField['name']) continue;
1933
+
1934
+            // If the field is an auto_increment field, then we shouldn't be setting it.  This was added
1935
+            // specially for Bugs and Cases which have a number associated with them.
1936
+            if (!empty($bean->field_name_map[$field]['auto_increment'])) continue;
1937
+
1938
+            //custom fields handle their save separately
1939
+            if(isset($bean->field_name_map) && !empty($bean->field_name_map[$field]['custom_type']))  continue;
1940
+
1941
+            // no need to clear deleted since we only update not deleted records anyway
1942
+            if($fieldDef['name'] == 'deleted' && empty($bean->deleted)) continue;
1943
+
1944
+            if(isset($bean->$field)) {
1945
+                $val = from_html($bean->$field);
1946
+            } else {
1947
+                continue;
1948
+            }
1949
+
1950
+            if(!empty($fieldDef['type']) && $fieldDef['type'] == 'bool'){
1951
+                $val = $bean->getFieldValue($field);
1952
+            }
1953
+
1954
+            if(strlen($val) == 0) {
1955
+                if(isset($fieldDef['default']) && strlen($fieldDef['default']) > 0) {
1956
+                    $val = $fieldDef['default'];
1957
+                } else {
1958
+                    $val = null;
1959
+                }
1960
+            }
1961
+
1962
+            if(!empty($val) && !empty($fieldDef['len']) && strlen($val) > $fieldDef['len']) {
1963
+                $val = $this->truncate($val, $fieldDef['len']);
1964
+            }
1965
+        $columnName = $this->quoteIdentifier($fieldDef['name']);
1966
+            if(!is_null($val) || !empty($fieldDef['required'])) {
1967
+                $columns[] = "{$columnName}=".$this->massageValue($val, $fieldDef);
1968
+            } elseif($this->isNullable($fieldDef)) {
1969
+                $columns[] = "{$columnName}=NULL";
1970
+            } else {
1971
+                $columns[] = "{$columnName}=".$this->emptyValue($fieldDef['type']);
1972
+            }
1973
+        }
1974
+
1975
+        if ( sizeof($columns) == 0 )
1976
+            return ""; // no columns set
1977
+
1978
+        // build where clause
1979
+        $where = $this->getWhereClause($bean, $this->updateWhereArray($bean, $where));
1980
+        if(isset($fields['deleted'])) {
1981
+            $where .= " AND deleted=0";
1982
+        }
1983
+
1984
+        return "UPDATE ".$bean->getTableName()."
1985 1985
 					SET ".implode(",", $columns)."
1986 1986
 					$where";
1987
-	}
1988
-
1989
-	/**
1990
-	 * This method returns a where array so that it has id entry if
1991
-	 * where is not an array or is empty
1992
-	 *
1993
-	 * @param  SugarBean $bean SugarBean instance
1994
-	 * @param  array  $where Optional, where conditions in an array
1995
-	 * @return array
1996
-	 */
1997
-	protected function updateWhereArray(SugarBean $bean, array $where = array())
1998
-	{
1999
-		if (count($where) == 0) {
2000
-			$fieldDef = $bean->getPrimaryFieldDefinition();
2001
-			$primaryColumn = $fieldDef['name'];
2002
-
2003
-			$val = $bean->getFieldValue($fieldDef['name']);
2004
-			if ($val != FALSE){
2005
-				$where[$primaryColumn] = $val;
2006
-			}
2007
-		}
2008
-
2009
-		return $where;
2010
-	}
2011
-
2012
-	/**
2013
-	 * Returns a where clause without the 'where' key word
2014
-	 *
2015
-	 * The clause returned does not have an 'and' at the beginning and the columns
2016
-	 * are joined by 'and'.
2017
-	 *
2018
-	 * @param  string $table table name
2019
-	 * @param  array  $whereArray Optional, where conditions in an array
2020
-	 * @return string
2021
-	 */
2022
-	protected function getColumnWhereClause($table, array $whereArray = array())
2023
-	{
2024
-		$where = array();
2025
-		foreach ($whereArray as $name => $val) {
2026
-			$op = "=";
2027
-			if (is_array($val)) {
2028
-				$op = "IN";
2029
-				$temp = array();
2030
-				foreach ($val as $tval){
2031
-					$temp[] = $this->quoted($tval);
2032
-				}
2033
-				$val = implode(",", $temp);
2034
-				$val = "($val)";
2035
-			} else {
2036
-				$val = $this->quoted($val);
2037
-			}
2038
-
2039
-			$where[] = " $table.$name $op $val";
2040
-		}
2041
-
2042
-		if (!empty($where))
2043
-			return implode(" AND ", $where);
2044
-
2045
-		return '';
2046
-	}
2047
-
2048
-	/**
2049
-	 * This method returns a complete where clause built from the
2050
-	 * where values specified.
2051
-	 *
2052
-	 * @param  SugarBean $bean SugarBean that describes the table
2053
-	 * @param  array  $whereArray Optional, where conditions in an array
2054
-	 * @return string
2055
-	 */
2056
-	protected function getWhereClause(SugarBean $bean, array $whereArray=array())
2057
-	{
2058
-	    return " WHERE " . $this->getColumnWhereClause($bean->getTableName(), $whereArray);
2059
-	}
2060
-
2061
-	/**
2062
-	 * Outputs a correct string for the sql statement according to value
2063
-	 *
2064
-	 * @param  mixed $val
2065
-	 * @param  array $fieldDef field definition
2066
-	 * @return mixed
2067
-	 */
2068
-	public function massageValue($val, $fieldDef)
2069
-	{
2070
-		$type = $this->getFieldType($fieldDef);
2071
-
2072
-		if(isset($this->type_class[$type])) {
2073
-			// handle some known types
2074
-			switch($this->type_class[$type]) {
2075
-				case 'bool':
2076
-				case 'int':
2077
-					if (!empty($fieldDef['required']) && $val == ''){
2078
-						if (isset($fieldDef['default'])){
2079
-							return $fieldDef['default'];
2080
-						}
2081
-						return 0;
2082
-					}
2083
-					return intval($val);
1987
+    }
1988
+
1989
+    /**
1990
+     * This method returns a where array so that it has id entry if
1991
+     * where is not an array or is empty
1992
+     *
1993
+     * @param  SugarBean $bean SugarBean instance
1994
+     * @param  array  $where Optional, where conditions in an array
1995
+     * @return array
1996
+     */
1997
+    protected function updateWhereArray(SugarBean $bean, array $where = array())
1998
+    {
1999
+        if (count($where) == 0) {
2000
+            $fieldDef = $bean->getPrimaryFieldDefinition();
2001
+            $primaryColumn = $fieldDef['name'];
2002
+
2003
+            $val = $bean->getFieldValue($fieldDef['name']);
2004
+            if ($val != FALSE){
2005
+                $where[$primaryColumn] = $val;
2006
+            }
2007
+        }
2008
+
2009
+        return $where;
2010
+    }
2011
+
2012
+    /**
2013
+     * Returns a where clause without the 'where' key word
2014
+     *
2015
+     * The clause returned does not have an 'and' at the beginning and the columns
2016
+     * are joined by 'and'.
2017
+     *
2018
+     * @param  string $table table name
2019
+     * @param  array  $whereArray Optional, where conditions in an array
2020
+     * @return string
2021
+     */
2022
+    protected function getColumnWhereClause($table, array $whereArray = array())
2023
+    {
2024
+        $where = array();
2025
+        foreach ($whereArray as $name => $val) {
2026
+            $op = "=";
2027
+            if (is_array($val)) {
2028
+                $op = "IN";
2029
+                $temp = array();
2030
+                foreach ($val as $tval){
2031
+                    $temp[] = $this->quoted($tval);
2032
+                }
2033
+                $val = implode(",", $temp);
2034
+                $val = "($val)";
2035
+            } else {
2036
+                $val = $this->quoted($val);
2037
+            }
2038
+
2039
+            $where[] = " $table.$name $op $val";
2040
+        }
2041
+
2042
+        if (!empty($where))
2043
+            return implode(" AND ", $where);
2044
+
2045
+        return '';
2046
+    }
2047
+
2048
+    /**
2049
+     * This method returns a complete where clause built from the
2050
+     * where values specified.
2051
+     *
2052
+     * @param  SugarBean $bean SugarBean that describes the table
2053
+     * @param  array  $whereArray Optional, where conditions in an array
2054
+     * @return string
2055
+     */
2056
+    protected function getWhereClause(SugarBean $bean, array $whereArray=array())
2057
+    {
2058
+        return " WHERE " . $this->getColumnWhereClause($bean->getTableName(), $whereArray);
2059
+    }
2060
+
2061
+    /**
2062
+     * Outputs a correct string for the sql statement according to value
2063
+     *
2064
+     * @param  mixed $val
2065
+     * @param  array $fieldDef field definition
2066
+     * @return mixed
2067
+     */
2068
+    public function massageValue($val, $fieldDef)
2069
+    {
2070
+        $type = $this->getFieldType($fieldDef);
2071
+
2072
+        if(isset($this->type_class[$type])) {
2073
+            // handle some known types
2074
+            switch($this->type_class[$type]) {
2075
+                case 'bool':
2076
+                case 'int':
2077
+                    if (!empty($fieldDef['required']) && $val == ''){
2078
+                        if (isset($fieldDef['default'])){
2079
+                            return $fieldDef['default'];
2080
+                        }
2081
+                        return 0;
2082
+                    }
2083
+                    return intval($val);
2084 2084
                 case 'bigint' :
2085 2085
                     $val = (float)$val;
2086
-					if (!empty($fieldDef['required']) && $val == false){
2087
-						if (isset($fieldDef['default'])){
2088
-							return $fieldDef['default'];
2089
-						}
2090
-						return 0;
2091
-					}
2086
+                    if (!empty($fieldDef['required']) && $val == false){
2087
+                        if (isset($fieldDef['default'])){
2088
+                            return $fieldDef['default'];
2089
+                        }
2090
+                        return 0;
2091
+                    }
2092 2092
                     return $val;
2093
-				case 'float':
2094
-					if (!empty($fieldDef['required'])  && $val == ''){
2095
-						if (isset($fieldDef['default'])){
2096
-							return $fieldDef['default'];
2097
-						}
2098
-						return 0;
2099
-					}
2100
-					return floatval($val);
2101
-				case 'time':
2102
-				case 'date':
2103
-					// empty date can't be '', so convert it to either NULL or empty date value
2104
-					if($val == '') {
2105
-						if (!empty($fieldDef['required'])) {
2106
-							if (isset($fieldDef['default'])) {
2107
-								return $fieldDef['default'];
2108
-							}
2109
-							return $this->emptyValue($type);
2110
-						}
2111
-						return "NULL";
2112
-					}
2113
-					break;
2114
-			}
2115
-		} else {
2116
-		    if(!empty($val) && !empty($fieldDef['len']) && strlen($val) > $fieldDef['len']) {
2117
-			    $val = $this->truncate($val, $fieldDef['len']);
2118
-			}
2119
-		}
2120
-
2121
-		if ( is_null($val) ) {
2122
-			if(!empty($fieldDef['required'])) {
2123
-				if (isset($fieldDef['default'])  && $fieldDef['default'] != ''){
2124
-					return $fieldDef['default'];
2125
-				}
2126
-				return $this->emptyValue($type);
2127
-			} else {
2128
-				return "NULL";
2129
-			}
2130
-		}
2093
+                case 'float':
2094
+                    if (!empty($fieldDef['required'])  && $val == ''){
2095
+                        if (isset($fieldDef['default'])){
2096
+                            return $fieldDef['default'];
2097
+                        }
2098
+                        return 0;
2099
+                    }
2100
+                    return floatval($val);
2101
+                case 'time':
2102
+                case 'date':
2103
+                    // empty date can't be '', so convert it to either NULL or empty date value
2104
+                    if($val == '') {
2105
+                        if (!empty($fieldDef['required'])) {
2106
+                            if (isset($fieldDef['default'])) {
2107
+                                return $fieldDef['default'];
2108
+                            }
2109
+                            return $this->emptyValue($type);
2110
+                        }
2111
+                        return "NULL";
2112
+                    }
2113
+                    break;
2114
+            }
2115
+        } else {
2116
+            if(!empty($val) && !empty($fieldDef['len']) && strlen($val) > $fieldDef['len']) {
2117
+                $val = $this->truncate($val, $fieldDef['len']);
2118
+            }
2119
+        }
2120
+
2121
+        if ( is_null($val) ) {
2122
+            if(!empty($fieldDef['required'])) {
2123
+                if (isset($fieldDef['default'])  && $fieldDef['default'] != ''){
2124
+                    return $fieldDef['default'];
2125
+                }
2126
+                return $this->emptyValue($type);
2127
+            } else {
2128
+                return "NULL";
2129
+            }
2130
+        }
2131 2131
         if($type == "datetimecombo") {
2132 2132
             $type = "datetime";
2133 2133
         }
2134
-		return $this->convert($this->quoted($val), $type);
2135
-	}
2136
-
2137
-	/**
2138
-	 * Massages the field defintions to fill in anything else the DB backend may add
2139
-	 *
2140
-	 * @param  array  $fieldDef
2141
-	 * @param  string $tablename
2142
-	 * @return array
2143
-	 */
2144
-	public function massageFieldDef(&$fieldDef, $tablename)
2145
-	{
2146
-		if ( !isset($fieldDef['dbType']) ) {
2147
-			if ( isset($fieldDef['dbtype']) )
2148
-				$fieldDef['dbType'] = $fieldDef['dbtype'];
2149
-			else
2150
-				$fieldDef['dbType'] = $fieldDef['type'];
2151
-		}
2152
-		$type = $this->getColumnType($fieldDef['dbType'],$fieldDef['name'],$tablename);
2153
-		$matches = array();
2134
+        return $this->convert($this->quoted($val), $type);
2135
+    }
2136
+
2137
+    /**
2138
+     * Massages the field defintions to fill in anything else the DB backend may add
2139
+     *
2140
+     * @param  array  $fieldDef
2141
+     * @param  string $tablename
2142
+     * @return array
2143
+     */
2144
+    public function massageFieldDef(&$fieldDef, $tablename)
2145
+    {
2146
+        if ( !isset($fieldDef['dbType']) ) {
2147
+            if ( isset($fieldDef['dbtype']) )
2148
+                $fieldDef['dbType'] = $fieldDef['dbtype'];
2149
+            else
2150
+                $fieldDef['dbType'] = $fieldDef['type'];
2151
+        }
2152
+        $type = $this->getColumnType($fieldDef['dbType'],$fieldDef['name'],$tablename);
2153
+        $matches = array();
2154 2154
         // len can be a number or a string like 'max', for example, nvarchar(max)
2155 2155
         preg_match_all('/(\w+)(?:\(([0-9]+,?[0-9]*|\w+)\)|)/i', $type, $matches);
2156
-		if ( isset($matches[1][0]) )
2157
-			$fieldDef['type'] = $matches[1][0];
2158
-		if ( isset($matches[2][0]) && empty($fieldDef['len']) )
2159
-			$fieldDef['len'] = $matches[2][0];
2160
-		if ( !empty($fieldDef['precision']) && is_numeric($fieldDef['precision']) && !strstr($fieldDef['len'],',') )
2161
-			$fieldDef['len'] .= ",{$fieldDef['precision']}";
2162
-		if (!empty($fieldDef['required']) || ($fieldDef['name'] == 'id' && !isset($fieldDef['required'])) ) {
2163
-			$fieldDef['required'] = 'true';
2164
-		}
2165
-	}
2166
-
2167
-	/**
2168
-	 * Take an SQL statement and produce a list of fields used in that select
2169
-	 * @param string $selectStatement
2170
-	 * @return array
2171
-	 */
2172
-	public function getSelectFieldsFromQuery($selectStatement)
2173
-	{
2174
-		$selectStatement = trim($selectStatement);
2175
-		if (strtoupper(substr($selectStatement, 0, 6)) == "SELECT")
2176
-			$selectStatement = trim(substr($selectStatement, 6));
2177
-
2178
-		//Due to sql functions existing in many selects, we can't use php explode
2179
-		$fields = array();
2180
-		$level = 0;
2181
-		$selectField = "";
2182
-		$strLen = strlen($selectStatement);
2183
-		for($i = 0; $i < $strLen; $i++)
2184
-		{
2185
-			$char = $selectStatement[$i];
2186
-
2187
-			if ($char == "," && $level == 0)
2188
-			{
2189
-				$field = $this->getFieldNameFromSelect(trim($selectField));
2190
-				$fields[$field] = $selectField;
2191
-				$selectField = "";
2192
-			}
2193
-			else if ($char == "("){
2194
-				$level++;
2195
-				$selectField .= $char;
2196
-			}
2197
-			else if($char == ")"){
2198
-				$level--;
2199
-				$selectField .= $char;
2200
-
2201
-
2202
-			}else{
2203
-				$selectField .= $char;
2204
-			}
2205
-
2206
-		}
2207
-		$fields[$this->getFieldNameFromSelect($selectField)] = $selectField;
2208
-		return $fields;
2209
-	}
2210
-
2211
-	/**
2212
-	 * returns the field name used in a select
2213
-	 * @param string $string SELECT query
2156
+        if ( isset($matches[1][0]) )
2157
+            $fieldDef['type'] = $matches[1][0];
2158
+        if ( isset($matches[2][0]) && empty($fieldDef['len']) )
2159
+            $fieldDef['len'] = $matches[2][0];
2160
+        if ( !empty($fieldDef['precision']) && is_numeric($fieldDef['precision']) && !strstr($fieldDef['len'],',') )
2161
+            $fieldDef['len'] .= ",{$fieldDef['precision']}";
2162
+        if (!empty($fieldDef['required']) || ($fieldDef['name'] == 'id' && !isset($fieldDef['required'])) ) {
2163
+            $fieldDef['required'] = 'true';
2164
+        }
2165
+    }
2166
+
2167
+    /**
2168
+     * Take an SQL statement and produce a list of fields used in that select
2169
+     * @param string $selectStatement
2170
+     * @return array
2171
+     */
2172
+    public function getSelectFieldsFromQuery($selectStatement)
2173
+    {
2174
+        $selectStatement = trim($selectStatement);
2175
+        if (strtoupper(substr($selectStatement, 0, 6)) == "SELECT")
2176
+            $selectStatement = trim(substr($selectStatement, 6));
2177
+
2178
+        //Due to sql functions existing in many selects, we can't use php explode
2179
+        $fields = array();
2180
+        $level = 0;
2181
+        $selectField = "";
2182
+        $strLen = strlen($selectStatement);
2183
+        for($i = 0; $i < $strLen; $i++)
2184
+        {
2185
+            $char = $selectStatement[$i];
2186
+
2187
+            if ($char == "," && $level == 0)
2188
+            {
2189
+                $field = $this->getFieldNameFromSelect(trim($selectField));
2190
+                $fields[$field] = $selectField;
2191
+                $selectField = "";
2192
+            }
2193
+            else if ($char == "("){
2194
+                $level++;
2195
+                $selectField .= $char;
2196
+            }
2197
+            else if($char == ")"){
2198
+                $level--;
2199
+                $selectField .= $char;
2200
+
2201
+
2202
+            }else{
2203
+                $selectField .= $char;
2204
+            }
2205
+
2206
+        }
2207
+        $fields[$this->getFieldNameFromSelect($selectField)] = $selectField;
2208
+        return $fields;
2209
+    }
2210
+
2211
+    /**
2212
+     * returns the field name used in a select
2213
+     * @param string $string SELECT query
2214 2214
      * @return string
2215 2215
      */
2216
-	protected function getFieldNameFromSelect($string)
2217
-	{
2218
-		if(strncasecmp($string, "DISTINCT ", 9) == 0) {
2219
-			$string = substr($string, 9);
2220
-		}
2221
-		if (stripos($string, " as ") !== false)
2222
-			//"as" used for an alias
2223
-			return trim(substr($string, strripos($string, " as ") + 4));
2224
-		else if (strrpos($string, " ") != 0)
2225
-			//Space used as a delimiter for an alias
2226
-			return trim(substr($string, strrpos($string, " ")));
2227
-		else if (strpos($string, ".") !== false)
2228
-			//No alias, but a table.field format was used
2229
-			return substr($string, strpos($string, ".") + 1);
2230
-		else
2231
-			//Give up and assume the whole thing is the field name
2232
-			return $string;
2233
-	}
2234
-
2235
-	/**
2236
-	 * Generates SQL for delete statement identified by id.
2237
-	 *
2238
-	 * @param  SugarBean $bean SugarBean instance
2239
-	 * @param  array  $where where conditions in an array
2240
-	 * @return string SQL Update Statement
2241
-	 */
2242
-	public function deleteSQL(SugarBean $bean, array $where)
2243
-	{
2244
-		$where = $this->getWhereClause($bean, $this->updateWhereArray($bean, $where));
2245
-		return "UPDATE ".$bean->getTableName()." SET deleted=1 $where";
2246
-	}
2216
+    protected function getFieldNameFromSelect($string)
2217
+    {
2218
+        if(strncasecmp($string, "DISTINCT ", 9) == 0) {
2219
+            $string = substr($string, 9);
2220
+        }
2221
+        if (stripos($string, " as ") !== false)
2222
+            //"as" used for an alias
2223
+            return trim(substr($string, strripos($string, " as ") + 4));
2224
+        else if (strrpos($string, " ") != 0)
2225
+            //Space used as a delimiter for an alias
2226
+            return trim(substr($string, strrpos($string, " ")));
2227
+        else if (strpos($string, ".") !== false)
2228
+            //No alias, but a table.field format was used
2229
+            return substr($string, strpos($string, ".") + 1);
2230
+        else
2231
+            //Give up and assume the whole thing is the field name
2232
+            return $string;
2233
+    }
2234
+
2235
+    /**
2236
+     * Generates SQL for delete statement identified by id.
2237
+     *
2238
+     * @param  SugarBean $bean SugarBean instance
2239
+     * @param  array  $where where conditions in an array
2240
+     * @return string SQL Update Statement
2241
+     */
2242
+    public function deleteSQL(SugarBean $bean, array $where)
2243
+    {
2244
+        $where = $this->getWhereClause($bean, $this->updateWhereArray($bean, $where));
2245
+        return "UPDATE ".$bean->getTableName()." SET deleted=1 $where";
2246
+    }
2247
+
2248
+    /**
2249
+     * Generates SQL for select statement for any bean identified by id.
2250
+     *
2251
+     * @param  SugarBean $bean SugarBean instance
2252
+     * @param  array  $where where conditions in an array
2253
+     * @return string SQL Select Statement
2254
+     */
2255
+    public function retrieveSQL(SugarBean $bean, array $where)
2256
+    {
2257
+        $where = $this->getWhereClause($bean, $this->updateWhereArray($bean, $where));
2258
+        return "SELECT * FROM ".$bean->getTableName()." $where AND deleted=0";
2259
+    }
2260
+
2261
+    /**
2262
+     * This method implements a generic sql for a collection of beans.
2263
+     *
2264
+     * Currently, this function does not support outer joins.
2265
+     *
2266
+     * @param array $beans Array of values returned by get_class method as the keys and a bean as
2267
+     *      the value for that key. These beans will be joined in the sql by the key
2268
+     *      attribute of field defs.
2269
+     * @param  array $cols Optional, columns to be returned with the keys as names of bean
2270
+     *      as identified by get_class of bean. Values of this array is the array of fieldDefs
2271
+     *      to be returned for a bean. If an empty array is passed, all columns are selected.
2272
+     * @param  array $whereClause Optional, values with the keys as names of bean as identified
2273
+     *      by get_class of bean. Each value at the first level is an array of values for that
2274
+     *      bean identified by name of fields. If we want to pass multiple values for a name,
2275
+     *      pass it as an array. If where is not passed, all the rows will be returned.
2276
+     *
2277
+     * @return string SQL Select Statement
2278
+     */
2279
+    public function retrieveViewSQL(array $beans, array $cols = array(), array $whereClause = array())
2280
+    {
2281
+        $relations = array(); // stores relations between tables as they are discovered
2282
+        $where = $select = array();
2283
+        foreach ($beans as $beanID => $bean) {
2284
+            $tableName = $bean->getTableName();
2285
+            $beanTables[$beanID] = $tableName;
2286
+
2287
+            $table = $beanID;
2288
+            $tables[$table] = $tableName;
2289
+            $aliases[$tableName][] = $table;
2290
+
2291
+            // build part of select for this table
2292
+            if (is_array($cols[$beanID]))
2293
+                foreach ($cols[$beanID] as $def) $select[] = $table.".".$def['name'];
2294
+
2295
+            // build part of where clause
2296
+            if (is_array($whereClause[$beanID])){
2297
+                $where[] = $this->getColumnWhereClause($table, $whereClause[$beanID]);
2298
+            }
2299
+            // initialize so that it can be used properly in form clause generation
2300
+            $table_used_in_from[$table] = false;
2301
+
2302
+            $indices = $bean->getIndices();
2303
+            foreach ($indices as $index){
2304
+                if ($index['type'] == 'foreign') {
2305
+                    $relationship[$table][] = array('foreignTable'=> $index['foreignTable']
2306
+                                                ,'foreignColumn'=>$index['foreignField']
2307
+                                                ,'localColumn'=> $index['fields']
2308
+                                                );
2309
+                }
2310
+            }
2311
+            $where[] = " $table.deleted = 0";
2312
+        }
2313
+
2314
+        // join these clauses
2315
+        $select = !empty($select) ? implode(",", $select) : "*";
2316
+        $where = implode(" AND ", $where);
2317
+
2318
+        // generate the from clause. Use relations array to generate outer joins
2319
+        // all the rest of the tables will be used as a simple from
2320
+        // relations table define relations between table1 and table2 through column on table 1
2321
+        // table2 is assumed to joining through primary key called id
2322
+        $separator = "";
2323
+        $from = ''; $table_used_in_from = array();
2324
+        foreach ($relations as $table1 => $rightsidearray){
2325
+            if ($table_used_in_from[$table1]) continue; // table has been joined
2326
+
2327
+            $from .= $separator." ".$table1;
2328
+            $table_used_in_from[$table1] = true;
2329
+            foreach ($rightsidearray as $tablearray){
2330
+                $table2 = $tablearray['foreignTable']; // get foreign table
2331
+                $tableAlias = $aliases[$table2]; // get a list of aliases for this table
2332
+                foreach ($tableAlias as $table2) {
2333
+                    //choose first alias that does not match
2334
+                    // we are doing this because of self joins.
2335
+                    // in case of self joins, the same table will have many aliases.
2336
+                    if ($table2 != $table1) break;
2337
+                }
2338
+
2339
+                $col = $tablearray['foreingColumn'];
2340
+                $name = $tablearray['localColumn'];
2341
+                $from .= " LEFT JOIN $table on ($table1.$name = $table2.$col)";
2342
+                $table_used_in_from[$table2] = true;
2343
+            }
2344
+            $separator = ",";
2345
+        }
2346
+
2347
+        return "SELECT $select FROM $from WHERE $where";
2348
+    }
2349
+
2350
+    /**
2351
+     * Generates SQL for create index statement for a bean.
2352
+     *
2353
+     * @param  SugarBean $bean SugarBean instance
2354
+     * @param  array  $fields fields used in the index
2355
+     * @param  string $name index name
2356
+     * @param  bool   $unique Optional, set to true if this is an unique index
2357
+     * @return string SQL Select Statement
2358
+     */
2359
+    public function createIndexSQL(SugarBean $bean, array $fields, $name, $unique = true)
2360
+    {
2361
+        $unique = ($unique) ? "unique" : "";
2362
+        $tablename = $bean->getTableName();
2363
+        $columns = array();
2364
+        // get column names
2365
+        foreach ($fields as $fieldDef)
2366
+            $columns[] = $fieldDef['name'];
2367
+
2368
+        if (empty($columns))
2369
+            return "";
2370
+
2371
+        $columns = implode(",", $columns);
2372
+
2373
+        return "CREATE $unique INDEX $name ON $tablename ($columns)";
2374
+    }
2375
+
2376
+    /**
2377
+     * Returns the type of the variable in the field
2378
+     *
2379
+     * @param  array $fieldDef Vardef-format field def
2380
+     * @return string
2381
+     */
2382
+    public function getFieldType($fieldDef)
2383
+    {
2384
+        // get the type for db type. if that is not set,
2385
+        // get it from type. This is done so that
2386
+        // we do not have change a lot of existing code
2387
+        // and add dbtype where type is being used for some special
2388
+        // purposes like referring to foreign table etc.
2389
+        if(!empty($fieldDef['dbType']))
2390
+            return  $fieldDef['dbType'];
2391
+        if(!empty($fieldDef['dbtype']))
2392
+            return  $fieldDef['dbtype'];
2393
+        if (!empty($fieldDef['type']))
2394
+            return  $fieldDef['type'];
2395
+        if (!empty($fieldDef['Type']))
2396
+            return  $fieldDef['Type'];
2397
+        if (!empty($fieldDef['data_type']))
2398
+            return  $fieldDef['data_type'];
2399
+
2400
+        return null;
2401
+    }
2402
+
2403
+    /**
2404
+     * retrieves the different components from the passed column type as it is used in the type mapping and vardefs
2405
+     * type format: <baseType>[(<len>[,<scale>])]
2406
+     * @param string $type Column type
2407
+     * @return array|bool array containing the different components of the passed in type or false in case the type contains illegal characters
2408
+     */
2409
+    public function getTypeParts($type)
2410
+    {
2411
+        if(preg_match("#(?P<type>\w+)\s*(?P<arg>\((?P<len>\w+)\s*(,\s*(?P<scale>\d+))*\))*#", $type, $matches))
2412
+        {
2413
+            $return = array();  // Not returning matches array as such as we don't want to expose the regex make up on the interface
2414
+            $return['baseType'] = $matches['type'];
2415
+            if( isset($matches['arg'])) {
2416
+                $return['arg'] = $matches['arg'];
2417
+            }
2418
+            if( isset($matches['len'])) {
2419
+                $return['len'] = $matches['len'];
2420
+            }
2421
+            if( isset($matches['scale'])) {
2422
+                $return['scale'] = $matches['scale'];
2423
+            }
2424
+            return $return;
2425
+        } else {
2426
+            return false;
2427
+        }
2428
+    }
2429
+
2430
+    /**
2431
+     * Returns the defintion for a single column
2432
+     *
2433
+     * @param  array  $fieldDef Vardef-format field def
2434
+     * @param  bool   $ignoreRequired  Optional, true if we should ignore this being a required field
2435
+     * @param  string $table           Optional, table name
2436
+     * @param  bool   $return_as_array Optional, true if we should return the result as an array instead of sql
2437
+     * @return string or array if $return_as_array is true
2438
+     */
2439
+    protected function oneColumnSQLRep($fieldDef, $ignoreRequired = false, $table = '', $return_as_array = false)
2440
+    {
2441
+        $name = $fieldDef['name'];
2442
+        $type = $this->getFieldType($fieldDef);
2443
+        $colType = $this->getColumnType($type);
2444
+
2445
+        if($parts = $this->getTypeParts($colType))
2446
+        {
2447
+            $colBaseType = $parts['baseType'];
2448
+            $defLen =  isset($parts['len']) ? $parts['len'] : '255'; // Use the mappings length (precision) as default if it exists
2449
+        }
2450
+
2451
+        if(!empty($fieldDef['len'])) {
2452
+            if (in_array($colBaseType, array( 'nvarchar', 'nchar', 'varchar', 'varchar2', 'char',
2453
+                                            'clob', 'blob', 'text'))) {
2454
+                    $colType = "$colBaseType(${fieldDef['len']})";
2455
+            } elseif(($colBaseType == 'decimal' || $colBaseType == 'float')){
2456
+                    if(!empty($fieldDef['precision']) && is_numeric($fieldDef['precision']))
2457
+                        if(strpos($fieldDef['len'],',') === false){
2458
+                            $colType = $colBaseType . "(".$fieldDef['len'].",".$fieldDef['precision'].")";
2459
+                        }else{
2460
+                            $colType = $colBaseType . "(".$fieldDef['len'].")";
2461
+                        }
2462
+                    else
2463
+                            $colType = $colBaseType . "(".$fieldDef['len'].")";
2464
+                }
2465
+        } else {
2466
+            if (in_array($colBaseType, array( 'nvarchar', 'nchar', 'varchar', 'varchar2', 'char'))) {
2467
+                $colType = "$colBaseType($defLen)";
2468
+            }
2469
+        }
2470
+
2471
+        $default = '';
2472
+
2473
+        // Bug #52610 We should have ability don't add DEFAULT part to query for boolean fields
2474
+        if (!empty($fieldDef['no_default']))
2475
+        {
2476
+            // nothing to do
2477
+        }
2478
+        elseif (isset($fieldDef['default']) && strlen($fieldDef['default']) > 0)
2479
+        {
2480
+            $default = " DEFAULT ".$this->quoted($fieldDef['default']);
2481
+        }
2482
+        elseif (!isset($default) && $type == 'bool')
2483
+        {
2484
+            $default = " DEFAULT 0 ";
2485
+        }
2486
+
2487
+        $auto_increment = '';
2488
+        if(!empty($fieldDef['auto_increment']) && $fieldDef['auto_increment'])
2489
+            $auto_increment = $this->setAutoIncrement($table , $fieldDef['name']);
2490
+
2491
+        $required = 'NULL';  // MySQL defaults to NULL, SQL Server defaults to NOT NULL -- must specify
2492
+        //Starting in 6.0, only ID and auto_increment fields will be NOT NULL in the DB.
2493
+        if ((empty($fieldDef['isnull']) || strtolower($fieldDef['isnull']) == 'false') &&
2494
+            (!empty($auto_increment) || $name == 'id' || ($fieldDef['type'] == 'id' && !empty($fieldDef['required'])))) {
2495
+            $required =  "NOT NULL";
2496
+        }
2497
+        // If the field is marked both required & isnull=>false - alwqys make it not null
2498
+        // Use this to ensure primary key fields never defined as null
2499
+        if(isset($fieldDef['isnull']) && (strtolower($fieldDef['isnull']) == 'false' || $fieldDef['isnull'] === false)
2500
+            && !empty($fieldDef['required'])) {
2501
+            $required =  "NOT NULL";
2502
+        }
2503
+        if ($ignoreRequired)
2504
+            $required = "";
2505
+
2506
+        if ( $return_as_array ) {
2507
+            return array(
2508
+                'name' => $name,
2509
+                'colType' => $colType,
2510
+                'colBaseType' => $colBaseType,  // Adding base type for easier processing in derived classes
2511
+                'default' => $default,
2512
+                'required' => $required,
2513
+                'auto_increment' => $auto_increment,
2514
+                'full' => "$name $colType $default $required $auto_increment",
2515
+                );
2516
+        } else {
2517
+            return "$name $colType $default $required $auto_increment";
2518
+        }
2519
+    }
2520
+
2521
+    /**
2522
+     * Returns SQL defintions for all columns in a table
2523
+     *
2524
+     * @param  array  $fieldDefs  Vardef-format field def
2525
+     * @param  bool   $ignoreRequired Optional, true if we should ignor this being a required field
2526
+     * @param  string $tablename      Optional, table name
2527
+     * @return string SQL column definitions
2528
+     */
2529
+    protected function columnSQLRep($fieldDefs, $ignoreRequired = false, $tablename)
2530
+    {
2531
+        $columns = array();
2532
+
2533
+        if ($this->isFieldArray($fieldDefs)) {
2534
+            foreach ($fieldDefs as $fieldDef) {
2535
+                if(!isset($fieldDef['source']) || $fieldDef['source'] == 'db') {
2536
+                    $columns[] = $this->oneColumnSQLRep($fieldDef,false, $tablename);
2537
+                }
2538
+            }
2539
+            $columns = implode(",", $columns);
2540
+        }
2541
+        else {
2542
+            $columns = $this->oneColumnSQLRep($fieldDefs,$ignoreRequired, $tablename);
2543
+        }
2544
+
2545
+        return $columns;
2546
+    }
2547
+
2548
+    /**
2549
+     * Returns the next value for an auto increment
2550
+     * @abstract
2551
+     * @param  string $table Table name
2552
+     * @param  string $field_name Field name
2553
+     * @return string
2554
+     */
2555
+    public function getAutoIncrement($table, $field_name)
2556
+    {
2557
+        return "";
2558
+    }
2559
+
2560
+    /**
2561
+     * Returns the sql for the next value in a sequence
2562
+     * @abstract
2563
+     * @param  string $table  Table name
2564
+     * @param  string $field_name  Field name
2565
+     * @return string
2566
+     */
2567
+    public function getAutoIncrementSQL($table, $field_name)
2568
+    {
2569
+        return "";
2570
+    }
2571
+
2572
+    /**
2573
+     * Either creates an auto increment through queries or returns sql for auto increment
2574
+     * that can be appended to the end of column defination (mysql)
2575
+     * @abstract
2576
+     * @param  string $table Table name
2577
+     * @param  string $field_name Field name
2578
+     * @return string
2579
+     */
2580
+    protected function setAutoIncrement($table, $field_name)
2581
+    {
2582
+        $this->deleteAutoIncrement($table, $field_name);
2583
+        return "";
2584
+    }
2585
+
2586
+    /**
2587
+     * Sets the next auto-increment value of a column to a specific value.
2588
+     * @abstract
2589
+     * @param  string $table Table name
2590
+     * @param  string $field_name Field name
2591
+     * @param  int $start_value  Starting autoincrement value
2592
+     * @return string
2593
+     *
2594
+     */
2595
+    public function setAutoIncrementStart($table, $field_name, $start_value)
2596
+    {
2597
+        return "";
2598
+    }
2599
+
2600
+    /**
2601
+     * Deletes an auto increment
2602
+     * @abstract
2603
+     * @param string $table tablename
2604
+     * @param string $field_name
2605
+     */
2606
+    public function deleteAutoIncrement($table, $field_name)
2607
+    {
2608
+        return;
2609
+    }
2610
+
2611
+    /**
2612
+     * This method generates sql for adding a column to table identified by field def.
2613
+     *
2614
+     * @param  string $tablename
2615
+     * @param  array  $fieldDefs
2616
+     * @return string SQL statement
2617
+     */
2618
+    public function addColumnSQL($tablename, $fieldDefs)
2619
+    {
2620
+        return $this->changeColumnSQL($tablename, $fieldDefs, 'add');
2621
+    }
2622
+
2623
+    /**
2624
+     * This method genrates sql for altering old column identified by oldFieldDef to new fieldDef.
2625
+     *
2626
+     * @param  string $tablename
2627
+     * @param  array  $newFieldDefs
2628
+     * @param  bool  $ignorerequired Optional, true if we should ignor this being a required field
2629
+     * @return string|array SQL statement(s)
2630
+     */
2631
+    public function alterColumnSQL($tablename, $newFieldDefs, $ignorerequired = false)
2632
+    {
2633
+        return $this->changeColumnSQL($tablename, $newFieldDefs, 'modify', $ignorerequired);
2634
+    }
2247 2635
 
2248 2636
     /**
2249
-     * Generates SQL for select statement for any bean identified by id.
2637
+     * Generates SQL for dropping a table.
2250 2638
      *
2251
-     * @param  SugarBean $bean SugarBean instance
2252
-     * @param  array  $where where conditions in an array
2253
-     * @return string SQL Select Statement
2639
+     * @param  SugarBean $bean Sugarbean instance
2640
+     * @return string SQL statement
2254 2641
      */
2255
-	public function retrieveSQL(SugarBean $bean, array $where)
2256
-	{
2257
-		$where = $this->getWhereClause($bean, $this->updateWhereArray($bean, $where));
2258
-		return "SELECT * FROM ".$bean->getTableName()." $where AND deleted=0";
2259
-	}
2642
+    public function dropTableSQL(SugarBean $bean)
2643
+    {
2644
+        return $this->dropTableNameSQL($bean->getTableName());
2645
+    }
2260 2646
 
2261 2647
     /**
2262
-     * This method implements a generic sql for a collection of beans.
2648
+     * Generates SQL for dropping a table.
2263 2649
      *
2264
-     * Currently, this function does not support outer joins.
2650
+     * @param  string $name table name
2651
+     * @return string SQL statement
2652
+     */
2653
+    public function dropTableNameSQL($name)
2654
+    {
2655
+        return "DROP TABLE ".$name;
2656
+    }
2657
+
2658
+    /**
2659
+     * Generates SQL for truncating a table.
2660
+     * @param  string $name  table name
2661
+     * @return string
2662
+     */
2663
+    public function truncateTableSQL($name)
2664
+    {
2665
+        return "TRUNCATE $name";
2666
+    }
2667
+
2668
+    /**
2669
+     * This method generates sql that deletes a column identified by fieldDef.
2265 2670
      *
2266
-     * @param array $beans Array of values returned by get_class method as the keys and a bean as
2267
-     *      the value for that key. These beans will be joined in the sql by the key
2268
-     *      attribute of field defs.
2269
-     * @param  array $cols Optional, columns to be returned with the keys as names of bean
2270
-     *      as identified by get_class of bean. Values of this array is the array of fieldDefs
2271
-     *      to be returned for a bean. If an empty array is passed, all columns are selected.
2272
-     * @param  array $whereClause Optional, values with the keys as names of bean as identified
2273
-     *      by get_class of bean. Each value at the first level is an array of values for that
2274
-     *      bean identified by name of fields. If we want to pass multiple values for a name,
2275
-     *      pass it as an array. If where is not passed, all the rows will be returned.
2671
+     * @param  SugarBean $bean      Sugarbean instance
2672
+     * @param  array  $fieldDefs
2673
+     * @return string SQL statement
2674
+     */
2675
+    public function deleteColumnSQL(SugarBean $bean, $fieldDefs)
2676
+    {
2677
+        return $this->dropColumnSQL($bean->getTableName(), $fieldDefs);
2678
+    }
2679
+
2680
+    /**
2681
+     * This method generates sql that drops a column identified by fieldDef.
2682
+     * Designed to work like the other addColumnSQL() and alterColumnSQL() functions
2276 2683
      *
2277
-     * @return string SQL Select Statement
2684
+     * @param  string $tablename
2685
+     * @param  array  $fieldDefs
2686
+     * @return string SQL statement
2278 2687
      */
2279
-	public function retrieveViewSQL(array $beans, array $cols = array(), array $whereClause = array())
2280
-	{
2281
-		$relations = array(); // stores relations between tables as they are discovered
2282
-		$where = $select = array();
2283
-		foreach ($beans as $beanID => $bean) {
2284
-			$tableName = $bean->getTableName();
2285
-			$beanTables[$beanID] = $tableName;
2286
-
2287
-			$table = $beanID;
2288
-			$tables[$table] = $tableName;
2289
-			$aliases[$tableName][] = $table;
2290
-
2291
-			// build part of select for this table
2292
-			if (is_array($cols[$beanID]))
2293
-				foreach ($cols[$beanID] as $def) $select[] = $table.".".$def['name'];
2294
-
2295
-			// build part of where clause
2296
-			if (is_array($whereClause[$beanID])){
2297
-				$where[] = $this->getColumnWhereClause($table, $whereClause[$beanID]);
2298
-			}
2299
-			// initialize so that it can be used properly in form clause generation
2300
-			$table_used_in_from[$table] = false;
2301
-
2302
-			$indices = $bean->getIndices();
2303
-			foreach ($indices as $index){
2304
-				if ($index['type'] == 'foreign') {
2305
-					$relationship[$table][] = array('foreignTable'=> $index['foreignTable']
2306
-												,'foreignColumn'=>$index['foreignField']
2307
-												,'localColumn'=> $index['fields']
2308
-												);
2309
-				}
2310
-			}
2311
-			$where[] = " $table.deleted = 0";
2312
-		}
2313
-
2314
-		// join these clauses
2315
-		$select = !empty($select) ? implode(",", $select) : "*";
2316
-		$where = implode(" AND ", $where);
2317
-
2318
-		// generate the from clause. Use relations array to generate outer joins
2319
-		// all the rest of the tables will be used as a simple from
2320
-		// relations table define relations between table1 and table2 through column on table 1
2321
-		// table2 is assumed to joining through primary key called id
2322
-		$separator = "";
2323
-		$from = ''; $table_used_in_from = array();
2324
-		foreach ($relations as $table1 => $rightsidearray){
2325
-			if ($table_used_in_from[$table1]) continue; // table has been joined
2326
-
2327
-			$from .= $separator." ".$table1;
2328
-			$table_used_in_from[$table1] = true;
2329
-			foreach ($rightsidearray as $tablearray){
2330
-				$table2 = $tablearray['foreignTable']; // get foreign table
2331
-				$tableAlias = $aliases[$table2]; // get a list of aliases for this table
2332
-				foreach ($tableAlias as $table2) {
2333
-					//choose first alias that does not match
2334
-					// we are doing this because of self joins.
2335
-					// in case of self joins, the same table will have many aliases.
2336
-					if ($table2 != $table1) break;
2337
-				}
2338
-
2339
-				$col = $tablearray['foreingColumn'];
2340
-				$name = $tablearray['localColumn'];
2341
-				$from .= " LEFT JOIN $table on ($table1.$name = $table2.$col)";
2342
-				$table_used_in_from[$table2] = true;
2343
-			}
2344
-			$separator = ",";
2345
-		}
2346
-
2347
-		return "SELECT $select FROM $from WHERE $where";
2348
-	}
2349
-
2350
-	/**
2351
-	 * Generates SQL for create index statement for a bean.
2352
-	 *
2353
-	 * @param  SugarBean $bean SugarBean instance
2354
-	 * @param  array  $fields fields used in the index
2355
-	 * @param  string $name index name
2356
-	 * @param  bool   $unique Optional, set to true if this is an unique index
2357
-	 * @return string SQL Select Statement
2358
-	 */
2359
-	public function createIndexSQL(SugarBean $bean, array $fields, $name, $unique = true)
2360
-	{
2361
-		$unique = ($unique) ? "unique" : "";
2362
-		$tablename = $bean->getTableName();
2363
-		$columns = array();
2364
-		// get column names
2365
-		foreach ($fields as $fieldDef)
2366
-			$columns[] = $fieldDef['name'];
2367
-
2368
-		if (empty($columns))
2369
-			return "";
2370
-
2371
-		$columns = implode(",", $columns);
2372
-
2373
-		return "CREATE $unique INDEX $name ON $tablename ($columns)";
2374
-	}
2375
-
2376
-	/**
2377
-	 * Returns the type of the variable in the field
2378
-	 *
2379
-	 * @param  array $fieldDef Vardef-format field def
2380
-	 * @return string
2381
-	 */
2382
-	public function getFieldType($fieldDef)
2383
-	{
2384
-		// get the type for db type. if that is not set,
2385
-		// get it from type. This is done so that
2386
-		// we do not have change a lot of existing code
2387
-		// and add dbtype where type is being used for some special
2388
-		// purposes like referring to foreign table etc.
2389
-		if(!empty($fieldDef['dbType']))
2390
-			return  $fieldDef['dbType'];
2391
-		if(!empty($fieldDef['dbtype']))
2392
-			return  $fieldDef['dbtype'];
2393
-		if (!empty($fieldDef['type']))
2394
-			return  $fieldDef['type'];
2395
-		if (!empty($fieldDef['Type']))
2396
-			return  $fieldDef['Type'];
2397
-		if (!empty($fieldDef['data_type']))
2398
-			return  $fieldDef['data_type'];
2399
-
2400
-		return null;
2401
-	}
2688
+    public function dropColumnSQL($tablename, $fieldDefs)
2689
+    {
2690
+        return $this->changeColumnSQL($tablename, $fieldDefs, 'drop');
2691
+    }
2402 2692
 
2403 2693
     /**
2404
-     * retrieves the different components from the passed column type as it is used in the type mapping and vardefs
2405
-     * type format: <baseType>[(<len>[,<scale>])]
2406
-     * @param string $type Column type
2407
-     * @return array|bool array containing the different components of the passed in type or false in case the type contains illegal characters
2694
+     * Return a version of $proposed that can be used as a column name in any of our supported databases
2695
+     * Practically this means no longer than 25 characters as the smallest identifier length for our supported DBs is 30 chars for Oracle plus we add on at least four characters in some places (for indicies for example)
2696
+     * @param string|array $name Proposed name for the column
2697
+     * @param bool|string $ensureUnique Ensure the name is unique
2698
+     * @param string $type Name type (table, column)
2699
+     * @param bool $force Force new name
2700
+     * @return string|array Valid column name trimmed to right length and with invalid characters removed
2408 2701
      */
2409
-    public function getTypeParts($type)
2702
+    public function getValidDBName($name, $ensureUnique = false, $type = 'column', $force = false)
2410 2703
     {
2411
-        if(preg_match("#(?P<type>\w+)\s*(?P<arg>\((?P<len>\w+)\s*(,\s*(?P<scale>\d+))*\))*#", $type, $matches))
2412
-        {
2413
-            $return = array();  // Not returning matches array as such as we don't want to expose the regex make up on the interface
2414
-            $return['baseType'] = $matches['type'];
2415
-            if( isset($matches['arg'])) {
2416
-                $return['arg'] = $matches['arg'];
2704
+        if(is_array($name)) {
2705
+            $result = array();
2706
+            foreach($name as $field) {
2707
+                $result[] = $this->getValidDBName($field, $ensureUnique, $type);
2417 2708
             }
2418
-            if( isset($matches['len'])) {
2419
-                $return['len'] = $matches['len'];
2709
+            return $result;
2710
+        } else {
2711
+            if(strchr($name, ".")) {
2712
+                // this is a compound name with dots, handle separately
2713
+                $parts = explode(".", $name);
2714
+                if(count($parts) > 2) {
2715
+                    // some weird name, cut to table.name
2716
+                    array_splice($parts, 0, count($parts)-2);
2717
+                }
2718
+                $parts = $this->getValidDBName($parts, $ensureUnique, $type, $force);
2719
+                return join(".", $parts);
2420 2720
             }
2421
-            if( isset($matches['scale'])) {
2422
-                $return['scale'] = $matches['scale'];
2721
+            // first strip any invalid characters - all but word chars (which is alphanumeric and _)
2722
+            $name = preg_replace( '/[^\w]+/i', '', $name ) ;
2723
+            $len = strlen( $name ) ;
2724
+            $maxLen = empty($this->maxNameLengths[$type]) ? $this->maxNameLengths[$type]['column'] : $this->maxNameLengths[$type];
2725
+            if ($len <= $maxLen && !$force) {
2726
+                return strtolower($name);
2727
+            }
2728
+            if ($ensureUnique) {
2729
+                $md5str = md5($name);
2730
+                $tail = substr ( $name, -11) ;
2731
+                $temp = substr($md5str , strlen($md5str)-4 );
2732
+                $result = substr( $name, 0, 10) . $temp . $tail ;
2733
+            } else {
2734
+                $result = substr( $name, 0, 11) . substr( $name, 11 - $maxLen);
2423 2735
             }
2424
-            return $return;
2425
-        } else {
2426
-            return false;
2427
-        }
2428
-    }
2429
-
2430
-	/**
2431
-	 * Returns the defintion for a single column
2432
-	 *
2433
-	 * @param  array  $fieldDef Vardef-format field def
2434
-	 * @param  bool   $ignoreRequired  Optional, true if we should ignore this being a required field
2435
-	 * @param  string $table           Optional, table name
2436
-	 * @param  bool   $return_as_array Optional, true if we should return the result as an array instead of sql
2437
-	 * @return string or array if $return_as_array is true
2438
-	 */
2439
-	protected function oneColumnSQLRep($fieldDef, $ignoreRequired = false, $table = '', $return_as_array = false)
2440
-	{
2441
-		$name = $fieldDef['name'];
2442
-		$type = $this->getFieldType($fieldDef);
2443
-        $colType = $this->getColumnType($type);
2444 2736
 
2445
-        if($parts = $this->getTypeParts($colType))
2446
-        {
2447
-            $colBaseType = $parts['baseType'];
2448
-            $defLen =  isset($parts['len']) ? $parts['len'] : '255'; // Use the mappings length (precision) as default if it exists
2737
+            return strtolower( $result ) ;
2449 2738
         }
2739
+    }
2450 2740
 
2451
-        if(!empty($fieldDef['len'])) {
2452
-            if (in_array($colBaseType, array( 'nvarchar', 'nchar', 'varchar', 'varchar2', 'char',
2453
-                                          'clob', 'blob', 'text'))) {
2454
-          	    $colType = "$colBaseType(${fieldDef['len']})";
2455
-            } elseif(($colBaseType == 'decimal' || $colBaseType == 'float')){
2456
-                  if(!empty($fieldDef['precision']) && is_numeric($fieldDef['precision']))
2457
-                      if(strpos($fieldDef['len'],',') === false){
2458
-                          $colType = $colBaseType . "(".$fieldDef['len'].",".$fieldDef['precision'].")";
2459
-                      }else{
2460
-                          $colType = $colBaseType . "(".$fieldDef['len'].")";
2461
-                      }
2462
-                  else
2463
-                          $colType = $colBaseType . "(".$fieldDef['len'].")";
2464
-              }
2465
-        } else {
2466
-            if (in_array($colBaseType, array( 'nvarchar', 'nchar', 'varchar', 'varchar2', 'char'))) {
2467
-                $colType = "$colBaseType($defLen)";
2468
-            }
2469
-        }
2741
+    /**
2742
+     * Returns the valid type for a column given the type in fieldDef
2743
+     *
2744
+     * @param  string $type field type
2745
+     * @return string valid type for the given field
2746
+     */
2747
+    public function getColumnType($type)
2748
+    {
2749
+        return isset($this->type_map[$type])?$this->type_map[$type]:$type;
2750
+    }
2470 2751
 
2471
-        $default = '';
2752
+    /**
2753
+     * Checks to see if passed array is truely an array of defitions
2754
+     *
2755
+     * Such an array may have type as a key but it will point to an array
2756
+     * for a true array of definitions an to a col type for a definition only
2757
+     *
2758
+     * @param  mixed $defArray
2759
+     * @return bool
2760
+     */
2761
+    public function isFieldArray($defArray)
2762
+    {
2763
+        if ( !is_array($defArray) )
2764
+            return false;
2472 2765
 
2473
-        // Bug #52610 We should have ability don't add DEFAULT part to query for boolean fields
2474
-        if (!empty($fieldDef['no_default']))
2475
-        {
2476
-            // nothing to do
2477
-        }
2478
-        elseif (isset($fieldDef['default']) && strlen($fieldDef['default']) > 0)
2479
-        {
2480
-            $default = " DEFAULT ".$this->quoted($fieldDef['default']);
2481
-        }
2482
-        elseif (!isset($default) && $type == 'bool')
2483
-        {
2484
-            $default = " DEFAULT 0 ";
2766
+        if ( isset($defArray['type']) ){
2767
+            // type key exists. May be an array of defs or a simple definition
2768
+            return is_array($defArray['type']); // type is not an array => definition else array
2485 2769
         }
2486 2770
 
2487
-		$auto_increment = '';
2488
-		if(!empty($fieldDef['auto_increment']) && $fieldDef['auto_increment'])
2489
-			$auto_increment = $this->setAutoIncrement($table , $fieldDef['name']);
2490
-
2491
-		$required = 'NULL';  // MySQL defaults to NULL, SQL Server defaults to NOT NULL -- must specify
2492
-		//Starting in 6.0, only ID and auto_increment fields will be NOT NULL in the DB.
2493
-		if ((empty($fieldDef['isnull']) || strtolower($fieldDef['isnull']) == 'false') &&
2494
-			(!empty($auto_increment) || $name == 'id' || ($fieldDef['type'] == 'id' && !empty($fieldDef['required'])))) {
2495
-			$required =  "NOT NULL";
2496
-		}
2497
-		// If the field is marked both required & isnull=>false - alwqys make it not null
2498
-		// Use this to ensure primary key fields never defined as null
2499
-		if(isset($fieldDef['isnull']) && (strtolower($fieldDef['isnull']) == 'false' || $fieldDef['isnull'] === false)
2500
-			&& !empty($fieldDef['required'])) {
2501
-			$required =  "NOT NULL";
2502
-		}
2503
-		if ($ignoreRequired)
2504
-			$required = "";
2505
-
2506
-		if ( $return_as_array ) {
2507
-			return array(
2508
-				'name' => $name,
2509
-				'colType' => $colType,
2510
-                'colBaseType' => $colBaseType,  // Adding base type for easier processing in derived classes
2511
-				'default' => $default,
2512
-				'required' => $required,
2513
-				'auto_increment' => $auto_increment,
2514
-				'full' => "$name $colType $default $required $auto_increment",
2515
-				);
2516
-		} else {
2517
-			return "$name $colType $default $required $auto_increment";
2518
-		}
2519
-	}
2520
-
2521
-	/**
2522
-	 * Returns SQL defintions for all columns in a table
2523
-	 *
2524
-	 * @param  array  $fieldDefs  Vardef-format field def
2525
-	 * @param  bool   $ignoreRequired Optional, true if we should ignor this being a required field
2526
-	 * @param  string $tablename      Optional, table name
2527
-	 * @return string SQL column definitions
2528
-	 */
2529
-	protected function columnSQLRep($fieldDefs, $ignoreRequired = false, $tablename)
2530
-	{
2531
-		$columns = array();
2532
-
2533
-		if ($this->isFieldArray($fieldDefs)) {
2534
-			foreach ($fieldDefs as $fieldDef) {
2535
-				if(!isset($fieldDef['source']) || $fieldDef['source'] == 'db') {
2536
-					$columns[] = $this->oneColumnSQLRep($fieldDef,false, $tablename);
2537
-				}
2538
-			}
2539
-			$columns = implode(",", $columns);
2540
-		}
2541
-		else {
2542
-			$columns = $this->oneColumnSQLRep($fieldDefs,$ignoreRequired, $tablename);
2543
-		}
2544
-
2545
-		return $columns;
2546
-	}
2547
-
2548
-	/**
2549
-	 * Returns the next value for an auto increment
2550
-	 * @abstract
2551
-	 * @param  string $table Table name
2552
-	 * @param  string $field_name Field name
2553
-	 * @return string
2554
-	 */
2555
-	public function getAutoIncrement($table, $field_name)
2556
-	{
2557
-		return "";
2558
-	}
2559
-
2560
-	/**
2561
-	 * Returns the sql for the next value in a sequence
2562
-	 * @abstract
2563
-	 * @param  string $table  Table name
2564
-	 * @param  string $field_name  Field name
2565
-	 * @return string
2566
-	 */
2567
-	public function getAutoIncrementSQL($table, $field_name)
2568
-	{
2569
-		return "";
2570
-	}
2571
-
2572
-	/**
2573
-	 * Either creates an auto increment through queries or returns sql for auto increment
2574
-	 * that can be appended to the end of column defination (mysql)
2575
-	 * @abstract
2576
-	 * @param  string $table Table name
2577
-	 * @param  string $field_name Field name
2578
-	 * @return string
2579
-	 */
2580
-	protected function setAutoIncrement($table, $field_name)
2581
-	{
2582
-		$this->deleteAutoIncrement($table, $field_name);
2583
-		return "";
2584
-	}
2771
+        // type does not exist. Must be array of definitions
2772
+        return true;
2773
+    }
2585 2774
 
2586 2775
     /**
2587
-     * Sets the next auto-increment value of a column to a specific value.
2588
-     * @abstract
2589
-     * @param  string $table Table name
2590
-     * @param  string $field_name Field name
2591
-     * @param  int $start_value  Starting autoincrement value
2592
-     * @return string
2776
+     * returns true if the type can be mapped to a valid column type
2593 2777
      *
2778
+     * @param  string $type
2779
+     * @return bool
2594 2780
      */
2595
-	public function setAutoIncrementStart($table, $field_name, $start_value)
2596
-	{
2597
-		return "";
2598
-	}
2599
-
2600
-	/**
2601
-	 * Deletes an auto increment
2602
-	 * @abstract
2603
-	 * @param string $table tablename
2604
-	 * @param string $field_name
2605
-	 */
2606
-	public function deleteAutoIncrement($table, $field_name)
2607
-	{
2608
-		return;
2609
-	}
2610
-
2611
-	/**
2612
-	 * This method generates sql for adding a column to table identified by field def.
2613
-	 *
2614
-	 * @param  string $tablename
2615
-	 * @param  array  $fieldDefs
2616
-	 * @return string SQL statement
2617
-	 */
2618
-	public function addColumnSQL($tablename, $fieldDefs)
2619
-	{
2620
-	    return $this->changeColumnSQL($tablename, $fieldDefs, 'add');
2621
-	}
2622
-
2623
-	/**
2624
-	 * This method genrates sql for altering old column identified by oldFieldDef to new fieldDef.
2625
-	 *
2626
-	 * @param  string $tablename
2627
-	 * @param  array  $newFieldDefs
2628
-	 * @param  bool  $ignorerequired Optional, true if we should ignor this being a required field
2629
-	 * @return string|array SQL statement(s)
2630
-	 */
2631
-	public function alterColumnSQL($tablename, $newFieldDefs, $ignorerequired = false)
2632
-	{
2633
-		return $this->changeColumnSQL($tablename, $newFieldDefs, 'modify', $ignorerequired);
2634
-	}
2635
-
2636
-	/**
2637
-	 * Generates SQL for dropping a table.
2638
-	 *
2639
-	 * @param  SugarBean $bean Sugarbean instance
2640
-	 * @return string SQL statement
2641
-	 */
2642
-	public function dropTableSQL(SugarBean $bean)
2643
-	{
2644
-		return $this->dropTableNameSQL($bean->getTableName());
2645
-	}
2646
-
2647
-	/**
2648
-	 * Generates SQL for dropping a table.
2649
-	 *
2650
-	 * @param  string $name table name
2651
-	 * @return string SQL statement
2652
-	 */
2653
-	public function dropTableNameSQL($name)
2654
-	{
2655
-		return "DROP TABLE ".$name;
2656
-	}
2657
-
2658
-	/**
2659
-	 * Generates SQL for truncating a table.
2660
-	 * @param  string $name  table name
2661
-	 * @return string
2662
-	 */
2663
-	public function truncateTableSQL($name)
2664
-	{
2665
-		return "TRUNCATE $name";
2666
-	}
2667
-
2668
-	/**
2669
-	 * This method generates sql that deletes a column identified by fieldDef.
2670
-	 *
2671
-	 * @param  SugarBean $bean      Sugarbean instance
2672
-	 * @param  array  $fieldDefs
2673
-	 * @return string SQL statement
2674
-	 */
2675
-	public function deleteColumnSQL(SugarBean $bean, $fieldDefs)
2676
-	{
2677
-		return $this->dropColumnSQL($bean->getTableName(), $fieldDefs);
2678
-	}
2679
-
2680
-	/**
2681
-	 * This method generates sql that drops a column identified by fieldDef.
2682
-	 * Designed to work like the other addColumnSQL() and alterColumnSQL() functions
2683
-	 *
2684
-	 * @param  string $tablename
2685
-	 * @param  array  $fieldDefs
2686
-	 * @return string SQL statement
2687
-	 */
2688
-	public function dropColumnSQL($tablename, $fieldDefs)
2689
-	{
2690
-		return $this->changeColumnSQL($tablename, $fieldDefs, 'drop');
2691
-	}
2781
+    protected function validColumnType($type)
2782
+    {
2783
+        $type = $this->getColumnType($type);
2784
+        return !empty($type);
2785
+    }
2692 2786
 
2693 2787
     /**
2694
-     * Return a version of $proposed that can be used as a column name in any of our supported databases
2695
-     * Practically this means no longer than 25 characters as the smallest identifier length for our supported DBs is 30 chars for Oracle plus we add on at least four characters in some places (for indicies for example)
2696
-     * @param string|array $name Proposed name for the column
2697
-     * @param bool|string $ensureUnique Ensure the name is unique
2698
-     * @param string $type Name type (table, column)
2699
-     * @param bool $force Force new name
2700
-     * @return string|array Valid column name trimmed to right length and with invalid characters removed
2701
-     */
2702
-	public function getValidDBName($name, $ensureUnique = false, $type = 'column', $force = false)
2703
-	{
2704
-		if(is_array($name)) {
2705
-			$result = array();
2706
-			foreach($name as $field) {
2707
-				$result[] = $this->getValidDBName($field, $ensureUnique, $type);
2708
-			}
2709
-			return $result;
2710
-		} else {
2711
-		    if(strchr($name, ".")) {
2712
-		        // this is a compound name with dots, handle separately
2713
-		        $parts = explode(".", $name);
2714
-		        if(count($parts) > 2) {
2715
-		            // some weird name, cut to table.name
2716
-		            array_splice($parts, 0, count($parts)-2);
2717
-		        }
2718
-		        $parts = $this->getValidDBName($parts, $ensureUnique, $type, $force);
2719
-                return join(".", $parts);
2720
-		    }
2721
-			// first strip any invalid characters - all but word chars (which is alphanumeric and _)
2722
-			$name = preg_replace( '/[^\w]+/i', '', $name ) ;
2723
-			$len = strlen( $name ) ;
2724
-			$maxLen = empty($this->maxNameLengths[$type]) ? $this->maxNameLengths[$type]['column'] : $this->maxNameLengths[$type];
2725
-			if ($len <= $maxLen && !$force) {
2726
-				return strtolower($name);
2727
-			}
2728
-			if ($ensureUnique) {
2729
-				$md5str = md5($name);
2730
-				$tail = substr ( $name, -11) ;
2731
-				$temp = substr($md5str , strlen($md5str)-4 );
2732
-				$result = substr( $name, 0, 10) . $temp . $tail ;
2733
-			} else {
2734
-				$result = substr( $name, 0, 11) . substr( $name, 11 - $maxLen);
2735
-			}
2736
-
2737
-			return strtolower( $result ) ;
2738
-		}
2739
-	}
2740
-
2741
-	/**
2742
-	 * Returns the valid type for a column given the type in fieldDef
2743
-	 *
2744
-	 * @param  string $type field type
2745
-	 * @return string valid type for the given field
2746
-	 */
2747
-	public function getColumnType($type)
2748
-	{
2749
-		return isset($this->type_map[$type])?$this->type_map[$type]:$type;
2750
-	}
2751
-
2752
-	/**
2753
-	 * Checks to see if passed array is truely an array of defitions
2754
-	 *
2755
-	 * Such an array may have type as a key but it will point to an array
2756
-	 * for a true array of definitions an to a col type for a definition only
2757
-	 *
2758
-	 * @param  mixed $defArray
2759
-	 * @return bool
2760
-	 */
2761
-	public function isFieldArray($defArray)
2762
-	{
2763
-		if ( !is_array($defArray) )
2764
-			return false;
2765
-
2766
-		if ( isset($defArray['type']) ){
2767
-			// type key exists. May be an array of defs or a simple definition
2768
-			return is_array($defArray['type']); // type is not an array => definition else array
2769
-		}
2770
-
2771
-		// type does not exist. Must be array of definitions
2772
-		return true;
2773
-	}
2774
-
2775
-	/**
2776
-	 * returns true if the type can be mapped to a valid column type
2777
-	 *
2778
-	 * @param  string $type
2779
-	 * @return bool
2780
-	 */
2781
-	protected function validColumnType($type)
2782
-	{
2783
-		$type = $this->getColumnType($type);
2784
-		return !empty($type);
2785
-	}
2786
-
2787
-	/**
2788
-	 * Generate query for audit table
2789
-	 * @param SugarBean $bean SugarBean that was changed
2790
-	 * @param array $changes List of changes, contains 'before' and 'after'
2788
+     * Generate query for audit table
2789
+     * @param SugarBean $bean SugarBean that was changed
2790
+     * @param array $changes List of changes, contains 'before' and 'after'
2791 2791
      * @return string  Audit table INSERT query
2792 2792
      */
2793
-	protected function auditSQL(SugarBean $bean, $changes)
2794
-	{
2795
-		global $current_user;
2796
-		$sql = "INSERT INTO ".$bean->get_audit_table_name();
2797
-		//get field defs for the audit table.
2798
-		require('metadata/audit_templateMetaData.php');
2799
-		$fieldDefs = $dictionary['audit']['fields'];
2800
-
2801
-		$values=array();
2802
-		$values['id'] = $this->massageValue(create_guid(), $fieldDefs['id']);
2803
-		$values['parent_id']= $this->massageValue($bean->id, $fieldDefs['parent_id']);
2804
-		$values['field_name']= $this->massageValue($changes['field_name'], $fieldDefs['field_name']);
2805
-		$values['data_type'] = $this->massageValue($changes['data_type'], $fieldDefs['data_type']);
2806
-		if ($changes['data_type']=='text') {
2807
-			$values['before_value_text'] = $this->massageValue($changes['before'], $fieldDefs['before_value_text']);
2808
-			$values['after_value_text'] = $this->massageValue($changes['after'], $fieldDefs['after_value_text']);
2809
-		} else {
2810
-			$values['before_value_string'] = $this->massageValue($changes['before'], $fieldDefs['before_value_string']);
2811
-			$values['after_value_string'] = $this->massageValue($changes['after'], $fieldDefs['after_value_string']);
2812
-		}
2813
-		$values['date_created'] = $this->massageValue(TimeDate::getInstance()->nowDb(), $fieldDefs['date_created'] );
2814
-		$values['created_by'] = $this->massageValue($current_user->id, $fieldDefs['created_by']);
2815
-
2816
-		$sql .= "(".implode(",", array_keys($values)).") ";
2817
-		$sql .= "VALUES(".implode(",", $values).")";
2818
-		return $sql;
2819
-	}
2793
+    protected function auditSQL(SugarBean $bean, $changes)
2794
+    {
2795
+        global $current_user;
2796
+        $sql = "INSERT INTO ".$bean->get_audit_table_name();
2797
+        //get field defs for the audit table.
2798
+        require('metadata/audit_templateMetaData.php');
2799
+        $fieldDefs = $dictionary['audit']['fields'];
2800
+
2801
+        $values=array();
2802
+        $values['id'] = $this->massageValue(create_guid(), $fieldDefs['id']);
2803
+        $values['parent_id']= $this->massageValue($bean->id, $fieldDefs['parent_id']);
2804
+        $values['field_name']= $this->massageValue($changes['field_name'], $fieldDefs['field_name']);
2805
+        $values['data_type'] = $this->massageValue($changes['data_type'], $fieldDefs['data_type']);
2806
+        if ($changes['data_type']=='text') {
2807
+            $values['before_value_text'] = $this->massageValue($changes['before'], $fieldDefs['before_value_text']);
2808
+            $values['after_value_text'] = $this->massageValue($changes['after'], $fieldDefs['after_value_text']);
2809
+        } else {
2810
+            $values['before_value_string'] = $this->massageValue($changes['before'], $fieldDefs['before_value_string']);
2811
+            $values['after_value_string'] = $this->massageValue($changes['after'], $fieldDefs['after_value_string']);
2812
+        }
2813
+        $values['date_created'] = $this->massageValue(TimeDate::getInstance()->nowDb(), $fieldDefs['date_created'] );
2814
+        $values['created_by'] = $this->massageValue($current_user->id, $fieldDefs['created_by']);
2815
+
2816
+        $sql .= "(".implode(",", array_keys($values)).") ";
2817
+        $sql .= "VALUES(".implode(",", $values).")";
2818
+        return $sql;
2819
+    }
2820 2820
 
2821 2821
     /**
2822 2822
      * Saves changes to module's audit table
@@ -2826,10 +2826,10 @@  discard block
 block discarded – undo
2826 2826
      * @return bool query result
2827 2827
      *
2828 2828
      */
2829
-	public function save_audit_records(SugarBean $bean, $changes)
2830
-	{
2831
-		return $this->query($this->auditSQL($bean, $changes));
2832
-	}
2829
+    public function save_audit_records(SugarBean $bean, $changes)
2830
+    {
2831
+        return $this->query($this->auditSQL($bean, $changes));
2832
+    }
2833 2833
 
2834 2834
     /**
2835 2835
      * Finds fields whose value has changed.
@@ -2841,7 +2841,7 @@  discard block
 block discarded – undo
2841 2841
      * @return array
2842 2842
      */
2843 2843
     public function getDataChanges(SugarBean &$bean, array $field_filter = null)
2844
-	{
2844
+    {
2845 2845
         $changed_values=array();
2846 2846
 
2847 2847
         $fetched_row = array();
@@ -2918,10 +2918,10 @@  discard block
 block discarded – undo
2918 2918
                         }
2919 2919
                     }
2920 2920
                 }
2921
-			}
2922
-		}
2923
-		return $changed_values;
2924
-	}
2921
+            }
2922
+        }
2923
+        return $changed_values;
2924
+    }
2925 2925
 
2926 2926
     /**
2927 2927
      * Uses the audit enabled fields array to find fields whose value has changed.
@@ -2937,40 +2937,40 @@  discard block
 block discarded – undo
2937 2937
         return $this->getDataChanges($bean, array_keys($audit_fields));
2938 2938
     }
2939 2939
 
2940
-	/**
2941
-	 * Setup FT indexing
2942
-	 * @abstract
2943
-	 */
2944
-	public function full_text_indexing_setup()
2945
-	{
2946
-		// Most DBs have nothing to setup, so provide default empty function
2947
-	}
2948
-
2949
-	/**
2950
-	 * Quotes a string for storing in the database
2951
-	 * @deprecated
2952
-	 * Return value will be not surrounded by quotes
2953
-	 *
2954
-	 * @param  string $string
2955
-	 * @return string
2956
-	 */
2957
-	public function escape_quote($string)
2958
-	{
2959
-		return $this->quote($string);
2960
-	}
2961
-
2962
-	/**
2963
-	 * Quotes a string for storing in the database
2964
-	 * @deprecated
2965
-	 * Return value will be not surrounded by quotes
2966
-	 *
2967
-	 * @param  string $string
2968
-	 * @return string
2969
-	 */
2970
-	public function quoteFormEmail($string)
2971
-	{
2972
-		return $this->quote($string);
2973
-	}
2940
+    /**
2941
+     * Setup FT indexing
2942
+     * @abstract
2943
+     */
2944
+    public function full_text_indexing_setup()
2945
+    {
2946
+        // Most DBs have nothing to setup, so provide default empty function
2947
+    }
2948
+
2949
+    /**
2950
+     * Quotes a string for storing in the database
2951
+     * @deprecated
2952
+     * Return value will be not surrounded by quotes
2953
+     *
2954
+     * @param  string $string
2955
+     * @return string
2956
+     */
2957
+    public function escape_quote($string)
2958
+    {
2959
+        return $this->quote($string);
2960
+    }
2961
+
2962
+    /**
2963
+     * Quotes a string for storing in the database
2964
+     * @deprecated
2965
+     * Return value will be not surrounded by quotes
2966
+     *
2967
+     * @param  string $string
2968
+     * @return string
2969
+     */
2970
+    public function quoteFormEmail($string)
2971
+    {
2972
+        return $this->quote($string);
2973
+    }
2974 2974
 
2975 2975
     /**
2976 2976
      * Renames an index using fields definition
@@ -2980,49 +2980,49 @@  discard block
 block discarded – undo
2980 2980
      * @param  string $table_name
2981 2981
      * @return string SQL statement
2982 2982
      */
2983
-	public function renameIndexDefs($old_definition, $new_definition, $table_name)
2984
-	{
2985
-		return array($this->add_drop_constraint($table_name,$old_definition,true),
2986
-				$this->add_drop_constraint($table_name,$new_definition), false);
2987
-	}
2983
+    public function renameIndexDefs($old_definition, $new_definition, $table_name)
2984
+    {
2985
+        return array($this->add_drop_constraint($table_name,$old_definition,true),
2986
+                $this->add_drop_constraint($table_name,$new_definition), false);
2987
+    }
2988 2988
 
2989
-	/**
2990
-	 * Check if type is boolean
2991
-	 * @param string $type
2989
+    /**
2990
+     * Check if type is boolean
2991
+     * @param string $type
2992 2992
      * @return bool
2993 2993
      */
2994
-	public function isBooleanType($type)
2995
-	{
2996
-		return 'bool' == $type;
2997
-	}
2994
+    public function isBooleanType($type)
2995
+    {
2996
+        return 'bool' == $type;
2997
+    }
2998 2998
 
2999
-	/**
3000
-	 * Get truth value for boolean type
3001
-	 * Allows 'off' to mean false, along with all 'empty' values
3002
-	 * @param mixed $val
2999
+    /**
3000
+     * Get truth value for boolean type
3001
+     * Allows 'off' to mean false, along with all 'empty' values
3002
+     * @param mixed $val
3003 3003
      * @return bool
3004
-	 */
3005
-	protected function _getBooleanValue($val)
3006
-	{
3007
-		//need to put the === sign here otherwise true == 'non empty string'
3008
-		if (empty($val) or $val==='off')
3009
-			return false;
3010
-
3011
-		return true;
3012
-	}
3013
-
3014
-	/**
3015
-	 * Check if type is a number
3016
-	 * @param string $type
3004
+     */
3005
+    protected function _getBooleanValue($val)
3006
+    {
3007
+        //need to put the === sign here otherwise true == 'non empty string'
3008
+        if (empty($val) or $val==='off')
3009
+            return false;
3010
+
3011
+        return true;
3012
+    }
3013
+
3014
+    /**
3015
+     * Check if type is a number
3016
+     * @param string $type
3017 3017
      * @return bool
3018
-	 */
3019
-	public function isNumericType($type)
3020
-	{
3021
-	    if(isset($this->type_class[$type]) && ($this->type_class[$type] == 'int' || $this->type_class[$type] == 'float')) {
3022
-	        return true;
3023
-	    }
3024
-		return false;
3025
-	}
3018
+     */
3019
+    public function isNumericType($type)
3020
+    {
3021
+        if(isset($this->type_class[$type]) && ($this->type_class[$type] == 'int' || $this->type_class[$type] == 'float')) {
3022
+            return true;
3023
+        }
3024
+        return false;
3025
+    }
3026 3026
 
3027 3027
     /**
3028 3028
      * Check if the value is empty value for this type
@@ -3030,272 +3030,272 @@  discard block
 block discarded – undo
3030 3030
      * @param string $type Type (one of vardef types)
3031 3031
      * @return bool true if the value if empty
3032 3032
      */
3033
-	protected function _emptyValue($val, $type)
3034
-	{
3035
-		if (empty($val))
3036
-			return true;
3037
-
3038
-		if($this->emptyValue($type) == $val) {
3039
-			return true;
3040
-		}
3041
-		switch ($type) {
3042
-			case 'decimal':
3043
-			case 'decimal2':
3044
-			case 'int':
3045
-			case 'double':
3046
-			case 'float':
3047
-			case 'uint':
3048
-			case 'ulong':
3049
-			case 'long':
3050
-			case 'short':
3051
-				return ($val == 0);
3052
-			case 'date':
3053
-				if ($val == '0000-00-00')
3054
-					return true;
3055
-				if ($val == 'NULL')
3056
-					return true;
3057
-				return false;
3058
-		}
3059
-
3060
-		return false;
3061
-	}
3062
-
3063
-	/**
3033
+    protected function _emptyValue($val, $type)
3034
+    {
3035
+        if (empty($val))
3036
+            return true;
3037
+
3038
+        if($this->emptyValue($type) == $val) {
3039
+            return true;
3040
+        }
3041
+        switch ($type) {
3042
+            case 'decimal':
3043
+            case 'decimal2':
3044
+            case 'int':
3045
+            case 'double':
3046
+            case 'float':
3047
+            case 'uint':
3048
+            case 'ulong':
3049
+            case 'long':
3050
+            case 'short':
3051
+                return ($val == 0);
3052
+            case 'date':
3053
+                if ($val == '0000-00-00')
3054
+                    return true;
3055
+                if ($val == 'NULL')
3056
+                    return true;
3057
+                return false;
3058
+        }
3059
+
3060
+        return false;
3061
+    }
3062
+
3063
+    /**
3064 3064
      * @abstract
3065
-	 * Does this type represent text (i.e., non-varchar) value?
3066
-	 * @param string $type
3065
+     * Does this type represent text (i.e., non-varchar) value?
3066
+     * @param string $type
3067 3067
      * @return bool
3068
-	 */
3069
-	public function isTextType($type)
3070
-	{
3071
-		return false;
3072
-	}
3073
-
3074
-	/**
3075
-	 * Check if this DB supports certain capability
3076
-	 * See $this->capabilities for the list
3077
-	 * @param string $cap
3068
+     */
3069
+    public function isTextType($type)
3070
+    {
3071
+        return false;
3072
+    }
3073
+
3074
+    /**
3075
+     * Check if this DB supports certain capability
3076
+     * See $this->capabilities for the list
3077
+     * @param string $cap
3078 3078
      * @return bool
3079
-	 */
3080
-	public function supports($cap)
3081
-	{
3082
-		return !empty($this->capabilities[$cap]);
3083
-	}
3084
-
3085
-	/**
3086
-	 * Create ORDER BY clause for ENUM type field
3087
-	 * @param string $order_by Field name
3088
-	 * @param array $values Possible enum value
3089
-	 * @param string $order_dir Order direction, ASC or DESC
3079
+     */
3080
+    public function supports($cap)
3081
+    {
3082
+        return !empty($this->capabilities[$cap]);
3083
+    }
3084
+
3085
+    /**
3086
+     * Create ORDER BY clause for ENUM type field
3087
+     * @param string $order_by Field name
3088
+     * @param array $values Possible enum value
3089
+     * @param string $order_dir Order direction, ASC or DESC
3090 3090
      * @return string
3091 3091
      */
3092
-	public function orderByEnum($order_by, $values, $order_dir)
3093
-	{
3094
-		$i = 0;
3095
-		$order_by_arr = array();
3096
-		foreach ($values as $key => $value) {
3097
-			if($key == '') {
3098
-				$order_by_arr[] = "WHEN ($order_by='' OR $order_by IS NULL) THEN $i";
3099
-			} else {
3100
-				$order_by_arr[] = "WHEN $order_by=".$this->quoted($key)." THEN $i";
3101
-			}
3102
-			$i++;
3103
-		}
3104
-		return "CASE ".implode("\n", $order_by_arr)." ELSE $i END $order_dir\n";
3105
-	}
3106
-
3107
-	/**
3108
-	 * Return representation of an empty value depending on type
3109
-	 * The value is fully quoted, converted, etc.
3110
-	 * @param string $type
3092
+    public function orderByEnum($order_by, $values, $order_dir)
3093
+    {
3094
+        $i = 0;
3095
+        $order_by_arr = array();
3096
+        foreach ($values as $key => $value) {
3097
+            if($key == '') {
3098
+                $order_by_arr[] = "WHEN ($order_by='' OR $order_by IS NULL) THEN $i";
3099
+            } else {
3100
+                $order_by_arr[] = "WHEN $order_by=".$this->quoted($key)." THEN $i";
3101
+            }
3102
+            $i++;
3103
+        }
3104
+        return "CASE ".implode("\n", $order_by_arr)." ELSE $i END $order_dir\n";
3105
+    }
3106
+
3107
+    /**
3108
+     * Return representation of an empty value depending on type
3109
+     * The value is fully quoted, converted, etc.
3110
+     * @param string $type
3111 3111
      * @return mixed Empty value
3112 3112
      */
3113
-	public function emptyValue($type)
3114
-	{
3115
-		if(isset($this->type_class[$type]) && ($this->type_class[$type] == 'bool' || $this->type_class[$type] == 'int' || $this->type_class[$type] == 'float')) {
3116
-			return 0;
3117
-		}
3113
+    public function emptyValue($type)
3114
+    {
3115
+        if(isset($this->type_class[$type]) && ($this->type_class[$type] == 'bool' || $this->type_class[$type] == 'int' || $this->type_class[$type] == 'float')) {
3116
+            return 0;
3117
+        }
3118 3118
 
3119
-		return "''";
3120
-	}
3119
+        return "''";
3120
+    }
3121 3121
 
3122
-	/**
3123
-	 * List of available collation settings
3122
+    /**
3123
+     * List of available collation settings
3124 3124
      * @abstract
3125
-	 * @return string
3126
-	 */
3127
-	public function getDefaultCollation()
3128
-	{
3129
-		return null;
3130
-	}
3131
-
3132
-	/**
3133
-	 * List of available collation settings
3125
+     * @return string
3126
+     */
3127
+    public function getDefaultCollation()
3128
+    {
3129
+        return null;
3130
+    }
3131
+
3132
+    /**
3133
+     * List of available collation settings
3134 3134
      * @abstract
3135
-	 * @return array
3136
-	 */
3137
-	public function getCollationList()
3138
-	{
3139
-		return null;
3140
-	}
3141
-
3142
-	/**
3143
-	 * Returns the number of columns in a table
3144
-	 *
3145
-	 * @param  string $table_name
3146
-	 * @return int
3147
-	 */
3148
-	public function number_of_columns($table_name)
3149
-	{
3150
-		$table = $this->getTableDescription($table_name);
3151
-		return count($table);
3152
-	}
3153
-
3154
-	/**
3155
-	 * Return limit query based on given query
3156
-	 * @param string $sql
3157
-	 * @param int $start
3158
-	 * @param int $count
3159
-	 * @param bool $dieOnError
3160
-	 * @param string $msg
3135
+     * @return array
3136
+     */
3137
+    public function getCollationList()
3138
+    {
3139
+        return null;
3140
+    }
3141
+
3142
+    /**
3143
+     * Returns the number of columns in a table
3144
+     *
3145
+     * @param  string $table_name
3146
+     * @return int
3147
+     */
3148
+    public function number_of_columns($table_name)
3149
+    {
3150
+        $table = $this->getTableDescription($table_name);
3151
+        return count($table);
3152
+    }
3153
+
3154
+    /**
3155
+     * Return limit query based on given query
3156
+     * @param string $sql
3157
+     * @param int $start
3158
+     * @param int $count
3159
+     * @param bool $dieOnError
3160
+     * @param string $msg
3161 3161
      * @return resource|bool query result
3162 3162
      * @see DBManager::limitQuery()
3163
-	 */
3164
-	public function limitQuerySql($sql, $start, $count, $dieOnError=false, $msg='')
3165
-	{
3166
-		return $this->limitQuery($sql,$start,$count,$dieOnError,$msg,false);
3167
-	}
3168
-
3169
-	/**
3170
-	 * Return current time in format fit for insertion into DB (with quotes)
3171
-	 * @return string
3172
-	 */
3173
-	public function now()
3174
-	{
3175
-		return $this->convert($this->quoted(TimeDate::getInstance()->nowDb()), "datetime");
3176
-	}
3177
-
3178
-	/**
3179
-	 * Check if connecting user has certain privilege
3180
-	 * @param string $privilege
3163
+     */
3164
+    public function limitQuerySql($sql, $start, $count, $dieOnError=false, $msg='')
3165
+    {
3166
+        return $this->limitQuery($sql,$start,$count,$dieOnError,$msg,false);
3167
+    }
3168
+
3169
+    /**
3170
+     * Return current time in format fit for insertion into DB (with quotes)
3171
+     * @return string
3172
+     */
3173
+    public function now()
3174
+    {
3175
+        return $this->convert($this->quoted(TimeDate::getInstance()->nowDb()), "datetime");
3176
+    }
3177
+
3178
+    /**
3179
+     * Check if connecting user has certain privilege
3180
+     * @param string $privilege
3181 3181
      * @return bool Privilege allowed?
3182 3182
      */
3183
-	public function checkPrivilege($privilege)
3184
-	{
3185
-		switch($privilege) {
3186
-			case "CREATE TABLE":
3187
-				$this->query("CREATE TABLE temp (id varchar(36))");
3188
-				break;
3189
-			case "DROP TABLE":
3190
-				$sql = $this->dropTableNameSQL("temp");
3191
-				$this->query($sql);
3192
-				break;
3193
-			case "INSERT":
3194
-				$this->query("INSERT INTO temp (id) VALUES ('abcdef0123456789abcdef0123456789abcd')");
3195
-				break;
3196
-			case "UPDATE":
3197
-				$this->query("UPDATE temp SET id = '100000000000000000000000000000000000' WHERE id = 'abcdef0123456789abcdef0123456789abcd'");
3198
-				break;
3199
-			case 'SELECT':
3200
-				return $this->getOne('SELECT id FROM temp WHERE id=\'100000000000000000000000000000000000\'', false);
3201
-			case 'DELETE':
3202
-				$this->query("DELETE FROM temp WHERE id = '100000000000000000000000000000000000'");
3203
-				break;
3204
-			case "ADD COLUMN":
3205
-				$test = array("test" => array("name" => "test", "type" => "varchar", "len" => 50));
3206
-				$sql = 	$this->changeColumnSQL("temp", $test, "add");
3207
-				$this->query($sql);
3208
-				break;
3209
-			case "CHANGE COLUMN":
3210
-				$test = array("test" => array("name" => "test", "type" => "varchar", "len" => 100));
3211
-				$sql = 	$this->changeColumnSQL("temp", $test, "modify");
3212
-				$this->query($sql);
3213
-				break;
3214
-			case "DROP COLUMN":
3215
-				$test = array("test" => array("name" => "test", "type" => "varchar", "len" => 100));
3216
-				$sql = 	$this->changeColumnSQL("temp", $test, "drop");
3217
-				$this->query($sql);
3218
-				break;
3219
-			default:
3220
-				return false;
3221
-		}
3222
-		if($this->checkError("Checking privileges")) {
3223
-			return false;
3224
-		}
3225
-		return true;
3226
-	}
3227
-
3228
-	/**
3229
-	 * Check if the query is a select query
3230
-	 * @param string $query
3183
+    public function checkPrivilege($privilege)
3184
+    {
3185
+        switch($privilege) {
3186
+            case "CREATE TABLE":
3187
+                $this->query("CREATE TABLE temp (id varchar(36))");
3188
+                break;
3189
+            case "DROP TABLE":
3190
+                $sql = $this->dropTableNameSQL("temp");
3191
+                $this->query($sql);
3192
+                break;
3193
+            case "INSERT":
3194
+                $this->query("INSERT INTO temp (id) VALUES ('abcdef0123456789abcdef0123456789abcd')");
3195
+                break;
3196
+            case "UPDATE":
3197
+                $this->query("UPDATE temp SET id = '100000000000000000000000000000000000' WHERE id = 'abcdef0123456789abcdef0123456789abcd'");
3198
+                break;
3199
+            case 'SELECT':
3200
+                return $this->getOne('SELECT id FROM temp WHERE id=\'100000000000000000000000000000000000\'', false);
3201
+            case 'DELETE':
3202
+                $this->query("DELETE FROM temp WHERE id = '100000000000000000000000000000000000'");
3203
+                break;
3204
+            case "ADD COLUMN":
3205
+                $test = array("test" => array("name" => "test", "type" => "varchar", "len" => 50));
3206
+                $sql = 	$this->changeColumnSQL("temp", $test, "add");
3207
+                $this->query($sql);
3208
+                break;
3209
+            case "CHANGE COLUMN":
3210
+                $test = array("test" => array("name" => "test", "type" => "varchar", "len" => 100));
3211
+                $sql = 	$this->changeColumnSQL("temp", $test, "modify");
3212
+                $this->query($sql);
3213
+                break;
3214
+            case "DROP COLUMN":
3215
+                $test = array("test" => array("name" => "test", "type" => "varchar", "len" => 100));
3216
+                $sql = 	$this->changeColumnSQL("temp", $test, "drop");
3217
+                $this->query($sql);
3218
+                break;
3219
+            default:
3220
+                return false;
3221
+        }
3222
+        if($this->checkError("Checking privileges")) {
3223
+            return false;
3224
+        }
3225
+        return true;
3226
+    }
3227
+
3228
+    /**
3229
+     * Check if the query is a select query
3230
+     * @param string $query
3231 3231
      * @return bool  Is query SELECT?
3232 3232
      */
3233
-	protected function isSelect($query)
3234
-	{
3235
-		$query = trim($query);
3236
-		$select_check = strpos(strtolower($query), strtolower("SELECT"));
3237
-		//Checks to see if there is union select which is valid
3238
-		$select_check2 = strpos(strtolower($query), strtolower("(SELECT"));
3239
-		if($select_check==0 || $select_check2==0){
3240
-			//Returning false means query is ok!
3241
-			return true;
3242
-		}
3243
-		return false;
3244
-	}
3245
-
3246
-	/**
3247
-	 * Parse fulltext search query with mysql syntax:
3248
-	 *  terms quoted by ""
3249
-	 *  + means the term must be included
3250
-	 *  - means the term must be excluded
3251
-	 *  * or % at the end means wildcard
3252
-	 * @param string $query
3253
-	 * @return array of 3 elements - query terms, mandatory terms and excluded terms
3254
-	 */
3255
-	public function parseFulltextQuery($query)
3256
-	{
3257
-		/* split on space or comma, double quotes with \ for escape */
3258
-		if(strpbrk($query, " ,")) {
3259
-			// ("([^"]*?)"|[^" ,]+)((, )+)?
3260
-			// '/([^" ,]+|".*?[^\\\\]")(,|\s)\s*/'
3261
-			if(!preg_match_all('/("([^"]*?)"|[^"\s,]+)((,\s)+)?/', $query, $m)) {
3262
-				return false;
3263
-			}
3264
-			$qterms = $m[1];
3265
-		} else {
3266
-			$qterms = array($query);
3267
-		}
3268
-		$terms = $must_terms = $not_terms = array();
3269
-		foreach($qterms as $item) {
3270
-			if($item[0] == '"') {
3271
-				$item = trim($item, '"');
3272
-			}
3273
-			if($item[0] == '+') {
3233
+    protected function isSelect($query)
3234
+    {
3235
+        $query = trim($query);
3236
+        $select_check = strpos(strtolower($query), strtolower("SELECT"));
3237
+        //Checks to see if there is union select which is valid
3238
+        $select_check2 = strpos(strtolower($query), strtolower("(SELECT"));
3239
+        if($select_check==0 || $select_check2==0){
3240
+            //Returning false means query is ok!
3241
+            return true;
3242
+        }
3243
+        return false;
3244
+    }
3245
+
3246
+    /**
3247
+     * Parse fulltext search query with mysql syntax:
3248
+     *  terms quoted by ""
3249
+     *  + means the term must be included
3250
+     *  - means the term must be excluded
3251
+     *  * or % at the end means wildcard
3252
+     * @param string $query
3253
+     * @return array of 3 elements - query terms, mandatory terms and excluded terms
3254
+     */
3255
+    public function parseFulltextQuery($query)
3256
+    {
3257
+        /* split on space or comma, double quotes with \ for escape */
3258
+        if(strpbrk($query, " ,")) {
3259
+            // ("([^"]*?)"|[^" ,]+)((, )+)?
3260
+            // '/([^" ,]+|".*?[^\\\\]")(,|\s)\s*/'
3261
+            if(!preg_match_all('/("([^"]*?)"|[^"\s,]+)((,\s)+)?/', $query, $m)) {
3262
+                return false;
3263
+            }
3264
+            $qterms = $m[1];
3265
+        } else {
3266
+            $qterms = array($query);
3267
+        }
3268
+        $terms = $must_terms = $not_terms = array();
3269
+        foreach($qterms as $item) {
3270
+            if($item[0] == '"') {
3271
+                $item = trim($item, '"');
3272
+            }
3273
+            if($item[0] == '+') {
3274 3274
                 if (strlen($item) > 1) {
3275 3275
                     $must_terms[] = substr($item, 1);
3276 3276
                 }
3277 3277
                 continue;
3278
-			}
3279
-			if($item[0] == '-') {
3278
+            }
3279
+            if($item[0] == '-') {
3280 3280
                 if (strlen($item) > 1) {
3281
-				    $not_terms[] = substr($item, 1);
3281
+                    $not_terms[] = substr($item, 1);
3282 3282
                 }
3283 3283
                 continue;
3284
-			}
3285
-			$terms[] = $item;
3286
-		}
3287
-		return array($terms, $must_terms, $not_terms);
3288
-	}
3284
+            }
3285
+            $terms[] = $item;
3286
+        }
3287
+        return array($terms, $must_terms, $not_terms);
3288
+    }
3289 3289
 
3290 3290
     // Methods to check respective queries
3291
-	protected $standardQueries = array(
3292
-		'ALTER TABLE' => 'verifyAlterTable',
3293
-		'DROP TABLE' => 'verifyDropTable',
3294
-		'CREATE TABLE' => 'verifyCreateTable',
3295
-		'INSERT INTO' => 'verifyInsertInto',
3296
-		'UPDATE' => 'verifyUpdate',
3297
-		'DELETE FROM' => 'verifyDeleteFrom',
3298
-	);
3291
+    protected $standardQueries = array(
3292
+        'ALTER TABLE' => 'verifyAlterTable',
3293
+        'DROP TABLE' => 'verifyDropTable',
3294
+        'CREATE TABLE' => 'verifyCreateTable',
3295
+        'INSERT INTO' => 'verifyInsertInto',
3296
+        'UPDATE' => 'verifyUpdate',
3297
+        'DELETE FROM' => 'verifyDeleteFrom',
3298
+    );
3299 3299
 
3300 3300
 
3301 3301
     /**
@@ -3303,8 +3303,8 @@  discard block
 block discarded – undo
3303 3303
      * @param string $query SQL query
3304 3304
      * @return string
3305 3305
      */
3306
-	protected function extractTableName($query)
3307
-	{
3306
+    protected function extractTableName($query)
3307
+    {
3308 3308
         $query = preg_replace('/[^A-Za-z0-9_\s]/', "", $query);
3309 3309
         $query = trim(str_replace(array_keys($this->standardQueries), '', $query));
3310 3310
 
@@ -3313,7 +3313,7 @@  discard block
 block discarded – undo
3313 3313
         $table = substr($query, 0, $end);
3314 3314
 
3315 3315
         return $table;
3316
-	}
3316
+    }
3317 3317
 
3318 3318
     /**
3319 3319
      * Verify SQl statement using per-DB verification function
@@ -3322,284 +3322,284 @@  discard block
 block discarded – undo
3322 3322
      * @param array $skipTables List of blacklisted tables that aren't checked
3323 3323
      * @return string
3324 3324
      */
3325
-	public function verifySQLStatement($query, $skipTables)
3326
-	{
3327
-		$query = trim($query);
3328
-		foreach($this->standardQueries as $qstart => $check) {
3329
-			if(strncasecmp($qstart, $query, strlen($qstart)) == 0) {
3330
-				if(is_callable(array($this, $check))) {
3331
-					$table = $this->extractTableName($query);
3332
-					if(!in_array($table, $skipTables)) {
3333
-						return call_user_func(array($this, $check), $table, $query);
3334
-					} else {
3335
-						$this->log->debug("Skipping table $table as blacklisted");
3336
-					}
3337
-				} else {
3338
-					$this->log->debug("No verification for $qstart on {$this->dbType}");
3339
-				}
3340
-				break;
3341
-			}
3342
-		}
3343
-		return "";
3344
-	}
3345
-
3346
-	/**
3347
-	 * Tests an CREATE TABLE query
3348
-	 * @param string $table The table name to get DDL
3349
-	 * @param string $query The query to test.
3350
-	 * @return string Non-empty if error found
3351
-	 */
3352
-	protected function verifyCreateTable($table, $query)
3353
-	{
3354
-		$this->log->debug('verifying CREATE statement...');
3355
-
3356
-		// rewrite DDL with _temp name
3357
-		$this->log->debug('testing query: ['.$query.']');
3358
-		$tempname = $table."__uw_temp";
3359
-		$tempTableQuery = str_replace("CREATE TABLE {$table}", "CREATE TABLE $tempname", $query);
3360
-
3361
-		if(strpos($tempTableQuery, '__uw_temp') === false) {
3362
-			return 'Could not use a temp table to test query!';
3363
-		}
3364
-
3365
-		$this->query($tempTableQuery, false, "Preflight Failed for: {$query}");
3366
-
3367
-		$error = $this->lastError(); // empty on no-errors
3368
-		if(!empty($error)) {
3369
-			return $error;
3370
-		}
3371
-
3372
-		// check if table exists
3373
-		$this->log->debug('testing for table: '.$table);
3374
-		if(!$this->tableExists($tempname)) {
3375
-			return "Failed to create temp table!";
3376
-		}
3377
-
3378
-		$this->dropTableName($tempname);
3379
-		return '';
3380
-	}
3381
-
3382
-	/**
3383
-	 * Execute multiple queries one after another
3384
-	 * @param array $sqls Queries
3385
-	 * @param bool $dieOnError Die on error, passed to query()
3386
-	 * @param string $msg Error message, passed to query()
3387
-	 * @param bool $suppress Supress errors, passed to query()
3388
-	 * @return resource|bool result set or success/failure bool
3389
-	 */
3390
-	public function queryArray(array $sqls, $dieOnError = false, $msg = '', $suppress = false)
3391
-	{
3392
-		$last = true;
3393
-		foreach($sqls as $sql) {
3394
-			if(!($last = $this->query($sql, $dieOnError, $msg, $suppress))) {
3395
-				break;
3396
-			}
3397
-		}
3398
-		return $last;
3399
-	}
3400
-
3401
-	/**
3402
-	 * Fetches the next row in the query result into an associative array
3403
-	 *
3404
-	 * @param  resource $result
3405
-	 * @param  bool $encode Need to HTML-encode the result?
3406
-	 * @return array    returns false if there are no more rows available to fetch
3407
-	 */
3408
-	public function fetchByAssoc($result, $encode = true)
3409
-	{
3410
-	    if (empty($result))	return false;
3411
-
3412
-	    if(is_int($encode) && func_num_args() == 3) {
3413
-	        // old API: $result, $rowNum, $encode
3414
-	        $GLOBALS['log']->deprecated("Using row number in fetchByAssoc is not portable and no longer supported. Please fix your code.");
3415
-	        $encode = func_get_arg(2);
3416
-	    }
3417
-	    $row = $this->fetchRow($result);
3418
-	    if (!empty($row) && $encode && $this->encode) {
3419
-	    	return array_map('to_html', $row);
3420
-	    } else {
3421
-	       return $row;
3422
-	    }
3423
-	}
3424
-
3425
-	/**
3426
-	 * Get DB driver name used for install/upgrade scripts
3427
-	 * @return string
3428
-	 */
3429
-	public function getScriptName()
3430
-	{
3431
-		// Usually the same name as dbType
3432
-		return $this->dbType;
3433
-	}
3434
-
3435
-	/**
3436
-	 * Set database options
3437
-	 * Options are usually db-dependant and derive from $config['dbconfigoption']
3438
-	 * @param array $options
3439
-	 * @return DBManager
3440
-	 */
3441
-	public function setOptions($options)
3442
-	{
3443
-	    $this->options = $options;
3444
-	    return $this;
3445
-	}
3446
-
3447
-	/**
3448
-	 * Get DB options
3449
-	 * @return array
3450
-	 */
3451
-	public function getOptions()
3452
-	{
3453
-	    return $this->options;
3454
-	}
3455
-
3456
-	/**
3457
-	 * Get DB option by name
3458
-	 * @param string $option Option name
3459
-	 * @return mixed Option value or null if doesn't exist
3460
-	 */
3461
-	public function getOption($option)
3462
-	{
3463
-	    if(isset($this->options[$option])) {
3464
-	        return $this->options[$option];
3465
-	    }
3466
-	    return null;
3467
-	}
3468
-
3469
-	/**
3470
-	 * Commits pending changes to the database when the driver is setup to support transactions.
3471
-	 * Note that the default implementation is applicable for transaction-less or auto commit scenarios.
3472
-	 * @abstract
3473
-	 * @return bool true if commit succeeded, false if it failed
3474
-	 */
3475
-	public function commit()
3476
-	{
3477
-		$this->log->info("DBManager.commit() stub");
3478
-		return true;
3479
-	}
3480
-
3481
-	/**
3482
-	 * Rollsback pending changes to the database when the driver is setup to support transactions.
3483
-	 * Note that the default implementation is applicable for transaction-less or auto commit scenarios.
3484
-	 * Since rollbacks cannot be done, this implementation always returns false.
3485
-	 * @abstract
3486
-	 * @return bool true if rollback succeeded, false if it failed
3487
-	 */
3488
-	public function rollback()
3489
-	{
3490
-		$this->log->info("DBManager.rollback() stub");
3491
-		return false;
3492
-	}
3493
-
3494
-	/**
3495
-	 * Check if this DB name is valid
3496
-	 *
3497
-	 * @param string $name
3498
-	 * @return bool
3499
-	 */
3500
-	public function isDatabaseNameValid($name)
3501
-	{
3502
-		// Generic case - no slashes, no dots
3503
-		return preg_match('#[/.\\\\]#', $name)==0;
3504
-	}
3505
-
3506
-	/**
3507
-	 * Check special requirements for DB installation.
3508
-	 * @abstract
3509
-	 * If everything is OK, return true.
3510
-	 * If something's wrong, return array of error code and parameters
3511
-	 * @return mixed
3512
-	 */
3513
-	public function canInstall()
3514
-	{
3515
-		return true;
3516
-	}
3517
-
3518
-	/**
3519
-	 * @abstract
3325
+    public function verifySQLStatement($query, $skipTables)
3326
+    {
3327
+        $query = trim($query);
3328
+        foreach($this->standardQueries as $qstart => $check) {
3329
+            if(strncasecmp($qstart, $query, strlen($qstart)) == 0) {
3330
+                if(is_callable(array($this, $check))) {
3331
+                    $table = $this->extractTableName($query);
3332
+                    if(!in_array($table, $skipTables)) {
3333
+                        return call_user_func(array($this, $check), $table, $query);
3334
+                    } else {
3335
+                        $this->log->debug("Skipping table $table as blacklisted");
3336
+                    }
3337
+                } else {
3338
+                    $this->log->debug("No verification for $qstart on {$this->dbType}");
3339
+                }
3340
+                break;
3341
+            }
3342
+        }
3343
+        return "";
3344
+    }
3345
+
3346
+    /**
3347
+     * Tests an CREATE TABLE query
3348
+     * @param string $table The table name to get DDL
3349
+     * @param string $query The query to test.
3350
+     * @return string Non-empty if error found
3351
+     */
3352
+    protected function verifyCreateTable($table, $query)
3353
+    {
3354
+        $this->log->debug('verifying CREATE statement...');
3355
+
3356
+        // rewrite DDL with _temp name
3357
+        $this->log->debug('testing query: ['.$query.']');
3358
+        $tempname = $table."__uw_temp";
3359
+        $tempTableQuery = str_replace("CREATE TABLE {$table}", "CREATE TABLE $tempname", $query);
3360
+
3361
+        if(strpos($tempTableQuery, '__uw_temp') === false) {
3362
+            return 'Could not use a temp table to test query!';
3363
+        }
3364
+
3365
+        $this->query($tempTableQuery, false, "Preflight Failed for: {$query}");
3366
+
3367
+        $error = $this->lastError(); // empty on no-errors
3368
+        if(!empty($error)) {
3369
+            return $error;
3370
+        }
3371
+
3372
+        // check if table exists
3373
+        $this->log->debug('testing for table: '.$table);
3374
+        if(!$this->tableExists($tempname)) {
3375
+            return "Failed to create temp table!";
3376
+        }
3377
+
3378
+        $this->dropTableName($tempname);
3379
+        return '';
3380
+    }
3381
+
3382
+    /**
3383
+     * Execute multiple queries one after another
3384
+     * @param array $sqls Queries
3385
+     * @param bool $dieOnError Die on error, passed to query()
3386
+     * @param string $msg Error message, passed to query()
3387
+     * @param bool $suppress Supress errors, passed to query()
3388
+     * @return resource|bool result set or success/failure bool
3389
+     */
3390
+    public function queryArray(array $sqls, $dieOnError = false, $msg = '', $suppress = false)
3391
+    {
3392
+        $last = true;
3393
+        foreach($sqls as $sql) {
3394
+            if(!($last = $this->query($sql, $dieOnError, $msg, $suppress))) {
3395
+                break;
3396
+            }
3397
+        }
3398
+        return $last;
3399
+    }
3400
+
3401
+    /**
3402
+     * Fetches the next row in the query result into an associative array
3403
+     *
3404
+     * @param  resource $result
3405
+     * @param  bool $encode Need to HTML-encode the result?
3406
+     * @return array    returns false if there are no more rows available to fetch
3407
+     */
3408
+    public function fetchByAssoc($result, $encode = true)
3409
+    {
3410
+        if (empty($result))	return false;
3411
+
3412
+        if(is_int($encode) && func_num_args() == 3) {
3413
+            // old API: $result, $rowNum, $encode
3414
+            $GLOBALS['log']->deprecated("Using row number in fetchByAssoc is not portable and no longer supported. Please fix your code.");
3415
+            $encode = func_get_arg(2);
3416
+        }
3417
+        $row = $this->fetchRow($result);
3418
+        if (!empty($row) && $encode && $this->encode) {
3419
+            return array_map('to_html', $row);
3420
+        } else {
3421
+            return $row;
3422
+        }
3423
+    }
3424
+
3425
+    /**
3426
+     * Get DB driver name used for install/upgrade scripts
3427
+     * @return string
3428
+     */
3429
+    public function getScriptName()
3430
+    {
3431
+        // Usually the same name as dbType
3432
+        return $this->dbType;
3433
+    }
3434
+
3435
+    /**
3436
+     * Set database options
3437
+     * Options are usually db-dependant and derive from $config['dbconfigoption']
3438
+     * @param array $options
3439
+     * @return DBManager
3440
+     */
3441
+    public function setOptions($options)
3442
+    {
3443
+        $this->options = $options;
3444
+        return $this;
3445
+    }
3446
+
3447
+    /**
3448
+     * Get DB options
3449
+     * @return array
3450
+     */
3451
+    public function getOptions()
3452
+    {
3453
+        return $this->options;
3454
+    }
3455
+
3456
+    /**
3457
+     * Get DB option by name
3458
+     * @param string $option Option name
3459
+     * @return mixed Option value or null if doesn't exist
3460
+     */
3461
+    public function getOption($option)
3462
+    {
3463
+        if(isset($this->options[$option])) {
3464
+            return $this->options[$option];
3465
+        }
3466
+        return null;
3467
+    }
3468
+
3469
+    /**
3470
+     * Commits pending changes to the database when the driver is setup to support transactions.
3471
+     * Note that the default implementation is applicable for transaction-less or auto commit scenarios.
3472
+     * @abstract
3473
+     * @return bool true if commit succeeded, false if it failed
3474
+     */
3475
+    public function commit()
3476
+    {
3477
+        $this->log->info("DBManager.commit() stub");
3478
+        return true;
3479
+    }
3480
+
3481
+    /**
3482
+     * Rollsback pending changes to the database when the driver is setup to support transactions.
3483
+     * Note that the default implementation is applicable for transaction-less or auto commit scenarios.
3484
+     * Since rollbacks cannot be done, this implementation always returns false.
3485
+     * @abstract
3486
+     * @return bool true if rollback succeeded, false if it failed
3487
+     */
3488
+    public function rollback()
3489
+    {
3490
+        $this->log->info("DBManager.rollback() stub");
3491
+        return false;
3492
+    }
3493
+
3494
+    /**
3495
+     * Check if this DB name is valid
3496
+     *
3497
+     * @param string $name
3498
+     * @return bool
3499
+     */
3500
+    public function isDatabaseNameValid($name)
3501
+    {
3502
+        // Generic case - no slashes, no dots
3503
+        return preg_match('#[/.\\\\]#', $name)==0;
3504
+    }
3505
+
3506
+    /**
3507
+     * Check special requirements for DB installation.
3508
+     * @abstract
3509
+     * If everything is OK, return true.
3510
+     * If something's wrong, return array of error code and parameters
3511
+     * @return mixed
3512
+     */
3513
+    public function canInstall()
3514
+    {
3515
+        return true;
3516
+    }
3517
+
3518
+    /**
3519
+     * @abstract
3520 3520
      * Code run on new database before installing
3521
-	 */
3522
-	public function preInstall()
3523
-	{
3524
-	}
3521
+     */
3522
+    public function preInstall()
3523
+    {
3524
+    }
3525
+
3526
+    /**
3527
+     * @abstract
3528
+     * Code run on new database after installing
3529
+     */
3530
+    public function postInstall()
3531
+    {
3532
+    }
3533
+
3534
+    /**
3535
+     * Disable keys on the table
3536
+     * @abstract
3537
+     * @param string $tableName
3538
+     */
3539
+    public function disableKeys($tableName)
3540
+    {
3541
+    }
3525 3542
 
3526
-	/**
3543
+    /**
3544
+     * Re-enable keys on the table
3527 3545
      * @abstract
3528
-	 * Code run on new database after installing
3529
-	 */
3530
-	public function postInstall()
3531
-	{
3532
-	}
3533
-
3534
-	/**
3535
-	 * Disable keys on the table
3536
-	 * @abstract
3537
-	 * @param string $tableName
3538
-	 */
3539
-	public function disableKeys($tableName)
3540
-	{
3541
-	}
3542
-
3543
-	/**
3544
-	 * Re-enable keys on the table
3545
-	 * @abstract
3546
-	 * @param string $tableName
3547
-	 */
3548
-	public function enableKeys($tableName)
3549
-	{
3550
-	}
3551
-
3552
-	/**
3553
-	 * Quote string in DB-specific manner
3554
-	 * @param string $string
3555
-	 * @return string
3556
-	 */
3557
-	abstract public function quote($string);
3546
+     * @param string $tableName
3547
+     */
3548
+    public function enableKeys($tableName)
3549
+    {
3550
+    }
3551
+
3552
+    /**
3553
+     * Quote string in DB-specific manner
3554
+     * @param string $string
3555
+     * @return string
3556
+     */
3557
+    abstract public function quote($string);
3558 3558
 
3559 3559
     abstract public function quoteIdentifier($string);
3560 3560
 
3561
-	/**
3562
-	 * Use when you need to convert a database string to a different value; this function does it in a
3563
-	 * database-backend aware way
3564
-	 * Supported conversions:
3565
-	 *      today		return current date
3566
-	 *      left		Take substring from the left
3567
-	 *      date_format	Format date as string, supports %Y-%m-%d, %Y-%m, %Y
3561
+    /**
3562
+     * Use when you need to convert a database string to a different value; this function does it in a
3563
+     * database-backend aware way
3564
+     * Supported conversions:
3565
+     *      today		return current date
3566
+     *      left		Take substring from the left
3567
+     *      date_format	Format date as string, supports %Y-%m-%d, %Y-%m, %Y
3568 3568
      *      time_format Format time as string
3569 3569
      *      date        Convert date string to datetime value
3570 3570
      *      time        Convert time string to datetime value
3571
-	 *      datetime	Convert datetime string to datetime value
3572
-	 *      ifnull		If var is null, use default value
3573
-	 *      concat		Concatenate strings
3574
-	 *      quarter		Quarter number of the date
3575
-	 *      length		Length of string
3576
-	 *      month		Month number of the date
3577
-	 *      add_date	Add specified interval to a date
3571
+     *      datetime	Convert datetime string to datetime value
3572
+     *      ifnull		If var is null, use default value
3573
+     *      concat		Concatenate strings
3574
+     *      quarter		Quarter number of the date
3575
+     *      length		Length of string
3576
+     *      month		Month number of the date
3577
+     *      add_date	Add specified interval to a date
3578 3578
      *      add_time    Add time interval to a date
3579 3579
      *      text2char   Convert text field to varchar
3580
-	 *
3581
-	 * @param string $string database string to convert
3582
-	 * @param string $type type of conversion to do
3583
-	 * @param array  $additional_parameters optional, additional parameters to pass to the db function
3584
-	 * @return string
3585
-	 */
3586
-	abstract public function convert($string, $type, array $additional_parameters = array());
3587
-
3588
-	/**
3589
-	 * Converts from Database data to app data
3590
-	 *
3591
-	 * Supported types
3592
-	 * - date
3593
-	 * - time
3594
-	 * - datetime
3580
+     *
3581
+     * @param string $string database string to convert
3582
+     * @param string $type type of conversion to do
3583
+     * @param array  $additional_parameters optional, additional parameters to pass to the db function
3584
+     * @return string
3585
+     */
3586
+    abstract public function convert($string, $type, array $additional_parameters = array());
3587
+
3588
+    /**
3589
+     * Converts from Database data to app data
3590
+     *
3591
+     * Supported types
3592
+     * - date
3593
+     * - time
3594
+     * - datetime
3595 3595
      * - datetimecombo
3596 3596
      * - timestamp
3597
-	 *
3598
-	 * @param string $string database string to convert
3599
-	 * @param string $type type of conversion to do
3600
-	 * @return string
3601
-	 */
3602
-	abstract public function fromConvert($string, $type);
3597
+     *
3598
+     * @param string $string database string to convert
3599
+     * @param string $type type of conversion to do
3600
+     * @return string
3601
+     */
3602
+    abstract public function fromConvert($string, $type);
3603 3603
 
3604 3604
     /**
3605 3605
      * Parses and runs queries
@@ -3611,7 +3611,7 @@  discard block
 block discarded – undo
3611 3611
      * @param  bool     $keepResult Keep query result in the object?
3612 3612
      * @return resource|bool result set or success/failure bool
3613 3613
      */
3614
-	abstract public function query($sql, $dieOnError = false, $msg = '', $suppress = false, $keepResult = false);
3614
+    abstract public function query($sql, $dieOnError = false, $msg = '', $suppress = false, $keepResult = false);
3615 3615
 
3616 3616
     /**
3617 3617
      * Runs a limit query: one where we specify where to start getting records and how many to get
@@ -3624,173 +3624,173 @@  discard block
 block discarded – undo
3624 3624
      * @param  bool     $execute Execute or return SQL?
3625 3625
      * @return resource query result
3626 3626
      */
3627
-	abstract function limitQuery($sql, $start, $count, $dieOnError = false, $msg = '', $execute = true);
3628
-
3629
-
3630
-	/**
3631
-	 * Free Database result
3632
-	 * @param resource $dbResult
3633
-	 */
3634
-	abstract protected function freeDbResult($dbResult);
3635
-
3636
-	/**
3637
-	 * Rename column in the DB
3638
-	 * @param string $tablename
3639
-	 * @param string $column
3640
-	 * @param string $newname
3641
-	 */
3642
-	abstract function renameColumnSQL($tablename, $column, $newname);
3643
-
3644
-	/**
3645
-	 * Returns definitions of all indies for passed table.
3646
-	 *
3647
-	 * return will is a multi-dimensional array that
3648
-	 * categorizes the index definition by types, unique, primary and index.
3649
-	 * <code>
3650
-	 * <?php
3651
-	 * array(                                                              O
3652
-	 *       'index1'=> array (
3653
-	 *           'name'   => 'index1',
3654
-	 *           'type'   => 'primary',
3655
-	 *           'fields' => array('field1','field2')
3656
-	 *           )
3657
-	 *       )
3658
-	 * ?>
3659
-	 * </code>
3660
-	 * This format is similar to how indicies are defined in vardef file.
3661
-	 *
3662
-	 * @param  string $tablename
3663
-	 * @return array
3664
-	 */
3665
-	abstract public function get_indices($tablename);
3666
-
3667
-	/**
3668
-	 * Returns definitions of all indies for passed table.
3669
-	 *
3670
-	 * return will is a multi-dimensional array that
3671
-	 * categorizes the index definition by types, unique, primary and index.
3672
-	 * <code>
3673
-	 * <?php
3674
-	 * array(
3675
-	 *       'field1'=> array (
3676
-	 *           'name'   => 'field1',
3677
-	 *           'type'   => 'varchar',
3678
-	 *           'len' => '200'
3679
-	 *           )
3680
-	 *       )
3681
-	 * ?>
3682
-	 * </code>
3683
-	 * This format is similar to how indicies are defined in vardef file.
3684
-	 *
3685
-	 * @param  string $tablename
3686
-	 * @return array
3687
-	 */
3688
-	abstract public function get_columns($tablename);
3689
-
3690
-	/**
3691
-	 * Generates alter constraint statement given a table name and vardef definition.
3692
-	 *
3693
-	 * Supports both adding and droping a constraint.
3694
-	 *
3695
-	 * @param  string $table      tablename
3696
-	 * @param  array  $definition field definition
3697
-	 * @param  bool   $drop       true if we are dropping the constraint, false if we are adding it
3698
-	 * @return string SQL statement
3699
-	 */
3700
-	abstract public function add_drop_constraint($table, $definition, $drop = false);
3701
-
3702
-	/**
3703
-	 * Returns the description of fields based on the result
3704
-	 *
3705
-	 * @param  resource $result
3706
-	 * @param  boolean  $make_lower_case
3707
-	 * @return array field array
3708
-	 */
3709
-	abstract public function getFieldsArray($result, $make_lower_case = false);
3710
-
3711
-	/**
3712
-	 * Returns an array of tables for this database
3713
-	 *
3714
-	 * @return	array|false 	an array of with table names, false if no tables found
3715
-	 */
3716
-	abstract public function getTablesArray();
3717
-
3718
-	/**
3719
-	 * Return's the version of the database
3720
-	 *
3721
-	 * @return string
3722
-	 */
3723
-	abstract public function version();
3724
-
3725
-	/**
3726
-	 * Checks if a table with the name $tableName exists
3727
-	 * and returns true if it does or false otherwise
3728
-	 *
3729
-	 * @param  string $tableName
3730
-	 * @return bool
3731
-	 */
3732
-	abstract public function tableExists($tableName);
3733
-
3734
-	/**
3735
-	 * Fetches the next row in the query result into an associative array
3736
-	 *
3737
-	 * @param  resource $result
3738
-	 * @return array    returns false if there are no more rows available to fetch
3739
-	 */
3740
-	abstract public function fetchRow($result);
3741
-
3742
-	/**
3743
-	 * Connects to the database backend
3744
-	 *
3745
-	 * Takes in the database settings and opens a database connection based on those
3746
-	 * will open either a persistent or non-persistent connection.
3747
-	 * If a persistent connection is desired but not available it will defualt to non-persistent
3748
-	 *
3749
-	 * configOptions must include
3750
-	 * db_host_name - server ip
3751
-	 * db_user_name - database user name
3752
-	 * db_password - database password
3753
-	 *
3754
-	 * @param array   $configOptions
3755
-	 * @param boolean $dieOnError
3756
-	 */
3757
-	abstract public function connect(array $configOptions = null, $dieOnError = false);
3758
-
3759
-	/**
3760
-	 * Generates sql for create table statement for a bean.
3761
-	 *
3762
-	 * @param  string $tablename
3763
-	 * @param  array  $fieldDefs
3764
-	 * @param  array  $indices
3765
-	 * @return string SQL Create Table statement
3766
-	 */
3767
-	abstract public function createTableSQLParams($tablename, $fieldDefs, $indices);
3768
-
3769
-	/**
3770
-	 * Generates the SQL for changing columns
3771
-	 *
3772
-	 * @param string $tablename
3773
-	 * @param array  $fieldDefs
3774
-	 * @param string $action
3775
-	 * @param bool   $ignoreRequired Optional, true if we should ignor this being a required field
3776
-	 * @return string|array
3777
-	 */
3778
-	abstract protected function changeColumnSQL($tablename, $fieldDefs, $action, $ignoreRequired = false);
3779
-
3780
-	/**
3781
-	 * Disconnects from the database
3782
-	 *
3783
-	 * Also handles any cleanup needed
3784
-	 */
3785
-	abstract public function disconnect();
3786
-
3787
-	/**
3788
-	 * Get last database error
3789
-	 * This function should return last error as reported by DB driver
3790
-	 * and should return false if no error condition happened
3791
-	 * @return string|false Error message or false if no error happened
3792
-	 */
3793
-	abstract public function lastDbError();
3627
+    abstract function limitQuery($sql, $start, $count, $dieOnError = false, $msg = '', $execute = true);
3628
+
3629
+
3630
+    /**
3631
+     * Free Database result
3632
+     * @param resource $dbResult
3633
+     */
3634
+    abstract protected function freeDbResult($dbResult);
3635
+
3636
+    /**
3637
+     * Rename column in the DB
3638
+     * @param string $tablename
3639
+     * @param string $column
3640
+     * @param string $newname
3641
+     */
3642
+    abstract function renameColumnSQL($tablename, $column, $newname);
3643
+
3644
+    /**
3645
+     * Returns definitions of all indies for passed table.
3646
+     *
3647
+     * return will is a multi-dimensional array that
3648
+     * categorizes the index definition by types, unique, primary and index.
3649
+     * <code>
3650
+     * <?php
3651
+     * array(                                                              O
3652
+     *       'index1'=> array (
3653
+     *           'name'   => 'index1',
3654
+     *           'type'   => 'primary',
3655
+     *           'fields' => array('field1','field2')
3656
+     *           )
3657
+     *       )
3658
+     * ?>
3659
+     * </code>
3660
+     * This format is similar to how indicies are defined in vardef file.
3661
+     *
3662
+     * @param  string $tablename
3663
+     * @return array
3664
+     */
3665
+    abstract public function get_indices($tablename);
3666
+
3667
+    /**
3668
+     * Returns definitions of all indies for passed table.
3669
+     *
3670
+     * return will is a multi-dimensional array that
3671
+     * categorizes the index definition by types, unique, primary and index.
3672
+     * <code>
3673
+     * <?php
3674
+     * array(
3675
+     *       'field1'=> array (
3676
+     *           'name'   => 'field1',
3677
+     *           'type'   => 'varchar',
3678
+     *           'len' => '200'
3679
+     *           )
3680
+     *       )
3681
+     * ?>
3682
+     * </code>
3683
+     * This format is similar to how indicies are defined in vardef file.
3684
+     *
3685
+     * @param  string $tablename
3686
+     * @return array
3687
+     */
3688
+    abstract public function get_columns($tablename);
3689
+
3690
+    /**
3691
+     * Generates alter constraint statement given a table name and vardef definition.
3692
+     *
3693
+     * Supports both adding and droping a constraint.
3694
+     *
3695
+     * @param  string $table      tablename
3696
+     * @param  array  $definition field definition
3697
+     * @param  bool   $drop       true if we are dropping the constraint, false if we are adding it
3698
+     * @return string SQL statement
3699
+     */
3700
+    abstract public function add_drop_constraint($table, $definition, $drop = false);
3701
+
3702
+    /**
3703
+     * Returns the description of fields based on the result
3704
+     *
3705
+     * @param  resource $result
3706
+     * @param  boolean  $make_lower_case
3707
+     * @return array field array
3708
+     */
3709
+    abstract public function getFieldsArray($result, $make_lower_case = false);
3710
+
3711
+    /**
3712
+     * Returns an array of tables for this database
3713
+     *
3714
+     * @return	array|false 	an array of with table names, false if no tables found
3715
+     */
3716
+    abstract public function getTablesArray();
3717
+
3718
+    /**
3719
+     * Return's the version of the database
3720
+     *
3721
+     * @return string
3722
+     */
3723
+    abstract public function version();
3724
+
3725
+    /**
3726
+     * Checks if a table with the name $tableName exists
3727
+     * and returns true if it does or false otherwise
3728
+     *
3729
+     * @param  string $tableName
3730
+     * @return bool
3731
+     */
3732
+    abstract public function tableExists($tableName);
3733
+
3734
+    /**
3735
+     * Fetches the next row in the query result into an associative array
3736
+     *
3737
+     * @param  resource $result
3738
+     * @return array    returns false if there are no more rows available to fetch
3739
+     */
3740
+    abstract public function fetchRow($result);
3741
+
3742
+    /**
3743
+     * Connects to the database backend
3744
+     *
3745
+     * Takes in the database settings and opens a database connection based on those
3746
+     * will open either a persistent or non-persistent connection.
3747
+     * If a persistent connection is desired but not available it will defualt to non-persistent
3748
+     *
3749
+     * configOptions must include
3750
+     * db_host_name - server ip
3751
+     * db_user_name - database user name
3752
+     * db_password - database password
3753
+     *
3754
+     * @param array   $configOptions
3755
+     * @param boolean $dieOnError
3756
+     */
3757
+    abstract public function connect(array $configOptions = null, $dieOnError = false);
3758
+
3759
+    /**
3760
+     * Generates sql for create table statement for a bean.
3761
+     *
3762
+     * @param  string $tablename
3763
+     * @param  array  $fieldDefs
3764
+     * @param  array  $indices
3765
+     * @return string SQL Create Table statement
3766
+     */
3767
+    abstract public function createTableSQLParams($tablename, $fieldDefs, $indices);
3768
+
3769
+    /**
3770
+     * Generates the SQL for changing columns
3771
+     *
3772
+     * @param string $tablename
3773
+     * @param array  $fieldDefs
3774
+     * @param string $action
3775
+     * @param bool   $ignoreRequired Optional, true if we should ignor this being a required field
3776
+     * @return string|array
3777
+     */
3778
+    abstract protected function changeColumnSQL($tablename, $fieldDefs, $action, $ignoreRequired = false);
3779
+
3780
+    /**
3781
+     * Disconnects from the database
3782
+     *
3783
+     * Also handles any cleanup needed
3784
+     */
3785
+    abstract public function disconnect();
3786
+
3787
+    /**
3788
+     * Get last database error
3789
+     * This function should return last error as reported by DB driver
3790
+     * and should return false if no error condition happened
3791
+     * @return string|false Error message or false if no error happened
3792
+     */
3793
+    abstract public function lastDbError();
3794 3794
 
3795 3795
     /**
3796 3796
      * Check if this query is valid
@@ -3798,82 +3798,82 @@  discard block
 block discarded – undo
3798 3798
      * @param string $query
3799 3799
      * @return bool
3800 3800
      */
3801
-	abstract public function validateQuery($query);
3802
-
3803
-	/**
3804
-	 * Check if this driver can be used
3805
-	 * @return bool
3806
-	 */
3807
-	abstract public function valid();
3808
-
3809
-	/**
3810
-	 * Check if certain database exists
3811
-	 * @param string $dbname
3812
-	 */
3813
-	abstract public function dbExists($dbname);
3814
-
3815
-	/**
3816
-	 * Get tables like expression
3817
-	 * @param string $like Expression describing tables
3818
-	 * @return array
3819
-	 */
3820
-	abstract public function tablesLike($like);
3821
-
3822
-	/**
3823
-	 * Create a database
3824
-	 * @param string $dbname
3825
-	 */
3826
-	abstract public function createDatabase($dbname);
3827
-
3828
-	/**
3829
-	 * Drop a database
3830
-	 * @param string $dbname
3831
-	 */
3832
-	abstract public function dropDatabase($dbname);
3833
-
3834
-	/**
3835
-	 * Get database configuration information (DB-dependent)
3836
-	 * @return array|null
3837
-	 */
3838
-	abstract public function getDbInfo();
3839
-
3840
-	/**
3841
-	 * Check if certain DB user exists
3842
-	 * @param string $username
3843
-	 */
3844
-	abstract public function userExists($username);
3845
-
3846
-	/**
3847
-	 * Create DB user
3848
-	 * @param string $database_name
3849
-	 * @param string $host_name
3850
-	 * @param string $user
3851
-	 * @param string $password
3852
-	 */
3853
-	abstract public function createDbUser($database_name, $host_name, $user, $password);
3854
-
3855
-	/**
3856
-	 * Check if the database supports fulltext indexing
3857
-	 * Note that database driver can be capable of supporting FT (see supports('fulltext))
3858
-	 * but particular instance can still have it disabled
3859
-	 * @return bool
3860
-	 */
3861
-	abstract public function full_text_indexing_installed();
3862
-
3863
-	/**
3864
-	 * Generate fulltext query from set of terms
3865
-	 * @param string $field Field to search against
3866
-	 * @param array $terms Search terms that may be or not be in the result
3867
-	 * @param array $must_terms Search terms that have to be in the result
3868
-	 * @param array $exclude_terms Search terms that have to be not in the result
3869
-	 */
3870
-	abstract public function getFulltextQuery($field, $terms, $must_terms = array(), $exclude_terms = array());
3871
-
3872
-	/**
3873
-	 * Get install configuration for this DB
3874
-	 * @return array
3875
-	 */
3876
-	abstract public function installConfig();
3801
+    abstract public function validateQuery($query);
3802
+
3803
+    /**
3804
+     * Check if this driver can be used
3805
+     * @return bool
3806
+     */
3807
+    abstract public function valid();
3808
+
3809
+    /**
3810
+     * Check if certain database exists
3811
+     * @param string $dbname
3812
+     */
3813
+    abstract public function dbExists($dbname);
3814
+
3815
+    /**
3816
+     * Get tables like expression
3817
+     * @param string $like Expression describing tables
3818
+     * @return array
3819
+     */
3820
+    abstract public function tablesLike($like);
3821
+
3822
+    /**
3823
+     * Create a database
3824
+     * @param string $dbname
3825
+     */
3826
+    abstract public function createDatabase($dbname);
3827
+
3828
+    /**
3829
+     * Drop a database
3830
+     * @param string $dbname
3831
+     */
3832
+    abstract public function dropDatabase($dbname);
3833
+
3834
+    /**
3835
+     * Get database configuration information (DB-dependent)
3836
+     * @return array|null
3837
+     */
3838
+    abstract public function getDbInfo();
3839
+
3840
+    /**
3841
+     * Check if certain DB user exists
3842
+     * @param string $username
3843
+     */
3844
+    abstract public function userExists($username);
3845
+
3846
+    /**
3847
+     * Create DB user
3848
+     * @param string $database_name
3849
+     * @param string $host_name
3850
+     * @param string $user
3851
+     * @param string $password
3852
+     */
3853
+    abstract public function createDbUser($database_name, $host_name, $user, $password);
3854
+
3855
+    /**
3856
+     * Check if the database supports fulltext indexing
3857
+     * Note that database driver can be capable of supporting FT (see supports('fulltext))
3858
+     * but particular instance can still have it disabled
3859
+     * @return bool
3860
+     */
3861
+    abstract public function full_text_indexing_installed();
3862
+
3863
+    /**
3864
+     * Generate fulltext query from set of terms
3865
+     * @param string $field Field to search against
3866
+     * @param array $terms Search terms that may be or not be in the result
3867
+     * @param array $must_terms Search terms that have to be in the result
3868
+     * @param array $exclude_terms Search terms that have to be not in the result
3869
+     */
3870
+    abstract public function getFulltextQuery($field, $terms, $must_terms = array(), $exclude_terms = array());
3871
+
3872
+    /**
3873
+     * Get install configuration for this DB
3874
+     * @return array
3875
+     */
3876
+    abstract public function installConfig();
3877 3877
 
3878 3878
     /**
3879 3879
      * Returns a DB specific FROM clause which can be used to select against functions.
@@ -3890,5 +3890,5 @@  discard block
 block discarded – undo
3890 3890
      * @abstract
3891 3891
      * @return string
3892 3892
      */
3893
-	abstract public function getGuidSQL();
3893
+    abstract public function getGuidSQL();
3894 3894
 }
Please login to merge, or discard this patch.
Spacing   +314 added lines, -314 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
2
+if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 3
 /*********************************************************************************
4 4
  * SugarCRM Community Edition is a customer relationship management program developed by
5 5
  * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
@@ -314,7 +314,7 @@  discard block
 block discarded – undo
314 314
 		}
315 315
 
316 316
 		$dberror = $this->lastDbError();
317
-		if($dberror === false) {
317
+		if ($dberror === false) {
318 318
     		$this->last_error = false;
319 319
 	    	return false;
320 320
 		}
@@ -332,16 +332,16 @@  discard block
 block discarded – undo
332 332
 	 */
333 333
 	protected function registerError($userMessage, $message, $dieOnError = false)
334 334
 	{
335
-		if(!empty($message)) {
336
-			if(!empty($userMessage)) {
335
+		if (!empty($message)) {
336
+			if (!empty($userMessage)) {
337 337
 				$message = "$userMessage: $message";
338 338
 			}
339
-			if(empty($message)) {
339
+			if (empty($message)) {
340 340
 			    $message = "Database error";
341 341
 			}
342 342
 			$this->log->fatal($message);
343 343
 			if ($dieOnError || $this->dieOnError) {
344
-				if(isset($GLOBALS['app_strings']['ERR_DB_FAIL'])) {
344
+				if (isset($GLOBALS['app_strings']['ERR_DB_FAIL'])) {
345 345
 					sugar_die($GLOBALS['app_strings']['ERR_DB_FAIL']);
346 346
 				} else {
347 347
 					sugar_die("Database error. Please check suitecrm.log for details.");
@@ -379,8 +379,8 @@  discard block
 block discarded – undo
379 379
 		$slow_query_time_msec = isset($sugar_config['slow_query_time_msec'])
380 380
 			? $sugar_config['slow_query_time_msec'] : 5000;
381 381
 
382
-		if($do_the_dump) {
383
-			if($slow_query_time_msec < ($this->query_time * 1000)) {
382
+		if ($do_the_dump) {
383
+			if ($slow_query_time_msec < ($this->query_time * 1000)) {
384 384
 				// Then log both the query and the query time
385 385
 				$this->log->fatal('Slow Query (time:'.$this->query_time."\n".$query);
386 386
 				return true;
@@ -412,20 +412,20 @@  discard block
 block discarded – undo
412 412
 		$indices = $GLOBALS['dictionary'][$object_name]['indices'];
413 413
 
414 414
 	if (empty($indices)) {
415
-		foreach ( $GLOBALS['dictionary'] as $current ) {
416
-			if ($current['table'] == $table){
415
+		foreach ($GLOBALS['dictionary'] as $current) {
416
+			if ($current['table'] == $table) {
417 417
 				$indices = $current['indices'];
418 418
 				break;
419 419
 			}
420 420
 		}
421 421
 	}
422 422
 	if (empty($indices)) {
423
-		$this->log->warn('CHECK QUERY: Could not find index definitions for table ' . $table);
423
+		$this->log->warn('CHECK QUERY: Could not find index definitions for table '.$table);
424 424
 		return false;
425 425
 	}
426 426
 	if (!empty($match[2][0])) {
427 427
 		$orderBys = explode(' ', $match[2][0]);
428
-		foreach ($orderBys as $orderBy){
428
+		foreach ($orderBys as $orderBy) {
429 429
 			$orderBy = trim($orderBy);
430 430
 			if (empty($orderBy))
431 431
 				continue;
@@ -433,7 +433,7 @@  discard block
 block discarded – undo
433 433
 			if ($orderBy == 'asc' || $orderBy == 'desc')
434 434
 				continue;
435 435
 
436
-			$orderBy = str_replace(array($table . '.', ','), '', $orderBy);
436
+			$orderBy = str_replace(array($table.'.', ','), '', $orderBy);
437 437
 
438 438
 			foreach ($indices as $index)
439 439
 				if (empty($index['db']) || $index['db'] == $this->dbType)
@@ -441,11 +441,11 @@  discard block
 block discarded – undo
441 441
 						if ($field == $orderBy)
442 442
 							return true;
443 443
 
444
-			$warning = 'Missing Index For Order By Table: ' . $table . ' Order By:' . $orderBy ;
444
+			$warning = 'Missing Index For Order By Table: '.$table.' Order By:'.$orderBy;
445 445
 			if (!empty($GLOBALS['sugar_config']['dump_slow_queries']))
446
-				$this->log->fatal('CHECK QUERY:' .$warning);
446
+				$this->log->fatal('CHECK QUERY:'.$warning);
447 447
 			else
448
-				$this->log->warn('CHECK QUERY:' .$warning);
448
+				$this->log->warn('CHECK QUERY:'.$warning);
449 449
 		}
450 450
 	}
451 451
 	return false;
@@ -491,9 +491,9 @@  discard block
 block discarded – undo
491 491
 	public function insert(SugarBean $bean)
492 492
 	{
493 493
 		$sql = $this->insertSQL($bean);
494
-		$tablename =  $bean->getTableName();
494
+		$tablename = $bean->getTableName();
495 495
 		$msg = "Error inserting into table: $tablename:";
496
-		return $this->query($sql,true,$msg);
496
+		return $this->query($sql, true, $msg);
497 497
 	}
498 498
 
499 499
 	/**
@@ -512,13 +512,13 @@  discard block
 block discarded – undo
512 512
 		{
513 513
 			if (isset($fieldDef['source']) && $fieldDef['source'] != 'db')  continue;
514 514
 			//custom fields handle there save seperatley
515
-			if(!empty($field_map) && !empty($field_map[$field]['custom_type'])) continue;
515
+			if (!empty($field_map) && !empty($field_map[$field]['custom_type'])) continue;
516 516
 
517
-			if(isset($data[$field])) {
517
+			if (isset($data[$field])) {
518 518
 				// clean the incoming value..
519 519
 				$val = from_html($data[$field]);
520 520
 			} else {
521
-				if(isset($fieldDef['default']) && strlen($fieldDef['default']) > 0) {
521
+				if (isset($fieldDef['default']) && strlen($fieldDef['default']) > 0) {
522 522
 					$val = $fieldDef['default'];
523 523
 				} else {
524 524
 					$val = null;
@@ -528,26 +528,26 @@  discard block
 block discarded – undo
528 528
 			//handle auto increment values here - we may have to do something like nextval for oracle
529 529
 			if (!empty($fieldDef['auto_increment'])) {
530 530
 				$auto = $this->getAutoIncrementSQL($table, $fieldDef['name']);
531
-				if(!empty($auto)) {
531
+				if (!empty($auto)) {
532 532
 					$values[$field] = $auto;
533 533
 				}
534 534
 			} elseif ($fieldDef['name'] == 'deleted') {
535 535
 				$values['deleted'] = (int)$val;
536 536
 			} else {
537 537
 				// need to do some thing about types of values
538
-				if(!is_null($val) || !empty($fieldDef['required'])) {
538
+				if (!is_null($val) || !empty($fieldDef['required'])) {
539 539
 					$values[$field] = $this->massageValue($val, $fieldDef);
540 540
 				}
541 541
 			}
542 542
 		}
543 543
 
544 544
 		if (empty($values))
545
-			return $execute?true:''; // no columns set
545
+			return $execute ? true : ''; // no columns set
546 546
 
547 547
 		// get the entire sql
548 548
 		$query = "INSERT INTO $table (".implode(",", array_keys($values)).")
549 549
 					VALUES (".implode(",", $values).")";
550
-		return $execute?$this->query($query):$query;
550
+		return $execute ? $this->query($query) : $query;
551 551
 	}
552 552
 
553 553
     /**
@@ -565,7 +565,7 @@  discard block
 block discarded – undo
565 565
 		$sql = $this->updateSQL($bean, $where);
566 566
 		$tablename = $bean->getTableName();
567 567
 		$msg = "Error updating table: $tablename:";
568
-		return $this->query($sql,true,$msg);
568
+		return $this->query($sql, true, $msg);
569 569
 	}
570 570
 
571 571
     /**
@@ -581,8 +581,8 @@  discard block
 block discarded – undo
581 581
 	{
582 582
 		$sql = $this->deleteSQL($bean, $where);
583 583
 		$tableName = $bean->getTableName();
584
-		$msg = "Error deleting from table: ".$tableName. ":";
585
-		return $this->query($sql,true,$msg);
584
+		$msg = "Error deleting from table: ".$tableName.":";
585
+		return $this->query($sql, true, $msg);
586 586
 	}
587 587
 
588 588
 	/**
@@ -599,8 +599,8 @@  discard block
 block discarded – undo
599 599
 	{
600 600
 		$sql = $this->retrieveSQL($bean, $where);
601 601
 		$tableName = $bean->getTableName();
602
-		$msg = "Error retriving values from table:".$tableName. ":";
603
-		return $this->query($sql,true,$msg);
602
+		$msg = "Error retriving values from table:".$tableName.":";
603
+		return $this->query($sql, true, $msg);
604 604
 	}
605 605
 
606 606
 	/**
@@ -623,7 +623,7 @@  discard block
 block discarded – undo
623 623
 	{
624 624
 		$sql = $this->retrieveViewSQL($beans, $cols, $where);
625 625
 		$msg = "Error retriving values from View Collection:";
626
-		return $this->query($sql,true,$msg);
626
+		return $this->query($sql, true, $msg);
627 627
 	}
628 628
 
629 629
 
@@ -638,8 +638,8 @@  discard block
 block discarded – undo
638 638
 		$sql = $this->createTableSQL($bean);
639 639
 		$tablename = $bean->getTableName();
640 640
 		$msg = "Error creating table: $tablename:";
641
-		$this->query($sql,true,$msg);
642
-		if(!$this->supports("inline_keys")) {
641
+		$this->query($sql, true, $msg);
642
+		if (!$this->supports("inline_keys")) {
643 643
 		// handle constraints and indices
644 644
 			$indicesArr = $this->createConstraintSql($bean);
645 645
 			if (count($indicesArr) > 0)
@@ -676,9 +676,9 @@  discard block
 block discarded – undo
676 676
 			$res = true;
677 677
 			if ($sql) {
678 678
 				$msg = "Error creating table: $tablename";
679
-				$res = ($res and $this->query($sql,true,$msg));
679
+				$res = ($res and $this->query($sql, true, $msg));
680 680
 			}
681
-			if(!$this->supports("inline_keys")) {
681
+			if (!$this->supports("inline_keys")) {
682 682
 				// handle constraints and indices
683 683
 				$indicesArr = $this->getConstraintSql($indices, $tablename);
684 684
 				if (count($indicesArr) > 0)
@@ -705,20 +705,20 @@  discard block
 block discarded – undo
705 705
 
706 706
 		//Clean the indexes to prevent duplicate definitions
707 707
 		$new_index = array();
708
-		foreach($indices as $ind_def){
708
+		foreach ($indices as $ind_def) {
709 709
 			$new_index[$ind_def['name']] = $ind_def;
710 710
 		}
711 711
 		//jc: added this for beans that do not actually have a table, namely
712 712
 		//ForecastOpportunities
713
-		if($tablename == 'does_not_exist' || $tablename == '')
713
+		if ($tablename == 'does_not_exist' || $tablename == '')
714 714
 			return '';
715 715
 
716 716
 		global $dictionary;
717
-		$engine=null;
718
-		if (isset($dictionary[$bean->getObjectName()]['engine']) && !empty($dictionary[$bean->getObjectName()]['engine']) )
717
+		$engine = null;
718
+		if (isset($dictionary[$bean->getObjectName()]['engine']) && !empty($dictionary[$bean->getObjectName()]['engine']))
719 719
 			$engine = $dictionary[$bean->getObjectName()]['engine'];
720 720
 
721
-		return $this->repairTableParams($tablename, $fielddefs,$new_index,$execute,$engine);
721
+		return $this->repairTableParams($tablename, $fielddefs, $new_index, $execute, $engine);
722 722
 	}
723 723
 
724 724
 	/**
@@ -730,12 +730,12 @@  discard block
 block discarded – undo
730 730
 	protected function isNullable($vardef)
731 731
 	{
732 732
 
733
-		if(isset($vardef['isnull']) && (strtolower($vardef['isnull']) == 'false' || $vardef['isnull'] === false)
733
+		if (isset($vardef['isnull']) && (strtolower($vardef['isnull']) == 'false' || $vardef['isnull'] === false)
734 734
 			&& !empty($vardef['required'])) {
735 735
 				/* required + is_null=false => not null */
736 736
 			return false;
737 737
 		}
738
-		if(empty($vardef['auto_increment']) && (empty($vardef['type']) || $vardef['type'] != 'id')
738
+		if (empty($vardef['auto_increment']) && (empty($vardef['type']) || $vardef['type'] != 'id')
739 739
 					&& (empty($vardef['dbType']) || $vardef['dbType'] != 'id')
740 740
 					&& (empty($vardef['name']) || ($vardef['name'] != 'id' && $vardef['name'] != 'deleted'))
741 741
 		) {
@@ -756,7 +756,7 @@  discard block
 block discarded – undo
756 756
      * @todo: refactor engine param to be more generic
757 757
      * @return string
758 758
      */
759
-	public function repairTableParams($tablename, $fielddefs,  $indices, $execute = true, $engine = null)
759
+	public function repairTableParams($tablename, $fielddefs, $indices, $execute = true, $engine = null)
760 760
 	{
761 761
 		//jc: had a bug when running the repair if the tablename is blank the repair will
762 762
 		//fail when it tries to create a repair table
@@ -766,13 +766,13 @@  discard block
 block discarded – undo
766 766
 		//if the table does not exist create it and we are done
767 767
 		$sql = "/* Table : $tablename */\n";
768 768
 		if (!$this->tableExists($tablename)) {
769
-			$createtablesql = $this->createTableSQLParams($tablename,$fielddefs,$indices,$engine);
770
-			if($execute && $createtablesql){
771
-				$this->createTableParams($tablename,$fielddefs,$indices,$engine);
769
+			$createtablesql = $this->createTableSQLParams($tablename, $fielddefs, $indices, $engine);
770
+			if ($execute && $createtablesql) {
771
+				$this->createTableParams($tablename, $fielddefs, $indices, $engine);
772 772
 			}
773 773
 
774 774
 			$sql .= "/* MISSING TABLE: {$tablename} */\n";
775
-			$sql .= $createtablesql . "\n";
775
+			$sql .= $createtablesql."\n";
776 776
 			return $sql;
777 777
 		}
778 778
 
@@ -782,7 +782,7 @@  discard block
 block discarded – undo
782 782
 		$take_action = false;
783 783
 
784 784
 		// do column comparisons
785
-		$sql .=	"/*COLUMNS*/\n";
785
+		$sql .= "/*COLUMNS*/\n";
786 786
 		foreach ($fielddefs as $name => $value) {
787 787
 			if (isset($value['source']) && $value['source'] != 'db')
788 788
 				continue;
@@ -801,9 +801,9 @@  discard block
 block discarded – undo
801 801
 
802 802
 			$name = strtolower($value['name']);
803 803
 			// add or fix the field defs per what the DB is expected to give us back
804
-			$this->massageFieldDef($value,$tablename);
804
+			$this->massageFieldDef($value, $tablename);
805 805
 
806
-			$ignorerequired=false;
806
+			$ignorerequired = false;
807 807
 
808 808
 			//Do not track requiredness in the DB, auto_increment, ID,
809 809
 			// and deleted fields are always required in the DB, so don't force those
@@ -819,32 +819,32 @@  discard block
 block discarded – undo
819 819
 				$value['required'] = $compareFieldDefs[$name]['required'];
820 820
 			}
821 821
 
822
-			if ( !isset($compareFieldDefs[$name]) ) {
822
+			if (!isset($compareFieldDefs[$name])) {
823 823
 				// ok we need this field lets create it
824
-				$sql .=	"/*MISSING IN DATABASE - $name -  ROW*/\n";
825
-				$sql .= $this->addColumnSQL($tablename, $value) .  "\n";
824
+				$sql .= "/*MISSING IN DATABASE - $name -  ROW*/\n";
825
+				$sql .= $this->addColumnSQL($tablename, $value)."\n";
826 826
 				if ($execute)
827 827
 					$this->addColumn($tablename, $value);
828 828
 				$take_action = true;
829
-			} elseif ( !$this->compareVarDefs($compareFieldDefs[$name],$value)) {
829
+			} elseif (!$this->compareVarDefs($compareFieldDefs[$name], $value)) {
830 830
 				//fields are different lets alter it
831
-				$sql .=	"/*MISMATCH WITH DATABASE - $name -  ROW ";
832
-				foreach($compareFieldDefs[$name] as $rKey => $rValue) {
833
-					$sql .=	"[$rKey] => '$rValue'  ";
831
+				$sql .= "/*MISMATCH WITH DATABASE - $name -  ROW ";
832
+				foreach ($compareFieldDefs[$name] as $rKey => $rValue) {
833
+					$sql .= "[$rKey] => '$rValue'  ";
834 834
 				}
835
-				$sql .=	"*/\n";
836
-				$sql .=	"/* VARDEF - $name -  ROW";
837
-				foreach($value as $rKey => $rValue) {
838
-					$sql .=	"[$rKey] => '$rValue'  ";
835
+				$sql .= "*/\n";
836
+				$sql .= "/* VARDEF - $name -  ROW";
837
+				foreach ($value as $rKey => $rValue) {
838
+					$sql .= "[$rKey] => '$rValue'  ";
839 839
 				}
840
-				$sql .=	"*/\n";
840
+				$sql .= "*/\n";
841 841
 
842 842
 				//jc: oracle will complain if you try to execute a statement that sets a column to (not) null
843 843
 				//when it is already (not) null
844
-				if ( isset($value['isnull']) && isset($compareFieldDefs[$name]['isnull']) &&
844
+				if (isset($value['isnull']) && isset($compareFieldDefs[$name]['isnull']) &&
845 845
 					$value['isnull'] === $compareFieldDefs[$name]['isnull']) {
846 846
 					unset($value['required']);
847
-					$ignorerequired=true;
847
+					$ignorerequired = true;
848 848
 				}
849 849
 
850 850
 				//dwheeler: Once a column has been defined as null, we cannot try to force it back to !null
@@ -853,12 +853,12 @@  discard block
 block discarded – undo
853 853
 				{
854 854
 					$ignorerequired = true;
855 855
 				}
856
-				$altersql = $this->alterColumnSQL($tablename, $value,$ignorerequired);
857
-				if(is_array($altersql)) {
856
+				$altersql = $this->alterColumnSQL($tablename, $value, $ignorerequired);
857
+				if (is_array($altersql)) {
858 858
 					$altersql = join("\n", $altersql);
859 859
 				}
860
-				$sql .= $altersql .  "\n";
861
-				if($execute){
860
+				$sql .= $altersql."\n";
861
+				if ($execute) {
862 862
 					$this->alterColumn($tablename, $value, $ignorerequired);
863 863
 				}
864 864
 				$take_action = true;
@@ -866,13 +866,13 @@  discard block
 block discarded – undo
866 866
 		}
867 867
 
868 868
 		// do index comparisons
869
-		$sql .=	"/* INDEXES */\n";
869
+		$sql .= "/* INDEXES */\n";
870 870
 		$correctedIndexs = array();
871 871
 
872 872
         $compareIndices_case_insensitive = array();
873 873
 
874 874
 		// do indices comparisons case-insensitive
875
-		foreach($compareIndices as $k => $value){
875
+		foreach ($compareIndices as $k => $value) {
876 876
 			$value['name'] = strtolower($value['name']);
877 877
 			$compareIndices_case_insensitive[strtolower($k)] = $value;
878 878
 		}
@@ -899,59 +899,59 @@  discard block
 block discarded – undo
899 899
 				continue;
900 900
 
901 901
 			//database helpers do not know how to handle full text indices
902
-			if ($value['type']=='fulltext')
902
+			if ($value['type'] == 'fulltext')
903 903
 				continue;
904 904
 
905
-			if ( in_array($value['type'],array('alternate_key','foreign')) )
905
+			if (in_array($value['type'], array('alternate_key', 'foreign')))
906 906
 				$value['type'] = 'index';
907 907
 
908
-			if ( !isset($compareIndices[$name]) ) {
908
+			if (!isset($compareIndices[$name])) {
909 909
 				//First check if an index exists that doesn't match our name, if so, try to rename it
910 910
 				$found = false;
911 911
 				foreach ($compareIndices as $ex_name => $ex_value) {
912
-					if($this->compareVarDefs($ex_value, $value, true)) {
912
+					if ($this->compareVarDefs($ex_value, $value, true)) {
913 913
 						$found = $ex_name;
914 914
 						break;
915 915
 					}
916 916
 				}
917 917
 				if ($found) {
918
-					$sql .=	 "/*MISSNAMED INDEX IN DATABASE - $name - $ex_name */\n";
918
+					$sql .= "/*MISSNAMED INDEX IN DATABASE - $name - $ex_name */\n";
919 919
 					$rename = $this->renameIndexDefs($ex_value, $value, $tablename);
920
-					if($execute) {
920
+					if ($execute) {
921 921
 						$this->query($rename, true, "Cannot rename index");
922 922
 					}
923
-					$sql .= is_array($rename)?join("\n", $rename). "\n":$rename."\n";
923
+					$sql .= is_array($rename) ? join("\n", $rename)."\n" : $rename."\n";
924 924
 
925 925
 				} else {
926 926
 					// ok we need this field lets create it
927
-					$sql .=	 "/*MISSING INDEX IN DATABASE - $name -{$value['type']}  ROW */\n";
928
-					$sql .= $this->addIndexes($tablename,array($value), $execute) .  "\n";
927
+					$sql .= "/*MISSING INDEX IN DATABASE - $name -{$value['type']}  ROW */\n";
928
+					$sql .= $this->addIndexes($tablename, array($value), $execute)."\n";
929 929
 				}
930 930
 				$take_action = true;
931 931
 				$correctedIndexs[$name] = true;
932
-			} elseif ( !$this->compareVarDefs($compareIndices[$name],$value) ) {
932
+			} elseif (!$this->compareVarDefs($compareIndices[$name], $value)) {
933 933
 				// fields are different lets alter it
934
-				$sql .=	"/*INDEX MISMATCH WITH DATABASE - $name -  ROW ";
934
+				$sql .= "/*INDEX MISMATCH WITH DATABASE - $name -  ROW ";
935 935
 				foreach ($compareIndices[$name] as $n1 => $t1) {
936
-					$sql .=	 "<$n1>";
937
-					if ( $n1 == 'fields' )
938
-						foreach($t1 as $rKey => $rValue)
936
+					$sql .= "<$n1>";
937
+					if ($n1 == 'fields')
938
+						foreach ($t1 as $rKey => $rValue)
939 939
 							$sql .= "[$rKey] => '$rValue'  ";
940 940
 					else
941 941
 						$sql .= " $t1 ";
942 942
 				}
943
-				$sql .=	"*/\n";
944
-				$sql .=	"/* VARDEF - $name -  ROW";
943
+				$sql .= "*/\n";
944
+				$sql .= "/* VARDEF - $name -  ROW";
945 945
 				foreach ($value as $n1 => $t1) {
946
-					$sql .=	"<$n1>";
947
-					if ( $n1 == 'fields' )
946
+					$sql .= "<$n1>";
947
+					if ($n1 == 'fields')
948 948
 						foreach ($t1 as $rKey => $rValue)
949
-							$sql .=	"[$rKey] => '$rValue'  ";
949
+							$sql .= "[$rKey] => '$rValue'  ";
950 950
 					else
951 951
 						$sql .= " $t1 ";
952 952
 				}
953
-				$sql .=	"*/\n";
954
-				$sql .= $this->modifyIndexes($tablename,array($value), $execute) .  "\n";
953
+				$sql .= "*/\n";
954
+				$sql .= $this->modifyIndexes($tablename, array($value), $execute)."\n";
955 955
 				$take_action = true;
956 956
 				$correctedIndexs[$name] = true;
957 957
 			}
@@ -970,7 +970,7 @@  discard block
 block discarded – undo
970 970
      */
971 971
 	public function compareVarDefs($fielddef1, $fielddef2, $ignoreName = false)
972 972
 	{
973
-		foreach ( $fielddef1 as $key => $value ) {
973
+		foreach ($fielddef1 as $key => $value) {
974 974
 			if ($key == 'name' && $ignoreName)
975 975
 				continue;
976 976
             if (isset($fielddef2[$key]))
@@ -984,7 +984,7 @@  discard block
 block discarded – undo
984 984
                 }
985 985
                 else
986 986
                 {
987
-                    if (array_map('strtolower', $fielddef1[$key]) == array_map('strtolower',$fielddef2[$key]))
987
+                    if (array_map('strtolower', $fielddef1[$key]) == array_map('strtolower', $fielddef2[$key]))
988 988
                     {
989 989
                         continue;
990 990
                     }
@@ -1033,9 +1033,9 @@  discard block
 block discarded – undo
1033 1033
 				}
1034 1034
 				else {
1035 1035
 					$returnArray['msg'] = 'match';
1036
-					foreach($row1 as $key => $value){
1036
+					foreach ($row1 as $key => $value) {
1037 1037
 						//ignore keys when checking we will check them when we do the index check
1038
-						if( !isset($ignore_filter[$key]) && (!isset($row2[$key]) || $row1[$key] !== $row2[$key])){
1038
+						if (!isset($ignore_filter[$key]) && (!isset($row2[$key]) || $row1[$key] !== $row2[$key])) {
1039 1039
 							$returnArray['msg'] = 'no_match';
1040 1040
 						}
1041 1041
 					}
@@ -1111,7 +1111,7 @@  discard block
 block discarded – undo
1111 1111
 		$sql = $this->createIndexSQL($bean, $fieldDefs, $name, $unique);
1112 1112
 		$tablename = $bean->getTableName();
1113 1113
 		$msg = "Error creating index $name on table: $tablename:";
1114
-		return $this->query($sql,true,$msg);
1114
+		return $this->query($sql, true, $msg);
1115 1115
 	}
1116 1116
 
1117 1117
 	/**
@@ -1128,14 +1128,14 @@  discard block
 block discarded – undo
1128 1128
 		$columns = array();
1129 1129
 
1130 1130
 		foreach ($indices as $index) {
1131
-			if(!empty($index['db']) && $index['db'] != $this->dbType)
1131
+			if (!empty($index['db']) && $index['db'] != $this->dbType)
1132 1132
 				continue;
1133 1133
 			if (isset($index['source']) && $index['source'] != 'db')
1134 1134
 			continue;
1135 1135
 
1136 1136
 			$sql = $this->add_drop_constraint($table, $index);
1137 1137
 
1138
-			if(!empty($sql)) {
1138
+			if (!empty($sql)) {
1139 1139
 				$columns[] = $sql;
1140 1140
 			}
1141 1141
 		}
@@ -1155,11 +1155,11 @@  discard block
 block discarded – undo
1155 1155
 	{
1156 1156
 		$alters = $this->getConstraintSql($indexes, $tablename);
1157 1157
 		if ($execute) {
1158
-			foreach($alters as $sql) {
1158
+			foreach ($alters as $sql) {
1159 1159
 				$this->query($sql, true, "Error adding index: ");
1160 1160
 			}
1161 1161
 		}
1162
-		if(!empty($alters)) {
1162
+		if (!empty($alters)) {
1163 1163
 			$sql = join(";\n", $alters).";\n";
1164 1164
 		} else {
1165 1165
 			$sql = '';
@@ -1179,17 +1179,17 @@  discard block
 block discarded – undo
1179 1179
 	{
1180 1180
 		$sqls = array();
1181 1181
 		foreach ($indexes as $index) {
1182
-			$name =$index['name'];
1183
-			$sqls[$name] = $this->add_drop_constraint($tablename,$index,true);
1182
+			$name = $index['name'];
1183
+			$sqls[$name] = $this->add_drop_constraint($tablename, $index, true);
1184 1184
 		}
1185 1185
 		if (!empty($sqls) && $execute) {
1186
-			foreach($sqls as $name => $sql) {
1186
+			foreach ($sqls as $name => $sql) {
1187 1187
 				unset(self::$index_descriptions[$tablename][$name]);
1188 1188
 				$this->query($sql);
1189 1189
 			}
1190 1190
 		}
1191
-		if(!empty($sqls)) {
1192
-			return join(";\n",$sqls).";";
1191
+		if (!empty($sqls)) {
1192
+			return join(";\n", $sqls).";";
1193 1193
 		} else {
1194 1194
 			return '';
1195 1195
 		}
@@ -1219,7 +1219,7 @@  discard block
 block discarded – undo
1219 1219
 	public function addColumn($tablename, $fieldDefs)
1220 1220
 	{
1221 1221
 		$sql = $this->addColumnSQL($tablename, $fieldDefs);
1222
-		if ($this->isFieldArray($fieldDefs)){
1222
+		if ($this->isFieldArray($fieldDefs)) {
1223 1223
 			$columns = array();
1224 1224
 			foreach ($fieldDefs as $fieldDef)
1225 1225
 				$columns[] = $fieldDef['name'];
@@ -1229,7 +1229,7 @@  discard block
 block discarded – undo
1229 1229
 			$columns = $fieldDefs['name'];
1230 1230
 		}
1231 1231
 		$msg = "Error adding column(s) $columns on table: $tablename:";
1232
-		return $this->query($sql,true,$msg);
1232
+		return $this->query($sql, true, $msg);
1233 1233
 	}
1234 1234
 
1235 1235
 	/**
@@ -1242,8 +1242,8 @@  discard block
 block discarded – undo
1242 1242
      */
1243 1243
 	public function alterColumn($tablename, $newFieldDef, $ignoreRequired = false)
1244 1244
 	{
1245
-		$sql = $this->alterColumnSQL($tablename, $newFieldDef,$ignoreRequired);
1246
-		if ($this->isFieldArray($newFieldDef)){
1245
+		$sql = $this->alterColumnSQL($tablename, $newFieldDef, $ignoreRequired);
1246
+		if ($this->isFieldArray($newFieldDef)) {
1247 1247
 			$columns = array();
1248 1248
 			foreach ($newFieldDef as $fieldDef) {
1249 1249
 				$columns[] = $fieldDef['name'];
@@ -1255,8 +1255,8 @@  discard block
 block discarded – undo
1255 1255
 		}
1256 1256
 
1257 1257
 		$msg = "Error altering column(s) $columns on table: $tablename:";
1258
-		$res = $this->query($sql,true,$msg);
1259
-		if($res) {
1258
+		$res = $this->query($sql, true, $msg);
1259
+		if ($res) {
1260 1260
 			$this->getTableDescription($tablename, true); // reload table description after altering
1261 1261
 		}
1262 1262
 		return $res;
@@ -1282,7 +1282,7 @@  discard block
 block discarded – undo
1282 1282
 	public function dropTableName($name)
1283 1283
 	{
1284 1284
 		$sql = $this->dropTableNameSQL($name);
1285
-		return $this->query($sql,true,"Error dropping table $name:");
1285
+		return $this->query($sql, true, "Error dropping table $name:");
1286 1286
 	}
1287 1287
 
1288 1288
     /**
@@ -1297,7 +1297,7 @@  discard block
 block discarded – undo
1297 1297
 		$tablename = $bean->getTableName();
1298 1298
 		$sql = $this->dropColumnSQL($tablename, $fieldDefs);
1299 1299
 		$msg = "Error deleting column(s) on table: $tablename:";
1300
-		return $this->query($sql,true,$msg);
1300
+		return $this->query($sql, true, $msg);
1301 1301
 	}
1302 1302
 
1303 1303
     /**
@@ -1320,18 +1320,18 @@  discard block
 block discarded – undo
1320 1320
 
1321 1321
 		$rows_found = 0;
1322 1322
 		$count_query = $bean->create_list_count_query($select_query);
1323
-		if(!empty($count_query))
1323
+		if (!empty($count_query))
1324 1324
 		{
1325 1325
 			// We have a count query.  Run it and get the results.
1326 1326
 			$result = $this->query($count_query, true, "Error running count query for $this->object_name List: ");
1327 1327
 			$assoc = $this->fetchByAssoc($result);
1328
-			if(!empty($assoc['c']))
1328
+			if (!empty($assoc['c']))
1329 1329
 			{
1330 1330
 				$rows_found = $assoc['c'];
1331 1331
 			}
1332 1332
 		}
1333
-		if($count == -1){
1334
-			$count 	= $sugar_config['list_max_entries_per_page'];
1333
+		if ($count == -1) {
1334
+			$count = $sugar_config['list_max_entries_per_page'];
1335 1335
 		}
1336 1336
 		$next_offset = $start + $count;
1337 1337
 
@@ -1344,13 +1344,13 @@  discard block
 block discarded – undo
1344 1344
 		$fields = $bean->getFieldDefinitions();
1345 1345
 		$custom_fields = array();
1346 1346
 
1347
-		if($bean->hasCustomFields()){
1348
-			foreach ($fields as $fieldDef){
1349
-				if($fieldDef['source'] == 'custom_fields'){
1347
+		if ($bean->hasCustomFields()) {
1348
+			foreach ($fields as $fieldDef) {
1349
+				if ($fieldDef['source'] == 'custom_fields') {
1350 1350
 					$custom_fields[$fieldDef['name']] = $fieldDef['name'];
1351 1351
 				}
1352 1352
 			}
1353
-			if(!empty($custom_fields)){
1353
+			if (!empty($custom_fields)) {
1354 1354
 				$custom_fields['id_c'] = 'id_c';
1355 1355
 				$id_field = array('name' => 'id_c', 'custom_type' => 'id',);
1356 1356
 				$fields[] = $id_field;
@@ -1363,50 +1363,50 @@  discard block
 block discarded – undo
1363 1363
 		$cstm_row_array = array();
1364 1364
 		$cstm_columns = array();
1365 1365
 		$built_columns = false;
1366
-		while(($row = $this->fetchByAssoc($result)) != null)
1366
+		while (($row = $this->fetchByAssoc($result)) != null)
1367 1367
 		{
1368 1368
 			$values = array();
1369 1369
 			$cstm_values = array();
1370
-			if(!$is_related_query){
1370
+			if (!$is_related_query) {
1371 1371
 				foreach ($fields as $fieldDef)
1372 1372
 				{
1373
-					if(isset($fieldDef['source']) && $fieldDef['source'] != 'db' && $fieldDef['source'] != 'custom_fields') continue;
1373
+					if (isset($fieldDef['source']) && $fieldDef['source'] != 'db' && $fieldDef['source'] != 'custom_fields') continue;
1374 1374
 					$val = $row[$fieldDef['name']];
1375 1375
 
1376 1376
 					//handle auto increment values here only need to do this on insert not create
1377
-					if ($fieldDef['name'] == 'deleted'){
1377
+					if ($fieldDef['name'] == 'deleted') {
1378 1378
 							$values['deleted'] = $val;
1379
-							if(!$built_columns){
1379
+							if (!$built_columns) {
1380 1380
 							$columns[] = 'deleted';
1381 1381
 						}
1382 1382
 					}
1383 1383
 					else
1384 1384
 					{
1385 1385
 						$type = $fieldDef['type'];
1386
-						if(!empty($fieldDef['custom_type'])){
1386
+						if (!empty($fieldDef['custom_type'])) {
1387 1387
 							$type = $fieldDef['custom_type'];
1388 1388
 						}
1389 1389
 						// need to do some thing about types of values
1390
-						if($this->dbType == 'mysql' && $val == '' && ($type == 'datetime' ||  $type == 'date' || $type == 'int' || $type == 'currency' || $type == 'decimal')){
1391
-							if(!empty($custom_fields[$fieldDef['name']]))
1390
+						if ($this->dbType == 'mysql' && $val == '' && ($type == 'datetime' || $type == 'date' || $type == 'int' || $type == 'currency' || $type == 'decimal')) {
1391
+							if (!empty($custom_fields[$fieldDef['name']]))
1392 1392
 								$cstm_values[$fieldDef['name']] = 'null';
1393 1393
 							else
1394 1394
 								$values[$fieldDef['name']] = 'null';
1395
-						}else{
1396
-							if(isset($type) && $type=='int') {
1397
-								if(!empty($custom_fields[$fieldDef['name']]))
1395
+						} else {
1396
+							if (isset($type) && $type == 'int') {
1397
+								if (!empty($custom_fields[$fieldDef['name']]))
1398 1398
 									$cstm_values[$fieldDef['name']] = $GLOBALS['db']->quote(from_html($val));
1399 1399
 								else
1400 1400
 									$values[$fieldDef['name']] = $GLOBALS['db']->quote(from_html($val));
1401 1401
 							} else {
1402
-								if(!empty($custom_fields[$fieldDef['name']]))
1402
+								if (!empty($custom_fields[$fieldDef['name']]))
1403 1403
 									$cstm_values[$fieldDef['name']] = "'".$GLOBALS['db']->quote(from_html($val))."'";
1404 1404
 								else
1405 1405
 									$values[$fieldDef['name']] = "'".$GLOBALS['db']->quote(from_html($val))."'";
1406 1406
 							}
1407 1407
 						}
1408
-						if(!$built_columns){
1409
-							if(!empty($custom_fields[$fieldDef['name']]))
1408
+						if (!$built_columns) {
1409
+							if (!empty($custom_fields[$fieldDef['name']]))
1410 1410
 								$cstm_columns[] = $fieldDef['name'];
1411 1411
 							else
1412 1412
 								$columns[] = $fieldDef['name'];
@@ -1417,19 +1417,19 @@  discard block
 block discarded – undo
1417 1417
 			} else {
1418 1418
 			foreach ($row as $key=>$val)
1419 1419
 			{
1420
-					if($key != 'orc_row'){
1420
+					if ($key != 'orc_row') {
1421 1421
 						$values[$key] = "'$val'";
1422
-						if(!$built_columns){
1422
+						if (!$built_columns) {
1423 1423
 							$columns[] = $key;
1424 1424
 						}
1425 1425
 					}
1426 1426
 			}
1427 1427
 			}
1428 1428
 			$built_columns = true;
1429
-			if(!empty($values)){
1429
+			if (!empty($values)) {
1430 1430
 				$row_array[] = $values;
1431 1431
 			}
1432
-			if(!empty($cstm_values) && !empty($cstm_values['id_c']) && (strlen($cstm_values['id_c']) > 7)){
1432
+			if (!empty($cstm_values) && !empty($cstm_values['id_c']) && (strlen($cstm_values['id_c']) > 7)) {
1433 1433
 				$cstm_row_array[] = $cstm_values;
1434 1434
 			}
1435 1435
 		}
@@ -1439,9 +1439,9 @@  discard block
 block discarded – undo
1439 1439
 		// get the entire sql
1440 1440
 		$sql .= "(".implode(",", $columns).") ";
1441 1441
 		$sql .= "VALUES";
1442
-		for($i = 0; $i < count($row_array); $i++){
1442
+		for ($i = 0; $i < count($row_array); $i++) {
1443 1443
 			$sql .= " (".implode(",", $row_array[$i]).")";
1444
-			if($i < (count($row_array) - 1)){
1444
+			if ($i < (count($row_array) - 1)) {
1445 1445
 				$sql .= ", ";
1446 1446
 			}
1447 1447
 		}
@@ -1450,9 +1450,9 @@  discard block
 block discarded – undo
1450 1450
 		$custom_sql .= "(".implode(",", $cstm_columns).") ";
1451 1451
 		$custom_sql .= "VALUES";
1452 1452
 
1453
-		for($i = 0; $i < count($cstm_row_array); $i++){
1453
+		for ($i = 0; $i < count($cstm_row_array); $i++) {
1454 1454
 			$custom_sql .= " (".implode(",", $cstm_row_array[$i]).")";
1455
-			if($i < (count($cstm_row_array) - 1)){
1455
+			if ($i < (count($cstm_row_array) - 1)) {
1456 1456
 				$custom_sql .= ", ";
1457 1457
 			}
1458 1458
 		}
@@ -1545,17 +1545,17 @@  discard block
 block discarded – undo
1545 1545
      */
1546 1546
     public function quoteType($type, $value)
1547 1547
 	{
1548
-	    if($type == 'date') {
1548
+	    if ($type == 'date') {
1549 1549
 	        return $this->convert($this->quoted($value), "date");
1550 1550
 	    }
1551
-	    if($type == 'time') {
1551
+	    if ($type == 'time') {
1552 1552
 	        return $this->convert($this->quoted($value), "time");
1553 1553
 	    }
1554
-        if(isset($this->type_class[$type]) &&  $this->type_class[$type] == "date") {
1554
+        if (isset($this->type_class[$type]) && $this->type_class[$type] == "date") {
1555 1555
             return $this->convert($this->quoted($value), "datetime");
1556 1556
         }
1557
-        if($this->isNumericType($type)) {
1558
-            return 0+$value; // ensure it's numeric
1557
+        if ($this->isNumericType($type)) {
1558
+            return 0 + $value; // ensure it's numeric
1559 1559
         }
1560 1560
 
1561 1561
         return $this->quoted($value);
@@ -1571,7 +1571,7 @@  discard block
 block discarded – undo
1571 1571
      */
1572 1572
 	public function arrayQuote(array &$array)
1573 1573
 	{
1574
-		foreach($array as &$val) {
1574
+		foreach ($array as &$val) {
1575 1575
 			$val = $this->quote($val);
1576 1576
 		}
1577 1577
 		return $array;
@@ -1584,10 +1584,10 @@  discard block
 block discarded – undo
1584 1584
      */
1585 1585
 	protected function freeResult($result = false)
1586 1586
 	{
1587
-		if($result) {
1587
+		if ($result) {
1588 1588
 			$this->freeDbResult($result);
1589 1589
 		}
1590
-		if($this->lastResult) {
1590
+		if ($this->lastResult) {
1591 1591
 			$this->freeDbResult($this->lastResult);
1592 1592
 			$this->lastResult = null;
1593 1593
 		}
@@ -1616,17 +1616,17 @@  discard block
 block discarded – undo
1616 1616
 	public function getOne($sql, $dieOnError = false, $msg = '')
1617 1617
 	{
1618 1618
 		$this->log->info("Get One: |$sql|");
1619
-		if(!$this->hasLimit($sql)) {
1619
+		if (!$this->hasLimit($sql)) {
1620 1620
 		    $queryresult = $this->limitQuery($sql, 0, 1, $dieOnError, $msg);
1621 1621
 		} else {
1622 1622
 		    // support old code that passes LIMIT to sql
1623 1623
 		    // works only for mysql, so do not rely on this
1624 1624
 		    $queryresult = $this->query($sql, $dieOnError, $msg);
1625 1625
 		}
1626
-		$this->checkError($msg.' Get One Failed:' . $sql, $dieOnError);
1626
+		$this->checkError($msg.' Get One Failed:'.$sql, $dieOnError);
1627 1627
 		if (!$queryresult) return false;
1628 1628
 		$row = $this->fetchByAssoc($queryresult);
1629
-		if(!empty($row)) {
1629
+		if (!empty($row)) {
1630 1630
 			return array_shift($row);
1631 1631
 		}
1632 1632
 		return false;
@@ -1646,12 +1646,12 @@  discard block
 block discarded – undo
1646 1646
 		$this->log->info("Fetch One: |$sql|");
1647 1647
 		$this->checkConnection();
1648 1648
 		$queryresult = $this->query($sql, $dieOnError, $msg);
1649
-		$this->checkError($msg.' Fetch One Failed:' . $sql, $dieOnError);
1649
+		$this->checkError($msg.' Fetch One Failed:'.$sql, $dieOnError);
1650 1650
 
1651 1651
 		if (!$queryresult) return false;
1652 1652
 
1653 1653
 		$row = $this->fetchByAssoc($queryresult);
1654
-		if ( !$row ) return false;
1654
+		if (!$row) return false;
1655 1655
 
1656 1656
 		$this->freeResult($queryresult);
1657 1657
 		return $row;
@@ -1692,7 +1692,7 @@  discard block
 block discarded – undo
1692 1692
      */
1693 1693
 	public function getTableDescription($tablename, $reload = false)
1694 1694
 	{
1695
-		if($reload || empty(self::$table_descriptions[$tablename])) {
1695
+		if ($reload || empty(self::$table_descriptions[$tablename])) {
1696 1696
 			self::$table_descriptions[$tablename] = $this->get_columns($tablename);
1697 1697
 		}
1698 1698
 		return self::$table_descriptions[$tablename];
@@ -1708,12 +1708,12 @@  discard block
 block discarded – undo
1708 1708
 	protected function describeField($name, $tablename)
1709 1709
 	{
1710 1710
 		$table = $this->getTableDescription($tablename);
1711
-		if(!empty($table) && isset($table[$name]))
1711
+		if (!empty($table) && isset($table[$name]))
1712 1712
 			return 	$table[$name];
1713 1713
 
1714 1714
 		$table = $this->getTableDescription($tablename, true);
1715 1715
 
1716
-		if(isset($table[$name]))
1716
+		if (isset($table[$name]))
1717 1717
 		return $table[$name];
1718 1718
 
1719 1719
 		return array();
@@ -1728,13 +1728,13 @@  discard block
 block discarded – undo
1728 1728
 	 */
1729 1729
 	protected function describeIndex($name, $tablename)
1730 1730
 	{
1731
-		if(isset(self::$index_descriptions[$tablename]) && isset(self::$index_descriptions[$tablename]) && isset(self::$index_descriptions[$tablename][$name])){
1731
+		if (isset(self::$index_descriptions[$tablename]) && isset(self::$index_descriptions[$tablename]) && isset(self::$index_descriptions[$tablename][$name])) {
1732 1732
 			return 	self::$index_descriptions[$tablename][$name];
1733 1733
 		}
1734 1734
 
1735 1735
 		self::$index_descriptions[$tablename] = $this->get_indices($tablename);
1736 1736
 
1737
-		if(isset(self::$index_descriptions[$tablename][$name])){
1737
+		if (isset(self::$index_descriptions[$tablename][$name])) {
1738 1738
 			return 	self::$index_descriptions[$tablename][$name];
1739 1739
 		}
1740 1740
 
@@ -1751,9 +1751,9 @@  discard block
 block discarded – undo
1751 1751
      */
1752 1752
 	public function truncate($string, $len)
1753 1753
 	{
1754
-		if ( is_numeric($len) && $len > 0)
1754
+		if (is_numeric($len) && $len > 0)
1755 1755
 		{
1756
-			$string = mb_substr($string,0,(int) $len, "UTF-8");
1756
+			$string = mb_substr($string, 0, (int)$len, "UTF-8");
1757 1757
 		}
1758 1758
 		return $string;
1759 1759
 	}
@@ -1768,11 +1768,11 @@  discard block
 block discarded – undo
1768 1768
      */
1769 1769
 	public function concat($table, array $fields, $space = ' ')
1770 1770
 	{
1771
-		if(empty($fields)) return '';
1771
+		if (empty($fields)) return '';
1772 1772
 		$elems = array();
1773 1773
 		$space = $this->quoted($space);
1774
-		foreach ( $fields as $field ) {
1775
-			if(!empty($elems)) $elems[] = $space;
1774
+		foreach ($fields as $field) {
1775
+			if (!empty($elems)) $elems[] = $space;
1776 1776
 			$elems[] = $this->convert("$table.$field", 'IFNULL', array("''"));
1777 1777
 		}
1778 1778
 		$first = array_shift($elems);
@@ -1829,8 +1829,8 @@  discard block
 block discarded – undo
1829 1829
 	 */
1830 1830
 	public function executePreparedQuery($stmt, $data = array())
1831 1831
 	{
1832
-		if(!empty($this->preparedTokens[$stmt])){
1833
-			if(!is_array($data)){
1832
+		if (!empty($this->preparedTokens[$stmt])) {
1833
+			if (!is_array($data)) {
1834 1834
 				$data = array($data);
1835 1835
 			}
1836 1836
 
@@ -1838,7 +1838,7 @@  discard block
 block discarded – undo
1838 1838
 
1839 1839
 			//ensure that the number of data elements matches the number of replacement tokens
1840 1840
 			//we found in prepare().
1841
-			if(count($data) != $pTokens['tokenCount']){
1841
+			if (count($data) != $pTokens['tokenCount']) {
1842 1842
 				//error the data count did not match the token count
1843 1843
 				return false;
1844 1844
 			}
@@ -1864,7 +1864,7 @@  discard block
 block discarded – undo
1864 1864
 				}//switch
1865 1865
 			}//foreach
1866 1866
 			return $this->query($query);
1867
-		}else{
1867
+		} else {
1868 1868
 			return false;
1869 1869
 		}
1870 1870
 	}
@@ -1908,7 +1908,7 @@  discard block
 block discarded – undo
1908 1908
 	{
1909 1909
 		// get column names and values
1910 1910
 		$sql = $this->insertParams($bean->getTableName(), $bean->getFieldDefinitions(), get_object_vars($bean),
1911
-		        isset($bean->field_name_map)?$bean->field_name_map:null, false);
1911
+		        isset($bean->field_name_map) ? $bean->field_name_map : null, false);
1912 1912
 		return $sql;
1913 1913
 	}
1914 1914
 
@@ -1936,48 +1936,48 @@  discard block
 block discarded – undo
1936 1936
     		if (!empty($bean->field_name_map[$field]['auto_increment'])) continue;
1937 1937
 
1938 1938
     		//custom fields handle their save separately
1939
-    		if(isset($bean->field_name_map) && !empty($bean->field_name_map[$field]['custom_type']))  continue;
1939
+    		if (isset($bean->field_name_map) && !empty($bean->field_name_map[$field]['custom_type']))  continue;
1940 1940
 
1941 1941
     		// no need to clear deleted since we only update not deleted records anyway
1942
-    		if($fieldDef['name'] == 'deleted' && empty($bean->deleted)) continue;
1942
+    		if ($fieldDef['name'] == 'deleted' && empty($bean->deleted)) continue;
1943 1943
 
1944
-    		if(isset($bean->$field)) {
1944
+    		if (isset($bean->$field)) {
1945 1945
     			$val = from_html($bean->$field);
1946 1946
     		} else {
1947 1947
     			continue;
1948 1948
     		}
1949 1949
 
1950
-    		if(!empty($fieldDef['type']) && $fieldDef['type'] == 'bool'){
1950
+    		if (!empty($fieldDef['type']) && $fieldDef['type'] == 'bool') {
1951 1951
     			$val = $bean->getFieldValue($field);
1952 1952
     		}
1953 1953
 
1954
-    		if(strlen($val) == 0) {
1955
-    			if(isset($fieldDef['default']) && strlen($fieldDef['default']) > 0) {
1954
+    		if (strlen($val) == 0) {
1955
+    			if (isset($fieldDef['default']) && strlen($fieldDef['default']) > 0) {
1956 1956
     				$val = $fieldDef['default'];
1957 1957
     			} else {
1958 1958
     				$val = null;
1959 1959
     			}
1960 1960
     		}
1961 1961
 
1962
-    		if(!empty($val) && !empty($fieldDef['len']) && strlen($val) > $fieldDef['len']) {
1962
+    		if (!empty($val) && !empty($fieldDef['len']) && strlen($val) > $fieldDef['len']) {
1963 1963
 			    $val = $this->truncate($val, $fieldDef['len']);
1964 1964
 			}
1965 1965
 		$columnName = $this->quoteIdentifier($fieldDef['name']);
1966
-    		if(!is_null($val) || !empty($fieldDef['required'])) {
1966
+    		if (!is_null($val) || !empty($fieldDef['required'])) {
1967 1967
     			$columns[] = "{$columnName}=".$this->massageValue($val, $fieldDef);
1968
-    		} elseif($this->isNullable($fieldDef)) {
1968
+    		} elseif ($this->isNullable($fieldDef)) {
1969 1969
     			$columns[] = "{$columnName}=NULL";
1970 1970
     		} else {
1971 1971
     		    $columns[] = "{$columnName}=".$this->emptyValue($fieldDef['type']);
1972 1972
     		}
1973 1973
 		}
1974 1974
 
1975
-		if ( sizeof($columns) == 0 )
1975
+		if (sizeof($columns) == 0)
1976 1976
 			return ""; // no columns set
1977 1977
 
1978 1978
 		// build where clause
1979 1979
 		$where = $this->getWhereClause($bean, $this->updateWhereArray($bean, $where));
1980
-		if(isset($fields['deleted'])) {
1980
+		if (isset($fields['deleted'])) {
1981 1981
 		    $where .= " AND deleted=0";
1982 1982
 		}
1983 1983
 
@@ -2001,7 +2001,7 @@  discard block
 block discarded – undo
2001 2001
 			$primaryColumn = $fieldDef['name'];
2002 2002
 
2003 2003
 			$val = $bean->getFieldValue($fieldDef['name']);
2004
-			if ($val != FALSE){
2004
+			if ($val != FALSE) {
2005 2005
 				$where[$primaryColumn] = $val;
2006 2006
 			}
2007 2007
 		}
@@ -2027,7 +2027,7 @@  discard block
 block discarded – undo
2027 2027
 			if (is_array($val)) {
2028 2028
 				$op = "IN";
2029 2029
 				$temp = array();
2030
-				foreach ($val as $tval){
2030
+				foreach ($val as $tval) {
2031 2031
 					$temp[] = $this->quoted($tval);
2032 2032
 				}
2033 2033
 				$val = implode(",", $temp);
@@ -2053,9 +2053,9 @@  discard block
 block discarded – undo
2053 2053
 	 * @param  array  $whereArray Optional, where conditions in an array
2054 2054
 	 * @return string
2055 2055
 	 */
2056
-	protected function getWhereClause(SugarBean $bean, array $whereArray=array())
2056
+	protected function getWhereClause(SugarBean $bean, array $whereArray = array())
2057 2057
 	{
2058
-	    return " WHERE " . $this->getColumnWhereClause($bean->getTableName(), $whereArray);
2058
+	    return " WHERE ".$this->getColumnWhereClause($bean->getTableName(), $whereArray);
2059 2059
 	}
2060 2060
 
2061 2061
 	/**
@@ -2069,13 +2069,13 @@  discard block
 block discarded – undo
2069 2069
 	{
2070 2070
 		$type = $this->getFieldType($fieldDef);
2071 2071
 
2072
-		if(isset($this->type_class[$type])) {
2072
+		if (isset($this->type_class[$type])) {
2073 2073
 			// handle some known types
2074
-			switch($this->type_class[$type]) {
2074
+			switch ($this->type_class[$type]) {
2075 2075
 				case 'bool':
2076 2076
 				case 'int':
2077
-					if (!empty($fieldDef['required']) && $val == ''){
2078
-						if (isset($fieldDef['default'])){
2077
+					if (!empty($fieldDef['required']) && $val == '') {
2078
+						if (isset($fieldDef['default'])) {
2079 2079
 							return $fieldDef['default'];
2080 2080
 						}
2081 2081
 						return 0;
@@ -2083,16 +2083,16 @@  discard block
 block discarded – undo
2083 2083
 					return intval($val);
2084 2084
                 case 'bigint' :
2085 2085
                     $val = (float)$val;
2086
-					if (!empty($fieldDef['required']) && $val == false){
2087
-						if (isset($fieldDef['default'])){
2086
+					if (!empty($fieldDef['required']) && $val == false) {
2087
+						if (isset($fieldDef['default'])) {
2088 2088
 							return $fieldDef['default'];
2089 2089
 						}
2090 2090
 						return 0;
2091 2091
 					}
2092 2092
                     return $val;
2093 2093
 				case 'float':
2094
-					if (!empty($fieldDef['required'])  && $val == ''){
2095
-						if (isset($fieldDef['default'])){
2094
+					if (!empty($fieldDef['required']) && $val == '') {
2095
+						if (isset($fieldDef['default'])) {
2096 2096
 							return $fieldDef['default'];
2097 2097
 						}
2098 2098
 						return 0;
@@ -2101,7 +2101,7 @@  discard block
 block discarded – undo
2101 2101
 				case 'time':
2102 2102
 				case 'date':
2103 2103
 					// empty date can't be '', so convert it to either NULL or empty date value
2104
-					if($val == '') {
2104
+					if ($val == '') {
2105 2105
 						if (!empty($fieldDef['required'])) {
2106 2106
 							if (isset($fieldDef['default'])) {
2107 2107
 								return $fieldDef['default'];
@@ -2113,14 +2113,14 @@  discard block
 block discarded – undo
2113 2113
 					break;
2114 2114
 			}
2115 2115
 		} else {
2116
-		    if(!empty($val) && !empty($fieldDef['len']) && strlen($val) > $fieldDef['len']) {
2116
+		    if (!empty($val) && !empty($fieldDef['len']) && strlen($val) > $fieldDef['len']) {
2117 2117
 			    $val = $this->truncate($val, $fieldDef['len']);
2118 2118
 			}
2119 2119
 		}
2120 2120
 
2121
-		if ( is_null($val) ) {
2122
-			if(!empty($fieldDef['required'])) {
2123
-				if (isset($fieldDef['default'])  && $fieldDef['default'] != ''){
2121
+		if (is_null($val)) {
2122
+			if (!empty($fieldDef['required'])) {
2123
+				if (isset($fieldDef['default']) && $fieldDef['default'] != '') {
2124 2124
 					return $fieldDef['default'];
2125 2125
 				}
2126 2126
 				return $this->emptyValue($type);
@@ -2128,7 +2128,7 @@  discard block
 block discarded – undo
2128 2128
 				return "NULL";
2129 2129
 			}
2130 2130
 		}
2131
-        if($type == "datetimecombo") {
2131
+        if ($type == "datetimecombo") {
2132 2132
             $type = "datetime";
2133 2133
         }
2134 2134
 		return $this->convert($this->quoted($val), $type);
@@ -2143,23 +2143,23 @@  discard block
 block discarded – undo
2143 2143
 	 */
2144 2144
 	public function massageFieldDef(&$fieldDef, $tablename)
2145 2145
 	{
2146
-		if ( !isset($fieldDef['dbType']) ) {
2147
-			if ( isset($fieldDef['dbtype']) )
2146
+		if (!isset($fieldDef['dbType'])) {
2147
+			if (isset($fieldDef['dbtype']))
2148 2148
 				$fieldDef['dbType'] = $fieldDef['dbtype'];
2149 2149
 			else
2150 2150
 				$fieldDef['dbType'] = $fieldDef['type'];
2151 2151
 		}
2152
-		$type = $this->getColumnType($fieldDef['dbType'],$fieldDef['name'],$tablename);
2152
+		$type = $this->getColumnType($fieldDef['dbType'], $fieldDef['name'], $tablename);
2153 2153
 		$matches = array();
2154 2154
         // len can be a number or a string like 'max', for example, nvarchar(max)
2155 2155
         preg_match_all('/(\w+)(?:\(([0-9]+,?[0-9]*|\w+)\)|)/i', $type, $matches);
2156
-		if ( isset($matches[1][0]) )
2156
+		if (isset($matches[1][0]))
2157 2157
 			$fieldDef['type'] = $matches[1][0];
2158
-		if ( isset($matches[2][0]) && empty($fieldDef['len']) )
2158
+		if (isset($matches[2][0]) && empty($fieldDef['len']))
2159 2159
 			$fieldDef['len'] = $matches[2][0];
2160
-		if ( !empty($fieldDef['precision']) && is_numeric($fieldDef['precision']) && !strstr($fieldDef['len'],',') )
2160
+		if (!empty($fieldDef['precision']) && is_numeric($fieldDef['precision']) && !strstr($fieldDef['len'], ','))
2161 2161
 			$fieldDef['len'] .= ",{$fieldDef['precision']}";
2162
-		if (!empty($fieldDef['required']) || ($fieldDef['name'] == 'id' && !isset($fieldDef['required'])) ) {
2162
+		if (!empty($fieldDef['required']) || ($fieldDef['name'] == 'id' && !isset($fieldDef['required']))) {
2163 2163
 			$fieldDef['required'] = 'true';
2164 2164
 		}
2165 2165
 	}
@@ -2180,7 +2180,7 @@  discard block
 block discarded – undo
2180 2180
 		$level = 0;
2181 2181
 		$selectField = "";
2182 2182
 		$strLen = strlen($selectStatement);
2183
-		for($i = 0; $i < $strLen; $i++)
2183
+		for ($i = 0; $i < $strLen; $i++)
2184 2184
 		{
2185 2185
 			$char = $selectStatement[$i];
2186 2186
 
@@ -2190,16 +2190,16 @@  discard block
 block discarded – undo
2190 2190
 				$fields[$field] = $selectField;
2191 2191
 				$selectField = "";
2192 2192
 			}
2193
-			else if ($char == "("){
2193
+			else if ($char == "(") {
2194 2194
 				$level++;
2195 2195
 				$selectField .= $char;
2196 2196
 			}
2197
-			else if($char == ")"){
2197
+			else if ($char == ")") {
2198 2198
 				$level--;
2199 2199
 				$selectField .= $char;
2200 2200
 
2201 2201
 
2202
-			}else{
2202
+			} else {
2203 2203
 				$selectField .= $char;
2204 2204
 			}
2205 2205
 
@@ -2215,7 +2215,7 @@  discard block
 block discarded – undo
2215 2215
      */
2216 2216
 	protected function getFieldNameFromSelect($string)
2217 2217
 	{
2218
-		if(strncasecmp($string, "DISTINCT ", 9) == 0) {
2218
+		if (strncasecmp($string, "DISTINCT ", 9) == 0) {
2219 2219
 			$string = substr($string, 9);
2220 2220
 		}
2221 2221
 		if (stripos($string, " as ") !== false)
@@ -2293,14 +2293,14 @@  discard block
 block discarded – undo
2293 2293
 				foreach ($cols[$beanID] as $def) $select[] = $table.".".$def['name'];
2294 2294
 
2295 2295
 			// build part of where clause
2296
-			if (is_array($whereClause[$beanID])){
2296
+			if (is_array($whereClause[$beanID])) {
2297 2297
 				$where[] = $this->getColumnWhereClause($table, $whereClause[$beanID]);
2298 2298
 			}
2299 2299
 			// initialize so that it can be used properly in form clause generation
2300 2300
 			$table_used_in_from[$table] = false;
2301 2301
 
2302 2302
 			$indices = $bean->getIndices();
2303
-			foreach ($indices as $index){
2303
+			foreach ($indices as $index) {
2304 2304
 				if ($index['type'] == 'foreign') {
2305 2305
 					$relationship[$table][] = array('foreignTable'=> $index['foreignTable']
2306 2306
 												,'foreignColumn'=>$index['foreignField']
@@ -2321,12 +2321,12 @@  discard block
 block discarded – undo
2321 2321
 		// table2 is assumed to joining through primary key called id
2322 2322
 		$separator = "";
2323 2323
 		$from = ''; $table_used_in_from = array();
2324
-		foreach ($relations as $table1 => $rightsidearray){
2324
+		foreach ($relations as $table1 => $rightsidearray) {
2325 2325
 			if ($table_used_in_from[$table1]) continue; // table has been joined
2326 2326
 
2327 2327
 			$from .= $separator." ".$table1;
2328 2328
 			$table_used_in_from[$table1] = true;
2329
-			foreach ($rightsidearray as $tablearray){
2329
+			foreach ($rightsidearray as $tablearray) {
2330 2330
 				$table2 = $tablearray['foreignTable']; // get foreign table
2331 2331
 				$tableAlias = $aliases[$table2]; // get a list of aliases for this table
2332 2332
 				foreach ($tableAlias as $table2) {
@@ -2386,9 +2386,9 @@  discard block
 block discarded – undo
2386 2386
 		// we do not have change a lot of existing code
2387 2387
 		// and add dbtype where type is being used for some special
2388 2388
 		// purposes like referring to foreign table etc.
2389
-		if(!empty($fieldDef['dbType']))
2389
+		if (!empty($fieldDef['dbType']))
2390 2390
 			return  $fieldDef['dbType'];
2391
-		if(!empty($fieldDef['dbtype']))
2391
+		if (!empty($fieldDef['dbtype']))
2392 2392
 			return  $fieldDef['dbtype'];
2393 2393
 		if (!empty($fieldDef['type']))
2394 2394
 			return  $fieldDef['type'];
@@ -2408,17 +2408,17 @@  discard block
 block discarded – undo
2408 2408
      */
2409 2409
     public function getTypeParts($type)
2410 2410
     {
2411
-        if(preg_match("#(?P<type>\w+)\s*(?P<arg>\((?P<len>\w+)\s*(,\s*(?P<scale>\d+))*\))*#", $type, $matches))
2411
+        if (preg_match("#(?P<type>\w+)\s*(?P<arg>\((?P<len>\w+)\s*(,\s*(?P<scale>\d+))*\))*#", $type, $matches))
2412 2412
         {
2413
-            $return = array();  // Not returning matches array as such as we don't want to expose the regex make up on the interface
2413
+            $return = array(); // Not returning matches array as such as we don't want to expose the regex make up on the interface
2414 2414
             $return['baseType'] = $matches['type'];
2415
-            if( isset($matches['arg'])) {
2415
+            if (isset($matches['arg'])) {
2416 2416
                 $return['arg'] = $matches['arg'];
2417 2417
             }
2418
-            if( isset($matches['len'])) {
2418
+            if (isset($matches['len'])) {
2419 2419
                 $return['len'] = $matches['len'];
2420 2420
             }
2421
-            if( isset($matches['scale'])) {
2421
+            if (isset($matches['scale'])) {
2422 2422
                 $return['scale'] = $matches['scale'];
2423 2423
             }
2424 2424
             return $return;
@@ -2442,28 +2442,28 @@  discard block
 block discarded – undo
2442 2442
 		$type = $this->getFieldType($fieldDef);
2443 2443
         $colType = $this->getColumnType($type);
2444 2444
 
2445
-        if($parts = $this->getTypeParts($colType))
2445
+        if ($parts = $this->getTypeParts($colType))
2446 2446
         {
2447 2447
             $colBaseType = $parts['baseType'];
2448
-            $defLen =  isset($parts['len']) ? $parts['len'] : '255'; // Use the mappings length (precision) as default if it exists
2448
+            $defLen = isset($parts['len']) ? $parts['len'] : '255'; // Use the mappings length (precision) as default if it exists
2449 2449
         }
2450 2450
 
2451
-        if(!empty($fieldDef['len'])) {
2452
-            if (in_array($colBaseType, array( 'nvarchar', 'nchar', 'varchar', 'varchar2', 'char',
2451
+        if (!empty($fieldDef['len'])) {
2452
+            if (in_array($colBaseType, array('nvarchar', 'nchar', 'varchar', 'varchar2', 'char',
2453 2453
                                           'clob', 'blob', 'text'))) {
2454 2454
           	    $colType = "$colBaseType(${fieldDef['len']})";
2455
-            } elseif(($colBaseType == 'decimal' || $colBaseType == 'float')){
2456
-                  if(!empty($fieldDef['precision']) && is_numeric($fieldDef['precision']))
2457
-                      if(strpos($fieldDef['len'],',') === false){
2458
-                          $colType = $colBaseType . "(".$fieldDef['len'].",".$fieldDef['precision'].")";
2459
-                      }else{
2460
-                          $colType = $colBaseType . "(".$fieldDef['len'].")";
2455
+            } elseif (($colBaseType == 'decimal' || $colBaseType == 'float')) {
2456
+                  if (!empty($fieldDef['precision']) && is_numeric($fieldDef['precision']))
2457
+                      if (strpos($fieldDef['len'], ',') === false) {
2458
+                          $colType = $colBaseType."(".$fieldDef['len'].",".$fieldDef['precision'].")";
2459
+                      } else {
2460
+                          $colType = $colBaseType."(".$fieldDef['len'].")";
2461 2461
                       }
2462 2462
                   else
2463
-                          $colType = $colBaseType . "(".$fieldDef['len'].")";
2463
+                          $colType = $colBaseType."(".$fieldDef['len'].")";
2464 2464
               }
2465 2465
         } else {
2466
-            if (in_array($colBaseType, array( 'nvarchar', 'nchar', 'varchar', 'varchar2', 'char'))) {
2466
+            if (in_array($colBaseType, array('nvarchar', 'nchar', 'varchar', 'varchar2', 'char'))) {
2467 2467
                 $colType = "$colBaseType($defLen)";
2468 2468
             }
2469 2469
         }
@@ -2485,29 +2485,29 @@  discard block
 block discarded – undo
2485 2485
         }
2486 2486
 
2487 2487
 		$auto_increment = '';
2488
-		if(!empty($fieldDef['auto_increment']) && $fieldDef['auto_increment'])
2489
-			$auto_increment = $this->setAutoIncrement($table , $fieldDef['name']);
2488
+		if (!empty($fieldDef['auto_increment']) && $fieldDef['auto_increment'])
2489
+			$auto_increment = $this->setAutoIncrement($table, $fieldDef['name']);
2490 2490
 
2491
-		$required = 'NULL';  // MySQL defaults to NULL, SQL Server defaults to NOT NULL -- must specify
2491
+		$required = 'NULL'; // MySQL defaults to NULL, SQL Server defaults to NOT NULL -- must specify
2492 2492
 		//Starting in 6.0, only ID and auto_increment fields will be NOT NULL in the DB.
2493 2493
 		if ((empty($fieldDef['isnull']) || strtolower($fieldDef['isnull']) == 'false') &&
2494 2494
 			(!empty($auto_increment) || $name == 'id' || ($fieldDef['type'] == 'id' && !empty($fieldDef['required'])))) {
2495
-			$required =  "NOT NULL";
2495
+			$required = "NOT NULL";
2496 2496
 		}
2497 2497
 		// If the field is marked both required & isnull=>false - alwqys make it not null
2498 2498
 		// Use this to ensure primary key fields never defined as null
2499
-		if(isset($fieldDef['isnull']) && (strtolower($fieldDef['isnull']) == 'false' || $fieldDef['isnull'] === false)
2499
+		if (isset($fieldDef['isnull']) && (strtolower($fieldDef['isnull']) == 'false' || $fieldDef['isnull'] === false)
2500 2500
 			&& !empty($fieldDef['required'])) {
2501
-			$required =  "NOT NULL";
2501
+			$required = "NOT NULL";
2502 2502
 		}
2503 2503
 		if ($ignoreRequired)
2504 2504
 			$required = "";
2505 2505
 
2506
-		if ( $return_as_array ) {
2506
+		if ($return_as_array) {
2507 2507
 			return array(
2508 2508
 				'name' => $name,
2509 2509
 				'colType' => $colType,
2510
-                'colBaseType' => $colBaseType,  // Adding base type for easier processing in derived classes
2510
+                'colBaseType' => $colBaseType, // Adding base type for easier processing in derived classes
2511 2511
 				'default' => $default,
2512 2512
 				'required' => $required,
2513 2513
 				'auto_increment' => $auto_increment,
@@ -2532,14 +2532,14 @@  discard block
 block discarded – undo
2532 2532
 
2533 2533
 		if ($this->isFieldArray($fieldDefs)) {
2534 2534
 			foreach ($fieldDefs as $fieldDef) {
2535
-				if(!isset($fieldDef['source']) || $fieldDef['source'] == 'db') {
2536
-					$columns[] = $this->oneColumnSQLRep($fieldDef,false, $tablename);
2535
+				if (!isset($fieldDef['source']) || $fieldDef['source'] == 'db') {
2536
+					$columns[] = $this->oneColumnSQLRep($fieldDef, false, $tablename);
2537 2537
 				}
2538 2538
 			}
2539 2539
 			$columns = implode(",", $columns);
2540 2540
 		}
2541 2541
 		else {
2542
-			$columns = $this->oneColumnSQLRep($fieldDefs,$ignoreRequired, $tablename);
2542
+			$columns = $this->oneColumnSQLRep($fieldDefs, $ignoreRequired, $tablename);
2543 2543
 		}
2544 2544
 
2545 2545
 		return $columns;
@@ -2701,40 +2701,40 @@  discard block
 block discarded – undo
2701 2701
      */
2702 2702
 	public function getValidDBName($name, $ensureUnique = false, $type = 'column', $force = false)
2703 2703
 	{
2704
-		if(is_array($name)) {
2704
+		if (is_array($name)) {
2705 2705
 			$result = array();
2706
-			foreach($name as $field) {
2706
+			foreach ($name as $field) {
2707 2707
 				$result[] = $this->getValidDBName($field, $ensureUnique, $type);
2708 2708
 			}
2709 2709
 			return $result;
2710 2710
 		} else {
2711
-		    if(strchr($name, ".")) {
2711
+		    if (strchr($name, ".")) {
2712 2712
 		        // this is a compound name with dots, handle separately
2713 2713
 		        $parts = explode(".", $name);
2714
-		        if(count($parts) > 2) {
2714
+		        if (count($parts) > 2) {
2715 2715
 		            // some weird name, cut to table.name
2716
-		            array_splice($parts, 0, count($parts)-2);
2716
+		            array_splice($parts, 0, count($parts) - 2);
2717 2717
 		        }
2718 2718
 		        $parts = $this->getValidDBName($parts, $ensureUnique, $type, $force);
2719 2719
                 return join(".", $parts);
2720 2720
 		    }
2721 2721
 			// first strip any invalid characters - all but word chars (which is alphanumeric and _)
2722
-			$name = preg_replace( '/[^\w]+/i', '', $name ) ;
2723
-			$len = strlen( $name ) ;
2722
+			$name = preg_replace('/[^\w]+/i', '', $name);
2723
+			$len = strlen($name);
2724 2724
 			$maxLen = empty($this->maxNameLengths[$type]) ? $this->maxNameLengths[$type]['column'] : $this->maxNameLengths[$type];
2725 2725
 			if ($len <= $maxLen && !$force) {
2726 2726
 				return strtolower($name);
2727 2727
 			}
2728 2728
 			if ($ensureUnique) {
2729 2729
 				$md5str = md5($name);
2730
-				$tail = substr ( $name, -11) ;
2731
-				$temp = substr($md5str , strlen($md5str)-4 );
2732
-				$result = substr( $name, 0, 10) . $temp . $tail ;
2730
+				$tail = substr($name, -11);
2731
+				$temp = substr($md5str, strlen($md5str) - 4);
2732
+				$result = substr($name, 0, 10).$temp.$tail;
2733 2733
 			} else {
2734
-				$result = substr( $name, 0, 11) . substr( $name, 11 - $maxLen);
2734
+				$result = substr($name, 0, 11).substr($name, 11 - $maxLen);
2735 2735
 			}
2736 2736
 
2737
-			return strtolower( $result ) ;
2737
+			return strtolower($result);
2738 2738
 		}
2739 2739
 	}
2740 2740
 
@@ -2746,7 +2746,7 @@  discard block
 block discarded – undo
2746 2746
 	 */
2747 2747
 	public function getColumnType($type)
2748 2748
 	{
2749
-		return isset($this->type_map[$type])?$this->type_map[$type]:$type;
2749
+		return isset($this->type_map[$type]) ? $this->type_map[$type] : $type;
2750 2750
 	}
2751 2751
 
2752 2752
 	/**
@@ -2760,10 +2760,10 @@  discard block
 block discarded – undo
2760 2760
 	 */
2761 2761
 	public function isFieldArray($defArray)
2762 2762
 	{
2763
-		if ( !is_array($defArray) )
2763
+		if (!is_array($defArray))
2764 2764
 			return false;
2765 2765
 
2766
-		if ( isset($defArray['type']) ){
2766
+		if (isset($defArray['type'])) {
2767 2767
 			// type key exists. May be an array of defs or a simple definition
2768 2768
 			return is_array($defArray['type']); // type is not an array => definition else array
2769 2769
 		}
@@ -2798,19 +2798,19 @@  discard block
 block discarded – undo
2798 2798
 		require('metadata/audit_templateMetaData.php');
2799 2799
 		$fieldDefs = $dictionary['audit']['fields'];
2800 2800
 
2801
-		$values=array();
2801
+		$values = array();
2802 2802
 		$values['id'] = $this->massageValue(create_guid(), $fieldDefs['id']);
2803
-		$values['parent_id']= $this->massageValue($bean->id, $fieldDefs['parent_id']);
2804
-		$values['field_name']= $this->massageValue($changes['field_name'], $fieldDefs['field_name']);
2803
+		$values['parent_id'] = $this->massageValue($bean->id, $fieldDefs['parent_id']);
2804
+		$values['field_name'] = $this->massageValue($changes['field_name'], $fieldDefs['field_name']);
2805 2805
 		$values['data_type'] = $this->massageValue($changes['data_type'], $fieldDefs['data_type']);
2806
-		if ($changes['data_type']=='text') {
2806
+		if ($changes['data_type'] == 'text') {
2807 2807
 			$values['before_value_text'] = $this->massageValue($changes['before'], $fieldDefs['before_value_text']);
2808 2808
 			$values['after_value_text'] = $this->massageValue($changes['after'], $fieldDefs['after_value_text']);
2809 2809
 		} else {
2810 2810
 			$values['before_value_string'] = $this->massageValue($changes['before'], $fieldDefs['before_value_string']);
2811 2811
 			$values['after_value_string'] = $this->massageValue($changes['after'], $fieldDefs['after_value_string']);
2812 2812
 		}
2813
-		$values['date_created'] = $this->massageValue(TimeDate::getInstance()->nowDb(), $fieldDefs['date_created'] );
2813
+		$values['date_created'] = $this->massageValue(TimeDate::getInstance()->nowDb(), $fieldDefs['date_created']);
2814 2814
 		$values['created_by'] = $this->massageValue($current_user->id, $fieldDefs['created_by']);
2815 2815
 
2816 2816
 		$sql .= "(".implode(",", array_keys($values)).") ";
@@ -2840,9 +2840,9 @@  discard block
 block discarded – undo
2840 2840
      * @param array|null $field_filter Array of filter names to be inspected (NULL means all fields)
2841 2841
      * @return array
2842 2842
      */
2843
-    public function getDataChanges(SugarBean &$bean, array $field_filter = null)
2843
+    public function getDataChanges(SugarBean & $bean, array $field_filter = null)
2844 2844
 	{
2845
-        $changed_values=array();
2845
+        $changed_values = array();
2846 2846
 
2847 2847
         $fetched_row = array();
2848 2848
         if (is_array($bean->fetched_row))
@@ -2862,40 +2862,40 @@  discard block
 block discarded – undo
2862 2862
             $field_defs = array_intersect_key($field_defs, $fetched_row);
2863 2863
 
2864 2864
             // remove fields which do not exist as bean property
2865
-            $field_defs = array_intersect_key($field_defs, (array) $bean);
2865
+            $field_defs = array_intersect_key($field_defs, (array)$bean);
2866 2866
 
2867 2867
             foreach ($field_defs as $field => $properties) {
2868 2868
                 $before_value = $fetched_row[$field];
2869
-                $after_value=$bean->$field;
2869
+                $after_value = $bean->$field;
2870 2870
                 if (isset($properties['type'])) {
2871
-                    $field_type=$properties['type'];
2871
+                    $field_type = $properties['type'];
2872 2872
                 } else {
2873 2873
                     if (isset($properties['dbType'])) {
2874
-                        $field_type=$properties['dbType'];
2874
+                        $field_type = $properties['dbType'];
2875 2875
                     }
2876
-                    else if(isset($properties['data_type'])) {
2877
-                        $field_type=$properties['data_type'];
2876
+                    else if (isset($properties['data_type'])) {
2877
+                        $field_type = $properties['data_type'];
2878 2878
                     }
2879 2879
                     else {
2880
-                        $field_type=$properties['dbtype'];
2880
+                        $field_type = $properties['dbtype'];
2881 2881
                     }
2882 2882
                 }
2883 2883
 
2884 2884
                 //Because of bug #25078(sqlserver haven't 'date' type, trim extra "00:00:00" when insert into *_cstm table).
2885 2885
                 // so when we read the audit datetime field from sqlserver, we have to replace the extra "00:00:00" again.
2886
-                if(!empty($field_type) && $field_type == 'date'){
2887
-                    $before_value = $this->fromConvert($before_value , $field_type);
2886
+                if (!empty($field_type) && $field_type == 'date') {
2887
+                    $before_value = $this->fromConvert($before_value, $field_type);
2888 2888
                 }
2889 2889
                 //if the type and values match, do nothing.
2890
-                if (!($this->_emptyValue($before_value,$field_type) && $this->_emptyValue($after_value,$field_type))) {
2890
+                if (!($this->_emptyValue($before_value, $field_type) && $this->_emptyValue($after_value, $field_type))) {
2891 2891
                     $change = false;
2892 2892
                     if (trim($before_value) !== trim($after_value)) {
2893 2893
                         // Bug #42475: Don't directly compare numeric values, instead do the subtract and see if the comparison comes out to be "close enough", it is necessary for floating point numbers.
2894 2894
                         // Manual merge of fix 95727f2eed44852f1b6bce9a9eccbe065fe6249f from DBHelper
2895 2895
                         // This fix also fixes Bug #44624 in a more generic way and therefore eliminates the need for fix 0a55125b281c4bee87eb347709af462715f33d2d in DBHelper
2896 2896
                         if ($this->isNumericType($field_type)) {
2897
-                            $numerator = abs(2*((trim($before_value)+0)-(trim($after_value)+0)));
2898
-                            $denominator = abs(((trim($before_value)+0)+(trim($after_value)+0)));
2897
+                            $numerator = abs(2 * ((trim($before_value) + 0) - (trim($after_value) + 0)));
2898
+                            $denominator = abs(((trim($before_value) + 0) + (trim($after_value) + 0)));
2899 2899
                             // detect whether to use absolute or relative error. use absolute if denominator is zero to avoid division by zero
2900 2900
                             $error = ($denominator == 0) ? $numerator : $numerator / $denominator;
2901 2901
                             if ($error >= 0.0000000001) {    // Smaller than 10E-10
@@ -2911,7 +2911,7 @@  discard block
 block discarded – undo
2911 2911
                             $change = true;
2912 2912
                         }
2913 2913
                         if ($change) {
2914
-                            $changed_values[$field]=array('field_name'=>$field,
2914
+                            $changed_values[$field] = array('field_name'=>$field,
2915 2915
                                 'data_type'=>$field_type,
2916 2916
                                 'before'=>$before_value,
2917 2917
                                 'after'=>$after_value);
@@ -2982,8 +2982,8 @@  discard block
 block discarded – undo
2982 2982
      */
2983 2983
 	public function renameIndexDefs($old_definition, $new_definition, $table_name)
2984 2984
 	{
2985
-		return array($this->add_drop_constraint($table_name,$old_definition,true),
2986
-				$this->add_drop_constraint($table_name,$new_definition), false);
2985
+		return array($this->add_drop_constraint($table_name, $old_definition, true),
2986
+				$this->add_drop_constraint($table_name, $new_definition), false);
2987 2987
 	}
2988 2988
 
2989 2989
 	/**
@@ -3005,7 +3005,7 @@  discard block
 block discarded – undo
3005 3005
 	protected function _getBooleanValue($val)
3006 3006
 	{
3007 3007
 		//need to put the === sign here otherwise true == 'non empty string'
3008
-		if (empty($val) or $val==='off')
3008
+		if (empty($val) or $val === 'off')
3009 3009
 			return false;
3010 3010
 
3011 3011
 		return true;
@@ -3018,7 +3018,7 @@  discard block
 block discarded – undo
3018 3018
 	 */
3019 3019
 	public function isNumericType($type)
3020 3020
 	{
3021
-	    if(isset($this->type_class[$type]) && ($this->type_class[$type] == 'int' || $this->type_class[$type] == 'float')) {
3021
+	    if (isset($this->type_class[$type]) && ($this->type_class[$type] == 'int' || $this->type_class[$type] == 'float')) {
3022 3022
 	        return true;
3023 3023
 	    }
3024 3024
 		return false;
@@ -3035,7 +3035,7 @@  discard block
 block discarded – undo
3035 3035
 		if (empty($val))
3036 3036
 			return true;
3037 3037
 
3038
-		if($this->emptyValue($type) == $val) {
3038
+		if ($this->emptyValue($type) == $val) {
3039 3039
 			return true;
3040 3040
 		}
3041 3041
 		switch ($type) {
@@ -3094,7 +3094,7 @@  discard block
 block discarded – undo
3094 3094
 		$i = 0;
3095 3095
 		$order_by_arr = array();
3096 3096
 		foreach ($values as $key => $value) {
3097
-			if($key == '') {
3097
+			if ($key == '') {
3098 3098
 				$order_by_arr[] = "WHEN ($order_by='' OR $order_by IS NULL) THEN $i";
3099 3099
 			} else {
3100 3100
 				$order_by_arr[] = "WHEN $order_by=".$this->quoted($key)." THEN $i";
@@ -3112,7 +3112,7 @@  discard block
 block discarded – undo
3112 3112
      */
3113 3113
 	public function emptyValue($type)
3114 3114
 	{
3115
-		if(isset($this->type_class[$type]) && ($this->type_class[$type] == 'bool' || $this->type_class[$type] == 'int' || $this->type_class[$type] == 'float')) {
3115
+		if (isset($this->type_class[$type]) && ($this->type_class[$type] == 'bool' || $this->type_class[$type] == 'int' || $this->type_class[$type] == 'float')) {
3116 3116
 			return 0;
3117 3117
 		}
3118 3118
 
@@ -3161,9 +3161,9 @@  discard block
 block discarded – undo
3161 3161
      * @return resource|bool query result
3162 3162
      * @see DBManager::limitQuery()
3163 3163
 	 */
3164
-	public function limitQuerySql($sql, $start, $count, $dieOnError=false, $msg='')
3164
+	public function limitQuerySql($sql, $start, $count, $dieOnError = false, $msg = '')
3165 3165
 	{
3166
-		return $this->limitQuery($sql,$start,$count,$dieOnError,$msg,false);
3166
+		return $this->limitQuery($sql, $start, $count, $dieOnError, $msg, false);
3167 3167
 	}
3168 3168
 
3169 3169
 	/**
@@ -3182,7 +3182,7 @@  discard block
 block discarded – undo
3182 3182
      */
3183 3183
 	public function checkPrivilege($privilege)
3184 3184
 	{
3185
-		switch($privilege) {
3185
+		switch ($privilege) {
3186 3186
 			case "CREATE TABLE":
3187 3187
 				$this->query("CREATE TABLE temp (id varchar(36))");
3188 3188
 				break;
@@ -3203,23 +3203,23 @@  discard block
 block discarded – undo
3203 3203
 				break;
3204 3204
 			case "ADD COLUMN":
3205 3205
 				$test = array("test" => array("name" => "test", "type" => "varchar", "len" => 50));
3206
-				$sql = 	$this->changeColumnSQL("temp", $test, "add");
3206
+				$sql = $this->changeColumnSQL("temp", $test, "add");
3207 3207
 				$this->query($sql);
3208 3208
 				break;
3209 3209
 			case "CHANGE COLUMN":
3210 3210
 				$test = array("test" => array("name" => "test", "type" => "varchar", "len" => 100));
3211
-				$sql = 	$this->changeColumnSQL("temp", $test, "modify");
3211
+				$sql = $this->changeColumnSQL("temp", $test, "modify");
3212 3212
 				$this->query($sql);
3213 3213
 				break;
3214 3214
 			case "DROP COLUMN":
3215 3215
 				$test = array("test" => array("name" => "test", "type" => "varchar", "len" => 100));
3216
-				$sql = 	$this->changeColumnSQL("temp", $test, "drop");
3216
+				$sql = $this->changeColumnSQL("temp", $test, "drop");
3217 3217
 				$this->query($sql);
3218 3218
 				break;
3219 3219
 			default:
3220 3220
 				return false;
3221 3221
 		}
3222
-		if($this->checkError("Checking privileges")) {
3222
+		if ($this->checkError("Checking privileges")) {
3223 3223
 			return false;
3224 3224
 		}
3225 3225
 		return true;
@@ -3236,7 +3236,7 @@  discard block
 block discarded – undo
3236 3236
 		$select_check = strpos(strtolower($query), strtolower("SELECT"));
3237 3237
 		//Checks to see if there is union select which is valid
3238 3238
 		$select_check2 = strpos(strtolower($query), strtolower("(SELECT"));
3239
-		if($select_check==0 || $select_check2==0){
3239
+		if ($select_check == 0 || $select_check2 == 0) {
3240 3240
 			//Returning false means query is ok!
3241 3241
 			return true;
3242 3242
 		}
@@ -3255,10 +3255,10 @@  discard block
 block discarded – undo
3255 3255
 	public function parseFulltextQuery($query)
3256 3256
 	{
3257 3257
 		/* split on space or comma, double quotes with \ for escape */
3258
-		if(strpbrk($query, " ,")) {
3258
+		if (strpbrk($query, " ,")) {
3259 3259
 			// ("([^"]*?)"|[^" ,]+)((, )+)?
3260 3260
 			// '/([^" ,]+|".*?[^\\\\]")(,|\s)\s*/'
3261
-			if(!preg_match_all('/("([^"]*?)"|[^"\s,]+)((,\s)+)?/', $query, $m)) {
3261
+			if (!preg_match_all('/("([^"]*?)"|[^"\s,]+)((,\s)+)?/', $query, $m)) {
3262 3262
 				return false;
3263 3263
 			}
3264 3264
 			$qterms = $m[1];
@@ -3266,17 +3266,17 @@  discard block
 block discarded – undo
3266 3266
 			$qterms = array($query);
3267 3267
 		}
3268 3268
 		$terms = $must_terms = $not_terms = array();
3269
-		foreach($qterms as $item) {
3270
-			if($item[0] == '"') {
3269
+		foreach ($qterms as $item) {
3270
+			if ($item[0] == '"') {
3271 3271
 				$item = trim($item, '"');
3272 3272
 			}
3273
-			if($item[0] == '+') {
3273
+			if ($item[0] == '+') {
3274 3274
                 if (strlen($item) > 1) {
3275 3275
                     $must_terms[] = substr($item, 1);
3276 3276
                 }
3277 3277
                 continue;
3278 3278
 			}
3279
-			if($item[0] == '-') {
3279
+			if ($item[0] == '-') {
3280 3280
                 if (strlen($item) > 1) {
3281 3281
 				    $not_terms[] = substr($item, 1);
3282 3282
                 }
@@ -3325,11 +3325,11 @@  discard block
 block discarded – undo
3325 3325
 	public function verifySQLStatement($query, $skipTables)
3326 3326
 	{
3327 3327
 		$query = trim($query);
3328
-		foreach($this->standardQueries as $qstart => $check) {
3329
-			if(strncasecmp($qstart, $query, strlen($qstart)) == 0) {
3330
-				if(is_callable(array($this, $check))) {
3328
+		foreach ($this->standardQueries as $qstart => $check) {
3329
+			if (strncasecmp($qstart, $query, strlen($qstart)) == 0) {
3330
+				if (is_callable(array($this, $check))) {
3331 3331
 					$table = $this->extractTableName($query);
3332
-					if(!in_array($table, $skipTables)) {
3332
+					if (!in_array($table, $skipTables)) {
3333 3333
 						return call_user_func(array($this, $check), $table, $query);
3334 3334
 					} else {
3335 3335
 						$this->log->debug("Skipping table $table as blacklisted");
@@ -3358,20 +3358,20 @@  discard block
 block discarded – undo
3358 3358
 		$tempname = $table."__uw_temp";
3359 3359
 		$tempTableQuery = str_replace("CREATE TABLE {$table}", "CREATE TABLE $tempname", $query);
3360 3360
 
3361
-		if(strpos($tempTableQuery, '__uw_temp') === false) {
3361
+		if (strpos($tempTableQuery, '__uw_temp') === false) {
3362 3362
 			return 'Could not use a temp table to test query!';
3363 3363
 		}
3364 3364
 
3365 3365
 		$this->query($tempTableQuery, false, "Preflight Failed for: {$query}");
3366 3366
 
3367 3367
 		$error = $this->lastError(); // empty on no-errors
3368
-		if(!empty($error)) {
3368
+		if (!empty($error)) {
3369 3369
 			return $error;
3370 3370
 		}
3371 3371
 
3372 3372
 		// check if table exists
3373 3373
 		$this->log->debug('testing for table: '.$table);
3374
-		if(!$this->tableExists($tempname)) {
3374
+		if (!$this->tableExists($tempname)) {
3375 3375
 			return "Failed to create temp table!";
3376 3376
 		}
3377 3377
 
@@ -3390,8 +3390,8 @@  discard block
 block discarded – undo
3390 3390
 	public function queryArray(array $sqls, $dieOnError = false, $msg = '', $suppress = false)
3391 3391
 	{
3392 3392
 		$last = true;
3393
-		foreach($sqls as $sql) {
3394
-			if(!($last = $this->query($sql, $dieOnError, $msg, $suppress))) {
3393
+		foreach ($sqls as $sql) {
3394
+			if (!($last = $this->query($sql, $dieOnError, $msg, $suppress))) {
3395 3395
 				break;
3396 3396
 			}
3397 3397
 		}
@@ -3409,7 +3409,7 @@  discard block
 block discarded – undo
3409 3409
 	{
3410 3410
 	    if (empty($result))	return false;
3411 3411
 
3412
-	    if(is_int($encode) && func_num_args() == 3) {
3412
+	    if (is_int($encode) && func_num_args() == 3) {
3413 3413
 	        // old API: $result, $rowNum, $encode
3414 3414
 	        $GLOBALS['log']->deprecated("Using row number in fetchByAssoc is not portable and no longer supported. Please fix your code.");
3415 3415
 	        $encode = func_get_arg(2);
@@ -3460,7 +3460,7 @@  discard block
 block discarded – undo
3460 3460
 	 */
3461 3461
 	public function getOption($option)
3462 3462
 	{
3463
-	    if(isset($this->options[$option])) {
3463
+	    if (isset($this->options[$option])) {
3464 3464
 	        return $this->options[$option];
3465 3465
 	    }
3466 3466
 	    return null;
@@ -3500,7 +3500,7 @@  discard block
 block discarded – undo
3500 3500
 	public function isDatabaseNameValid($name)
3501 3501
 	{
3502 3502
 		// Generic case - no slashes, no dots
3503
-		return preg_match('#[/.\\\\]#', $name)==0;
3503
+		return preg_match('#[/.\\\\]#', $name) == 0;
3504 3504
 	}
3505 3505
 
3506 3506
 	/**
Please login to merge, or discard this patch.
install.php 1 patch
Spacing   +112 added lines, -112 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
- if(!defined('sugarEntry'))define('sugarEntry', true);
2
+ if (!defined('sugarEntry'))define('sugarEntry', true);
3 3
 /*********************************************************************************
4 4
  * SugarCRM Community Edition is a customer relationship management program developed by
5 5
  * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
  ********************************************************************************/
40 40
  
41 41
 @session_start();
42
-if(isset($_REQUEST['clear_session']) || !empty($_SESSION['loginAttempts'])) {
42
+if (isset($_REQUEST['clear_session']) || !empty($_SESSION['loginAttempts'])) {
43 43
 	session_destroy();
44 44
 	header('Location: install.php');
45 45
 	echo 'session clean, page refresh...';
@@ -47,17 +47,17 @@  discard block
 block discarded – undo
47 47
 }
48 48
  
49 49
 //  recover smtp settings
50
-if(isset($_POST['smtp_tab_selected'])) {
50
+if (isset($_POST['smtp_tab_selected'])) {
51 51
     $_POST = array_merge($_POST, $_POST[$_POST['smtp_tab_selected']]);
52 52
 }
53 53
 
54 54
 //session_destroy();
55
-if (version_compare(phpversion(),'5.2.0') < 0) {
56
-	$msg = 'Minimum PHP version required is 5.2.0.  You are using PHP version  '. phpversion();
55
+if (version_compare(phpversion(), '5.2.0') < 0) {
56
+	$msg = 'Minimum PHP version required is 5.2.0.  You are using PHP version  '.phpversion();
57 57
     die($msg);
58 58
 }
59 59
 $session_id = session_id();
60
-if(empty($session_id)){
60
+if (empty($session_id)) {
61 61
 	@session_start();
62 62
 }
63 63
 $GLOBALS['installing'] = true;
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
 //check to see if the script files need to be rebuilt, add needed variables to request array
79 79
 $_REQUEST['root_directory'] = getcwd();
80 80
 $_REQUEST['js_rebuild_concat'] = 'rebuild';
81
-if(isset($_REQUEST['goto']) && $_REQUEST['goto'] != 'SilentInstall') {
81
+if (isset($_REQUEST['goto']) && $_REQUEST['goto'] != 'SilentInstall') {
82 82
     require_once('jssource/minify.php');
83 83
 }
84 84
 
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
 setPhpIniSettings();
88 88
 $locale = new Localization();
89 89
 
90
-if(get_magic_quotes_gpc() == 1) {
90
+if (get_magic_quotes_gpc() == 1) {
91 91
    $_REQUEST = array_map("stripslashes_checkstrings", $_REQUEST);
92 92
    $_POST = array_map("stripslashes_checkstrings", $_POST);
93 93
    $_GET = array_map("stripslashes_checkstrings", $_GET);
@@ -108,16 +108,16 @@  discard block
 block discarded – undo
108 108
 
109 109
 ///////////////////////////////////////////////////////////////////////////////
110 110
 ////	INSTALLER LANGUAGE
111
-function getSupportedInstallLanguages(){
111
+function getSupportedInstallLanguages() {
112 112
 	$supportedLanguages = array(
113 113
 	'en_us'	=> 'English (US)',
114 114
 	);
115
-	if(file_exists('install/lang.config.php')){
115
+	if (file_exists('install/lang.config.php')) {
116 116
 		include('install/lang.config.php');
117
-		if(!empty($config['languages'])){
117
+		if (!empty($config['languages'])) {
118 118
 
119
-			foreach($config['languages'] as $k=>$v){
120
-				if(file_exists('install/language/' . $k . '.lang.php')){
119
+			foreach ($config['languages'] as $k=>$v) {
120
+				if (file_exists('install/language/'.$k.'.lang.php')) {
121 121
 					$supportedLanguages[$k] = $v;
122 122
 				}
123 123
 			}
@@ -129,10 +129,10 @@  discard block
 block discarded – undo
129 129
 
130 130
 // after install language is selected, use that pack
131 131
 $default_lang = 'en_us';
132
-if(!isset($_POST['language']) && (!isset($_SESSION['language']) && empty($_SESSION['language']))) {
133
-	if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
132
+if (!isset($_POST['language']) && (!isset($_SESSION['language']) && empty($_SESSION['language']))) {
133
+	if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
134 134
 		$lang = parseAcceptLanguage();
135
-		if(isset($supportedLanguages[$lang])) {
135
+		if (isset($supportedLanguages[$lang])) {
136 136
 			$_POST['language'] = $lang;
137 137
 		} else {
138 138
 			$_POST['language'] = $default_lang;
@@ -140,19 +140,19 @@  discard block
 block discarded – undo
140 140
 	}
141 141
 }
142 142
 
143
-if(isset($_POST['language'])) {
144
-	$_SESSION['language'] = str_replace('-','_',$_POST['language']);
143
+if (isset($_POST['language'])) {
144
+	$_SESSION['language'] = str_replace('-', '_', $_POST['language']);
145 145
 }
146 146
 
147 147
 $current_language = isset($_SESSION['language']) ? $_SESSION['language'] : $default_lang;
148 148
 
149
-if(file_exists("install/language/{$current_language}.lang.php")) {
149
+if (file_exists("install/language/{$current_language}.lang.php")) {
150 150
 	require_once("install/language/{$current_language}.lang.php");
151 151
 } else {
152 152
 	require_once("install/language/{$default_lang}.lang.php");
153 153
 }
154 154
 
155
-if($current_language != 'en_us') {
155
+if ($current_language != 'en_us') {
156 156
 	$my_mod_strings = $mod_strings;
157 157
 	include('install/language/en_us.lang.php');
158 158
 	$mod_strings = sugarLangArrayMerge($mod_strings, $my_mod_strings);
@@ -166,40 +166,40 @@  discard block
 block discarded – undo
166 166
 $help_url = get_help_button_url();
167 167
 
168 168
 //if this license print, then redirect and exit,
169
-if(isset($_REQUEST['page']) && $_REQUEST['page'] == 'licensePrint')
169
+if (isset($_REQUEST['page']) && $_REQUEST['page'] == 'licensePrint')
170 170
 {
171 171
     include('install/licensePrint.php');
172 172
     exit ();
173 173
 }
174 174
 
175
-if(isset($_REQUEST['sugar_body_only']) && $_REQUEST['sugar_body_only'] == "1") {
175
+if (isset($_REQUEST['sugar_body_only']) && $_REQUEST['sugar_body_only'] == "1") {
176 176
     //if this is a system check, then just run the check and return,
177 177
     //this is an ajax call and there is no need for further processing
178 178
 
179
-    if(isset($_REQUEST['uploadLogoFrame']) && ($_REQUEST['uploadLogoFrame'])){
179
+    if (isset($_REQUEST['uploadLogoFrame']) && ($_REQUEST['uploadLogoFrame'])) {
180 180
         echo 'I\'m an uploader iframe!';
181 181
         return;
182 182
     }
183 183
 
184 184
         // upload company logo
185
-    if(isset($_REQUEST['uploadLogo']) && ($_REQUEST['uploadLogo'])){
185
+    if (isset($_REQUEST['uploadLogo']) && ($_REQUEST['uploadLogo'])) {
186 186
         $filepath = '';
187 187
         $errors = array();
188 188
 
189
-        switch($_FILES['company_logo']['error']) {
189
+        switch ($_FILES['company_logo']['error']) {
190 190
 
191 191
             case UPLOAD_ERR_OK:
192 192
                 $allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG/*, IMAGETYPE_GIF */);
193 193
                 $detectedType = exif_imagetype($_FILES['company_logo']['tmp_name']);
194
-                if(!in_array($detectedType, $allowedTypes)) {
194
+                if (!in_array($detectedType, $allowedTypes)) {
195 195
                     $errors[] = $mod_strings['ERR_UPLOAD_FILETYPE'];
196 196
                 }
197 197
                 else {
198 198
                     // uploaded image stored in the /custom path instead of put into the original theme directory..
199 199
 
200
-                    mkdir_recursive('custom/' . SugarThemeRegistry::current()->getDefaultImagePath(), true);
200
+                    mkdir_recursive('custom/'.SugarThemeRegistry::current()->getDefaultImagePath(), true);
201 201
                     $tmpvar = explode('?', SugarThemeRegistry::current()->getImageURL('company_logo.png'));
202
-                    $destFile = 'custom/' . $tmpvar[0];
202
+                    $destFile = 'custom/'.$tmpvar[0];
203 203
                     if (!move_uploaded_file($_FILES['company_logo']['tmp_name'], $destFile)) {
204 204
                         $errors[] = $mod_strings['ERR_LANG_UPLOAD_1'];
205 205
                     }
@@ -247,13 +247,13 @@  discard block
 block discarded – undo
247 247
 
248 248
         // TODO--low: validate file size & image width/height and save, show status result to client js
249 249
 
250
-        echo "<script>window.top.window.{$_REQUEST['callback']}(" . json_encode($result) . ");</script>";
250
+        echo "<script>window.top.window.{$_REQUEST['callback']}(".json_encode($result).");</script>";
251 251
         return;
252 252
     }
253 253
 
254
-    if(isset($_REQUEST['storeConfig']) && ($_REQUEST['storeConfig'])){
254
+    if (isset($_REQUEST['storeConfig']) && ($_REQUEST['storeConfig'])) {
255 255
         // store configuration by form to session
256
-        if(!isset($_SESSION)) session_start();
256
+        if (!isset($_SESSION)) session_start();
257 257
         $_SESSION = array_merge($_SESSION, $_POST);
258 258
 
259 259
         // TODO--low: don't forget the custom type install settings! validate here..
@@ -267,22 +267,22 @@  discard block
 block discarded – undo
267 267
 //            $si_errors = true;
268 268
 //        }
269 269
 
270
-        if(!empty($sugar_config['dbconfig'])) {
270
+        if (!empty($sugar_config['dbconfig'])) {
271 271
             try {
272 272
                 $db = DBManagerFactory::getInstance();
273 273
                 $db->disconnect();
274
-            } catch (\Exception $e) {
275
-                $validation_errors[] = $mod_strings['LBL_DB_CONN_ERR'] . ': ' . $e->getMessage();
274
+            }catch (\Exception $e) {
275
+                $validation_errors[] = $mod_strings['LBL_DB_CONN_ERR'].': '.$e->getMessage();
276 276
             }
277 277
         }
278 278
 
279 279
         $errors = '';
280
-        if( isset($validation_errors) && is_array($validation_errors)){
281
-            if( count($validation_errors) > 0 ){
280
+        if (isset($validation_errors) && is_array($validation_errors)) {
281
+            if (count($validation_errors) > 0) {
282 282
                // $errors  = '<div id="errorMsgs">';
283 283
                 $errors .= '<p>'.$mod_strings['LBL_SITECFG_FIX_ERRORS'].'</p><ul>';
284
-                foreach( $validation_errors as $error ){
285
-                    $errors .= '<li class="error">' . $error . '</li>';
284
+                foreach ($validation_errors as $error) {
285
+                    $errors .= '<li class="error">'.$error.'</li>';
286 286
                 }
287 287
                 $errors .= '</ul>'; //</div>';
288 288
             }
@@ -292,7 +292,7 @@  discard block
 block discarded – undo
292 292
         return;
293 293
     }
294 294
 
295
-    if(isset($_REQUEST['checkInstallSystem']) && ($_REQUEST['checkInstallSystem'])){
295
+    if (isset($_REQUEST['checkInstallSystem']) && ($_REQUEST['checkInstallSystem'])) {
296 296
         require_once('install/installSystemCheck.php');
297 297
         echo runCheck($install_script, $mod_strings);
298 298
         return;
@@ -300,7 +300,7 @@  discard block
 block discarded – undo
300 300
 
301 301
     //if this is a DB Settings check, then just run the check and return,
302 302
     //this is an ajax call and there is no need for further processing
303
-    if(isset($_REQUEST['checkDBSettings']) && ($_REQUEST['checkDBSettings'])){
303
+    if (isset($_REQUEST['checkDBSettings']) && ($_REQUEST['checkDBSettings'])) {
304 304
         require_once('install/checkDBSettings.php');
305 305
         echo checkDBSettings();
306 306
         return;
@@ -308,13 +308,13 @@  discard block
 block discarded – undo
308 308
 }
309 309
 
310 310
 //maintaining the install_type if earlier set to custom
311
-if(isset($_REQUEST['install_type']) && $_REQUEST['install_type'] == 'custom'){
311
+if (isset($_REQUEST['install_type']) && $_REQUEST['install_type'] == 'custom') {
312 312
 	$_SESSION['install_type'] = $_REQUEST['install_type'];
313 313
 }
314 314
 
315 315
 //set the default settings into session
316
-foreach($installer_defaults as $key =>$val){
317
-    if(!isset($_SESSION[$key])){
316
+foreach ($installer_defaults as $key =>$val) {
317
+    if (!isset($_SESSION[$key])) {
318 318
         $_SESSION[$key] = $val;
319 319
     }
320 320
 }
@@ -326,7 +326,7 @@  discard block
 block discarded – undo
326 326
 $next_step = 0;
327 327
 
328 328
 // use a simple array to map out the steps of the installer page flow
329
-$workflow = array(  'welcome.php',
329
+$workflow = array('welcome.php',
330 330
                     'ready.php',
331 331
 
332 332
                     // TODO-g: remove these files..
@@ -339,9 +339,9 @@  discard block
 block discarded – undo
339 339
 //$workflow[] = 'dbConfig_b.php';
340 340
 
341 341
 //define web root, which will be used as default for site_url
342
-if($_SERVER['SERVER_PORT']=='80'){
342
+if ($_SERVER['SERVER_PORT'] == '80') {
343 343
     $web_root = $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
344
-}else{
344
+} else {
345 345
     $web_root = $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['PHP_SELF'];
346 346
 }
347 347
 $web_root = str_replace("/install.php", "", $web_root);
@@ -359,16 +359,16 @@  discard block
 block discarded – undo
359 359
     }
360 360
 }
361 361
 
362
-if(empty($sugar_config['cache_dir']) && !empty($_SESSION['cache_dir'])) {
362
+if (empty($sugar_config['cache_dir']) && !empty($_SESSION['cache_dir'])) {
363 363
     $sugar_config['cache_dir'] = $_SESSION['cache_dir'];
364 364
 }
365 365
 
366 366
 // set the form's php var to the loaded config's var else default to sane settings
367
-if(!isset($_SESSION['setup_site_url'])  || empty($_SESSION['setup_site_url'])) {
368
-    if(isset($sugar_config['site_url']) && !empty($sugar_config['site_url'])) {
369
-        $_SESSION['setup_site_url']= $sugar_config['site_url'];
367
+if (!isset($_SESSION['setup_site_url']) || empty($_SESSION['setup_site_url'])) {
368
+    if (isset($sugar_config['site_url']) && !empty($sugar_config['site_url'])) {
369
+        $_SESSION['setup_site_url'] = $sugar_config['site_url'];
370 370
     } else {
371
-        $_SESSION['setup_site_url']= $web_root;
371
+        $_SESSION['setup_site_url'] = $web_root;
372 372
     }
373 373
 }
374 374
 
@@ -391,8 +391,8 @@  discard block
 block discarded – undo
391 391
   //$workflow[] = 'confirmSettings.php';
392 392
 $workflow[] = 'performSetup.php';
393 393
 
394
-  if(!isset($_SESSION['oc_install']) ||  $_SESSION['oc_install'] == false){
395
-    if(isset($_SESSION['install_type'])  && !empty($_SESSION['install_type'])  && $_SESSION['install_type']=='custom'){
394
+  if (!isset($_SESSION['oc_install']) || $_SESSION['oc_install'] == false) {
395
+    if (isset($_SESSION['install_type']) && !empty($_SESSION['install_type']) && $_SESSION['install_type'] == 'custom') {
396 396
         //$workflow[] = 'download_patches.php';
397 397
         $workflow[] = 'download_modules.php';
398 398
     }
@@ -403,8 +403,8 @@  discard block
 block discarded – undo
403 403
 
404 404
 
405 405
 // increment/decrement the workflow pointer
406
-if(!empty($_REQUEST['goto'])) {
407
-    switch($_REQUEST['goto']) {
406
+if (!empty($_REQUEST['goto'])) {
407
+    switch ($_REQUEST['goto']) {
408 408
         case $mod_strings['LBL_CHECKSYS_RECHECK']:
409 409
             $next_step = $_REQUEST['current_step'];
410 410
             break;
@@ -426,7 +426,7 @@  discard block
 block discarded – undo
426 426
     }
427 427
 }
428 428
 // Add check here to see if a silent install config file exists; if so then launch silent installer
429
-elseif ( is_file('config_si.php') && empty($sugar_config['installer_locked'])) {
429
+elseif (is_file('config_si.php') && empty($sugar_config['installer_locked'])) {
430 430
 
431 431
 $langHeader = get_language_header();
432 432
 
@@ -471,13 +471,13 @@  discard block
 block discarded – undo
471 471
 
472 472
 
473 473
 
474
-    $exclude_files = array('complete_install.php','register.php','download_modules.php');
474
+    $exclude_files = array('complete_install.php', 'register.php', 'download_modules.php');
475 475
 
476
-if(isset($next_step) && isset($workflow[$next_step]) && !in_array($workflow[$next_step],$exclude_files) && isset($sugar_config['installer_locked']) && $sugar_config['installer_locked'] == true) {
476
+if (isset($next_step) && isset($workflow[$next_step]) && !in_array($workflow[$next_step], $exclude_files) && isset($sugar_config['installer_locked']) && $sugar_config['installer_locked'] == true) {
477 477
     $the_file = 'installDisabled.php';
478 478
 	$disabled_title = $mod_strings['LBL_DISABLED_DESCRIPTION'];
479 479
 	$disabled_title_2 = $mod_strings['LBL_DISABLED_TITLE_2'];
480
-	$disabled_text =<<<EOQ
480
+	$disabled_text = <<<EOQ
481 481
 		<p>{$mod_strings['LBL_DISABLED_DESCRIPTION']}</p>
482 482
 		<pre>
483 483
 			'installer_locked' => false,
@@ -487,12 +487,12 @@  discard block
 block discarded – undo
487 487
 		<p>{$mod_strings['LBL_DISABLED_HELP_1']} <a href="{$mod_strings['LBL_DISABLED_HELP_LNK']}" target="_blank">{$mod_strings['LBL_DISABLED_HELP_2']}</a>.</p>
488 488
 EOQ;
489 489
 }
490
-else{
490
+else {
491 491
 $validation_errors = array();
492 492
 // process the data posted
493
-if($next_clicked) {
493
+if ($next_clicked) {
494 494
 	// store the submitted data because the 'Next' button was clicked
495
-    switch($workflow[trim($_REQUEST['current_step'])]) {
495
+    switch ($workflow[trim($_REQUEST['current_step'])]) {
496 496
         case 'welcome.php':
497 497
         	$_SESSION['language'] = $_REQUEST['language'];
498 498
    			$_SESSION['setup_site_admin_user_name'] = 'admin';
@@ -503,25 +503,25 @@  discard block
 block discarded – undo
503 503
 
504 504
 
505 505
            // eventually default all vars here, with overrides from config.php
506
-            if(is_readable('config.php')) {
506
+            if (is_readable('config.php')) {
507 507
             	global $sugar_config;
508 508
                 include_once('config.php');
509 509
             }
510 510
 
511 511
             $default_db_type = 'mysql';
512 512
 
513
-            if(!isset($_SESSION['setup_db_type'])) {
513
+            if (!isset($_SESSION['setup_db_type'])) {
514 514
                 $_SESSION['setup_db_type'] = empty($sugar_config['dbconfig']['db_type']) ? $default_db_type : $sugar_config['dbconfig']['db_type'];
515 515
             }
516 516
 
517 517
             break;
518 518
         //TODO--low: add this functionality to installConfig.php
519 519
         case 'installType.php':
520
-            $_SESSION['install_type']   = $_REQUEST['install_type'];
521
-            if(isset($_REQUEST['setup_license_key']) && !empty($_REQUEST['setup_license_key'])){
522
-                $_SESSION['setup_license_key']  = $_REQUEST['setup_license_key'];
520
+            $_SESSION['install_type'] = $_REQUEST['install_type'];
521
+            if (isset($_REQUEST['setup_license_key']) && !empty($_REQUEST['setup_license_key'])) {
522
+                $_SESSION['setup_license_key'] = $_REQUEST['setup_license_key'];
523 523
             }
524
-            $_SESSION['licenseKey_submitted']      = true;
524
+            $_SESSION['licenseKey_submitted'] = true;
525 525
 
526 526
 
527 527
 
@@ -530,39 +530,39 @@  discard block
 block discarded – undo
530 530
         case 'installConfig.php':
531 531
 
532 532
         //case 'systemOptions.php':
533
-            if(isset($_REQUEST['setup_db_type'])) {
533
+            if (isset($_REQUEST['setup_db_type'])) {
534 534
               $_SESSION['setup_db_type'] = $_REQUEST['setup_db_type'];
535 535
             }
536 536
             $validation_errors = validate_systemOptions();
537
-            if(count($validation_errors) > 0) {
537
+            if (count($validation_errors) > 0) {
538 538
                 $next_step--;
539 539
             }
540 540
             //break;
541 541
 
542 542
         //case 'dbConfig_a.php':
543 543
             //validation is now done through ajax call to checkDBSettings.php
544
-            if(isset($_REQUEST['setup_db_drop_tables'])){
544
+            if (isset($_REQUEST['setup_db_drop_tables'])) {
545 545
                 $_SESSION['setup_db_drop_tables'] = $_REQUEST['setup_db_drop_tables'];
546
-                if($_SESSION['setup_db_drop_tables']=== true || $_SESSION['setup_db_drop_tables'] == 'true'){
546
+                if ($_SESSION['setup_db_drop_tables'] === true || $_SESSION['setup_db_drop_tables'] == 'true') {
547 547
                     $_SESSION['setup_db_create_database'] = false;
548 548
                 }
549 549
             }
550 550
             //break;
551 551
 
552 552
         //case 'siteConfig_a.php':
553
-            if(isset($_REQUEST['setup_site_url'])){$_SESSION['setup_site_url']          = $_REQUEST['setup_site_url'];}
554
-            if(isset($_REQUEST['setup_system_name'])){$_SESSION['setup_system_name']    = $_REQUEST['setup_system_name'];}
555
-            if(isset($_REQUEST['setup_db_collation'])) {
553
+            if (isset($_REQUEST['setup_site_url'])) {$_SESSION['setup_site_url']          = $_REQUEST['setup_site_url']; }
554
+            if (isset($_REQUEST['setup_system_name'])) {$_SESSION['setup_system_name']    = $_REQUEST['setup_system_name']; }
555
+            if (isset($_REQUEST['setup_db_collation'])) {
556 556
                 $_SESSION['setup_db_options']['collation'] = $_REQUEST['setup_db_collation'];
557 557
             }
558 558
             $_SESSION['setup_site_admin_user_name']             = $_REQUEST['setup_site_admin_user_name'];
559 559
             $_SESSION['setup_site_admin_password']              = $_REQUEST['setup_site_admin_password'];
560 560
             $_SESSION['setup_site_admin_password_retype']       = $_REQUEST['setup_site_admin_password_retype'];
561
-            $_SESSION['siteConfig_submitted']               = true;
561
+            $_SESSION['siteConfig_submitted'] = true;
562 562
 
563 563
             $validation_errors = array();
564 564
             $validation_errors = validate_siteConfig('a');
565
-            if(count($validation_errors) > 0 || $_REQUEST['goto'] == 'resend') {
565
+            if (count($validation_errors) > 0 || $_REQUEST['goto'] == 'resend') {
566 566
                 $next_step--;
567 567
             }
568 568
             //break;
@@ -570,56 +570,56 @@  discard block
 block discarded – undo
570 570
         //case 'siteConfig_b.php':
571 571
             $_SESSION['setup_site_sugarbeet_automatic_checks'] = get_boolean_from_request('setup_site_sugarbeet_automatic_checks');
572 572
 
573
-            $_SESSION['setup_site_custom_session_path']     = get_boolean_from_request('setup_site_custom_session_path');
574
-            if($_SESSION['setup_site_custom_session_path']){
575
-                $_SESSION['setup_site_session_path']            = $_REQUEST['setup_site_session_path'];
576
-            }else{
573
+            $_SESSION['setup_site_custom_session_path'] = get_boolean_from_request('setup_site_custom_session_path');
574
+            if ($_SESSION['setup_site_custom_session_path']) {
575
+                $_SESSION['setup_site_session_path'] = $_REQUEST['setup_site_session_path'];
576
+            } else {
577 577
                 $_SESSION['setup_site_session_path'] = '';
578 578
             }
579 579
 
580
-            $_SESSION['setup_site_custom_log_dir']          = get_boolean_from_request('setup_site_custom_log_dir');
581
-            if($_SESSION['setup_site_custom_log_dir']){
582
-                $_SESSION['setup_site_log_dir']                 = $_REQUEST['setup_site_log_dir'];
583
-            }else{
580
+            $_SESSION['setup_site_custom_log_dir'] = get_boolean_from_request('setup_site_custom_log_dir');
581
+            if ($_SESSION['setup_site_custom_log_dir']) {
582
+                $_SESSION['setup_site_log_dir'] = $_REQUEST['setup_site_log_dir'];
583
+            } else {
584 584
                 $_SESSION['setup_site_log_dir'] = '.';
585 585
             }
586 586
 
587
-            $_SESSION['setup_site_specify_guid']            = get_boolean_from_request('setup_site_specify_guid');
588
-            if($_SESSION['setup_site_specify_guid']){
589
-                $_SESSION['setup_site_guid']                    = $_REQUEST['setup_site_guid'];
590
-            }else{
587
+            $_SESSION['setup_site_specify_guid'] = get_boolean_from_request('setup_site_specify_guid');
588
+            if ($_SESSION['setup_site_specify_guid']) {
589
+                $_SESSION['setup_site_guid'] = $_REQUEST['setup_site_guid'];
590
+            } else {
591 591
                 $_SESSION['setup_site_guid'] = '';
592 592
             }
593
-            $_SESSION['siteConfig_submitted']               = true;
594
-            if(isset($_REQUEST['setup_site_sugarbeet_anonymous_stats'])){
593
+            $_SESSION['siteConfig_submitted'] = true;
594
+            if (isset($_REQUEST['setup_site_sugarbeet_anonymous_stats'])) {
595 595
                 $_SESSION['setup_site_sugarbeet_anonymous_stats'] = get_boolean_from_request('setup_site_sugarbeet_anonymous_stats');
596
-            }else{
596
+            } else {
597 597
                 $_SESSION['setup_site_sugarbeet_anonymous_stats'] = 0;
598 598
             }
599 599
 
600 600
             $validation_errors = array();
601 601
             $validation_errors = validate_siteConfig('b');
602
-            if(count($validation_errors) > 0) {
602
+            if (count($validation_errors) > 0) {
603 603
                 $next_step--;
604 604
             }
605 605
             break;
606 606
 }
607 607
     }
608 608
 
609
-if($next_step == 9999) {
609
+if ($next_step == 9999) {
610 610
     $the_file = 'SilentInstall';
611
-}else if($next_step == 9191) {
612
-	$_SESSION['oc_server_url']	= $_REQUEST['oc_server_url'];
611
+} else if ($next_step == 9191) {
612
+	$_SESSION['oc_server_url'] = $_REQUEST['oc_server_url'];
613 613
     $_SESSION['oc_username']    = $_REQUEST['oc_username'];
614 614
     $_SESSION['oc_password']   	= $_REQUEST['oc_password'];
615 615
     $the_file = 'oc_convert.php';
616 616
 }
617
-else{
617
+else {
618 618
         $the_file = $workflow[$next_step];
619 619
 
620 620
 }
621 621
 
622
-switch($the_file) {
622
+switch ($the_file) {
623 623
     case 'welcome.php':
624 624
     case 'license.php':
625 625
 			//
@@ -630,7 +630,7 @@  discard block
 block discarded – undo
630 630
 			unset($_SESSION['test_session']);
631 631
         @session_start();
632 632
 
633
-			if(!isset($_SESSION['test_session']))
633
+			if (!isset($_SESSION['test_session']))
634 634
 			{
635 635
                 $the_file = 'installDisabled.php';
636 636
 				// PHP.ini location -
@@ -641,14 +641,14 @@  discard block
 block discarded – undo
641 641
             break;
642 642
 			}
643 643
         // check to see if installer has been disabled
644
-        if(is_readable('config.php') && (filesize('config.php') > 0)) {
644
+        if (is_readable('config.php') && (filesize('config.php') > 0)) {
645 645
             include_once('config.php');
646 646
 
647
-            if(!isset($sugar_config['installer_locked']) || $sugar_config['installer_locked'] == true) {
647
+            if (!isset($sugar_config['installer_locked']) || $sugar_config['installer_locked'] == true) {
648 648
                 $the_file = 'installDisabled.php';
649 649
 				$disabled_title = $mod_strings['LBL_DISABLED_DESCRIPTION'];
650 650
 				$disabled_title_2 = $mod_strings['LBL_DISABLED_TITLE_2'];
651
-				$disabled_text =<<<EOQ
651
+				$disabled_text = <<<EOQ
652 652
 					<p>{$mod_strings['LBL_DISABLED_DESCRIPTION']}</p>
653 653
 					<pre>
654 654
 						'installer_locked' => false,
@@ -659,7 +659,7 @@  discard block
 block discarded – undo
659 659
 EOQ;
660 660
 		             //if this is an offline client installation but the conversion did not succeed,
661 661
 		            //then try to convert again
662
-					if(isset($sugar_config['disc_client']) && $sugar_config['disc_client'] == true && isset($sugar_config['oc_converted']) && $sugar_config['oc_converted'] == false) {
662
+					if (isset($sugar_config['disc_client']) && $sugar_config['disc_client'] == true && isset($sugar_config['oc_converted']) && $sugar_config['oc_converted'] == false) {
663 663
 			          header('Location: index.php?entryPoint=oc_convert&first_time=true');
664 664
 						exit ();
665 665
 		            }
@@ -689,22 +689,22 @@  discard block
 block discarded – undo
689 689
         }
690 690
 
691 691
         $validation_errors = validate_dbConfig('a');
692
-        if(count($validation_errors) > 0) {
692
+        if (count($validation_errors) > 0) {
693 693
             $the_file = 'dbConfig_a.php';
694 694
             $si_errors = true;
695 695
         }
696 696
         $validation_errors = validate_siteConfig('a');
697
-        if(count($validation_errors) > 0) {
697
+        if (count($validation_errors) > 0) {
698 698
             $the_file = 'siteConfig_a.php';
699 699
             $si_errors = true;
700 700
         }
701 701
         $validation_errors = validate_siteConfig('b');
702
-        if(count($validation_errors) > 0) {
702
+        if (count($validation_errors) > 0) {
703 703
             $the_file = 'siteConfig_b.php';
704 704
             $si_errors = true;
705 705
         }
706 706
 
707
-        if(!$si_errors){
707
+        if (!$si_errors) {
708 708
             $the_file = 'performSetup.php';
709 709
         }
710 710
         require_once('jssource/minify.php');
@@ -734,13 +734,13 @@  discard block
 block discarded – undo
734 734
         // check whether we're getting this request from a command line tool
735 735
         // we want to output brief messages if we're outputting to a command line tool
736 736
         $cli_mode = false;
737
-        if(isset($_REQUEST['cli']) && ($_REQUEST['cli'] == 'true')) {
737
+        if (isset($_REQUEST['cli']) && ($_REQUEST['cli'] == 'true')) {
738 738
             $_SESSION['cli'] = true;
739 739
             // if we have errors, just shoot them back now
740
-            if(count($validation_errors) > 0) {
741
-                foreach($validation_errors as $error) {
740
+            if (count($validation_errors) > 0) {
741
+                foreach ($validation_errors as $error) {
742 742
                     print($mod_strings['ERR_ERROR_GENERAL']."\n");
743
-                    print("    " . $error . "\n");
743
+                    print("    ".$error."\n");
744 744
                     print("Exit 1\n");
745 745
                     exit(1);
746 746
                 }
@@ -757,7 +757,7 @@  discard block
 block discarded – undo
757 757
 
758 758
 // change to require to get a good file load error message if the file is not available.
759 759
 
760
-require('install/' . $the_file);
760
+require('install/'.$the_file);
761 761
 
762 762
 installerHook('post_installFileRequire', array('the_file' => $the_file));
763 763
 
Please login to merge, or discard this patch.
modules/Users/language/en_us.lang.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -48,8 +48,8 @@  discard block
 block discarded – undo
48 48
 $mod_strings = array (
49 49
     'LBL_DELETE_USER_CONFIRM'           => 'When the User record is deleted, the corresponding Employee record will also be deleted. After the user is deleted, any workflow definitions and reports involving the user might need to be updated.<br/><br/> Deleting a User record cannot be undone.',
50 50
 
51
-	'LBL_DELETE_GROUP_CONFIRM'          => 'Are you sure you want to delete this Group User? Click OK to delete the User record.<br/>After clicking OK, you will be given the ability to reassign records assigned to the Group User to another user.',
52
-	'LBL_DELETE_PORTAL_CONFIRM'         => 'Are you sure you want to delete this Portal API User? Click OK to delete the User record.',
51
+    'LBL_DELETE_GROUP_CONFIRM'          => 'Are you sure you want to delete this Group User? Click OK to delete the User record.<br/>After clicking OK, you will be given the ability to reassign records assigned to the Group User to another user.',
52
+    'LBL_DELETE_PORTAL_CONFIRM'         => 'Are you sure you want to delete this Portal API User? Click OK to delete the User record.',
53 53
 
54 54
 
55 55
     'LNK_IMPORT_USERS' => 'Import Users',
@@ -598,7 +598,7 @@  discard block
 block discarded – undo
598 598
     'LBL_ENABLE_NOTIFICATIONS' => 'Enable Desktop Notifications',
599 599
     'LBL_LIST_NONINHERITABLE' => "Not Inheritable",
600 600
     'LBL_PRIMARY_GROUP' => "Primary Group",
601
-	'LBL_PASSWORD_MIS_MATCH' => 'mis-match',
601
+    'LBL_PASSWORD_MIS_MATCH' => 'mis-match',
602 602
 ); // END STRINGS DEFS
603 603
 
604 604
 ?>
Please login to merge, or discard this patch.
modules/Meetings/metadata/editviewdefs.php 1 patch
Indentation   +82 added lines, -82 removed lines patch added patch discarded remove patch
@@ -39,134 +39,134 @@  discard block
 block discarded – undo
39 39
 
40 40
 $viewdefs ['Meetings'] =
41 41
 array (
42
-  'EditView' =>
43
-  array (
42
+    'EditView' =>
43
+    array (
44 44
     'templateMeta' =>
45 45
     array (
46 46
         'includes' => array(
47 47
             array('file' => 'modules/Reminders/Reminders.js'),
48 48
         ),
49
-      'maxColumns' => '2',
50
-      'form' =>
51
-      array (
49
+        'maxColumns' => '2',
50
+        'form' =>
51
+        array (
52 52
         'hidden' =>
53 53
         array (
54
-          0 => '<input type="hidden" name="isSaveAndNew" value="false">',
54
+            0 => '<input type="hidden" name="isSaveAndNew" value="false">',
55 55
         ),
56 56
         'buttons' =>
57 57
         array (
58
-          0 =>
59
-          array (
60
-			'customCode' => '<input title="{$APP.LBL_SAVE_BUTTON_TITLE}" id ="SAVE_HEADER" accessKey="{$APP.LBL_SAVE_BUTTON_KEY}" class="button primary" onclick="SUGAR.meetings.fill_invitees();document.EditView.action.value=\'Save\'; document.EditView.return_action.value=\'DetailView\'; {if isset($smarty.request.isDuplicate) && $smarty.request.isDuplicate eq "true"}document.EditView.return_id.value=\'\'; {/if} formSubmitCheck();"type="submit" name="button" value="{$APP.LBL_SAVE_BUTTON_LABEL}">',
61
-		  ),
62
-          1 => 'CANCEL',
63
-          2 =>
64
-          array (
65
-             'customCode' => '<input title="{$MOD.LBL_SEND_BUTTON_TITLE}" id="save_and_send_invites_header" class="button" onclick="document.EditView.send_invites.value=\'1\';SUGAR.meetings.fill_invitees();document.EditView.action.value=\'Save\';document.EditView.return_action.value=\'EditView\';document.EditView.return_module.value=\'{$smarty.request.return_module}\'; formSubmitCheck();"type="button" name="button" value="{$MOD.LBL_SEND_BUTTON_LABEL}">',
66
-		  ),
67
-          3 => 
68
-          array (
58
+            0 =>
59
+            array (
60
+            'customCode' => '<input title="{$APP.LBL_SAVE_BUTTON_TITLE}" id ="SAVE_HEADER" accessKey="{$APP.LBL_SAVE_BUTTON_KEY}" class="button primary" onclick="SUGAR.meetings.fill_invitees();document.EditView.action.value=\'Save\'; document.EditView.return_action.value=\'DetailView\'; {if isset($smarty.request.isDuplicate) && $smarty.request.isDuplicate eq "true"}document.EditView.return_id.value=\'\'; {/if} formSubmitCheck();"type="submit" name="button" value="{$APP.LBL_SAVE_BUTTON_LABEL}">',
61
+            ),
62
+            1 => 'CANCEL',
63
+            2 =>
64
+            array (
65
+                'customCode' => '<input title="{$MOD.LBL_SEND_BUTTON_TITLE}" id="save_and_send_invites_header" class="button" onclick="document.EditView.send_invites.value=\'1\';SUGAR.meetings.fill_invitees();document.EditView.action.value=\'Save\';document.EditView.return_action.value=\'EditView\';document.EditView.return_module.value=\'{$smarty.request.return_module}\'; formSubmitCheck();"type="button" name="button" value="{$MOD.LBL_SEND_BUTTON_LABEL}">',
66
+            ),
67
+            3 => 
68
+            array (
69 69
             'customCode' => '{if $fields.status.value != "Held"}<input title="{$APP.LBL_CLOSE_AND_CREATE_BUTTON_TITLE}" id="close_and_create_new_header" class="button" onclick="SUGAR.meetings.fill_invitees(); document.EditView.status.value=\'Held\'; document.EditView.action.value=\'Save\'; document.EditView.return_module.value=\'Meetings\'; document.EditView.isDuplicate.value=true; document.EditView.isSaveAndNew.value=true; document.EditView.return_action.value=\'EditView\'; document.EditView.return_id.value=\'{$fields.id.value}\'; formSubmitCheck();"type="button" name="button" value="{$APP.LBL_CLOSE_AND_CREATE_BUTTON_LABEL}">{/if}',
70
-           ),
70
+            ),
71 71
         ),
72 72
         'headerTpl' => 'modules/Meetings/tpls/header.tpl',
73 73
 
74
-          'buttons_footer' =>
74
+            'buttons_footer' =>
75 75
         array (
76
-          0 =>
77
-          array (
78
-			'customCode' => '<input title="{$APP.LBL_SAVE_BUTTON_TITLE}" id ="SAVE_FOOTER" accessKey="{$APP.LBL_SAVE_BUTTON_KEY}" class="button primary" onclick="SUGAR.meetings.fill_invitees();document.EditView.action.value=\'Save\'; document.EditView.return_action.value=\'DetailView\'; {if isset($smarty.request.isDuplicate) && $smarty.request.isDuplicate eq "true"}document.EditView.return_id.value=\'\'; {/if} formSubmitCheck();"type="button" name="button" value="{$APP.LBL_SAVE_BUTTON_LABEL}">',
79
-		  ),
80
-          1 => 'CANCEL',
81
-          2 =>
82
-          array (
83
-             'customCode' => '<input title="{$MOD.LBL_SEND_BUTTON_TITLE}" id="save_and_send_invites_footer" class="button" onclick="document.EditView.send_invites.value=\'1\';SUGAR.meetings.fill_invitees();document.EditView.action.value=\'Save\';document.EditView.return_action.value=\'EditView\';document.EditView.return_module.value=\'{$smarty.request.return_module}\'; formSubmitCheck();"type="button" name="button" value="{$MOD.LBL_SEND_BUTTON_LABEL}">',
84
-		  ),
85
-          3 =>
86
-          array (
76
+            0 =>
77
+            array (
78
+            'customCode' => '<input title="{$APP.LBL_SAVE_BUTTON_TITLE}" id ="SAVE_FOOTER" accessKey="{$APP.LBL_SAVE_BUTTON_KEY}" class="button primary" onclick="SUGAR.meetings.fill_invitees();document.EditView.action.value=\'Save\'; document.EditView.return_action.value=\'DetailView\'; {if isset($smarty.request.isDuplicate) && $smarty.request.isDuplicate eq "true"}document.EditView.return_id.value=\'\'; {/if} formSubmitCheck();"type="button" name="button" value="{$APP.LBL_SAVE_BUTTON_LABEL}">',
79
+            ),
80
+            1 => 'CANCEL',
81
+            2 =>
82
+            array (
83
+                'customCode' => '<input title="{$MOD.LBL_SEND_BUTTON_TITLE}" id="save_and_send_invites_footer" class="button" onclick="document.EditView.send_invites.value=\'1\';SUGAR.meetings.fill_invitees();document.EditView.action.value=\'Save\';document.EditView.return_action.value=\'EditView\';document.EditView.return_module.value=\'{$smarty.request.return_module}\'; formSubmitCheck();"type="button" name="button" value="{$MOD.LBL_SEND_BUTTON_LABEL}">',
84
+            ),
85
+            3 =>
86
+            array (
87 87
             'customCode' => '{if $fields.status.value != "Held"}<input title="{$APP.LBL_CLOSE_AND_CREATE_BUTTON_TITLE}" id="close_and_create_new_footer" class="button" onclick="SUGAR.meetings.fill_invitees(); document.EditView.status.value=\'Held\'; document.EditView.action.value=\'Save\'; document.EditView.return_module.value=\'Meetings\'; document.EditView.isDuplicate.value=true; document.EditView.isSaveAndNew.value=true; document.EditView.return_action.value=\'EditView\'; document.EditView.return_id.value=\'{$fields.id.value}\'; formSubmitCheck();"type="button" name="button" value="{$APP.LBL_CLOSE_AND_CREATE_BUTTON_LABEL}">{/if}',
88
-           ),
88
+            ),
89 89
         ),
90 90
         'footerTpl' => 'modules/Meetings/tpls/footer.tpl',
91
-      ),
92
-      'widths' =>
93
-      array (
91
+        ),
92
+        'widths' =>
93
+        array (
94 94
         0 =>
95 95
         array (
96
-          'label' => '10',
97
-          'field' => '30',
96
+            'label' => '10',
97
+            'field' => '30',
98 98
         ),
99 99
         1 =>
100 100
         array (
101
-          'label' => '10',
102
-          'field' => '30',
101
+            'label' => '10',
102
+            'field' => '30',
103
+        ),
103 104
         ),
104
-      ),
105
-      'javascript' => '<script type="text/javascript">{$JSON_CONFIG_JAVASCRIPT}</script>
105
+        'javascript' => '<script type="text/javascript">{$JSON_CONFIG_JAVASCRIPT}</script>
106 106
 {sugar_getscript file="cache/include/javascript/sugar_grp_jsolait.js"}
107 107
 <script>toggle_portal_flag();function toggle_portal_flag()  {ldelim} {$TOGGLE_JS} {rdelim} 
108 108
 function formSubmitCheck(){ldelim}if(check_form(\'EditView\')){ldelim}document.EditView.submit();{rdelim}{rdelim}</script>',
109
-      'useTabs' => false,
109
+        'useTabs' => false,
110 110
     ),
111 111
     'panels' =>
112 112
     array (
113
-      'lbl_meeting_information' =>
114
-      array (
113
+        'lbl_meeting_information' =>
115 114
         array (
116
-          array (
115
+        array (
116
+            array (
117 117
             'name' => 'name',
118 118
 
119
-          ),
120
-          array (
119
+            ),
120
+            array (
121 121
             'name' => 'status',
122 122
             'fields' =>
123 123
             array (
124
-              array (
124
+                array (
125 125
                 'name' => 'status',
126
-              ),
126
+                ),
127
+            ),
127 128
             ),
128
-         ),
129
-      ),
129
+        ),
130 130
       
131 131
       
132
-      array (
133
-          array (
132
+        array (
133
+            array (
134 134
             'name' => 'date_start',
135 135
             'type' => 'datetimecombo',
136 136
             'displayParams' =>
137 137
             array (
138
-              'required' => true,
139
-              'updateCallback' => 'SugarWidgetScheduler.update_time();',
138
+                'required' => true,
139
+                'updateCallback' => 'SugarWidgetScheduler.update_time();',
140
+            ),
140 141
             ),
141
-          ),
142 142
           
143
-          array (
143
+            array (
144 144
             'name' => 'parent_name',
145 145
             'label' => 'LBL_LIST_RELATED_TO',
146
-          ),
146
+            ),
147 147
         ),
148 148
         
149 149
         
150
-      array (
151
-          array (
150
+        array (
151
+            array (
152 152
             'name' => 'date_end',
153 153
             'type' => 'datetimecombo',
154 154
             'displayParams' =>
155 155
             array (
156
-              'required' => true,
157
-              'updateCallback' => 'SugarWidgetScheduler.update_time();',
156
+                'required' => true,
157
+                'updateCallback' => 'SugarWidgetScheduler.update_time();',
158
+            ),
158 159
             ),
159
-          ),
160 160
           
161
-          array (
161
+            array (
162 162
             'name' => 'location',
163 163
             'comment' => 'Meeting location',
164 164
             'label' => 'LBL_LOCATION',
165
-          ),
165
+            ),
166 166
         ),      
167 167
         
168 168
         array(        
169
-          array (
169
+            array (
170 170
             'name' => 'duration',
171 171
             'customCode' => '
172 172
                 @@FIELD@@
@@ -184,7 +184,7 @@  discard block
 block discarded – undo
184 184
                 </script>            
185 185
             ',
186 186
             'customCodeReadOnly' => '{$fields.duration_hours.value}{$MOD.LBL_HOURS_ABBREV} {$fields.duration_minutes.value}{$MOD.LBL_MINSS_ABBREV} ',
187
-          ),
187
+            ),
188 188
         ),
189 189
 //        array (
190 190
 //          array (
@@ -193,31 +193,31 @@  discard block
 block discarded – undo
193 193
 //            'label' => 'LBL_REMINDER',
194 194
 //          ),
195 195
 //        ),
196
-          array(
197
-              array (
198
-                  'name' => 'reminders',
199
-                  'customCode' => '{include file="modules/Reminders/tpls/reminders.tpl"}',
200
-                  'label' => 'LBL_REMINDERS',
201
-              ),
202
-          ),
196
+            array(
197
+                array (
198
+                    'name' => 'reminders',
199
+                    'customCode' => '{include file="modules/Reminders/tpls/reminders.tpl"}',
200
+                    'label' => 'LBL_REMINDERS',
201
+                ),
202
+            ),
203 203
         array (
204
-          array (
204
+            array (
205 205
             'name' => 'description',
206 206
             'comment' => 'Full text of the note',
207 207
             'label' => 'LBL_DESCRIPTION',
208
-          ),
208
+            ),
209
+        ),
209 210
         ),
210
-      ),
211
-      'LBL_PANEL_ASSIGNMENT' =>
212
-      array (
211
+        'LBL_PANEL_ASSIGNMENT' =>
213 212
         array (
214
-          array (
213
+        array (
214
+            array (
215 215
             'name' => 'assigned_user_name',
216 216
             'label' => 'LBL_ASSIGNED_TO_NAME',
217
-          ),
217
+            ),
218 218
         ),
219
-      ),
219
+        ),
220
+    ),
220 221
     ),
221
-  ),
222 222
 );
223 223
 ?>
Please login to merge, or discard this patch.
modules/AOR_Reports/aor_utils.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
     $fieldDisplay = $currentBean->field_name_map[$field]['vname'];
63 63
     $fieldDisplay = translate($fieldDisplay, $currentBean->module_dir);
64 64
     $fieldDisplay = trim($fieldDisplay, ':');
65
-    foreach($modulePathDisplay as &$module) {
65
+    foreach ($modulePathDisplay as &$module) {
66 66
         $module = isset($app_list_strings['aor_moduleList'][$module]) ? $app_list_strings['aor_moduleList'][$module] : (
67 67
             isset($app_list_strings['moduleList'][$module]) ? $app_list_strings['moduleList'][$module] : $module
68 68
         );
@@ -73,7 +73,7 @@  discard block
 block discarded – undo
73 73
 function requestToUserParameters()
74 74
 {
75 75
     $params = array();
76
-    if(isset($_REQUEST['parameter_id']) && $_REQUEST['parameter_id']) {
76
+    if (isset($_REQUEST['parameter_id']) && $_REQUEST['parameter_id']) {
77 77
         foreach ($_REQUEST['parameter_id'] as $key => $parameterId) {
78 78
             if ($_REQUEST['parameter_type'][$key] === 'Multi') {
79 79
                 $_REQUEST['parameter_value'][$key] = encodeMultienumValue(explode(',', $_REQUEST['parameter_value'][$key]));
@@ -88,9 +88,9 @@  discard block
 block discarded – undo
88 88
             if ($_REQUEST['parameter_type'][$key] === 'Date') {
89 89
                 $values = array();
90 90
                 $values[] = $_REQUEST['parameter_value'][0];
91
-                $values[] = $_REQUEST['parameter_value'][1];;
92
-                $values[] = $_REQUEST['parameter_value'][2];;
93
-                $values[] = $_REQUEST['parameter_value'][3];;
91
+                $values[] = $_REQUEST['parameter_value'][1]; ;
92
+                $values[] = $_REQUEST['parameter_value'][2]; ;
93
+                $values[] = $_REQUEST['parameter_value'][3]; ;
94 94
 
95 95
                 $params[$parameterId] = array(
96 96
                     'id' => $parameterId,
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
  */
228 228
 function getPeriodEndDate($dateTimePeriodListSelected)
229 229
 {
230
-    switch($dateTimePeriodListSelected) {
230
+    switch ($dateTimePeriodListSelected) {
231 231
         case 'today':
232 232
         case 'yesterday':
233 233
             $datetimePeriod = new DateTime();
@@ -327,7 +327,7 @@  discard block
 block discarded – undo
327 327
     $offsetMonths -= 1;
328 328
     // Offset months
329 329
     if ($offsetMonths > 0) {
330
-        $q1start->add(new DateInterval('P' . $offsetMonths . 'M'));
330
+        $q1start->add(new DateInterval('P'.$offsetMonths.'M'));
331 331
     }
332 332
     $q1end = DateTime::createFromFormat(DATE_ISO8601, $q1start->format(DATE_ISO8601));
333 333
     $q1end->add(new DateInterval('P2M'));
Please login to merge, or discard this patch.
modules/AM_ProjectTemplates/controller.php 2 patches
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -31,12 +31,12 @@
 block discarded – undo
31 31
         $template_id = $_POST['template_id'];
32 32
         $project_start = $_POST['start_date'];
33 33
         //Get project start date
34
-		if($project_start!='')
35
-		{
36
-			$dateformat = $current_user->getPreference('datef');
37
-			$startdate = DateTime::createFromFormat($dateformat, $project_start);
38
-			$start = $startdate->format('Y-m-d');
39
-		}
34
+        if($project_start!='')
35
+        {
36
+            $dateformat = $current_user->getPreference('datef');
37
+            $startdate = DateTime::createFromFormat($dateformat, $project_start);
38
+            $start = $startdate->format('Y-m-d');
39
+        }
40 40
         $duration_unit = 'Days';
41 41
 
42 42
 
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -19,11 +19,11 @@  discard block
 block discarded – undo
19 19
  * @author Andrew Mclaughlan <[email protected]>
20 20
  */
21 21
 
22
-if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
22
+if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
23 23
 
24 24
 class AM_ProjectTemplatesController extends SugarController {
25 25
 
26
-    function action_create_project(){
26
+    function action_create_project() {
27 27
 
28 28
         global $current_user, $db;
29 29
 
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
         $template_id = $_POST['template_id'];
32 32
         $project_start = $_POST['start_date'];
33 33
         //Get project start date
34
-		if($project_start!='')
34
+		if ($project_start != '')
35 35
 		{
36 36
 			$dateformat = $current_user->getPreference('datef');
37 37
 			$startdate = DateTime::createFromFormat($dateformat, $project_start);
@@ -73,8 +73,8 @@  discard block
 block discarded – undo
73 73
                         ORDER BY am_tasktemplates.order_number ASC";
74 74
         $tasks = $db->query($get_tasks);
75 75
         //Create new project tasks from the template tasks
76
-        $count=1;
77
-        while($row = $db->fetchByAssoc($tasks))
76
+        $count = 1;
77
+        while ($row = $db->fetchByAssoc($tasks))
78 78
         {
79 79
             $project_task = new ProjectTask();
80 80
             $project_task->name = $row['name'];
@@ -95,18 +95,18 @@  discard block
 block discarded – undo
95 95
             //Flag to prevent after save logichook running when project_tasks are created (see custom/modules/ProjectTask/updateProject.php)
96 96
             $project_task->set_project_end_date = 0;
97 97
 
98
-            if($count == '1'){
98
+            if ($count == '1') {
99 99
                 $project_task->date_start = $start;
100 100
                 $enddate = $startdate->modify('+'.$row['duration'].' '.$duration_unit);
101 101
                 $end = $enddate->format('Y-m-d');
102 102
                 $project_task->date_finish = $end;
103 103
                 $enddate_array[$count] = $end;
104
-                $GLOBALS['log']->fatal("DATE:". $end);
104
+                $GLOBALS['log']->fatal("DATE:".$end);
105 105
             }
106 106
             else {
107 107
                 $start_date = $count - 1;
108 108
                 $startdate = DateTime::createFromFormat('Y-m-d', $enddate_array[$start_date]);
109
-                $GLOBALS['log']->fatal("DATE:". $enddate_array[$start_date]);
109
+                $GLOBALS['log']->fatal("DATE:".$enddate_array[$start_date]);
110 110
                 $start = $startdate->format('Y-m-d');
111 111
                 $project_task->date_start = $start;
112 112
                 $enddate = $startdate->modify('+'.$row['duration'].' '.$duration_unit);
@@ -136,7 +136,7 @@  discard block
 block discarded – undo
136 136
             'action'=>'DetailView',
137 137
             'record' => $project->id,
138 138
         );
139
-        SugarApplication::redirect('index.php?' . http_build_query($params));
139
+        SugarApplication::redirect('index.php?'.http_build_query($params));
140 140
     }
141 141
 
142 142
 }
Please login to merge, or discard this patch.
modules/EmailTemplates/PopupDocumentsCampaignTemplate.php 2 patches
Indentation   +25 added lines, -25 removed lines patch added patch discarded remove patch
@@ -49,25 +49,25 @@  discard block
 block discarded – undo
49 49
 
50 50
 class DocumentPopupPicker extends Popup_Picker {
51 51
 
52
-	public function __construct()
53
-	{
54
-	}
55
-
56
-	public function _get_where_clause() {
57
-		$where = '';
58
-		if(isset($_REQUEST['query']))
59
-		{
60
-			$where_clauses = array();
61
-			append_where_clause($where_clauses, "document_name", "documents.document_name");
62
-			append_where_clause($where_clauses, "category_id", "documents.category_id");
63
-			append_where_clause($where_clauses, "subcategory_id", "documents.subcategory_id");
64
-			append_where_clause($where_clauses, "template_type", "documents.template_type");
65
-			append_where_clause($where_clauses, "is_template", "documents.is_template");
66
-
67
-			$where = generate_where_statement($where_clauses);
68
-		}
69
-		return $where;
70
-	}
52
+    public function __construct()
53
+    {
54
+    }
55
+
56
+    public function _get_where_clause() {
57
+        $where = '';
58
+        if(isset($_REQUEST['query']))
59
+        {
60
+            $where_clauses = array();
61
+            append_where_clause($where_clauses, "document_name", "documents.document_name");
62
+            append_where_clause($where_clauses, "category_id", "documents.category_id");
63
+            append_where_clause($where_clauses, "subcategory_id", "documents.subcategory_id");
64
+            append_where_clause($where_clauses, "template_type", "documents.template_type");
65
+            append_where_clause($where_clauses, "is_template", "documents.is_template");
66
+
67
+            $where = generate_where_statement($where_clauses);
68
+        }
69
+        return $where;
70
+    }
71 71
 
72 72
 }
73 73
 
@@ -101,14 +101,14 @@  discard block
 block discarded – undo
101 101
 $button  = "<form action='index.php' method='post' name='form' id='form'>\n";
102 102
 if(!$hide_clear_button)
103 103
 {
104
-	$button .= "<input type='button' name='button' class='button' onclick=\"send_back('','');\" title='"
105
-		.$app_strings['LBL_CLEAR_BUTTON_TITLE']."' value='  "
106
-		.$app_strings['LBL_CLEAR_BUTTON_LABEL']."  ' />\n";
104
+    $button .= "<input type='button' name='button' class='button' onclick=\"send_back('','');\" title='"
105
+        .$app_strings['LBL_CLEAR_BUTTON_TITLE']."' value='  "
106
+        .$app_strings['LBL_CLEAR_BUTTON_LABEL']."  ' />\n";
107 107
 }
108 108
 $button .= "<input type='submit' name='button' class='button' onclick=\"window.close();\" title='"
109
-	.$app_strings['LBL_CANCEL_BUTTON_TITLE']."' accesskey='"
110
-	.$app_strings['LBL_CANCEL_BUTTON_KEY']."' value='  "
111
-	.$app_strings['LBL_CANCEL_BUTTON_LABEL']."  ' />\n";
109
+    .$app_strings['LBL_CANCEL_BUTTON_TITLE']."' accesskey='"
110
+    .$app_strings['LBL_CANCEL_BUTTON_KEY']."' value='  "
111
+    .$app_strings['LBL_CANCEL_BUTTON_LABEL']."  ' />\n";
112 112
 $button .= "</form>\n";
113 113
 
114 114
 
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
2
+if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 3
 /*********************************************************************************
4 4
  * SugarCRM Community Edition is a customer relationship management program developed by
5 5
  * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
 
56 56
 	public function _get_where_clause() {
57 57
 		$where = '';
58
-		if(isset($_REQUEST['query']))
58
+		if (isset($_REQUEST['query']))
59 59
 		{
60 60
 			$where_clauses = array();
61 61
 			append_where_clause($where_clauses, "document_name", "documents.document_name");
@@ -98,8 +98,8 @@  discard block
 block discarded – undo
98 98
 
99 99
 
100 100
 $hide_clear_button = empty($_REQUEST['hide_clear_button']) ? false : true;
101
-$button  = "<form action='index.php' method='post' name='form' id='form'>\n";
102
-if(!$hide_clear_button)
101
+$button = "<form action='index.php' method='post' name='form' id='form'>\n";
102
+if (!$hide_clear_button)
103 103
 {
104 104
 	$button .= "<input type='button' name='button' class='button' onclick=\"send_back('','');\" title='"
105 105
 		.$app_strings['LBL_CLEAR_BUTTON_TITLE']."' value='  "
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
 $form->assign('MODULE_NAME', $currentModule);
120 120
 $form->assign('NAME', $name);
121 121
 $form->assign('DOCUMENT_NAME', $document_name);
122
-if(isset($_REQUEST['target'])) $form->assign('DOCUMENT_TARGET', $_REQUEST['target']);
122
+if (isset($_REQUEST['target'])) $form->assign('DOCUMENT_TARGET', $_REQUEST['target']);
123 123
 else $form->assign('DOCUMENT_TARGET', '');
124 124
 
125 125
 $form->assign('DOCUMENT_REVISION_ID', $document_revision_id);
Please login to merge, or discard this patch.
modules/Campaigns/WizardNewsletterSave.php 2 patches
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
     $campaign_focus = populateFromPost('', $campaign_focus);
65 65
 
66 66
     foreach($camp_steps as $step){
67
-       $campaign_focus =  populate_wizard_bean_from_request($campaign_focus,$step);
67
+        $campaign_focus =  populate_wizard_bean_from_request($campaign_focus,$step);
68 68
     }
69 69
 
70 70
     switch($_REQUEST['currentstep']) {
@@ -226,7 +226,7 @@  discard block
 block discarded – undo
226 226
                         $action = 'WizardMarketing';
227 227
                         $redirectToTargetList = '&redirectToTargetList=1';
228 228
                         break;
229
-                     case 'exit':
229
+                        case 'exit':
230 230
                          $action = 'WizardMarketing';
231 231
                         break;
232 232
                 }
@@ -413,15 +413,15 @@  discard block
 block discarded – undo
413 413
  */
414 414
 function populate_wizard_bean_from_request($bean,$prefix){
415 415
     foreach($_REQUEST as $key=> $val){
416
-     $key = trim($key);
417
-     if((strstr($key, $prefix )) && (strpos($key, $prefix )== 0)){
418
-          $field  =substr($key, strlen($prefix)) ;
419
-          if(isset($_REQUEST[$key]) && !empty($_REQUEST[$key])){
420
-              //echo "prefix is $prefix, field is $field,    key is $key,   and value is $val<br>";
421
-              $value = $_REQUEST[$key];
422
-              $bean->$field = $value;
423
-          }
424
-     }
416
+        $key = trim($key);
417
+        if((strstr($key, $prefix )) && (strpos($key, $prefix )== 0)){
418
+            $field  =substr($key, strlen($prefix)) ;
419
+            if(isset($_REQUEST[$key]) && !empty($_REQUEST[$key])){
420
+                //echo "prefix is $prefix, field is $field,    key is $key,   and value is $val<br>";
421
+                $value = $_REQUEST[$key];
422
+                $bean->$field = $value;
423
+            }
424
+        }
425 425
     }
426 426
 
427 427
     return $bean;
@@ -447,7 +447,7 @@  discard block
 block discarded – undo
447 447
         if($pl_subs->name == $_REQUEST['wiz_step3_subscription_name']){
448 448
             $pl_list[] = $pl_subs;
449 449
             $create_new = false;
450
-       }
450
+        }
451 451
 
452 452
     }
453 453
     //create new bio if one was not retrieved successfully
@@ -475,7 +475,7 @@  discard block
 block discarded – undo
475 475
         if($pl_un_subs->name == $_REQUEST['wiz_step3_unsubscription_name']){
476 476
             $pl_list[] = $pl_un_subs;
477 477
             $create_new = false;
478
-       }
478
+        }
479 479
 
480 480
     }
481 481
     //create new bean if one was not retrieved successfully
Please login to merge, or discard this patch.
Spacing   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
2
+if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 3
 /*********************************************************************************
4 4
  * SugarCRM Community Edition is a customer relationship management program developed by
5 5
  * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
@@ -51,10 +51,10 @@  discard block
 block discarded – undo
51 51
 
52 52
     //create new campaign bean and populate
53 53
     $campaign_focus = new Campaign();
54
-    if(isset($_REQUEST['record']) && $_REQUEST['record'] && !(isset($_REQUEST['campaign_id']) && $_REQUEST['campaign_id'])) {
54
+    if (isset($_REQUEST['record']) && $_REQUEST['record'] && !(isset($_REQUEST['campaign_id']) && $_REQUEST['campaign_id'])) {
55 55
         $campaign_focus->retrieve($_REQUEST['record']);
56 56
     }
57
-    else if(isset($_REQUEST['campaign_id']) && $_REQUEST['campaign_id']) {
57
+    else if (isset($_REQUEST['campaign_id']) && $_REQUEST['campaign_id']) {
58 58
         $campaign_focus->retrieve($_REQUEST['campaign_id']);
59 59
     }
60 60
 
@@ -63,11 +63,11 @@  discard block
 block discarded – undo
63 63
 
64 64
     $campaign_focus = populateFromPost('', $campaign_focus);
65 65
 
66
-    foreach($camp_steps as $step){
67
-       $campaign_focus =  populate_wizard_bean_from_request($campaign_focus,$step);
66
+    foreach ($camp_steps as $step) {
67
+       $campaign_focus = populate_wizard_bean_from_request($campaign_focus, $step);
68 68
     }
69 69
 
70
-    switch($_REQUEST['currentstep']) {
70
+    switch ($_REQUEST['currentstep']) {
71 71
         case 1;
72 72
             //save here so we can link relationships
73 73
             $campaign_focus->save();
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
             break;
77 77
         case 2;
78 78
             //process subscription lists if this is a newsletter
79
-            if($campaign_focus->campaign_type =='NewsLetter'){
79
+            if ($campaign_focus->campaign_type == 'NewsLetter') {
80 80
                 $pl_list = process_subscriptions_from_request($campaign_focus->name);
81 81
 
82 82
                 $campaign_focus->load_relationship('prospectlists');
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
                 $ui_ids = array();
85 85
 
86 86
                 //for each list returned, add the list to the relationship
87
-                foreach($pl_list as $pl){
87
+                foreach ($pl_list as $pl) {
88 88
                     $campaign_focus->prospectlists->add($pl->id);
89 89
                     //populate array with id's from UI'
90 90
                     $ui_ids[] = $pl->id;
@@ -92,30 +92,30 @@  discard block
 block discarded – undo
92 92
 
93 93
                 //now remove the lists that may have existed before, but were not specified in UI.
94 94
                 //this will enforce that Newsletters only have 3 available target lists.
95
-                foreach($existing_pls as $pl_del){
96
-                    if (!in_array($pl_del, $ui_ids)){
95
+                foreach ($existing_pls as $pl_del) {
96
+                    if (!in_array($pl_del, $ui_ids)) {
97 97
                         $campaign_focus->prospectlists->delete($campaign_focus->id, $pl_del);
98 98
                     }
99 99
                 }
100
-            } else{
100
+            } else {
101 101
                 //process target lists if this is not a newsletter
102 102
                 //remove Target Lists if defined
103 103
 
104
-                if(isset($_REQUEST['wiz_remove_target_list'])){
104
+                if (isset($_REQUEST['wiz_remove_target_list'])) {
105 105
 
106 106
                     $remove_target_strings = explode(",", $_REQUEST['wiz_remove_target_list']);
107
-                    foreach($remove_target_strings as $remove_trgt_string){
108
-                        if(!empty($remove_trgt_string)){
107
+                    foreach ($remove_target_strings as $remove_trgt_string) {
108
+                        if (!empty($remove_trgt_string)) {
109 109
                             //load relationship and add to the list
110 110
                             $campaign_focus->load_relationship('prospectlists');
111
-                            $campaign_focus->prospectlists->delete($campaign_focus->id,$remove_trgt_string);
111
+                            $campaign_focus->prospectlists->delete($campaign_focus->id, $remove_trgt_string);
112 112
                         }
113 113
                     }
114 114
                 }
115 115
 
116 116
 
117 117
                 //create new campaign tracker and save if defined
118
-                if(isset($_REQUEST['wiz_list_of_targets'])) {
118
+                if (isset($_REQUEST['wiz_list_of_targets'])) {
119 119
                     $target_strings = explode(",", $_REQUEST['wiz_list_of_targets']);
120 120
                     foreach ($target_strings as $trgt_string) {
121 121
                         $target_values = explode("@@", $trgt_string);
@@ -152,27 +152,27 @@  discard block
 block discarded – undo
152 152
 
153 153
 
154 154
             //remove campaign trackers if defined
155
-            if(isset($_REQUEST['wiz_remove_tracker_list'])) {
155
+            if (isset($_REQUEST['wiz_remove_tracker_list'])) {
156 156
 
157 157
                 $remove_tracker_strings = explode(",", $_REQUEST['wiz_remove_tracker_list']);
158
-                foreach($remove_tracker_strings as $remove_trkr_string){
159
-                    if(!empty($remove_trkr_string)){
158
+                foreach ($remove_tracker_strings as $remove_trkr_string) {
159
+                    if (!empty($remove_trkr_string)) {
160 160
                         //load relationship and add to the list
161 161
                         $campaign_focus->load_relationship('tracked_urls');
162
-                        $campaign_focus->tracked_urls->delete($campaign_focus->id,$remove_trkr_string);
162
+                        $campaign_focus->tracked_urls->delete($campaign_focus->id, $remove_trkr_string);
163 163
                     }
164 164
                 }
165 165
             }
166 166
 
167 167
 
168 168
             //save  campaign trackers and save if defined
169
-            if(isset($_REQUEST['wiz_list_of_existing_trackers'])) {
169
+            if (isset($_REQUEST['wiz_list_of_existing_trackers'])) {
170 170
                 $tracker_strings = explode(",", $_REQUEST['wiz_list_of_existing_trackers']);
171
-                foreach($tracker_strings as $trkr_string){
171
+                foreach ($tracker_strings as $trkr_string) {
172 172
                     $tracker_values = explode("@@", $trkr_string);
173 173
                     $ct_focus = new CampaignTracker();
174 174
                     $ct_focus->retrieve($tracker_values[0]);
175
-                    if(!empty($ct_focus->tracker_name)){
175
+                    if (!empty($ct_focus->tracker_name)) {
176 176
                         $ct_focus->tracker_name = $tracker_values[1];
177 177
                         $ct_focus->is_optout = $tracker_values[2];
178 178
                         $ct_focus->tracker_url = $tracker_values[3];
@@ -187,11 +187,11 @@  discard block
 block discarded – undo
187 187
 
188 188
 
189 189
             //create new campaign tracker and save if defined
190
-            if(isset($_REQUEST['wiz_list_of_trackers'])){
190
+            if (isset($_REQUEST['wiz_list_of_trackers'])) {
191 191
                 $tracker_strings = explode(",", $_REQUEST['wiz_list_of_trackers']);
192
-                foreach($tracker_strings as $trkr_string){
192
+                foreach ($tracker_strings as $trkr_string) {
193 193
                     $tracker_values = explode("@@", $trkr_string);
194
-                    if(count($tracker_values)==3){
194
+                    if (count($tracker_values) == 3) {
195 195
                         $ct_focus = new CampaignTracker();
196 196
                         $ct_focus->tracker_name = $tracker_values[0];
197 197
                         $ct_focus->is_optout = $tracker_values[1];
@@ -216,9 +216,9 @@  discard block
 block discarded – undo
216 216
 
217 217
             $action = '';
218 218
             $redirectToTargetList = '';
219
-            if(isset($_REQUEST['wiz_direction'])){
219
+            if (isset($_REQUEST['wiz_direction'])) {
220 220
 
221
-                switch($_REQUEST['wiz_direction']) {
221
+                switch ($_REQUEST['wiz_direction']) {
222 222
                     case 'continue':
223 223
                     $action = 'WizardMarketing';
224 224
                         break;
@@ -230,14 +230,14 @@  discard block
 block discarded – undo
230 230
                          $action = 'WizardMarketing';
231 231
                         break;
232 232
                 }
233
-            }else{
233
+            } else {
234 234
                 $action = 'WizardHome&record='.$campaign_focus->id;
235 235
             }
236 236
             //require_once('modules/Campaigns/WizardMarketing.php');
237 237
             $header_URL = "Location: index.php?return_module=Campaigns&module=Campaigns&action=".$action.$redirectToTargetList."&campaign_id=".$campaign_focus->id."&return_action=WizardNewsLetter&return_id=".$campaign_focus->id;
238 238
             $GLOBALS['log']->debug("about to post header URL of: $header_URL");
239 239
 
240
-            if(preg_match('/\s*Location:\s*(.*)$/', $header_URL, $matches)) {
240
+            if (preg_match('/\s*Location:\s*(.*)$/', $header_URL, $matches)) {
241 241
                 $href = $matches[1];
242 242
                 SugarApplication::redirect($href);
243 243
             }
@@ -248,7 +248,7 @@  discard block
 block discarded – undo
248 248
             break;
249 249
         case 3:
250 250
             //process subscription lists if this is a newsletter
251
-            if($campaign_focus->campaign_type =='NewsLetter'){
251
+            if ($campaign_focus->campaign_type == 'NewsLetter') {
252 252
                 $pl_list = process_subscriptions_from_request($campaign_focus->name);
253 253
 
254 254
                 $campaign_focus->load_relationship('prospectlists');
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
                 $ui_ids = array();
257 257
 
258 258
                 //for each list returned, add the list to the relationship
259
-                foreach($pl_list as $pl){
259
+                foreach ($pl_list as $pl) {
260 260
                     $campaign_focus->prospectlists->add($pl->id);
261 261
                     //populate array with id's from UI'
262 262
                     $ui_ids[] = $pl->id;
@@ -264,30 +264,30 @@  discard block
 block discarded – undo
264 264
 
265 265
                 //now remove the lists that may have existed before, but were not specified in UI.
266 266
                 //this will enforce that Newsletters only have 3 available target lists.
267
-                foreach($existing_pls as $pl_del){
268
-                    if (!in_array($pl_del, $ui_ids)){
267
+                foreach ($existing_pls as $pl_del) {
268
+                    if (!in_array($pl_del, $ui_ids)) {
269 269
                         $campaign_focus->prospectlists->delete($campaign_focus->id, $pl_del);
270 270
                     }
271 271
                 }
272
-            } else{
272
+            } else {
273 273
                 //process target lists if this is not a newsletter
274 274
                 //remove Target Lists if defined
275 275
 
276
-                if(isset($_REQUEST['wiz_remove_target_list'])){
276
+                if (isset($_REQUEST['wiz_remove_target_list'])) {
277 277
 
278 278
                     $remove_target_strings = explode(",", $_REQUEST['wiz_remove_target_list']);
279
-                    foreach($remove_target_strings as $remove_trgt_string){
280
-                        if(!empty($remove_trgt_string)){
279
+                    foreach ($remove_target_strings as $remove_trgt_string) {
280
+                        if (!empty($remove_trgt_string)) {
281 281
                             //load relationship and add to the list
282 282
                             $campaign_focus->load_relationship('prospectlists');
283
-                            $campaign_focus->prospectlists->delete($campaign_focus->id,$remove_trgt_string);
283
+                            $campaign_focus->prospectlists->delete($campaign_focus->id, $remove_trgt_string);
284 284
                         }
285 285
                     }
286 286
                 }
287 287
 
288 288
 
289 289
                 //create new campaign tracker and save if defined
290
-                if(isset($_REQUEST['wiz_list_of_targets'])) {
290
+                if (isset($_REQUEST['wiz_list_of_targets'])) {
291 291
                     $target_strings = explode(",", $_REQUEST['wiz_list_of_targets']);
292 292
                     foreach ($target_strings as $trgt_string) {
293 293
                         $target_values = explode("@@", $trgt_string);
@@ -324,27 +324,27 @@  discard block
 block discarded – undo
324 324
 
325 325
 
326 326
             //remove campaign trackers if defined
327
-            if(isset($_REQUEST['wiz_remove_tracker_list'])) {
327
+            if (isset($_REQUEST['wiz_remove_tracker_list'])) {
328 328
 
329 329
                 $remove_tracker_strings = explode(",", $_REQUEST['wiz_remove_tracker_list']);
330
-                foreach($remove_tracker_strings as $remove_trkr_string){
331
-                    if(!empty($remove_trkr_string)){
330
+                foreach ($remove_tracker_strings as $remove_trkr_string) {
331
+                    if (!empty($remove_trkr_string)) {
332 332
                         //load relationship and add to the list
333 333
                         $campaign_focus->load_relationship('tracked_urls');
334
-                        $campaign_focus->tracked_urls->delete($campaign_focus->id,$remove_trkr_string);
334
+                        $campaign_focus->tracked_urls->delete($campaign_focus->id, $remove_trkr_string);
335 335
                     }
336 336
                 }
337 337
             }
338 338
 
339 339
 
340 340
             //save  campaign trackers and save if defined
341
-            if(isset($_REQUEST['wiz_list_of_existing_trackers'])) {
341
+            if (isset($_REQUEST['wiz_list_of_existing_trackers'])) {
342 342
                 $tracker_strings = explode(",", $_REQUEST['wiz_list_of_existing_trackers']);
343
-                foreach($tracker_strings as $trkr_string){
343
+                foreach ($tracker_strings as $trkr_string) {
344 344
                     $tracker_values = explode("@@", $trkr_string);
345 345
                     $ct_focus = new CampaignTracker();
346 346
                     $ct_focus->retrieve($tracker_values[0]);
347
-                    if(!empty($ct_focus->tracker_name)){
347
+                    if (!empty($ct_focus->tracker_name)) {
348 348
                         $ct_focus->tracker_name = $tracker_values[1];
349 349
                         $ct_focus->is_optout = $tracker_values[2];
350 350
                         $ct_focus->tracker_url = $tracker_values[3];
@@ -359,11 +359,11 @@  discard block
 block discarded – undo
359 359
 
360 360
 
361 361
             //create new campaign tracker and save if defined
362
-            if(isset($_REQUEST['wiz_list_of_trackers'])){
362
+            if (isset($_REQUEST['wiz_list_of_trackers'])) {
363 363
                 $tracker_strings = explode(",", $_REQUEST['wiz_list_of_trackers']);
364
-                foreach($tracker_strings as $trkr_string){
364
+                foreach ($tracker_strings as $trkr_string) {
365 365
                     $tracker_values = explode("@@", $trkr_string);
366
-                    if(count($tracker_values)==3){
366
+                    if (count($tracker_values) == 3) {
367 367
                         $ct_focus = new CampaignTracker();
368 368
                         $ct_focus->tracker_name = $tracker_values[0];
369 369
                         $ct_focus->is_optout = $tracker_values[1];
@@ -388,9 +388,9 @@  discard block
 block discarded – undo
388 388
 
389 389
             $action = '';
390 390
             $redirectToTargetList = '';
391
-            if(isset($_REQUEST['wiz_direction'])){
391
+            if (isset($_REQUEST['wiz_direction'])) {
392 392
 
393
-                switch($_REQUEST['wiz_direction']) {
393
+                switch ($_REQUEST['wiz_direction']) {
394 394
                     case 'continue':
395 395
                         $action = 'WizardMarketing';
396 396
                         break;
@@ -402,13 +402,13 @@  discard block
 block discarded – undo
402 402
                         $action = 'WizardHome';
403 403
                         break;
404 404
                 }
405
-            }else{
405
+            } else {
406 406
                 $action = 'WizardHome&record='.$campaign_focus->id;
407 407
             }
408 408
             //require_once('modules/Campaigns/WizardMarketing.php');
409 409
             $header_URL = "Location: index.php?return_module=Campaigns&module=Campaigns&action=".$action.$redirectToTargetList."&campaign_id=".$campaign_focus->id."&record=".$campaign_focus->id;
410 410
             $GLOBALS['log']->debug("about to post header URL of: $header_URL");
411
-            if(preg_match('/\s*Location:\s*(.*)$/', $header_URL, $matches)) {
411
+            if (preg_match('/\s*Location:\s*(.*)$/', $header_URL, $matches)) {
412 412
                 $href = $matches[1];
413 413
                 SugarApplication::redirect($href);
414 414
             }
@@ -425,12 +425,12 @@  discard block
 block discarded – undo
425 425
  * This function will populate the passed in bean with the post variables
426 426
  * that contain the specified prefix
427 427
  */
428
-function populate_wizard_bean_from_request($bean,$prefix){
429
-    foreach($_REQUEST as $key=> $val){
428
+function populate_wizard_bean_from_request($bean, $prefix) {
429
+    foreach ($_REQUEST as $key=> $val) {
430 430
      $key = trim($key);
431
-     if((strstr($key, $prefix )) && (strpos($key, $prefix )== 0)){
432
-          $field  =substr($key, strlen($prefix)) ;
433
-          if(isset($_REQUEST[$key]) && !empty($_REQUEST[$key])){
431
+     if ((strstr($key, $prefix)) && (strpos($key, $prefix) == 0)) {
432
+          $field = substr($key, strlen($prefix));
433
+          if (isset($_REQUEST[$key]) && !empty($_REQUEST[$key])) {
434 434
               //echo "prefix is $prefix, field is $field,    key is $key,   and value is $val<br>";
435 435
               $value = $_REQUEST[$key];
436 436
               $bean->$field = $value;
@@ -447,34 +447,34 @@  discard block
 block discarded – undo
447 447
  * If no prospect lists have been specified, then it will create one for you.  A total of 3 prospect lists
448 448
  * will be created for you (Subscription, Unsubscription, and test)
449 449
  */
450
-function process_subscriptions_from_request($campaign_name){
450
+function process_subscriptions_from_request($campaign_name) {
451 451
     global $mod_strings;
452 452
     $pl_list = array();
453 453
 
454 454
     //process default target list
455 455
     $create_new = true;
456 456
     $pl_subs = new ProspectList($campaign_name);
457
-    if(!empty($_REQUEST['wiz_step3_subscription_list_id'])){
457
+    if (!empty($_REQUEST['wiz_step3_subscription_list_id'])) {
458 458
         //if subscription list is specified then attach
459 459
         $pl_subs->retrieve($_REQUEST['wiz_step3_subscription_list_id']);
460 460
         //check to see name matches the bean, if not, then the user has chosen to create new bean
461
-        if($pl_subs->name == $_REQUEST['wiz_step3_subscription_name']){
461
+        if ($pl_subs->name == $_REQUEST['wiz_step3_subscription_name']) {
462 462
             $pl_list[] = $pl_subs;
463 463
             $create_new = false;
464 464
        }
465 465
 
466 466
     }
467 467
     //create new bio if one was not retrieved successfully
468
-    if($create_new){
468
+    if ($create_new) {
469 469
         //use default name if one has not been specified
470
-        $name = $campaign_name . " ".$mod_strings['LBL_SUBSCRIPTION_LIST'];
471
-        if(isset($_REQUEST['wiz_step3_subscription_name']) && !empty($_REQUEST['wiz_step3_subscription_name'])){
470
+        $name = $campaign_name." ".$mod_strings['LBL_SUBSCRIPTION_LIST'];
471
+        if (isset($_REQUEST['wiz_step3_subscription_name']) && !empty($_REQUEST['wiz_step3_subscription_name'])) {
472 472
             $name = $_REQUEST['wiz_step3_subscription_name'];
473 473
         }
474 474
         //if subscription list is not specified then create and attach default one
475 475
         $pl_subs->name = $name;
476 476
         $pl_subs->list_type = 'default';
477
-        $pl_subs->assigned_user_id= $GLOBALS['current_user']->id;
477
+        $pl_subs->assigned_user_id = $GLOBALS['current_user']->id;
478 478
         $pl_subs->save();
479 479
         $pl_list[] = $pl_subs;
480 480
     }
@@ -482,27 +482,27 @@  discard block
 block discarded – undo
482 482
     //process exempt target list
483 483
     $create_new = true;
484 484
     $pl_un_subs = new ProspectList();
485
-    if(!empty($_REQUEST['wiz_step3_unsubscription_list_id'])){
485
+    if (!empty($_REQUEST['wiz_step3_unsubscription_list_id'])) {
486 486
         //if unsubscription list is specified then attach
487 487
         $pl_un_subs->retrieve($_REQUEST['wiz_step3_unsubscription_list_id']);
488 488
         //check to see name matches the bean, if not, then the user has chosen to create new bean
489
-        if($pl_un_subs->name == $_REQUEST['wiz_step3_unsubscription_name']){
489
+        if ($pl_un_subs->name == $_REQUEST['wiz_step3_unsubscription_name']) {
490 490
             $pl_list[] = $pl_un_subs;
491 491
             $create_new = false;
492 492
        }
493 493
 
494 494
     }
495 495
     //create new bean if one was not retrieved successfully
496
-    if($create_new){
496
+    if ($create_new) {
497 497
         //use default name if one has not been specified
498
-        $name = $campaign_name . " ".$mod_strings['LBL_UNSUBSCRIPTION_LIST'];
499
-        if(isset($_REQUEST['wiz_step3_unsubscription_name']) && !empty($_REQUEST['wiz_step3_unsubscription_name'])){
498
+        $name = $campaign_name." ".$mod_strings['LBL_UNSUBSCRIPTION_LIST'];
499
+        if (isset($_REQUEST['wiz_step3_unsubscription_name']) && !empty($_REQUEST['wiz_step3_unsubscription_name'])) {
500 500
             $name = $_REQUEST['wiz_step3_unsubscription_name'];
501 501
         }
502 502
         //if unsubscription list is not specified then create and attach default one
503 503
         $pl_un_subs->name = $name;
504 504
         $pl_un_subs->list_type = 'exempt';
505
-        $pl_un_subs->assigned_user_id= $GLOBALS['current_user']->id;
505
+        $pl_un_subs->assigned_user_id = $GLOBALS['current_user']->id;
506 506
         $pl_un_subs->save();
507 507
         $pl_list[] = $pl_un_subs;
508 508
     }
@@ -510,26 +510,26 @@  discard block
 block discarded – undo
510 510
     //process test target list
511 511
     $pl_test = new ProspectList();
512 512
     $create_new = true;
513
-    if(!empty($_REQUEST['wiz_step3_test_list_id'])){
513
+    if (!empty($_REQUEST['wiz_step3_test_list_id'])) {
514 514
         //if test list is specified then attach
515 515
         $pl_test->retrieve($_REQUEST['wiz_step3_test_list_id']);
516 516
         //check to see name matches the bean, if not, then the user has chosen to create new bean
517
-        if($pl_test->name == $_REQUEST['wiz_step3_test_name']){
517
+        if ($pl_test->name == $_REQUEST['wiz_step3_test_name']) {
518 518
             $pl_list[] = $pl_test;
519 519
             $create_new = false;
520 520
         }
521 521
     }
522 522
     //create new bio if one was not retrieved successfully
523
-    if($create_new){
523
+    if ($create_new) {
524 524
         //use default name if one has not been specified
525
-        $name = $campaign_name . " ".$mod_strings['LBL_TEST_LIST'];
526
-        if(isset($_REQUEST['wiz_step3_test_name']) && !empty($_REQUEST['wiz_step3_test_name'])){
525
+        $name = $campaign_name." ".$mod_strings['LBL_TEST_LIST'];
526
+        if (isset($_REQUEST['wiz_step3_test_name']) && !empty($_REQUEST['wiz_step3_test_name'])) {
527 527
             $name = $_REQUEST['wiz_step3_test_name'];
528 528
         }
529 529
         //if test list is not specified then create and attach default one
530 530
         $pl_test->name = $name;
531 531
         $pl_test->list_type = 'test';
532
-        $pl_test->assigned_user_id= $GLOBALS['current_user']->id;
532
+        $pl_test->assigned_user_id = $GLOBALS['current_user']->id;
533 533
         $pl_test->save();
534 534
         $pl_list[] = $pl_test;
535 535
     }
Please login to merge, or discard this patch.
data/SugarBean.php 1 patch
Spacing   +207 added lines, -207 removed lines patch added patch discarded remove patch
@@ -311,17 +311,17 @@  discard block
 block discarded – undo
311 311
                     $this->optimistic_lock = true;
312 312
                 }
313 313
             }
314
-            $loaded_defs[$this->object_name]['column_fields'] =& $this->column_fields;
315
-            $loaded_defs[$this->object_name]['list_fields'] =& $this->list_fields;
316
-            $loaded_defs[$this->object_name]['required_fields'] =& $this->required_fields;
317
-            $loaded_defs[$this->object_name]['field_name_map'] =& $this->field_name_map;
318
-            $loaded_defs[$this->object_name]['field_defs'] =& $this->field_defs;
314
+            $loaded_defs[$this->object_name]['column_fields'] = & $this->column_fields;
315
+            $loaded_defs[$this->object_name]['list_fields'] = & $this->list_fields;
316
+            $loaded_defs[$this->object_name]['required_fields'] = & $this->required_fields;
317
+            $loaded_defs[$this->object_name]['field_name_map'] = & $this->field_name_map;
318
+            $loaded_defs[$this->object_name]['field_defs'] = & $this->field_defs;
319 319
         } else {
320
-            $this->column_fields =& $loaded_defs[$this->object_name]['column_fields'];
321
-            $this->list_fields =& $loaded_defs[$this->object_name]['list_fields'];
322
-            $this->required_fields =& $loaded_defs[$this->object_name]['required_fields'];
323
-            $this->field_name_map =& $loaded_defs[$this->object_name]['field_name_map'];
324
-            $this->field_defs =& $loaded_defs[$this->object_name]['field_defs'];
320
+            $this->column_fields = & $loaded_defs[$this->object_name]['column_fields'];
321
+            $this->list_fields = & $loaded_defs[$this->object_name]['list_fields'];
322
+            $this->required_fields = & $loaded_defs[$this->object_name]['required_fields'];
323
+            $this->field_name_map = & $loaded_defs[$this->object_name]['field_name_map'];
324
+            $this->field_defs = & $loaded_defs[$this->object_name]['field_defs'];
325 325
             $this->added_custom_field_defs = true;
326 326
 
327 327
             if (!isset($this->custom_fields) &&
@@ -343,9 +343,9 @@  discard block
 block discarded – undo
343 343
     /**
344 344
      * @deprecated deprecated since version 7.6, PHP4 Style Constructors are deprecated and will be remove in 7.8, please update your code, use __construct instead
345 345
      */
346
-    public function SugarBean(){
346
+    public function SugarBean() {
347 347
         $deprecatedMessage = 'PHP4 Style Constructors are deprecated and will be remove in 7.8, please update your code';
348
-        if(isset($GLOBALS['log'])) {
348
+        if (isset($GLOBALS['log'])) {
349 349
             $GLOBALS['log']->deprecated($deprecatedMessage);
350 350
         }
351 351
         else {
@@ -457,14 +457,14 @@  discard block
 block discarded – undo
457 457
     {
458 458
         //load the module dictionary if not supplied.
459 459
         if ((!isset($dictionary) or empty($dictionary)) && !empty($module_dir)) {
460
-            $filename = 'modules/' . $module_dir . '/vardefs.php';
460
+            $filename = 'modules/'.$module_dir.'/vardefs.php';
461 461
             if (file_exists($filename)) {
462 462
                 include($filename);
463 463
             }
464 464
         }
465 465
         if (!is_array($dictionary) or !array_key_exists($key, $dictionary)) {
466
-            $GLOBALS['log']->fatal("removeRelationshipMeta: Metadata for table " . $tablename . " does not exist");
467
-            display_notice("meta data absent for table " . $tablename . " keyed to $key ");
466
+            $GLOBALS['log']->fatal("removeRelationshipMeta: Metadata for table ".$tablename." does not exist");
467
+            display_notice("meta data absent for table ".$tablename." keyed to $key ");
468 468
         } else {
469 469
             if (isset($dictionary[$key]['relationships'])) {
470 470
                 $RelationshipDefs = $dictionary[$key]['relationships'];
@@ -495,7 +495,7 @@  discard block
 block discarded – undo
495 495
         //load the module dictionary if not supplied.
496 496
         if (empty($dictionary) && !empty($module_dir)) {
497 497
             if ($is_custom) {
498
-                $filename = 'custom/modules/' . $module_dir . '/Ext/Vardefs/vardefs.ext.php';
498
+                $filename = 'custom/modules/'.$module_dir.'/Ext/Vardefs/vardefs.ext.php';
499 499
             } else {
500 500
                 if ($key == 'User') {
501 501
                     // a very special case for the Employees module
@@ -503,7 +503,7 @@  discard block
 block discarded – undo
503 503
                     // Users/vardefs.php
504 504
                     $filename = 'modules/Users/vardefs.php';
505 505
                 } else {
506
-                    $filename = 'modules/' . $module_dir . '/vardefs.php';
506
+                    $filename = 'modules/'.$module_dir.'/vardefs.php';
507 507
                 }
508 508
             }
509 509
 
@@ -514,14 +514,14 @@  discard block
 block discarded – undo
514 514
                     $dictionary = $GLOBALS['dictionary'];
515 515
                 }
516 516
             } else {
517
-                $GLOBALS['log']->debug("createRelationshipMeta: no metadata file found" . $filename);
517
+                $GLOBALS['log']->debug("createRelationshipMeta: no metadata file found".$filename);
518 518
                 return;
519 519
             }
520 520
         }
521 521
 
522 522
         if (!is_array($dictionary) or !array_key_exists($key, $dictionary)) {
523
-            $GLOBALS['log']->fatal("createRelationshipMeta: Metadata for table " . $tablename . " does not exist");
524
-            display_notice("meta data absent for table " . $tablename . " keyed to $key ");
523
+            $GLOBALS['log']->fatal("createRelationshipMeta: Metadata for table ".$tablename." does not exist");
524
+            display_notice("meta data absent for table ".$tablename." keyed to $key ");
525 525
         } else {
526 526
             if (isset($dictionary[$key]['relationships'])) {
527 527
                 $RelationshipDefs = $dictionary[$key]['relationships'];
@@ -530,18 +530,18 @@  discard block
 block discarded – undo
530 530
                 $beanList_ucase = array_change_key_case($beanList, CASE_UPPER);
531 531
                 foreach ($RelationshipDefs as $rel_name => $rel_def) {
532 532
                     if (isset($rel_def['lhs_module']) and !isset($beanList_ucase[strtoupper($rel_def['lhs_module'])])) {
533
-                        $GLOBALS['log']->debug('skipping orphaned relationship record ' . $rel_name . ' lhs module is missing ' . $rel_def['lhs_module']);
533
+                        $GLOBALS['log']->debug('skipping orphaned relationship record '.$rel_name.' lhs module is missing '.$rel_def['lhs_module']);
534 534
                         continue;
535 535
                     }
536 536
                     if (isset($rel_def['rhs_module']) and !isset($beanList_ucase[strtoupper($rel_def['rhs_module'])])) {
537
-                        $GLOBALS['log']->debug('skipping orphaned relationship record ' . $rel_name . ' rhs module is missing ' . $rel_def['rhs_module']);
537
+                        $GLOBALS['log']->debug('skipping orphaned relationship record '.$rel_name.' rhs module is missing '.$rel_def['rhs_module']);
538 538
                         continue;
539 539
                     }
540 540
 
541 541
 
542 542
                     //check whether relationship exists or not first.
543 543
                     if (Relationship::exists($rel_name, $db)) {
544
-                        $GLOBALS['log']->debug('Skipping, relationship already exists ' . $rel_name);
544
+                        $GLOBALS['log']->debug('Skipping, relationship already exists '.$rel_name);
545 545
                     } else {
546 546
                         $seed = BeanFactory::getBean("Relationships");
547 547
                         $keys = array_keys($seed->field_defs);
@@ -559,10 +559,10 @@  discard block
 block discarded – undo
559 559
 
560 560
 
561 561
                         $column_list = implode(",", array_keys($toInsert));
562
-                        $value_list = "'" . implode("','", array_values($toInsert)) . "'";
562
+                        $value_list = "'".implode("','", array_values($toInsert))."'";
563 563
 
564 564
                         //create the record. todo add error check.
565
-                        $insert_string = "INSERT into relationships (" . $column_list . ") values (" . $value_list . ")";
565
+                        $insert_string = "INSERT into relationships (".$column_list.") values (".$value_list.")";
566 566
                         $db->query($insert_string, true);
567 567
                     }
568 568
                 }
@@ -638,11 +638,11 @@  discard block
 block discarded – undo
638 638
                     $tmp_final_query = $parentbean->$shortcut_function_name();
639 639
                 }
640 640
                 if (!$first) {
641
-                    $final_query_rows .= ' UNION ALL ( ' . $parentbean->create_list_count_query($tmp_final_query, $parameters) . ' )';
642
-                    $final_query .= ' UNION ALL ( ' . $tmp_final_query . ' )';
641
+                    $final_query_rows .= ' UNION ALL ( '.$parentbean->create_list_count_query($tmp_final_query, $parameters).' )';
642
+                    $final_query .= ' UNION ALL ( '.$tmp_final_query.' )';
643 643
                 } else {
644
-                    $final_query_rows = '(' . $parentbean->create_list_count_query($tmp_final_query, $parameters) . ')';
645
-                    $final_query = '(' . $tmp_final_query . ')';
644
+                    $final_query_rows = '('.$parentbean->create_list_count_query($tmp_final_query, $parameters).')';
645
+                    $final_query = '('.$tmp_final_query.')';
646 646
                     $first = false;
647 647
                 }
648 648
             }
@@ -673,32 +673,32 @@  discard block
 block discarded – undo
673 673
                 }
674 674
                 $subquery['select'] = substr($subquery['select'], 0, strlen($subquery['select']) - 1);
675 675
                 //Put the query into the final_query
676
-                $query = $subquery['select'] . " " . $subquery['from'] . " " . $subquery['where'];
676
+                $query = $subquery['select']." ".$subquery['from']." ".$subquery['where'];
677 677
                 if (!$first) {
678
-                    $query = ' UNION ALL ( ' . $query . ' )';
678
+                    $query = ' UNION ALL ( '.$query.' )';
679 679
                     $final_query_rows .= " UNION ALL ";
680 680
                 } else {
681
-                    $query = '(' . $query . ')';
681
+                    $query = '('.$query.')';
682 682
                     $first = false;
683 683
                 }
684 684
                 $query_array = $subquery['query_array'];
685 685
                 $select_position = strpos($query_array['select'], "SELECT");
686 686
                 $distinct_position = strpos($query_array['select'], "DISTINCT");
687 687
                 if (!empty($subquery['params']['distinct']) && !empty($subpanel_def->table_name)) {
688
-                    $query_rows = "( SELECT count(DISTINCT " . $subpanel_def->table_name . ".id)" . $subquery['from_min'] . $query_array['join'] . $subquery['where'] . ' )';
688
+                    $query_rows = "( SELECT count(DISTINCT ".$subpanel_def->table_name.".id)".$subquery['from_min'].$query_array['join'].$subquery['where'].' )';
689 689
                 } elseif ($select_position !== false && $distinct_position != false) {
690
-                    $query_rows = "( " . substr_replace($query_array['select'], "SELECT count(", $select_position, 6) . ")" . $subquery['from_min'] . $query_array['join'] . $subquery['where'] . ' )';
690
+                    $query_rows = "( ".substr_replace($query_array['select'], "SELECT count(", $select_position, 6).")".$subquery['from_min'].$query_array['join'].$subquery['where'].' )';
691 691
                 } else {
692 692
                     //resort to default behavior.
693
-                    $query_rows = "( SELECT count(*)" . $subquery['from_min'] . $query_array['join'] . $subquery['where'] . ' )';
693
+                    $query_rows = "( SELECT count(*)".$subquery['from_min'].$query_array['join'].$subquery['where'].' )';
694 694
                 }
695 695
                 if (!empty($subquery['secondary_select'])) {
696
-                    $subquerystring = $subquery['secondary_select'] . $subquery['secondary_from'] . $query_array['join'] . $subquery['where'];
696
+                    $subquerystring = $subquery['secondary_select'].$subquery['secondary_from'].$query_array['join'].$subquery['where'];
697 697
                     if (!empty($subquery['secondary_where'])) {
698 698
                         if (empty($subquery['where'])) {
699
-                            $subquerystring .= " WHERE " . $subquery['secondary_where'];
699
+                            $subquerystring .= " WHERE ".$subquery['secondary_where'];
700 700
                         } else {
701
-                            $subquerystring .= " AND " . $subquery['secondary_where'];
701
+                            $subquerystring .= " AND ".$subquery['secondary_where'];
702 702
                         }
703 703
                     }
704 704
                     $secondary_queries[] = $subquerystring;
@@ -721,12 +721,12 @@  discard block
 block discarded – undo
721 721
             }
722 722
 
723 723
             if (!empty($sort_order)) {
724
-                $order_by .= ' ' . $sort_order;
724
+                $order_by .= ' '.$sort_order;
725 725
             }
726 726
 
727 727
             $order_by = $parentbean->process_order_by($order_by, $submodule, $suppress_table_name);
728 728
             if (!empty($order_by)) {
729
-                $final_query .= ' ORDER BY ' . $order_by;
729
+                $final_query .= ' ORDER BY '.$order_by;
730 730
             }
731 731
         }
732 732
 
@@ -794,7 +794,7 @@  discard block
 block discarded – undo
794 794
                     if (empty($where_definition)) {
795 795
                         $where_definition = $table_where;
796 796
                     } else {
797
-                        $where_definition .= ' AND ' . $table_where;
797
+                        $where_definition .= ' AND '.$table_where;
798 798
                     }
799 799
                 }
800 800
 
@@ -815,7 +815,7 @@  discard block
 block discarded – undo
815 815
 
816 816
 
817 817
                 if (!$subpanel_def->isCollection() && isset($list_fields[$order_by]) && isset($submodule->field_defs[$order_by]) && (!isset($submodule->field_defs[$order_by]['source']) || $submodule->field_defs[$order_by]['source'] == 'db')) {
818
-                    $order_by = $submodule->table_name . '.' . $order_by;
818
+                    $order_by = $submodule->table_name.'.'.$order_by;
819 819
                 }
820 820
                 $table_name = $this_subpanel->table_name;
821 821
                 $panel_name = $this_subpanel->name;
@@ -831,8 +831,8 @@  discard block
 block discarded – undo
831 831
 
832 832
                 $subquery = $submodule->create_new_list_query('', $subwhere, $list_fields, $params, 0, '', true, $parentbean, $singleSelect);
833 833
 
834
-                $subquery['select'] = $subquery['select'] . " , '$panel_name' panel_name ";
835
-                $subquery['from'] = $subquery['from'] . $query_array['join'];
834
+                $subquery['select'] = $subquery['select']." , '$panel_name' panel_name ";
835
+                $subquery['from'] = $subquery['from'].$query_array['join'];
836 836
                 $subquery['query_array'] = $query_array;
837 837
                 $subquery['params'] = $params;
838 838
 
@@ -870,7 +870,7 @@  discard block
 block discarded – undo
870 870
         $use_count_query = false;
871 871
         $processing_collection = $subpanel_def->isCollection();
872 872
 
873
-        $GLOBALS['log']->debug("process_union_list_query: " . $query);
873
+        $GLOBALS['log']->debug("process_union_list_query: ".$query);
874 874
         if ($max_per_page == -1) {
875 875
             $max_per_page = $sugar_config['list_max_entries_per_subpanel'];
876 876
         }
@@ -947,9 +947,9 @@  discard block
 block discarded – undo
947 947
                         if (isset($row[$field])) {
948 948
                             $current_bean->$field = $this->convertField($row[$field], $value);
949 949
                             unset($row[$field]);
950
-                        } elseif (isset($row[$this->table_name . '.' . $field])) {
951
-                            $current_bean->$field = $this->convertField($row[$this->table_name . '.' . $field], $value);
952
-                            unset($row[$this->table_name . '.' . $field]);
950
+                        } elseif (isset($row[$this->table_name.'.'.$field])) {
951
+                            $current_bean->$field = $this->convertField($row[$this->table_name.'.'.$field], $value);
952
+                            unset($row[$this->table_name.'.'.$field]);
953 953
                         } else {
954 954
                             $current_bean->$field = "";
955 955
                             unset($row[$field]);
@@ -1116,7 +1116,7 @@  discard block
 block discarded – undo
1116 1116
                         $class = $beanList[$child_info['parent_type']];
1117 1117
                         // Added to avoid error below; just silently fail and write message to log
1118 1118
                         if (empty($beanFiles[$class])) {
1119
-                            $GLOBALS['log']->error($this->object_name . '::retrieve_parent_fields() - cannot load class "' . $class . '", skip loading.');
1119
+                            $GLOBALS['log']->error($this->object_name.'::retrieve_parent_fields() - cannot load class "'.$class.'", skip loading.');
1120 1120
                             continue;
1121 1121
                         }
1122 1122
                         require_once($beanFiles[$class]);
@@ -1127,7 +1127,7 @@  discard block
 block discarded – undo
1127 1127
                         $queries[$child_info['parent_type']] = "SELECT id ";
1128 1128
                         $field_def = $templates[$child_info['parent_type']]->field_defs['name'];
1129 1129
                         if (isset($field_def['db_concat_fields'])) {
1130
-                            $queries[$child_info['parent_type']] .= ' , ' . $this->db->concat($templates[$child_info['parent_type']]->table_name, $field_def['db_concat_fields']) . ' parent_name';
1130
+                            $queries[$child_info['parent_type']] .= ' , '.$this->db->concat($templates[$child_info['parent_type']]->table_name, $field_def['db_concat_fields']).' parent_name';
1131 1131
                         } else {
1132 1132
                             $queries[$child_info['parent_type']] .= ' , name parent_name';
1133 1133
                         }
@@ -1137,7 +1137,7 @@  discard block
 block discarded – undo
1137 1137
                         } elseif (isset($templates[$child_info['parent_type']]->field_defs['created_by'])) {
1138 1138
                             $queries[$child_info['parent_type']] .= ", created_by parent_name_owner, '{$child_info['parent_type']}' parent_name_mod";
1139 1139
                         }
1140
-                        $queries[$child_info['parent_type']] .= " FROM " . $templates[$child_info['parent_type']]->table_name . " WHERE id IN ('{$child_info['parent_id']}'";
1140
+                        $queries[$child_info['parent_type']] .= " FROM ".$templates[$child_info['parent_type']]->table_name." WHERE id IN ('{$child_info['parent_id']}'";
1141 1141
                     } else {
1142 1142
                         if (empty($parent_child_map[$child_info['parent_id']])) {
1143 1143
                             $queries[$child_info['parent_type']] .= " ,'{$child_info['parent_id']}'";
@@ -1149,7 +1149,7 @@  discard block
 block discarded – undo
1149 1149
         }
1150 1150
         $results = array();
1151 1151
         foreach ($queries as $query) {
1152
-            $result = $this->db->query($query . ')');
1152
+            $result = $this->db->query($query.')');
1153 1153
             while ($row = $this->db->fetchByAssoc($result)) {
1154 1154
                 $results[$row['id']] = $row;
1155 1155
             }
@@ -1234,7 +1234,7 @@  discard block
 block discarded – undo
1234 1234
      */
1235 1235
     public function get_custom_table_name()
1236 1236
     {
1237
-        return $this->getTableName() . '_cstm';
1237
+        return $this->getTableName().'_cstm';
1238 1238
     }
1239 1239
 
1240 1240
     /**
@@ -1474,7 +1474,7 @@  discard block
 block discarded – undo
1474 1474
      */
1475 1475
     public function load_relationship($rel_name)
1476 1476
     {
1477
-        $GLOBALS['log']->debug("SugarBean[{$this->object_name}].load_relationships, Loading relationship (" . $rel_name . ").");
1477
+        $GLOBALS['log']->debug("SugarBean[{$this->object_name}].load_relationships, Loading relationship (".$rel_name.").");
1478 1478
 
1479 1479
         if (empty($rel_name)) {
1480 1480
             $GLOBALS['log']->error("SugarBean.load_relationships, Null relationship name passed.");
@@ -1509,7 +1509,7 @@  discard block
 block discarded – undo
1509 1509
                 return true;
1510 1510
             }
1511 1511
         }
1512
-        $GLOBALS['log']->debug("SugarBean.load_relationships, Error Loading relationship (" . $rel_name . ")");
1512
+        $GLOBALS['log']->debug("SugarBean.load_relationships, Error Loading relationship (".$rel_name.")");
1513 1513
         return false;
1514 1514
     }
1515 1515
 
@@ -1616,7 +1616,7 @@  discard block
 block discarded – undo
1616 1616
                         $idField = $value_array['id_name'];
1617 1617
                         if (isset($fieldDefs[$idField]) && isset($fieldDefs[$idField]['type']) && $fieldDefs[$idField]['type'] == 'link') {
1618 1618
                             $tmpFieldDefs = $fieldDefs[$idField];
1619
-                            $tmpFieldDefs['vname'] = translate($value_array['vname'], $this->module_dir) . " " . $GLOBALS['app_strings']['LBL_ID'];
1619
+                            $tmpFieldDefs['vname'] = translate($value_array['vname'], $this->module_dir)." ".$GLOBALS['app_strings']['LBL_ID'];
1620 1620
                             $importableFields[$idField] = $tmpFieldDefs;
1621 1621
                         }
1622 1622
                     }
@@ -1640,8 +1640,8 @@  discard block
 block discarded – undo
1640 1640
 
1641 1641
         $key = $this->getObjectName();
1642 1642
         if (!array_key_exists($key, $dictionary)) {
1643
-            $GLOBALS['log']->fatal("create_tables: Metadata for table " . $this->table_name . " does not exist");
1644
-            display_notice("meta data absent for table " . $this->table_name . " keyed to $key ");
1643
+            $GLOBALS['log']->fatal("create_tables: Metadata for table ".$this->table_name." does not exist");
1644
+            display_notice("meta data absent for table ".$this->table_name." keyed to $key ");
1645 1645
         } else {
1646 1646
             if (!$this->db->tableExists($this->table_name)) {
1647 1647
                 $this->db->createTable($this);
@@ -1702,7 +1702,7 @@  discard block
 block discarded – undo
1702 1702
      */
1703 1703
     public function get_audit_table_name()
1704 1704
     {
1705
-        return $this->getTableName() . '_audit';
1705
+        return $this->getTableName().'_audit';
1706 1706
     }
1707 1707
 
1708 1708
     /**
@@ -1720,7 +1720,7 @@  discard block
 block discarded – undo
1720 1720
         require('metadata/audit_templateMetaData.php');
1721 1721
 
1722 1722
         // Bug: 52583 Need ability to customize template for audit tables
1723
-        $custom = 'custom/metadata/audit_templateMetaData_' . $this->getTableName() . '.php';
1723
+        $custom = 'custom/metadata/audit_templateMetaData_'.$this->getTableName().'.php';
1724 1724
         if (file_exists($custom)) {
1725 1725
             require($custom);
1726 1726
         }
@@ -1730,7 +1730,7 @@  discard block
 block discarded – undo
1730 1730
 
1731 1731
         // Renaming template indexes to fit the particular audit table (removed the brittle hard coding)
1732 1732
         foreach ($indices as $nr => $properties) {
1733
-            $indices[$nr]['name'] = 'idx_' . strtolower($this->getTableName()) . '_' . $properties['name'];
1733
+            $indices[$nr]['name'] = 'idx_'.strtolower($this->getTableName()).'_'.$properties['name'];
1734 1734
         }
1735 1735
 
1736 1736
         $engine = null;
@@ -1754,8 +1754,8 @@  discard block
 block discarded – undo
1754 1754
         global $dictionary;
1755 1755
         $key = $this->getObjectName();
1756 1756
         if (!array_key_exists($key, $dictionary)) {
1757
-            $GLOBALS['log']->fatal("drop_tables: Metadata for table " . $this->table_name . " does not exist");
1758
-            echo "meta data absent for table " . $this->table_name . "<br>\n";
1757
+            $GLOBALS['log']->fatal("drop_tables: Metadata for table ".$this->table_name." does not exist");
1758
+            echo "meta data absent for table ".$this->table_name."<br>\n";
1759 1759
         } else {
1760 1760
             if (empty($this->table_name)) {
1761 1761
                 return;
@@ -1763,8 +1763,8 @@  discard block
 block discarded – undo
1763 1763
             if ($this->db->tableExists($this->table_name)) {
1764 1764
                 $this->db->dropTable($this);
1765 1765
             }
1766
-            if ($this->db->tableExists($this->table_name . '_cstm')) {
1767
-                $this->db->dropTableName($this->table_name . '_cstm');
1766
+            if ($this->db->tableExists($this->table_name.'_cstm')) {
1767
+                $this->db->dropTableName($this->table_name.'_cstm');
1768 1768
                 DynamicField::deleteCache();
1769 1769
             }
1770 1770
             if ($this->db->tableExists($this->get_audit_table_name())) {
@@ -2059,7 +2059,7 @@  discard block
 block discarded – undo
2059 2059
                     break;
2060 2060
             }
2061 2061
             if ($reformatted) {
2062
-                $GLOBALS['log']->deprecated('Formatting correction: ' . $this->module_dir . '->' . $field . ' had formatting automatically corrected. This will be removed in the future, please upgrade your external code');
2062
+                $GLOBALS['log']->deprecated('Formatting correction: '.$this->module_dir.'->'.$field.' had formatting automatically corrected. This will be removed in the future, please upgrade your external code');
2063 2063
             }
2064 2064
         }
2065 2065
     }
@@ -2101,7 +2101,7 @@  discard block
 block discarded – undo
2101 2101
                     $_SESSION['o_lock_object'] = $this->toArray();
2102 2102
                     $saveform = "<form name='save' id='save' method='POST'>";
2103 2103
                     foreach ($_POST as $key => $arg) {
2104
-                        $saveform .= "<input type='hidden' name='" . addslashes($key) . "' value='" . addslashes($arg) . "'>";
2104
+                        $saveform .= "<input type='hidden' name='".addslashes($key)."' value='".addslashes($arg)."'>";
2105 2105
                     }
2106 2106
                     $saveform .= "</form><script>document.getElementById('save').submit();</script>";
2107 2107
                     $_SESSION['o_lock_save'] = $saveform;
@@ -2281,7 +2281,7 @@  discard block
 block discarded – undo
2281 2281
                     if ($rel_name == $new_rel_link && $this->$id != $new_rel_id) {
2282 2282
                         $new_rel_id = '';
2283 2283
                     }
2284
-                    $GLOBALS['log']->debug('save_relationship_changes(): From relationship_field array - adding a relationship record: ' . $rel_name . ' = ' . $this->$id);
2284
+                    $GLOBALS['log']->debug('save_relationship_changes(): From relationship_field array - adding a relationship record: '.$rel_name.' = '.$this->$id);
2285 2285
                     //already related the new relationship id so let's set it to false so we don't add it again using the _REQUEST['relate_i'] mechanism in a later block
2286 2286
                     $this->load_relationship($rel_name);
2287 2287
                     $rel_add = $this->$rel_name->add($this->$id);
@@ -2292,7 +2292,7 @@  discard block
 block discarded – undo
2292 2292
                 } else {
2293 2293
                     //if before value is not empty then attempt to delete relationship
2294 2294
                     if (!empty($this->rel_fields_before_value[$id])) {
2295
-                        $GLOBALS['log']->debug('save_relationship_changes(): From relationship_field array - attempting to remove the relationship record, using relationship attribute' . $rel_name);
2295
+                        $GLOBALS['log']->debug('save_relationship_changes(): From relationship_field array - attempting to remove the relationship record, using relationship attribute'.$rel_name);
2296 2296
                         $this->load_relationship($rel_name);
2297 2297
                         $this->$rel_name->delete($this->id, $this->rel_fields_before_value[$id]);
2298 2298
                     }
@@ -2342,7 +2342,7 @@  discard block
 block discarded – undo
2342 2342
                             } else {
2343 2343
                                 $modified_relationships['remove']['failure'][] = $linkField;
2344 2344
                             }
2345
-                            $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - attempting to remove the relationship record returned " . var_export($success, true));
2345
+                            $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - attempting to remove the relationship record returned ".var_export($success, true));
2346 2346
                         }
2347 2347
 
2348 2348
                         if (!empty($this->$idName) && is_string($this->$idName)) {
@@ -2357,7 +2357,7 @@  discard block
 block discarded – undo
2357 2357
                                 $modified_relationships['add']['failure'][] = $linkField;
2358 2358
                             }
2359 2359
 
2360
-                            $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - add a relationship record returned " . var_export($success, true));
2360
+                            $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - add a relationship record returned ".var_export($success, true));
2361 2361
                         }
2362 2362
                     } else {
2363 2363
                         $GLOBALS['log']->fatal("Failed to load relationship {$linkField} while saving {$this->module_dir}");
@@ -2741,10 +2741,10 @@  discard block
 block discarded – undo
2741 2741
             $template_name = "Default";
2742 2742
         }
2743 2743
         if (!empty($_SESSION["special_notification"]) && $_SESSION["special_notification"]) {
2744
-            $template_name = $beanList[$this->module_dir] . 'Special';
2744
+            $template_name = $beanList[$this->module_dir].'Special';
2745 2745
         }
2746 2746
         if ($this->special_notification) {
2747
-            $template_name = $beanList[$this->module_dir] . 'Special';
2747
+            $template_name = $beanList[$this->module_dir].'Special';
2748 2748
         }
2749 2749
         $xtpl->assign("ASSIGNED_USER", $this->new_assigned_user_name);
2750 2750
         $xtpl->assign("ASSIGNER", $current_user->name);
@@ -2755,17 +2755,17 @@  discard block
 block discarded – undo
2755 2755
             $parsedSiteUrl['port'] = 80;
2756 2756
         }
2757 2757
 
2758
-        $port = ($parsedSiteUrl['port'] != 80) ? ":" . $parsedSiteUrl['port'] : '';
2758
+        $port = ($parsedSiteUrl['port'] != 80) ? ":".$parsedSiteUrl['port'] : '';
2759 2759
         $path = !empty($parsedSiteUrl['path']) ? $parsedSiteUrl['path'] : "";
2760 2760
         $cleanUrl = "{$parsedSiteUrl['scheme']}://{$host}{$port}{$path}";
2761 2761
 
2762
-        $xtpl->assign("URL", $cleanUrl . "/index.php?module={$this->module_dir}&action=DetailView&record={$this->id}");
2762
+        $xtpl->assign("URL", $cleanUrl."/index.php?module={$this->module_dir}&action=DetailView&record={$this->id}");
2763 2763
         $xtpl->assign("SUGAR", "Sugar v{$sugar_version}");
2764 2764
         $xtpl->parse($template_name);
2765
-        $xtpl->parse($template_name . "_Subject");
2765
+        $xtpl->parse($template_name."_Subject");
2766 2766
 
2767 2767
         $notify_mail->Body = from_html(trim($xtpl->text($template_name)));
2768
-        $notify_mail->Subject = from_html($xtpl->text($template_name . "_Subject"));
2768
+        $notify_mail->Subject = from_html($xtpl->text($template_name."_Subject"));
2769 2769
 
2770 2770
         // cn: bug 8568 encode notify email in User's outbound email encoding
2771 2771
         $notify_mail->prepForOutbound();
@@ -2857,7 +2857,7 @@  discard block
 block discarded – undo
2857 2857
                 if (empty($where)) {
2858 2858
                     $where = $owner_where;
2859 2859
                 } else {
2860
-                    $where .= ' AND ' . $owner_where;
2860
+                    $where .= ' AND '.$owner_where;
2861 2861
                 }
2862 2862
             }
2863 2863
         }
@@ -2911,7 +2911,7 @@  discard block
 block discarded – undo
2911 2911
             if (empty($where)) {
2912 2912
                 $where = $owner_where;
2913 2913
             } else {
2914
-                $where .= ' AND ' . $owner_where;
2914
+                $where .= ' AND '.$owner_where;
2915 2915
             }
2916 2916
         }
2917 2917
         /* BEGIN - SECURITY GROUPS */
@@ -2925,9 +2925,9 @@  discard block
 block discarded – undo
2925 2925
             $group_where = SecurityGroup::getGroupUsersWhere($current_user->id);
2926 2926
             //$group_where = "user_name = 'admin'";
2927 2927
             if (empty($where)) {
2928
-                $where = " (" . $group_where . ") ";
2928
+                $where = " (".$group_where.") ";
2929 2929
             } else {
2930
-                $where .= " AND (" . $group_where . ") ";
2930
+                $where .= " AND (".$group_where.") ";
2931 2931
             }
2932 2932
         } elseif ($this->bean_implements('ACL') && ACLController::requireSecurityGroup($this->module_dir, 'list')) {
2933 2933
             require_once('modules/SecurityGroups/SecurityGroup.php');
@@ -2936,12 +2936,12 @@  discard block
 block discarded – undo
2936 2936
             $group_where = SecurityGroup::getGroupWhere($this->table_name, $this->module_dir, $current_user->id);
2937 2937
             if (!empty($owner_where)) {
2938 2938
                 if (empty($where)) {
2939
-                    $where = " (" . $owner_where . " or " . $group_where . ") ";
2939
+                    $where = " (".$owner_where." or ".$group_where.") ";
2940 2940
                 } else {
2941
-                    $where .= " AND (" . $owner_where . " or " . $group_where . ") ";
2941
+                    $where .= " AND (".$owner_where." or ".$group_where.") ";
2942 2942
                 }
2943 2943
             } else {
2944
-                $where .= ' AND ' . $group_where;
2944
+                $where .= ' AND '.$group_where;
2945 2945
             }
2946 2946
         }
2947 2947
         /* END - SECURITY GROUPS */
@@ -2960,7 +2960,7 @@  discard block
 block discarded – undo
2960 2960
         $ret_array['order_by'] = '';
2961 2961
         //secondary selects are selects that need to be run after the primary query to retrieve additional info on main
2962 2962
         if ($singleSelect) {
2963
-            $ret_array['secondary_select'] =& $ret_array['select'];
2963
+            $ret_array['secondary_select'] = & $ret_array['select'];
2964 2964
             $ret_array['secondary_from'] = &$ret_array['from'];
2965 2965
         } else {
2966 2966
             $ret_array['secondary_select'] = '';
@@ -3034,7 +3034,7 @@  discard block
 block discarded – undo
3034 3034
             //alias is used to alias field names
3035 3035
             $alias = '';
3036 3036
             if (isset($value['alias'])) {
3037
-                $alias = ' as ' . $value['alias'] . ' ';
3037
+                $alias = ' as '.$value['alias'].' ';
3038 3038
             }
3039 3039
 
3040 3040
             if (empty($this->field_defs[$field]) || !empty($value['force_blank'])) {
@@ -3073,29 +3073,29 @@  discard block
 block discarded – undo
3073 3073
                 $selectedFields["$this->table_name.$field"] = true;
3074 3074
             } elseif ((!isset($data['source']) || $data['source'] == 'custom_fields') && (!empty($alias) || !empty($filter))) {
3075 3075
                 //add this column only if it has NOT already been added to select statement string
3076
-                $colPos = strpos($ret_array['select'], "$this->table_name" . "_cstm" . ".$field");
3076
+                $colPos = strpos($ret_array['select'], "$this->table_name"."_cstm".".$field");
3077 3077
                 if (!$colPos || $colPos < 0) {
3078
-                    $ret_array['select'] .= ", $this->table_name" . "_cstm" . ".$field $alias";
3078
+                    $ret_array['select'] .= ", $this->table_name"."_cstm".".$field $alias";
3079 3079
                 }
3080 3080
 
3081 3081
                 $selectedFields["$this->table_name.$field"] = true;
3082 3082
             }
3083 3083
 
3084 3084
             if ($data['type'] != 'relate' && isset($data['db_concat_fields'])) {
3085
-                $ret_array['select'] .= ", " . $this->db->concat($this->table_name, $data['db_concat_fields']) . " as $field";
3085
+                $ret_array['select'] .= ", ".$this->db->concat($this->table_name, $data['db_concat_fields'])." as $field";
3086 3086
                 $selectedFields[$this->db->concat($this->table_name, $data['db_concat_fields'])] = true;
3087 3087
             }
3088 3088
             //Custom relate field or relate fields built in module builder which have no link field associated.
3089 3089
             if ($data['type'] == 'relate' && (isset($data['custom_module']) || isset($data['ext2']))) {
3090
-                $joinTableAlias = 'jt' . $jtcount;
3090
+                $joinTableAlias = 'jt'.$jtcount;
3091 3091
                 $relateJoinInfo = $this->custom_fields->getRelateJoin($data, $joinTableAlias, false);
3092 3092
                 $ret_array['select'] .= $relateJoinInfo['select'];
3093 3093
                 $ret_array['from'] .= $relateJoinInfo['from'];
3094 3094
                 //Replace any references to the relationship in the where clause with the new alias
3095 3095
                 //If the link isn't set, assume that search used the local table for the field
3096 3096
                 $searchTable = isset($data['link']) ? $relateJoinInfo['rel_table'] : $this->table_name;
3097
-                $field_name = $relateJoinInfo['rel_table'] . '.' . !empty($data['name']) ? $data['name'] : 'name';
3098
-                $where = preg_replace('/(^|[\s(])' . $field_name . '/', '${1}' . $relateJoinInfo['name_field'], $where);
3097
+                $field_name = $relateJoinInfo['rel_table'].'.'.!empty($data['name']) ? $data['name'] : 'name';
3098
+                $where = preg_replace('/(^|[\s(])'.$field_name.'/', '${1}'.$relateJoinInfo['name_field'], $where);
3099 3099
                 $jtcount++;
3100 3100
             }
3101 3101
             //Parent Field
@@ -3103,7 +3103,7 @@  discard block
 block discarded – undo
3103 3103
                 //See if we need to join anything by inspecting the where clause
3104 3104
                 $match = preg_match('/(^|[\s(])parent_([a-zA-Z]+_?[a-zA-Z]+)_([a-zA-Z]+_?[a-zA-Z]+)\.name/', $where, $matches);
3105 3105
                 if ($match) {
3106
-                    $joinTableAlias = 'jt' . $jtcount;
3106
+                    $joinTableAlias = 'jt'.$jtcount;
3107 3107
                     $joinModule = $matches[2];
3108 3108
                     $joinTable = $matches[3];
3109 3109
                     $localTable = $this->table_name;
@@ -3124,7 +3124,7 @@  discard block
 block discarded – undo
3124 3124
                     $ret_array['from'] .= " LEFT JOIN $joinTable $joinTableAlias
3125 3125
                         ON $localTable.{$data['id_name']} = $joinTableAlias.id";
3126 3126
                     //Replace any references to the relationship in the where clause with the new alias
3127
-                    $where = preg_replace('/(^|[\s(])parent_' . $joinModule . '_' . $joinTable . '\.name/', '${1}' . $nameField, $where);
3127
+                    $where = preg_replace('/(^|[\s(])parent_'.$joinModule.'_'.$joinTable.'\.name/', '${1}'.$nameField, $where);
3128 3128
                     $jtcount++;
3129 3129
                 }
3130 3130
             }
@@ -3133,7 +3133,7 @@  discard block
 block discarded – undo
3133 3133
             {
3134 3134
                 $linkField = $data['link'];
3135 3135
                 $this->load_relationship($linkField);
3136
-                if(!empty($this->$linkField))
3136
+                if (!empty($this->$linkField))
3137 3137
                 {
3138 3138
                     $params = array();
3139 3139
                     if (empty($join_type)) {
@@ -3144,12 +3144,12 @@  discard block
 block discarded – undo
3144 3144
                     if (isset($data['join_name'])) {
3145 3145
                         $params['join_table_alias'] = $data['join_name'];
3146 3146
                     } else {
3147
-                        $params['join_table_alias'] = 'jt' . $jtcount;
3147
+                        $params['join_table_alias'] = 'jt'.$jtcount;
3148 3148
                     }
3149 3149
                     if (isset($data['join_link_name'])) {
3150 3150
                         $params['join_table_link_alias'] = $data['join_link_name'];
3151 3151
                     } else {
3152
-                        $params['join_table_link_alias'] = 'jtl' . $jtcount;
3152
+                        $params['join_table_link_alias'] = 'jtl'.$jtcount;
3153 3153
                     }
3154 3154
                     $join_primary = !isset($data['join_primary']) || $data['join_primary'];
3155 3155
 
@@ -3182,20 +3182,20 @@  discard block
 block discarded – undo
3182 3182
                                 require_once($beanFiles[$beanList[$rel_module]]);
3183 3183
                                 $rel_mod = new $beanList[$rel_module]();
3184 3184
                                 if (isset($rel_mod->field_defs['assigned_user_id'])) {
3185
-                                    $ret_array['secondary_select'] .= " , " . $params['join_table_alias'] . ".assigned_user_id {$field}_owner, '$rel_module' {$field}_mod";
3185
+                                    $ret_array['secondary_select'] .= " , ".$params['join_table_alias'].".assigned_user_id {$field}_owner, '$rel_module' {$field}_mod";
3186 3186
                                 } else {
3187 3187
                                     if (isset($rel_mod->field_defs['created_by'])) {
3188
-                                        $ret_array['secondary_select'] .= " , " . $params['join_table_alias'] . ".created_by {$field}_owner , '$rel_module' {$field}_mod";
3188
+                                        $ret_array['secondary_select'] .= " , ".$params['join_table_alias'].".created_by {$field}_owner , '$rel_module' {$field}_mod";
3189 3189
                                     }
3190 3190
                                 }
3191 3191
                             }
3192 3192
                         }
3193 3193
 
3194 3194
                         if (isset($data['db_concat_fields'])) {
3195
-                            $ret_array['secondary_select'] .= ' , ' . $this->db->concat($params['join_table_alias'], $data['db_concat_fields']) . ' ' . $field;
3195
+                            $ret_array['secondary_select'] .= ' , '.$this->db->concat($params['join_table_alias'], $data['db_concat_fields']).' '.$field;
3196 3196
                         } else {
3197 3197
                             if (!isset($data['relationship_fields'])) {
3198
-                                $ret_array['secondary_select'] .= ' , ' . $params['join_table_alias'] . '.' . $data['rname'] . ' ' . $field;
3198
+                                $ret_array['secondary_select'] .= ' , '.$params['join_table_alias'].'.'.$data['rname'].' '.$field;
3199 3199
                             }
3200 3200
                         }
3201 3201
                         if (!$singleSelect) {
@@ -3211,54 +3211,54 @@  discard block
 block discarded – undo
3211 3211
                             //27416, the $ret_array['secondary_select'] should always generate, regardless the dbtype
3212 3212
                             // add rel_key only if it was not already added
3213 3213
                             if (!$singleSelect) {
3214
-                                $ret_array['select'] .= ", '                                    '  " . $join['rel_key'] . ' ';
3214
+                                $ret_array['select'] .= ", '                                    '  ".$join['rel_key'].' ';
3215 3215
                             }
3216
-                            $ret_array['secondary_select'] .= ', ' . $params['join_table_link_alias'] . '.' . $join['rel_key'] . ' ' . $join['rel_key'];
3216
+                            $ret_array['secondary_select'] .= ', '.$params['join_table_link_alias'].'.'.$join['rel_key'].' '.$join['rel_key'];
3217 3217
                         }
3218 3218
                         if (isset($data['relationship_fields'])) {
3219 3219
                             foreach ($data['relationship_fields'] as $r_name => $alias_name) {
3220 3220
                                 if (!empty($secondarySelectedFields[$alias_name])) {
3221 3221
                                     continue;
3222 3222
                                 }
3223
-                                $ret_array['secondary_select'] .= ', ' . $params['join_table_link_alias'] . '.' . $r_name . ' ' . $alias_name;
3223
+                                $ret_array['secondary_select'] .= ', '.$params['join_table_link_alias'].'.'.$r_name.' '.$alias_name;
3224 3224
                                 $secondarySelectedFields[$alias_name] = true;
3225 3225
                             }
3226 3226
                         }
3227 3227
                         if (!$table_joined) {
3228
-                            $ret_array['secondary_from'] .= ' ' . $join['join'] . ' AND ' . $params['join_table_alias'] . '.deleted=0';
3228
+                            $ret_array['secondary_from'] .= ' '.$join['join'].' AND '.$params['join_table_alias'].'.deleted=0';
3229 3229
                             if (isset($data['link_type']) && $data['link_type'] == 'relationship_info' && ($parentbean instanceof SugarBean)) {
3230
-                                $ret_array['secondary_where'] = $params['join_table_link_alias'] . '.' . $join['rel_key'] . "='" . $parentbean->id . "'";
3230
+                                $ret_array['secondary_where'] = $params['join_table_link_alias'].'.'.$join['rel_key']."='".$parentbean->id."'";
3231 3231
                             }
3232 3232
                         }
3233 3233
                     } else {
3234 3234
                         if (isset($data['db_concat_fields'])) {
3235
-                            $ret_array['select'] .= ' , ' . $this->db->concat($params['join_table_alias'], $data['db_concat_fields']) . ' ' . $field;
3235
+                            $ret_array['select'] .= ' , '.$this->db->concat($params['join_table_alias'], $data['db_concat_fields']).' '.$field;
3236 3236
                         } else {
3237
-                            $ret_array['select'] .= ' , ' . $params['join_table_alias'] . '.' . $data['rname'] . ' ' . $field;
3237
+                            $ret_array['select'] .= ' , '.$params['join_table_alias'].'.'.$data['rname'].' '.$field;
3238 3238
                         }
3239 3239
                         if (isset($data['additionalFields'])) {
3240 3240
                             foreach ($data['additionalFields'] as $k => $v) {
3241 3241
                                 if (!empty($data['id_name']) && $data['id_name'] == $v && !empty($fields[$data['id_name']])) {
3242 3242
                                     continue;
3243 3243
                                 }
3244
-                                $ret_array['select'] .= ' , ' . $params['join_table_alias'] . '.' . $k . ' ' . $v;
3244
+                                $ret_array['select'] .= ' , '.$params['join_table_alias'].'.'.$k.' '.$v;
3245 3245
                             }
3246 3246
                         }
3247 3247
                         if (!$table_joined) {
3248
-                            $ret_array['from'] .= ' ' . $join['join'] . ' AND ' . $params['join_table_alias'] . '.deleted=0';
3248
+                            $ret_array['from'] .= ' '.$join['join'].' AND '.$params['join_table_alias'].'.deleted=0';
3249 3249
                             if (!empty($beanList[$rel_module]) && !empty($beanFiles[$beanList[$rel_module]])) {
3250 3250
                                 require_once($beanFiles[$beanList[$rel_module]]);
3251 3251
                                 $rel_mod = new $beanList[$rel_module]();
3252 3252
                                 if (isset($value['target_record_key']) && !empty($filter)) {
3253
-                                    $selectedFields[$this->table_name . '.' . $value['target_record_key']] = true;
3253
+                                    $selectedFields[$this->table_name.'.'.$value['target_record_key']] = true;
3254 3254
                                     $ret_array['select'] .= " , $this->table_name.{$value['target_record_key']} ";
3255 3255
                                 }
3256 3256
                                 if (isset($rel_mod->field_defs['assigned_user_id'])) {
3257
-                                    $ret_array['select'] .= ' , ' . $params['join_table_alias'] . '.assigned_user_id ' . $field . '_owner';
3257
+                                    $ret_array['select'] .= ' , '.$params['join_table_alias'].'.assigned_user_id '.$field.'_owner';
3258 3258
                                 } else {
3259
-                                    $ret_array['select'] .= ' , ' . $params['join_table_alias'] . '.created_by ' . $field . '_owner';
3259
+                                    $ret_array['select'] .= ' , '.$params['join_table_alias'].'.created_by '.$field.'_owner';
3260 3260
                                 }
3261
-                                $ret_array['select'] .= "  , '" . $rel_module . "' " . $field . '_mod';
3261
+                                $ret_array['select'] .= "  , '".$rel_module."' ".$field.'_mod';
3262 3262
                             }
3263 3263
                         }
3264 3264
                     }
@@ -3268,37 +3268,37 @@  discard block
 block discarded – undo
3268 3268
                     if (isset($data['db_concat_fields'])) {
3269 3269
                         $buildWhere = false;
3270 3270
                         if (in_array('first_name', $data['db_concat_fields']) && in_array('last_name', $data['db_concat_fields'])) {
3271
-                            $exp = '/\(\s*?' . $data['name'] . '.*?\%\'\s*?\)/';
3271
+                            $exp = '/\(\s*?'.$data['name'].'.*?\%\'\s*?\)/';
3272 3272
                             if (preg_match($exp, $where, $matches)) {
3273 3273
                                 $search_expression = $matches[0];
3274 3274
                                 //Create three search conditions - first + last, first, last
3275
-                                $first_name_search = str_replace($data['name'], $params['join_table_alias'] . '.first_name', $search_expression);
3276
-                                $last_name_search = str_replace($data['name'], $params['join_table_alias'] . '.last_name', $search_expression);
3275
+                                $first_name_search = str_replace($data['name'], $params['join_table_alias'].'.first_name', $search_expression);
3276
+                                $last_name_search = str_replace($data['name'], $params['join_table_alias'].'.last_name', $search_expression);
3277 3277
                                 $full_name_search = str_replace($data['name'], $this->db->concat($params['join_table_alias'], $data['db_concat_fields']), $search_expression);
3278 3278
                                 $buildWhere = true;
3279
-                                $where = str_replace($search_expression, '(' . $full_name_search . ' OR ' . $first_name_search . ' OR ' . $last_name_search . ')', $where);
3279
+                                $where = str_replace($search_expression, '('.$full_name_search.' OR '.$first_name_search.' OR '.$last_name_search.')', $where);
3280 3280
                             }
3281 3281
                         }
3282 3282
 
3283 3283
                         if (!$buildWhere) {
3284 3284
                             $db_field = $this->db->concat($params['join_table_alias'], $data['db_concat_fields']);
3285
-                            $where = preg_replace('/' . $data['name'] . '/', $db_field, $where);
3285
+                            $where = preg_replace('/'.$data['name'].'/', $db_field, $where);
3286 3286
 
3287 3287
                             // For relationship fields replace their alias by the corresponding link table and r_name
3288 3288
                             if (isset($data['relationship_fields'])) {
3289 3289
                                 foreach ($data['relationship_fields'] as $r_name => $alias_name) {
3290 3290
                                     $db_field = $this->db->concat($params['join_table_link_alias'], $r_name);
3291
-                                    $where = preg_replace('/' . $alias_name . '/', $db_field, $where);
3291
+                                    $where = preg_replace('/'.$alias_name.'/', $db_field, $where);
3292 3292
                                 }
3293 3293
                             }
3294 3294
                         }
3295 3295
                     } else {
3296
-                        $where = preg_replace('/(^|[\s(])' . $data['name'] . '/', '${1}' . $params['join_table_alias'] . '.' . $data['rname'], $where);
3296
+                        $where = preg_replace('/(^|[\s(])'.$data['name'].'/', '${1}'.$params['join_table_alias'].'.'.$data['rname'], $where);
3297 3297
 
3298 3298
                         // For relationship fields replace their alias by the corresponding link table and r_name
3299 3299
                         if (isset($data['relationship_fields'])) {
3300 3300
                             foreach ($data['relationship_fields'] as $r_name => $alias_name) {
3301
-                                $where = preg_replace('/(^|[\s(])' . $alias_name . '/', '${1}' . $params['join_table_link_alias'] . '.' . $r_name, $where);
3301
+                                $where = preg_replace('/(^|[\s(])'.$alias_name.'/', '${1}'.$params['join_table_link_alias'].'.'.$r_name, $where);
3302 3302
                             }
3303 3303
                         }
3304 3304
                     }
@@ -3312,12 +3312,12 @@  discard block
 block discarded – undo
3312 3312
             }
3313 3313
         }
3314 3314
         if (!empty($filter)) {
3315
-            if (isset($this->field_defs['assigned_user_id']) && empty($selectedFields[$this->table_name . '.assigned_user_id'])) {
3315
+            if (isset($this->field_defs['assigned_user_id']) && empty($selectedFields[$this->table_name.'.assigned_user_id'])) {
3316 3316
                 $ret_array['select'] .= ", $this->table_name.assigned_user_id ";
3317
-            } elseif (isset($this->field_defs['created_by']) && empty($selectedFields[$this->table_name . '.created_by'])) {
3317
+            } elseif (isset($this->field_defs['created_by']) && empty($selectedFields[$this->table_name.'.created_by'])) {
3318 3318
                 $ret_array['select'] .= ", $this->table_name.created_by ";
3319 3319
             }
3320
-            if (isset($this->field_defs['system_id']) && empty($selectedFields[$this->table_name . '.system_id'])) {
3320
+            if (isset($this->field_defs['system_id']) && empty($selectedFields[$this->table_name.'.system_id'])) {
3321 3321
                 $ret_array['select'] .= ", $this->table_name.system_id ";
3322 3322
             }
3323 3323
         }
@@ -3344,7 +3344,7 @@  discard block
 block discarded – undo
3344 3344
         //make call to process the order by clause
3345 3345
         $order_by = $this->process_order_by($order_by);
3346 3346
         if (!empty($order_by)) {
3347
-            $ret_array['order_by'] = " ORDER BY " . $order_by;
3347
+            $ret_array['order_by'] = " ORDER BY ".$order_by;
3348 3348
         }
3349 3349
         if ($singleSelect) {
3350 3350
             unset($ret_array['secondary_where']);
@@ -3356,7 +3356,7 @@  discard block
 block discarded – undo
3356 3356
             return $ret_array;
3357 3357
         }
3358 3358
 
3359
-        return $ret_array['select'] . $ret_array['from'] . $ret_array['where'] . $ret_array['order_by'];
3359
+        return $ret_array['select'].$ret_array['from'].$ret_array['where'].$ret_array['order_by'];
3360 3360
     }
3361 3361
 
3362 3362
 	public function get_relationship_field($field)
@@ -3431,9 +3431,9 @@  discard block
 block discarded – undo
3431 3431
 
3432 3432
                 if (empty($field_defs['table']) && !$suppress_table_name) {
3433 3433
                     if ($source == 'db') {
3434
-                        $list_column[0] = $bean_queried->table_name . '.' . $list_column[0];
3434
+                        $list_column[0] = $bean_queried->table_name.'.'.$list_column[0];
3435 3435
                     } elseif ($source == 'custom_fields') {
3436
-                        $list_column[0] = $bean_queried->table_name . '_cstm.' . $list_column[0];
3436
+                        $list_column[0] = $bean_queried->table_name.'_cstm.'.$list_column[0];
3437 3437
                     }
3438 3438
                 }
3439 3439
 
@@ -3489,7 +3489,7 @@  discard block
 block discarded – undo
3489 3489
          * if the row_offset is set to 'end' go to the end of the list
3490 3490
          */
3491 3491
         $toEnd = strval($row_offset) == 'end';
3492
-        $GLOBALS['log']->debug("process_list_query: " . $query);
3492
+        $GLOBALS['log']->debug("process_list_query: ".$query);
3493 3493
         if ($max_per_page == -1) {
3494 3494
             $max_per_page = $sugar_config['list_max_entries_per_page'];
3495 3495
         }
@@ -3548,14 +3548,14 @@  discard block
 block discarded – undo
3548 3548
             foreach ($this->field_defs as $field => $value) {
3549 3549
                 if (isset($row[$field])) {
3550 3550
                     $temp->$field = $row[$field];
3551
-                    $owner_field = $field . '_owner';
3551
+                    $owner_field = $field.'_owner';
3552 3552
                     if (isset($row[$owner_field])) {
3553 3553
                         $temp->$owner_field = $row[$owner_field];
3554 3554
                     }
3555 3555
 
3556
-                    $GLOBALS['log']->debug("$temp->object_name({$row['id']}): " . $field . " = " . $temp->$field);
3557
-                } elseif (isset($row[$this->table_name . '.' . $field])) {
3558
-                    $temp->$field = $row[$this->table_name . '.' . $field];
3556
+                    $GLOBALS['log']->debug("$temp->object_name({$row['id']}): ".$field." = ".$temp->$field);
3557
+                } elseif (isset($row[$this->table_name.'.'.$field])) {
3558
+                    $temp->$field = $row[$this->table_name.'.'.$field];
3559 3559
                 } else {
3560 3560
                     $temp->$field = "";
3561 3561
                 }
@@ -3608,22 +3608,22 @@  discard block
 block discarded – undo
3608 3608
     public function create_list_count_query($query)
3609 3609
     {
3610 3610
         // remove the 'order by' clause which is expected to be at the end of the query
3611
-        $pattern = '/\sORDER BY.*/is';  // ignores the case
3611
+        $pattern = '/\sORDER BY.*/is'; // ignores the case
3612 3612
         $replacement = '';
3613 3613
         $query = preg_replace($pattern, $replacement, $query);
3614 3614
         //handle distinct clause
3615 3615
         $star = '*';
3616 3616
         if (substr_count(strtolower($query), 'distinct')) {
3617 3617
             if (!empty($this->seed) && !empty($this->seed->table_name)) {
3618
-                $star = 'DISTINCT ' . $this->seed->table_name . '.id';
3618
+                $star = 'DISTINCT '.$this->seed->table_name.'.id';
3619 3619
             } else {
3620
-                $star = 'DISTINCT ' . $this->table_name . '.id';
3620
+                $star = 'DISTINCT '.$this->table_name.'.id';
3621 3621
             }
3622 3622
         }
3623 3623
 
3624 3624
         // change the select expression to 'count(*)'
3625
-        $pattern = '/SELECT(.*?)(\s){1}FROM(\s){1}/is';  // ignores the case
3626
-        $replacement = 'SELECT count(' . $star . ') c FROM ';
3625
+        $pattern = '/SELECT(.*?)(\s){1}FROM(\s){1}/is'; // ignores the case
3626
+        $replacement = 'SELECT count('.$star.') c FROM ';
3627 3627
 
3628 3628
         //if the passed query has union clause then replace all instances of the pattern.
3629 3629
         //this is very rare. I have seen this happening only from projects module.
@@ -3639,13 +3639,13 @@  discard block
 block discarded – undo
3639 3639
                 if (!empty($matches)) {
3640 3640
                     if (stristr($matches[0], "distinct")) {
3641 3641
                         if (!empty($this->seed) && !empty($this->seed->table_name)) {
3642
-                            $star = 'DISTINCT ' . $this->seed->table_name . '.id';
3642
+                            $star = 'DISTINCT '.$this->seed->table_name.'.id';
3643 3643
                         } else {
3644
-                            $star = 'DISTINCT ' . $this->table_name . '.id';
3644
+                            $star = 'DISTINCT '.$this->table_name.'.id';
3645 3645
                         }
3646 3646
                     }
3647 3647
                 } // if
3648
-                $replacement = 'SELECT count(' . $star . ') c FROM ';
3648
+                $replacement = 'SELECT count('.$star.') c FROM ';
3649 3649
                 $union_qs[$key] = preg_replace($pattern, $replacement, $union_query, 1);
3650 3650
             }
3651 3651
             $modified_select_query = implode(" UNION ALL ", $union_qs);
@@ -3711,7 +3711,7 @@  discard block
 block discarded – undo
3711 3711
             if (empty($where)) {
3712 3712
                 $where = $owner_where;
3713 3713
             } else {
3714
-                $where .= ' AND ' . $owner_where;
3714
+                $where .= ' AND '.$owner_where;
3715 3715
             }
3716 3716
         }
3717 3717
 
@@ -3723,12 +3723,12 @@  discard block
 block discarded – undo
3723 3723
             $group_where = SecurityGroup::getGroupWhere($this->table_name, $this->module_dir, $current_user->id);
3724 3724
             if (!empty($owner_where)) {
3725 3725
                 if (empty($where)) {
3726
-                    $where = " (" . $owner_where . " or " . $group_where . ") ";
3726
+                    $where = " (".$owner_where." or ".$group_where.") ";
3727 3727
                 } else {
3728
-                    $where .= " AND (" . $owner_where . " or " . $group_where . ") ";
3728
+                    $where .= " AND (".$owner_where." or ".$group_where.") ";
3729 3729
                 }
3730 3730
             } else {
3731
-                $where .= ' AND ' . $group_where;
3731
+                $where .= ' AND '.$group_where;
3732 3732
             }
3733 3733
         }
3734 3734
         /* END - SECURITY GROUPS */
@@ -3757,7 +3757,7 @@  discard block
 block discarded – undo
3757 3757
     public function process_detail_query($query, $row_offset, $limit = -1, $max_per_page = -1, $where = '', $offset = 0)
3758 3758
     {
3759 3759
         global $sugar_config;
3760
-        $GLOBALS['log']->debug("process_detail_query: " . $query);
3760
+        $GLOBALS['log']->debug("process_detail_query: ".$query);
3761 3761
         if ($max_per_page == -1) {
3762 3762
             $max_per_page = $sugar_config['list_max_entries_per_page'];
3763 3763
         }
@@ -3823,14 +3823,14 @@  discard block
 block discarded – undo
3823 3823
         }
3824 3824
         $custom_join = $this->getCustomJoin();
3825 3825
 
3826
-        $query = "SELECT $this->table_name.*" . $custom_join['select'] . " FROM $this->table_name ";
3826
+        $query = "SELECT $this->table_name.*".$custom_join['select']." FROM $this->table_name ";
3827 3827
 
3828 3828
         $query .= $custom_join['join'];
3829
-        $query .= " WHERE $this->table_name.id = " . $this->db->quoted($id);
3829
+        $query .= " WHERE $this->table_name.id = ".$this->db->quoted($id);
3830 3830
         if ($deleted) {
3831 3831
             $query .= " AND $this->table_name.deleted=0";
3832 3832
         }
3833
-        $GLOBALS['log']->debug("Retrieve $this->object_name : " . $query);
3833
+        $GLOBALS['log']->debug("Retrieve $this->object_name : ".$query);
3834 3834
         $result = $this->db->limitQuery($query, 0, 1, true, "Retrieving record by id $this->table_name:$id found ");
3835 3835
         if (empty($result)) {
3836 3836
             return null;
@@ -3981,7 +3981,7 @@  discard block
 block discarded – undo
3981 3981
             }
3982 3982
             if (isset($row[$field])) {
3983 3983
                 $this->$field = $row[$field];
3984
-                $owner = $field . '_owner';
3984
+                $owner = $field.'_owner';
3985 3985
                 if (!empty($row[$owner])) {
3986 3986
                     $this->$owner = $row[$owner];
3987 3987
                 }
@@ -4178,12 +4178,12 @@  discard block
 block discarded – undo
4178 4178
         $query = 'SELECT id';
4179 4179
         foreach ($fields as $field => $alias) {
4180 4180
             if (!empty($GLOBALS['dictionary'][$object]['fields'][$field]['db_concat_fields'])) {
4181
-                $query .= ' ,' . $this->db->concat($table, $GLOBALS['dictionary'][$object]['fields'][$field]['db_concat_fields']) . ' as ' . $alias;
4181
+                $query .= ' ,'.$this->db->concat($table, $GLOBALS['dictionary'][$object]['fields'][$field]['db_concat_fields']).' as '.$alias;
4182 4182
             } elseif (!empty($GLOBALS['dictionary'][$object]['fields'][$field]) &&
4183 4183
                 (empty($GLOBALS['dictionary'][$object]['fields'][$field]['source']) ||
4184 4184
                     $GLOBALS['dictionary'][$object]['fields'][$field]['source'] != "non-db")
4185 4185
             ) {
4186
-                $query .= ' ,' . $table . '.' . $field . ' as ' . $alias;
4186
+                $query .= ' ,'.$table.'.'.$field.' as '.$alias;
4187 4187
             }
4188 4188
             if (!$return_array) {
4189 4189
                 $this->$alias = '';
@@ -4195,12 +4195,12 @@  discard block
 block discarded – undo
4195 4195
 
4196 4196
 
4197 4197
         if (isset($GLOBALS['dictionary'][$object]['fields']['assigned_user_id'])) {
4198
-            $query .= " , " . $table . ".assigned_user_id owner";
4198
+            $query .= " , ".$table.".assigned_user_id owner";
4199 4199
         } elseif (isset($GLOBALS['dictionary'][$object]['fields']['created_by'])) {
4200
-            $query .= " , " . $table . ".created_by owner";
4200
+            $query .= " , ".$table.".created_by owner";
4201 4201
         }
4202
-        $query .= ' FROM ' . $table . ' WHERE deleted=0 AND id=';
4203
-        $result = $GLOBALS['db']->query($query . "'$id'");
4202
+        $query .= ' FROM '.$table.' WHERE deleted=0 AND id=';
4203
+        $result = $GLOBALS['db']->query($query."'$id'");
4204 4204
         $row = $GLOBALS['db']->fetchByAssoc($result);
4205 4205
         if ($return_array) {
4206 4206
             return $row;
@@ -4208,9 +4208,9 @@  discard block
 block discarded – undo
4208 4208
         $owner = (empty($row['owner'])) ? '' : $row['owner'];
4209 4209
         foreach ($fields as $alias) {
4210 4210
             $this->$alias = (!empty($row[$alias])) ? $row[$alias] : '';
4211
-            $alias = $alias . '_owner';
4211
+            $alias = $alias.'_owner';
4212 4212
             $this->$alias = $owner;
4213
-            $a_mod = $alias . '_mod';
4213
+            $a_mod = $alias.'_mod';
4214 4214
             $this->$a_mod = $module;
4215 4215
         }
4216 4216
     }
@@ -4370,15 +4370,15 @@  discard block
 block discarded – undo
4370 4370
         $entire_where = $query_array['where'];
4371 4371
         if (!empty($where)) {
4372 4372
             if (empty($entire_where)) {
4373
-                $entire_where = ' WHERE ' . $where;
4373
+                $entire_where = ' WHERE '.$where;
4374 4374
             } else {
4375
-                $entire_where .= ' AND ' . $where;
4375
+                $entire_where .= ' AND '.$where;
4376 4376
             }
4377 4377
         }
4378 4378
 
4379
-        $query = 'SELECT ' . $child_seed->table_name . '.* ' . $query_array['from'] . ' ' . $entire_where;
4379
+        $query = 'SELECT '.$child_seed->table_name.'.* '.$query_array['from'].' '.$entire_where;
4380 4380
         if (!empty($order_by)) {
4381
-            $query .= " ORDER BY " . $order_by;
4381
+            $query .= " ORDER BY ".$order_by;
4382 4382
         }
4383 4383
 
4384 4384
         return $child_seed->process_list_query($query, $row_offset, $limit, $max, $where);
@@ -4414,9 +4414,9 @@  discard block
 block discarded – undo
4414 4414
      */
4415 4415
     public function process_full_list_query($query, $check_date = false)
4416 4416
     {
4417
-        $GLOBALS['log']->debug("process_full_list_query: query is " . $query);
4417
+        $GLOBALS['log']->debug("process_full_list_query: query is ".$query);
4418 4418
         $result = $this->db->query($query, false);
4419
-        $GLOBALS['log']->debug("process_full_list_query: result is " . print_r($result, true));
4419
+        $GLOBALS['log']->debug("process_full_list_query: result is ".print_r($result, true));
4420 4420
         $class = get_class($this);
4421 4421
         $isFirstTime = true;
4422 4422
         $bean = new $class();
@@ -4432,7 +4432,7 @@  discard block
 block discarded – undo
4432 4432
             foreach ($bean->field_defs as $field => $value) {
4433 4433
                 if (isset($row[$field])) {
4434 4434
                     $bean->$field = $row[$field];
4435
-                    $GLOBALS['log']->debug("process_full_list: $bean->object_name({$row['id']}): " . $field . " = " . $bean->$field);
4435
+                    $GLOBALS['log']->debug("process_full_list: $bean->object_name({$row['id']}): ".$field." = ".$bean->$field);
4436 4436
                 } else {
4437 4437
                     $bean->$field = '';
4438 4438
                 }
@@ -4524,7 +4524,7 @@  discard block
 block discarded – undo
4524 4524
         $this->call_custom_logic("before_restore", $custom_logic_arguments);
4525 4525
 
4526 4526
         $date_modified = $GLOBALS['timedate']->nowDb();
4527
-        $query = "UPDATE $this->table_name set deleted=0 , date_modified = '$date_modified' where id='" . $this->db->quote($id) . "'";
4527
+        $query = "UPDATE $this->table_name set deleted=0 , date_modified = '$date_modified' where id='".$this->db->quote($id)."'";
4528 4528
         $this->db->query($query, true, "Error marking record undeleted: ");
4529 4529
 
4530 4530
         $this->restoreFiles();
@@ -4554,9 +4554,9 @@  discard block
 block discarded – undo
4554 4554
         $directory = $this->deleteFileDirectory();
4555 4555
 
4556 4556
         foreach ($files as $file) {
4557
-            if (sugar_is_file('upload://deleted/' . $directory . '/' . $file)) {
4558
-                if (!sugar_rename('upload://deleted/' . $directory . '/' . $file, 'upload://' . $file)) {
4559
-                    $GLOBALS['log']->error('Could not move file ' . $directory . '/' . $file . ' from deleted directory');
4557
+            if (sugar_is_file('upload://deleted/'.$directory.'/'.$file)) {
4558
+                if (!sugar_rename('upload://deleted/'.$directory.'/'.$file, 'upload://'.$file)) {
4559
+                    $GLOBALS['log']->error('Could not move file '.$directory.'/'.$file.' from deleted directory');
4560 4560
                 }
4561 4561
             }
4562 4562
         }
@@ -4565,7 +4565,7 @@  discard block
 block discarded – undo
4565 4565
          * @var DBManager $db
4566 4566
          */
4567 4567
         global $db;
4568
-        $db->query('DELETE FROM cron_remove_documents WHERE bean_id=' . $db->quoted($this->id));
4568
+        $db->query('DELETE FROM cron_remove_documents WHERE bean_id='.$db->quoted($this->id));
4569 4569
 
4570 4570
         return true;
4571 4571
     }
@@ -4713,19 +4713,19 @@  discard block
 block discarded – undo
4713 4713
 
4714 4714
         $directory = $this->deleteFileDirectory();
4715 4715
 
4716
-        $isCreated = sugar_is_dir('upload://deleted/' . $directory);
4716
+        $isCreated = sugar_is_dir('upload://deleted/'.$directory);
4717 4717
         if (!$isCreated) {
4718
-            sugar_mkdir('upload://deleted/' . $directory, 0777, true);
4719
-            $isCreated = sugar_is_dir('upload://deleted/' . $directory);
4718
+            sugar_mkdir('upload://deleted/'.$directory, 0777, true);
4719
+            $isCreated = sugar_is_dir('upload://deleted/'.$directory);
4720 4720
         }
4721 4721
         if (!$isCreated) {
4722 4722
             return false;
4723 4723
         }
4724 4724
 
4725 4725
         foreach ($files as $file) {
4726
-            if (file_exists('upload://' . $file)) {
4727
-                if (!sugar_rename('upload://' . $file, 'upload://deleted/' . $directory . '/' . $file)) {
4728
-                    $GLOBALS['log']->error('Could not move file ' . $file . ' to deleted directory');
4726
+            if (file_exists('upload://'.$file)) {
4727
+                if (!sugar_rename('upload://'.$file, 'upload://deleted/'.$directory.'/'.$file)) {
4728
+                    $GLOBALS['log']->error('Could not move file '.$file.' to deleted directory');
4729 4729
                 }
4730 4730
             }
4731 4731
         }
@@ -4745,7 +4745,7 @@  discard block
 block discarded – undo
4745 4745
         }
4746 4746
         if (empty($record['id'])) {
4747 4747
             $record['id'] = $db->quoted(create_guid());
4748
-            $db->query('INSERT INTO cron_remove_documents (' . implode(', ', array_keys($record)) . ') VALUES(' . implode(', ', $record) . ')');
4748
+            $db->query('INSERT INTO cron_remove_documents ('.implode(', ', array_keys($record)).') VALUES('.implode(', ', $record).')');
4749 4749
         } else {
4750 4750
             $db->query("UPDATE cron_remove_documents SET date_modified={$record['date_modified']} WHERE id={$record['id']}");
4751 4751
         }
@@ -4766,7 +4766,7 @@  discard block
 block discarded – undo
4766 4766
      */
4767 4767
     public function build_related_list($query, &$template, $row_offset = 0, $limit = -1)
4768 4768
     {
4769
-        $GLOBALS['log']->debug("Finding linked records $this->object_name: " . $query);
4769
+        $GLOBALS['log']->debug("Finding linked records $this->object_name: ".$query);
4770 4770
         $db = DBManagerFactory::getInstance('listviews');
4771 4771
 
4772 4772
         if (!empty($row_offset) && $row_offset != 0 && !empty($limit) && $limit != -1) {
@@ -4813,7 +4813,7 @@  discard block
 block discarded – undo
4813 4813
     {
4814 4814
         $db = DBManagerFactory::getInstance('listviews');
4815 4815
         // No need to do an additional query
4816
-        $GLOBALS['log']->debug("Finding linked records $this->object_name: " . $query);
4816
+        $GLOBALS['log']->debug("Finding linked records $this->object_name: ".$query);
4817 4817
         if (empty($in) && !empty($query)) {
4818 4818
             $idList = $this->build_related_in($query);
4819 4819
             $in = $idList['in'];
@@ -4879,9 +4879,9 @@  discard block
 block discarded – undo
4879 4879
         while ($row = $this->db->fetchByAssoc($result)) {
4880 4880
             $idList[] = $row['id'];
4881 4881
             if (empty($ids)) {
4882
-                $ids = "('" . $row['id'] . "'";
4882
+                $ids = "('".$row['id']."'";
4883 4883
             } else {
4884
-                $ids .= ",'" . $row['id'] . "'";
4884
+                $ids .= ",'".$row['id']."'";
4885 4885
             }
4886 4886
         }
4887 4887
         if (empty($ids)) {
@@ -4905,7 +4905,7 @@  discard block
 block discarded – undo
4905 4905
      */
4906 4906
     public function build_related_list2($query, &$template, &$field_list)
4907 4907
     {
4908
-        $GLOBALS['log']->debug("Finding linked values $this->object_name: " . $query);
4908
+        $GLOBALS['log']->debug("Finding linked values $this->object_name: ".$query);
4909 4909
 
4910 4910
         $result = $this->db->query($query, true);
4911 4911
 
@@ -5019,9 +5019,9 @@  discard block
 block discarded – undo
5019 5019
     {
5020 5020
         $where_clause = $this->get_where($fields_array, $deleted);
5021 5021
         $custom_join = $this->getCustomJoin();
5022
-        $query = "SELECT $this->table_name.*" . $custom_join['select'] . " FROM $this->table_name " . $custom_join['join'];
5022
+        $query = "SELECT $this->table_name.*".$custom_join['select']." FROM $this->table_name ".$custom_join['join'];
5023 5023
         $query .= " $where_clause";
5024
-        $GLOBALS['log']->debug("Retrieve $this->object_name: " . $query);
5024
+        $GLOBALS['log']->debug("Retrieve $this->object_name: ".$query);
5025 5025
         //requireSingleResult has been deprecated.
5026 5026
         //$result = $this->db->requireSingleResult($query, true, "Retrieving record $where_clause:");
5027 5027
         $result = $this->db->limitQuery($query, 0, 1, true, "Retrieving record $where_clause:");
@@ -5060,7 +5060,7 @@  discard block
 block discarded – undo
5060 5060
             }
5061 5061
             $name = $this->db->getValidDBName($name);
5062 5062
 
5063
-            $where_clause .= "$name = " . $this->db->quoted($value);
5063
+            $where_clause .= "$name = ".$this->db->quoted($value);
5064 5064
         }
5065 5065
         if (!empty($where_clause)) {
5066 5066
             if ($deleted) {
@@ -5158,7 +5158,7 @@  discard block
 block discarded – undo
5158 5158
         $where = '';
5159 5159
 
5160 5160
         // make sure there is a date modified
5161
-        $date_modified = $this->db->convert("'" . $GLOBALS['timedate']->nowDb() . "'", 'datetime');
5161
+        $date_modified = $this->db->convert("'".$GLOBALS['timedate']->nowDb()."'", 'datetime');
5162 5162
 
5163 5163
         $row = null;
5164 5164
         if ($check_duplicates) {
@@ -5168,7 +5168,7 @@  discard block
 block discarded – undo
5168 5168
                 $where .= " AND $name = '$value' ";
5169 5169
             }
5170 5170
             $query .= $where;
5171
-            $result = $this->db->query($query, false, "Looking For Duplicate Relationship:" . $query);
5171
+            $result = $this->db->query($query, false, "Looking For Duplicate Relationship:".$query);
5172 5172
             $row = $this->db->fetchByAssoc($result);
5173 5173
         }
5174 5174
 
@@ -5177,16 +5177,16 @@  discard block
 block discarded – undo
5177 5177
             if (isset($data_values)) {
5178 5178
                 $relate_values = array_merge($relate_values, $data_values);
5179 5179
             }
5180
-            $query = "INSERT INTO $table (id, " . implode(',', array_keys($relate_values)) . ", date_modified) VALUES ('" . create_guid() . "', " . "'" . implode("', '", $relate_values) . "', " . $date_modified . ")";
5180
+            $query = "INSERT INTO $table (id, ".implode(',', array_keys($relate_values)).", date_modified) VALUES ('".create_guid()."', "."'".implode("', '", $relate_values)."', ".$date_modified.")";
5181 5181
 
5182
-            $this->db->query($query, false, "Creating Relationship:" . $query);
5182
+            $this->db->query($query, false, "Creating Relationship:".$query);
5183 5183
         } elseif ($do_update) {
5184 5184
             $conds = array();
5185 5185
             foreach ($data_values as $key => $value) {
5186
-                array_push($conds, $key . "='" . $this->db->quote($value) . "'");
5186
+                array_push($conds, $key."='".$this->db->quote($value)."'");
5187 5187
             }
5188
-            $query = "UPDATE $table SET " . implode(',', $conds) . ",date_modified=" . $date_modified . " " . $where;
5189
-            $this->db->query($query, false, "Updating Relationship:" . $query);
5188
+            $query = "UPDATE $table SET ".implode(',', $conds).",date_modified=".$date_modified." ".$where;
5189
+            $this->db->query($query, false, "Updating Relationship:".$query);
5190 5190
         }
5191 5191
     }
5192 5192
 
@@ -5197,7 +5197,7 @@  discard block
 block discarded – undo
5197 5197
             $query .= " AND $name = '$value' ";
5198 5198
         }
5199 5199
         $query .= " ORDER BY $select_id ";
5200
-        $result = $this->db->query($query, false, "Retrieving Relationship:" . $query);
5200
+        $result = $this->db->query($query, false, "Retrieving Relationship:".$query);
5201 5201
         $ids = array();
5202 5202
         while ($row = $this->db->fetchByAssoc($result)) {
5203 5203
             $ids[] = $row;
@@ -5208,13 +5208,13 @@  discard block
 block discarded – undo
5208 5208
     public function loadLayoutDefs()
5209 5209
     {
5210 5210
         global $layout_defs;
5211
-        if (empty($this->layout_def) && file_exists('modules/' . $this->module_dir . '/layout_defs.php')) {
5212
-            include_once('modules/' . $this->module_dir . '/layout_defs.php');
5213
-            if (file_exists('custom/modules/' . $this->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php')) {
5214
-                include_once('custom/modules/' . $this->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php');
5211
+        if (empty($this->layout_def) && file_exists('modules/'.$this->module_dir.'/layout_defs.php')) {
5212
+            include_once('modules/'.$this->module_dir.'/layout_defs.php');
5213
+            if (file_exists('custom/modules/'.$this->module_dir.'/Ext/Layoutdefs/layoutdefs.ext.php')) {
5214
+                include_once('custom/modules/'.$this->module_dir.'/Ext/Layoutdefs/layoutdefs.ext.php');
5215 5215
             }
5216 5216
             if (empty($layout_defs[get_class($this)])) {
5217
-                echo "\$layout_defs[" . get_class($this) . "]; does not exist";
5217
+                echo "\$layout_defs[".get_class($this)."]; does not exist";
5218 5218
             }
5219 5219
 
5220 5220
             $this->layout_def = $layout_defs[get_class($this)];
@@ -5440,8 +5440,8 @@  discard block
 block discarded – undo
5440 5440
         $tmp = explode(",", $order_by);
5441 5441
         $comma = ' ';
5442 5442
         foreach ($tmp as $stmp) {
5443
-            $stmp = (substr_count($stmp, ".") > 0 ? trim($stmp) : "$qualify." . trim($stmp));
5444
-            $order_by_clause .= $comma . $stmp;
5443
+            $stmp = (substr_count($stmp, ".") > 0 ? trim($stmp) : "$qualify.".trim($stmp));
5444
+            $order_by_clause .= $comma.$stmp;
5445 5445
             $comma = ", ";
5446 5446
         }
5447 5447
         return $order_by_clause;
@@ -5457,19 +5457,19 @@  discard block
 block discarded – undo
5457 5457
         $street_field
5458 5458
     ) {
5459 5459
         if (isset($this->$street_field)) {
5460
-            $street_field_2 = $street_field . '_2';
5461
-            $street_field_3 = $street_field . '_3';
5462
-            $street_field_4 = $street_field . '_4';
5460
+            $street_field_2 = $street_field.'_2';
5461
+            $street_field_3 = $street_field.'_3';
5462
+            $street_field_4 = $street_field.'_4';
5463 5463
             if (isset($this->$street_field_2)) {
5464
-                $this->$street_field .= "\n" . $this->$street_field_2;
5464
+                $this->$street_field .= "\n".$this->$street_field_2;
5465 5465
                 unset($this->$street_field_2);
5466 5466
             }
5467 5467
             if (isset($this->$street_field_3)) {
5468
-                $this->$street_field .= "\n" . $this->$street_field_3;
5468
+                $this->$street_field .= "\n".$this->$street_field_3;
5469 5469
                 unset($this->$street_field_3);
5470 5470
             }
5471 5471
             if (isset($this->$street_field_4)) {
5472
-                $this->$street_field .= "\n" . $this->$street_field_4;
5472
+                $this->$street_field .= "\n".$this->$street_field_4;
5473 5473
                 unset($this->$street_field_4);
5474 5474
             }
5475 5475
             $this->$street_field = trim($this->$street_field, "\n");
Please login to merge, or discard this patch.