Commit d48f4e82e83a4d4821137976722189b2a0f1b244

Authored by Neil Blakey-Milner
1 parent 700765ca

Add a layer of indirection around array_merge. kt_array_merge will use

array_merge directly on PHP4, but convert each parameter to an array
when on PHP5.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@5173 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/actions/documentaction.inc.php
... ... @@ -141,7 +141,7 @@ class KTDocumentAction extends KTStandardDispatcher {
141 141 "documentaction" => "viewDocument",
142 142 "folderaction" => "browse",
143 143 );
144   - $this->aBreadcrumbs = array_merge($this->aBreadcrumbs,
  144 + $this->aBreadcrumbs = kt_array_merge($this->aBreadcrumbs,
145 145 KTBrowseUtil::breadcrumbsForDocument($this->oDocument, $aOptions));
146 146  
147 147 $actions = KTDocumentActionUtil::getDocumentActionsForDocument($this->oDocument, $this->oUser);
... ...
lib/actions/folderaction.inc.php
... ... @@ -136,7 +136,7 @@ class KTFolderAction extends KTStandardDispatcher {
136 136 "documentaction" => "viewDocument",
137 137 "folderaction" => "browse",
138 138 );
139   - $this->aBreadcrumbs = array_merge($this->aBreadcrumbs,
  139 + $this->aBreadcrumbs = kt_array_merge($this->aBreadcrumbs,
140 140 KTBrowseUtil::breadcrumbsForFolder($this->oFolder, $aOptions));
141 141  
142 142 $portlet = new KTActionPortlet(_kt("Folder Actions"));
... ...
lib/browse/Criteria.inc
... ... @@ -448,7 +448,7 @@ class GenericMetadataCriterion extends BrowseCriterion {
448 448 function searchSQL ($aRequest) {
449 449 $p = parent::searchSQL($aRequest);
450 450 $p[0] = join(' AND ', array($p[0], "$this->sSearchTable.document_field_id = ?"));
451   - $p[1] = array_merge($p[1], array($this->iID));
  451 + $p[1] = kt_array_merge($p[1], array($this->iID));
452 452 return $p;
453 453 }
454 454  
... ... @@ -717,7 +717,7 @@ class Criteria {
717 717 }
718 718 $aQuery = array("SELECT id FROM $default->document_fields_table", array()); /*ok*/
719 719 $aIDs = DBUtil::getResultArrayKey($aQuery, 'id');
720   - $aAllCriteriaIDs = array_merge(array_keys($aBaseCriteria), $aIDs);
  720 + $aAllCriteriaIDs = kt_array_merge(array_keys($aBaseCriteria), $aIDs);
721 721 foreach ($aAllCriteriaIDs as $iID) {
722 722 $oCriterion =& Criteria::getCriterionByNumber($iID);
723 723 $aAllCriteria[$iID] =& $oCriterion;
... ...
lib/browse/PartialQuery.inc.php
... ... @@ -126,8 +126,8 @@ class BrowseQuery extends PartialQuery{
126 126 KTUtil::getTableName("document_content_version"),
127 127 $this->sDocumentJoinClause, $sPermissionJoin, $sWhere);
128 128 $aParams = array();
129   - $aParams = array_merge($aParams, $this->aDocumentJoinParams);
130   - $aParams = array_merge($aParams, $aPermissionParams);
  129 + $aParams = kt_array_merge($aParams, $this->aDocumentJoinParams);
  130 + $aParams = kt_array_merge($aParams, $aPermissionParams);
131 131 $aParams[] = $this->folder_id;
132 132 return array($sQuery, $aParams);
133 133 }
... ... @@ -159,7 +159,7 @@ class BrowseQuery extends PartialQuery{
159 159  
160 160 $sQuery = "SELECT $sSelect FROM " . KTUtil::getTableName("folders") . " AS F $sPermissionJoin $sWhere ";
161 161 $aParams = array();
162   - $aParams = array_merge($aParams, $aPermissionParams);
  162 + $aParams = kt_array_merge($aParams, $aPermissionParams);
163 163 $aParams[] = $this->folder_id;
164 164 return array($sQuery, $aParams);
165 165 }
... ... @@ -470,7 +470,7 @@ class ArchivedBrowseQuery extends BrowseQuery {
470 470 KTUtil::getTableName("document_content_version"),
471 471 $sPermissionJoin, $sWhere);
472 472 $aParams = array();
473   - $aParams = array_merge($aParams, $aPermissionParams);
  473 + $aParams = kt_array_merge($aParams, $aPermissionParams);
474 474 $aParams[] = $this->folder_id;
475 475 return array($sQuery, $aParams);
476 476 }
... ...
lib/browse/browseutil.inc.php
... ... @@ -322,7 +322,7 @@ class KTBrowseUtil {
322 322 WHERE
323 323 PLA.permission_descriptor_id IN ($sPermissionDescriptors)
324 324 AND NOT (PLA2.permission_descriptor_id IN ($sPermissionDescriptors))";
325   - $aParams = array_merge(array($oPermission->getId(), $oPermission->getId()), $aPermissionDescriptors, $aPermissionDescriptors);
  325 + $aParams = kt_array_merge(array($oPermission->getId(), $oPermission->getId()), $aPermissionDescriptors, $aPermissionDescriptors);
326 326 $res = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'id');
327 327  
328 328 if (PEAR::isError($res)) {
... ...
lib/config/config.inc.php
... ... @@ -84,7 +84,7 @@ class KTConfig {
84 84 $this->setns(null, $seck, $secv);
85 85 }
86 86 }
87   - $this->conf = array_merge($this->conf, $conf["root"]);
  87 + $this->conf = kt_array_merge($this->conf, $conf["root"]);
88 88 }
89 89  
90 90 function setns($seck, $k, $v, $bDefault = false) {
... ...
lib/database/dbutil.inc
... ... @@ -180,7 +180,7 @@ class DBUtil {
180 180 $aWhereFields[] = $k . ' = ?';
181 181 }
182 182 $sWhere = join(' AND ', $aWhereFields);
183   - $aValues = array_merge(array_values($aFieldValues), array_values($aWhereFieldValues));
  183 + $aValues = kt_array_merge(array_values($aFieldValues), array_values($aWhereFieldValues));
184 184  
185 185 $sth = $db->autoPrepare($sTable, array_keys($aFieldValues), DB_AUTOQUERY_UPDATE, $sWhere);
186 186 $res =& $db->execute($sth, array_values($aValues));
... ...
lib/documentmanagement/documentutil.inc.php
... ... @@ -217,7 +217,7 @@ class KTDocumentUtil {
217 217 // {{{ validateMetadata
218 218 function validateMetadata(&$oDocument, $aMetadata) {
219 219 $aFieldsets =& KTFieldset::getGenericFieldsets();
220   - $aFieldsets =& array_merge($aFieldsets,
  220 + $aFieldsets =& kt_array_merge($aFieldsets,
221 221 KTFieldset::getForDocumentType($oDocument->getDocumentTypeId()));
222 222 $aSimpleMetadata = array();
223 223 foreach ($aMetadata as $aSingleMetadatum) {
... ...
lib/foldermanagement/folderutil.inc.php
... ... @@ -250,7 +250,7 @@ class KTFolderUtil {
250 250  
251 251 // child folders.
252 252 $aCFIds = Folder::getList(array('parent_id = ?', array($iFolderId)), array('ids' => true));
253   - $aRemainingFolders = array_merge($aRemainingFolders, $aCFIds);
  253 + $aRemainingFolders = kt_array_merge($aRemainingFolders, $aCFIds);
254 254 }
255 255  
256 256 // FIXME we could subdivide this to provide a per-item display (viz. bulk upload, etc.)
... ... @@ -346,7 +346,7 @@ class KTFolderUtil {
346 346  
347 347 // child folders.
348 348 $aCFIds = Folder::getList(array('parent_id = ?', array($iFolderId)), array('ids' => true));
349   - $aRemainingFolders = array_merge($aRemainingFolders, $aCFIds);
  349 + $aRemainingFolders = kt_array_merge($aRemainingFolders, $aCFIds);
350 350 }
351 351  
352 352 if ((!empty($aFailedDocuments) || (!empty($aFailedFolders)))) {
... ... @@ -419,7 +419,7 @@ class KTFolderUtil {
419 419 }
420 420  
421 421 $aCFIds = Folder::getList(array('parent_id = ?', array($iFolderId)), array('ids' => true));
422   - $aRemainingFolders = array_merge($aRemainingFolders, $aCFIds);
  422 + $aRemainingFolders = kt_array_merge($aRemainingFolders, $aCFIds);
423 423 }
424 424  
425 425  
... ...
lib/groups/GroupUtil.php
... ... @@ -143,7 +143,7 @@ class GroupUtil {
143 143 "is_unit_admin" => false,
144 144 "is_system_admin" => false,
145 145 );
146   - $aDetails = array_merge($aDefaultDetails, $aGroupDetails);
  146 + $aDetails = kt_array_merge($aDefaultDetails, $aGroupDetails);
147 147 if (is_null(KTUtil::arrayGet($aDetails, "name"))) {
148 148 return PEAR::raiseError("Needed key name is not provided");
149 149 }
... ... @@ -172,7 +172,7 @@ class GroupUtil {
172 172 $aDefaultOptions = array(
173 173 //"active" => true,
174 174 );
175   - $aOptions = array_merge($aDefaultOptions, $aGivenOptions);
  175 + $aOptions = kt_array_merge($aDefaultOptions, $aGivenOptions);
176 176  
177 177 $aWhere = array();
178 178 /* if ($aOptions["active"] === true) {
... ... @@ -250,7 +250,7 @@ class GroupUtil {
250 250 foreach ($aGroupIDs as $iGroupID) {
251 251 $aExtraIDs = KTUtil::arrayGet($aGroupArray, $iGroupID);
252 252 if (is_array($aExtraIDs)) {
253   - $aGroupIDs = array_merge($aGroupIDs, $aExtraIDs);
  253 + $aGroupIDs = kt_array_merge($aGroupIDs, $aExtraIDs);
254 254 }
255 255 }
256 256 $aGroupIDs = array_unique($aGroupIDs);
... ... @@ -319,7 +319,7 @@ class GroupUtil {
319 319 if (is_null($aStuff)) {
320 320 continue;
321 321 }
322   - $v = array_unique(array_merge($v, $aStuff));
  322 + $v = array_unique(kt_array_merge($v, $aStuff));
323 323 sort($v);
324 324 }
325 325 $aExpandedGroups[$k] = $v;
... ... @@ -351,7 +351,7 @@ class GroupUtil {
351 351 $sTable = KTUtil::getTableName('users_groups');
352 352 $sQuery = 'SELECT group_id FROM ' . $sTable . ' WHERE user_id = ? AND group_id IN (' . DBUtil::paramArray($aSubgroups) . ')';
353 353 $aParams = array($oUser->getId());
354   - $aParams = array_merge($aParams, $aSubgroups);
  354 + $aParams = kt_array_merge($aParams, $aSubgroups);
355 355  
356 356 $res = DBUtil::getOneResult(array($sQuery, $aParams));
357 357 if (PEAR::isError($res)) {
... ...
lib/help/help.inc.php
... ... @@ -51,7 +51,7 @@ class KTHelp {
51 51  
52 52 $final_path = array(null,'kthelp', $path_segments[0]);
53 53 $final_path[] = $lang_code;
54   - $final_path = array_merge($final_path, array_slice($path_segments, 1));
  54 + $final_path = kt_array_merge($final_path, array_slice($path_segments, 1));
55 55  
56 56 $help_path = implode('/',$final_path);
57 57  
... ...
lib/metadata/metadatautil.inc.php
... ... @@ -646,7 +646,7 @@ class KTMetadataUtil {
646 646 $aGenericFieldsetIds = KTFieldset::getGenericFieldsets(array('ids' => true));
647 647 $aSpecificFieldsetIds = KTFieldset::getForDocumentType($iDocumentTypeId, array('ids' => true));
648 648  
649   - $aFieldsetIds = array_merge($aDocumentFieldsetIds, $aGenericFieldsetIds, $aSpecificFieldsetIds);
  649 + $aFieldsetIds = kt_array_merge($aDocumentFieldsetIds, $aGenericFieldsetIds, $aSpecificFieldsetIds);
650 650 $aFieldsetIds = array_unique($aFieldsetIds);
651 651 sort($aFieldsetIds);
652 652  
... ...
lib/permissions/permissiondescriptor.inc.php
... ... @@ -179,7 +179,7 @@ class KTPermissionDescriptor extends KTEntity {
179 179 $sQuery = "SELECT COUNT(group_id) AS num FROM $sTable
180 180 WHERE descriptor_id = ? AND group_id IN ($sGroupIDs)";
181 181 $aParams = array($this->getID());
182   - $aParams = array_merge($aParams, $aGroupIDs);
  182 + $aParams = kt_array_merge($aParams, $aGroupIDs);
183 183 $res = DBUtil::getOneResultKey(array($sQuery, $aParams), 'num');
184 184 if (PEAR::isError($res)) {
185 185 return $res;
... ... @@ -288,7 +288,7 @@ class KTPermissionDescriptor extends KTEntity {
288 288 $sQuery = "SELECT COUNT(role_id) AS num FROM $sTable
289 289 WHERE descriptor_id = ? AND role_id IN ($sRoleIDs)";
290 290 $aParams = array($this->getID());
291   - $aParams = array_merge($aParams, $aRoleIDs);
  291 + $aParams = kt_array_merge($aParams, $aRoleIDs);
292 292 $res = DBUtil::getOneResultKey(array($sQuery, $aParams), 'num');
293 293 if (PEAR::isError($res)) {
294 294 return $res;
... ... @@ -397,7 +397,7 @@ class KTPermissionDescriptor extends KTEntity {
397 397 $sQuery = "SELECT COUNT(user_id) AS num FROM $sTable
398 398 WHERE descriptor_id = ? AND user_id IN ($sUserIDs)";
399 399 $aParams = array($this->getID());
400   - $aParams = array_merge($aParams, $aUserIDs);
  400 + $aParams = kt_array_merge($aParams, $aUserIDs);
401 401 $res = DBUtil::getOneResultKey(array($sQuery, $aParams), 'num');
402 402 if (PEAR::isError($res)) {
403 403 return $res;
... ...
lib/permissions/permissionutil.inc.php
... ... @@ -324,8 +324,8 @@ class KTPermissionUtil {
324 324 }
325 325 // roles are _not_ always assigned (can be null at root)
326 326 if (!is_null($_roleCache[$iRoleId])) {
327   - $aMapPermAllowed[$iPermissionId]['user'] = array_merge($aAllowed['user'], $_roleCache[$iRoleId]->getUserIds());
328   - $aMapPermAllowed[$iPermissionId]['group'] = array_merge($aAllowed['group'], $_roleCache[$iRoleId]->getGroupIds());
  327 + $aMapPermAllowed[$iPermissionId]['user'] = kt_array_merge($aAllowed['user'], $_roleCache[$iRoleId]->getUserIds());
  328 + $aMapPermAllowed[$iPermissionId]['group'] = kt_array_merge($aAllowed['group'], $_roleCache[$iRoleId]->getGroupIds());
329 329 // naturally, roles cannot be assigned roles, or madness follows.
330 330 }
331 331 }
... ...
lib/search/searchutil.inc.php
... ... @@ -94,7 +94,7 @@ class KTSearchUtil {
94 94 foreach ($aSQL as $sSQL) {
95 95 if (is_array($sSQL)) {
96 96 $aCritQueries[] = '('.$sSQL[0].')';
97   - $aCritParams = array_merge($aCritParams , $sSQL[1]);
  97 + $aCritParams = kt_array_merge($aCritParams , $sSQL[1]);
98 98 } else {
99 99 $aCritQueries[] = '('.$sSQL.')';
100 100 }
... ... @@ -141,8 +141,8 @@ class KTSearchUtil {
141 141 $aSubgroup = KTUtil::arrayGet($aOneCriteriaSet, "subgroup");
142 142 if (!empty($aValues)) {
143 143 list($aThisCritQueries, $aThisParams, $aThisJoinSQL) = KTSearchUtil::_oneCriteriaSetToSQL($aOneCriteriaSet["values"]);
144   - $aJoinSQL = array_merge($aJoinSQL, $aThisJoinSQL);
145   - $aParams = array_merge($aParams, $aThisParams);
  144 + $aJoinSQL = kt_array_merge($aJoinSQL, $aThisJoinSQL);
  145 + $aParams = kt_array_merge($aParams, $aThisParams);
146 146 $tabs = str_repeat("\t", ($iRecurseLevel + 2));
147 147 $aSearchStrings[] = "\n$tabs(\n$tabs\t" . join("\n " . KTUtil::arrayGet($aOneCriteriaSet, 'join', "AND") . " ", $aThisCritQueries) . "\n$tabs)";
148 148 } else if (!empty($aSubgroup)) {
... ... @@ -154,7 +154,7 @@ class KTSearchUtil {
154 154 list($sThisSearchString, $aThisParams, $sThisJoinSQL) =
155 155 KTSearchUtil::criteriaSetToSQL($aOneCriteriaSet, $iRecurseLevel + 1);
156 156 $aJoinSQL[] = $sThisJoinSQL;
157   - $aParams = array_merge($aParams, $aThisParams);
  157 + $aParams = kt_array_merge($aParams, $aThisParams);
158 158 $aSearchStrings[] = $sThisSearchString;
159 159 }
160 160 }
... ... @@ -198,7 +198,7 @@ class KTSearchUtil {
198 198 $sPermissionDescriptors = DBUtil::paramArray($aPermissionDescriptors);
199 199 $sSQLString = "PLA.permission_descriptor_id IN ($sPermissionDescriptors)";
200 200 $aParams = array($oPermission->getId());
201   - $aParams = array_merge($aParams, $aPermissionDescriptors);
  201 + $aParams = kt_array_merge($aParams, $aPermissionDescriptors);
202 202 return array($sSQLString, $aParams, $sJoinSQL);
203 203 }
204 204 // }}}
... ... @@ -304,10 +304,10 @@ class KTSearchUtil {
304 304 // GROUP BY D.id
305 305  
306 306 $aParams = array();
307   - $aParams = array_merge($aParams, $aInitialJoinParams);
308   - $aParams = array_merge($aParams, $aPermissionParams);
  307 + $aParams = kt_array_merge($aParams, $aInitialJoinParams);
  308 + $aParams = kt_array_merge($aParams, $aPermissionParams);
309 309 $aParams[] = $sToSearch;
310   - $aParams = array_merge($aParams, $aCritParams);
  310 + $aParams = kt_array_merge($aParams, $aCritParams);
311 311  
312 312 return array($sQuery, $aParams);
313 313 }
... ...
lib/subscriptions/SubscriptionManager.inc
... ... @@ -139,7 +139,7 @@ class SubscriptionManager {
139 139 * @return array of subscription objects
140 140 */
141 141 function listSubscriptions($iUserID) {
142   - return $aSubscriptions = array_merge(SubscriptionManager::retrieveUserSubscriptions($iUserID, SubscriptionEvent::subTypes('Folder')),
  142 + return $aSubscriptions = kt_array_merge(SubscriptionManager::retrieveUserSubscriptions($iUserID, SubscriptionEvent::subTypes('Folder')),
143 143 SubscriptionManager::retrieveUserSubscriptions($iUserID, SubscriptionEvent::subTypes('Document')));
144 144 }
145 145  
... ... @@ -173,7 +173,7 @@ class SubscriptionManager {
173 173 * @return array of subscription objects
174 174 */
175 175 function listSubscriptionAlerts($iUserID) {
176   - return $aSubscriptions = array_merge(SubscriptionManager::retrieveSubscriptionAlerts($iUserID, SubscriptionEvent::subTypes("Folder")),
  176 + return $aSubscriptions = kt_array_merge(SubscriptionManager::retrieveSubscriptionAlerts($iUserID, SubscriptionEvent::subTypes("Folder")),
177 177 SubscriptionManager::retrieveSubscriptionAlerts($iUserID, SubscriptionEvent::subTypes("Document")));
178 178 }
179 179  
... ...
lib/subscriptions/subscriptions.inc.php
... ... @@ -619,7 +619,7 @@ class SubscriptionEvent {
619 619 // after this has been called.
620 620 function _pruneAlertedUsers($aUserIds) {
621 621 $returnArray = array_diff($aUserIds, $this->alertedUsers);
622   - $this->alertedUsers = array_merge($returnArray, $this->alertedUsers); // now contains all users who will have been alerted.
  622 + $this->alertedUsers = kt_array_merge($returnArray, $this->alertedUsers); // now contains all users who will have been alerted.
623 623 return $returnArray;
624 624 }
625 625  
... ...
lib/util/ktutil.inc
... ... @@ -570,4 +570,29 @@ class KTUtil {
570 570  
571 571 }
572 572  
  573 +/**
  574 + *
  575 + * Merges two arrays using array_merge
  576 + *
  577 + * array_merge in PHP5 got more strict about its parameter handling,
  578 + * forcing arrays.
  579 + *
  580 + */
  581 +if (version_compare(phpversion(), '5.0') === -1) {
  582 + function kt_array_merge() {
  583 + $args = func_get_args();
  584 + return call_user_func_array("array_merge",$args);
  585 + }
  586 +} else {
  587 + eval('
  588 + function kt_array_merge() {
  589 + $args = func_get_args();
  590 + foreach ($args as &$arg) {
  591 + $arg = (array)$arg;
  592 + }
  593 + return call_user_func_array("array_merge",$args);
  594 + }
  595 + ');
  596 +}
  597 +
573 598 ?>
... ...
lib/workflow/workflowutil.inc.php
... ... @@ -591,7 +591,7 @@ class KTWorkflowUtil {
591 591 $aGroupMembershipSet = GroupUtil::buildGroupArray();
592 592 $aAllIds = array_keys($aGroups);
593 593 foreach ($aGroups as $id => $oGroup) {
594   - $aAllIds = array_merge($aGroupMembershipSet[$id], $aAllIds);
  594 + $aAllIds = kt_array_merge($aGroupMembershipSet[$id], $aAllIds);
595 595 }
596 596  
597 597 foreach ($aAllIds as $id) {
... ...
plugins/ktcore/KTPermissions.php
... ... @@ -525,7 +525,7 @@ class KTRoleAllocationPlugin extends KTFolderAction {
525 525 if (PEAR::isError($aNewFolders)) {
526 526 $this->errorRedirectToMain(_kt('Failure to generate folderlisting.'));
527 527 }
528   - $folder_queue = array_merge ($folder_queue, (array) $aNewFolders); // push.
  528 + $folder_queue = kt_array_merge ($folder_queue, (array) $aNewFolders); // push.
529 529  
530 530  
531 531 // update the folder.
... ...
plugins/ktcore/admin/workflows.php
... ... @@ -256,7 +256,7 @@ class KTWorkflowDispatcher extends KTAdminDispatcher {
256 256 $aNamedActions[] = $aInfo['actions_by_name'][$sName];
257 257 }
258 258  
259   - $aThese = array_merge($aAlways, $aNamedActions);
  259 + $aThese = kt_array_merge($aAlways, $aNamedActions);
260 260 // some controlled. we need to be careful here: list actions that _are always_ available
261 261 if (empty($aThese)) { return _kt('No actions available.'); }
262 262  
... ...
plugins/ktstandard/KTBulkExportPlugin.php
... ... @@ -170,7 +170,7 @@ class KTBulkExportAction extends KTFolderAction {
170 170 KTUtil::getTableName("document_content_version"),
171 171 $sPermissionJoin, $sWhere);
172 172 $aParams = array();
173   - $aParams = array_merge($aParams, $aPermissionParams);
  173 + $aParams = kt_array_merge($aParams, $aPermissionParams);
174 174 $aParentFolderIds = split(',', $this->oFolder->getParentFolderIds());
175 175 $aParentFolderIds[] = $this->oFolder->getId();
176 176 if ($aParentFolderIds[0] == 0) {
... ...
plugins/ktstandard/contents/BaseIndexer.php
... ... @@ -116,7 +116,7 @@ class KTBaseIndexerTrigger {
116 116 }
117 117  
118 118 $cmdline = array($sCommand);
119   - $cmdline = array_merge($cmdline, $this->args);
  119 + $cmdline = kt_array_merge($cmdline, $this->args);
120 120 $cmdline[] = $sFilename;
121 121  
122 122 $aOptions = array();
... ...