Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
fusiondirectory
fusiondirectory
Commits
29ffe140
Commit
29ffe140
authored
Apr 06, 2017
by
Côme Chilliet
Browse files
Attempts at cleaning code and gaining speed
Not much progress seen in profiling results
parent
75d1ee51
Changes
3
Hide whitespace changes
Inline
Side-by-side
include/class_listing.inc
View file @
29ffe140
...
...
@@ -59,7 +59,6 @@ class listing
protected
$snapshotHandler
=
NULL
;
var
$exporter
=
array
();
var
$exportColumns
=
array
();
var
$useSpan
=
FALSE
;
var
$height
=
0
;
var
$scrollPosition
=
0
;
var
$baseSelector
;
...
...
@@ -340,25 +339,24 @@ class listing
function
render
()
{
// Check for exeeded sizelimit
if
((
$message
=
check_sizelimit
())
!=
""
)
{
if
((
$message
=
check_sizelimit
())
!=
''
)
{
return
$message
;
}
// Initialize list
$result
=
"
<input type=
'
hidden
'
value=
'
$this->pid
'
name=
'
PID
'>
\n
"
;
$result
.
=
"
<input type=
'
hidden
'
name=
'
position_
"
.
$this
->
pid
.
"
' id=
'
position_
"
.
$this
->
pid
.
"'>
\n
"
;
$result
=
'
<input type=
"
hidden
"
value=
"'
.
$this
->
pid
.
'"
name=
"
PID
"/>'
.
"
\n
"
;
$result
.
=
'
<input type=
"
hidden
"
name=
"
position_
'
.
$this
->
pid
.
'
"
id=
"
position_
'
.
$this
->
pid
.
'"/>'
.
"
\n
"
;
$height
=
450
;
if
(
$this
->
height
!=
0
)
{
$result
.
=
"
<input type=
'
hidden
'
value=
'
$this->height
'
id=
'
d_height
'>
\n
"
;
$result
.
=
'
<input type=
"
hidden
"
value=
"'
.
$this
->
height
.
'"
id=
"
d_height
"/>'
.
"
\n
"
;
$height
=
$this
->
height
;
}
$result
.
=
"<div id='d_scrollbody' style='width:100%;'>
\n
"
;
$result
.
=
"<table style='width:100%;' id='t_scrolltable' class='listingTable'>
\n
"
;
$this
->
numColumns
=
count
(
$this
->
colprops
)
+
(
$this
->
multiSelect
?
1
:
0
);
$result
.
=
'<div id="d_scrollbody" style="width:100%;"/>'
.
"
\n
"
;
$result
.
=
'<table style="width:100%;" id="t_scrolltable" class="listingTable">'
.
"
\n
"
;
// Build list header
$result
.
=
"
<thead><tr>
\n
"
;
$result
.
=
'
<thead><tr>
'
.
"
\n
"
;
if
(
$this
->
multiSelect
)
{
$width
=
'24px'
;
$result
.
=
'<th style="text-align:center;padding:0;width:'
.
$width
.
';"><input type="checkbox" id="select_all" name="select_all" title="'
.
_
(
'Select all'
)
.
'" onClick=\'toggle_all_(\"listing_selected_[0-9]*$\",\"select_all\");\' ></th>'
.
"
\n
"
;
...
...
@@ -366,22 +364,17 @@ class listing
foreach
(
$this
->
header
as
$header
)
{
$result
.
=
$header
;
}
$result
.
=
"
</tr></thead>
\n
"
;
$result
.
=
'
</tr></thead>
'
.
"
\n
"
;
// Build list body
$result
.
=
"
<tbody id=
'
t_nscrollbody
'>
\n
"
;
$result
.
=
'
<tbody id=
"
t_nscrollbody
">'
.
"
\n
"
;
// No results? Just take an empty colspanned row
if
(
count
(
$this
->
entries
)
+
count
(
$this
->
departments
)
==
0
)
{
$result
.
=
'<tr><td colspan="'
.
$this
->
numColumns
.
'" style="height:100%;width:100%;"> </td></tr>'
.
"
\n
"
;
$result
.
=
'<tr><td colspan="'
.
$this
->
numColumns
+
(
$this
->
multiSelect
?
1
:
0
)
.
'" style="height:100%;width:100%;"> </td></tr>'
.
"
\n
"
;
}
// Line color alternation
$alt
=
0
;
$deps
=
0
;
// Draw department browser if configured and we're not in sub mode
$this
->
useSpan
=
FALSE
;
if
(
$this
->
departmentBrowser
&&
(
$this
->
filter
->
scope
!=
'sub'
))
{
// Fill with department browser if configured this way
$departmentIterator
=
new
departmentSortIterator
(
$this
->
departments
,
$this
->
sortDirection
[
$this
->
sortColumn
]);
...
...
@@ -394,27 +387,22 @@ class listing
}
// Render defined department columns, fill the rest with some stuff
$rest
=
$this
->
numColumns
-
1
;
$rest
=
$this
->
numColumns
;
foreach
(
$this
->
xmlData
[
'table'
][
'department'
]
as
$index
=>
$cfg
)
{
$colspan
=
1
;
if
(
isset
(
$cfg
[
'span'
]))
{
$colspan
=
$cfg
[
'span'
];
$this
->
useSpan
=
TRUE
;
$colspan
=
$cfg
[
'span'
];
}
$result
.
=
'<td colspan="'
.
$colspan
.
'" '
.
$this
->
colprops
[
$index
]
.
'>'
.
$this
->
renderCell
(
'department'
,
$index
,
$cfg
[
'value'
],
$entry
,
$row
)
.
'</td>'
;
$rest
-=
$colspan
;
}
// Fill remaining cols with nothing
$last
=
$this
->
numColumns
-
$rest
;
for
(
$i
=
0
;
$i
<
$rest
;
$i
++
)
{
$result
.
=
'<td '
.
$this
->
colprops
[
$last
+
$i
-
1
]
.
'> </td>'
;
for
(
$i
=
$this
->
numColumns
-
$rest
;
$i
<
$this
->
numColumns
;
$i
++
)
{
$result
.
=
'<td '
.
$this
->
colprops
[
$i
]
.
'> </td>'
;
}
$result
.
=
'</tr>'
;
$alt
++
;
}
$deps
=
$alt
;
}
// Fill with contents, sort as configured
...
...
@@ -456,7 +444,6 @@ class listing
}
$result
.
=
"</tr>
\n
"
;
$alt
++
;
}
// Close list body
...
...
@@ -773,10 +760,6 @@ class listing
// Watch out for filters and prepare to execute them
$data
=
$this
->
processElementFilter
(
$table
,
$index
,
$data
,
$cfg
,
$row
);
// Replace all non replaced %{...} instances because they
// are non resolved attributes or filters
$data
=
preg_replace
(
'/%{[^}]+}/'
,
' '
,
$data
);
return
$data
;
}
...
...
@@ -796,15 +779,15 @@ class listing
if
(
isset
(
$this
->
filterCache
[
$type
.
$index
]))
{
$filters
=
$this
->
filterCache
[
$type
.
$index
];
}
else
{
preg_match_all
(
'/%{filter:([^(]+)\((.*)\)}/'
,
$data
,
$matches
,
PREG_SET_ORDER
);
preg_match_all
(
'/%{filter:([^(]+)\((.*)\)}/'
,
$data
,
$matches
,
PREG_SET_ORDER
|
PREG_OFFSET_CAPTURE
);
$filters
=
array
();
foreach
(
$matches
as
$match
)
{
$cl
=
''
;
$method
=
''
;
if
(
!
preg_match
(
'/^(.*)::(.*)$/'
,
$match
[
1
],
$m
))
{
if
(
!
isset
(
$this
->
filters
[
$match
[
1
]])
||
!
preg_match
(
'/^(.*)::(.*)$/'
,
$this
->
filters
[
$match
[
1
]],
$m
))
{
trigger_error
(
'Unknown filter '
.
$match
[
1
]);
if
(
!
preg_match
(
'/^(.*)::(.*)$/'
,
$match
[
1
]
[
0
]
,
$m
))
{
if
(
!
isset
(
$this
->
filters
[
$match
[
1
]
[
0
]
])
||
!
preg_match
(
'/^(.*)::(.*)$/'
,
$this
->
filters
[
$match
[
1
]
[
0
]
],
$m
))
{
trigger_error
(
'Unknown filter '
.
$match
[
1
]
[
0
]
);
continue
;
}
}
...
...
@@ -812,16 +795,16 @@ class listing
$method
=
$m
[
2
];
// Prepare params for function call
preg_match_all
(
'/"[^"]+"|[^,]+/'
,
$match
[
2
],
$parts
);
preg_match_all
(
'/"[^"]+"|[^,]+/'
,
$match
[
2
]
[
0
]
,
$parts
);
$filters
[
$match
[
0
]]
=
array
(
$cl
,
$method
,
$parts
[
0
]);
$filters
[
$match
[
0
]
[
0
]
]
=
array
(
$cl
,
$method
,
$parts
[
0
]
,
$match
[
0
][
1
]
);
}
$this
->
filterCache
[
$type
.
$index
]
=
$filters
;
}
foreach
(
$filters
as
$filterstring
=>
$filter
)
{
list
(
$cl
,
$method
,
$parts
)
=
$filter
;
list
(
$cl
,
$method
,
$parts
,
$offset
)
=
$filter
;
$params
=
array
();
foreach
(
$parts
as
$param
)
{
switch
(
$param
)
{
...
...
@@ -864,10 +847,10 @@ class listing
// Replace information
if
(
$cl
==
'listing'
)
{
// Non static call
$data
=
preg
_replace
(
'/'
.
preg_quote
(
$filterstring
)
.
'/'
,
call_user_func_array
(
array
(
$this
,
$method
),
$params
),
$
data
);
$data
=
substr
_replace
(
$data
,
call_user_func_array
(
array
(
$this
,
$method
),
$params
),
$
offset
,
strlen
(
$filterstring
)
);
}
else
{
// Static call
$data
=
preg
_replace
(
'/'
.
preg_quote
(
$filterstring
)
.
'/'
,
call_user_func_array
(
array
(
$cl
,
$method
),
$params
),
$
data
);
$data
=
substr
_replace
(
$data
,
call_user_func_array
(
array
(
$cl
,
$method
),
$params
),
$
offset
,
strlen
(
$filterstring
)
);
}
}
...
...
@@ -1003,13 +986,13 @@ class listing
{
// Do nothing if there's no menu defined
if
(
!
isset
(
$this
->
xmlData
[
'actiontriggers'
][
'action'
]))
{
return
"
"
;
return
'
'
;
}
// Go thru all actions
$result
=
''
;
$emptyimg
=
'<img src="images/empty.png" alt=" " class="center optional"/>'
;
foreach
(
$this
->
xmlData
[
'actiontriggers'
][
'action'
]
as
&
$action
)
{
foreach
(
$this
->
xmlData
[
'actiontriggers'
][
'action'
]
as
$action
)
{
// If there's an objectclass definition and we don't have it
// add an empty picture here.
if
(
isset
(
$action
[
'objectclass'
]))
{
...
...
@@ -1085,7 +1068,6 @@ class listing
}
}
}
unset
(
$action
);
return
$result
;
}
...
...
include/class_listingSortIterator.inc
View file @
29ffe140
...
...
@@ -42,7 +42,7 @@ class listingSortIterator implements Iterator {
*
* \param string $type
*/
public
function
__construct
(
$data
,
$direction
,
$attribute
,
$type
=
"
string
"
)
public
function
__construct
(
$data
,
$direction
,
$attribute
,
$type
=
'
string
'
)
{
// Sort for attribute
if
(
$attribute
!=
''
)
{
...
...
@@ -60,7 +60,7 @@ class listingSortIterator implements Iterator {
}
// Extract values from ao and bo
$a
=
$b
=
""
;
$a
=
$b
=
''
;
if
(
isset
(
$ao
[
$attribute_a
]))
{
$a
=
$ao
[
$attribute_a
];
if
(
is_array
(
$a
))
{
...
...
@@ -88,16 +88,16 @@ class listingSortIterator implements Iterator {
return
$b
-
$a
;
case
'date'
:
if
(
$a
==
""
)
{
$a
=
"
31.12.0000
"
;
if
(
$a
==
''
)
{
$a
=
'
31.12.0000
'
;
}
if
(
$b
==
""
)
{
$b
=
"
31.12.0000
"
;
if
(
$b
==
''
)
{
$b
=
'
31.12.0000
'
;
}
list
(
$d
,
$m
,
$y
)
=
explode
(
'.'
,
$a
);
$a
=
(
int
)
sprintf
(
"
%04d%02d%02d
"
,
$y
,
$m
,
$d
);
$a
=
(
int
)
sprintf
(
'
%04d%02d%02d
'
,
$y
,
$m
,
$d
);
list
(
$d
,
$m
,
$y
)
=
explode
(
'.'
,
$b
);
$b
=
(
int
)
sprintf
(
"
%04d%02d%02d
"
,
$y
,
$m
,
$d
);
$b
=
(
int
)
sprintf
(
'
%04d%02d%02d
'
,
$y
,
$m
,
$d
);
return
$b
-
$a
;
case
'ip'
:
...
...
include/class_userinfo.inc
View file @
29ffe140
...
...
@@ -786,7 +786,6 @@ class userinfo
function
get_complete_category_acls
(
$dn
,
$category
)
{
global
$config
;
$acl
=
'rwcdm'
;
if
(
!
is_string
(
$category
))
{
trigger_error
(
'category must be string'
);
...
...
@@ -795,6 +794,7 @@ class userinfo
if
(
isset
(
$this
->
result_cache
[
'get_complete_category_acls'
][
$dn
][
$category
]))
{
return
$this
->
result_cache
[
'get_complete_category_acls'
][
$dn
][
$category
];
}
$acl
=
'rwcdm'
;
if
(
isset
(
$config
->
data
[
'CATEGORIES'
][
$category
]))
{
foreach
(
$config
->
data
[
'CATEGORIES'
][
$category
][
'classes'
]
as
$oc
)
{
if
(
$oc
==
'0'
)
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment