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
typo3
qfq
Commits
9ca36dd1
Commit
9ca36dd1
authored
Apr 07, 2020
by
Carsten Rose
Browse files
Fixes #10379. Implements SQL 'QSLUGIFY()''
parent
8aa06da6
Pipeline
#3412
passed with stages
in 4 minutes and 2 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Documentation/Index.rst
View file @
9ca36dd1
...
@@ -65,9 +65,7 @@ an `issue <https://project.math.uzh.ch/projects/qfq>`_
...
@@ -65,9 +65,7 @@ an `issue <https://project.math.uzh.ch/projects/qfq>`_
This documentation is for the TYPO3 extension **qfq**.
This documentation is for the TYPO3 extension **qfq**.
**Sitemap:**
:ref:`sitemap`
:ref:`sitemap`
.. toctree::
.. toctree::
...
...
Documentation/Manual.rst
View file @
9ca36dd1
...
@@ -7280,6 +7280,22 @@ Output::
...
@@ -7280,6 +7280,22 @@ Output::
31.12.2019 23:55 / - / -
31.12.2019 23:55 / - / -
.. _qlugify:
QSLUGIFY: clean a string
^^^^^^^^^^^^^^^^^^^^^^^^
Convert a string to only use alphanumerical characters and '-'. Characters with accent will be replaced without the accent.
Non alphanumerical characters are stripped off. Spaces are replaced by '-'. All characters are lowercase.
Example::
10.sql = SELECT QSLUGIFY('abcd ABCD ae.ä.oe.ö.ue.ü z[]{}()<>.,?Z')
Output::
abcd-abcd-ae-a-oe-o-ue-u-z-z
.. _strip_tags:
.. _strip_tags:
strip_tags: strip html tags
strip_tags: strip html tags
...
...
extension/Classes/Sql/function.sql
View file @
9ca36dd1
###
###
###
#
#
#
GETFUNCTIONSHASH
()
is
used
for
checking
whether
this
file
has
been
played
properly
in
DatabaseUpdate
.
php
#
GETFUNCTIONSHASH
()
is
used
for
checking
whether
this
file
has
been
played
properly
in
DatabaseUpdate
.
php
#
#
...
@@ -128,12 +129,122 @@ END;
...
@@ -128,12 +129,122 @@ END;
#
#
DROP
FUNCTION
IF
EXISTS
QDATE_FORMAT
;
DROP
FUNCTION
IF
EXISTS
QDATE_FORMAT
;
CREATE
FUNCTION
`QDATE_FORMAT`
(
ts
DATETIME
)
CREATE
FUNCTION
`QDATE_FORMAT`
(
ts
DATETIME
)
RETURNS
TEXT
RETURNS
TEXT
DETERMINISTIC
DETERMINISTIC
SQL
SECURITY
INVOKER
SQL
SECURITY
INVOKER
BEGIN
BEGIN
DECLARE
output
TEXT
;
DECLARE
output
TEXT
;
SET
output
=
IF
(
ts
=
0
,
'-'
,
DATE_FORMAT
(
ts
,
"%d.%m.%Y %H:%i"
));
SET
output
=
IF
(
ts
=
0
,
'-'
,
DATE_FORMAT
(
ts
,
"%d.%m.%Y %H:%i"
));
RETURN
output
;
RETURN
output
;
END
;
###
#
#
QSLUGIFY
(
string
)
#
/*
The MIT License (MIT)
Copyright (c) 2014 jose reis<jose.reis@artbit.pt>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Credits:
- http://stackoverflow.com/questions/5409831/mysql-stored-function-to-create-a-slug
*/
DROP
FUNCTION
IF
EXISTS
`QSLUGIFY`
;
CREATE
FUNCTION
`QSLUGIFY`
(
dirty_string
varchar
(
255
))
RETURNS
varchar
(
255
)
CHARSET
utf8
DETERMINISTIC
BEGIN
DECLARE
x
,
y
,
z
,
k
INT
;
DECLARE
temp_string
,
new_string
,
accents
,
noAccents
VARCHAR
(
255
);
DECLARE
is_allowed
BOOL
;
DECLARE
c
,
check_char
VARCHAR
(
1
);
-- IF NULL DO NOT PROCEED
If
dirty_string
IS
NULL
Then
return
dirty_string
;
End
If
;
set
temp_string
=
LOWER
(
dirty_string
);
-- REPLACE ACCENTS
-- WITH CAPS
-- set accents = 'ŠšŽžÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝŸÞàáâãäåæçèéêëìíîïñòóôõöøùúûüýÿþƒ';
-- set noAccents = 'SsZzAAAAAAACEEEEIIIINOOOOOOUUUUYYBaaaaaaaceeeeiiiinoooooouuuuyybf';
-- ONLY SMALL CAPS
set
accents
=
'šžàáâãäåæçèéêëìíîïñòóôõöøùúûüýÿþƒ'
;
set
noAccents
=
'szaaaaaaaceeeeiiiinoooooouuuuyybf'
;
set
k
=
CHAR_LENGTH
(
accents
);
while
k
>
0
do
set
temp_string
=
REPLACE
(
temp_string
,
SUBSTRING
(
accents
,
k
,
1
),
SUBSTRING
(
noAccents
,
k
,
1
));
set
k
=
k
-
1
;
end
while
;
-- CONVERT & TO EMPTY SPACE
Set
temp_string
=
REPLACE
(
temp_string
,
'&'
,
''
);
-- REPLACE ALL UNWANTED CHARS
Select
temp_string
REGEXP
(
'[^a-z0-9
\-
]+'
)
into
x
;
If
x
=
1
then
set
z
=
1
;
set
k
=
CHAR_LENGTH
(
temp_string
);
While
z
<=
k
Do
Set
c
=
SUBSTRING
(
temp_string
,
z
,
1
);
Set
is_allowed
=
FALSE
;
If
!
((
ascii
(
c
)
=
45
)
or
(
ascii
(
c
)
>=
48
and
ascii
(
c
)
<=
57
)
or
(
ascii
(
c
)
>=
97
and
ascii
(
c
)
<=
122
))
Then
Set
temp_string
=
REPLACE
(
temp_string
,
c
,
'-'
);
End
If
;
set
z
=
z
+
1
;
End
While
;
End
If
;
Select
temp_string
REGEXP
(
"^-|-$|'"
)
into
x
;
If
x
=
1
Then
Set
temp_string
=
Replace
(
temp_string
,
"'"
,
''
);
Set
z
=
CHAR_LENGTH
(
temp_string
);
Set
y
=
CHAR_LENGTH
(
temp_string
);
Dash_check
:
While
z
>
1
Do
If
STRCMP
(
SUBSTRING
(
temp_string
,
-
1
,
1
),
'-'
)
=
0
Then
Set
temp_string
=
SUBSTRING
(
temp_string
,
1
,
y
-
1
);
Set
y
=
y
-
1
;
Else
Leave
Dash_check
;
End
If
;
Set
z
=
z
-
1
;
End
While
;
End
If
;
Repeat
Select
temp_string
REGEXP
(
"--"
)
into
x
;
If
x
=
1
Then
Set
temp_string
=
REPLACE
(
temp_string
,
"--"
,
"-"
);
End
If
;
Until
x
<>
1
End
Repeat
;
If
LOCATE
(
'-'
,
temp_string
)
=
1
Then
Set
temp_string
=
SUBSTRING
(
temp_string
,
2
);
End
If
;
Return
temp_string
;
END
;
END
;
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