Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1879300
book.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
3 KB
Subscribers
None
book.php
View Options
<?php
/**
* DokuWiki Plugin DAVCard (Book Syntax Component)
*
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
* @author Andreas Böhler <dev@aboehler.at>
*/
// must be run within Dokuwiki
if
(!
defined
(
'DOKU_INC'
))
die
();
if
(!
defined
(
'DOKU_PLUGIN'
))
define
(
'DOKU_PLUGIN'
,
DOKU_INC
.
'lib/plugins/'
);
require_once
(
DOKU_PLUGIN
.
'syntax.php'
);
class
syntax_plugin_davcard_book
extends
DokuWiki_Syntax_Plugin
{
protected
$hlp
=
null
;
// Load the helper plugin
public
function
syntax_plugin_davcard_book
()
{
$this
->
hlp
=&
plugin_load
(
'helper'
,
'davcard'
);
}
/**
* What kind of syntax are we?
*/
function
getType
(){
return
'substition'
;
}
/**
* What about paragraphs?
*/
function
getPType
(){
return
'normal'
;
}
/**
* Where to sort in?
*/
function
getSort
(){
return
165
;
}
/**
* Connect pattern to lexer
*/
function
connectTo
(
$mode
)
{
$this
->
Lexer
->
addSpecialPattern
(
'
\{\{
davcardbook>[^}]*
\}\}
'
,
$mode
,
'plugin_davcard_book'
);
}
/**
* Handle the match
*/
function
handle
(
$match
,
$state
,
$pos
,
Doku_Handler
$handler
){
global
$ID
;
$options
=
trim
(
substr
(
$match
,
14
,-
2
));
$options
=
explode
(
','
,
$options
);
$data
=
array
(
'name'
=>
$ID
,
'description'
=>
$this
->
getLang
(
'created_by_davcard'
),
'id'
=>
''
,
);
foreach
(
$options
as
$option
)
{
list
(
$key
,
$val
)
=
explode
(
'='
,
$option
);
$key
=
strtolower
(
trim
(
$key
));
$val
=
trim
(
$val
);
switch
(
$key
)
{
case
'id'
:
if
(!
in_array
(
$val
,
$data
[
'id'
]))
$data
[
'id'
][]
=
$val
;
break
;
default
:
$data
[
$key
]
=
$val
;
}
}
// Handle the default case when the user didn't enter a different ID
if
(
empty
(
$data
[
'id'
]))
{
$data
[
'id'
]
=
array
(
$ID
);
}
// Only update the addressbook name/description if the ID matches the page ID.
// Otherwise, the addressbook is included in another page and we don't want
// to interfere with its data.
if
(
in_array
(
$ID
,
$data
[
'id'
]))
{
if
(
isset
(
$_SERVER
[
'REMOTE_USER'
])
&&
!
is_null
(
$_SERVER
[
'REMOTE_USER'
]))
$username
=
$_SERVER
[
'REMOTE_USER'
];
else
$username
=
uniqid
(
'davcard-'
);
$this
->
hlp
->
setAddressbookNameForPage
(
$data
[
'name'
],
$data
[
'description'
],
$ID
,
$username
);
}
$meta
=
p_get_metadata
(
$ID
,
'plugin_davcard'
);
if
(
is_null
(
$meta
))
$meta
=
array
();
$meta
[
'addressbooks'
]
=
$data
;
p_set_metadata
(
$ID
,
array
(
'plugin_davcard'
=>
$meta
));
}
/**
* Create output
*/
function
render
(
$format
,
Doku_Renderer
$R
,
$data
)
{
global
$ID
;
if
(
$format
!==
'xhtml'
)
return
false
;
// FIXME: Check if the user has write permissions on the page!
// Should we force per-user caching?
$R
->
doc
.=
'<div class="davcardAddressbookAddNew"><a href="#" class="davcardAddressbookAddNew">'
.
$this
->
getLang
(
'add_new'
).
'</a></div>'
;
$R
->
doc
.=
'<div id="davcardAddressbookList" data-addressbookpage="'
.
$ID
.
'">'
;
$R
->
doc
.=
'</div>'
;
}
}
// vim:ts=4:sw=4:et:enc=utf-8:
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Thu, Jan 23, 6:12 PM (6 h, 7 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
922297
Default Alt Text
book.php (3 KB)
Attached To
rDAVCARD DokuWiki davcard PlugIn
Event Timeline
Log In to Comment