OSDN Git Service

ACTIONS.phpのシンタックスエラーを修正
[nucleus-jp/nucleus-next.git] / nucleus / libs / ACTIONS.php
1 <?php\r
2 /**\r
3  * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
4  * Copyright (C) 2002-2012 The Nucleus Group\r
5  *\r
6  * This program is free software; you can redistribute it and/or\r
7  * modify it under the terms of the GNU General Public License\r
8  * as published by the Free Software Foundation; either version 2\r
9  * of the License, or (at your option) any later version.\r
10  * (see nucleus/documentation/index.html#license for more info)\r
11  */\r
12 /**\r
13  * This class contains the functions that get called by using\r
14  * the special tags in the skins\r
15  *\r
16  * The allowed tags for a type of skinpart are defined by the\r
17  * Skin::getAllowedActionsForType($type) method\r
18  *\r
19  * @license http://nucleuscms.org/license.txt GNU General Public License\r
20  * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
21  * @version $Id: ACTIONS.php 1721 2012-03-31 10:18:25Z sakamocchi $\r
22  */\r
23 \r
24 class Actions extends BaseActions\r
25 {\r
26         // part of the skin currently being parsed ('index', 'item', 'archive',\r
27         // 'archivelist', 'member', 'search', 'error', 'imagepopup')\r
28         var $skintype;\r
29         \r
30         // contains an assoc array with parameters that need to be included when\r
31         // generating links to items/archives/... (e.g. catid)\r
32         var $linkparams;\r
33         \r
34         // reference to the skin object for which a part is being parsed\r
35         var $skin;\r
36         \r
37         // used when including templated forms from the include/ dir. The $formdata var\r
38         // contains the values to fill out in there (assoc array name -> value)\r
39         var $formdata;\r
40         \r
41         // filled out with the number of displayed items after calling one of the\r
42         // (other)blog/(other)searchresults skinvars.\r
43         var $amountfound;\r
44         \r
45         /**\r
46          * Actions::__construct()\r
47          * Constructor for a new Actions object\r
48          * \r
49          * @param       string  $type\r
50          * @return      void\r
51          */\r
52         public function __construct($type)\r
53         {\r
54                 global $catid;\r
55                 \r
56                 // call constructor of superclass first\r
57                 $this->BaseActions();\r
58                 $this->skintype = $type;\r
59                 \r
60                 if ( $catid )\r
61                 {\r
62                         $this->linkparams = array('catid' => $catid);\r
63                 }\r
64                 return;\r
65         }\r
66         \r
67         /**\r
68          * Actions::setSkin()\r
69          * Set the skin\r
70          * @param       object  $skin   an instance of Skin class\r
71          * @return      void\r
72          */\r
73         public function setSkin(&$skin)\r
74         {\r
75                 $this->skin =& $skin;\r
76                 return;\r
77         }\r
78         \r
79         /**\r
80          * Actions::setParser()\r
81          * Set the parser\r
82          * \r
83          * @param       object  $parser an instance of Parser class\r
84          * @return      void\r
85          */\r
86         public function setParser(&$parser)\r
87         {\r
88                 $this->parser =& $parser;\r
89                 return;\r
90         }\r
91         \r
92         /**\r
93          * Actions::doForm()\r
94          * Forms get parsedincluded now, using an extra <formdata> skinvar\r
95          *\r
96          * @param       string  $filename\r
97          * @return      void\r
98          */\r
99         public function doForm($filename)\r
100         {\r
101                 global $DIR_NUCLEUS;\r
102                 array_push($this->parser->actions,'formdata','text','callback','errordiv','ticket');\r
103                 \r
104                 $oldIncludeMode = Parser::getProperty('IncludeMode');\r
105                 $oldIncludePrefix = Parser::getProperty('IncludePrefix');\r
106                 Parser::setProperty('IncludeMode','normal');\r
107                 Parser::setProperty('IncludePrefix','');\r
108                 \r
109                 $this->parse_parsedinclude($DIR_NUCLEUS . 'forms/' . $filename . '.template');\r
110                 Parser::setProperty('IncludeMode',$oldIncludeMode);\r
111                 Parser::setProperty('IncludePrefix',$oldIncludePrefix);\r
112                 \r
113                 array_pop($this->parser->actions);      // errordiv\r
114                 array_pop($this->parser->actions);      // callback\r
115                 array_pop($this->parser->actions);      // text\r
116                 array_pop($this->parser->actions);      // formdata\r
117                 array_pop($this->parser->actions);      // ticket\r
118                 return;\r
119         }\r
120 \r
121         /**\r
122          * Actions::checkCondition()\r
123          * Checks conditions for if statements\r
124          *\r
125          * @param       string  $field  type of <%if%>\r
126          * @param       string  $name   property of field\r
127          * @param       string  $value  value of property\r
128          * @return      boolean condition\r
129          */\r
130         public function checkCondition($field, $name='', $value = '')\r
131         {\r
132                 global $catid, $blog, $member, $itemidnext, $itemidprev, $manager, $archiveprevexists, $archivenextexists;\r
133                 \r
134                 $condition = 0;\r
135                 switch ( $field )\r
136                 {\r
137                         case 'category':\r
138                                 $condition = ($blog && $this->ifCategory($name,$value));\r
139                                 break;\r
140                         case 'blogsetting':\r
141                                 $condition = ($blog && ($blog->getSetting($name) == $value));\r
142                                 break;\r
143                         case 'loggedin':\r
144                                 $condition = $member->isLoggedIn();\r
145                                 break;\r
146                         case 'onteam':\r
147                                 $condition = $member->isLoggedIn() && $this->ifOnTeam($name);\r
148                                 break;\r
149                         case 'admin':\r
150                                 $condition = $member->isLoggedIn() && $this->ifAdmin($name);\r
151                                 break;\r
152                         case 'superadmin':\r
153                                 $condition = $member->isLoggedIn() && $member->isAdmin();\r
154                                 break;\r
155                         case 'allowloginedit':\r
156                                 $condition = $member->isLoggedIn() && ($CONF['AllowLoginEdit'] || $member->isAdmin());\r
157                                 break;\r
158                         case 'nextitem':\r
159                                 $condition = ($itemidnext != '');\r
160                                 break;\r
161                         case 'previtem':\r
162                                 $condition = ($itemidprev != '');\r
163                                 break;\r
164                         case 'archiveprevexists':\r
165                                 $condition = ($archiveprevexists == true);\r
166                                 break;\r
167                         case 'archivenextexists':\r
168                                 $condition = ($archivenextexists == true);\r
169                                 break;\r
170                         case 'skintype':\r
171                                 $condition = (($name == $this->skintype) || ($name == requestVar('action')));\r
172                                 break;\r
173                         case 'hasplugin':\r
174                                 $condition = $this->ifHasPlugin($name, $value);\r
175                                 break;\r
176                         case 'adminaction':\r
177                                 $condition = ($this->objAdmin->action == $name);\r
178                                 break;\r
179                         case 'adminoldaction':\r
180                                 $condition = ($this->objAdmin->action == $name);\r
181                                 break;\r
182                         case 'addresschange':\r
183                                 $condition = ($this->_ifAddresscange());\r
184                                 break;\r
185                         case 'bechangepass':\r
186                                 $condition = ($this->_beChangePassword());\r
187                                 break;\r
188                         case 'skincandidates':\r
189                                 $condition = ($this->_ifSkincandidates());\r
190                                 break;\r
191                         case 'nameclashes':\r
192                                 $condition = requestVar('nameclashes');\r
193                                 break;\r
194                         case 'existsnewplugin':\r
195                                 $condition = ($this->_existsNewPlugin());\r
196                                 break;\r
197                         default:\r
198                                 $condition = $manager->pluginInstalled("NP_{$field}") && $this->ifPlugin($field, $name, $value);\r
199                                 break;\r
200                 }\r
201                 return $condition;\r
202         }\r
203         \r
204         /**\r
205          * Actions::_ifHasPlugin()\r
206          *      hasplugin,PlugName\r
207          *         -> checks if plugin exists\r
208          *      hasplugin,PlugName,OptionName\r
209          *         -> checks if the option OptionName from plugin PlugName is not set to 'no'\r
210          *      hasplugin,PlugName,OptionName=value\r
211          *         -> checks if the option OptionName from plugin PlugName is set to value\r
212          *\r
213          * @param       string  $name   name of plugin\r
214          * @param       string  $value  \r
215          * @return      \r
216          */\r
217         private function ifHasPlugin($name, $value)\r
218         {\r
219                 global $manager;\r
220                 $condition = false;\r
221                 // (pluginInstalled method won't write a message in the actionlog on failure)\r
222                 if ( $manager->pluginInstalled("NP_{$name}") )\r
223                 {\r
224                         $plugin =& $manager->getPlugin("NP_{$name}");\r
225                         if ( $plugin != NULL )\r
226                         {\r
227                                 if ( $value == "" )\r
228                                 {\r
229                                         $condition = true;\r
230                                 }\r
231                                 else\r
232                                 {\r
233                                         list($name2, $value2) = preg_split('#=#', $value, 2);\r
234                                         if ( $value2 == "" && $plugin->getOption($name2) != 'no' )\r
235                                         {\r
236                                                 $condition = true;\r
237                                         }\r
238                                         else if ( $plugin->getOption($name2) == $value2 )\r
239                                         {\r
240                                                 $condition = true;\r
241                                         }\r
242                                 }\r
243                         }\r
244                 }\r
245                 return $condition;\r
246         }\r
247         \r
248         /**\r
249          * Actions::beChangePassword()\r
250          * \r
251          * @param       void\r
252          * @return      void\r
253          */\r
254         function beChangePassword()\r
255         {\r
256                 return intRequestVar('bNeedsPasswordChange');\r
257         }\r
258         \r
259         /**\r
260          * Actions::ifSkincandidates()\r
261          * Checks if a plugin exists and call its doIf function\r
262          * \r
263          * @param       void\r
264          * @return      void\r
265          */\r
266         private function ifSkincandidates()\r
267         {\r
268                 global $DIR_SKINS;\r
269                 $candidates = SKINIMPORT::searchForCandidates($DIR_SKINS);\r
270                 return (count($candidates) > 0);\r
271         }\r
272         \r
273         /**\r
274          * Actions::ifPlugin()\r
275          * Checks if a plugin exists and call its doIf function\r
276          * \r
277          * @param       string  $name   name of plugin\r
278          * @param       string  $key    name of plugin option\r
279          * @param       string  $value  value of plugin option\r
280          * @return      void\r
281          */\r
282         private function ifPlugin($name, $key = '', $value = '')\r
283         {\r
284                 global $manager;\r
285                 \r
286                 $plugin =& $manager->getPlugin("NP_{$name}");\r
287                 if ( !$plugin )\r
288                 {\r
289                         return;\r
290                 }\r
291                 \r
292                 $params = func_get_args();\r
293                 array_shift($params);\r
294                 \r
295                 return call_user_func_array(array(&$plugin, 'doIf'), $params);\r
296         }\r
297         \r
298         /**\r
299          * Actions::ifCategory()\r
300          * Different checks for a category\r
301          * \r
302          * @param       string  $name   \r
303          * @param       string  $value  \r
304          * @return      boolean \r
305          */\r
306         private function ifCategory($name = '', $value='')\r
307         {\r
308                 global $blog, $catid;\r
309                 \r
310                 // when no parameter is defined, just check if a category is selected\r
311                 if ( ($name != 'catname' && $name != 'catid') || ($value == '') )\r
312                 {\r
313                         return $blog->isValidCategory($catid);\r
314                 }\r
315                 \r
316                 // check category name\r
317                 if ( $name == 'catname' )\r
318                 {\r
319                         $value = $blog->getCategoryIdFromName($value);\r
320                         if ( $value == $catid )\r
321                         {\r
322                                 return $blog->isValidCategory($catid);\r
323                         }\r
324                 }\r
325                 \r
326                 // check category id\r
327                 if ( ($name == 'catid') && ($value == $catid) )\r
328                 {\r
329                         return $blog->isValidCategory($catid);\r
330                 }\r
331                 return FALSE;\r
332         }\r
333         \r
334         /**\r
335          * Actions::ifOnTeam()\r
336          * Checks if a member is on the team of a blog and return his rights\r
337          * \r
338          * @param       string  $blogName       name of weblog\r
339          * @return      mixed\r
340          */\r
341         private function ifOnTeam($blogName = '')\r
342         {\r
343                 global $blog, $member, $manager;\r
344                 \r
345                 // when no blog found\r
346                 if ( ($blogName == '') && !is_object($blog) )\r
347                 {\r
348                         return 0;\r
349                 }\r
350                 \r
351                 // explicit blog selection\r
352                 if ( $blogName != '' )\r
353                 {\r
354                         $blogid = getBlogIDFromName($blogName);\r
355                 }\r
356                 \r
357                 if ( ($blogName == '') || !$manager->existsBlogID($blogid) )\r
358                 {\r
359                         // use current blog\r
360                         $blogid = $blog->getID();\r
361                 }\r
362                 \r
363                 return $member->teamRights($blogid);\r
364         }\r
365 \r
366         /**\r
367          * Actions::ifAdmin()\r
368          * Checks if a member is admin of a blog\r
369          * \r
370          * @param       string  $blogName       name of weblog\r
371          * @return      mixed\r
372          */\r
373         private function ifAdmin($blogName = '')\r
374         {\r
375                 global $blog, $member, $manager;\r
376                 \r
377                 // when no blog found\r
378                 if ( ($blogName == '') && (!is_object($blog)) )\r
379                 {\r
380                         return 0;\r
381                 }\r
382                 \r
383                 // explicit blog selection\r
384                 if ( $blogName != '' )\r
385                 {\r
386                         $blogid = getBlogIDFromName($blogName);\r
387                 }\r
388                 \r
389                 if ( ($blogName == '') || !$manager->existsBlogID($blogid) )\r
390                 {\r
391                         // use current blog\r
392                         $blogid = $blog->getID();\r
393                 }\r
394                 \r
395                 return $member->isBlogAdmin($blogid);\r
396         }\r
397         \r
398         /**\r
399          * Actions::ifAddresscange()\r
400          * Check e-Mail address is changed\r
401          * \r
402          * @param       void\r
403          * @return      boolean\r
404          */\r
405         private function ifAddresscange()\r
406         {\r
407                 $key = $this->objAdmin->sessionVar("{$CONF['CookiePrefix']}ackey");\r
408                 if ( !$key )\r
409                 {\r
410                         return FALSE;\r
411                 }\r
412                 $info = MEMBER::getActivationInfo($key);\r
413                 if ( !$info )\r
414                 {\r
415                         return FALSE;\r
416                 }\r
417                 $mem  = MEMBER::createFromId($info->vmember);\r
418                 if ( !$mem )\r
419                 {\r
420                         return FALSE;\r
421                 }\r
422                 if ( $info->vtype == 'addresschange' )\r
423                 {\r
424                         return TRUE;\r
425                 }\r
426                 return FALSE;\r
427         }\r
428         \r
429         /**\r
430          * Actions::link()\r
431          * returns either\r
432          *      - a raw link (html/xml encoded) when no linktext is provided\r
433          *      - a (x)html <a href... link when a text is present (text htmlencoded)\r
434          * \r
435          * @param       string  $url            URL for href attribute of anchor element\r
436          * @param       string  $linktext       content of anchor element\r
437          * @return      \r
438          */\r
439         private function link($url, $linktext = '')\r
440         {\r
441                 $u = Entity::hsc($url);\r
442                 // fix URLs that already had encoded ampersands\r
443                 $u = preg_replace("#&amp;amp;#", '&amp;', $u);\r
444                 if ( $linktext != '' )\r
445                 {\r
446                         $l = '<a href="' . $u .'">' . Entity::hsc($linktext) . '</a>';\r
447                 }\r
448                 else\r
449                 {\r
450                         $l = $u;\r
451                 }\r
452                 return $l;\r
453         }\r
454         \r
455         /**\r
456          * Actions::searchlink()\r
457          * Outputs a next/prev link\r
458          *\r
459          * @param $maxresults\r
460          *              The maximum amount of items shown per page (e.g. 10)\r
461          * @param $startpos\r
462          *              Current start position (requestVar('startpos'))\r
463          * @param $direction\r
464          *              either 'prev' or 'next'\r
465          * @param $linktext\r
466          *              When present, the output will be a full <a href...> link. When empty,\r
467          *              only a raw link will be outputted\r
468          */\r
469         private function searchlink($maxresults, $startpos, $direction, $linktext = '', $recount = '')\r
470         {\r
471                 global $CONF, $blog, $query, $amount;\r
472                 // TODO: Move request uri to linkparams. this is ugly. sorry for that.\r
473                 $startpos       = (integer) $startpos;\r
474                 $parsed         = parse_url(serverVar('REQUEST_URI'));\r
475                 $path           = $parsed['path'];\r
476                 $parsed         = $parsed['query'];\r
477                 $url            = '';\r
478                 \r
479                 if ( $direction == 'prev' )\r
480                 {\r
481                         if ( intval($startpos) - intval($maxresults) >= 0 )\r
482                         {\r
483                                 $startpos       = intval($startpos) - intval($maxresults);\r
484                                 \r
485                                 if ( $this->skintype == 'index' )\r
486                                 {\r
487                                         $url = $path;\r
488                                 }\r
489                                 else if ( $this->skintype == 'search' )\r
490                                 {\r
491                                         $url = $CONF['SearchURL'];\r
492                                 }\r
493                                 $url .= '?' . alterQueryStr($parsed,'startpos',$startpos);\r
494                         }\r
495                 }\r
496                 else if ( $direction == 'next' )\r
497                 {\r
498                         global $navigationItems;\r
499                         if ( !isset($navigationItems) )\r
500                         {\r
501                                 $navigationItems = 0;\r
502                         }\r
503                         \r
504                         if ( $recount )\r
505                         {\r
506                                 $iAmountOnPage = 0;\r
507                         }\r
508                         else \r
509                         {\r
510                                 $iAmountOnPage = $this->amountfound;\r
511                         }\r
512                         \r
513                         if ( intval($navigationItems) > 0 )\r
514                         {\r
515                                 $iAmountOnPage = intval($navigationItems) - intval($startpos);\r
516                         }\r
517                         elseif ( $iAmountOnPage == 0 )\r
518                         {\r
519                                 /*\r
520                                  * [%nextlink%] or [%prevlink%] probably called before [%blog%] or [%searchresults%]\r
521                                  * try a count query\r
522                                  */\r
523                                 if ( $this->skintype == 'index' )\r
524                                 {\r
525                                         $sqlquery = $blog->getSqlBlog('', 'count');\r
526                                         $url = $path;\r
527                                 }\r
528                                 else if ( $this->skintype == 'search' )\r
529                                 {\r
530                                         $unused_highlight = '';\r
531                                         $sqlquery = $blog->getSqlSearch($query, $amount, $unused_highlight, 'count');\r
532                                         $url = $CONF['SearchURL'];\r
533                                 }\r
534                                 if ( $sqlquery )\r
535                                 {\r
536                                         $iAmountOnPage = intval(quickQuery($sqlquery)) - intval($startpos);\r
537                                 }\r
538                         }\r
539                         \r
540                         $url = '';\r
541                         if ( intval($iAmountOnPage) >= intval($maxresults) )\r
542                         {\r
543                                 $startpos        = intval($startpos) + intval($maxresults);\r
544                                 $url            .= '?' . alterQueryStr($parsed, 'startpos', $startpos);\r
545                         }\r
546                 }\r
547                 \r
548                 if ( $url != '' )\r
549                 {\r
550                         echo $this->link($url, $linktext);\r
551                 }\r
552                 return;\r
553         }\r
554         \r
555         /**\r
556          * Actions::itemlink()\r
557          * Creates an item link and if no id is given a todaylink \r
558          * \r
559          * @param       integer $id     id for link\r
560          * @param       string  $linktext       text for link\r
561          * @return      void\r
562          */\r
563         public function itemlink($id, $linktext = '')\r
564         {\r
565                 global $CONF;\r
566                 if ( $id != 0 )\r
567                 {\r
568                         echo $this->link(Link::createitemlink($id, $this->linkparams), $linktext);\r
569                 }\r
570                 else\r
571                 {\r
572                         $this->parse_todaylink($linktext);\r
573                 }\r
574                 return;\r
575         }\r
576         \r
577         /**\r
578          * Actions:setBlogCategory()\r
579          * Helper function that sets the category that a blog will need to use\r
580          *\r
581          * @param       string  $blog           An object of the blog class, passed by reference (we want to make changes to it)\r
582          * @param       string  $catname        The name of the category to use\r
583          * @return      void\r
584          */\r
585         private function setBlogCategory(&$blog, $catname)\r
586         {\r
587                 global $catid;\r
588                 if ( $catname != '' )\r
589                 {\r
590                         $blog->setSelectedCategoryByName($catname);\r
591                 }\r
592                 else\r
593                 {\r
594                         $blog->setSelectedCategory($catid);\r
595                 }\r
596                 return;\r
597         }\r
598 \r
599         /**\r
600          * Actions::archivelink)\r
601          * Creates an archive link and if no id is given a todaylink \r
602          * \r
603          * @param       integer $id     id for link\r
604          * @param       string  $linktext       text for link\r
605          * @return      void\r
606          */\r
607         public function archivelink($id, $linktext = '')\r
608         {\r
609                 global $CONF, $blog;\r
610                 if ( $id != 0 )\r
611                 {\r
612                         echo $this->link(Link::createarchivelink($blog->getID(), $id, $this->linkparams), $linktext);\r
613                 }\r
614                 else\r
615                 {\r
616                         $this->parse_todaylink($linktext);\r
617                 }\r
618                 return;\r
619         }\r
620         \r
621         /**\r
622          * Actions::preBlogContent()\r
623          * Notifies the Manager that a PreBlogContent event occurs\r
624          * \r
625          * @param       string  $type   type of skin\r
626          * @param       object  $blog   an instance of Blog class\r
627          * @return      void\r
628          */\r
629         private function preBlogContent($type, &$blog)\r
630         {\r
631                 global $manager;\r
632                 $manager->notify('PreBlogContent',array('blog' => &$blog, 'type' => $type));\r
633                 return;\r
634         }\r
635 \r
636         /**\r
637          * Actions::postBlogContent()\r
638          * Notifies the Manager that a PostBlogContent event occurs\r
639          * \r
640          * @param       string  $type   type of skin\r
641          * @param       objecct $blog   an instance of Blog class\r
642          * @return      void\r
643          */\r
644         private function postBlogContent($type, &$blog)\r
645         {\r
646                 global $manager;\r
647                 $manager->notify('PostBlogContent', array('blog' => &$blog, 'type' => $type));\r
648                 return;\r
649         }\r
650         \r
651         /**\r
652          * Actions::parse_additemform()\r
653          * Parse skinvar additemform\r
654          * \r
655          * @param       void\r
656          * @return      void\r
657          */\r
658         public function parse_additemform()\r
659         {\r
660                 global $blog, $CONF;\r
661                 $this->formdata = array(\r
662                         'adminurl'      => Entity::hsc($CONF['AdminURL']),\r
663                         'catid'         => $blog->getDefaultCategory()\r
664                 );\r
665                 $blog->InsertJavaScriptInfo();\r
666                 $this->doForm('additemform');\r
667                 return;\r
668         }\r
669         \r
670         /**\r
671          * Actions::parse_addlink()\r
672          * Parse skinvar addlink\r
673          * A Link that allows to open a bookmarklet to add an item\r
674          */\r
675         public function parse_addlink()\r
676         {\r
677                 global $CONF, $member, $blog;\r
678                 if ( $member->isLoggedIn() && $member->isTeamMember($blog->blogid) )\r
679                 {\r
680                         echo $CONF['AdminURL'].'bookmarklet.php?blogid='.$blog->blogid;\r
681                 }\r
682                 return;\r
683         }\r
684         \r
685         /**\r
686          * Actions::parse_addpopupcode()\r
687          * Parse skinvar addpopupcode\r
688          * Code that opens a bookmarklet in an popup window\r
689          * \r
690          * @param       void\r
691          * @return      void\r
692          */\r
693         public function parse_addpopupcode()\r
694         {\r
695                 echo "if (event &amp;&amp; event.preventDefault) event.preventDefault();winbm=window.open(this.href,'nucleusbm','scrollbars=yes,width=600,height=500,left=10,top=10,status=yes,resizable=yes');winbm.focus();return false;";\r
696                 return;\r
697         }\r
698         \r
699         /**\r
700          * Parse skinvar adminurl\r
701          * (shortcut for admin url)\r
702          * \r
703          * @param       void\r
704          * @return      void\r
705          */\r
706         public function parse_adminurl()\r
707         {\r
708                 $this->parse_sitevar('adminurl');\r
709                 return;\r
710         }\r
711         \r
712         /**\r
713          * Actions::parse_archive()\r
714          * Parse skinvar archive\r
715          * \r
716          * @param       string  $template       name of template\r
717          * @param       string  $category       name of category\r
718          * @return      \r
719          */\r
720         public function parse_archive($template, $category = '')\r
721         {\r
722                 global $blog, $archive;\r
723                 // can be used with either yyyy-mm or yyyy-mm-dd\r
724                 sscanf($archive,'%d-%d-%d', $y, $m, $d);\r
725                 $this->setBlogCategory($blog, $category);\r
726                 $this->preBlogContent('achive',$blog);\r
727                 $blog->showArchive($template, $y, $m, $d);\r
728                 $this->postBlogContent('achive',$blog);\r
729                 return;\r
730         }\r
731         \r
732         /**\r
733          * Actions::parse_archivedate()\r
734          * %archivedate(locale,date format)%\r
735          * \r
736          * @param       string  $locale\r
737          * @return      void\r
738          */\r
739         public function parse_archivedate($locale = '-def-')\r
740         {\r
741                 global $archive;\r
742                 \r
743                 /* \r
744                  * TODO: these lines are no meaning because there is no $template.\r
745                  */\r
746                 if ( $locale == '-def-' )\r
747                 {\r
748                         setlocale(LC_TIME, $template['LOCALE']);\r
749                 }\r
750                 else\r
751                 {\r
752                         setlocale(LC_TIME, $locale);\r
753                 }\r
754                 \r
755                 // get archive date\r
756                 sscanf($archive,'%d-%d-%d',$y,$m,$d);\r
757                 \r
758                 // get format\r
759                 $args = func_get_args();\r
760                 // format can be spread over multiple parameters\r
761                 if ( sizeof($args) > 1 )\r
762                 {\r
763                         // take away locale\r
764                         array_shift($args);\r
765                         // implode\r
766                         $format=implode(',',$args);\r
767                 }\r
768                 elseif ( $d == 0 && $m !=0 )\r
769                 {\r
770                         $format = '%B %Y';\r
771                 }\r
772                 elseif ( $m == 0 )\r
773                 {\r
774                         $format = '%Y';\r
775                 }\r
776                 else\r
777                 {\r
778                         $format = '%d %B %Y';\r
779                 }\r
780                 echo i18n::formatted_timedate($format, mktime(0,0,0,$m?$m:1,$d?$d:1,$y));\r
781                 return;\r
782         }\r
783         \r
784         /**\r
785          * Actions::parse_archivedaylist()\r
786          * Parse skinvar archivedaylist\r
787          * \r
788          * @param       string  $template       name of template\r
789          * @param       string  $category       name of category\r
790          * @param       integer $limit          the number of items in a display\r
791          * @return      void\r
792          */\r
793         public function parse_archivedaylist($template, $category = 'all', $limit = 0)\r
794         {\r
795                 global $blog;\r
796                 if ( $category == 'all' )\r
797                 {\r
798                         $category = '';\r
799                 }\r
800                 $this->preBlogContent('archivelist',$blog);\r
801                 $this->setBlogCategory($blog, $category);\r
802                 $blog->showArchiveList($template, 'day', $limit);\r
803                 $this->postBlogContent('archivelist',$blog);\r
804                 return;\r
805         }\r
806         \r
807         /**\r
808          * Actions::parsearchivelink()\r
809          * A link to the archives for the current blog (or for default blog)\r
810          * \r
811          * @param       string  $linktext       text for link\r
812          * @return      void\r
813          */\r
814         public function parsearchivelink($linktext = '')\r
815         {\r
816                 global $blog, $CONF;\r
817                 if ( $blog )\r
818                 {\r
819                         echo $this->link(Link::create_archivelistlink($blog->getID(),$this->linkparams), $linktext);\r
820                 }\r
821                 else\r
822                 {\r
823                         echo $this->link(Link::create_archivelistlink(), $linktext);\r
824                 }\r
825                 return;\r
826         }\r
827         \r
828         /**\r
829          * Actions::parse_archivelist()\r
830          * \r
831          * @param       string  $template       name of template\r
832          * @param       string  $category       name of category\r
833          * @param       integer $limit          the number of items in a display\r
834          * @return      void\r
835          */\r
836         public function parse_archivelist($template, $category = 'all', $limit = 0)\r
837         {\r
838                 global $blog;\r
839                 if ( $category == 'all' )\r
840                 {\r
841                         $category = '';\r
842                 }\r
843                 $this->preBlogContent('archivelist',$blog);\r
844                 $this->setBlogCategory($blog, $category);\r
845                 $blog->showArchiveList($template, 'month', $limit);\r
846                 $this->postBlogContent('archivelist',$blog);\r
847                 return;\r
848         }\r
849         \r
850         /**\r
851          * Actions::parse_archiveyearlist()\r
852          * \r
853          * @param       string  $template       name of template\r
854          * @param       string  $category       name of category\r
855          * @param       integer $limit          the number of items in a display\r
856          */\r
857         public function parse_archiveyearlist($template, $category = 'all', $limit = 0)\r
858         {\r
859                 global $blog;\r
860                 if ( $category == 'all' )\r
861                 {\r
862                         $category = '';\r
863                 }\r
864                 $this->preBlogContent('archivelist',$blog);\r
865                 $this->setBlogCategory($blog, $category);\r
866                 $blog->showArchiveList($template, 'year', $limit);\r
867                 $this->postBlogContent('archivelist',$blog);\r
868                 return;\r
869         }\r
870         \r
871         /**\r
872          * Actions::parse_archivetype()\r
873          * Parse skinvar archivetype\r
874          * \r
875          * @param       void\r
876          * @return      void\r
877          */\r
878         public function parse_archivetype()\r
879         {\r
880                 global $archivetype;\r
881                 echo $archivetype;\r
882                 return;\r
883         }\r
884         \r
885         /**\r
886          * Actions::parse_blog()\r
887          * Parse skinvar blog\r
888          * \r
889          * @param       string  $template       name of template\r
890          * @param       mixed   $amount         the number of items in a display, in case it includes the beginning\r
891          * @param       string  $category       name of category\r
892          * @return      void\r
893          */\r
894         public function parse_blog($template, $amount = 10, $category = '')\r
895         {\r
896                 global $blog, $startpos;\r
897                 \r
898                 list($limit, $offset) = sscanf($amount, '%d(%d)');\r
899                 $this->setBlogCategory($blog, $category);\r
900                 $this->preBlogContent('blog',$blog);\r
901                 $this->amountfound = $blog->readLog($template, $limit, $offset, $startpos);\r
902                 $this->postBlogContent('blog',$blog);\r
903                 return;\r
904         }\r
905         \r
906         /**\r
907          * Actions::parse_bloglist()\r
908          * Parse skinvar bloglist\r
909          * Shows a list of all blogs\r
910          * \r
911          * @param       string  $template       name of template\r
912          * @param       string  $bnametype      whether 'name' or 'shortname' is used for the link text\r
913          * @param       string  $orderby        order criteria\r
914          * @param       string  $direction      order ascending or descending             \r
915          * @return      void\r
916          */\r
917         public function parse_bloglist($template, $bnametype = '', $orderby='number', $direction='asc')\r
918         {\r
919                 Blog::showBlogList($template, $bnametype, $orderby, $direction);\r
920                 return;\r
921         }\r
922         \r
923         /**\r
924          * Actions::parse_blogsetting()\r
925          * Parse skinvar blogsetting\r
926          * \r
927          * @param       string  $which  key of weblog settings\r
928          * @return      void\r
929          */\r
930         public function parse_blogsetting($which)\r
931         {\r
932                 global $blog;\r
933                 switch( $which )\r
934                 {\r
935                         case 'id':\r
936                                 echo Entity::hsc($blog->getID());\r
937                                 break;\r
938                         case 'url':\r
939                                 echo Entity::hsc($blog->getURL());\r
940                                 break;\r
941                         case 'name':\r
942                                 echo Entity::hsc($blog->getName());\r
943                                 break;\r
944                         case 'desc':\r
945                                 echo Entity::hsc($blog->getDescription());\r
946                                 break;\r
947                         case 'short':\r
948                                 echo Entity::hsc($blog->getShortName());\r
949                                 break;\r
950                 }\r
951                 return;\r
952         }\r
953         \r
954         /**\r
955          * Actions::parse_getblogsetting()\r
956          * Parse skinvar getblogsetting\r
957          */\r
958         function parse_getblogsetting($which)\r
959         {\r
960                 global $blog;\r
961                 if ( $blog )\r
962                 {\r
963                         $b =& $blog;\r
964                 }\r
965                 elseif ( $bid = intRequestVar('blogid') )\r
966                 {\r
967                         global $manager;\r
968                         $b = $manager->getBlog($bid);\r
969                 }\r
970                 else\r
971                 {\r
972                         return;\r
973                 }\r
974                 \r
975                 switch ( $which )\r
976                 {\r
977                         case 'id':\r
978                                 return Entity::hsc($b->getID());\r
979                                 break;\r
980                         case 'url':\r
981                                 return Entity::hsc($b->getURL());\r
982                                 break;\r
983                         case 'name':\r
984                                 return Entity::hsc($b->getName());\r
985                                 break;\r
986                         case 'desc':\r
987                                 return Entity::hsc($b->getDescription());\r
988                                 break;\r
989                         case 'short':\r
990                                 return Entity::hsc($b->getShortName());\r
991                                 break;\r
992                         case 'notifyaddress':\r
993                                 return Entity::hsc($b->getNotifyAddress());\r
994                                 break;\r
995                         case 'maxcomments':\r
996                                 return Entity::hsc($b->getMaxComments());\r
997                                 break;\r
998                         case 'updatefile':\r
999                                 return Entity::hsc($b->getUpdateFile());\r
1000                                 break;\r
1001                         case 'timeoffset':\r
1002                                 return Entity::hsc($b->getTimeOffset());\r
1003                                 break;\r
1004                 }\r
1005                 return;\r
1006         }\r
1007         \r
1008         /**\r
1009          * Actions::parse_callback()\r
1010          * Parse callback\r
1011          * \r
1012          * @param       string  $eventName      name of event\r
1013          * @param       string  $type   type of skin\r
1014          * @return      void\r
1015          */\r
1016         public function parse_callback($eventName, $type)\r
1017         {\r
1018                 global $manager;\r
1019                 $manager->notify($eventName, array('type' => $type));\r
1020                 return;\r
1021         }\r
1022         \r
1023         /**\r
1024          * Actions::parse_category()\r
1025          * Parse skinvar category\r
1026          * \r
1027          * @param       string  $type   key of category settings\r
1028          * @return      void\r
1029          */\r
1030         public function parse_category($type = 'name')\r
1031         {\r
1032                 global $catid, $blog;\r
1033                 if ( !$blog->isValidCategory($catid) )\r
1034                 {\r
1035                         return;\r
1036                 }\r
1037                 \r
1038                 switch ( $type )\r
1039                 {\r
1040                         case 'name':\r
1041                                 echo $blog->getCategoryName($catid);\r
1042                                 break;\r
1043                         case 'desc':\r
1044                                 echo $blog->getCategoryDesc($catid);\r
1045                                 break;\r
1046                         case 'id':\r
1047                                 echo $catid;\r
1048                                 break;\r
1049                 }\r
1050                 return;\r
1051         }\r
1052         \r
1053         /**\r
1054          * Actions::parse_categorylist()\r
1055          * Parse categorylist\r
1056          * \r
1057          * @param       string  $template       name of template\r
1058          * @param       string  $blogname       name of weblog\r
1059          * @return      void\r
1060          */\r
1061         public function parse_categorylist($template, $blogname = '')\r
1062         {\r
1063                 global $blog, $manager;\r
1064                 \r
1065                 // when no blog found\r
1066                 if ( ($blogname == '') && (!is_object($blog)) )\r
1067                 {\r
1068                         return 0;\r
1069                 }\r
1070                         \r
1071                 if ( $blogname == '' )\r
1072                 {\r
1073                         $this->preBlogContent('categorylist',$blog);\r
1074                         $blog->showCategoryList($template);\r
1075                         $this->postBlogContent('categorylist',$blog);\r
1076                 }\r
1077                 else\r
1078                 {\r
1079                         $b =& $manager->getBlog(getBlogIDFromName($blogname));\r
1080                         $this->preBlogContent('categorylist',$b);\r
1081                         $b->showCategoryList($template);\r
1082                         $this->postBlogContent('categorylist',$b);\r
1083                 }\r
1084                 return;\r
1085         }\r
1086         \r
1087         /**\r
1088          * Actions::parse_charset()\r
1089          * Parse skinvar charset\r
1090          * \r
1091          * @param       void\r
1092          * @return      void\r
1093          */\r
1094         public function parse_charset()\r
1095         {\r
1096                 echo i18n::get_current_charset();\r
1097                 return;\r
1098         }\r
1099         \r
1100         /**\r
1101          * Actions::parse_commentform()\r
1102          * Parse skinvar commentform\r
1103          * \r
1104          * @param       string  $destinationurl URI for redirection\r
1105          * @return      void\r
1106          */\r
1107         public function parse_commentform($destinationurl = '')\r
1108         {\r
1109                 global $blog, $itemid, $member, $CONF, $manager, $DIR_LIBS, $errormessage;\r
1110                 \r
1111                 // warn when trying to provide a actionurl (used to be a parameter in Nucleus <2.0)\r
1112                 if ( stristr($destinationurl, 'action.php') )\r
1113                 {\r
1114                         $args = func_get_args();\r
1115                         $destinationurl = $args[1];\r
1116                         ActionLog::add(WARNING,_ACTIONURL_NOTLONGER_PARAMATER);\r
1117                 }\r
1118                 \r
1119                 $actionurl = $CONF['ActionURL'];\r
1120                 \r
1121                 // if item is closed, show message and do nothing\r
1122                 $item =& $manager->getItem($itemid,0,0);\r
1123                 if ( $item['closed'] || !$blog->commentsEnabled() )\r
1124                 {\r
1125                         $this->doForm('commentform-closed');\r
1126                         return;\r
1127                 }\r
1128                 \r
1129                 if ( !$blog->isPublic() && !$member->isLoggedIn() )\r
1130                 {\r
1131                         $this->doForm('commentform-closedtopublic');\r
1132                         return;\r
1133                 }\r
1134                 \r
1135                 if ( !$destinationurl )\r
1136                 {\r
1137                         // note: createLink returns an HTML encoded URL\r
1138                         $destinationurl = Link::createlink(\r
1139                                 'item',\r
1140                                 array(\r
1141                                         'itemid' => $itemid,\r
1142                                         'title' => $item['title'],\r
1143                                         'timestamp' => $item['timestamp'],\r
1144                                         'extra' => $this->linkparams\r
1145                                 )\r
1146                         );\r
1147                 }\r
1148                 else\r
1149                 {\r
1150                         // HTML encode URL\r
1151                         $destinationurl = Entity::hsc($destinationurl);\r
1152                 }\r
1153                 \r
1154                 // values to prefill\r
1155                 $user = cookieVar($CONF['CookiePrefix'] .'comment_user');\r
1156                 if ( !$user )\r
1157                 {\r
1158                         $user = postVar('user');\r
1159                 }\r
1160                 \r
1161                 $userid = cookieVar($CONF['CookiePrefix'] .'comment_userid');\r
1162                 if ( !$userid )\r
1163                 {\r
1164                         $userid = postVar('userid');\r
1165                 }\r
1166                 \r
1167                 $email = cookieVar($CONF['CookiePrefix'] .'comment_email');\r
1168                 if (!$email)\r
1169                 {\r
1170                         $email = postVar('email');\r
1171                 }\r
1172                 \r
1173                 $body = postVar('body');\r
1174                 \r
1175                 $this->formdata = array(\r
1176                         'destinationurl' => $destinationurl,    // url is already HTML encoded\r
1177                         'actionurl' => Entity::hsc($actionurl),\r
1178                         'itemid' => $itemid,\r
1179                         'user' => Entity::hsc($user),\r
1180                         'userid' => Entity::hsc($userid),\r
1181                         'email' => Entity::hsc($email),\r
1182                         'body' => Entity::hsc($body),\r
1183                         'membername' => $member->getDisplayName(),\r
1184                         'rememberchecked' => cookieVar($CONF['CookiePrefix'] .'comment_user')?'checked="checked"':''\r
1185                 );\r
1186                 \r
1187                 if ( !$member->isLoggedIn() )\r
1188                 {\r
1189                         $this->doForm('commentform-notloggedin');\r
1190                 }\r
1191                 else\r
1192                 {\r
1193                         $this->doForm('commentform-loggedin');\r
1194                 }\r
1195                 return;\r
1196         }\r
1197         \r
1198         /**\r
1199          * Actions::parse_comments()\r
1200          * Parse skinvar comments\r
1201          * include comments for one item\r
1202          * \r
1203          * @param       string  $template       name of template\r
1204          * @return      void\r
1205          */\r
1206         public function parse_comments($template)\r
1207         {\r
1208                 global $itemid, $manager, $blog, $highlight;\r
1209                 $template =& $manager->getTemplate($template);\r
1210                 \r
1211                 // create parser object & action handler\r
1212                 $actions = new ItemActions($blog);\r
1213                 $parser = new Parser($actions->getDefinedActions(),$actions);\r
1214                 $actions->setTemplate($template);\r
1215                 $actions->setParser($parser);\r
1216                 $item = Item::getitem($itemid, 0, 0);\r
1217                 $actions->setCurrentItem($item);\r
1218                 \r
1219                 $comments = new Comments($itemid);\r
1220                 $comments->setItemActions($actions);\r
1221                 // shows ALL comments\r
1222                 $comments->showComments($template, -1, 1, $highlight);\r
1223                 return;\r
1224         }\r
1225         \r
1226         /**\r
1227          * Actions::parse_errordiv()\r
1228          * Parse errordiv\r
1229          * \r
1230          * @param       void\r
1231          * @return      void\r
1232          */\r
1233         public function parse_errordiv()\r
1234         {\r
1235                 global $errormessage;\r
1236                 if ( $errormessage )\r
1237                 {\r
1238                         echo '<div class="error">' . Entity::hsc($errormessage) . "</div>\n";\r
1239                 }\r
1240                 return;\r
1241         }\r
1242         \r
1243         /**\r
1244          * Actions::parse_errormessage()\r
1245          * Parse skinvar errormessage\r
1246          * \r
1247          * @param       void\r
1248          * @return      void\r
1249          */\r
1250         public function parse_errormessage()\r
1251         {\r
1252                 global $errormessage;\r
1253                 echo $errormessage;\r
1254                 return;\r
1255         }\r
1256         \r
1257         /**\r
1258          * Actions::parse_formdata()\r
1259          * Parse formdata\r
1260          * \r
1261          * @param       string  $what   key of format data\r
1262          * @return      void\r
1263          */\r
1264         public function parse_formdata($what)\r
1265         {\r
1266                 echo $this->formdata[$what];\r
1267                 return;\r
1268         }\r
1269         \r
1270         /**\r
1271          * Actions::parse_ifcat()\r
1272          * Parse ifcat\r
1273          * \r
1274          * @param       string  $text\r
1275          * @return      void\r
1276          */\r
1277         public function parse_ifcat($text = '')\r
1278         {\r
1279                 if ( $text == '' )\r
1280                 {\r
1281                         // new behaviour\r
1282                         $this->parse_if('category');\r
1283                 }\r
1284                 else\r
1285                 {\r
1286                         // old behaviour\r
1287                         global $catid, $blog;\r
1288                         if ( $blog->isValidCategory($catid) )\r
1289                         {\r
1290                                 echo $text;\r
1291                         }\r
1292                 }\r
1293                 return;\r
1294         }\r
1295         \r
1296         /**\r
1297          * Actions::parse_image()\r
1298          * Parse skinvar image\r
1299          * \r
1300          * @param       string  $what   name of tag\r
1301          * @return      void\r
1302          */\r
1303         public function parse_image($what = 'imgtag')\r
1304         {\r
1305                 global $CONF;\r
1306                 \r
1307                 $imagetext      = Entity::hsc(requestVar('imagetext'));\r
1308                 $imagepopup = requestVar('imagepopup');\r
1309                 $width          = intRequestVar('width');\r
1310                 $height         = intRequestVar('height');\r
1311                 $fullurl        = Entity::hsc($CONF['MediaURL'] . $imagepopup);\r
1312                 \r
1313                 switch ( $what )\r
1314                 {\r
1315                         case 'url':\r
1316                                 echo $fullurl;\r
1317                                 break;\r
1318                         case 'width':\r
1319                                 echo $width;\r
1320                                 break;\r
1321                         case 'height':\r
1322                                 echo $height;\r
1323                                 break;\r
1324                         case 'caption':\r
1325                         case 'text':\r
1326                                 echo $imagetext;\r
1327                                 break;\r
1328                         case 'imgtag':\r
1329                         default:\r
1330                                 echo "<img src=\"$fullurl\" width=\"$width\" height=\"$height\" alt=\"$imagetext\" title=\"$imagetext\" />";\r
1331                                 break;\r
1332                 }\r
1333                 return;\r
1334         }\r
1335         \r
1336         /**\r
1337          * Actions::parse_skinfile()\r
1338          * Inserts an url relative to the skindir (useful when doing import/export)\r
1339          * e.g. <skinfile(default/myfile.sth)>\r
1340          * \r
1341          * @param       string  $filename       name of file\r
1342          * @return      void\r
1343          */\r
1344         public function parse_skinfile($filename)\r
1345         {\r
1346                 $base = NP_SkinableAdmin::getAdminSkinURL();\r
1347                 $pref = PARSER::getProperty('IncludePrefix');\r
1348                 echo "{$base}{$pref}{$filename}";\r
1349                 return;\r
1350         }\r
1351         \r
1352         /**\r
1353          * Actions::parse_imagetext()\r
1354          * Parse skinvar imagetext\r
1355          * \r
1356          * @param       void\r
1357          * @return      void\r
1358          */\r
1359         public function parse_imagetext()\r
1360         {\r
1361                 $this->parse_image('imagetext');\r
1362                 return;\r
1363         }\r
1364 \r
1365         /**\r
1366          * Actions::parse_itemlink()\r
1367          * Parse skinvar itemlink\r
1368          * \r
1369          * @param       string  $linktext       text for content of anchor element\r
1370          * @return      void\r
1371          */\r
1372         function parse_itemlink($linktext = '')\r
1373         {\r
1374                 global $itemid;\r
1375                 $this->itemlink($itemid, $linktext);\r
1376                 return;\r
1377         }\r
1378         \r
1379         /**\r
1380          * Actions::parse_item()\r
1381          * Parse skinvar item\r
1382          * include one item (no comments)\r
1383          * \r
1384          * @param       void\r
1385          * @return      void\r
1386          */\r
1387         public function parse_item($template)\r
1388         {\r
1389                 global $blog, $itemid, $highlight;\r
1390                 \r
1391                 // need this to select default category\r
1392                 $this->setBlogCategory($blog, '');\r
1393                 $this->preBlogContent('item',$blog);\r
1394                 $r = $blog->showOneitem($itemid, $template, $highlight);\r
1395                 if ( $r == 0 )\r
1396                 {\r
1397                         echo _ERROR_NOSUCHITEM;\r
1398                 }\r
1399                 $this->postBlogContent('item',$blog);\r
1400                 return;\r
1401         }\r
1402 \r
1403         /**\r
1404          * Actions::parse_itemid()\r
1405          * Parse skinvar itemid\r
1406          * \r
1407          * @param       void\r
1408          * @return      void\r
1409          */\r
1410         public function parse_itemid()\r
1411         {\r
1412                 global $itemid;\r
1413                 echo $itemid;\r
1414                 return;\r
1415         }\r
1416         \r
1417         /**\r
1418          * Actions::parseitemlink()\r
1419          * Parse skinvar itemlink\r
1420          * \r
1421          * @param       void\r
1422          * @return      void\r
1423          */\r
1424         public function parseitemlink($linktext = '')\r
1425         {\r
1426                 global $itemid;\r
1427                 $this->itemlink($itemid, $linktext);\r
1428                 return;\r
1429         }\r
1430         \r
1431         /**\r
1432          * Actions::parse_itemtitle()\r
1433          * Parse itemtitle\r
1434          * \r
1435          * @param       void\r
1436          * @return      void\r
1437          */\r
1438         public function parse_itemtitle($format = '')\r
1439         {\r
1440                 global $manager, $itemid;\r
1441                 $item =& $manager->getItem($itemid,0,0);\r
1442                 \r
1443                 switch ( $format )\r
1444                 {\r
1445                         case 'xml':\r
1446                                 echo Entity::hen($item['title']);\r
1447                                 break;\r
1448                         case 'raw':\r
1449                                 echo $item['title'];\r
1450                                 break;\r
1451                         case 'attribute':\r
1452                         default:\r
1453                                 echo Entity::hsc(strip_tags($item['title']));\r
1454                                 break;\r
1455                 }\r
1456                 return;\r
1457         }\r
1458         \r
1459         /**\r
1460          * Actions::parse_loginform()\r
1461          * Parse skinvar loginform\r
1462          * \r
1463          * @param       void\r
1464          * @return      void\r
1465          */\r
1466         public function parse_loginform()\r
1467         {\r
1468                 global $member, $CONF;\r
1469                 if ( !$member->isLoggedIn() )\r
1470                 {\r
1471                         $filename = 'loginform-notloggedin';\r
1472                         $this->formdata = array();\r
1473                 }\r
1474                 else\r
1475                 {\r
1476                         $filename = 'loginform-loggedin';\r
1477                         $this->formdata = array(\r
1478                                 'membername' => $member->getDisplayName(),\r
1479                         );\r
1480                 }\r
1481                 $this->doForm($filename);\r
1482                 return;\r
1483         }\r
1484         \r
1485         /**\r
1486          * Actions::parse_member()\r
1487          * Parse skinvar member\r
1488          * (includes a member info thingie)\r
1489          * \r
1490          * @param       string  $what   which memberdata is needed\r
1491          * @return      void\r
1492          */\r
1493         public function parse_member($what)\r
1494         {\r
1495                 global $memberinfo, $member, $CONF;\r
1496                 \r
1497                 // 1. only allow the member-details-page specific variables on member pages\r
1498                 if ( $this->skintype == 'member' )\r
1499                 {\r
1500                         switch( $what )\r
1501                         {\r
1502                                 case 'name':\r
1503                                         echo Entity::hsc($memberinfo->getDisplayName());\r
1504                                         break;\r
1505                                 case 'realname':\r
1506                                         echo Entity::hsc($memberinfo->getRealName());\r
1507                                         break;\r
1508                                 case 'notes':\r
1509                                         echo Entity::hsc($memberinfo->getNotes());\r
1510                                         break;\r
1511                                 case 'url':\r
1512                                         echo Entity::hsc($memberinfo->getURL());\r
1513                                         break;\r
1514                                 case 'email':\r
1515                                         echo Entity::hsc($memberinfo->getEmail());\r
1516                                         break;\r
1517                                 case 'id':\r
1518                                         echo Entity::hsc($memberinfo->getID());\r
1519                                         break;\r
1520                         }\r
1521                 }\r
1522                 \r
1523                 // 2. the next bunch of options is available everywhere, as long as the user is logged in\r
1524                 if ( $member->isLoggedIn() )\r
1525                 {\r
1526                         switch( $what )\r
1527                         {\r
1528                                 case 'yourname':\r
1529                                         echo $member->getDisplayName();\r
1530                                         break;\r
1531                                 case 'yourrealname':\r
1532                                         echo $member->getRealName();\r
1533                                         break;\r
1534                                 case 'yournotes':\r
1535                                         echo $member->getNotes();\r
1536                                         break;\r
1537                                 case 'yoururl':\r
1538                                         echo $member->getURL();\r
1539                                         break;\r
1540                                 case 'youremail':\r
1541                                         echo $member->getEmail();\r
1542                                         break;\r
1543                                 case 'yourid':\r
1544                                         echo $member->getID();\r
1545                                         break;\r
1546                                 case 'yourprofileurl':\r
1547                                         if ($CONF['URLMode'] == 'pathinfo')\r
1548                                                 echo Link::create_memberlink($member->getID());\r
1549                                         else\r
1550                                                 echo $CONF['IndexURL'] . Link::create_memberlink($member->getID());\r
1551                                         break;\r
1552                         }\r
1553                 }\r
1554                 return;\r
1555         }\r
1556         \r
1557         /**\r
1558          * Link::parse_membermailform()\r
1559          * Parse skinvar membermailform\r
1560          * \r
1561          * @param       integer $rows   the height for textarea\r
1562          * @param       integer $cols   the width for textarea\r
1563          * @param       string  $desturl        URI to redirect\r
1564          * @return      void\r
1565          */\r
1566         public function parse_membermailform($rows = 10, $cols = 40, $desturl = '')\r
1567         {\r
1568                 global $member, $CONF, $memberid;\r
1569                 \r
1570                 if ( $desturl == '' )\r
1571                 {\r
1572                         if ( $CONF['URLMode'] == 'pathinfo' )\r
1573                         {\r
1574                                 $desturl = Link::create_memberlink($memberid);\r
1575                         }\r
1576                         else\r
1577                         {\r
1578                                 $desturl = $CONF['IndexURL'] . Link::create_memberlink($memberid);\r
1579                         }\r
1580                 }\r
1581                 \r
1582                 $message = postVar('message');\r
1583                 $frommail = postVar('frommail');\r
1584                 \r
1585                 $this->formdata = array(\r
1586                         'url' => Entity::hsc($desturl),\r
1587                         'actionurl' => Entity::hsc($CONF['ActionURL']),\r
1588                         'memberid' => $memberid,\r
1589                         'rows' => $rows,\r
1590                         'cols' => $cols,\r
1591                         'message' => Entity::hsc($message),\r
1592                         'frommail' => Entity::hsc($frommail)\r
1593                 );\r
1594                 \r
1595                 if ( $member->isLoggedIn() )\r
1596                 {\r
1597                         $this->doForm('membermailform-loggedin');\r
1598                 }\r
1599                 else if ( $CONF['NonmemberMail'] )\r
1600                 {\r
1601                         $this->doForm('membermailform-notloggedin');\r
1602                 }\r
1603                 else\r
1604                 {\r
1605                         $this->doForm('membermailform-disallowed');\r
1606                 }\r
1607                 return;\r
1608         }\r
1609         \r
1610         /**\r
1611          * Actions::parse_nextarchive()\r
1612          * Parse skinvar nextarchive\r
1613          * \r
1614          * @param       void\r
1615          * @return      void\r
1616          */\r
1617         public function parse_nextarchive()\r
1618         {\r
1619                 global $archivenext;\r
1620                 echo $archivenext;\r
1621                 return;\r
1622         }\r
1623         \r
1624         /**\r
1625          * Parse skinvar nextitem\r
1626          * (include itemid of next item)\r
1627          * \r
1628          * @param       void\r
1629          * @return      void\r
1630          */\r
1631         public function parse_nextitem()\r
1632         {\r
1633                 global $itemidnext;\r
1634                 if ( isset($itemidnext) )\r
1635                 {\r
1636                         echo (int)$itemidnext;\r
1637                 }\r
1638                 return;\r
1639         }\r
1640         \r
1641         /**\r
1642          * Actions::parse_nextitemtitle()\r
1643          * Parse skinvar nextitemtitle\r
1644          * (include itemtitle of next item)\r
1645          * \r
1646          * @param       string  $format format of text\r
1647          * @return      void\r
1648          */\r
1649         public function parse_nextitemtitle($format = '')\r
1650         {\r
1651                 global $itemtitlenext;\r
1652                 \r
1653                 switch ( $format )\r
1654                 {\r
1655                         case 'xml':\r
1656                                 echo Entity::hen($itemtitlenext);\r
1657                                 break;\r
1658                         case 'raw':\r
1659                                 echo $itemtitlenext;\r
1660                                 break;\r
1661                         case 'attribute':\r
1662                         default:\r
1663                                 echo Entity::hsc($itemtitlenext);\r
1664                                 break;\r
1665                 }\r
1666                 return;\r
1667         }\r
1668         \r
1669         /**\r
1670          * Actions::parse_nextlink()\r
1671          * Parse skinvar nextlink\r
1672          * \r
1673          * @param       string  $linktext       text for content of anchor element\r
1674          * @param       integer $amount         the amount of items in a display\r
1675          * @param       integer $recount        increment from this value\r
1676          * @return      void\r
1677          */\r
1678         public function parse_nextlink($linktext = '', $amount = 10, $recount = '')\r
1679         {\r
1680                 global $itemidnext, $archivenext, $startpos;\r
1681                 if ( $this->skintype == 'item' )\r
1682                 {\r
1683                         $this->itemlink($itemidnext, $linktext);\r
1684                 }\r
1685                 else if ( $this->skintype == 'search' || $this->skintype == 'index' )\r
1686                 {\r
1687                         $this->searchlink($amount, $startpos, 'next', $linktext, $recount);\r
1688                 }\r
1689                 else\r
1690                 {\r
1691                         $this->archivelink($archivenext, $linktext);\r
1692                 }\r
1693                 return;\r
1694         }\r
1695 \r
1696         /**\r
1697          * Actions::parse_nucleusbutton()\r
1698          * Parse skinvar nucleusbutton\r
1699          * \r
1700          * @param       string  $imgurl URL  for image\r
1701          * @param       integer $imgwidth       width of image\r
1702          * @param       integer $imgheidht      height of image\r
1703          */\r
1704         public function parse_nucleusbutton($imgurl = '', $imgwidth = '85', $imgheight = '31')\r
1705         {\r
1706                 global $CONF;\r
1707                 if ( $imgurl == '' )\r
1708                 {\r
1709                         $imgurl = $CONF['AdminURL'] . 'nucleus.gif';\r
1710                 }\r
1711                 else if ( Parser::getProperty('IncludeMode') == 'skindir' )\r
1712                 {\r
1713                         // when skindit IncludeMode is used: start from skindir\r
1714                         $imgurl = $CONF['SkinsURL'] . Parser::getProperty('IncludePrefix') . $imgurl;\r
1715                 }\r
1716                 \r
1717                 $this->formdata = array(\r
1718                         'imgurl' => $imgurl,\r
1719                         'imgwidth' => $imgwidth,\r
1720                         'imgheight' => $imgheight,\r
1721                 );\r
1722                 $this->doForm('nucleusbutton');\r
1723                 return;\r
1724         }\r
1725         \r
1726         /**\r
1727          * Actions::parse_otherarchive()\r
1728          * Parse skinvar otherarchive\r
1729          * \r
1730          * @param       string  $blogname       name of weblog\r
1731          * @param       string  $template       name of template\r
1732          * @param       string  $category       name of category\r
1733          * @return      void\r
1734          */     \r
1735         public function parse_otherarchive($blogname, $template, $category = '')\r
1736         {\r
1737                 global $archive, $manager;\r
1738                 sscanf($archive,'%d-%d-%d',$y,$m,$d);\r
1739                 $b =& $manager->getBlog(getBlogIDFromName($blogname));\r
1740                 $this->setBlogCategory($b, $category);\r
1741                 $this->preBlogContent('otherachive',$b);\r
1742                 $b->showArchive($template, $y, $m, $d);\r
1743                 $this->postBlogContent('otherachive',$b);\r
1744                 return;\r
1745         }\r
1746         \r
1747         /**\r
1748          * Actions::parse_otherarchivedaylist()\r
1749          * Parse skinvar otherarchivedaylist\r
1750          * \r
1751          * @param       string  $blogname       name of weblog\r
1752          * @param       string  $template       name of template\r
1753          * @param       string  $category       name of category\r
1754          * @param       integer $limit          the amount of items in a display\r
1755          * @return      void\r
1756          */\r
1757         public function parse_otherarchivedaylist($blogname, $template, $category = 'all', $limit = 0)\r
1758         {\r
1759                 global $manager;\r
1760                 if ( $category == 'all')\r
1761                 {\r
1762                         $category = '';\r
1763                 }\r
1764                 $b =& $manager->getBlog(getBlogIDFromName($blogname));\r
1765                 $this->setBlogCategory($b, $category);\r
1766                 $this->preBlogContent('otherarchivelist',$b);\r
1767                 $b->showArchiveList($template, 'day', $limit);\r
1768                 $this->postBlogContent('otherarchivelist',$b);\r
1769                 return;\r
1770         }\r
1771         \r
1772         /**\r
1773          * Actions::parse_otherarchivelist()\r
1774          * Parse skinvar otherarchivelist\r
1775          * \r
1776          * @param       string  $blogname       name of weblog\r
1777          * @param       string  $template       name of template\r
1778          * @param       string  $category       name of category\r
1779          * @param       integer $limit          the amount of items in a display\r
1780          * @return      void\r
1781          */\r
1782         public function parse_otherarchivelist($blogname, $template, $category = 'all', $limit = 0)\r
1783         {\r
1784                 global $manager;\r
1785                 if ( $category == 'all' )\r
1786                 {\r
1787                         $category = '';\r
1788                 }\r
1789                 $b =& $manager->getBlog(getBlogIDFromName($blogname));\r
1790                 $this->setBlogCategory($b, $category);\r
1791                 $this->preBlogContent('otherarchivelist',$b);\r
1792                 $b->showArchiveList($template, 'month', $limit);\r
1793                 $this->postBlogContent('otherarchivelist',$b);\r
1794                 return;\r
1795         }\r
1796         \r
1797         /**\r
1798          * Actions::parse_otherarchiveyearlist()\r
1799          * Parse skinvar otherarchiveyearlist\r
1800          * \r
1801          * @param       string  $blogname       name of weblog\r
1802          * @param       string  $template       name of template\r
1803          * @param       string  $category       name of category\r
1804          * @limit       integer $limit          the amount of items in a display\r
1805          */\r
1806         public function parse_otherarchiveyearlist($blogname, $template, $category = 'all', $limit = 0)\r
1807         {\r
1808                 global $manager;\r
1809                 if ( $category == 'all' )\r
1810                 {\r
1811                         $category = '';\r
1812                 }\r
1813                 $b =& $manager->getBlog(getBlogIDFromName($blogname));\r
1814                 $this->setBlogCategory($b, $category);\r
1815                 $this->preBlogContent('otherarchivelist',$b);\r
1816                 $b->showArchiveList($template, 'year', $limit);\r
1817                 $this->postBlogContent('otherarchivelist',$b);\r
1818                 return;\r
1819         }\r
1820         \r
1821         /**\r
1822          * Actions::parse_otherblog()\r
1823          * Parse skinvar otherblog\r
1824          * \r
1825          * @param       string  $blogname       name of weblog\r
1826          * @param       string  $template       name of template\r
1827          * @param       mixed   $amount         the amount of items, in case it includes the beginning\r
1828          * @param       string  $category       name of category\r
1829          * @return      void\r
1830          */\r
1831         public function parse_otherblog($blogname, $template, $amount = 10, $category = '')\r
1832         {\r
1833                 global $manager;\r
1834                 \r
1835                 list($limit, $offset) = sscanf($amount, '%d(%d)');\r
1836                 \r
1837                 $b =& $manager->getBlog(getBlogIDFromName($blogname));\r
1838                 $this->setBlogCategory($b, $category);\r
1839                 $this->preBlogContent('otherblog',$b);\r
1840                 $this->amountfound = $b->readLog($template, $limit, $offset);\r
1841                 $this->postBlogContent('otherblog',$b);\r
1842                 return;\r
1843         }\r
1844         \r
1845         /**\r
1846          * Actions::parse_othersearchresults()\r
1847          * Parse skinvar othersearchresults\r
1848          * \r
1849          * @param       string  $blogname       name of weblog\r
1850          * @param       string  $template       name of template\r
1851          * @param       integer $maxresults     the amount of results\r
1852          * @return      void\r
1853          */\r
1854         public function parse_othersearchresults($blogname, $template, $maxresults = 50)\r
1855         {\r
1856                 global $query, $amount, $manager, $startpos;\r
1857                 $b =& $manager->getBlog(getBlogIDFromName($blogname));\r
1858                 // need this to select default category\r
1859                 $this->setBlogCategory($b, '');\r
1860                 $this->preBlogContent('othersearchresults',$b);\r
1861                 $b->search($query, $template, $amount, $maxresults, $startpos);\r
1862                 $this->postBlogContent('othersearchresults',$b);\r
1863                 return;\r
1864         }\r
1865         \r
1866         /**\r
1867          * Actions::parse_plugin()\r
1868          * Executes a plugin skinvar\r
1869          * extra parameters can be added\r
1870          * \r
1871          * @param       string  $pluginName     name of plugin (without the NP_)\r
1872          * @return      void\r
1873          */\r
1874         public function parse_plugin($pluginName)\r
1875         {\r
1876                 global $manager;\r
1877                 \r
1878                 $plugin =& $manager->getPlugin('NP_' . $pluginName);\r
1879                 if ( !$plugin )\r
1880                 {\r
1881                         return;\r
1882                 }\r
1883                 \r
1884                 // get arguments\r
1885                 $params = func_get_args();\r
1886                 \r
1887                 // remove plugin name\r
1888                 array_shift($params);\r
1889                 \r
1890                 // add skin type on front\r
1891                 array_unshift($params, $this->skintype);\r
1892                 \r
1893                 call_user_func_array(array(&$plugin,'doSkinVar'), $params);\r
1894                 return;\r
1895         }\r
1896         \r
1897         /**\r
1898          * Actions::parse_prevarchive()\r
1899          * Parse skinvar prevarchive\r
1900          * \r
1901          * @param       void\r
1902          * @return      void\r
1903          */\r
1904         public function parse_prevarchive()\r
1905         {\r
1906                 global $archiveprev;\r
1907                 echo $archiveprev;\r
1908         }\r
1909         \r
1910         /**\r
1911          * Actions::parse_preview()\r
1912          * Parse skinvar preview\r
1913          * \r
1914          * @param       string  $template       name of tempalte\r
1915          * @return      void\r
1916          */\r
1917         public function parse_preview($template)\r
1918         {\r
1919                 global $blog, $CONF, $manager;\r
1920                 \r
1921                 $template =& $manager->getTemplate($template);\r
1922                 \r
1923                 $row['body'] = '<span id="prevbody"></span>';\r
1924                 $row['title'] = '<span id="prevtitle"></span>';\r
1925                 $row['more'] = '<span id="prevmore"></span>';\r
1926                 $row['itemlink'] = '';\r
1927                 $row['itemid'] = 0; $row['blogid'] = $blog->getID();\r
1928                 \r
1929                 echo Template::fill($template['ITEM_HEADER'],$row);\r
1930                 echo Template::fill($template['ITEM'],$row);\r
1931                 echo Template::fill($template['ITEM_FOOTER'],$row);\r
1932                 return;\r
1933         }\r
1934         \r
1935         /**\r
1936          * Actions::parse_previtem()\r
1937          * Parse skinvar previtem\r
1938          * (include itemid of prev item)\r
1939          * \r
1940          * @param       void\r
1941          * @return      void\r
1942          */\r
1943         public function parse_previtem()\r
1944         {\r
1945                 global $itemidprev;\r
1946                 if ( isset($itemidprev) )\r
1947                 {\r
1948                         echo (integer) $itemidprev;\r
1949                 }\r
1950                 return;\r
1951         }\r
1952         \r
1953         /**\r
1954          * Actions::parse_previtemtitle()\r
1955          * Parse skinvar previtemtitle\r
1956          * (include itemtitle of prev item)\r
1957          * \r
1958          * @param       String  $format string format\r
1959          * @return      String  formatted string\r
1960          */\r
1961         public function parse_previtemtitle($format = '')\r
1962         {\r
1963                 global $itemtitleprev;\r
1964                 \r
1965                 switch ( $format )\r
1966                 {\r
1967                         case 'xml':\r
1968                                 echo Entity::hen($itemtitleprev);\r
1969                                 break;\r
1970                         case 'raw':\r
1971                                 echo $itemtitleprev;\r
1972                                 break;\r
1973                         case 'attribute':\r
1974                         default:\r
1975                                 echo Entity::hsc($itemtitleprev);\r
1976                                 break;\r
1977                 }\r
1978                 return;\r
1979         }\r
1980         \r
1981         /**\r
1982          * Actions::parse_prevlink()\r
1983          * Parse skinvar prevlink\r
1984          * \r
1985          * @param       string  $linktext       text as a content of anchor element\r
1986          * @param       integer the amount of links\r
1987          * @return      void\r
1988          */\r
1989         public function parse_prevlink($linktext = '', $amount = 10)\r
1990         {\r
1991                 global $itemidprev, $archiveprev, $startpos;\r
1992                 \r
1993                 if ( $this->skintype == 'item' )\r
1994                 {\r
1995                         $this->itemlink($itemidprev, $linktext);\r
1996                 }\r
1997                 else if ( $this->skintype == 'search' || $this->skintype == 'index' )\r
1998                 {\r
1999                         $this->searchlink($amount, $startpos, 'prev', $linktext);\r
2000                 }\r
2001                 else\r
2002                 {\r
2003                         $this->archivelink($archiveprev, $linktext);\r
2004                 }\r
2005                 return;\r
2006         }\r
2007         \r
2008         /**\r
2009          * Actions::parse_query()\r
2010          * Parse skinvar query\r
2011          * (includes the search query)   \r
2012          * \r
2013          * @param       void\r
2014          * @return      void\r
2015          */\r
2016         public function parse_query()\r
2017         {\r
2018                 global $query;\r
2019                 echo Entity::hsc($query);\r
2020                 return;\r
2021         }\r
2022         \r
2023         /**\r
2024          * Actions::parse_referer()\r
2025          * Parse skinvar referer\r
2026          * \r
2027          * @param       void\r
2028          * @return      void\r
2029          */\r
2030         public function parse_referer()\r
2031         {\r
2032                 echo Entity::hsc(serverVar('HTTP_REFERER'));\r
2033                 return;\r
2034         }\r
2035         \r
2036         /**\r
2037          * Actions::parse_searchform()\r
2038          * Parse skinvar searchform\r
2039          * \r
2040          * @param       string  $blogname       name of weblog\r
2041          * @return      void\r
2042          */\r
2043         public function parse_searchform($blogname = '')\r
2044         {\r
2045                 global $CONF, $manager, $maxresults;\r
2046                 if ( $blogname )\r
2047                 {\r
2048                         $blog =& $manager->getBlog(getBlogIDFromName($blogname));\r
2049                 }\r
2050                 else\r
2051                 {\r
2052                         global $blog;\r
2053                 }\r
2054                 // use default blog when no blog is selected\r
2055                 $this->formdata = array(\r
2056                         'id'    => $blog?$blog->getID():$CONF['DefaultBlog'],\r
2057                         'query' => Entity::hsc(getVar('query')),\r
2058                 );\r
2059                 $this->doForm('searchform');\r
2060                 return;\r
2061         }\r
2062         \r
2063         /**\r
2064          * Actions::parse_searchresults()\r
2065          * Parse skinvar searchresults\r
2066          * \r
2067          * @param       string  $template       name of tempalte\r
2068          * @param       integer $maxresults     searched items in a display\r
2069          * @return      void;\r
2070          */\r
2071         public function parse_searchresults($template, $maxresults = 50 )\r
2072         {\r
2073                 global $blog, $query, $amount, $startpos;\r
2074                 \r
2075                 $this->setBlogCategory($blog, '');      // need this to select default category\r
2076                 $this->preBlogContent('searchresults',$blog);\r
2077                 $this->amountfound = $blog->search($query, $template, $amount, $maxresults, $startpos);\r
2078                 $this->postBlogContent('searchresults',$blog);\r
2079                 return;\r
2080         }\r
2081         \r
2082         /**\r
2083          * Actions::parse_self()\r
2084          * Parse skinvar self\r
2085          * \r
2086          * @param       void\r
2087          * @return      void\r
2088          */\r
2089         public function parse_self()\r
2090         {\r
2091                 global $CONF;\r
2092                 echo $CONF['Self'];\r
2093                 return;\r
2094         }\r
2095         \r
2096         /**\r
2097          * Actions::parse_sitevar()\r
2098          * Parse skinvar sitevar\r
2099          * (include a sitevar)\r
2100          * \r
2101          * @param       string  $which\r
2102          * @return      void\r
2103          */\r
2104         public function parse_sitevar($which)\r
2105         {\r
2106                 global $CONF;\r
2107                 switch ( $which )\r
2108                 {\r
2109                         case 'url':\r
2110                                 echo $CONF['IndexURL'];\r
2111                                 break;\r
2112                         case 'name':\r
2113                                 echo $CONF['SiteName'];\r
2114                                 break;\r
2115                         case 'admin':\r
2116                                 echo $CONF['AdminEmail'];\r
2117                                 break;\r
2118                         case 'adminurl':\r
2119                                 echo $CONF['AdminURL'];\r
2120                 }\r
2121                 return;\r
2122         }\r
2123         \r
2124         /**\r
2125          * Actions::parse_skinname()\r
2126          * Parse skinname\r
2127          * \r
2128          * @param       void\r
2129          * @return      void\r
2130          */\r
2131         public function parse_skinname()\r
2132         {\r
2133                 echo $this->skin->getName();\r
2134                 return;\r
2135         }\r
2136         \r
2137         /**\r
2138          * Actions::parse_skintype()\r
2139          * Parse skintype (experimental)\r
2140          * \r
2141          * @param       void\r
2142          * @return      void\r
2143          */\r
2144         public function parse_skintype()\r
2145         {\r
2146                 echo $this->skintype;\r
2147                 return;\r
2148         }\r
2149         \r
2150         /**\r
2151          * Actions::parse_text()\r
2152          * Parse text\r
2153          * \r
2154          * @param       void\r
2155          * @return      void\r
2156          */\r
2157         public function parse_text($which)\r
2158         {\r
2159                 // constant($which) only available from 4.0.4 :(\r
2160                 if ( defined($which) )\r
2161                 {\r
2162                         eval("echo $which;");\r
2163                 }\r
2164                 return;\r
2165         }\r
2166         \r
2167         /**\r
2168          * Actions::parse_ticket()\r
2169          * Parse ticket\r
2170          * \r
2171          * @param       void\r
2172          * @return      void\r
2173          */\r
2174         public function parse_ticket()\r
2175         {\r
2176                 global $manager;\r
2177                 $manager->addTicketHidden();\r
2178                 return;\r
2179         }\r
2180 \r
2181         /**\r
2182          * Actions::parse_todaylink()\r
2183          * Parse skinvar todaylink\r
2184          * A link to the today page (depending on selected blog, etc...)\r
2185          *\r
2186          * @param       string  $linktext       text for link\r
2187          * @return      void\r
2188          */\r
2189         public function parse_todaylink($linktext = '')\r
2190         {\r
2191                 global $blog, $CONF;\r
2192                 if ( $blog )\r
2193                 {\r
2194                         echo $this->link(Link::create_blogidlink($blog->getID(),$this->linkparams), $linktext);\r
2195                 }\r
2196                 else\r
2197                 {\r
2198                         echo $this->link($CONF['SiteUrl'], $linktext);\r
2199                 }\r
2200                 return;\r
2201         }\r
2202         \r
2203         /**\r
2204          * Parse vars\r
2205          * When commentform is not used, to include a hidden field with itemid   \r
2206          * \r
2207          * @param       void\r
2208          * @return      void\r
2209          */\r
2210         public function parse_vars()\r
2211         {\r
2212                 global $itemid;\r
2213                 echo '<input type="hidden" name="itemid" value="'.$itemid.'" />' . "\n";\r
2214                 return;\r
2215         }\r
2216 \r
2217         /**\r
2218          * Actions::parse_version()\r
2219          * Parse skinvar version\r
2220          * (include nucleus versionnumber)       \r
2221          * \r
2222          * @param       void\r
2223          * @return      void\r
2224          */\r
2225         public function parse_version()\r
2226         {\r
2227                 global $nucleus;\r
2228                 echo 'Nucleus CMS ' . $nucleus['version'];\r
2229                 return;\r
2230         }\r
2231         \r
2232         /**\r
2233          * Actions::parse_sticky()\r
2234          * Parse skinvar sticky\r
2235          * \r
2236          * @param       integer $itemnumber     id of item\r
2237          * @param       string  $template       name of template\r
2238          * @return      void\r
2239          */\r
2240         public function parse_sticky($itemnumber = 0, $template = '')\r
2241         {\r
2242                 global $manager;\r
2243                 \r
2244                 $itemnumber = intval($itemnumber);\r
2245                 $itemarray = array($itemnumber);\r
2246                 \r
2247                 $b =& $manager->getBlog(getBlogIDFromItemID($itemnumber));\r
2248                 $this->preBlogContent('sticky',$b);\r
2249                 $this->amountfound = $b->readLogFromList($itemarray, $template);\r
2250                 $this->postBlogContent('sticky',$b);\r
2251                 return;\r
2252         }\r
2253         \r
2254         /* TODO: checking these new added methods */\r
2255         \r
2256         /**\r
2257          * Actions::parse_adminbanlist()\r
2258          * Parse skinvar adminbanlist\r
2259          * \r
2260          * @param       string  $templateName   name of template to use\r
2261          * @return      void\r
2262          */\r
2263         public function parse_adminbanlist($templateName = '')\r
2264         {\r
2265                 $blogid = intRequestVar('blogid');\r
2266                 $query = "SELECT * FROM %s WHERE blogid=%d ORDER BY iprange;";\r
2267                 $query = sprintf($query, sql_table('ban'), (integer) $blogid);\r
2268                 $template['content'] = 'banlist';\r
2269                 $amount = skinableShowlist($query, 'table', $template, $templateName);\r
2270                 if ( $amount == 0 )\r
2271                 {\r
2272                         echo _BAN_NONE;\r
2273                 }\r
2274                 return;\r
2275         }\r
2276         \r
2277         /**\r
2278          * Actions::parse_adminbatchaction()\r
2279          * Parse skinvar adminbatchaction\r
2280          * \r
2281          * @param       void\r
2282          * @return      void\r
2283          */\r
2284         public function parse_adminbatchaction()\r
2285         {\r
2286                 echo Entity::hsc(requestVar('batchaction'));\r
2287                 return;\r
2288         }\r
2289         \r
2290         /**\r
2291          * Actions::parse_adminbatchlist()\r
2292          * Parse skinvar adminbatchlist\r
2293          * \r
2294          * @param       string  $templateName   name of template to use\r
2295          * @return      void\r
2296          */\r
2297         public function parse_adminbatchlist($templateName = '')\r
2298         {\r
2299                 global $manager;\r
2300                 $templates = array();\r
2301                 if ( !empty($templateName) )\r
2302                 {\r
2303                         $templates = skinableTEMPLATE::read($templateName);\r
2304                 }\r
2305                 if ( isset($templates['ADMIN_BATCHLIST']) || !empty($templates['ADMIN_BATCHLIST']) )\r
2306                 {\r
2307                         $template = $templates['ADMIN_BATCHLIST'];\r
2308                 }\r
2309                 else\r
2310                 {\r
2311                         $template = '<li><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b>'\r
2312                                           . '<%batchlisttype%> <b><%batchid%></b>...'\r
2313                                           . '<b><%batchlistmsg%></b></li>' . "\n";\r
2314                 }\r
2315                 \r
2316                 $selected = requestIntArray('batch');\r
2317                 $action   = requestVar('batchaction');\r
2318                 \r
2319                 switch ( $this->skintype )\r
2320                 {\r
2321                         case 'batchitem':\r
2322                                 $batchlisttype = _BATCH_ONITEM;\r
2323                                 $deleteaction  = 'deleteOneItem';\r
2324                                 $moveaction     = 'moveOneItem';\r
2325                                 $destid         = intRequestVar('destcatid');\r
2326                                 break;\r
2327                         case 'batchcomment':\r
2328                                 $batchlisttype = _BATCH_ONCOMMENT;\r
2329                                 $deleteaction  = 'deleteOneComment';\r
2330                                 break;\r
2331                         case 'batchmember':\r
2332                                 $batchlisttype = _BATCH_ONMEMBER;\r
2333                                 $deleteaction  = 'deleteOneMember';\r
2334                                 $setadminsql   = sql_table('member') . ' SET madmin = 1 WHERE mnumber = ';\r
2335                                 $unsetchksql   = 'SELECT * FROM ' . sql_table('member') . ' WHERE madmin = 1 AND mcanlogin = 1';\r
2336                                 $unsetupsql     = sql_table('member') . ' SET madmin = 0 WHERE mnumber = ';\r
2337                                 $unseterrmsg   = _ERROR_ATLEASTONEADMIN;\r
2338                                 break;\r
2339                         case 'batchteam':\r
2340                                 $blogid         = intRequestVar('blogid');\r
2341                                 $batchlisttype = _BATCH_ONTEAM;\r
2342                                 $deleteaction  = 'deleteOneTeamMember';\r
2343                                 $setadminsql   = sql_table('team') . ' SET tadmin = 1 WHERE tblog = ' . $blogid . ' AND tmember = ';\r
2344                                 $unsetchksql   = 'SELECT * FROM ' . sql_table('team') . ' WHERE tadmin = 1 AND tblog = ' . $blogid;\r
2345                                 $unseterrmsg   = _ERROR_ATLEASTONEBLOGADMIN;\r
2346                                 $unsetupsql     = sql_table('team') . ' SET tadmin = 0 WHERE tblog = ' . $blogid . ' AND tmember = ';\r
2347                                 break;\r
2348                         case 'batchcategory':\r
2349                                 $batchlisttype = _BATCH_ONCATEGORY;\r
2350                                 $deleteaction  = 'deleteOneCategory';\r
2351                                 $moveaction     = 'moveOneCategory';\r
2352                                 $destid         = intRequestVar('destblogid');\r
2353                                 break;\r
2354                 }\r
2355                 \r
2356                 // walk over all selectedids and perform action\r
2357                 foreach ( $selected as $selectedid )\r
2358                 {\r
2359                         $error    = '';\r
2360                         $selectedid = intval($selectedid);\r
2361                         switch ( $action )\r
2362                         {\r
2363                                 case 'delete':\r
2364                                         if ( $this->skintype != 'batchteam' )\r
2365                                         {\r
2366                                                 $error = $this->objAdmin->$deleteaction($selectedid);\r
2367                                         }\r
2368                                         else\r
2369                                         {\r
2370                                                 $error  = $this->objAdmin->deleteOneTeamMember($blogid, $selectedid);\r
2371                                         }\r
2372                                         break;\r
2373                                 case 'move':\r
2374                                         $error = $this->objAdmin->$moveaction($selectedid, $destid);\r
2375                                         break;\r
2376                                 case 'setadmin':\r
2377                                         // always succeeds\r
2378                                         sql_query('UPDATE ' . $setadminsql . $selectedid);\r
2379                                         $error = '';\r
2380                                         break;\r
2381                                 case 'unsetadmin':\r
2382                                         // there should always remain at least one super-admin\r
2383                                         $r = sql_query($unsetchksql);\r
2384                                         if ( sql_num_rows($r) < 2 )\r
2385                                         {\r
2386                                                 $error = $unseterrmsg;\r
2387                                         }\r
2388                                         else\r
2389                                         {\r
2390                                                 sql_query('UPDATE ' . $unsetupsql . $selectedid);\r
2391                                         }\r
2392                                         break;\r
2393                                 default:\r
2394                                         $error = _BATCH_UNKNOWN . Entity::hsc($action);\r
2395                         }\r
2396                         $data = array(\r
2397                                 'batchid'                       => $selectedid,\r
2398                                 'batchlisttype'         => Entity::hsc($batchlisttype),\r
2399                                 'adminbatchaction'      => Entity::hsc($action),\r
2400                                 'batchlistmsg'          => $error ? $error : _BATCH_SUCCESS,\r
2401                         );\r
2402                         $handler = new skinableACTIONS('template', $template, new ADMIN);\r
2403                         $parser  = new skinablePARSER($handler);\r
2404                         \r
2405                         ob_start();\r
2406                         $parser->parse($template);\r
2407                         $template = ob_get_contents();\r
2408                         ob_end_clean();\r
2409                         \r
2410                         echo TEMPLATE::fill($template, $data);\r
2411                         return;\r
2412                 }\r
2413         }\r
2414         \r
2415         /**\r
2416          * Actions::parse_adminbloglink()\r
2417          * Parse skinvar adminbloglink\r
2418          * \r
2419          * @param       string  $templateName   name of template to use\r
2420          * @return      void\r
2421          */\r
2422         public function parse_adminbloglink($templateName = '')\r
2423         {\r
2424                 global $manager;\r
2425                 $blogid =  intRequestVar('blogid');\r
2426                 $blog   =& $manager->getBlog($blogid);\r
2427                 $templates = array();\r
2428                 \r
2429                 if ( !empty($templateName) )\r
2430                 {\r
2431                         $templates = skinableTEMPLATE::read($templateName);\r
2432                 }\r
2433                 \r
2434                 if ( isset($templates['ADMIN_BLOGLINK']) || !empty($templates['ADMIN_BLOGLINK']) )\r
2435                 {\r
2436                         $template = $templates['ADMIN_BLOGLINK'];\r
2437                 }\r
2438                 else\r
2439                 {\r
2440                         $template = '<a href="<%url%>" title="<%adminbloglinktitle%>"><%blogname%></a>';\r
2441                 }\r
2442                 \r
2443                 $data = array(\r
2444                         'url'                                   => Entity::hsc($blog->getURL()),\r
2445                         'adminbloglinktitle'    => _BLOGLIST_TT_VISIT,\r
2446                         'blogname'                              => Entity::hsc($blog->getName())\r
2447                 );\r
2448                 \r
2449                 echo TEMPLATE::fill($template, $data);\r
2450                 return;\r
2451         }\r
2452         \r
2453         /**\r
2454          * Actions::parse_adminerrormesg()\r
2455          * Parse skinvar adminerrormesg\r
2456          * \r
2457          * @param       void\r
2458          * @return      void\r
2459          */\r
2460         public function parse_adminerrormesg()\r
2461         {\r
2462                 global $CONF;\r
2463                 $message = '';\r
2464                 \r
2465                 if ( requestVar('errormessage') )\r
2466                 {\r
2467                         $message = requestVar('errormessage');\r
2468                 }\r
2469                 elseif ( cookieVar($CONF['CookiePrefix'] . 'errormessage') )\r
2470                 {\r
2471                         $message = cookieVar($CONF['CookiePrefix'] . 'errormessage');\r
2472                 }\r
2473                 elseif ( $this->objAdmin->sessionVar($CONF['CookiePrefix'] . 'errormessage') )\r
2474                 {\r
2475                         $message = $this->objAdmin->sessionVar($CONF['CookiePrefix'] . 'errormessage');\r
2476                 }\r
2477                 echo Entity::hsc($message);\r
2478                 return;\r
2479         }\r
2480         \r
2481         /**\r
2482          * Actions::parse_adminparsedinclude()\r
2483          * Parse skinvar adminparsedinclude\r
2484          * \r
2485          * @param       string  $filename       name of file\r
2486          * @return      void\r
2487          */\r
2488         public function parse_adminparsedinclude($filename)\r
2489         {\r
2490                 // check current level\r
2491                 if ( $this->level > 3)\r
2492                 {\r
2493                         // max. depth reached (avoid endless loop)\r
2494                         return;\r
2495                 }\r
2496                 \r
2497                 $skin = new skinableSKIN($this->skin->id);\r
2498                 $file = $this->getIncludeFileName($filename);\r
2499                 if ( !$skin->isValid && !file_exists($file) )\r
2500                 {\r
2501                         return;\r
2502                 }\r
2503                 $contents = $skin->getContent($filename);\r
2504                 if ( !$contents )\r
2505                 {\r
2506                         if ( !file_exists($file) )\r
2507                         {\r
2508                                 return;\r
2509                         }\r
2510                         $contents = file_get_contents($file);\r
2511                         if ( empty($contents) )\r
2512                         {\r
2513                                 return;\r
2514                         }\r
2515                 }\r
2516                 $this->level = $this->level + 1;\r
2517                 // parse file contents\r
2518                 $this->parser->parse($contents);\r
2519                 \r
2520                 $this->level = $this->level - 1;\r
2521                 return;\r
2522         }\r
2523         \r
2524         /**\r
2525          * Actions::parse_adminskineditallowedlist()\r
2526          * Parse skinvar adminskineditallowedlist\r
2527          * \r
2528          * @param       string  $type                   template/blog\r
2529          * @param       string  $templateName   name of template to use\r
2530          * @return      void\r
2531          */\r
2532         public function parse_adminskineditallowedlist($type = 'template', $templateName = '')\r
2533         {\r
2534                 switch ( $type )\r
2535                 {\r
2536                         /* TODO: blog seems not to be used */\r
2537                         case 'blog':\r
2538                                 $query = "SELECT bshortname, bname FROM %s";\r
2539                                 $query = sprintf($query, sql_table('blog'));\r
2540                                 $show  = array(\r
2541                                         'content' => 'shortblognames'\r
2542                                 );\r
2543                                 break;\r
2544                         case 'template':\r
2545                                 $query = "SELECT tdname as name, tddesc as description FROM %s;";\r
2546                                 $query = sprintf($query, sql_table('admintemplate_desc'));\r
2547                                 $show  = array(\r
2548                                         'content' => 'shortnames'\r
2549                                 );\r
2550                                 break;\r
2551                 }\r
2552                 skinableShowlist($query, 'table', $show, $templateName);\r
2553                 return;\r
2554         }\r
2555         \r
2556         /**\r
2557          * Actions::parse_adminskinielist()\r
2558          * Parse skinvar adminskinielist\r
2559          * \r
2560          * @param       string  $type                   skin/template\r
2561          * @param       string  $templateName   name of template to use\r
2562          * @return      void\r
2563          */\r
2564         public function parse_adminskinielist($type, $templateName = '')\r
2565         {\r
2566                 $templates = array();\r
2567                 if ( $templateName )\r
2568                 {\r
2569                         $templates = skinableTEMPLATE::read($templateName);\r
2570                 }\r
2571                 if ( isset($templates['SKINIE_EXPORT_LIST']) && !empty($templates['SKINIE_EXPORT_LIST']) )\r
2572                 {\r
2573                         $template = $templates['SKINIE_EXPORT_LIST'];\r
2574                 }\r
2575                 else\r
2576                 {\r
2577                         $template = '<td><input type="checkbox" name="<%typeid%>"  id="<%expid%>" /><label for="<%expid%>"><%expname%></label></td>' . "\n"\r
2578                                           . "<td><%expdesc%></td>\n"\r
2579                                           . "</tr><tr>\n";\r
2580                 }\r
2581                 switch ( $type )\r
2582                 {\r
2583                         case 'skin':\r
2584                                 $query = "SELECT * FROM %s;";\r
2585                                 $query = sprintf($query, sql_table('adminskin_desc'));\r
2586                                 $res = sql_query($query);\r
2587                                 \r
2588                                 while ( $skinObj = sql_fetch_object($res) )\r
2589                                 {\r
2590                                         $data = array(\r
2591                                                 'typeid'        => 'skin[' . $skinObj->sdnumber . ']',\r
2592                                                 'expid'         => 'skinexp' . $skinObj->sdnumber,\r
2593                                                 'expname'       => Entity::hsc($skinObj->sdname),\r
2594                                                 'expdesc'       => Entity::hsc($skinObj->sddesc),\r
2595                                         );\r
2596                                         echo TEMPLATE::fill($template, $data);\r
2597                                 }\r
2598                                 break;\r
2599                         case 'template':\r
2600                                 $query = "SELECT * FROM %s;";\r
2601                                 $query = sprintf($query, sql_table('admintemplate_desc'));\r
2602                                 $res = sql_query($query);\r
2603                                 while ( $templateObj = sql_fetch_object($res) )\r
2604                                 {\r
2605                                         $data = array(\r
2606                                                 'typeid'        => 'template[' . $templateObj->tdnumber . ']',\r
2607                                                 'expid'         => 'templateexp' . $templateObj->tdnumber,\r
2608                                                 'expname'       => Entity::hsc($templateObj->tdname),\r
2609                                                 'expdesc'       => Entity::hsc($templateObj->tddesc),\r
2610                                         );\r
2611                                         echo TEMPLATE::fill($template, $data);\r
2612                                 }\r
2613                                 break;\r
2614                 }\r
2615                 return;\r
2616         }\r
2617         \r
2618         /**\r
2619          * Actions::parse_adminskinoverview()\r
2620          * Parse skinvar adminskinoverview\r
2621          * \r
2622          * @param       string  $templateName   name of template to use\r
2623          * @return      void\r
2624          */\r
2625         public function parse_adminskinoverview($templateName = '')\r
2626         {\r
2627                 $query = "SELECT * FROM %s ORDER BY sdname;";\r
2628                 $query = sprintf($query, sql_table('adminskin_desc'));\r
2629                 \r
2630                 $template['content']    = 'adminskinlist';\r
2631                 $template['tabindex']   = 10;\r
2632                 skinableShowlist($query, 'table', $template, $templateName);\r
2633                 return;\r
2634         }\r
2635         \r
2636         /**\r
2637          * Actions::parse_adminskinselectoptions()\r
2638          * Parse skinvar adminskinselectoptions\r
2639          * \r
2640          * @param       void\r
2641          * @return      void\r
2642          */\r
2643         public function parse_adminskinselectoptions()\r
2644         {\r
2645                 global $CONF;\r
2646                 $query = "SELECT sdname as text, sdnumber as value FROM %s;";\r
2647                 $query = sprintf($query, sql_table('adminskin_desc'));\r
2648                 \r
2649                 $template['name']        = 'adminskin';\r
2650                 $template['selected'] = $CONF['DefaultAdminSkin'];\r
2651                 $template['tabindex'] = 110;\r
2652                 skinableShowlist($query, 'select', $template, '');\r
2653                 return;\r
2654         }\r
2655         \r
2656         /**\r
2657          * Actions::parse_adminspecialskinlist()\r
2658          * Parse skinvar adminspecialskinlist\r
2659          * \r
2660          * @param       string  $templateName   name of template to use\r
2661          */\r
2662         public function parse_adminspecialskinlist($templateName = '')\r
2663         {\r
2664                 $templates = array();\r
2665                 if ( $templateName )\r
2666                 {\r
2667                         $templates = skinableTEMPLATE::read($templateName);\r
2668                 }\r
2669                 \r
2670                 $nType  = skinableSKIN::getAdminskinDefaultTypes();\r
2671                 $skinid = intRequestVar('skinid');\r
2672                 \r
2673                 $query = "SELECT stype FROM  %s WHERE stype NOT IN (%s) AND sdesc=%d;";\r
2674                 $query = sprintf($query, sql_table('adminskin'), "'" . implode("', '", $nType) . "'", (integer) $skinid);\r
2675                 \r
2676                 $res    = sql_query($query);\r
2677                 if ( $res && sql_num_rows($res) > 0 )\r
2678                 {\r
2679                         $data = array();\r
2680                         if ( isset($templates['ADMIN_SPECIALSKINLIST_HEAD']) && !empty($templates['ADMIN_SPECIALSKINLIST_HEAD']) )\r
2681                         {\r
2682                                 $template['head'] = $templates['ADMIN_SPECIALSKINLIST_HEAD'];\r
2683                         }\r
2684                         else\r
2685                         {\r
2686                                 $template['head'] = "<ul>\n";\r
2687                         }\r
2688                         echo TEMPLATE::fill($template['head'], $data);\r
2689                         if ( isset($templates['ADMIN_SPECIALSKINLIST_BODY']) && !empty($templates['ADMIN_SPECIALSKINLIST_BODY']) )\r
2690                         {\r
2691                                 $template['body'] = $templates['ADMIN_SPECIALSKINLIST_BODY'];\r
2692                         }\r
2693                         else\r
2694                         {\r
2695                                 $template['body'] = '<li><a tabindex="<%tabindex%>" href="index.php?action=adminskinedittype&amp;skinid=<%skinid%>'\r
2696                                                                   . '&amp;type=<%skintype%>"><%skintype%></a> (<a tabindex="<%tabindex%>" href="index.php?'\r
2697                                                                   . 'action=adminskinremovetype&amp;skinid=<%skinid%>&amp;type=<%skintype%>">remove</a>)</li>';\r
2698                         }\r
2699                         $tabstart = 120;\r
2700                         while ( $row = sql_fetch_assoc($res) )\r
2701                         {\r
2702                                 $data = array(\r
2703                                         'tabindex'      => $tabstart++,\r
2704                                         'skinid'        => $skinid,\r
2705                                         'skintype'      => Entity::hsc(strtolower($row['stype']))\r
2706                                 );\r
2707                                 echo TEMPLATE::fill($template['body'], $data);\r
2708                         }\r
2709                         \r
2710                         $data = array();\r
2711                         if ( isset($templates['ADMIN_SPECIALSKINLIST_FOOT']) && !empty($templates['ADMIN_SPECIALSKINLIST_FOOT']) )\r
2712                         {\r
2713                                 $template['foot'] = $templates['ADMIN_SPECIALSKINLIST_FOOT'];\r
2714                         }\r
2715                         else\r
2716                         {\r
2717                                 $template['foot'] = "<ul>\n";\r
2718                         }\r
2719                         echo TEMPLATE::fill($template['foot'], $data);\r
2720                         return;\r
2721                 }\r
2722         }\r
2723         \r
2724         /**\r
2725          * Actions::parse_adminstyleseets()\r
2726          * Parse skinvar adminstyleseets\r
2727          * \r
2728          * @param       void\r
2729          * @return      void\r
2730          */\r
2731         public function parse_adminstyleseets()\r
2732         {\r
2733                 global $CONF;\r
2734                 $includePrefix = $this->skin->includePrefix;\r
2735                 \r
2736                 if ( strlen($includePrefix) > 0 )\r
2737                 {\r
2738                         $styleURL = Entity::hsc($CONF['AdminURL']) . 'adminskins/' . $includePrefix . 'admin_' . $CONF['AdminCSS'] . '.css';\r
2739                 }\r
2740                 else\r
2741                 {\r
2742                         $styleURL = Entity::hsc($CONF['AdminURL']) . 'styles/admin_' . $CONF['AdminCSS'] . '.css';\r
2743                 }\r
2744                 echo $styleURL;\r
2745                 return;\r
2746         }\r
2747         \r
2748         /**\r
2749          * Actions::parse_adminstyleselectoptions()\r
2750          * Parse skinvar adminstyleselectoptions\r
2751          * \r
2752          * @param       void\r
2753          * @return      void\r
2754          */\r
2755         public function parse_adminstyleselectoptions()\r
2756         {\r
2757                 global $CONF, $manager, $DIR_NUCLEUS;\r
2758                 if ( strlen($this->skin->includePrefix) > 0 )\r
2759                 {\r
2760                         $scndir = $DIR_NUCLEUS . 'adminskins/' . $this->skin->includePrefix;\r
2761                 }\r
2762                 else\r
2763                 {\r
2764                         $scndir = $DIR_NUCLEUS . 'styles/';\r
2765                 }\r
2766                 $files = scandir($scndir);\r
2767                 \r
2768                 foreach ( $files as $file )\r
2769                 {\r
2770                         if ( !preg_match("#^admin_(.*)\.css$#", $file, $matches) )\r
2771                         {\r
2772                                 continue;\r
2773                         }\r
2774                         \r
2775                         $name = $matches[1];\r
2776                         $opts = '<option value="' . $name . '"';\r
2777                         if ( $name != $CONF['AdminCSS'] )\r
2778                         {\r
2779                                 $opts .= "<option value=\"{$name}\">{$name}</option>\n";\r
2780                         }\r
2781                         else\r
2782                         {\r
2783                                 $opts .= "<option value=\"{$name}\" selected=\"selected\">{$name}</option>\n";\r
2784                         }\r
2785                         echo $opts;\r
2786                 }\r
2787                 return;\r
2788         }\r
2789         \r
2790         /**\r
2791          * Actions::parse_admintemplateoverview()\r
2792          * Parse skinvar admintemplateoverview\r
2793          * \r
2794          * @param       string  $templateName   name of template to use\r
2795          * @return      void\r
2796          */\r
2797         public function parse_admintemplateoverview($templateName = '')\r
2798         {\r
2799                 $query  = "SELECT * FROM %s ORDER BY tdname;";\r
2800                 $query = sprintf($query, sql_table('admintemplate_desc'));\r
2801                 \r
2802                 $template['content']  = 'admintemplatelist';\r
2803                 $template['tabindex'] = 10;\r
2804                 \r
2805                 skinableShowlist($query, 'table', $template, $templateName);\r
2806                 return;\r
2807         }\r
2808         \r
2809         /**\r
2810          * Actions::parse_allowedadminskinactions()\r
2811          * Parse skinvar allowedadminskinactions\r
2812          * \r
2813          * @param       void\r
2814          * @return      void\r
2815          */\r
2816         public function parse_allowedadminskinactions()\r
2817         {\r
2818                 global $DIR_ADMINSKINS;\r
2819                 $skinType = strtolower(trim(requestVar('type')));\r
2820                 $actions  = skinableSKIN::getAllowedActionsForType($skinType);\r
2821                 sort($actions);\r
2822                 \r
2823                 while ( $current = array_shift($actions) )\r
2824                 {\r
2825                         // skip deprecated vars\r
2826                         if ($current == 'ifcat' || $current == 'imagetext' || $current == 'vars')\r
2827                         {\r
2828                                 continue;\r
2829                         }\r
2830                         \r
2831                         echo "<a href=\"{$DIR_ADMINSKINS}documentation/help.html#{$current}\" onclick=\"if (event &amp;&amp; event.preventDefault) event.preventDefault(); return help(this.href);\">{$current}</a>\n";\r
2832                         \r
2833                         if ( count($actions) != 0 )\r
2834                         {\r
2835                                 echo ", ";\r
2836                         }\r
2837                 }\r
2838                 return;\r
2839         }\r
2840         \r
2841         /**\r
2842          * Actions::parse_allowedskinactions()\r
2843          * Parse skinvar allowedskinactions\r
2844          * \r
2845          * @param       void\r
2846          * @return      void\r
2847          */\r
2848         public function parse_allowedskinactions()\r
2849         {\r
2850                 $skinType = strtolower(trim(requestVar('type')));\r
2851                 $actions  = SKIN::getAllowedActionsForType($skinType);\r
2852                 sort($actions);\r
2853                 \r
2854                 while ( $current = array_shift($actions) )\r
2855                 {\r
2856                         // skip deprecated vars\r
2857                         if ( $current == 'ifcat' || $current == 'imagetext' || $current == 'vars' )\r
2858                         {\r
2859                                 continue;\r
2860                         }\r
2861                         \r
2862                         /* TODO: alternative function should be used or not?  */\r
2863                         echo helplink("skinvar-{$current}") . "$current</a>\n";\r
2864                         \r
2865                         if ( count($actions) != 0 )\r
2866                         {\r
2867                                 echo ", ";\r
2868                         }\r
2869                 }\r
2870                 return;\r
2871         }\r
2872         \r
2873         /**\r
2874          * Action::parse_banlistdeletedlist()\r
2875          * Parse skinvar banlistdeletedlist\r
2876          * \r
2877          * @param       string  $templateName   name of template to use\r
2878          * @return      void\r
2879          */\r
2880         public function parse_banlistdeletedlist($templateName = '')\r
2881         {\r
2882                 global $manager;\r
2883                 $templates = array();\r
2884                 \r
2885                 if ( $templateName )\r
2886                 {\r
2887                         $templates = skinableTEMPLATE::read($templateName);\r
2888                 }\r
2889                 if ( isset($templates['BANLIST_DELETED_LIST']) && !empty($templates['BANLIST_DELETED_LIST']) )\r
2890                 {\r
2891                         $template = $templates['BANLIST_DELETED_LIST'];\r
2892                 }\r
2893                 else\r
2894                 {\r
2895                         $template = "<li><%blogname%></li>\n";\r
2896                 }\r
2897                 $deleted = requestArray('delblogs');\r
2898                 foreach ( $deleted as $delblog )\r
2899                 {\r
2900                         $blog =& $manager->getBlog($delblog);\r
2901                         $data =  array(\r
2902                                 Entity::hsc($blog->getName())\r
2903                         );\r
2904                         TEMPLATE::fill($template, $data);\r
2905                 }\r
2906                 return;\r
2907         }\r
2908         \r
2909         /**\r
2910          * Actions::parse_batchdeletelist()\r
2911          * Parse skinvar batchdeletelist\r
2912          * \r
2913          * @param       void\r
2914          * @return      void\r
2915          */\r
2916         public function parse_batchdeletelist()\r
2917         {\r
2918                 $selected = requestIntArray('batch');\r
2919                 $index  = 0;\r
2920                 \r
2921                 foreach ( $selected as $select )\r
2922                 {\r
2923                         echo '<input type="hidden" name="batch[' . ($index++) . ']" value="' . intval($select) . "\" />\n";\r
2924                 }\r
2925                 // add hidden vars for team & comment\r
2926                 if ( requestVar('action') == 'batchteam' )\r
2927                 {\r
2928                         echo '<input type="hidden" name="blogid" value="' . intRequestVar('blogid') . "\" />\n";\r
2929                 }\r
2930                 if ( requestVar('action') == 'batchcomment' )\r
2931                 {\r
2932                         echo '<input type="hidden" name="itemid" value="' . intRequestVar('itemid') . "\" />\n";\r
2933                 }\r
2934                 return;\r
2935         }\r
2936         \r
2937         /**\r
2938          * Actions::parse_batchdeletetype()\r
2939          * Parse skinvar batchdeletetype\r
2940          * \r
2941          * @param       void\r
2942          * @return      void\r
2943          */\r
2944         function parse_batchdeletetype()\r
2945         {\r
2946                 echo Entity::hsc(requestVar('action'));\r
2947                 return;\r
2948         }\r
2949 \r
2950         /**\r
2951          * Actions::parse_batchmovebtn()\r
2952          * Parse skinvar batchmovebtn\r
2953          * \r
2954          * @param       void\r
2955          * @return      void\r
2956          */\r
2957         public function parse_batchmovebtn()\r
2958         {\r
2959                 $actionType = requestVar('action');\r
2960                 switch ( $actionType )\r
2961                 {\r
2962                         case 'batchitem':\r
2963                                 echo _MOVE_BTN;\r
2964                                 break;\r
2965                         case 'batchcategory':\r
2966                                 echo _MOVECAT_BTN;\r
2967                                 break;\r
2968                 }\r
2969                 return;\r
2970         }\r
2971         \r
2972         /**\r
2973          * Actions::parse_batchmovelist()\r
2974          * Parse skinvar batchmovelist\r
2975          * \r
2976          * @param       void\r
2977          * @param       void\r
2978          */\r
2979         public function parse_batchmovelist()\r
2980         {\r
2981                 $selected = requestIntArray('batch');\r
2982                 foreach ( $selected as $select )\r
2983                 {\r
2984                         echo '<input type="hidden" name="batch[' . ($select++) . ']" value="' . intval($select) . "\" />\n";\r
2985                 }\r
2986                 return;\r
2987         }\r
2988         \r
2989         /**\r
2990          * Actions::parse_batchmovetitle()\r
2991          * Parse skinvar batchmovetitle\r
2992          * \r
2993          * @param       void\r
2994          * @return      void\r
2995          */\r
2996         public function parse_batchmovetitle()\r
2997         {\r
2998                 $actionType = requestVar('action');\r
2999                 switch ( $actionType )\r
3000                 {\r
3001                         case 'batchitem':\r
3002                                 echo _MOVE_TITLE;\r
3003                                 break;\r
3004                         case 'batchcategory':\r
3005                                 echo _MOVECAT_TITLE;\r
3006                                 break;\r
3007                 }\r
3008                 return;\r
3009         }\r
3010         \r
3011         /**\r
3012          * Actions::parse_batchmovetype()\r
3013          * Parse skinvar batchmovetype\r
3014          * \r
3015          * @param       void\r
3016          * @return      void\r
3017          */\r
3018         public function parse_batchmovetype()\r
3019         {\r
3020                 echo Entity::hsc(requestVar('action'));\r
3021                 return;\r
3022         }\r
3023         \r
3024         /**\r
3025          * Actions::parse_blogcatlist()\r
3026          * Parse skinvar blogcatlist\r
3027          * \r
3028          * @param       void\r
3029          * @return      void\r
3030          */\r
3031         public function parse_blogcatlist()\r
3032         {\r
3033                 global $manager;\r
3034                 $blogid = intRequestVar('blogid');\r
3035                 $query  = "SELECT * FROM %s WHERE cblog = %d ORDER BY cname;";\r
3036                 $query = sprintf($query, sql_table('category'), (integer) $blogid);\r
3037                 \r
3038                 $template['content']  = 'categorylist';\r
3039                 $template['tabindex'] = 200;\r
3040                 \r
3041                 $batch = new skinableBATCH('member');\r
3042                 $batch->showlist($query, 'table', $template);\r
3043                 return;\r
3044         }\r
3045         \r
3046         /**\r
3047          * Actions::parse_blognotifysetting()\r
3048          * Parse skinvar blognotifysetting\r
3049          * \r
3050          * @param       void\r
3051          * @return      void\r
3052          */\r
3053         public function parse_blognotifysetting($type)\r
3054         {\r
3055                 global $manager;\r
3056                 $blogid = intRequestVar('blogid');\r
3057                 $blog   = $manager->getBlog($blogid);\r
3058                 \r
3059                 switch ( $type )\r
3060                 {\r
3061                         case 'comment':\r
3062                                 if ( !$blog->notifyOnComment() )\r
3063                                 {\r
3064                                         return;\r
3065                                 }\r
3066                                 break;\r
3067                         case 'vote':\r
3068                                 if ( !$blog->notifyOnVote() )\r
3069                                 {\r
3070                                         return;\r
3071                                 }\r
3072                                 break;\r
3073                         case 'newitem':\r
3074                                 if ( !$blog->notifyOnNewItem() )\r
3075                                 {\r
3076                                         return;\r
3077                                 }\r
3078                                 break;\r
3079                 }\r
3080                 echo ' checked="checked"';\r
3081                 return;\r
3082         }\r
3083         \r
3084         /**\r
3085          * Actions::parse_blogsetting()\r
3086          * Parse skinvar blogsetting\r
3087          * \r
3088          * @param       string  $which  name of weblog setting\r
3089          * @return      void\r
3090          */\r
3091         public function parse_blogsetting($which)\r
3092         {\r
3093                 echo $this->parse_getblogsetting($which);\r
3094                 return;\r
3095         }\r
3096         \r
3097         /**\r
3098          * Actions::parse_blogsettingyesno()\r
3099          * Parse skinvar blogsettingyesno\r
3100          * \r
3101          * @param       string  $type                   type of weblog setting\r
3102          * @param       string  $templateName   name of template to use\r
3103          * @return      void\r
3104          */\r
3105         public function parse_blogsettingyesno($type, $templateName = '')\r
3106         {\r
3107                 global $manager;\r
3108                 \r
3109                 $blogid = intRequestVar('blogid');\r
3110                 $blog   = $manager->getBlog($blogid);\r
3111                 \r
3112                 switch ( $type )\r
3113                 {\r
3114                         case 'convertbreaks':\r
3115                                 $checkedval = $blog->convertBreaks();\r
3116                                 $tabindex   = 55;\r
3117                                 break;\r
3118                         case 'allowpastposting':\r
3119                                 $checkedval = $blog->allowPastPosting();\r
3120                                 $tabindex   = 57;\r
3121                                 break;\r
3122                         case 'comments':\r
3123                                 $checkedval = $blog->commentsEnabled();\r
3124                                 $tabindex   = 60;\r
3125                                 break;\r
3126                         case 'public':\r
3127                                 $checkedval = $blog->isPublic();\r
3128                                 $tabindex   = 70;\r
3129                                 break;\r
3130                         case 'reqemail':\r
3131                                 $checkedval = $blog->emailRequired();\r
3132                                 $tabindex   = 72;\r
3133                                 break;\r
3134                         case 'searchable':\r
3135                                 $checkedval = $blog->getSearchable();\r
3136                                 $tabindex   = 122;\r
3137                                 break;\r
3138                 }\r
3139                 $this->parse_inputyesno($type, $checkedval, $tabindex, 1, 0, _YES, _NO, 0, $templateName);\r
3140                 return;\r
3141         }\r
3142         \r
3143         /**\r
3144          * Actions::parse_blogteamlist()\r
3145          * Parse skinvar blogteamlist\r
3146          * \r
3147          * @param       string  $templateName   name of template to use\r
3148          * @return      void\r
3149          */\r
3150         public function parse_blogteamlist($templateName = '')\r
3151         {\r
3152                 global $manager;\r
3153                 $blogid = intRequestVar('blogid');\r
3154                 $query  = "SELECT tblog, tmember, mname, mrealname, memail, tadmin "\r
3155                         . "FROM %s, %s "\r
3156                         . "WHERE tmember=mnumber AND tblog= %d";\r
3157                 $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);\r
3158                 \r
3159                 $template['content']  = 'teamlist';\r
3160                 $template['tabindex'] = 10;\r
3161 \r
3162                 $batch = new skinableBATCH('team');\r
3163                 $batch->showlist($query, 'table', $template, _LISTS_NOMORE, $templateName);\r
3164                 return;\r
3165         }\r
3166         \r
3167         /**\r
3168          * Actions::parse_blogteammembers()\r
3169          * Parse skinvar blogteammembers\r
3170          * \r
3171          * @param       void\r
3172          * @return      void\r
3173          */\r
3174         public function parse_blogteammembers()\r
3175         {\r
3176                 $blogid = intRequestVar('blogid');\r
3177                 $query  = "SELECT mname, mrealname "\r
3178                                 . "FROM %s, %s "\r
3179                                 . "WHERE mnumber=tmember AND tblog=%d;";\r
3180                 $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);\r
3181                 $res    = sql_query($query);\r
3182                 $memberNames = array();\r
3183                 while ($o = sql_fetch_object($res)) {\r
3184                         $memberNames[] = Entity::hsc($o->mname) . ' (' . Entity::hsc($o->mrealname). ')';\r
3185                 }\r
3186                 echo implode(',', $memberNames);\r
3187         }\r
3188         \r
3189         /**\r
3190          * Actions::parse_blogtime()\r
3191          * Parse skinvar blogtime\r
3192          * \r
3193          * @param       string  $type   type of time\r
3194          * @param       string  $format format for time expression\r
3195          * @param       integer $offset offset of time\r
3196          * @return      void\r
3197          */\r
3198         public function parse_blogtime($type, $format = '%H:%M', $offset = 0)\r
3199         {\r
3200                 global $manager;\r
3201                 \r
3202                 if ( $type != 'blogtime' )\r
3203                 {\r
3204                         /* return server time */\r
3205                         $timestamp = time() + $offset;\r
3206                 }\r
3207                 else\r
3208                 {\r
3209                         $bid            = intRequestVar('blogid');\r
3210                         $b                      = $manager->getBlog($bid);\r
3211                         $timestamp      = $b->getCorrectTime() + $offset;\r
3212                 }\r
3213                 \r
3214                 echo i18n::formatted_datetime($format, $timestamp);\r
3215                 return;\r
3216         }\r
3217         \r
3218         /**\r
3219          * Actions::parse_bookmarkletadmin()\r
3220          * Parse skinvar bookmarkletadmin\r
3221          * \r
3222          * @param       string  $type   type of anchor element for bookmarklet\r
3223          * @return      void\r
3224          */\r
3225         public function parse_bookmarkletadmin($type)\r
3226         {\r
3227                 global $manager;\r
3228                 \r
3229                 $blogid = intRequestVar('blogid');\r
3230                 \r
3231                 if ( $type != 'regfile' )\r
3232                 {\r
3233                         echo Entity::hsc(getBookmarklet($blogid));\r
3234                 }\r
3235                 else\r
3236                 {\r
3237                         $url = 'index.php?action=regfile&blogid=' . intval($blogid);\r
3238                         $url = $manager->addTicketToUrl($url);\r
3239                         /* TODO: Shift-JIS is not always correct, I think... */\r
3240                         echo Entity::hsc($url, 'SJIS');\r
3241                 }\r
3242                 return;\r
3243         }\r
3244         \r
3245         /**\r
3246          * Actions::parse_categorysetting()\r
3247          * Parse skinvar categorysetting\r
3248          * \r
3249          * @param       string  $type   type in category setting\r
3250          * @return      void\r
3251          */\r
3252         public function parse_categorysetting($type)\r
3253         {\r
3254                 $catid  = intRequestVar('catid');\r
3255                 if ( $type == 'id' )\r
3256                 {\r
3257                         echo $catid;\r
3258                         return;\r
3259                 }\r
3260                 $blogid = intRequestVar('blogid');\r
3261                 $query  = "SELECT * FROM %s WHERE cblog = %d AND catid = %d;";\r
3262                 $query  = sprintf($query, sql_table('category'), (integer) $blogid, (integer) $catid);\r
3263                 $res    = sql_query($query);\r
3264                 $obj    = sql_fetch_object($res);\r
3265                 \r
3266                 if ( $type != desc )\r
3267                 {\r
3268                         echo Entity::hsc($obj->cdesc);\r
3269                 }\r
3270                 else\r
3271                 {\r
3272                         echo Entity::hsc($obj->cname);\r
3273                 }\r
3274                 \r
3275                 return;\r
3276         }\r
3277         \r
3278         /**\r
3279          * Actions::parse_codename()\r
3280          * Parse templatevar codename\r
3281          * \r
3282          * @param       void\r
3283          * @return      void\r
3284          * \r
3285          * TODO: is this need???\r
3286          */\r
3287         public function parse_codename()\r
3288         {\r
3289                 global $nucleus;\r
3290                 echo $nucleus['codename'];\r
3291                 return;\r
3292         }\r
3293         \r
3294         /**\r
3295          * Actions::parse_commentnavlist()\r
3296          * Parse skinvar commentnavlist\r
3297          * \r
3298          * @param       void\r
3299          * @return      void\r
3300          */\r
3301         public function parse_commentnavlist()\r
3302         {\r
3303                 global $CONF, $manager, $member;\r
3304                 \r
3305                 // start index\r
3306                 if ( postVar('start') )\r
3307                 {\r
3308                         $start = intPostVar('start');\r
3309                 }\r
3310                 else\r
3311                 {\r
3312                         $start = 0;\r
3313                 }\r
3314                 \r
3315                 // amount of items to show\r
3316                 if ( postVar('amount') )\r
3317                 {\r
3318                         $amount = intPostVar('amount');\r
3319                 }\r
3320                 else\r
3321                 {\r
3322                         $amount = (integer) $CONF['DefaultListSize'];\r
3323                         if ( $amount < 1 )\r
3324                         {\r
3325                                 $amount = 10;\r
3326                         }\r
3327                 }\r
3328                 $query = 'SELECT cbody, cuser, cmail, cemail, mname, ctime, chost, cnumber, cip, citem '\r
3329                        . 'FROM %s '\r
3330                        . 'LEFT OUTER JOIN %s ON  mnumber=cmember '\r
3331                        . 'WHERE ';\r
3332                 $query = sprintf($query, sql_table('comment'), sql_table('member'));\r
3333                 \r
3334                 if ( $this->skintype == 'itemcommentlist' )\r
3335                 {\r
3336                         $itemid                                 = intRequestVar('itemid');\r
3337                         $query                                  .= " citem={$itemid}";\r
3338                         $template['canAddBan']  = $member->blogAdminRights(intRequestVar('blogid'));\r
3339                         $bid                                    = 0;\r
3340                         $nonComments                    = _NOCOMMENTS;\r
3341                 }\r
3342                 elseif ( $this->skintype == 'browseowncomments' )\r
3343                 {\r
3344                         $itemid                                 = 0;\r
3345                         $query                                  .= ' cmember=' . $member->getID();\r
3346                         $template['canAddBan']  = 0;\r
3347                         $bid                                    = 0;\r
3348                         $nonComments                    = _NOCOMMENTS_YOUR;\r
3349                 }\r
3350                 elseif ( $this->skintype == 'blogcommentlist' )\r
3351                 {\r
3352                         $itemid                                 = 0;\r
3353                         $query                                  .= ' cblog=' . intRequestVar('blogid');\r
3354                         $template['canAddBan']  = $member->blogAdminRights(intRequestVar('blogid'));\r
3355                         $bid                                    = intRequestVar('blogid');\r
3356                         $nonComments                    = _NOCOMMENTS_BLOG;\r
3357                 }\r
3358                 \r
3359                 $search = postVar('search');\r
3360                 if ( !empty($search) )\r
3361                 {\r
3362                         $query .= ' and cbody LIKE "%' . sql_real_escape_string($search) . '%"';\r
3363                 }\r
3364                 \r
3365                 $query .= " ORDER BY ctime ASC LIMIT {$start},{$amount}";\r
3366                 \r
3367                 $template['content'] = 'commentlist';\r
3368                 \r
3369                 $navList = new skinableNAVLIST($this->skintype, $start, $amount, 0, 1000, $bid, $search, $itemid);\r
3370                 $navList->showBatchList('comment', $query, 'table', $template, $nonComments);\r
3371                 return;\r
3372         }\r
3373         \r
3374         /**\r
3375          * Actions::parse_configsettingsedit()\r
3376          * Parse skinvar configsettingsedit\r
3377          * \r
3378          * @param       string  $type   type of global configuration\r
3379          * @return      void\r
3380          */\r
3381         public function parse_configsettingsedit($type)\r
3382         {\r
3383                 global $CONF;\r
3384                 switch ( $type )\r
3385                 {\r
3386                         case 'DefaultListSize':\r
3387                                 if ( !array_key_exists('DefaultListSize', $CONF) )\r
3388                                 {\r
3389                                         $query = "INSERT INTO %s VALUES (DefaultListSize, 10);";\r
3390                                         $query = sprintf($query, sql_table('config'));\r
3391                                         sql_query($query);\r
3392                                         $CONF['DefaultListSize'] = 10;\r
3393                                 }\r
3394                                 elseif ( intval($CONF['DefaultListSize']) < 1 )\r
3395                                 {\r
3396                                         $CONF['DefaultListSize'] = 10;\r
3397                                 }\r
3398                                 echo intval($CONF['DefaultListSize']);\r
3399                                 break;\r
3400                         case 'SessionCookie':\r
3401                                 $value = $CONF['SessionCookie'];\r
3402                                 $txt1  = _SETTINGS_COOKIESESSION;\r
3403                                 $txt2  = _SETTINGS_COOKIEMONTH;\r
3404                                 $this->parse_inputyesno('SessionCookie', $value, 10190, 1, 0, $txt1, $txt2);\r
3405                                 break;\r
3406                         case 'URLMode':\r
3407                                 $value = $CONF['URLMode'];\r
3408                                 $txt1  = _SETTINGS_URLMODE_NORMAL;\r
3409                                 $txt2  = _SETTINGS_URLMODE_PATHINFO;\r
3410                                 $this->parse_inputyesno('URLMode', $value, 10077, 'normal', 'pathinfo', $txt1, $txt2);\r
3411                                 break;\r
3412                         default:\r
3413                                 if ( array_key_exists($type, $CONF) && is_string($CONF[$type]) )\r
3414                                 {\r
3415                                         echo  Entity::hsc($CONF[$type]);\r
3416                                 }\r
3417                                 break;\r
3418                 }\r
3419                 return;\r
3420         }\r
3421         \r
3422         /**\r
3423          * Actions::parse_configsettingsyesno()\r
3424          * Parse skinvar configsettingsyesno\r
3425          * \r
3426          * @param       string  $type           type of global setting\r
3427          * @param       integer $tabindex       tabindex attribute of input element\r
3428          * @return      void\r
3429          */\r
3430         function parse_configsettingsyesno($type, $tabindex)\r
3431         {\r
3432                 global $CONF;\r
3433                 if ( array_key_exists($type, $CONF) )\r
3434                 {\r
3435                         $this->parse_inputyesno($type, $CONF[$type], $tabindex);\r
3436                 }\r
3437                 return;\r
3438         }\r
3439         \r
3440         /**\r
3441          * Actions::parse_customhelplink()\r
3442          * Parse skinvar customhelplink\r
3443          * \r
3444          * @param       string  $topic          name of topic\r
3445          * @param       string  $tplName        name of template\r
3446          * @param       string  $url            string as URI\r
3447          * @param       string  $iconURL        string as URI for icon\r
3448          * @param       string  $alt            alternative text for image element\r
3449          * @param       string  $title          title for anchor element\r
3450          * @return      void\r
3451          */\r
3452         public function parse_customhelplink($topic, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')\r
3453         {\r
3454                 $this->customHelp($topic, $url, $iconURL);\r
3455                 return;\r
3456         }\r
3457         \r
3458         /**\r
3459          * Actions::parse_date()\r
3460          * Parse skinvar date\r
3461          */\r
3462         public function parse_date($format = 'c')\r
3463         {\r
3464                 global $CONF, $manager;\r
3465                 echo i18n::formatted_datetime($format, time(), 'iso8601', $manager->getBlog((integer) $CONF['DefaultBlog']));\r
3466                 return;\r
3467         }\r
3468         \r
3469         /**\r
3470          * Actions::parse_defaultadminskintypes()\r
3471          * Parse skinvar defaultadminskintypes\r
3472          * \r
3473          * @param       string  $tabindex               index number for tabindex attribute of input element\r
3474          * @param       string  $templateName   name of template\r
3475          * @return      void\r
3476          */\r
3477         public function parse_defaultadminskintypes($tabindex, $templateName = '')\r
3478         {\r
3479                 $templates = array();\r
3480                 if ( $templateName )\r
3481                 {\r
3482                         $templates = skinableTEMPLATE::read($templateName);\r
3483                 }\r
3484                 \r
3485                 $types   = skinableSKIN::getAdminskinDefaultTypeFriendlyNames();\r
3486                 ksort($types);\r
3487                 \r
3488                 if ( array_key_exists('ADMINSKINTYPELIST_HEAD', $templates) && !empty($templates['ADMINSKINTYPELIST_HEAD']) )\r
3489                 {\r
3490                         $template['head'] = $templates['ADMINSKINTYPELIST_HEAD'];\r
3491                 }\r
3492                 else\r
3493                 {\r
3494                         $template['head'] = "<ul>\n";\r
3495                 }\r
3496                 \r
3497                 echo $template['head'];\r
3498                 \r
3499                 if ( array_key_exists('ADMINSKINTYPELIST_BODY', $templates) && !empty($templates['ADMINSKINTYPELIST_BODY']) )\r
3500                 {\r
3501                         $template['body'] = $templates['ADMINSKINTYPELIST_BODY'];\r
3502                 }\r
3503                 else\r
3504                 {\r
3505                         $template['body'] = '<li><a tabindex="<%tabindex%>" href="index.php?action=adminskinedittype&amp;skinid=<%skinid%>&amp;type=<%skintype%>">'\r
3506                                           . "<%name%></a> <%help%></li>\n";\r
3507                 }\r
3508                 $handler = new skinableACTIONS('template', $template, new ADMIN);\r
3509                 $parser  = new PARSER(skinableACTIONS::getDefinedActions(), $handler);\r
3510                 \r
3511                 foreach ( $types as $type => $fName )\r
3512                 {\r
3513                         $helplink = $this->customHelpHtml('skinpart' . $type, $templateName);\r
3514                         $data = array(\r
3515                                 'tabindex'      => $tabindex,\r
3516                                 'skintype'      => $type,\r
3517                                 'name'          => $fName,\r
3518                                 'help'          => $helplink,\r
3519                                 'skinid'        => intrequestVar('skinid'),\r
3520                         );\r
3521                         $templateBody = skinableTEMPLATE::fill($template['body'], $data);\r
3522                         $parser->parse($templateBody);\r
3523                         $tabindex++;\r
3524                 }\r
3525                 if ( array_key_exists('ADMINSKINTYPELIST_FOOT', $templates) && !empty($templates['ADMINSKINTYPELIST_FOOT']) )\r
3526                 {\r
3527                         $template['foot'] = $templates['ADMINSKINTYPELIST_FOOT'];\r
3528                 }\r
3529                 else\r
3530                 {\r
3531                         $template['foot'] = "           </ul>\n";\r
3532                 }\r
3533                 echo $template['foot'];\r
3534                 return;\r
3535         }\r
3536         \r
3537         /**\r
3538          * Actions::parse_defblogselect()\r
3539          * Parse skinvar defblogselect\r
3540          * \r
3541          * @param       string  $templateName   name of template\r
3542          * @return      void\r
3543          */\r
3544         public function parse_defblogselect($templateName = '')\r
3545         {\r
3546                 global $CONF;\r
3547                 $query  = "SELECT bname as text, bnumber as value FROM %s;";\r
3548                 $query = sprintf($query, sql_table('blog'));\r
3549                 $template['name']        = 'DefaultBlog';\r
3550                 $template['selected'] = $CONF['DefaultBlog'];\r
3551                 $template['tabindex'] = 10;\r
3552                 skinableShowlist($query, 'select', $template, $templateName);\r
3553                 return;\r
3554         }\r
3555         \r
3556         /**\r
3557          * Actions::parse_defcatselect()\r
3558          * Parse skinvar defcatselect\r
3559          * \r
3560          * @param       string  $templateName   name of template\r
3561          * @return      void\r
3562          */\r
3563         public function parse_defcatselect($templateName = '')\r
3564         {\r
3565                 global $manager;\r
3566                 $blogid = intRequestVar('blogid');\r
3567                 $blog   = $manager->getBlog($blogid);\r
3568                 $query  = "SELECT cname as text, catid as value FROM %s WHERE cblog=%d;";\r
3569                 $query = sprintf($query, sql_table('category'), (integer) $blog->getID());\r
3570                 $template['name']        = 'defcat';\r
3571                 $template['selected'] = $blog->getDefaultCategory();\r
3572                 $template['tabindex'] = 110;\r
3573                 skinableShowlist($query, 'select', $template, $templateName);\r
3574                 return;\r
3575         }\r
3576         \r
3577         /**\r
3578          * Actions::parse_defskinselect()\r
3579          * Parse skinvar defskinselect\r
3580          * \r
3581          * @param       string  $type                   type of skin\r
3582          * @param       string  $templateName   name of template\r
3583          * @return      void\r
3584          */\r
3585         public function parse_defskinselect($type = 'blog', $templateName = '')\r
3586         {\r
3587                 global $manager;\r
3588                 $query  = "SELECT sdname as text, sdnumber as value FROM %s;";\r
3589                 $query = sprintf($query, sql_table('skin_desc'));\r
3590                 \r
3591                 $blogid = intRequestVar('blogid');\r
3592                 \r
3593                 if ( !$blogid )\r
3594                 {\r
3595                         global $CONF;\r
3596                         $template['selected'] = $CONF['BaseSkin'];\r
3597                 }\r
3598                 else\r
3599                 {\r
3600                         $blog                            = $manager->getBlog($blogid);\r
3601                         $template['selected'] = $blog->getDefaultSkin();\r
3602                 }\r
3603                 \r
3604                 if ( $type != 'blog' )\r
3605                 {\r
3606                         $nname = 'BaseSkin';\r
3607                 }\r
3608                 else\r
3609                 {\r
3610                         $nname = 'defskin';\r
3611                 }\r
3612                 \r
3613                 $template['name']        = $nname;\r
3614                 $template['tabindex'] = 50;\r
3615                 skinableShowlist($query, 'select', $template, $templateName);\r
3616                 return;\r
3617         }\r
3618         \r
3619         /**\r
3620          * Actions::parse_deleteitembody()\r
3621          * Parse skinvar deleteitembody\r
3622          * \r
3623          * @param       void\r
3624          * @return      void\r
3625          */\r
3626         public function parse_deleteitembody()\r
3627         {\r
3628                 global $manager;\r
3629                 $itemid =  intRequestVar('itemid');\r
3630                 $item   =& $manager->getItem($itemid, 1, 1);\r
3631                 $body   =  strip_tags($item['body']);\r
3632                 echo Entity::hsc(shorten($body, 300, '...'));\r
3633                 return;\r
3634         }\r
3635         \r
3636         /**\r
3637          * Actions::parse_deleteitemid()\r
3638          * Parse skinvar deleteitemid\r
3639          * \r
3640          * @param       void\r
3641          * @return      void\r
3642          */\r
3643         public function parse_deleteitemid()\r
3644         {\r
3645                 echo (integer) intRequestVar('itemid');\r
3646                 return;\r
3647         }\r
3648         \r
3649         /**\r
3650          * Actions::parse_deleteitemtitle()\r
3651          * Parse skinvar deleteitemtitle\r
3652          * \r
3653          * @param       void\r
3654          * @return      void\r
3655          */\r
3656         public function parse_deleteitemtitle()\r
3657         {\r
3658                 global $manager;\r
3659                 $itemid = intRequestVar('itemid');\r
3660                 $item  =& $manager->getItem($itemid, 1, 1);\r
3661                 echo Entity::hsc(strip_tags($item['title']));\r
3662                 return;\r
3663         }\r
3664         \r
3665         /**\r
3666          * Actions::parse_editadminskin()\r
3667          * Parse skinvar editadminskin\r
3668          * \r
3669          * @param       string  $type   type of skin setting\r
3670          * @return      void\r
3671          */\r
3672         public function parse_editadminskin($type = 'id')\r
3673         {\r
3674                 $skinid = intRequestVar('skinid');\r
3675                 $skin   = new skinableSKIN($skinid);\r
3676                 switch ( $type )\r
3677                 {\r
3678                         case 'id':\r
3679                                 echo intRequestVar('skinid');\r
3680                                 break;\r
3681                         case 'name':\r
3682                                 echo Entity::hsc($skin->getName());\r
3683                                 break;\r
3684                         case 'desc':\r
3685                                 echo Entity::hsc($skin->getDescription());\r
3686                                 break;\r
3687                         case 'type':\r
3688                                 echo Entity::hsc($skin->getContentType());\r
3689                                 break;\r
3690                         case 'prefix':\r
3691                                 echo Entity::hsc($skin->getIncludePrefix());\r
3692                                 break;\r
3693                         case 'mode':\r
3694                                 $this->parse_inputyesno('inc_mode', $skin->getIncludeMode(), 120, 'skindir', 'normal', _PARSER_INCMODE_SKINDIR, _PARSER_INCMODE_NORMAL);\r
3695                         default:\r
3696                                 break;\r
3697                 }\r
3698                 return;\r
3699         }\r
3700         \r
3701         /**\r
3702          * Actions::parse_editadminskintype()\r
3703          * Parse skinvar editadminskintype\r
3704          * \r
3705          * @param       string  $type   name of skin type\r
3706          * @return      void\r
3707          */\r
3708         public function parse_editadminskintype($type = 'id')\r
3709         {\r
3710                 global $CONF, $manager, $member;\r
3711                 $skinid = intRequestVar('skinid');\r
3712                 $skin   = new skinableSKIN($skinid);\r
3713                 $fNames = skinableSKIN::getFriendlyNames();\r
3714                 $sType  = strtolower(trim(requestVar('type')));\r
3715                 \r
3716                 switch ( $type )\r
3717                 {\r
3718                         case 'id':\r
3719                                 echo intRequestVar('skinid');\r
3720                                 break;\r
3721                         case 'name':\r
3722                                 echo Entity::hsc($skin->getName());\r
3723                                 break;\r
3724                         case 'desc':\r
3725                                 echo Entity::hsc($skin->getDescription());\r
3726                                 break;\r
3727                         case 'type':\r
3728                                 echo Entity::hsc($skin->getContentType());\r
3729                                 break;\r
3730                         case 'content':\r
3731                                 echo Entity::hsc($skin->getContent($sType));\r
3732                                 break;\r
3733                         case 'skintype':\r
3734                                 $skinType = isset($fNames[$sType]) ? $fNames[$sType] : ucfirst($sType);\r
3735                                 echo Entity::hsc($skinType);\r
3736                                 break;\r
3737                         case 'skintyperaw':\r
3738                                 echo Entity::hsc($sType);\r
3739                                 break;\r
3740                         case 'prefix':\r
3741                                 echo Entity::hsc($skin->getIncludePrefix());\r
3742                                 break;\r
3743                         case 'mode':\r
3744                                 $incMode = $skin->getIncludeMode() ? _PARSER_INCMODE_SKINDIR : _PARSER_INCMODE_NORMAL;\r
3745                                 echo Entity::hsc($incMode);\r
3746                                 break;\r
3747                         default:\r
3748                                 break;\r
3749                 }\r
3750                 return;\r
3751         }\r
3752         \r
3753         /**\r
3754          * Actions::parse_editadmintemplateinfo()\r
3755          * Parse skinvar editadmintemplateinfo\r
3756          * \r
3757          * @param       string  $type                   type of skin template\r
3758          * @param       string  $description    description of template\r
3759          * @param       string  $name                   name of stemplate\r
3760          * @param       string  $tabindex               index number for tabindex attribute of input element\r
3761          * @param       string  $big                    \r
3762          * @param       string  $tplt                   \r
3763          */\r
3764         function parse_editadmintemplateinfo($type, $description = '', $name = '', $help = '', $tabindex = 0, $big = 0, $tplt = '')\r
3765         {\r
3766                 global $manager;\r
3767                 $templateid                             =  intRequestVar('templateid');\r
3768                 $templatename                   =  skinableTEMPLATE::getNameFromId($templateid);\r
3769                 $templatedescription    =  skinableTEMPLATE::getDesc($templateid);\r
3770                 $template                               =& skinableTEMPLATE::read($templatename);\r
3771                 switch ( $type )\r
3772                 {\r
3773                         case 'id':\r
3774                                 echo intval($templateid);\r
3775                                 break;\r
3776                         case 'name':\r
3777                                 echo Entity::hsc($templatename);\r
3778                                 break;\r
3779                         case 'desc':\r
3780                                 echo Entity::hsc($templatedescription);\r
3781                                 break;\r
3782                         case 'extratemplate':\r
3783                                 $tabidx    = 600;\r
3784                                 $pluginfields = array();\r
3785                                 $manager->notify(\r
3786                                         'AdminTemplateExtraFields',\r
3787                                         array(\r
3788                                                 'fields' => &$pluginfields\r
3789                                         )\r
3790                                 );\r
3791                                 $tmplt = array();\r
3792                                 if ( $description )\r
3793                                 {\r
3794                                         $tmplt = skinableTEMPLATE::read($description);\r
3795                                 }\r
3796                                 if ( array_key_exists('TEMPLATE_EDIT_EXPLUGNAME', $tmplt) && !empty($tmplt['TEMPLATE_EDIT_EXPLUGNAME']) )\r
3797                                 {\r
3798                                         $base = $tmplt['TEMPLATE_EDIT_EXPLUGNAME'];\r
3799                                 }\r
3800                                 else\r
3801                                 {\r
3802                                         $base = "</tr>\n"\r
3803                                               . "<tr>\n"\r
3804                                               . "\t" . '<th colspan="2"><%explugtplname%>' . "</th>\n";\r
3805                                 }\r
3806                                 foreach ( $pluginfields as $pfkey => $pfvalue )\r
3807                                 {\r
3808                                         $data = array(\r
3809                                                 'explugtplname' => Entity::hsc($pfkey)\r
3810                                         );\r
3811                                         echo TEMPLATE::fill($base, $data);\r
3812                                         foreach ( $pfvalue as $pffield => $pfdesc )\r
3813                                         {\r
3814                                                 $this->_templateEditRow($template, $pfdesc, $pffield, '', ++$tabidx, 0, $name);\r
3815                                         }\r
3816                                 }\r
3817                                 break;\r
3818                         default:\r
3819                                 $desc = defined($description) ? constant($description) : $description;\r
3820                                 $name = defined($name) ? constant($name) : $name;\r
3821                                 $this->_templateEditRow($template, $desc, $name, $help, $tabindex, $big, $tplt);\r
3822                                 break;\r
3823                 }\r
3824                 return;\r
3825         }\r
3826         \r
3827         /**\r
3828          * Actions::parse_editcomment()\r
3829          * Parse skinvar editcomment\r
3830          * \r
3831          * @param       string  $type   type of comment setting\r
3832          * @return      void\r
3833          */\r
3834         public function parse_editcomment($type = 'id')\r
3835         {\r
3836                 global $manager;\r
3837                 $commentid      = intRequestVar('commentid');\r
3838                 $comment        = COMMENT::getComment($commentid);\r
3839                 \r
3840                 $manager->notify('PrepareCommentForEdit', array('comment' => &$comment));\r
3841                 \r
3842                 switch ( $type )\r
3843                 {\r
3844                         case 'id':\r
3845                                 echo intRequestVar('commentid');\r
3846                                 break;\r
3847                         case 'user':\r
3848                                 if (array_key_exists('member', $comment) && !empty($comment['member']) )\r
3849                                 {\r
3850                                         echo $comment['member'] . " (" . _EDITC_MEMBER . ")";\r
3851                                 }\r
3852                                 else\r
3853                                 {\r
3854                                         echo $comment['user'] . " (" . _EDITC_NONMEMBER . ")";\r
3855                                 }\r
3856                                 break;\r
3857                         case 'date':\r
3858                                 echo date("Y-m-d @ H:i", $comment['timestamp']);\r
3859                                 break;\r
3860                         case 'body':\r
3861                                 $comment['body'] = str_replace('<br />', '', $comment['body']);\r
3862                                 $comment['body'] = preg_replace("#<a href=['\"]([^'\"]+)['\"]( rel=\"nofollow\")?>[^<]*</a>#", "\\1", $comment['body']);\r
3863                                 echo $comment['body'];\r
3864                         default:\r
3865                                 echo $comment[$type];\r
3866                                 break;\r
3867                 }\r
3868                 return;\r
3869         }\r
3870         \r
3871         /**\r
3872          * Actions::parse_editdesturl()\r
3873          * Parse skinvar editdesturl\r
3874          */\r
3875         public function parse_editdesturl()\r
3876         {\r
3877                 if ( requestVar('desturl') )\r
3878                 {\r
3879                         echo Entity::hsc(requestVar('desturl'));\r
3880                 }\r
3881                 return;\r
3882         }\r
3883         \r
3884         /**\r
3885          * Actions::parse_editmemberlist()\r
3886          * Parse skinvar editmemberlist\r
3887          * \r
3888          * @param       string  $templateName   name of template\r
3889          * @return      void\r
3890          */\r
3891         public function parse_editmemberlist($templateName = '')\r
3892         {\r
3893                 global $manager;\r
3894                 // show list of members with actions\r
3895                 $query =  'SELECT * FROM '.sql_table('member');\r
3896                 $template['content']  = 'memberlist';\r
3897                 $template['tabindex'] = 10;\r
3898                 \r
3899                 $batch = new skinableBATCH('member');\r
3900                 $batch->showlist($query, 'table', $template, _LISTS_NOMORE, $templateName);\r
3901                 return;\r
3902         }\r
3903         \r
3904         /**\r
3905          * Actions::parse_editmemberlist()\r
3906          * Parse skinvar editmemberlist\r
3907          * \r
3908          * @param       string  $templateName   name of template\r
3909          * @return      void\r
3910          */\r
3911         public function parse_editmemberlist($templateName = '')\r
3912         {\r
3913                 global $manager;\r
3914                 // show list of members with actions\r
3915                 $query =  'SELECT * FROM '. sql_table('member');\r
3916                 $template['content']  = 'memberlist';\r
3917                 $template['tabindex'] = 10;\r
3918                 \r
3919                 $batch = new skinableBATCH('member');\r
3920                 $batch->showlist($query, 'table', $template, _LISTS_NOMORE, $templateName);\r
3921                 return;\r
3922         }\r
3923         \r
3924         /**\r
3925          * Actions::parse_editpluginfo()\r
3926          * Parse skinvar editpluginfo\r
3927          * \r
3928          * @param       string  $type   type of plugin info\r
3929          * @return      void\r
3930          */\r
3931         public function parse_editpluginfo($type)\r
3932         {\r
3933                 $pid = intRequestVar('plugid');\r
3934                 switch ( $type )\r
3935                 {\r
3936                         case 'id':\r
3937                                 echo $pid;\r
3938                                 break;\r
3939                         case 'name':\r
3940                                 echo Entity::hsc(getPluginNameFromPid($pid));\r
3941                                 break;\r
3942                 }\r
3943                 return;\r
3944         }\r
3945         \r
3946         /**\r
3947          * Actions::parse_editplugoptionslist()\r
3948          * Parse skinvar editplugoptionslist\r
3949          * \r
3950          * @param       string  $templateName   name of template\r
3951          * @return      void\r
3952          */\r
3953         public function parse_editplugoptionslist($templateName = '')\r
3954         {\r
3955                 global $manager;\r
3956                 \r
3957                 $pid = intRequestVar('plugid');\r
3958                 $aOptions = array();\r
3959                 $aOIDs  = array();\r
3960                 \r
3961                 $query  = "SELECT * FROM %s WHERE ocontext='global' AND opid=%d ORDER BY oid ASC";\r
3962                 $query = sprintf($query, sql_table('plugin_option_desc'), (integer) $pid);\r
3963                 $resource = sql_query($query);\r
3964                 \r
3965                 while ( $o = sql_fetch_object($resource) )\r
3966                 {\r
3967                         array_push($aOIDs, $o->oid);\r
3968                         $aOptions[$o->oid] = array(\r
3969                                 \r
3970                                 'oid'                   => $o->oid,\r
3971                                 'value'                 => $o->odef,\r
3972                                 'name'                  => $o->oname,\r
3973                                 'description'   => $o->odesc,\r
3974                                 'type'                  => $o->otype,\r
3975                                 'typeinfo'              => $o->oextra,\r
3976                                 'contextid'             => 0\r
3977                         );\r
3978                 }\r
3979                 \r
3980                 // fill out actual values\r
3981                 if ( count($aOIDs) > 0 )\r
3982                 {\r
3983                         $query = 'SELECT oid, ovalue FROM %s WHERE oid in (%s)';\r
3984                         $query = sprintf($query, sql_table('plugin_option'), implode(',', $aOIDs));\r
3985                         \r
3986                         $result = sql_query($query);\r
3987                         \r
3988                         while ( $o = sql_fetch_object($result) )\r
3989                         {\r
3990                                 $aOptions[$o->oid]['value'] = $o->ovalue;\r
3991                         }\r
3992                 }\r
3993                 \r
3994                 // call plugins\r
3995                 $manager->notify(\r
3996                         'PrePluginOptionsEdit',\r
3997                         array(\r
3998                                 'context'       =>  'global',\r
3999                                 'plugid'        =>  $pid,\r
4000                                 'options'       => &$aOptions\r
4001                         )\r
4002                 );\r
4003                 \r
4004                 $template['content'] = 'plugoptionlist';\r
4005                 $amount                   = skinableShowlist($aOptions, 'table', $template, $templateName);\r
4006                 if ( $amount == 0 )\r
4007                 {\r
4008                         echo '<p>' . _ERROR_NOPLUGOPTIONS . "</p>\n";\r
4009                 }\r
4010                 return;\r
4011         }\r
4012         \r
4013         /**\r
4014          * Actions::parse_editskin()\r
4015          * Parse skinvar editskin\r
4016          * \r
4017          * @param       string  $type   type of skin\r
4018          * @return      void\r
4019          */\r
4020         public function parse_editskin($type = 'id')\r
4021         {\r
4022                 $skinid = intRequestVar('skinid');\r
4023                 $skin   = new SKIN($skinid);\r
4024                 switch ( $type )\r
4025                 {\r
4026                         case 'id':\r
4027                                 echo intRequestVar('skinid');\r
4028                                 break;\r
4029                         case 'name':\r
4030                                 echo Entity::hsc($skin->getName());\r
4031                                 break;\r
4032                         case 'desc':\r
4033                                 echo Entity::hsc($skin->getDescription());\r
4034                                 break;\r
4035                         case 'type':\r
4036                                 echo Entity::hsc($skin->getContentType());\r
4037                                 break;\r
4038                         case 'prefix':\r
4039                                 echo Entity::hsc($skin->getIncludePrefix());\r
4040                                 break;\r
4041                         case 'mode':\r
4042                                 $this->parse_inputyesno('inc_mode', $skin->getIncludeMode(), 120, 'skindir', 'normal', _PARSER_INCMODE_SKINDIR, _PARSER_INCMODE_NORMAL);\r
4043                         default:\r
4044                                 break;\r
4045                 }\r
4046                 return;\r
4047         }\r
4048         \r
4049         /**\r
4050          * Actions::parse_editskintype()\r
4051          * Parse skinvar editskintype\r
4052          * \r
4053          * @param       string  $type   name of type for skin type\r
4054          * @return      void\r
4055          */\r
4056         function parse_editskintype($type = 'id')\r
4057         {\r
4058                 global $CONF, $manager, $member;\r
4059                 $skinid = intRequestVar('skinid');\r
4060                 $skin   = new SKIN($skinid);\r
4061                 $fNames = SKIN::getFriendlyNames();\r
4062                 $sType  = strtolower(trim(requestVar('type')));\r
4063                 \r
4064                 switch ( $type )\r
4065                 {\r
4066                         case 'id':\r
4067                                 echo intRequestVar('skinid');\r
4068                                 break;\r
4069                         case 'name':\r
4070                                 echo Entity::hsc($skin->getName());\r
4071                                 break;\r
4072                         case 'desc':\r
4073                                 echo Entity::hsc($skin->getDescription());\r
4074                                 break;\r
4075                         case 'type':\r
4076                                 echo Entity::hsc($skin->getContentType());\r
4077                                 break;\r
4078                         case 'content':\r
4079                                 echo Entity::hsc($skin->getContent($sType));\r
4080                                 break;\r
4081                         case 'skintype':\r
4082                                 $skinType = isset($fNames[$sType]) ? $fNames[$sType] : ucfirst($sType);\r
4083                                 echo Entity::hsc($skinType);\r
4084                                 break;\r
4085                         case 'skintyperaw':\r
4086                                 echo Entity::hsc($sType);\r
4087                                 break;\r
4088                         case 'prefix':\r
4089                                 echo Entity::hsc($skin->getIncludePrefix());\r
4090                                 break;\r
4091                         case 'mode':\r
4092                                 $incMode = $skin->getIncludeMode() ? _PARSER_INCMODE_SKINDIR : _PARSER_INCMODE_NORMAL;\r
4093                                 echo Entity::hsc($incMode);\r
4094                                 break;\r
4095                         default:\r
4096                                 break;\r
4097                 }\r
4098                 return;\r
4099         }\r
4100         \r
4101         /**\r
4102          * Actions::parse_edittemplateinfo()\r
4103          * Parse skinvar edittemplateinfo\r
4104          * \r
4105          * @param       string  $type                   name of type for skin\r
4106          * @param       string  $description    description for skin\r
4107          * @param       string  $name                   name of skin\r
4108          * @param       string  $help                   \r
4109          * @param       string  $tabindex               index value for tabindex attribute of input element\r
4110          * @param       string  $big                    \r
4111          * @param       string  $tplt                   name of template\r
4112          */\r
4113         public function parse_edittemplateinfo($type, $description = '', $name = '', $help = '', $tabindex = 0, $big = 0, $tplt = '')\r
4114         {\r
4115                 global $manager;\r
4116                 $templateid                             =  intRequestVar('templateid');\r
4117                 $templatename                   =  TEMPLATE::getNameFromId($templateid);\r
4118                 $templatedescription    =  TEMPLATE::getDesc($templateid);\r
4119                 $template                               =& $manager->getTemplate($templatename);\r
4120                 switch ( $type )\r
4121                 {\r
4122                         case 'id':\r
4123                                 echo intval($templateid);\r
4124                                 break;\r
4125                         case 'name':\r
4126                                 echo Entity::hsc($templatename);\r
4127                                 break;\r
4128                         case 'desc':\r
4129                                 echo Entity::hsc($templatedescription);\r
4130                                 break;\r
4131                         case 'extratemplate':\r
4132                                 $tabidx    = 600;\r
4133                                 $pluginfields = array();\r
4134                                 $manager->notify(\r
4135                                         'TemplateExtraFields',\r
4136                                         array(\r
4137                                                 'fields' => &$pluginfields\r
4138                                         )\r
4139                                 );\r
4140                                 $tmplt = array();\r
4141                                 if ( $description )\r
4142                                 {\r
4143                                         $tmplt = skinableTEMPLATE::read($description);\r
4144                                 }\r
4145                                 if ( array_key_exists('TEMPLATE_EDIT_EXPLUGNAME', $tmplt) && !empty($tmplt['TEMPLATE_EDIT_EXPLUGNAME']) )\r
4146                                 {\r
4147                                         $base = $tmplt['TEMPLATE_EDIT_EXPLUGNAME'];\r
4148                                 }\r
4149                                 else\r
4150                                 {\r
4151                                         $base = "</tr><tr>\n"\r
4152                                                   . "\t" . '<th colspan="2"><%explugtplname%>' . "</th>\n";\r
4153                                 }\r
4154                                 foreach ( $pluginfields as $pfkey => $pfvalue )\r
4155                                 {\r
4156                                         $data = array(\r
4157                                                 'explugtplname' => Entity::hsc($pfkey)\r
4158                                         );\r
4159                                         echo TEMPLATE::fill($base, $data);\r
4160                                         foreach ( $pfvalue as $pffield => $pfdesc )\r
4161                                         {\r
4162                                                 $this->_templateEditRow($template, $pfdesc, $pffield, '', ++$tabidx, 0, $name);\r
4163                                         }\r
4164                                 }\r
4165                                 break;\r
4166                         default:\r
4167                                 $desc = defined($description) ? constant($description) : $description;\r
4168                                 $name = defined($name) ? constant($name) : $name;\r
4169                                 $this->_templateEditRow($template, $desc, $name, $help, $tabindex, $big, $tplt);\r
4170                                 break;\r
4171                 }\r
4172                 return;\r
4173         }\r
4174         \r
4175         /**\r
4176          * Actions::parse_eventformextra()\r
4177          * Parse skinvar eventformextra\r
4178          * \r
4179          * @param       string  $type   name of type for event form extra\r
4180          * @return      void\r
4181          */\r
4182         public function parse_eventformextra($type = 'activation')\r
4183         {\r
4184                 global $manager;\r
4185                 switch ( $type )\r
4186                 {\r
4187                         case 'activation':\r
4188                                 $key = requestVar('ackey');\r
4189                                 if ( !$key )\r
4190                                 {\r
4191                                         $this->objAdmin->error(_ERROR_ACTIVATE);\r
4192                                 }\r
4193                                 $info = MEMBER::getActivationInfo($key);\r
4194                                 if ( !$info )\r
4195                                 {\r
4196                                         $this->objAdmin->error(_ERROR_ACTIVATE);\r
4197                                 }\r
4198                                 $mem  = MEMBER::createFromId($info->vmember);\r
4199                                 if ( !$mem )\r
4200                                 {\r
4201                                         $this->objAdmin->error(_ERROR_ACTIVATE);\r
4202                                 }\r
4203                                 $data = array(\r
4204                                         'type'   => 'activation',\r
4205                                         'member' => $mem\r
4206                                 );\r
4207                                 break;\r
4208                         case 'membermailform-notloggedin':\r
4209                                 $data = array(\r
4210                                         'type' => 'membermailform-notloggedin',\r
4211                                 );\r
4212                                 break;\r
4213                 }\r
4214                 $manager->notify('FormExtra', $data);\r
4215                 return;\r
4216         }\r
4217         \r
4218         /**\r
4219          * Actions::parse_extrahead()\r
4220          * Parse skinvar extrahead\r
4221          */\r
4222         public function parse_extrahead()\r
4223         {\r
4224                 global $manager;\r
4225                 $extrahead = $this->objAdmin->extrahead;\r
4226                 $manager->notify(\r
4227                         'AdminPrePageHead',\r
4228                         array(\r
4229                                 'extrahead'     => &$extrahead,\r
4230                                 'action'        => $this->objAdmin->action\r
4231                         )\r
4232                 );\r
4233                 echo $extrahead;\r
4234                 return;\r
4235         }\r
4236         \r
4237         /**\r
4238          * Actions::parse_blogsetting()\r
4239          * Parse skinvar blogsetting\r
4240          * \r
4241          * @param       string  $which  name of setting for blog\r
4242          * @return      void\r
4243          */\r
4244         public function parse_blogsetting($which)\r
4245         {\r
4246                 echo $this->parse_getblogsetting($which);\r
4247                 return;\r
4248         }\r
4249         \r
4250         /**\r
4251          * Actions::parse_category()\r
4252          * Parse skinvar category\r
4253          * \r
4254          * @param       string  $type   name of setting for category\r
4255          * @return      void\r
4256          */\r
4257         public function parse_category($type = 'name')\r
4258         {\r
4259                 echo $this->parse_getcategory($type);\r
4260                 return;\r
4261         }\r
4262         \r
4263         /**\r
4264          * Actions::parse_geteditpluginfo()\r
4265          * Parse skinvar geteditpluginfo\r
4266          * \r
4267          * @param       string  $type   name of setting for edit plugin info\r
4268          * @return      void\r
4269          */\r
4270         public function parse_geteditpluginfo($type)\r
4271         {\r
4272                 $pid = intRequestVar('plugid');\r
4273                 switch ( $type )\r
4274                 {\r
4275                         case 'id':\r
4276                                 return $pid;\r
4277                                 break;\r
4278                         case 'name':\r
4279                                 return Entity::hsc(getPluginNameFromPid($pid));\r
4280                                 break;\r
4281                 }\r
4282                 return;\r
4283         }\r
4284         \r
4285         /**\r
4286          * Actions::parse_getmember()\r
4287          * Parse skinvar getmember\r
4288          * (includes a member info thingie)\r
4289          * \r
4290          * @param       string  $what   name of setting for member\r
4291          * @return      void\r
4292          */\r
4293         public function parse_getmember($what)\r
4294         {\r
4295                 global $memberinfo, $member;\r
4296                 // 1. only allow the member-details-page specific variables on member pages\r
4297                 if ( $this->skintype == 'member' )\r
4298                 {\r
4299                         switch ( $what )\r
4300                         {\r
4301                                 case 'name':\r
4302                                         return Entity::hsc($memberinfo->getDisplayName());\r
4303                                         break;\r
4304                                 case 'realname':\r
4305                                         return Entity::hsc($memberinfo->getRealName());\r
4306                                         break;\r
4307                                 case 'notes':\r
4308                                         return Entity::hsc($memberinfo->getNotes());\r
4309                                         break;\r
4310                                 case 'url':\r
4311                                         return Entity::hsc($memberinfo->getURL());\r
4312                                         break;\r
4313                                 case 'email':\r
4314                                         return Entity::hsc($memberinfo->getEmail());\r
4315                                         break;\r
4316                                 case 'id':\r
4317                                         return Entity::hsc($memberinfo->getID());\r
4318                                         break;\r
4319                         }\r
4320                 }\r
4321                 // 2. the next bunch of options is available everywhere, as long as the user is logged in\r
4322                 if ( $member->isLoggedIn() )\r
4323                 {\r
4324                         switch ( $what )\r
4325                         {\r
4326                                 case 'yourname':\r
4327                                         return $member->getDisplayName();\r
4328                                         break;\r
4329                                 case 'yourrealname':\r
4330                                         return $member->getRealName();\r
4331                                         break;\r
4332                                 case 'yournotes':\r
4333                                         return $member->getNotes();\r
4334                                         break;\r
4335                                 case 'yoururl':\r
4336                                         return $member->getURL();\r
4337                                         break;\r
4338                                 case 'youremail':\r
4339                                         return $member->getEmail();\r
4340                                         break;\r
4341                                 case 'yourid':\r
4342                                         return $member->getID();\r
4343                                         break;\r
4344                         }\r
4345                 }\r
4346                 return;\r
4347         }\r
4348         \r
4349         /**\r
4350          * Actions::parse_headmessage()\r
4351          * Parse skinvar headmessage\r
4352          * \r
4353          * @param       void\r
4354          * @return      void\r
4355          */\r
4356         public function parse_headmessage()\r
4357         {\r
4358                 if ( !empty($this->objAdmin->headMess) )\r
4359                 {\r
4360                         echo '<p>' . _MESSAGE . ': ' . Entity::hsc($this->objAdmin->headMess) . "</p>\n";\r
4361                 }\r
4362                 return;\r
4363         }\r
4364         \r
4365         /**\r
4366          * Actions::parse_helplink()\r
4367          * Parse skinvar helplink\r
4368          * \r
4369          * @param       string  $topic  name of topic for help\r
4370          * @return      void\r
4371          */\r
4372         public function parse_helplink($topic = '')\r
4373         {\r
4374                 if ( empty($topic) )\r
4375                 {\r
4376                         return;\r
4377                 }\r
4378                 help($topic);\r
4379                 return;\r
4380         }\r
4381         \r
4382         /**\r
4383          * Actions::parse_helpplugname()\r
4384          * Parse skinvar helpplugname\r
4385          * \r
4386          * @param       void\r
4387          * @return      void\r
4388          */\r
4389         public function parse_helpplugname()\r
4390         {\r
4391                 $plugid = intGetVar('plugid');\r
4392                 Entity::hsc(getPluginNameFromPid($plugid));\r
4393                 return;\r
4394         }\r
4395         \r
4396         /**\r
4397          * Actions::parse_ilistaddnew()\r
4398          * Parse skinvar ilistaddnew\r
4399          * \r
4400          * @param       void\r
4401          * @return      void\r
4402          */\r
4403         public function parse_ilistaddnew()\r
4404         {\r
4405                 $blogid = intRequestVar('blogid');\r
4406                 if ( intPostVar('start') == 0 )\r
4407                 {\r
4408                         echo '<p><a href="index.php?action=createitem&amp;blogid=' . $blogid . '">' . _ITEMLIST_ADDNEW . "</a></p>\n";\r
4409                 }\r
4410                 return;\r
4411         }\r
4412         \r
4413         /**\r
4414          * Actions::parse_importskininfo()\r
4415          * Parse skinvar importskininfo\r
4416          * \r
4417          * @param       string  $type   name of information for imported skin\r
4418          * @return      void\r
4419          */\r
4420         public function parse_importskininfo($type)\r
4421         {\r
4422                 switch ( $type )\r
4423                 {\r
4424                         case 'info':\r
4425                                 echo Entity::hsc(requestVar('skininfo'));\r
4426                                 break;\r
4427                         case 'snames':\r
4428                                 $dataArr = requestArray('skinnames');\r
4429                                 echo implode(' <em>' . _AND . '</em> ', $dataArr);\r
4430                                 break;\r
4431                         case 'tnames':\r
4432                                 $dataArr = requestArray('tpltnames');\r
4433                                 echo implode(' <em>' . _AND . '</em> ', $dataArr);\r
4434                                 break;\r
4435                         case 'sclashes':\r
4436                                 $dataArr = requestArray('skinclashes');\r
4437                                 echo implode(' <em>' . _AND . '</em> ', $dataArr);\r
4438                                 break;\r
4439                         case 'tclashes':\r
4440                                 $dataArr = requestArray('tpltclashes');\r
4441                                 echo implode(' <em>' . _AND . '</em> ', $dataArr);\r
4442                                 break;\r
4443                         case 'skinfile':\r
4444                                 echo Entity::hsc(requestVar('skinfile'));\r
4445                                 break;\r
4446                         case 'mode':\r
4447                                 echo Entity::hsc(requestVar('mode'));\r
4448                                 break;\r
4449                 }\r
4450                 return;\r
4451         }\r
4452         \r
4453         /**\r
4454          * Actions::parse_inputyesno()\r
4455          * Parse skinvar inputyesno\r
4456          * \r
4457          * @param       string  $name                   \r
4458          * @param       string  $checkedval             \r
4459          * @param       string  $tabindex               \r
4460          * @param       string  $value1                 \r
4461          * @param       string  $value2                 \r
4462          * @param       string  $yesval                 \r
4463          * @param       string  $noval                  \r
4464          * @param       string  $isAdmin                \r
4465          * @param       string  $templateName   \r
4466          * @return      void\r
4467          */\r
4468         public function parse_inputyesno($name, $checkedval, $tabindex = 0, $value1 = 1, $value2 = 0, $yesval = _YES, $noval = _NO, $isAdmin = 0, $templateName = '')\r
4469         {\r
4470                 self::input_yesno($name, $checkedval, $tabindex, $value1, $value2, $yesval, $noval, $isAdmin, $templateName );\r
4471                 return;\r
4472         }\r
4473         \r
4474         /**\r
4475          * Actions::parse_insertpluginfo()\r
4476          * Parse templatevar insertpluginfo\r
4477          */\r
4478         public function parse_insertpluginfo($type)\r
4479         {\r
4480                 $option = $this->objAdmin;\r
4481                 switch ( $type )\r
4482                 {\r
4483                         case 'id':\r
4484                                 return $option['pid'];\r
4485                                 break;\r
4486                         case 'name':\r
4487                                 return Entity::hsc($option['pfile']);\r
4488                                 break;\r
4489                 }\r
4490                 return;\r
4491         }\r
4492         \r
4493         /**\r
4494          * Actions::parse_insertpluginoptions()\r
4495          * Parse skinvar insertpluginoptions\r
4496          * \r
4497          * @param       string  $templateName   name of template\r
4498          * @return      void\r
4499          */\r
4500         public function parse_insertpluginoptions($templateName = '')\r
4501         {\r
4502                 $options        = $this->objAdmin->aOptions;\r
4503                 $template       = array();\r
4504                 $templats       = array();\r
4505                 \r
4506                 if ( $templateName )\r
4507                 {\r
4508                         $templates = skinableTEMPLATE::read($templateName);\r
4509                 }\r
4510                 if (array_key_exists('INSERT_PLUGOPTION_TITLE', $templates) && !empty($templates['INSERT_PLUGOPTION_TITLE']) )\r
4511                 {\r
4512                         $template['title'] = $templates['INSERT_PLUGOPTION_TITLE'];\r
4513                 }\r
4514                 else\r
4515                 {\r
4516                         $template['title'] = '<tr><th colspan="2"><%sprinttext(_PLUGIN_OPTIONS_TITLE, <|%insertpluginfo(name)%|>)%></th></tr>' . "\n";\r
4517                 }\r
4518                 if ( array_key_exists('INSERT_PLUGOPTION_BODY', $templates) && !empty($templates['INSERT_PLUGOPTION_BODY']) )\r
4519                 {\r
4520                         $template['body'] = $templates['INSERT_PLUGOPTION_BODY'];\r
4521                 }\r
4522                 else\r
4523                 {\r
4524                         $template['body'] = '<tr><%listplugplugoptionrow%></tr>' . "\n";\r
4525                 }\r
4526                 \r
4527                 $prevPid = -1;\r
4528                 \r
4529                 foreach ( $options as $option )\r
4530                 {\r
4531                         $handler = new skinableACTIONS($this->skintype, $template, $option);\r
4532                         $parser  = new PARSER(skinableACTIONS::getDefinedActions(), $handler);\r
4533                         // new plugin?\r
4534                         if ( $prevPid != $option['pid'] )\r
4535                         {\r
4536                                 $prevPid  = $option['pid'];\r
4537                                 $parser->parse($template['title']);\r
4538                         }\r
4539                         $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);\r
4540                         if ( @$meta['access'] != 'hidden' )\r
4541                         {\r
4542                                 $parsed = $parser->parse($template['body']);\r
4543                         }\r
4544                 }\r
4545                 return;\r
4546         }\r
4547         \r
4548         /**\r
4549          * Actions::parse_insplugoptcontent()\r
4550          * Parse skinvar insplugoptcontent\r
4551          * \r
4552          * @param       void\r
4553          * @return      void\r
4554          */\r
4555         public function parse_insplugoptcontent()\r
4556         {\r
4557                 $option = $this->objAdmin->aOption;\r
4558                 \r
4559                 $meta   = NucleusPlugin::getOptionMeta($option['typeinfo']);\r
4560                 if (array_key_exists('access', $meta) && $meta['access'] != 'hidden')\r
4561                 {\r
4562                         echo '<tr>';\r
4563                         skinableListplug_plugOptionRow($option);\r
4564                         echo '</tr>';\r
4565                 }\r
4566                 return;\r
4567         }\r
4568         \r
4569         /**\r
4570          * Actions::parse_iprangeinput()\r
4571          * Parse skinvar iprangeinput\r
4572          * \r
4573          * @param       void\r
4574          * @return      void\r
4575          */\r
4576         function parse_iprangeinput()\r
4577         {\r
4578                 if ( requestVar('ip') )\r
4579                 {\r
4580                         $iprangeVal = Entity::hsc(requestVar('ip'));\r
4581                         echo '<input name="iprange" type="radio" value="' . $iprangeVal . '" checked="checked" id="ip_fixed" />' . "\n";\r
4582                         echo '<label for="ip_fixed">' . $iprangeVal . "</label><br />\n";\r
4583                         echo '<input name="iprange" type="radio" value="custom" id="ip_custom" />' . "\n";\r
4584                         echo '<label for="ip_custom">' . _BAN_IP_CUSTOM . '</label>' . "\n";\r
4585                         echo '<input name="customiprange" value="' . $iprangeVal . '" maxlength="15" size="15" />' . "\n";\r
4586                 }\r
4587                 else\r
4588                 {\r
4589                         echo '<input name="iprange" value="custom" type="hidden" />' . "\n";\r
4590                         echo '<input name="customiprange" value="" maxlength="15" size="15" />' . "\n";\r
4591                 }\r
4592                 return;\r
4593         }\r
4594         \r
4595         /**\r
4596          * Actions::parse_itemnavlist()\r
4597          * Parse skinvar itemnavlist\r
4598          * \r
4599          * @param       void\r
4600          * @return      void\r
4601          */\r
4602         public function parse_itemnavlist()\r
4603         {\r
4604                 global $CONF, $manager, $member;\r
4605                 if ( $this->skintype == 'itemlist' )\r
4606                 {\r
4607                         $blogid =  intRequestVar('blogid');\r
4608                         $blog   =& $manager->getBlog($blogid);\r
4609                 }\r
4610                 if ( postVar('start') )\r
4611                 {\r
4612                         $start = intPostVar('start');\r
4613                 }\r
4614                 else\r
4615                 {\r
4616                         $start = 0;\r
4617                 }\r
4618                 \r
4619                 // amount of items to show\r
4620                 if ( postVar('amount') )\r
4621                 {\r
4622                         $amount = intPostVar('amount');\r
4623                 }\r
4624                 else\r
4625                 {\r
4626                         $amount = intval($CONF['DefaultListSize']);\r
4627                         if ( $amount < 1 )\r
4628                         {\r
4629                                 $amount = 10;\r
4630                         }\r
4631                 }\r
4632                 $query  = "SELECT bshortname, cname, mname, ititle, ibody, inumber, idraft, itime"\r
4633                         . " FROM %s, %s, %s"\r
4634                         . " WHERE iblog=bnumber AND iauthor=mnumber AND icat=catid;";\r
4635                 \r
4636                 $query = sprintf($query, sql_table('item'), sql_table('blog'), sql_table('member'), sql_table('category'));\r
4637                 \r
4638                 if ( $this->skintype == 'itemlist' )\r
4639                 {\r
4640                         $query .= 'and iblog   = ' . $blogid;\r
4641                         $template['now'] = $blog->getCorrectTime(time());\r
4642                         \r
4643                         // non-blog-admins can only edit/delete their own items\r
4644                         if ( !$member->blogAdminRights($blogid) )\r
4645                         {\r
4646                                 $query .= ' and iauthor = ' . $member->getID();\r
4647                         }\r
4648                 }\r
4649                 elseif ( $this->skintype == 'browseownitems' )\r
4650                 {\r
4651                         $query .= 'and iauthor   = ' . $member->getID();\r
4652                         $blogid = 0;\r
4653                         $template['now'] = time();\r
4654                 }\r
4655                 \r
4656                 // search through items\r
4657                 $search = postVar('search');\r
4658                 \r
4659                 if ( !empty($search) )\r
4660                 {\r
4661                         $query .= ' AND ((ititle LIKE "%' . sql_real_escape_string($search) . '%") '\r
4662                                 . '  OR  (ibody LIKE "%' . sql_real_escape_string($search) . '%") '\r
4663                                 . '  OR  (imore LIKE "%' . sql_real_escape_string($search) . '%"))';\r
4664                 }\r
4665                 $query .= ' ORDER BY itime DESC'\r
4666                         . " LIMIT {$start},{$amount}";\r
4667                 \r
4668                 $template['content'] = 'itemlist';\r
4669                 \r
4670                 $navList = new skinableNAVLIST($this->skintype, $start, $amount, 0, 1000, $blogid, $search, 0);\r
4671                 $navList->showBatchList('item', $query, 'table', $template);\r
4672                 return;\r
4673         }\r
4674         \r
4675         /**\r
4676          * Actions::parse_jstoolbaroptions()\r
4677          * Parse skinvar jstoolbaroptions\r
4678          * \r
4679          * @param       void\r
4680          * @return      void\r
4681          */\r
4682         public function parse_jstoolbaroptions()\r
4683         {\r
4684                 global $CONF;\r
4685                 $options = array(\r
4686                         _SETTINGS_JSTOOLBAR_NONE,\r
4687                         _SETTINGS_JSTOOLBAR_SIMPLE,\r
4688                         _SETTINGS_JSTOOLBAR_FULL\r
4689                 );\r
4690                 $i = 1;\r
4691                 foreach ( $options as $option )\r
4692                 {\r
4693                         $text  = "<option value=\"%d\"%s>%s</option>\n";\r
4694                         $extra = ($CONF['DisableJsTools'] == $i) ? ' selected="selected"' : '';\r
4695                         echo sprintf($text, $i, $extra, $option);\r
4696                         $i++;\r
4697                 }\r
4698                 return;\r
4699         }\r
4700         \r
4701         /**\r
4702          * Actions::parse_localeselectoptions()\r
4703          * Parse skinvar localeselectoptions\r
4704          * \r
4705          * @param       void\r
4706          * @return      void\r
4707          */\r
4708         public function parse_localeselectoptions()\r
4709         {\r
4710                 $locales = i18n::get_available_locale_list();\r
4711                 $memid   = intRequestVar('memberid');\r
4712                 if ( $memid )\r
4713                 {\r
4714                         $mem = MEMBER::createFromID($memid);\r
4715                         if ( !$mem->getLocale() || !in_array($mem->getLocale(), $locales) )\r
4716                         {\r
4717                                 echo "<option value=\"\" selected=\"selected\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";\r
4718                         }\r
4719                         else\r
4720                         {\r
4721                                 echo "<option value=\"\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";\r
4722                         }\r
4723                 }\r
4724                 else\r
4725                 {\r
4726                         if ( !i18n::get_current_locale() || !in_array(i18n::get_current_locale(), $locales) )\r
4727                         {\r
4728                                 echo "<option value=\"\" selected=\"selected\">en_Latn_US</option>\n";\r
4729                         }\r
4730                 }\r
4731                 foreach ( $locales as $locale )\r
4732                 {\r
4733                         if ($memid)\r
4734                         {\r
4735                                 if ( $locale == $mem->getLocale() )\r
4736                                 {\r
4737                                         echo "<option value=\"{$locale}\" selected=\"selected\">{$locale}</option>\n";\r
4738                                 }\r
4739                                 else\r
4740                                 {\r
4741                                         echo "<option value=\"{$locale}\">{$locale}</option>\n";\r
4742                                 }\r
4743                         }\r
4744                         else\r
4745                         {\r
4746                                 if ( $locale == i18n::get_current_locale() )\r
4747                                 {\r
4748                                         echo "<option value=\"{$locale}\" selected=\"selected\">{$locale}</option>\n";\r
4749                                 }\r
4750                                 else\r
4751                                 {\r
4752                                         echo "<option value=\"{$locale}\">{$locale}</option>\n";\r
4753                                 }\r
4754                         }\r
4755                 }\r
4756                 return;\r
4757         }\r
4758         \r
4759         /**\r
4760          * Actions::parse_listplugplugoptionrow()\r
4761          * Parse templatevar listplugplugoptionrow\r
4762          * \r
4763          * @param       string  $templateName   name of template\r
4764          * @return      void\r
4765          */\r
4766         public function parse_listplugplugoptionrow($templateName = '')\r
4767         {\r
4768                 $option = $this->objAdmin;\r
4769                 echo skinableListplug_plugOptionRow($option, $templateName);\r
4770                 return;\r
4771         }\r
4772         \r
4773         /**\r
4774          * Actions::parse_mediadirwarning()\r
4775          * Parse skinvar mediadirwarning\r
4776          * \r
4777          * @param       void\r
4778          * @return      void\r
4779          */\r
4780         public function parse_mediadirwarning()\r
4781         {\r
4782                 global $DIR_MEDIA;\r
4783                 if ( !is_dir($DIR_MEDIA) )\r
4784                 {\r
4785                         echo "<br /><b>" . _WARNING_NOTADIR . "</b>\n";\r
4786                 }\r
4787                 if ( !is_readable($DIR_MEDIA) )\r
4788                 {\r
4789                         echo "<br /><b>" . _WARNING_NOTREADABLE . "</b>\n";\r
4790                 }\r
4791                 if ( !is_writeable($DIR_MEDIA) )\r
4792                 {\r
4793                         echo "<br /><b>" . _WARNING_NOTWRITABLE . "</b>\n";\r
4794                 }\r
4795                 return;\r
4796         }\r
4797         \r
4798         /**\r
4799          * Actions::parse_movedistselect()\r
4800          * Parse skinvar movedistselect\r
4801          */\r
4802         function parse_movedistselect()\r
4803         {\r
4804                 $actionType = requestVar('action');\r
4805                 switch ( $actionType )\r
4806                 {\r
4807                         case 'batchitem':\r
4808                                 $this->objAdmin->selectBlogCategory('destcatid');\r
4809                                 break;\r
4810                         case 'batchcategory':\r
4811                                 $this->objAdmin->selectBlog('destblogid');\r
4812                                 break;\r
4813                         default:\r
4814                                 if ( $this->skintype == 'itemmove' )\r
4815                                 {\r
4816                                         $query  = "SELECT icat as result FROM %s WHERE inumber=%d;";\r
4817                                         $query = spriintf($query, sql_table('item'), intRequestVar('itemid'));\r
4818                                         $catid  = quickQuery(sprintf($query, intRequestVar('itemid')));\r
4819                                         $this->objAdmin->selectBlogCategory('catid', $catid, 10, 1);\r
4820                                 }\r
4821                                 break;\r
4822                 }\r
4823                 return;\r
4824         }\r
4825         \r
4826         /**\r
4827          * Actions::parse_moveitemid()\r
4828          * Parse skinvar moveitemid\r
4829          * \r
4830          * @param       void\r
4831          * @return      void\r
4832          */\r
4833         public function parse_moveitemid()\r
4834         {\r
4835                 echo intRequestVar('itemid');\r
4836                 return;\r
4837         }\r
4838         \r
4839         /**\r
4840          * Actions::parse_newestcompare()\r
4841          * Parse skinvar newestcompare\r
4842          * \r
4843          * @param       void\r
4844          * @return      void\r
4845          */\r
4846         public function parse_newestcompare()\r
4847         {\r
4848                 global $nucleus;\r
4849                 $newestVersion  = getLatestVersion();\r
4850                 $newestCompare  = str_replace('/', '.', $newestVersion);\r
4851                 $currentVersion = str_replace(array('/', 'v'), array('.', ''), $nucleus['version']);\r
4852                 if ( $newestVersion && version_compare($newestCompare, $currentVersion, '>') )\r
4853                 {\r
4854                         echo '<br /><a style="color:red" href="http://nucleuscms.org/upgrade.php" title="' . _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE . '">';\r
4855                         echo _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT . $newestVersion . '</a>';\r
4856                 }\r
4857                 return;\r
4858         }\r
4859         \r
4860         /**\r
4861          * Actions::parse_newmemberselect()\r
4862          * Parse skinvar newmemberselect\r
4863          * \r
4864          * @param       string  $templateName   name of template to use\r
4865          * @return      void\r
4866          */\r
4867         public function parse_newmemberselect($templateName = '')\r
4868         {\r
4869                 $blogid = intRequestVar('blogid');\r
4870                 \r
4871                 $query  = "SELECT tmember FROM %s WHERE tblog=%d;";\r
4872                 $query = sprintf($query, sql_table('team'), (integer) $blogid);\r
4873                 $res = sql_query($query);\r
4874                 \r
4875                 $tmem = array();\r
4876                 while ( $tmember = sql_fetch_object($res) ) \r
4877                 {\r
4878                         $tmem[] = intval($tmember->tmember);\r
4879                 }\r
4880                 \r
4881                 $query  = "SELECT mname as text, mnumber as value FROM %s WHERE mnumber NOT IN (%s);";\r
4882                 $query = sprintf($query, sql_table('member'), implode(', ', $tmem));\r
4883                 \r
4884                 $template['name']        = 'memberid';\r
4885                 $template['tabindex'] = 10000;\r
4886                 skinableShowlist($query, 'select', $template, $templateName);\r
4887                 return;\r
4888         }\r
4889         \r
4890         /**\r
4891          * Actions::parse_newpluginlist()\r
4892          * Parse skinvar newpluginlist\r
4893          * \r
4894          * @param       void\r
4895          * @return      void\r
4896          */\r
4897         public function parse_newpluginlist()\r
4898         {\r
4899                 $candidates = $this->newPlugCandidates;\r
4900                 foreach ( $candidates as $name )\r
4901                 {\r
4902                         echo '<option value="NP_' . $name . '">' . Entity::hsc($name) . "</option>\n";\r
4903                 }\r
4904                 return;\r
4905         }\r
4906         \r
4907         /**\r
4908          * Actions::parse_outputspecialdirs()\r
4909          * Parse skinvar outputspecialdirs\r
4910          * \r
4911          * @param       string  $type   type of setting for directory\r
4912          * @return      void\r
4913          */\r
4914         public function parse_outputspecialdirs($type)\r
4915         {\r
4916                 switch ( $type )\r
4917                 {\r
4918                         case 'nucleusdir':\r
4919                                 global $DIR_NUCLEUS;\r
4920                                 echo Entity::hsc($DIR_NUCLEUS);\r
4921                                 break;\r
4922                         case 'mediadir':\r
4923                                 global $DIR_MEDIA;\r
4924                                 echo Entity::hsc($DIR_MEDIA);\r
4925                                 break;\r
4926                 }\r
4927                 return;\r
4928         }\r
4929         \r
4930         /**\r
4931          * Actions::parse_passrequestvars()\r
4932          * Parse skinvar passrequestvars\r
4933          * \r
4934          * @param       void\r
4935          * @return      void\r
4936          */\r
4937         public function parse_passrequestvars()\r
4938         {\r
4939                 $oldaction = postVar('oldaction');\r
4940                 if ( ($oldaction != 'logout')\r
4941                   && ($oldaction != 'login')\r
4942                   && $this->objAdmin->passvar\r
4943                   && !postVar('customaction') )\r
4944                 {\r
4945                         passRequestVars();\r
4946                 }\r
4947                 return;\r
4948         }\r
4949         \r
4950         /**\r
4951          * Actions::parse_pluginextras()\r
4952          * Parse skinvar pluginextras\r
4953          * \r
4954          * @param       string  $type   type of plugin context\r
4955          * @return      void\r
4956          */\r
4957         function parse_pluginextras($type = 'global')\r
4958         {\r
4959                 global $manager;\r
4960                 switch ( $type )\r
4961                 {\r
4962                         case 'member':\r
4963                                 $id  = intRequestVar('memberid');\r
4964                                 $mem = MEMBER::createFromID($id);\r
4965                                 $manager->notify(\r
4966                                         'MemberSettingsFormExtras',\r
4967                                         array(\r
4968                                                 'member' => &$mem\r
4969                                         )\r
4970                                 );\r
4971                                 break;\r
4972                         case 'blog':\r
4973                                 $id  = intRequestVar('blogid');\r
4974                                 $blg = $manager->getBlog($id);\r
4975                                 $manager->notify(\r
4976                                         'BlogSettingsFormExtras',\r
4977                                         array(\r
4978                                                 'member' => &$blg\r
4979                                         )\r
4980                                 );\r
4981                                 break;\r
4982                         default:\r
4983                                 $manager->notify(\r
4984                                         'GeneralSettingsFormExtras',\r
4985                                         array(\r
4986                                         )\r
4987                                 );\r
4988                                 break;\r
4989                 }\r
4990                 return;\r
4991         }\r
4992         \r
4993         /**\r
4994          * Actions::parse_pluginhelp()\r
4995          * Parse skinvar pluginhelp\r
4996          * \r
4997          * @param       void\r
4998          * @return      void\r
4999          */\r
5000         public function parse_pluginhelp()\r
5001         {\r
5002                 global $manager, $DIR_PLUGINS;\r
5003                 $plugid = intGetVar('plugid');\r
5004                 $plugName =  getPluginNameFromPid($plugid);\r
5005                 $plug =& $manager->getPlugin($plugName);\r
5006                 \r
5007                 if ( $plug->supportsFeature('HelpPage') > 0 )\r
5008                 {\r
5009                         $helpfile = $DIR_PLUGINS . $plug->getShortName() . '/help.';\r
5010                         if ( @file_exists($helpfile . 'php') )\r
5011                         {\r
5012                                 @include($helpfile . 'php');\r
5013                                 return;\r
5014                         }\r
5015                         elseif ( @file_exists($helpfile . 'html') )\r
5016                         {\r
5017                                 @include($helpfile . 'html');\r
5018                                 return;\r
5019                         }\r
5020                 }\r
5021                 echo '<p>' . _ERROR . ': ' . _ERROR_PLUGNOHELPFILE . "</p>\n";\r
5022                 echo '<p><a href="index.php?action=pluginlist">(' . _BACK . ")</a></p>\n";\r
5023                 return;\r
5024         }\r
5025         \r
5026         /**\r
5027          * Actions::parse_pluginlistlist()\r
5028          * Parse skinvar pluginlistlist\r
5029          * \r
5030          * @param       string  $templateName   name of template to use\r
5031          * @return      void\r
5032          */\r
5033         public function parse_pluginlistlist($templateName = '')\r
5034         {\r
5035                 $query  = "SELECT * FROM %s ORDER BY porder ASC;";\r
5036                 $query = sprintf($query, sql_table('plugin'));\r
5037                 $template['content']  = 'pluginlist';\r
5038                 $template['tabindex'] = 10;\r
5039                 skinableShowlist($query, 'table', $template, $templateName);\r
5040                 return;\r
5041         }\r
5042         \r
5043         /**\r
5044          * Actions::parse_pluginoptions()\r
5045          * Parse skinvar pluginoptions\r
5046          * \r
5047          * @param       string  $type   type of plugin option\r
5048          * @return      void\r
5049          */\r
5050         public function parse_pluginoptions($type = 'global')\r
5051         {\r
5052                 switch ( $type )\r
5053                 {\r
5054                         case 'member':\r
5055                                 $id = intRequestVar('memberid');\r
5056                                 break;\r
5057                         case 'blog':\r
5058                                 $id = intRequestVar('blogid');\r
5059                                 break;\r
5060                         case 'category':\r
5061                                 $id = intRequestVar('catid');\r
5062                                 break;\r
5063                 }\r
5064                 $this->objAdmin->_insertPluginOptions($type, $id);\r
5065                 return;\r
5066         }\r
5067         \r
5068         /**\r
5069          * Actions::parse_qmenuaddselect()\r
5070          * Parse skinvar qmanuaddselect\r
5071          * \r
5072          * @param       string  $templateName   name of template to use\r
5073          * @return      void\r
5074          */\r
5075         public function parse_qmenuaddselect($templateName = '')\r
5076         {\r
5077                 global $member;\r
5078                 $showAll = requestVar('showall');\r
5079                 if ( $member->isAdmin() && ($showAll == 'yes') )\r
5080                 {\r
5081                         // Super-Admins have access to all blogs! (no add item support though)\r
5082                         $query =  'SELECT bnumber as value, bname as text'\r
5083                                . ' FROM ' . sql_table('blog')\r
5084                                . ' ORDER BY bname';\r
5085                 }\r
5086                 else\r
5087                 {\r
5088                         $query =  'SELECT bnumber as value, bname as text'\r
5089                                . ' FROM ' . sql_table('blog') . ', ' . sql_table('team')\r
5090                                . ' WHERE tblog=bnumber and tmember=' . $member->getID()\r
5091                                . ' ORDER BY bname';\r
5092                 }\r
5093                 $template['name']          = 'blogid';\r
5094                 $template['tabindex']   = 15000;\r
5095                 $template['extra']        = _QMENU_ADD_SELECT;\r
5096                 $template['selected']   = -1;\r
5097                 $template['shorten']    = 10;\r
5098                 $template['shortenel']  = '';\r
5099                 $template['javascript'] = 'onchange="return form.submit()"';\r
5100                 skinableShowlist($query, 'select', $template, $templateName);\r
5101                 return;\r
5102         }\r
5103 \r
5104         /**\r
5105          * Actions::parse_quickmenu()\r
5106          * Parse skinvar quickmenu\r
5107          * \r
5108          * @param       string  $templateName   name of template to use\r
5109          * @return      void\r
5110          */\r
5111         public function parse_quickmenu($templateName = '')\r
5112         {\r
5113                 global $manager;\r
5114                 $templates = array();\r
5115                 $template  = array();\r
5116                 if ( !empty($templateName) )\r
5117                 {\r
5118                         $templates = skinableTEMPLATE::read($templateName);\r
5119                 }\r
5120                 $pluginExtras = array();\r
5121                 $manager->notify(\r
5122                         'QuickMenu',\r
5123                         array(\r
5124                                 'options' => &$pluginExtras\r
5125                         )\r
5126                 );\r
5127                 if ( count($pluginExtras) > 0 )\r
5128                 {\r
5129                         if ( array_key_exists('PLUGIN_QUICKMENU_TITLE', $templates) || !empty($templates['PLUGIN_QUICKMENU_TITLE']) )\r
5130                         {\r
5131                                 $template['title'] = $templates['PLUGIN_QUICKMENU_TITLE'];\r
5132                         }\r
5133                         else\r
5134                         {\r
5135                                 $template['title'] = '<h2><%text(_QMENU_PLUGINS)%></h2>';\r
5136                         }\r
5137                         $handler = new skinableACTIONS($this->skintype, $template, $this->objAdmin);\r
5138                         $parser  = new PARSER(skinableACTIONS::getDefinedActions(), $handler);\r
5139                         $parser->parse($template['title']);\r
5140                         \r
5141                         if ( array_key_exists('PLUGIN_QUICKMENU_HEAD', $templates) || !empty($templates['PLUGIN_QUICKMENU_HEAD']) )\r
5142                         {\r
5143                                 $template['head'] = $templates['PLUGIN_QUICKMENU_HEAD'];\r
5144                         }\r
5145                         else\r
5146                         {\r
5147                                 $template['head'] = '<ul>';\r
5148                         }\r
5149                         \r
5150                         echo $template['head'];\r
5151                         \r
5152                         if ( array_key_exists('PLUGIN_QUICKMENU_BODY', $templates) || !empty($templates['PLUGIN_QUICKMENU_BODY']) )\r
5153                         {\r
5154                                 $template['body'] = $templates['PLUGIN_QUICKMENU_BODY'];\r
5155                         }\r
5156                         else\r
5157                         {\r
5158                                 $template['body'] = '<li><a href="<%plugadminurl%>" title="<%plugadmintooltip%>"><%plugadmintitle%></a></li>';\r
5159                         }\r
5160                         \r
5161                         foreach ( $pluginExtras as $aInfo )\r
5162                         {\r
5163                                 $data = array(\r
5164                                         'plugadminurl'          => ENTITY::hsc($aInfo['url'], ENT_QUOTES),\r
5165                                         'plugadmintooltip'      => ENTITY::hsc($aInfo['tooltip'], ENT_QUOTES),\r
5166                                         'plugadmintitle'        => ENTITY::hsc($aInfo['title'], ENT_QUOTES),\r
5167                                 );\r
5168                                 echo TEMPLATE::fill($template['body'], $data);\r
5169                         }\r
5170                         if ( array_key_exists('PLUGIN_QUICKMENU_FOOT', $templates) || !empty($templates['PLUGIN_QUICKMENU_FOOT']) )\r
5171                         {\r
5172                                 $template['foot'] = $templates['PLUGIN_QUICKMENU_FOOT'];\r
5173                         }\r
5174                         else\r
5175                         {\r
5176                                 $template['foot'] = '</ul>';\r
5177                         }\r
5178                         echo $template['foot'];\r
5179                 }\r
5180                 return;\r
5181         }\r
5182         \r
5183         /**\r
5184          * Actions::parse_requestblogid()\r
5185          * Parse skinvar requestblogid\r
5186          * \r
5187          * @param       void\r
5188          * @return      void\r
5189          */\r
5190         public function parse_requestblogid()\r
5191         {\r
5192                 echo intRequestVar('blogid');\r
5193                 return;\r
5194         }\r
5195         \r
5196         /**\r
5197          * Actions::parse_requestiprange()\r
5198          * Parse skinvar requestiprange\r
5199          * \r
5200          * @param       void\r
5201          * @return      void\r
5202          */\r
5203         public function parse_requestiprange()\r
5204         {\r
5205                 if ( requestVar('iprange') )\r
5206                 {\r
5207                         echo Entity::hsc(requestVar('iprange'));\r
5208                 }\r
5209                 elseif ( requestVar('ip') )\r
5210                 {\r
5211                         echo Entity::hsc(requestVar('ip'));\r
5212                 }\r
5213                 return;\r
5214         }\r
5215         \r
5216         /**\r
5217          * Actions::parse_selectlocaladminskinfiles()\r
5218          * Parse skinvar selectlocaladminskinfiles\r
5219          * \r
5220          * @param       void\r
5221          * @return      void\r
5222          */\r
5223         public function parse_selectlocaladminskinfiles()\r
5224         {\r
5225                 global $DIR_ADMINSKINS, $manager;\r
5226                 $candidates = skinableSKINIMPORT::searchForCandidates($DIR_ADMINSKINS);\r
5227                 foreach ( $candidates as $skinname => $skinfile )\r
5228                 {\r
5229                         $html = Entit::hsc($skinfile);\r
5230                         echo '<option value="' . $html . '">' . $skinname . "</option>\n";\r
5231                 }\r
5232                 return;\r
5233         }\r
5234         \r
5235         /**\r
5236          * Actions::parse_selectlocalskinfiles()\r
5237          * Parse skinvar selectlocalskinfiles\r
5238          * \r
5239          * @param       void\r
5240          * @return      void\r
5241          */\r
5242         function parse_selectlocalskinfiles()\r
5243         {\r
5244                 global $DIR_SKINS;\r
5245                 $candidates = SKINIMPORT::searchForCandidates($DIR_SKINS);\r
5246                 foreach ( $candidates as $skinname => $skinfile )\r
5247                 {\r
5248                         $html = ENTITY::hsc($skinfile);\r
5249                         echo '<option value="' . $html . '">' . $skinname . "</option>\n";\r
5250                 }\r
5251                 return;\r
5252         }\r
5253         \r
5254         /**\r
5255          * Actions::parse_skineditallowedlist()\r
5256          * Parse skinvar skineditallowedlist\r
5257          * \r
5258          * @param       string  $type                   type of skin\r
5259          * @param       string  $templateName   name of template\r
5260          * @return      void\r
5261          */\r
5262         public function parse_skineditallowedlist($type, $templateName = '')\r
5263         {\r
5264                 switch ( $type )\r
5265                 {\r
5266                         case 'blog':\r
5267                                 $query = "SELECT bshortname, bname FROM %s";\r
5268                                 $show  = array(\r
5269                                         'content' => 'shortblognames'\r
5270                                 );\r
5271                                 $query = sprintf($query, sql_table('blog'));\r
5272                                 skinableShowlist($query, 'table', $show, $templateName);\r
5273                                 break;\r
5274                         case 'template':\r
5275                                 $query = "SELECT tdname as name, tddesc as description FROM %s";\r
5276                                 $show  = array(\r
5277                                         'content' => 'shortnames'\r
5278                                 );\r
5279                                 $query = sprintf($query, sql_table('template_desc'));\r
5280                                 skinableShowlist($query, 'table', $show, $templateName);\r
5281                                 break;\r
5282                 }\r
5283                 return;\r
5284         }\r
5285         \r
5286         /**\r
5287          * Actions::parse_skinfile()\r
5288          * Inserts an url relative to the skindir (useful when doing import/export)\r
5289          *\r
5290          * e.g. <skinfile(default/myfile.sth)>\r
5291          * \r
5292          * @param       string  $filename       file name for skin\r
5293          * @return      void\r
5294          */\r
5295         public function parse_skinfile($filename)\r
5296         {\r
5297                 $base = NP_SkinableAdmin::getAdminSkinURL();\r
5298                 $pref = PARSER::getProperty('IncludePrefix');\r
5299                 echo $base . $pref . $filename;\r
5300                 return;\r
5301         }\r
5302         \r
5303         /**\r
5304          * Actions::parse_skinielist()\r
5305          * Parse skinvar skinielist\r
5306          * \r
5307          * @param       string  $type                   type of skin\r
5308          * @param       string  $templateName   name of template to use\r
5309          * @return      void\r
5310          */\r
5311         public function parse_skinielist($type, $templateName = '')\r
5312         {\r
5313                 $templates = array();\r
5314                 if ( $templateName )\r
5315                 {\r
5316                         $templates = skinableTEMPLATE::read($templateName);\r
5317                 }\r
5318                 if ( array_key_exists('SKINIE_EXPORT_LIST', $templates) && !empty($templates['SKINIE_EXPORT_LIST']) )\r
5319                 {\r
5320                         $template = $templates['SKINIE_EXPORT_LIST'];\r
5321                 }\r
5322                 else\r
5323                 {\r
5324                         $template = '<td><input type="checkbox" name="<%typeid%>"  id="<%expid%>" /><label for="<%expid%>"><%expname%></label></td>' . "\n"\r
5325                                           . "<td><%expdesc%></td>\n"\r
5326                                           . "</tr><tr>\n";\r
5327                 }\r
5328                 switch ( $type )\r
5329                 {\r
5330                         case 'skin':\r
5331                                 $res = sql_query('SELECT * FROM ' . sql_table('skin_desc'));\r
5332                                 while ( $skinObj = sql_fetch_object($res) )\r
5333                                 {\r
5334                                         $data = array(\r
5335                                                 'typeid'        => 'skin[' . $skinObj->sdnumber . ']',\r
5336                                                 'expid'         => 'skinexp' . $skinObj->sdnumber,\r
5337                                                 'expname'       => ENTITY::hsc($skinObj->sdname, ENT_QUOTES),\r
5338                                                 'expdesc'       => ENTITY::hsc($skinObj->sddesc, ENT_QUOTES),\r
5339                                         );\r
5340                                         echo TEMPLATE::fill($template, $data);\r
5341                                 }\r
5342                                 break;\r
5343                         case 'template':\r
5344                                 $res = sql_query('SELECT * FROM '.sql_table('template_desc'));\r
5345                                 while ($templateObj = sql_fetch_object($res)) {\r
5346                                         $data = array(\r
5347                                                 'typeid'        => 'template[' . $templateObj->tdnumber . ']',\r
5348                                                 'expid'         => 'templateexp' . $templateObj->tdnumber,\r
5349                                                 'expname'       => ENTITY::hsc($templateObj->tdname, ENT_QUOTES),\r
5350                                                 'expdesc'       => ENTITY::hsc($templateObj->tddesc, ENT_QUOTES),\r
5351                                         );\r
5352                                         echo TEMPLATE::fill($template, $data);\r
5353                                 }\r
5354                                 break;\r
5355                 }\r
5356                 return;\r
5357         }\r
5358         \r
5359         /**\r
5360          * Actions::parse_skinoverview()\r
5361          * Parse skinvar skinoverview\r
5362          * \r
5363          * @param       string  $templateName   name of template to use\r
5364          * @return      void\r
5365          */\r
5366         public function parse_skinoverview($templateName = '')\r
5367         {\r
5368                 $query  = "SELECT * FROM %s ORDER BY sdname";\r
5369                 $query = sprintf($query, sql_table('skin_desc'));\r
5370                 \r
5371                 $template['content']  = 'skinlist';\r
5372                 $template['tabindex'] = 10;\r
5373                 \r
5374                 skinableShowlist($query, 'table', $template, $templateName);\r
5375                 return;\r
5376         }\r
5377         \r
5378         /**\r
5379          * Actions::parse_skintypehelp()\r
5380          * Check editing skintypehelp\r
5381          * \r
5382          * @param       void\r
5383          * @return      void\r
5384          */\r
5385         public function parse_skintypehelp()\r
5386         {\r
5387                 $nowSkinType = strtolower(trim(requestVar('type')));\r
5388                 $regularType = array(\r
5389                         'index',\r
5390                         'item',\r
5391                         'archivelist',\r
5392                         'archive',\r
5393                         'search',\r
5394                         'error',\r
5395                         'member',\r
5396                         'imagepopup'\r
5397                 );\r
5398                 \r
5399                 if ( in_array($nowSkinType, $regularType) )\r
5400                 {\r
5401                         help('skinpart' . $nowSkinType);\r
5402                 }\r
5403                 else\r
5404                 {\r
5405                         help('skinpartspecial');\r
5406                 }\r
5407                 return;\r
5408         }\r
5409         \r
5410         /**\r
5411          * Actions::parse_specialskinlist()\r
5412          * Parse skinvar specialskinlist\r
5413          * \r
5414          * @param       string  $templateName   name of template to use\r
5415          * @return      void\r
5416          */\r
5417         public function parse_specialskinlist($templateName = '')\r
5418         {\r
5419                 $templates = array();\r
5420                 if ( $templateName )\r
5421                 {\r
5422                         $templates = skinableTEMPLATE::read($templateName);\r
5423                 }\r
5424                 $nType  = array(\r
5425                         'index',\r
5426                         'item',\r
5427                         'error',\r
5428                         'search',\r
5429                         'archive',\r
5430                         'archivelist',\r
5431                         'imagepopup',\r
5432                         'member'\r
5433                 );\r
5434                 $skinid = intRequestVar('skinid');\r
5435                 $query  = "SELECT stype FROM %s WHERE stype NOT IN ('%s') AND sdesc = %d;";\r
5436                 $query = sprintf($query, sql_table('skin'), implode("', '", $nType), $skinid);\r
5437                 \r
5438                 $res    = sql_query($query);\r
5439                 if ( $res && sql_num_rows($res) > 0 )\r
5440                 {\r
5441                         $data = array();\r
5442                         if ( array_key_exists('SPECIALSKINLIST_HEAD', $templates) && !empty($templates['SPECIALSKINLIST_HEAD']) )\r
5443                         {\r
5444                                 $template['head'] = $templates['SPECIALSKINLIST_HEAD'];\r
5445                         }\r
5446                         else\r
5447                         {\r
5448                                 $template['head'] = "<ul>\n";\r
5449                         }\r
5450                         echo TEMPLATE::fill($template['head'], $data);\r
5451                         if ( array_key_exists('SPECIALSKINLIST_BODY', $templates) && !empty($templates['SPECIALSKINLIST_BODY']) )\r
5452                         {\r
5453                                 $template['body'] = $templates['SPECIALSKINLIST_BODY'];\r
5454                         }\r
5455                         else\r
5456                         {\r
5457                                 $template['body'] = '<li><a tabindex="<%tabindex%>" href="index.php?action=skinedittype&amp;skinid=<%skinid%>'\r
5458                                                                   . '&amp;type=<%skintype%>"><%skintype%></a> (<a tabindex="<%tabindex%>" href="index.php?'\r
5459                                                                   . 'action=skinremovetype&amp;skinid=<%skinid%>&amp;type=<%skintype%>">remove</a>)</li>';\r
5460                         }\r
5461                         $tabstart = 75;\r
5462                         while ( $row = sql_fetch_assoc($res) )\r
5463                         {\r
5464                                 $data = array(\r
5465                                         'tabindex' => $tabstart++,\r
5466                                         'skinid'   => $skinid,\r
5467                                         'skintype' => ENTITY::hsc(strtolower($row['stype']), ENT_QUOTES)\r
5468                                 );\r
5469                                 echo TEMPLATE::fill($template['body'], $data);\r
5470                         }\r
5471                         $data = array();\r
5472                         if (array_key_exists('SPECIALSKINLIST_FOOT', $templates) && !empty($templates['SPECIALSKINLIST_FOOT']) )\r
5473                         {\r
5474                                 $template['foot'] = $templates['SPECIALSKINLIST_FOOT'];\r
5475                         }\r
5476                         else\r
5477                         {\r
5478                                 $template['foot'] = "</ul>\n";\r
5479                         }\r
5480                         echo TEMPLATE::fill($template['foot'], $data);\r
5481                         return;\r
5482                 }\r
5483         }\r
5484         \r
5485         /**\r
5486          * Actions::parse_sprinttext()\r
5487          * Parse sprinttext\r
5488          * \r
5489          * @param       string  $which  \r
5490          * @param       string  $val    \r
5491          * @return      void\r
5492          */\r
5493         public function parse_sprinttext($which, $val)\r
5494         {\r
5495                 if ( !defined($which) )\r
5496                 {\r
5497                         $base = $which;\r
5498                 }\r
5499                 else\r
5500                 {\r
5501                         $base = constant($which);\r
5502                 }\r
5503                 \r
5504                 if ( preg_match('#[^<|%].*[^%|>]#', $val, $matchies) )\r
5505                 {\r
5506                         if ( !preg_match('#[(].*[^)]#', $matchies[0], $args) )\r
5507                         {\r
5508                                 $met = 'parse_' . $matchies[0];\r
5509                         }\r
5510                         else\r
5511                         {\r
5512                                 $arg = trim($args[0], '()');\r
5513                                 $met = 'parse_' . substr($matchies[0], 0, strpos($matchies[0], '('));\r
5514                         }\r
5515                         \r
5516                         if ( method_exists($this, $met) )\r
5517                         {\r
5518                                 $value = call_user_func(array(&$this, $met), $arg);\r
5519                         }\r
5520                 }\r
5521                 \r
5522                 if ( !isset($value) || empty($value) )\r
5523                 {\r
5524                         $value = $val;\r
5525                 }\r
5526                 echo sprintf($base, $value);\r
5527                 return;\r
5528         }\r
5529         \r
5530         /**\r
5531          * Actions::parse_systemsettings()\r
5532          * Parse skinvar systemsettings\r
5533          * \r
5534          * @param       string  $type                   type of settings for system\r
5535          * @param       string  $templateName   name of template to use \r
5536          * @return      void\r
5537          */\r
5538         public function parse_systemsettings($type = 'phpinfo', $templateName = '')\r
5539         {\r
5540                 global $member, $CONF, $nucleus;\r
5541                 \r
5542                 $member->isAdmin() or $this->objAdmin->disallow();\r
5543                 \r
5544                 $enable  = _ADMIN_SYSTEMOVERVIEW_ENABLE;\r
5545                 $disable = _ADMIN_SYSTEMOVERVIEW_DISABLE;\r
5546                 \r
5547                 switch ( $type )\r
5548                 {\r
5549                         case 'phpversion':\r
5550                                 echo phpversion();\r
5551                                 break;\r
5552                         case 'sqlserverinfo':\r
5553                                 echo sql_get_server_info();\r
5554                                 break;\r
5555                         case 'sqlclientinfo':\r
5556                                 echo sql_get_client_info();\r
5557                                 break;\r
5558                         case 'magicquotesgpc':\r
5559                                 echo ini_get('magic_quotes_gpc') ? 'On' : 'Off';\r
5560                                 break;\r
5561                         case 'magicquotesruntime':\r
5562                                 echo ini_get('magic_quotes_runtime') ? 'On' : 'Off';\r
5563                                 break;\r
5564                         case 'registerglobals':\r
5565                                 echo ini_get('register_globals') ? 'On' : 'Off';\r
5566                                 break;\r
5567                         case 'gdinfo':\r
5568                                 $templates = array();\r
5569                                 if ( $templateName )\r
5570                                 {\r
5571                                         $templates = skinableTEMPLATE::read($templateName);\r
5572                                 }\r
5573                                 if ( array_key_exists('SYSTEMINFO_GDSETTINGS', $templates) && !empty($templates['SYSTEMINFO_GDSETTINGS']) )\r
5574                                 {\r
5575                                         $template = $templates['SYSTEMINFO_GDSETTINGS'];\r
5576                                 }\r
5577                                 else\r
5578                                 {\r
5579                                         $template = "<tr>\n\t\t" . '<td width="50%">' . "<%key%></td><td><%value%></td>\n</tr>\n";\r
5580                                 }\r
5581                                 \r
5582                                 $gdinfo = gd_info();\r
5583                                 \r
5584                                 foreach ( $gdinfo as $key => $value )\r
5585                                 {\r
5586                                         if ( is_bool($value) )\r
5587                                         {\r
5588                                                 $value = $value ? $enable : $disable;\r
5589                                         }\r
5590                                         else\r
5591                                         {\r
5592                                                 $value = ENTITY::hsc($value, ENT_QUOTES);\r
5593                                         }\r
5594                                         $data = array(\r
5595                                                 'key'   => $key,\r
5596                                                 'value' => $value,\r
5597                                         );\r
5598                                         echo TEMPLATE::fill($template, $data);\r
5599                                 }\r
5600                                 break;\r
5601                         case 'modrewrite':\r
5602                                 ob_start();\r
5603                                 phpinfo(INFO_MODULES);\r
5604                                 $im = ob_get_contents();\r
5605                                 ob_end_clean();\r
5606                                 echo (strstr($im, 'mod_rewrite') != '') ? $enable : $disable;\r
5607                                 break;\r
5608                         case 'nucleusversion':\r
5609                                 echo getNucleusVersion() / 100 . '(' . $nucleus['version'] . ')';\r
5610                                 break;\r
5611                         case 'nucleuspatchlevel':\r
5612                                 echo getNucleusPatchLevel();\r
5613                                 break;\r
5614                         case 'confself':\r
5615                                 echo $CONF['Self'];\r
5616                                 break;\r
5617                         case 'confitemurl':\r
5618                                 echo $CONF['ItemURL'];\r
5619                                 break;\r
5620                         case 'alertonheaderssent':\r
5621                                 echo $CONF['alertOnHeadersSent'] ? $enable : $disable;\r
5622                                 break;\r
5623                         case 'nucleuscodename':\r
5624                                 if ( $nucleus['codename'] != '' )\r
5625                                 {\r
5626                                         echo ' &quot;' . $nucleus['codename'] . '&quot;';\r
5627                                 }\r
5628                                 break;\r
5629                         case 'versioncheckurl':\r
5630                                 echo sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());\r
5631                                 break;\r
5632                 }\r
5633                 return;\r
5634         }\r
5635         \r
5636         /**\r
5637          * Actions::parse_templateoverview()\r
5638          * Parse skinvar templateoverview\r
5639          * \r
5640          * @param       string  $templateName   name of template to use\r
5641          * @return      void\r
5642          */\r
5643         public function parse_templateoverview($templateName = '')\r
5644         {\r
5645                 $query  = "SELECT * FROM %s ORDER BY tdname";\r
5646                 $query = sprintf($query, sql_table('template_desc'));\r
5647                 $template['content']  = 'templatelist';\r
5648                 $template['tabindex'] = 10;\r
5649                 skinableShowlist($query, 'table', $template, $templateName);\r
5650                 return;\r
5651         }\r
5652         \r
5653         /**\r
5654          * Actions::parse_versioncheckurl()\r
5655          * Parse skinvar versioncheckurl\r
5656          * \r
5657          * @param       void\r
5658          * @return      void\r
5659          */\r
5660         public function parse_versioncheckurl()\r
5661         {\r
5662                 echo sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());\r
5663                 return;\r
5664         }\r
5665         \r
5666         /**\r
5667          * Actions::parse_yrbloglist()\r
5668          * Parse skinvar yrbloglist\r
5669          * \r
5670          * @param       string  $templateName   name of template to use\r
5671          * @return      void\r
5672          */\r
5673         public function parse_yrbloglist($templateName = '')\r
5674         {\r
5675                 global $member;\r
5676                 $showAll = requestVar('showall');\r
5677                 \r
5678                 if ( $member->isAdmin() && ($showAll == 'yes') )\r
5679                 {\r
5680                         // Super-Admins have access to all blogs! (no add item support though)\r
5681                         $query =  "SELECT bnumber, bname, 1 as tadmin, burl, bshortname"\r
5682                                 . " FROM %s"\r
5683                                 . " ORDER BY bnumber";\r
5684                         $query = sprintf($query, sql_table('blog'));\r
5685                 }\r
5686                 else\r
5687                 {\r
5688                         $query =  "SELECT bnumber, bname, tadmin, burl, bshortname"\r
5689                                 . " FROM %s,%s"\r
5690                                 . " WHERE tblog=bnumber and tmember=%d"\r
5691                                 . " ORDER BY bnumber";\r
5692                         $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());\r
5693                 }\r
5694                 \r
5695                 $template['content']    = 'bloglist';\r
5696                 $template['superadmin'] = $member->isAdmin();\r
5697                 \r
5698                 $amount = skinableShowlist($query, 'table', $template, $templateName);\r
5699                 \r
5700                 if ( ($showAll != 'yes') && ($member->isAdmin()) )\r
5701                 {\r
5702                         $query = 'SELECT COUNT(*) as result FROM ' . sql_table('blog');\r
5703                         \r
5704                         $total = quickQuery($query);\r
5705                         if ( $total > $amount )\r
5706                         {\r
5707                                 echo '<p><a href="index.php?action=overview&amp;showall=yes">' . _OVERVIEW_SHOWALL . '</a></p>';\r
5708                         }\r
5709                 }\r
5710                 \r
5711                 if ( $amount == 0 )\r
5712                 {\r
5713                         echo _OVERVIEW_NOBLOGS;\r
5714                 }\r
5715                 elseif( $amount != 0 )\r
5716                 {\r
5717                         echo '<h2>' . _OVERVIEW_YRDRAFTS . '</h2>';\r
5718                         \r
5719                         $query =  "SELECT ititle, inumber, bshortname"\r
5720                                . " FROM %s,%s"\r
5721                                . ' WHERE iauthor=%d AND iblog=bnumber AND idraft=1';\r
5722                         $query = sprintf($query. sql_table('item'), sql_table('blog'), (integer) $member->getID());\r
5723                         \r
5724                         $template['content'] = 'draftlist';\r
5725                         \r
5726                         $amountdrafts = skinableShowlist($query, 'table', $template, $templateName);\r
5727                         if ( $amountdrafts == 0 )\r
5728                         {\r
5729                                 echo _OVERVIEW_NODRAFTS;\r
5730                         }\r
5731                 }\r
5732                 return;\r
5733         }\r
5734         \r
5735         /**\r
5736          * Actions::customHelp()\r
5737          * shows a link to custom help file\r
5738          * \r
5739          * @param       integer $id                     \r
5740          * @param       string  $tplName        \r
5741          * @param       string  $url            \r
5742          * @param       string  $iconURL        \r
5743          * @param       string  $alt            \r
5744          * @param       string  $title          \r
5745          * @param       $onclick\r
5746          * \r
5747          */\r
5748         private function customHelp($id, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')\r
5749         {\r
5750                 echo self::customHelpHtml($id, $tplName, $url, $iconURL, $alt, $title, $onclick);\r
5751         }\r
5752         \r
5753         /**\r
5754          * Actions::customHelpHtml()\r
5755          * \r
5756          * @param       integer $id                     \r
5757          * @param       string  $tplName        \r
5758          * @param       string  $url            \r
5759          * @param       string  $iconURL        \r
5760          * @param       string  $alt            \r
5761          * @param       string  $title          \r
5762          * @param       string  $onclick        \r
5763          * @return      string  anchor element with help uri\r
5764          */\r
5765         static public function customHelpHtml($id, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')\r
5766         {\r
5767                 $templates = array();\r
5768                 if ( $tplName )\r
5769                 {\r
5770                         $templates = skinableTEMPLATE::read($tplName);\r
5771                 }\r
5772                 if ( array_key_exists('ADMIN_CUSTOMHELPLINK_ICON', $templates) && !empty($templates['ADMIN_CUSTOMHELPLINK_ICON']) )\r
5773                 {\r
5774                         $template = $templates['ADMIN_CUSTOMHELPLINK_ICON'];\r
5775                 }\r
5776                 else\r
5777                 {\r
5778                         $template = '<img src="<%iconurl%>" <%width%><%height%>alt="<%alt%>" title="<%title%>" /></a>';\r
5779                 }\r
5780                 \r
5781                 if ( empty($iconURL) )\r
5782                 {\r
5783                         global $CONF;\r
5784                         $iconURL = $CONF['AdminURL'] . 'documentation/icon-help.gif';\r
5785                 }\r
5786                 if ( function_exists('getimagesize') )\r
5787                 {\r
5788                         $size   = getimagesize($iconURL);\r
5789                         $width  = 'width="'  . $size[0] . '" ';\r
5790                         $height = 'height="' . $size[1] . '" ';\r
5791                 }\r
5792                 $data = array(\r
5793                         'iconurl'       => $iconURL,\r
5794                         'width'         => $width,\r
5795                         'height'        => $height,\r
5796                         'alt'           => (isset($alt) && !empty($alt))         ? $alt   : _HELP_TT,\r
5797                         'title'         => (isset($title) && !empty($title)) ? $title : _HELP_TT,\r
5798                 );\r
5799                 $icon = TEMPLATE::fill($template, $data);\r
5800                 $help = self::customHelplink($id, $tplName, $url, $title, $onclick);\r
5801                 return $help . $icon;\r
5802         }\r
5803         \r
5804         /**\r
5805          * Actions::input_yesno\r
5806          * \r
5807          * @param               $name\r
5808          * @param               $checkedval\r
5809          * @param               $tabindex\r
5810          * @param               $value1\r
5811          * @param               $value2\r
5812          * @param               $yesval\r
5813          * @param               $noval\r
5814          * @param               $isAdmin\r
5815          * @param               $templateName\r
5816          * @param               $showlist\r
5817          */\r
5818         static function input_yesno($name,\r
5819                                                                 $checkedval,\r
5820                                                                 $tabindex        = 0,\r
5821                                                                 $value1    = 1,\r
5822                                                                 $value2    = 0,\r
5823                                                                 $yesval    = _YES,\r
5824                                                                 $noval          = _NO,\r
5825                                                                 $isAdmin          = 0,\r
5826                                                                 $templateName = '',\r
5827                                                                 $showlist        = false)\r
5828         {\r
5829                 $templates = array();\r
5830                 if ( $templateName )\r
5831                 {\r
5832                         $templates = skinableTEMPLATE::read($templateName);\r
5833                 }\r
5834                 \r
5835                 if ( $name == 'admin' )\r
5836                 {\r
5837                         if ( array_key_exists('INPUTYESNO_TEMPLATE_ADMIN', $templates) && !empty($templates['INPUTYESNO_TEMPLATE_ADMIN']) )\r
5838                         {\r
5839                                 $template = $templates['INPUTYESNO_TEMPLATE_ADMIN'];\r
5840                         }\r
5841                         else\r
5842                         {\r
5843                                 $template = '<input onclick="selectCanLogin(true);" type="radio" name="<%name%>" value="<%yesval%>" <%yescheckedval%> id="<%yesid%>" />' . "\n"\r
5844                                           . '<label for="<%yesid%>"><%yesvaltext%></label>' . "\n"\r
5845                                           . '<input onclick="selectCanLogin(false);" type="radio" name="<%name%>" value="<%noval%>" <%nocheckedval%> id="<%noid%>"<%disabled%> />' . "\n"\r
5846                                           . '<label for="<%noid%>"><%novaltext%></label>' . "\n";\r
5847                         }\r
5848                 }\r
5849                 else\r
5850                 {\r
5851                         if ( array_key_exists('INPUTYESNO_TEMPLATE_NORMAL', $templates) && !empty($templates['INPUTYESNO_TEMPLATE_NORMAL']) )\r
5852                         {\r
5853                                 $template = $templates['INPUTYESNO_TEMPLATE_NORMAL'];\r
5854                         }\r
5855                         if ( $showlist )\r
5856                         {\r
5857                                 if ( array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO', $templates) && !empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO']) )\r
5858                                 {\r
5859                                         $template = $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO'];\r
5860                                 }\r
5861                         }\r
5862                         if ( !isset($template) )\r
5863                         {\r
5864                                 $template = '<input type="radio" name="<%name%>" value="<%yesval%>" <%yescheckedval%> id="<%yesid%>" />' . "\n"\r
5865                                           . '<label for="<%yesid%>"><%yesvaltext%></label>' . "\n"\r
5866                                           . '<input type="radio" name="<%name%>" value="<%noval%>" <%nocheckedval%> id="<%noid%>"<%disabled%> />' . "\n"\r
5867                                           . '<label for="<%noid%>"><%novaltext%></label>' . "\n";\r
5868                         }\r
5869                 }\r
5870                 \r
5871                 //echo $template;\r
5872                 $id             = ENTITY::hsc($name);\r
5873                 $id             = str_replace('[', '-', $id);\r
5874                 $id             = str_replace(']', '-', $id);\r
5875                 $id1    = $id . ENTITY::hsc($value1);\r
5876                 $id2    = $id . ENTITY::hsc($value2);\r
5877                 $dat = array(\r
5878                         'name'            => ENTITY::hsc($name),\r
5879                         'yesval'                => ENTITY::hsc($value1),\r
5880                         'noval'          => ENTITY::hsc($value2),\r
5881                         'yesid'          => $id1,\r
5882                         'noid'            => $id2,\r
5883                         'yesvaltext'    => $yesval,\r
5884                         'novaltext'      => $noval,\r
5885                         'yescheckedval' => ($checkedval == $value1) ? ' checked="checked" tabindex="' . $tabindex . '"': '',\r
5886                         'nocheckedval'  => ($checkedval != $value1) ? ' checked="checked" tabindex="' . $tabindex . '"': '',\r
5887                         'disabled'        => ($isAdmin && $name == 'canlogin') ? ' disabled="disabled"' : '',\r
5888                 );\r
5889                 \r
5890                 if ( $showlist )\r
5891                 {\r
5892                         return skinableTEMPLATE::fill($template, $dat);\r
5893                 }\r
5894                 else\r
5895                 {\r
5896                         echo TEMPLATE::fill($template, $dat);\r
5897                 }\r
5898                 return;\r
5899         }\r
5900 }\r