2 if ( !class_exists('BaseActions') )
4 include $DIR_LIBS . 'BaseActions.php';
8 class AdminActions extends BaseActions
12 /* NOTE: list of whole available action names for tags
22 'adminskineditallowedlist',
25 'adminskinselectoptions',
26 'adminspecialskinlist',
27 'admintemplateoverview',
28 'allowedadminskinactions',
50 'configsettingsyesno',
52 'createaccountsuccess',
53 'createaccountdisable',
56 'defaultadminskintypes',
66 'editadmintemplateinfo',
72 'editplugoptionslist',
92 'listplugplugoptionrow',
93 'localeselectoptions',
110 'selectlocaladminskinfiles',
111 'selectlocalskinfiles',
112 'skineditallowedlist',
129 * AdminActions::$default_actions
130 * list of whole action names with which this class can deal
132 static private $default_actions = array(
156 * AdminActions::$skin_type_friendly_names
157 * friendly name for wrapped page types
159 static private $default_skin_types = array(
160 'actionlog' => _ADM_SKPRT_ACTIONLOG,
161 'activate' => _ADM_SKPRT_ACTIVATE,
162 'activatesetpwd' => _ADM_SKPRT_ACTIVATESETPWD,
163 'addnewlog' => _ADM_SKPRT_ADDNEWLOG,
164 'adminerrorpage' => _ADM_SKPRT_ADMINERRORPAGE,
165 'adminskindelete' => _ADM_SKPRT_ADMINSKINDELETE,
166 'adminskinedit' => _ADM_SKPRT_ADMINSKINEDIT,
167 'adminskinedittype' => _ADM_SKPRT_ADMINSKINEDITTYPE,
168 'adminskiniedoimport' => _ADM_SKPRT_ADMINSKINIEDOIMPORT,
169 'adminskinieimport' => _ADM_SKPRT_ADMINSKINIEIMPORT,
170 'adminskinieoverview' => _ADM_SKPRT_ADMINSKINIEOVERVIEW,
171 'adminskinoverview' => _ADM_SKPRT_ADMINSKINOVERVIEW,
172 'adminskinremovetype' => _ADM_SKPRT_ADMINSKINREMOVETYPE,
173 'admintemplatedelete' => _ADM_SKPRT_ADMINTEMPLATEDELETE,
174 'admintemplateedit' => _ADM_SKPRT_ADMINTEMPLATEEDIT,
175 'admntemplateoverview' => _ADM_SKPRT_ADMINTEMPLATEOVERVIEW,
176 'backupoverview' => _ADM_SKPRT_BACKUPOVERVIEW,
177 'backuprestore' => _ADM_SKPRT_BACKUPRESTORE,
178 'banlist' => _ADM_SKPRT_BANLIST,
179 'banlistdelete' => _ADM_SKPRT_BANLISTDELETE,
180 'banlistdeleteconfirm' => _ADM_SKPRT_BANLISTDELETECONFIRM,
181 'banlistnew' => _ADM_SKPRT_BANLISTNEW,
182 'batchcategory' => _ADM_SKPRT_BATCHCATEGORY,
183 'batchcomment' => _ADM_SKPRT_BATCHCOMMENT,
184 'batchdelete' => _ADM_SKPRT_BATCHDELETE,
185 'batchitem' => _ADM_SKPRT_BATCHITEM,
186 'batchmember' => _ADM_SKPRT_BATCHMEMBER,
187 'batchmove' => _ADM_SKPRT_BATCHMOVE,
188 'batchmovecat' => _ADM_SKPRT_BATCHMOVECAT,
189 'batchteam' => _ADM_SKPRT_BATCHTEAM,
190 'blogcommentlist' => _ADM_SKPRT_BLOGCOMMENTLIST,
191 'blogsettings' => _ADM_SKPRT_BLOGSETTINGS,
192 'bookmarklet' => _ADM_SKPRT_BOOKMARKLET,
193 'browseowncomments' => _ADM_SKPRT_BROWSEOWNCOMMENTS,
194 'browseownitems' => _ADM_SKPRT_BROWSEOWNITEMS,
195 'categorydelete' => _ADM_SKPRT_CATEGORYDELETE,
196 'categoryedit' => _ADM_SKPRT_CATEGORYEDIT,
197 'commentdelete' => _ADM_SKPRT_COMMENTDELETE,
198 'commentedit' => _ADM_SKPRT_COMMENTEDIT,
199 'createitem' => _ADM_SKPRT_CREATEITEM,
200 'createnewlog' => _ADM_SKPRT_CREATENEWLOG,
201 'createaccountinput' => _ADM_SKPRT_CREATEACCOUNTINPUT, /* not yet */
202 'createaccountsuccess' => _ADM_SKPRT_CREATEACCOUNTSUCCESS, /* not yet */
203 'createaccountdisable' => _ADM_SKPRT_CREATEACCOUNTDISALLOWED, /* not yet */
204 'deleteblog' => _ADM_SKPRT_DELETEBLOG,
205 'editmembersettings' => _ADM_SKPRT_EDITMEMBERSETTINGS,
206 'forgotpassword' => _ADM_SKPRT_FORGOTPASSWORD, /* not yet */
207 'itemcommentlist' => _ADM_SKPRT_ITEMCOMMENTLIST,
208 'itemdelete' => _ADM_SKPRT_ITEMDELETE,
209 'itemedit' => _ADM_SKPRT_ITEMEDIT,
210 'itemlist' => _ADM_SKPRT_ITEMLIST,
211 'itemmove' => _ADM_SKPRT_ITEMMOVE,
212 'login' => FALSE, //missing
213 'manage' => _ADM_SKPRT_MANAGE,
214 'manageteam' => _ADM_SKPRT_MANAGETEAM,
215 'memberdelete' => _ADM_SKPRT_MEMBERDELETE,
216 'memberedit' => FALSE, //missing
217 'overview' => _ADM_SKPRT_OVERVIEW,
218 'pagefoot' => _ADM_SKPRT_PAGEFOOT,
219 'pagehead' => _ADM_SKPRT_PAGEHEAD,
220 'plugindelete' => _ADM_SKPRT_PLUGINDELETE,
221 'pluginhelp' => _ADM_SKPRT_PLUGINHELP,
222 'pluginlist' => _ADM_SKPRT_PLUGINLIST,
223 'pluginoptions' => _ADM_SKPRT_PLUGINOPTIONS,
224 'settingsedit' => _ADM_SKPRT_SETTINGSEDIT,
225 'showlogin' => _ADM_SKPRT_SHOWLOGIN,
226 'skindelete' => _ADM_SKPRT_SKINDELETE,
227 'skinedit' => _ADM_SKPRT_SKINEDIT,
228 'skinedittype' => _ADM_SKPRT_SKINEDITTYPE,
229 'skiniedoimport' => _ADM_SKPRT_SKINIEDOIMPORT,
230 'skinieimport' => _ADM_SKPRT_SKINIEIMPORT,
231 'skinieoverview' => _ADM_SKPRT_SKINIEOVERVIEW,
232 'skinoverview' => _ADM_SKPRT_SKINOVERVIEW,
233 'skinremovetype' => _ADM_SKPRT_SKINREMOVETYPE,
234 'systemoverview' => _ADM_SKPRT_SYSTEMOVERVIEW,
235 'teamdelete' => _ADM_SKPRT_TEAMDELETE,
236 'templatedelete' => _ADM_SKPRT_TEMPLATEDELETE,
237 'templateedit' => _ADM_SKPRT_TEMPLATEEDIT,
238 'templateoverview' => _ADM_SKPRT_TEMPLATEOVERVIEW,
239 'usermanagement' => _ADM_SKPRT_USERMANAGEMENT,
243 * AdminActions::getAvailableSkinTypes()
247 * @return array list of friendly names for page actions
249 static public function getAvailableSkinTypes()
251 return self::$default_skin_types;
255 * AdminActions::getDefaultTypes()
259 * @return array list of friendly names for page actions
261 static public function getDefaultTypes()
263 return self::$default_skin_types;
267 * AdminActions::__construct()
268 * Constructor for a new Actions object
270 * @param string $type
273 public function __construct($type)
275 // call constructor of superclass first
276 parent::__construct();
277 $this->skintype = $type;
278 if ( !class_exists('Navlist') || !class_exists('Batch') )
281 include $DIR_LIBS . 'ENCAPSULATE.php';
287 * AdminActions::getAvailableActions()
290 * @return array allowed actions for the page type
292 public function getAvailableActions()
294 $extra_actions = array();
296 switch ( $this->skintype )
299 $extra_actions = array(
304 $extra_actions = array(
309 case 'activatesetpwd':
310 $extra_actions = array(
314 $extra_actions = array(
320 case 'adminerrorpage':
321 $extra_actions = array(
324 case 'adminskindelete':
325 $extra_actions = array(
329 case 'adminskinedit':
330 $extra_actions = array(
332 'defaultadminskintypes',
333 'adminspecialskinlist',
336 case 'adminskinedittype':
337 $extra_actions = array(
340 'allowedadminskinactions',
341 'adminskineditallowedlist',
344 case 'adminskiniedoimport':
345 $extra_actions = array(
349 case 'adminskinieimport':
350 $extra_actions = array(
354 case 'adminskinieoverview':
355 $extra_actions = array(
356 'selectlocaladminskinfiles',
360 case 'adminskinoverview':
361 $extra_actions = array(
365 case 'adminskinremovetype':
366 $extra_actions = array(
370 case 'admintemplatedelete':
371 $extra_actions = array(
372 'editadmintemplateinfo',
374 case 'admintemplateedit':
375 $extra_actions = array(
376 'editadmintemplateinfo',
379 case 'admntemplateoverview':
380 $extra_actions = array(
381 'admintemplateoverview',
384 case 'backupoverview':
385 $extra_actions = array(
388 case 'backuprestore':
389 $extra_actions = array(
393 $extra_actions = array(
399 case 'banlistdelete':
400 $extra_actions = array(
405 case 'banlistdeleteconfirm':
406 $extra_actions = array(
407 'banlistdeletedlist',
412 $extra_actions = array(
418 case 'batchcategory':
419 $extra_actions = array(
425 $extra_actions = array(
431 $extra_actions = array(
437 $extra_actions = array(
443 $extra_actions = array(
449 $extra_actions = array(
458 $extra_actions = array(
467 $extra_actions = array(
473 case 'blogcommentlist':
474 $extra_actions = array(
481 $extra_actions = array(
497 $extra_actions = array(
501 case 'browseowncomments':
502 $extra_actions = array(
506 case 'browseownitems':
507 $extra_actions = array(
511 case 'categorydelete':
512 $extra_actions = array(
518 $extra_actions = array(
525 case 'commentdelete':
526 $extra_actions = array(
531 $extra_actions = array(
535 case 'createaccountinput':
536 $extra_actions = array(
542 case 'createaccountsuccess':
543 $extra_actions = array(
\r
547 case 'createaccountdisable':
548 $extra_actions = array(
553 $extra_actions = array(
565 $extra_actions = array(
571 $extra_actions = array(
576 case 'editmembersettings':
577 $extra_actions = array(
578 'adminskinselectoptions',
580 'localeselectoptions',
584 case 'forgotpassword':
585 $extra_actions = array(
589 case 'itemcommentlist':
590 $extra_actions = array(
596 $extra_actions = array(
603 $extra_actions = array(
615 $extra_actions = array(
622 $extra_actions = array(
628 $extra_actions = array(
632 $extra_actions = array(
641 $extra_actions = array(
646 $extra_actions = array(
651 $extra_actions = array(
656 $extra_actions = array(
662 $extra_actions = array(
667 case 'pluginoptions':
668 $extra_actions = array(
670 'editplugoptionslist',
674 $extra_actions = array(
677 'configsettingsedit',
678 'configsettingsyesno',
681 'localeselectoptions',
687 $extra_actions = array(
692 $extra_actions = array(
697 $extra_actions = array(
703 $extra_actions = array(
706 'allowedskinactions',
707 'skineditallowedlist',
708 'skineditallowedlist',
711 case 'skiniedoimport':
712 $extra_actions = array(
717 $extra_actions = array(
721 case 'skinieoverview':
722 $extra_actions = array(
723 'selectlocalskinfiles',
728 $extra_actions = array(
732 case 'skinremovetype':
733 $extra_actions = array(
737 case 'systemoverview':
738 $extra_actions = array(
743 $extra_actions = array(
749 case 'templatedelete':
750 $extra_actions = array(
755 $extra_actions = array(
759 case 'templateoverview':
760 $extra_actions = array(
764 case 'usermanagement':
765 $extra_actions = array(
771 $extra_actions = array(
780 'selectlocaladminskinfiles',
788 $defined_actions = array_merge(self::$default_actions, $extra_actions);
790 return array_merge($defined_actions, parent::getAvailableActions());
794 * AdminActions::parse_actionloglist()
795 * Parse skinvar actionloglist
797 * @param string $templateName name of template to use
800 public function parse_actionloglist($templateName = '')
802 $query = "SELECT * FROM %s ORDER BY timestamp DESC";
803 $query = sprintf($query, sql_table('actionlog'));
805 $template['content'] = 'actionlist';
806 $amount = showlist($query, 'table', $template, $templateName);
812 * AdminActions::parse_activationmessage()
813 * Parse skinvar activationmessage
815 * @param string $type type of message
816 * @param string $templateName name of template to use
819 public function parse_activationmessage($type, $templateName = '')
821 global $CONF, $manager;
825 if ( !empty($templateName))
827 $template =& $manager->getTemplate($templateName);
830 $key = postVar('ackey');
833 Admin::error(_ERROR_ACTIVATE);
836 $info = MEMBER::getActivationInfo($key);
839 Admin::error(_ERROR_ACTIVATE);
842 $mem =& $manager->getMember($info->vmember);
845 Admin::error(_ERROR_ACTIVATE);
847 switch ( $info->vtype )
850 if ( array_key_exists('ACTIVATE_FORGOT_TITLE', $template) && !empty($template['ACTIVATE_FORGOT_TITLE']) )
852 $title = $template['ACTIVATE_FORGOT_TITLE'];
856 $title = _ACTIVATE_FORGOT_TITLE;
858 if ( array_key_exists('ACTIVATE_FORGOT_TEXT', $template) && !empty($template['ACTIVATE_FORGOT_TEXT']) )
860 $text = $template['ACTIVATE_FORGOT_TEXT'];
864 $text = _ACTIVATE_FORGOT_TEXT;
868 if ( array_key_exists('ACTIVATE_REGISTER_TITLE', $template) && !empty($template['ACTIVATE_REGISTER_TITLE']) )
870 $title = $template['ACTIVATE_REGISTER_TITLE'];
874 $title = _ACTIVATE_REGISTER_TITLE;
876 if ( array_key_exists('ACTIVATE_REGISTER_TEXT', $template) && !empty($template['ACTIVATE_REGISTER_TEXT']) )
878 $text = $template['ACTIVATE_REGISTER_TEXT'];
882 $text = _ACTIVATE_REGISTER_TEXT;
885 case 'addresschange':
886 if ( array_key_exists('ACTIVATE_CHANGE_TITLE', $template) && !empty($template['ACTIVATE_CHANGE_TITLE']) )
888 $title = $template['ACTIVATE_CHANGE_TITLE'];
892 $title = _ACTIVATE_CHANGE_TITLE;
894 if (array_key_exists('ACTIVATE_CHANGE_TEXT', $template) && !empty($template['ACTIVATE_CHANGE_TEXT']))
896 $text = $template['ACTIVATE_CHANGE_TEXT'];
900 $text = _ACTIVATE_CHANGE_TEXT;
905 'memberName' => Entity::hsc($mem->getDisplayName()),
906 'realName' => Entity::hsc($mem->getRealName()),
911 echo Template::fill($title, $aVars);
914 echo Template::fill($text, $aVars);
917 echo Entity::hsc($key);
924 * AdminActions::parse_addtickettourl()
925 * Parse skinvar addtickettourl
927 * @param string $url URI for ticket
930 public function parse_addtickettourl($url)
933 $url = $manager->addTicketToUrl($url);
934 echo Entity::hsc($url);
939 * AdminActions::parse_adminbanlist()
940 * Parse skinvar adminbanlist
942 * @param string $templateName name of template to use
945 public function parse_adminbanlist($templateName = '')
947 $blogid = intRequestVar('blogid');
949 $query = "SELECT * FROM %s WHERE blogid=%d ORDER BY iprange;";
950 $query = sprintf($query, sql_table('ban'), (integer) $blogid);
952 $template['content'] = 'banlist';
954 $amount = Showlist($query, 'table', $template, $templateName);
964 * AdminActions::parse_adminbatchaction()
965 * Parse skinvar adminbatchaction
970 public function parse_adminbatchaction()
972 echo Entity::hsc(requestVar('batchaction'));
977 * AdminActions::parse_adminbatchlist()
978 * Parse skinvar adminbatchlist
980 * @param string $templateName name of template to use
983 public function parse_adminbatchlist($templateName = '')
986 $templates = array();
988 if ( !empty($templateName) )
990 $templates =& $manager->getTemplate($templateName);
993 if ( !array_key_exists('ADMIN_BATCHLIST', $templates) || empty($templates['ADMIN_BATCHLIST']) )
995 $template = '<li><%text(_BATCH_EXECUTING)%> '
996 . '<b><%adminbatchaction%></b> '
997 . '<%batchlisttype%> '
998 . '<b><%batchid%></b>... '
999 . '<b><%batchlistmsg%></b>'
1004 $template = $templates['ADMIN_BATCHLIST'];
1007 $selected = requestIntArray('batch');
1008 $action = requestVar('batchaction');
1010 switch ( $this->skintype )
1013 $batchlisttype = _BATCH_ONITEM;
1014 $deleteaction = 'deleteOneItem';
1015 $moveaction = 'moveOneItem';
1016 $destid = intRequestVar('destcatid');
1018 case 'batchcomment':
1019 $batchlisttype = _BATCH_ONCOMMENT;
1020 $deleteaction = 'deleteOneComment';
1023 $batchlisttype = _BATCH_ONMEMBER;
1024 $deleteaction = 'deleteOneMember';
1025 $setadminsql = sql_table('member') . ' SET madmin = 1 WHERE mnumber = ';
1026 $unsetchksql = 'SELECT * FROM ' . sql_table('member') . ' WHERE madmin = 1 AND mcanlogin = 1';
1027 $unsetupsql = sql_table('member') . ' SET madmin = 0 WHERE mnumber = ';
1028 $unseterrmsg = _ERROR_ATLEASTONEADMIN;
1031 $blogid = intRequestVar('blogid');
1032 $batchlisttype = _BATCH_ONTEAM;
1033 $deleteaction = 'deleteOneTeamMember';
1034 $setadminsql = sql_table('team') . ' SET tadmin = 1 WHERE tblog = ' . $blogid . ' AND tmember = ';
1035 $unsetchksql = 'SELECT * FROM ' . sql_table('team') . ' WHERE tadmin = 1 AND tblog = ' . $blogid;
1036 $unseterrmsg = _ERROR_ATLEASTONEBLOGADMIN;
1037 $unsetupsql = sql_table('team') . ' SET tadmin = 0 WHERE tblog = ' . $blogid . ' AND tmember = ';
1039 case 'batchcategory':
1040 $batchlisttype = _BATCH_ONCATEGORY;
1041 $deleteaction = 'deleteOneCategory';
1042 $moveaction = 'moveOneCategory';
1043 $destid = intRequestVar('destblogid');
1047 // walk over all selectedids and perform action
1048 foreach ( $selected as $selectedid )
1051 $selectedid = intval($selectedid);
1055 if ( $this->skintype != 'batchteam' )
1057 $error = call_user_func_array(array('Admin', $deleteaction), array($selectedid));
1061 $error = Admin::deleteOneTeamMember($blogid, $selectedid);
1065 $error = call_user_func_array(array('Admin', $moveaction), array($selectedid, $destid));
1069 DB::execute("UPDATE {$setadminsql} {$selectedid};");
1073 // there should always remain at least one super-admin
1074 $r = DB::getResult($unsetchksql);
1075 if ( $r->rowCount() < 2 )
1077 $error = $unseterrmsg;
1081 DB::execute("UPDATE {$unsetupsql} {$selectedid};");
1085 $error = _BATCH_UNKNOWN . Entity::hsc($action);
1089 'batchid' => $selectedid,
1090 'batchlisttype' => Entity::hsc($batchlisttype),
1091 'adminbatchaction' => Entity::hsc($action),
1092 'batchlistmsg' => $error ? $error : _BATCH_SUCCESS,
1095 $handler = new AdminActions('template');
1096 $parser = new Parser($handler);
1098 $output = Template::fill($template, $data);
1100 $parser->parse($output);
1101 $output = ob_get_contents();
1103 echo "{$output}<br />";
1109 * AdminActions::parse_adminbloglink()
1110 * Parse skinvar adminbloglink
1112 * @param string $templateName name of template to use
1115 public function parse_adminbloglink($templateName = '')
1118 $blogid = intRequestVar('blogid');
1119 $blog =& $manager->getBlog($blogid);
1120 $templates = array();
1122 if ( !empty($templateName) )
1124 $templates =& $manager->getTemplate($templateName);
1127 if ( !array_key_exists('ADMIN_BLOGLINK', $templates) || empty($templates['ADMIN_BLOGLINK']) )
1129 $template = '<a href="<%url%>" title="<%adminbloglinktitle%>"><%blogname%></a>';
1133 $template = $templates['ADMIN_BLOGLINK'];
1137 'url' => Entity::hsc($blog->getURL()),
1138 'adminbloglinktitle' => _BLOGLIST_TT_VISIT,
1139 'blogname' => Entity::hsc($blog->getName())
1142 echo Template::fill($template, $data);
1147 * AdminActions::parse_adminerrormesg()
1148 * Parse skinvar adminerrormesg
1153 public function parse_adminerrormesg()
1158 if ( requestVar('errormessage') )
1160 $message = requestVar('errormessage');
1162 elseif ( cookieVar($CONF['CookiePrefix'] . 'errormessage') )
1164 $message = cookieVar($CONF['CookiePrefix'] . 'errormessage');
1166 elseif ( Admin::sessionVar($CONF['CookiePrefix'] . 'errormessage') )
1168 $message = Admin::sessionVar($CONF['CookiePrefix'] . 'errormessage');
1170 echo Entity::hsc($message);
1175 * AdminActions::parse_adminskineditallowedlist()
1176 * Parse skinvar adminskineditallowedlist
1178 * @param string $type template/blog
1179 * @param string $templateName name of template to use
1182 public function parse_adminskineditallowedlist($type = 'template', $templateName = '')
1186 /* TODO: blog seems not to be used */
1188 $query = "SELECT bshortname, bname FROM %s";
1189 $query = sprintf($query, sql_table('blog'));
1191 'content' => 'shortblognames'
1193 Showlist($query, 'table', $show, $templateName);
1196 $query = "SELECT tdname as name, tddesc as description FROM %s WHERE tdname LIKE 'admin/%%'";
1197 $query = sprintf($query, sql_table('template_desc'));
1199 'content' => 'shortnames'
1201 Showlist($query, 'table', $show, $templateName);
1208 * AdminActions::parse_adminskinielist()
1209 * Parse skinvar adminskinielist
1211 * @param string $type skin/template
1212 * @param string $templateName name of template to use
1215 public function parse_adminskinielist($type, $templateName = '')
1219 $templates = array();
1220 if ( $templateName )
1222 $templates =& $manager->getTemplate($templateName);
1225 if ( !array_key_exists('SKINIE_EXPORT_LIST', $templates) || empty($templates['SKINIE_EXPORT_LIST']) )
1228 . "<input type=\"checkbox\" name=\"<%typeid%>\" id=\"<%expid%>\" />\n"
1229 . "<label for=\"<%expid%>\"><%expname%></label>"
1231 . "<td><%expdesc%></td>\n"
1237 $template = $templates['SKINIE_EXPORT_LIST'];
1243 $query = "SELECT * FROM %s WHERE sdname LIKE 'admin/%%';";
1244 $query = sprintf($query, sql_table('skin_desc'));
1245 $res = DB::getResult($query);
1247 foreach ( $res as $row )
1250 'typeid' => 'skin[' . $row['sdnumber'] . ']',
1251 'expid' => 'skinexp' . $row['sdnumber'],
1252 'expname' => Entity::hsc($row['sdname']),
1253 'expdesc' => Entity::hsc($row['sddesc']),
1255 echo Template::fill($template, $data);
1259 $query = "SELECT * FROM %s WHERE tdname LIKE 'admin/%%';";
1260 $query = sprintf($query, sql_table('template_desc'));
1261 $res = DB::getResult($query);
1262 foreach ( $res as $row )
1265 'typeid' => 'template[' . $row['tdnumber'] . ']',
1266 'expid' => 'templateexp' . $row['tdnumber'],
1267 'expname' => Entity::hsc($row['tdname']),
1268 'expdesc' => Entity::hsc($row['tddesc']),
1270 echo Template::fill($template, $data);
1278 * AdminActions::parse_adminskinoverview()
1279 * Parse skinvar adminskinoverview
1281 * @param string $templateName name of template to use
1284 public function parse_adminskinoverview($templateName = '')
1286 $query = "SELECT * FROM %s WHERE sdname LIKE 'admin/%%' ORDER BY sdname;";
1287 $query = sprintf($query, sql_table('skin_desc'));
1289 $template['content'] = 'adminskinlist';
1290 $template['tabindex'] = 10;
1291 $template['friendly_names'] = $this->parser->skin->getAvailableTypes();
1292 Showlist($query, 'table', $template, $templateName);
1297 * AdminActions::parse_adminskinselectoptions()
1298 * Parse skinvar adminskinselectoptions
1303 public function parse_adminskinselectoptions($templateName = '')
1306 $query = "SELECT sdname as text, sdnumber as value FROM %s WHERE sdname LIKE 'admin/%%';";
1307 $query = sprintf($query, sql_table('skin_desc'));
1309 $template['name'] = 'adminskin';
1310 $template['selected'] = $CONF['AdminSkin'];
1311 $template['tabindex'] = 110;
1312 Showlist($query, 'select', $template, $templateName);
1317 * AdminActions::parse_adminspecialskinlist()
1318 * Parse skinvar adminspecialskinlist
1320 * @param string $templateName name of template to use
1322 public function parse_adminspecialskinlist($templateName = '')
1326 $templates = array();
1327 if ( $templateName )
1329 $templates =& $manager->getTemplate($templateName);
1332 $nType = $this->parser->skin->getAvailableTypes();
1333 $skinid = intRequestVar('skinid');
1335 $query = "SELECT stype FROM %s WHERE stype NOT IN (%s) AND sdesc=%d;";
1336 $query = sprintf($query, sql_table('skin'), "'" . implode("', '", $nType) . "'", (integer) $skinid);
1338 $res = DB::getResult($query);
1339 if ( $res && $res->rowCount() > 0 )
1341 /* NOTE: set templates for HEAD/BODY/FOOT */
1342 if ( !array_key_exists('ADMIN_SPECIALSKINLIST_HEAD', $templates) || empty($templates['ADMIN_SPECIALSKINLIST_HEAD']) )
1344 $template['head'] = "<ul>\n";
1348 $template['head'] = $templates['ADMIN_SPECIALSKINLIST_HEAD'];
1350 if ( !array_key_exists('ADMIN_SPECIALSKINLIST_BODY', $templates) || empty($templates['ADMIN_SPECIALSKINLIST_BODY']) )
1352 $template['body'] = '<li>'
1353 . '<a tabindex="<%tabindex%>" href="index.php?action=adminskinedittype&skinid=<%skinid%>&type=<%skintype%>">'
1356 . '(<a tabindex="<%tabindex%>" href="index.php?action=adminskinremovetype&skinid=<%skinid%>&type=<%skintype%>">'
1363 $template['body'] = $templates['ADMIN_SPECIALSKINLIST_BODY'];
1365 if ( !array_key_exists('ADMIN_SPECIALSKINLIST_FOOT', $templates) || empty($templates['ADMIN_SPECIALSKINLIST_FOOT']) )
1367 $template['foot'] = "</ul>\n";
1371 $template['foot'] = $templates['ADMIN_SPECIALSKINLIST_FOOT'];
1378 echo $template['head'];
1379 foreach ( $res as $row )
1382 'tabindex' => $tabstart++,
1383 'skinid' => $skinid,
1384 'skintype' => Entity::hsc(strtolower($row['stype']))
1386 echo Template::fill($template['body'], $data);
1389 echo $template['foot'];
1395 * AdminActions::parse_admintemplateoverview()
1396 * Parse skinvar admintemplateoverview
1398 * @param string $templateName name of template to use
1401 public function parse_admintemplateoverview($templateName = '')
1403 $query = "SELECT * FROM %s WHERE tdname LIKE 'admin/%%' ORDER BY tdname;";
1404 $query = sprintf($query, sql_table('template_desc'));
1406 $template['content'] = 'admintemplatelist';
1407 $template['tabindex'] = 10;
1409 Showlist($query, 'table', $template, $templateName);
1414 * AdminActions::parse_allowedadminskinactions()
1415 * Parse skinvar allowedadminskinactions
1420 public function parse_allowedadminskinactions()
1422 global $DIR_ADMINSKINS;
1423 $skinType = strtolower(trim(requestVar('type')));
1424 $actions = $this->parser->skin->getAllowedActionsForType($skinType);
1427 while ( $current = array_shift($actions) )
1429 // TODO: remove this
1430 // skip deprecated vars
1431 if ($current == 'ifcat' || $current == 'imagetext' || $current == 'vars')
1436 echo helplink("adminskinvar-{$current}") . "$current</a>\n";
1438 if ( count($actions) != 0 )
1447 * AdminActions::parse_allowedskinactions()
1448 * Parse skinvar allowedskinactions
1453 public function parse_allowedskinactions()
1455 $skinType = strtolower(trim(requestVar('type')));
1456 $skinid = intRequestVar('skinid');
1458 $skin = new Skin($skinid);
1459 $actions = $skin->getAllowedActionsForType($skinType);
1462 while ( $current = array_shift($actions) )
1464 // TODO: remove this
1465 // skip deprecated vars
1466 if ( $current == 'ifcat' || $current == 'imagetext' || $current == 'vars' )
1471 /* TODO: alternative function should be used or not? */
1472 echo helplink("skinvar-{$current}") . "$current</a>\n";
1474 if ( count($actions) != 0 )
1483 * AdminActions::parse_banlistdeletedlist()
1484 * Parse skinvar banlistdeletedlist
1486 * @param string $templateName name of template to use
1489 public function parse_banlistdeletedlist($templateName = '')
1493 $templates = array();
1494 if ( $templateName )
1496 $templates =& $manager->getTemplate($templateName);
1499 if ( !array_key_exists('BANLIST_DELETED_LIST', $templates) || empty($templates['BANLIST_DELETED_LIST']) )
1501 $template = "<li><%blogname%></li>\n";
1505 $template = $templates['BANLIST_DELETED_LIST'];
1508 $deleted = requestArray('delblogs');
1509 foreach ( $deleted as $delblog )
1511 $blog =& $manager->getBlog($delblog);
1513 'blogname' => Entity::hsc($blog->getName())
1515 echo Template::fill($template, $data);
1522 * AdminActions::parse_batchdeletelist()
1523 * Parse skinvar batchdeletelist
1528 public function parse_batchdeletelist()
1530 $selected = requestIntArray('batch');
1533 foreach ( $selected as $select )
1535 echo '<input type="hidden" name="batch[' . ($index++) . ']" value="' . intval($select) . "\" />\n";
1537 // add hidden vars for team & comment
1538 if ( requestVar('action') == 'batchteam' )
1540 echo '<input type="hidden" name="blogid" value="' . intRequestVar('blogid') . "\" />\n";
1542 if ( requestVar('action') == 'batchcomment' )
1544 echo '<input type="hidden" name="itemid" value="' . intRequestVar('itemid') . "\" />\n";
1550 * AdminActions::parse_batchdeletetype()
1551 * Parse skinvar batchdeletetype
1556 public function parse_batchdeletetype()
1558 echo Entity::hsc(requestVar('action'));
1563 * AdminActions::parse_batchmovebtn()
1564 * Parse skinvar batchmovebtn
1569 public function parse_batchmovebtn()
1571 $actionType = requestVar('action');
1572 switch ( $actionType )
1577 case 'batchcategory':
1585 * AdminActions::parse_batchmovelist()
1586 * Parse skinvar batchmovelist
1591 public function parse_batchmovelist()
1593 $selected = requestIntArray('batch');
1595 foreach ( $selected as $select )
1597 echo '<input type="hidden" name="batch[' . ($count) . ']" value="' . intval($select) . "\" />\n";
1604 * AdminActions::parse_batchmovetitle()
1605 * Parse skinvar batchmovetitle
1610 public function parse_batchmovetitle()
1612 $actionType = requestVar('action');
1613 switch ( $actionType )
1618 case 'batchcategory':
1619 echo _MOVECAT_TITLE;
1626 * AdminActions::parse_batchmovetype()
1627 * Parse skinvar batchmovetype
1632 public function parse_batchmovetype()
1634 echo Entity::hsc(requestVar('action'));
1639 * AdminActions::parse_blogcatlist()
1640 * Parse skinvar blogcatlist
1645 public function parse_blogcatlist($templateName = '')
1648 $blogid = intRequestVar('blogid');
1649 $query = "SELECT * FROM %s WHERE cblog = %d ORDER BY cname;";
1650 $query = sprintf($query, sql_table('category'), (integer) $blogid);
1652 $template['content'] = 'categorylist';
1653 $template['tabindex'] = 200;
1655 $batch = new Batch('category');
1656 $batch->showlist($query, 'table', $template, $templateName);
1661 * AdminActions::parse_blogid()
1662 * Parse skinvar blogid
1667 public function parse_blogid()
1669 echo intRequestVar('blogid');
1674 * AdminActions::parse_blognotifysetting()
1675 * Parse skinvar blognotifysetting
1680 public function parse_blognotifysetting($type)
1683 $blogid = intRequestVar('blogid');
1684 $blog =& $manager->getBlog($blogid);
1689 if ( !$blog->notifyOnComment() )
1695 if ( !$blog->notifyOnVote() )
1701 if ( !$blog->notifyOnNewItem() )
1707 echo ' checked="checked"';
1712 * AdminActions::parse_blogsetting()
1713 * Parse skinvar blogsetting
1715 * @param string $which name of weblog setting
1718 public function parse_blogsetting($which)
1720 echo $this->parse_getblogsetting($which);
1725 * AdminActions::parse_blogsettingyesno()
1726 * Parse skinvar blogsettingyesno
1728 * @param string $type type of weblog setting
1729 * @param string $templateName name of template to use
1732 public function parse_blogsettingyesno($type, $templateName = '')
1736 $blogid = intRequestVar('blogid');
1737 $blog =& $manager->getBlog($blogid);
1741 case 'convertbreaks':
1742 $checkedval = $blog->convertBreaks();
1745 case 'allowpastposting':
1746 $checkedval = $blog->allowPastPosting();
1750 $checkedval = $blog->commentsEnabled();
1754 $checkedval = $blog->isPublic();
1758 $checkedval = $blog->emailRequired();
1762 $checkedval = $blog->getSearchable();
1766 $this->parse_inputyesno($type, $checkedval, $tabindex, 1, 0, _YES, _NO, 0, $templateName);
1771 * AdminActions::parse_blogteamlist()
1772 * Parse skinvar blogteamlist
1774 * @param string $templateName name of template to use
1777 public function parse_blogteamlist($templateName = '')
1780 $blogid = intRequestVar('blogid');
1781 $query = "SELECT tblog, tmember, mname, mrealname, memail, tadmin "
1783 . "WHERE tmember=mnumber AND tblog= %d";
1784 $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);
1786 $template['content'] = 'teamlist';
1787 $template['tabindex'] = 10;
1789 $batch = new Batch('team');
1790 $batch->showList($query, 'table', $template, $templateName, _LISTS_NOMORE);
1795 * AdminActions::parse_blogteammembers()
1796 * Parse skinvar blogteammembers
1801 public function parse_blogteammembers()
1803 $blogid = intRequestVar('blogid');
1804 $query = "SELECT mname, mrealname "
1806 . "WHERE mnumber=tmember AND tblog=%d;";
1807 $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);
1808 $res = DB::getResult($query);
1809 $memberNames = array();
1810 foreach ( $res as $row )
1812 $memberNames[] = Entity::hsc($row['mname']) . ' (' . Entity::hsc($row['mrealname']). ')';
1814 echo implode(',', $memberNames);
1818 * AdminActions::parse_blogtime()
1819 * Parse skinvar blogtime
1821 * @param string $type type of time
1822 * @param string $format format for time expression
1823 * @param integer $offset offset of time
1826 public function parse_blogtime($type, $format = '%H:%M', $offset = 0)
1830 if ( $type != 'blogtime' )
1832 /* return server time */
1833 $timestamp = time() + $offset;
1837 $bid = intRequestVar('blogid');
1838 $b =& $manager->getBlog($bid);
1839 $timestamp = $b->getCorrectTime() + $offset;
1842 echo i18n::formatted_datetime($format, $timestamp);
1847 * AdminActions::parse_bookmarkletadmin()
1848 * Parse skinvar bookmarkletadmin
1853 public function parse_bookmarkletadmin()
1857 $blogid = intRequestVar('blogid');
1859 echo Entity::hsc('javascript:' . getBookmarklet($blogid));
1864 * AdminActions::parse_categories()
1865 * Parse skinvar categories
1867 * create category dropdown box
1869 * @param string $type name of setting for category
1872 public function parse_categories($startidx = 0)
1877 $itemid = intRequestVar('itemid');
1878 $item = &$manager->getItem($itemid, 1, 1);
1883 $blogid = intRequestVar('blogid');
1887 $blogid = $item['blogid'];
1889 $blog = &$manager->getBlog($blogid);
1891 if ( $item && $blog->convertBreaks() && requestVar('action') == 'itemedit' )
1893 $item['body'] = removeBreaks($item['body']);
1894 $item['more'] = removeBreaks($item['more']);
1897 $contents = array();
1898 if ( requestVar('action') == 'itemedit' )
1903 if ( !array_key_exists('catid', $contents) || empty($contents['catid']) )
1906 $catid = $blog->getDefaultCategory();
1911 $catid = $contents['catid'];
1914 $this->selectBlog('catid', 'category', $catid, $startidx, 1, $blog->getID());
1920 * AdminActions::parse_category()
1921 * Parse skinvar category
1923 * @param string $type name of setting for category
1926 public function parse_category($type = 'name')
1928 echo $this->parse_getcategory($type);
1933 * AdminActions::parse_categorysetting()
1934 * Parse skinvar categorysetting
1936 * @param string $type type in category setting
1939 public function parse_categorysetting($type)
1941 $catid = intRequestVar('catid');
1942 if ( $type == 'id' )
1947 $blogid = intRequestVar('blogid');
1948 $query = "SELECT * FROM %s WHERE cblog = %d AND catid = %d;";
1949 $query = sprintf($query, sql_table('category'), (integer) $blogid, (integer) $catid);
1950 $row = DB::getRow($query);
1952 if ( $type != 'name' )
1954 echo Entity::hsc($row['cdesc']);
1958 echo Entity::hsc($row['cname']);
1965 * AdminActions::parse_codename()
1966 * Parse templatevar codename
1972 public function parse_checkedonval($value, $name)
1977 $itemid = intRequestVar('itemid');
1978 $item =& $manager->getItem($itemid, 1, 1);
1980 $blog =& $manager->getBlog(getBlogIDFromItemID($itemid));
1982 if ( $item && $blog->convertBreaks() && requestVar('action') == 'itemedit' )
1984 $item['body'] = removeBreaks($item['body']);
1985 $item['more'] = removeBreaks($item['more']);
1988 $contents = array();
1989 if ( requestVar('action') == 'itemedit' )
1993 if ( !isset($contents[$name]) )
1995 $contents[$name] = '';
1997 if ($contents[$name] == $value)
1999 echo 'checked="checked"';
2005 * AdminActions::parse_codename()
2006 * Parse templatevar codename
2011 * TODO: is this need???
2013 public function parse_codename()
2016 echo $nucleus['codename'];
2021 * AdminActions::parse_commentnavlist()
2022 * Parse skinvar commentnavlist
2027 public function parse_commentnavlist()
2029 global $CONF, $manager, $member;
2032 if ( postVar('start') )
2034 $start = intPostVar('start');
2041 // amount of items to show
2042 if ( postVar('amount') )
2044 $amount = intPostVar('amount');
2048 $amount = (integer) $CONF['DefaultListSize'];
2054 $query = 'SELECT cbody, cuser, cmail, cemail, mname, ctime, chost, cnumber, cip, citem '
2056 . 'LEFT OUTER JOIN %s ON mnumber=cmember '
2058 $query = sprintf($query, sql_table('comment'), sql_table('member'));
2060 if ( $this->skintype == 'itemcommentlist' )
2062 $itemid = intRequestVar('itemid');
2063 $query .= " citem={$itemid}";
2064 $template['canAddBan'] = $member->blogAdminRights(intRequestVar('blogid'));
2066 $nonComments = _NOCOMMENTS;
2068 elseif ( $this->skintype == 'browseowncomments' )
2071 $query .= ' cmember=' . $member->getID();
2072 $template['canAddBan'] = 0;
2074 $nonComments = _NOCOMMENTS_YOUR;
2076 elseif ( $this->skintype == 'blogcommentlist' )
2079 $query .= ' cblog=' . intRequestVar('blogid');
2080 $template['canAddBan'] = $member->blogAdminRights(intRequestVar('blogid'));
2081 $bid = intRequestVar('blogid');
2082 $nonComments = _NOCOMMENTS_BLOG;
2085 $search = postVar('search');
2086 if ( !empty($search) )
2088 $query .= ' and cbody LIKE ' . DB::quoteValue('%'.$search.'%');
2091 $query .= " ORDER BY ctime ASC LIMIT {$start},{$amount}";
2093 $template['content'] = 'commentlist';
2095 $navList = new Navlist($this->skintype, $start, $amount, 0, 1000, $bid, $search, $itemid);
2096 $navList->showBatchList('comment', $query, 'table', $template, $nonComments);
2101 * AdminActions::parse_configsettingsedit()
2102 * Parse skinvar configsettingsedit
2104 * @param string $type type of global configuration
2107 public function parse_configsettingsedit($type)
2112 case 'DefaultListSize':
2113 if ( !array_key_exists('DefaultListSize', $CONF) )
2115 $query = "INSERT INTO %s VALUES (DefaultListSize, 10);";
2116 $query = sprintf($query, sql_table('config'));
2117 DB::execute($query);
2118 $CONF['DefaultListSize'] = 10;
2120 elseif ( intval($CONF['DefaultListSize']) < 1 )
2122 $CONF['DefaultListSize'] = 10;
2124 echo intval($CONF['DefaultListSize']);
2126 case 'SessionCookie':
2127 $value = $CONF['SessionCookie'];
2128 $txt1 = _SETTINGS_COOKIESESSION;
2129 $txt2 = _SETTINGS_COOKIEMONTH;
2130 $this->parse_inputyesno('SessionCookie', $value, 10190, 1, 0, $txt1, $txt2);
2133 $value = $CONF['URLMode'];
2134 $txt1 = _SETTINGS_URLMODE_NORMAL;
2135 $txt2 = _SETTINGS_URLMODE_PATHINFO;
2136 $this->parse_inputyesno('URLMode', $value, 10077, 'normal', 'pathinfo', $txt1, $txt2);
2139 if ( array_key_exists($type, $CONF) && is_string($CONF[$type]) )
2141 echo Entity::hsc($CONF[$type]);
2149 * AdminActions::parse_configsettingsyesno()
2150 * Parse skinvar configsettingsyesno
2152 * @param string $type type of global setting
2153 * @param integer $tabindex tabindex attribute of input element
2156 public function parse_configsettingsyesno($type, $tabindex)
2159 if ( array_key_exists($type, $CONF) )
2161 $this->parse_inputyesno($type, $CONF[$type], $tabindex);
2167 * AdminActions::parse_contents()
2168 * Parse skinvar contents
2170 * @param string $which part for item
2173 public function parse_contents($which)
2175 if ( !array_key_exists($which, Admin::$contents) )
2177 Admin::$contents[$which] = '';
2179 echo Entity::hsc(Admin::$contents[$which]);
2183 * AdminActions::parse_currenttime()
2184 * Parse skinvar currenttime
2186 * @param string $what
2189 public function parse_currenttime($what)
2191 $nu = getdate(Admin::$blog->getCorrectTime());
2196 * AdminActions::parse_customhelplink()
2197 * Parse skinvar customhelplink
2199 * @param string $topic name of topic
2200 * @param string $tplName name of template
2201 * @param string $url string as URI
2202 * @param string $iconURL string as URI for icon
2203 * @param string $alt alternative text for image element
2204 * @param string $title title for anchor element
2207 public function parse_customhelplink($topic, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
2209 $this->customHelp($topic, $url, $iconURL);
2214 * AdminActions::parse_date()
2215 * Parse skinvar date
2217 public function parse_date($format = 'c')
2219 global $CONF, $manager;
2220 /* TODO: offset is based on i18n::get_current_locale()? */
2221 echo i18n::formatted_datetime($format, time());
2226 * AdminActions::parse_defaultadminskintypes()
2227 * Parse skinvar defaultadminskintypes
2229 * @param string $tabindex index number for tabindex attribute of input element
2230 * @param string $templateName name of template
2233 public function parse_defaultadminskintypes($tabindex, $templateName = '')
2237 $templates = array();
2239 if ( $templateName )
2241 $templates =& $manager->getTemplate($templateName);
2244 $types = $this->parser->skin->getAvailableTypes();
2247 /* NOTE: set templates for HEAD/BODY/FOOT */
2248 if ( !array_key_exists('ADMINSKINTYPELIST_HEAD', $templates) || empty($templates['ADMINSKINTYPELIST_HEAD']) )
2250 $template['head'] = "<ul>\n";
2254 $template['head'] = $templates['ADMINSKINTYPELIST_HEAD'];
2256 if ( !array_key_exists('ADMINSKINTYPELIST_BODY', $templates) || empty($templates['ADMINSKINTYPELIST_BODY']) )
2258 $template['body'] = "<li>"
2259 . "<a tabindex=\"<%tabindex%>\" href=\"index.php?action=adminskinedittype&skinid=<%skinid%>&type=<%skintype%>\"><%name%></a> <%help%>"
2264 $template['body'] = $templates['ADMINSKINTYPELIST_BODY'];
2266 if ( !array_key_exists('ADMINSKINTYPELIST_FOOT', $templates) || empty($templates['ADMINSKINTYPELIST_FOOT']) )
2268 $template['foot'] = "</ul>\n";
2272 $template['foot'] = $templates['ADMINSKINTYPELIST_FOOT'];
2275 $handler = new AdminActions('template');
2276 $parser = new PARSER($handler);
2278 /* NOTE: do output */
2279 echo $template['head'];
2280 foreach ( $types as $type => $fName )
2282 $helplink = $this->customHelpHtml("skinpart{$type}{$templateName}");
2284 'tabindex' => $tabindex,
2285 'skintype' => $type,
2287 'help' => $helplink,
2288 'skinid' => intrequestVar('skinid'),
2290 $parser->parse(Template::fill($template['body'], $data));
2293 echo $template['foot'];
2299 * AdminActions::parse_defblogselect()
2300 * Parse skinvar defblogselect
2302 * @param string $templateName name of template
2305 public function parse_defblogselect($templateName = '')
2309 $query = "SELECT bname as text, bnumber as value FROM %s;";
2310 $query = sprintf($query, sql_table('blog'));
2312 $template['name'] = 'DefaultBlog';
2313 $template['selected'] = $CONF['DefaultBlog'];
2314 $template['tabindex'] = 10;
2316 Showlist($query, 'select', $template, $templateName);
2322 * AdminActions::parse_defcatselect()
2323 * Parse skinvar defcatselect
2325 * @param string $templateName name of template
2328 public function parse_defcatselect($templateName = '')
2332 $blogid = intRequestVar('blogid');
2333 $blog =& $manager->getBlog($blogid);
2335 $query = "SELECT cname as text, catid as value FROM %s WHERE cblog=%d;";
2336 $query = sprintf($query, sql_table('category'), (integer) $blog->getID());
2338 $template['name'] = 'defcat';
2339 $template['selected'] = $blog->getDefaultCategory();
2340 $template['tabindex'] = 110;
2342 Showlist($query, 'select', $template, $templateName);
2348 * AdminActions::parse_defskinselect()
2349 * Parse skinvar defskinselect
2351 * @param string $type type of skin
2352 * @param string $templateName name of template
2355 public function parse_defskinselect($type = 'blog', $templateName = '')
2357 global $CONF, $manager;
2359 $query = "SELECT sdname as text, sdnumber as value FROM %s WHERE sdname NOT LIKE 'admin/%%';";
2360 $query = sprintf($query, sql_table('skin_desc'));
2362 $blogid = intRequestVar('blogid');
2366 $template['selected'] = $CONF['BaseSkin'];
2370 $blog =& $manager->getBlog($blogid);
2371 $template['selected'] = $blog->getDefaultSkin();
2374 if ( $type != 'blog' )
2376 $nname = 'BaseSkin';
2383 $template['name'] = $nname;
2384 $template['tabindex'] = 50;
2386 Showlist($query, 'select', $template, $templateName);
2392 * AdminActions::parse_deletecomment()
2393 * Parse skinvar deletecomment
2395 * @param string $type type of infomation for comment
2398 public function parse_deletecomment($type = 'id')
2400 $commentid = intRequestVar('commentid');
2401 $comment = COMMENT::getComment($commentid);
2406 echo intRequestVar('commentid');
2409 if ( array_key_exists('member', $comment) && !empty($comment['member']) )
2411 echo $comment['member'];
2415 echo $comment['user'];
2419 $body = strip_tags($comment['body']);
2420 echo Entity::hsc(shorten($body, 300, '...'));
2426 * AdminActions::parse_deleteitembody()
2427 * Parse skinvar deleteitembody
2432 public function parse_deleteitembody()
2436 $itemid = intRequestVar('itemid');
2437 $item =& $manager->getItem($itemid, 1, 1);
2439 $body = strip_tags($item['body']);
2441 echo Entity::hsc(shorten($body, 300, '...'));
2447 * AdminActions::parse_deleteitemid()
2448 * Parse skinvar deleteitemid
2453 public function parse_deleteitemid()
2455 echo (integer) intRequestVar('itemid');
2460 * AdminActions::parse_deleteitemtitle()
2461 * Parse skinvar deleteitemtitle
2466 public function parse_deleteitemtitle()
2470 $itemid = intRequestVar('itemid');
2471 $item =& $manager->getItem($itemid, 1, 1);
2473 echo Entity::hsc(strip_tags($item['title']));
2479 * AdminActions::parse_editadminskin()
2480 * Parse skinvar editadminskin
2482 * @param string $type type of skin setting
2485 public function parse_editadminskin($type = 'id')
2487 $skinid = intRequestVar('skinid');
2488 $skin = new Skin($skinid);
2492 echo intRequestVar('skinid');
2495 echo Entity::hsc($skin->getName());
2498 echo Entity::hsc($skin->getDescription());
2501 echo Entity::hsc($skin->getContentType());
2504 echo Entity::hsc($skin->getIncludePrefix());
2507 $this->parse_inputyesno('inc_mode', $skin->getIncludeMode(), 120, 'skindir', 'normal', _PARSER_INCMODE_SKINDIR, _PARSER_INCMODE_NORMAL);
2515 * AdminActions::parse_editadminskintype()
2516 * Parse skinvar editadminskintype
2518 * @param string $type name of skin type
2521 public function parse_editadminskintype($type = 'id')
2523 global $CONF, $manager, $member;
2525 static $skin = NULL;
2526 static $types = array();
2528 if ( $skin == NULL )
2530 $skinid = intRequestVar('skinid');
2531 $skin = new Skin($skinid, 'AdminActions');
2532 $types = $skin->getAvailableTypes();
2535 $stype = strtolower(trim(requestVar('type')));
2536 if ( empty($stype) )
2544 echo $skin->getID();
2547 echo Entity::hsc($skin->getName());
2550 echo Entity::hsc($skin->getDescription());
2553 echo Entity::hsc($skin->getContentType());
2556 echo Entity::hsc($skin->getContentFromDB($stype));
2559 $friendly_name = !array_key_exists($stype, $types) ? ucfirst($stype) : $types[$stype];
2560 echo Entity::hsc($friendly_name);
2563 echo Entity::hsc($stype);
2566 echo Entity::hsc($skin->getIncludePrefix());
2569 $incMode = $skin->getIncludeMode() ? _PARSER_INCMODE_SKINDIR : _PARSER_INCMODE_NORMAL;
2570 echo Entity::hsc($incMode);
2579 * AdminActions::parse_editcomment()
2580 * Parse skinvar editcomment
2582 * @param string $type type of comment setting
2585 public function parse_editcomment($type = 'id')
2589 $commentid = intRequestVar('commentid');
2590 $comment = COMMENT::getComment($commentid);
2592 $manager->notify('PrepareCommentForEdit', array('comment' => &$comment));
2597 echo intRequestVar('commentid');
2600 if ( !array_key_exists('member', $comment) || empty($comment['member']) )
2602 echo $comment['user'] . " (" . _EDITC_NONMEMBER . ")";
2606 echo $comment['member'] . " (" . _EDITC_MEMBER . ")";
2610 echo date("Y-m-d @ H:i", $comment['timestamp']);
2613 $comment['body'] = str_replace('<br />', '', $comment['body']);
2614 $comment['body'] = preg_replace("#<a href=['\"]([^'\"]+)['\"]( rel=\"nofollow\")?>[^<]*</a>#", "\\1", $comment['body']);
2615 echo $comment['body'];
2618 echo $comment['userid'];
2621 echo $comment['userid'];
2624 echo $comment[$type];
2631 * AdminActions::parse_editdesturl()
2632 * Parse skinvar editdesturl
2634 public function parse_editdesturl()
2636 if ( requestVar('desturl') )
2638 echo Entity::hsc(requestVar('desturl'));
2644 * AdminActions::parse_editmemberlist()
2645 * Parse skinvar editmemberlist
2647 * @param string $templateName name of template
2650 public function parse_editmemberlist($templateName = '')
2653 // show list of members with actions
2654 $query = 'SELECT * FROM '.sql_table('member');
2655 $template['content'] = 'memberlist';
2656 $template['tabindex'] = 10;
2658 $batch = new Batch('member');
2659 $batch->showList($query, 'table', $template, $templateName, _LISTS_NOMORE);
2664 * AdminActions::parse_editmember()
2665 * Parse skinvar editmember
2667 * @param string $type type of information for member
2668 * @return string $tempateName name of template to use
2671 public function parse_editmember($type = 'id', $templateName = '')
2673 global $CONF, $manager, $member;
2675 $memberid = intRequestVar('memberid');
2676 $mem =& $manager->getMember($memberid);
2681 echo intRequestVar('memberid');
2684 if ( $this->skintype == 'teamdelete' || $this->skintype == 'memberdelete' )
2686 echo Entity::hsc($mem->getDisplayName());
2690 $dispName = Entity::hsc($mem->getDisplayName());
2691 if ( $CONF['AllowLoginEdit'] || $member->isAdmin() )
2693 echo '<input name="name" tabindex="10" maxlength="32" size="32" value="' . $dispName . "\" />\n";
2702 echo Entity::hsc($mem->getRealName());
2705 echo Entity::hsc($mem->getEmail());
2708 echo Entity::hsc($mem->getURL());
2711 $this->parse_inputyesno('admin', $mem->isAdmin(), 60, 1, 0, _YES, _NO, 0, $templateName);
2714 $this->parse_inputyesno('canlogin', $mem->canLogin(), 70, 1, 0, _YES, _NO, $mem->isAdmin(), $templateName);
2717 echo Entity::hsc($mem->getNotes());
2720 $this->parse_inputyesno('autosave', $mem->getAutosave(), 87, 1, 0, _YES, _NO, 0, $templateName);
2729 * AdminActions::parse_editpluginfo()
2730 * Parse skinvar editpluginfo
2732 * @param string $type type of plugin info
2735 public function parse_editpluginfo($type)
2739 $pid = intRequestVar('plugid');
2746 echo Entity::hsc($manager->getPluginNameFromPid($pid));
2753 * AdminActions::parse_editplugoptionslist()
2754 * Parse skinvar editplugoptionslist
2756 * @param string $templateName name of template
2759 public function parse_editplugoptionslist($templateName = '')
2763 $pid = intRequestVar('plugid');
2764 $aOptions = array();
2767 $query = "SELECT * FROM %s WHERE ocontext='global' AND opid=%d ORDER BY oid ASC;";
2768 $query = sprintf($query, sql_table('plugin_option_desc'), (integer) $pid);
2769 $resource = DB::getResult($query);
2771 foreach ( $resource as $row )
2773 array_push($aOIDs, $row['oid']);
2774 $aOptions[$row['oid']] = array(
2775 'oid' => $row['oid'],
2776 'value' => $row['odef'],
2777 'name' => $row['oname'],
2778 'description' => $row['odesc'],
2779 'type' => $row['otype'],
2780 'typeinfo' => $row['oextra'],
2785 // fill out actual values
2786 if ( count($aOIDs) > 0 )
2788 $query = 'SELECT oid, ovalue FROM %s WHERE oid in (%s)';
2789 $query = sprintf($query, sql_table('plugin_option'), implode(',', $aOIDs));
2791 $result = DB::getResult($query);
2793 foreach ( $result as $row )
2795 $aOptions[$row['oid']]['value'] = $row['ovalue'];
2801 'context' => 'global',
2803 'options' => &$aOptions
2805 $manager->notify('PrePluginOptionsEdit', $data);
2807 $template['content'] = 'plugoptionlist';
2809 $amount = Showlist($aOptions, 'table', $template, $templateName);
2813 echo '<p>' . _ERROR_NOPLUGOPTIONS . "</p>\n";
2819 * AdminActions::parse_editskin()
2820 * Parse skinvar editskin
2822 * @param string $type type of skin
2825 public function parse_editskin($type = 'id')
2827 $skinid = intRequestVar('skinid');
2828 $skin = new SKIN($skinid);
2832 echo intRequestVar('skinid');
2835 echo Entity::hsc($skin->getName());
2838 echo Entity::hsc($skin->getDescription());
2841 echo Entity::hsc($skin->getContentType());
2844 echo Entity::hsc($skin->getIncludePrefix());
2847 $this->parse_inputyesno('inc_mode', $skin->getIncludeMode(), 120, 'skindir', 'normal', _PARSER_INCMODE_SKINDIR, _PARSER_INCMODE_NORMAL);
2855 * AdminActions::parse_editskintype()
2856 * Parse skinvar editskintype
2858 * @param string $type name of type for skin type
2861 public function parse_editskintype($type = 'id')
2863 global $CONF, $manager, $member;
2864 $skinid = intRequestVar('skinid');
2865 $skin = new SKIN($skinid);
2866 $fNames = $skin->getAvailableTypes();
2867 $sType = strtolower(trim(requestVar('type')));
2872 echo intRequestVar('skinid');
2875 echo Entity::hsc($skin->getName());
2878 echo Entity::hsc($skin->getDescription());
2881 echo Entity::hsc($skin->getContentType());
2884 echo Entity::hsc($skin->getContentFromDB($sType));
2887 $skinType = !array_key_exists($sType, $fNames) ? ucfirst($sType) : $fNames[$sType];
2888 echo Entity::hsc($skinType);
2891 echo Entity::hsc($sType);
2894 echo Entity::hsc($skin->getIncludePrefix());
2897 $incMode = $skin->getIncludeMode() ? _PARSER_INCMODE_SKINDIR : _PARSER_INCMODE_NORMAL;
2898 echo Entity::hsc($incMode);
2907 * AdminActions::parse_adminurl()
2908 * Parse skinvar adminurl
2909 * (shortcut for admin url)
2914 public function parse_adminurl()
2916 $this->parse_sitevar('adminurl');
2921 * AdminActions::parse_edittemplateinfo()
2922 * Parse skinvar edittemplateinfo
2924 * @param string $type name of type for skin
2925 * @param string $description description for skin
2926 * @param string $name name of skin
2927 * @param string $help
2928 * @param string $tabindex index value for tabindex attribute of input element
2929 * @param string $big
2930 * @param string $tplt name of template
2933 public function parse_edittemplateinfo($type, $desc = '', $name = '', $help = '', $tabindex = 0, $big = 0, $tplt = '')
2936 static $cache = array();
2938 if ( !array_key_exists('id', $cache) )
2940 $cache['id'] = intRequestVar('templateid');
2943 if ( !array_key_exists('name', $cache) )
2945 $cache['name'] = Template::getNameFromId($cache['id']);
2948 if ( !array_key_exists('desc', $cache) )
2950 $cache['desc'] = Template::getDesc($cache['id']);
2953 $template =& $manager->getTemplate($cache['name']);
2958 echo (integer) $cache['id'];
2961 echo Entity::hsc($cache['name']);
2964 echo Entity::hsc($cache['desc']);
2966 case 'extratemplate':
2968 $pluginfields = array();
2969 $manager->notify('TemplateExtraFields', array('fields' => &$pluginfields));
2974 $tmplt =& $manager->getTemplate($desc);
2976 if ( !array_key_exists('TEMPLATE_EDIT_EXPLUGNAME', $tmplt) || empty($tmplt['TEMPLATE_EDIT_EXPLUGNAME']) )
2980 . '<th colspan="2"><%explugtplname%>' . "</th>\n";
2984 $base = $tmplt['TEMPLATE_EDIT_EXPLUGNAME'];
2987 foreach ( $pluginfields as $pfkey => $pfvalue )
2989 $data = array('explugtplname' => Entity::hsc($pfkey));
2991 echo Template::fill($base, $data);
2993 foreach ( $pfvalue as $pffield => $pfdesc )
2995 $this->templateEditRow($template, $pfdesc, $pffield, '', ++$tabidx, 0, $name);
3000 $desc = defined($desc) ? constant($desc) : $desc;
3001 $name = defined($name) ? constant($name) : $name;
3002 $this->templateEditRow($template, $desc, $name, $help, $tabindex, $big, $tplt);
3010 * AdminActions::parse_editadmintemplateinfo()
3011 * Parse skinvar editadmintemplateinfo
3013 * @param string $type type of skin template
3014 * @param string $description description of template
3015 * @param string $name name of stemplate
3016 * @param string $tabindex index number for tabindex attribute of input element
3017 * @param string $big
3018 * @param string $tplt
3020 public function parse_editadmintemplateinfo($type, $desc = '', $name = '', $help = '', $tabindex = 0, $big = 0, $tplt = '')
3023 static $cache = array();
3025 if ( !array_key_exists('id', $cache) )
3027 $cache['id'] = intRequestVar('templateid');
3030 if ( !array_key_exists('name', $cache) )
3032 $cache['name'] = Template::getNameFromId($cache['id']);
3035 if ( !array_key_exists('desc', $cache) )
3037 $cache['desc'] = Template::getDesc($cache['id']);
3040 $template =& $manager->getTemplate($cache['name']);
3045 echo (integer) $cache['id'];
3048 echo Entity::hsc($cache['name']);
3051 echo Entity::hsc($cache['desc']);
3053 case 'extratemplate':
3055 $pluginfields = array();
3056 $manager->notify('AdminTemplateExtraFields', array('fields' => &$pluginfields));
3061 $tmplt =& $manager->getTemplate($desc);
3063 if ( !array_key_exists('TEMPLATE_EDIT_EXPLUGNAME', $tmplt) || empty($tmplt['TEMPLATE_EDIT_EXPLUGNAME']) )
3067 . '<th colspan="2"><%explugtplname%>' . "</th>\n";
3071 $base = $tmplt['TEMPLATE_EDIT_EXPLUGNAME'];
3074 foreach ( $pluginfields as $pfkey => $pfvalue )
3076 $data = array('explugtplname' => Entity::hsc($pfkey));
3078 echo Template::fill($base, $data);
3080 foreach ( $pfvalue as $pffield => $pfdesc )
3082 $this->templateEditRow($template, $pfdesc, $pffield, '', ++$tabidx, 0, $name);
3087 $desc = defined($desc) ? constant($desc) : $desc;
3088 $name = defined($name) ? constant($name) : $name;
3089 $this->templateEditRow($template, $desc, $name, $help, $tabindex, $big, $tplt);
3096 * AdminActions::parse_eventformextra()
3097 * Parse skinvar eventformextra
3099 * @param string $type name of type for event form extra
3102 public function parse_eventformextra($type = 'activation')
3111 $key = requestVar('ackey');
3114 Admin::error(_ERROR_ACTIVATE);
3116 $info = MEMBER::getActivationInfo($key);
3119 Admin::error(_ERROR_ACTIVATE);
3121 $mem =& $manager->getMember($info->vmember);
3124 Admin::error(_ERROR_ACTIVATE);
3127 'type' => 'activation',
3131 case 'membermailform-notloggedin':
3132 $data = array('type' => 'membermailform-notloggedin',);
3135 $manager->notify('FormExtra', $data);
3140 * AdminActions::parse_extrahead()
3141 * Parse skinvar extrahead
3143 public function parse_extrahead()
3147 $extrahead = Admin::getAdminextrahead();
3150 'extrahead' => &$extrahead,
3151 'action' => Admin::getAdminAction()
3154 $manager->notify('AdminPrePageHead', $data);
3160 * AdminActions::parse_member()
3161 * Parse skinvar member
3162 * (includes a member info thingie)
3164 * @param string $what which memberdata is needed
3167 public function parse_member($what)
3169 global $memberinfo, $member, $CONF;
3171 // 1. only allow the member-details-page specific variables on member pages
3172 if ( $this->skintype == 'member' )
3177 echo Entity::hsc($memberinfo->getDisplayName());
3180 echo Entity::hsc($memberinfo->getRealName());
3183 echo Entity::hsc($memberinfo->getNotes());
3186 echo Entity::hsc($memberinfo->getURL());
3189 echo Entity::hsc($memberinfo->getEmail());
3192 echo Entity::hsc($memberinfo->getID());
3197 // 2. the next bunch of options is available everywhere, as long as the user is logged in
3198 if ( $member->isLoggedIn() )
3203 echo $member->getDisplayName();
3205 case 'yourrealname':
3206 echo $member->getRealName();
3209 echo $member->getNotes();
3212 echo $member->getURL();
3215 echo $member->getEmail();
3218 echo $member->getID();
3220 case 'yourprofileurl':
3221 if ( $CONF['URLMode'] == 'pathinfo' )
3223 echo Link::create_member_link($member->getID());
3227 echo $CONF['IndexURL'] . Link::create_member_link($member->getID());
3236 * AdminActions::parse_version()
3237 * Parse skinvar version
3238 * (include nucleus versionnumber)
3243 public function parse_version()
3246 echo 'Nucleus CMS ' . $nucleus['version'];
3251 * AdminActions::parse_sitevar()
3252 * Parse skinvar sitevar
3253 * (include a sitevar)
3255 * @param string $which
3258 public function parse_sitevar($which)
3264 echo $CONF['IndexURL'];
3267 echo $CONF['SiteName'];
3270 echo $CONF['AdminEmail'];
3273 echo $CONF['AdminURL'];
3280 * AdminActions::parse_actionurl()
3286 public function parse_actionurl()
3289 echo Entity::hsc($CONF['ActionURL']);
3294 * AdminActions::parse_getblogsetting()
3295 * Parse skinvar getblogsetting
3297 public function parse_getblogsetting($which)
3299 global $blog, $manager;
3305 elseif ( $bid = intRequestVar('blogid') )
3307 $b =& $manager->getBlog($bid);
3317 return Entity::hsc($b->getID());
3320 return Entity::hsc($b->getURL());
3323 return Entity::hsc($b->getName());
3326 return Entity::hsc($b->getDescription());
3329 return Entity::hsc($b->getShortName());
3331 case 'notifyaddress':
3332 return Entity::hsc($b->getNotifyAddress());
3335 return Entity::hsc($b->getMaxComments());
3338 return Entity::hsc($b->getUpdateFile());
3341 return Entity::hsc($b->getTimeOffset());
3348 * AdminActions::parse_geteditpluginfo()
3349 * Parse skinvar geteditpluginfo
3351 * @param string $type name of setting for edit plugin info
3354 public function parse_geteditpluginfo($type)
3357 $pid = intRequestVar('plugid');
3364 return Entity::hsc($manager->getPluginNameFromPid($pid));
3371 * AdminActions::parse_getmember()
3372 * Parse skinvar getmember
3373 * (includes a member info thingie)
3375 * @param string $what name of setting for member
3378 public function parse_getmember($what)
3380 global $memberinfo, $member;
3381 // 1. only allow the member-details-page specific variables on member pages
3382 if ( $this->skintype == 'member' )
3387 return Entity::hsc($memberinfo->getDisplayName());
3390 return Entity::hsc($memberinfo->getRealName());
3393 return Entity::hsc($memberinfo->getNotes());
3396 return Entity::hsc($memberinfo->getURL());
3399 return Entity::hsc($memberinfo->getEmail());
3402 return Entity::hsc($memberinfo->getID());
3406 // 2. the next bunch of options is available everywhere, as long as the user is logged in
3407 if ( $member->isLoggedIn() )
3412 return $member->getDisplayName();
3414 case 'yourrealname':
3415 return $member->getRealName();
3418 return $member->getNotes();
3421 return $member->getURL();
3424 return $member->getEmail();
3427 return $member->getID();
3435 * AdminActions::parse_headmessage()
3436 * Parse skinvar headmessage
3441 public function parse_headmessage()
3443 if ( !empty(Admin::$headMess) )
3445 echo '<p>' . _MESSAGE . ': ' . Entity::hsc(Admin::$headMess) . "</p>\n";
3451 * AdminActions::parse_helplink()
3452 * Parse skinvar helplink
3454 * @param string $topic name of topic for help
3457 public function parse_helplink($topic = '')
3459 if ( !empty($topic) )
3467 * AdminActions::parse_helpplugname()
3468 * Parse skinvar helpplugname
3473 public function parse_helpplugname()
3475 $plugid = intGetVar('plugid');
3476 Entity::hsc($manager->getPluginNameFromPid($plugid));
3481 * AdminActions::parse_ilistaddnew()
3482 * Parse skinvar ilistaddnew
3487 public function parse_ilistaddnew()
3489 $blogid = intRequestVar('blogid');
3490 if ( intPostVar('start') == 0 )
3492 echo '<p><a href="index.php?action=createitem&blogid=' . $blogid . '">' . _ITEMLIST_ADDNEW . "</a></p>\n";
3498 * AdminActions::parse_importskininfo()
3499 * Parse skinvar importskininfo
3501 * @param string $type name of information for imported skin
3504 public function parse_importskininfo($type)
3509 echo Entity::hsc(requestVar('skininfo'));
3512 $dataArr = requestArray('skinnames');
3513 echo implode(' <em>' . _AND . '</em> ', $dataArr);
3516 $dataArr = requestArray('tpltnames');
3517 echo implode(' <em>' . _AND . '</em> ', $dataArr);
3520 $dataArr = requestArray('skinclashes');
3521 echo implode(' <em>' . _AND . '</em> ', $dataArr);
3524 $dataArr = requestArray('tpltclashes');
3525 echo implode(' <em>' . _AND . '</em> ', $dataArr);
3528 echo Entity::hsc(requestVar('skinfile'));
3531 echo Entity::hsc(requestVar('mode'));
3538 * AdminActions::parse_inputyesno()
3539 * Parse skinvar inputyesno
3541 * some init stuff for all forms
3546 public function parse_init()
3551 if ( requestVar('action') == 'itemedit' )
3553 $authorid = Admin::$contents['authorid'];
3556 Admin::$blog->insertJavaScriptInfo($authorid);
3561 * AdminActions::parse_inputyesno()
3562 * Parse skinvar inputyesno
3564 * @param string $name
3565 * @param string $checkedval
3566 * @param string $tabindex
3567 * @param string $value1
3568 * @param string $value2
3569 * @param string $yesval
3570 * @param string $noval
3571 * @param string $isAdmin
3572 * @param string $templateName
3575 public function parse_inputyesno($name, $checkedval, $tabindex = 0, $value1 = 1, $value2 = 0, $yesval = _YES, $noval = _NO, $isAdmin = 0, $templateName = '')
3577 self::input_yesno($name, $checkedval, $tabindex, $value1, $value2, $yesval, $noval, $isAdmin, $templateName );
3582 * AdminActions::parse_insertpluginfo()
3583 * Parse templatevar insertpluginfo
3585 public function parse_insertpluginfo($type)
3587 $option = Admin::getAdminaOption();
3591 return $option['pid'];
3594 return Entity::hsc($option['pfile']);
3601 * AdminActions::parse_insplugoptcontent()
3602 * Parse skinvar insplugoptcontent
3607 public function parse_insplugoptcontent()
3609 $option = Admin::getAdminaOption();
3611 $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);
3612 if ( array_key_exists('access', $meta) && $meta['access'] != 'hidden' )
3615 listplug_plugOptionRow($option);
3622 * AdminActions::parse_iprangeinput()
3623 * Parse skinvar iprangeinput
3628 public function parse_iprangeinput()
3630 if ( requestVar('ip') )
3632 $iprangeVal = Entity::hsc(requestVar('ip'));
3633 echo "<input name=\"iprange\" type=\"radio\" value=\"{$iprangeVal}\" checked=\"checked\" id=\"ip_fixed\" />\n";
3634 echo "<label for=\"ip_fixed\">{$iprangeVal}</label><br />\n";
3635 echo '<input name="iprange" type="radio" value="custom" id="ip_custom" />' . "\n";
3636 echo '<label for="ip_custom">' . _BAN_IP_CUSTOM . '</label>' . "\n";
3637 echo "<input name=\"customiprange\" value=\"{$iprangeVal}\" maxlength=\"15\" size=\"15\" />\n";
3641 echo '<input name="iprange" value="custom" type="hidden" />' . "\n";
3642 echo '<input name="customiprange" value="" maxlength="15" size="15" />' . "\n";
3648 * AdminActions::parse_itemnavlist()
3649 * Parse skinvar itemnavlist
3654 public function parse_itemnavlist($templateName)
3656 global $CONF, $manager, $member;
3658 $query = "SELECT bshortname, cname, mname, ititle, ibody, inumber, idraft, itime"
3659 . " FROM %s, %s, %s, %s"
3660 . " WHERE iblog=bnumber AND iauthor=mnumber AND icat=catid";
3662 $query = sprintf($query, sql_table('item'), sql_table('blog'), sql_table('member'), sql_table('category'));
3664 if ( $this->skintype == 'itemlist' )
3667 if ( array_key_exists('blogid', $_REQUEST) )
3669 $blogid = intRequestVar('blogid');
3671 else if ( array_key_exists('itemid', $_REQUEST) )
3673 $itemid = intRequestVar('itemid');
3674 $item = &$manager->getItem($itemid, 1, 1);
3675 $blogid = (integer) $item['blogid'];
3677 $blog =& $manager->getBlog($blogid);
3679 $query .= " AND iblog={$blogid}";
3680 $template['now'] = $blog->getCorrectTime(time());
3682 // non-blog-admins can only edit/delete their own items
3683 if ( !$member->blogAdminRights($blogid) )
3685 $query .= ' AND iauthor = ' . $member->getID();
3688 elseif ( $this->skintype == 'browseownitems' )
3690 $query .= ' AND iauthor = ' . $member->getID();
3692 $template['now'] = time();
3695 // search through items
3696 $search = postVar('search');
3698 if ( !empty($search) )
3700 $query .= ' AND ((ititle LIKE ' . DB::quoteValue('%'.$search.'%') . ') '
3701 . ' OR (ibody LIKE ' . DB::quoteValue('%'.$search.'%') . ') '
3702 . ' OR (imore LIKE ' . DB::quoteValue('%'.$search.'%') . '))';
3705 if ( postVar('start') )
3707 $start = intPostVar('start');
3714 // amount of items to show
3715 if ( postVar('amount') )
3717 $amount = intPostVar('amount');
3721 $amount = (integer) $CONF['DefaultListSize'];
3728 $query .= ' ORDER BY itime DESC'
3729 . " LIMIT {$start},{$amount}";
3731 $template['content'] = 'itemlist';
3733 $navList = new Navlist($this->skintype, $start, $amount, 0, 1000, $blogid, $search, 0);
3734 $navList->showBatchList('item', $query, 'table', $template, '', $templateName);
3739 * AdminActions::parse_itemtime()
3740 * date change on edit item
3742 * @param string $key key of PHP's getDate()
3745 public function parse_itemtime($key)
3750 $itemid = intRequestVar('itemid');
3751 $item =& $manager->getItem($itemid, 1, 1);
3753 $blog =& $manager->getBlog(getBlogIDFromItemID($itemid));
3755 if ( $item && $blog->convertBreaks() && requestVar('action') == 'itemedit' )
3757 $item['body'] = removeBreaks($item['body']);
3758 $item['more'] = removeBreaks($item['more']);
3761 $contents = array();
3762 if ( requestVar('action') == 'itemedit' )
3766 elseif ( requestVar('action') == 'createitem' )
3769 'contents' => &$contents,
3770 'blog' => &$this->blog
3772 $manager->notify('PreAddItemForm', $data);
3774 $itemtime = getdate($contents['timestamp']);
3775 echo $itemtime[$key];
3780 * AdminActions::parse_jstoolbaroptions()
3781 * Parse skinvar jstoolbaroptions
3786 public function parse_jstoolbaroptions()
3790 _SETTINGS_JSTOOLBAR_NONE,
3791 _SETTINGS_JSTOOLBAR_SIMPLE,
3792 _SETTINGS_JSTOOLBAR_FULL
3796 foreach ( $options as $option )
3798 $text = "<option value=\"%d\"%s>%s</option>\n";
3799 $extra = ($CONF['DisableJsTools'] == $i) ? ' selected="selected"' : '';
3800 echo sprintf($text, $i, $extra, $option);
3806 * AdminActions::parse_localeselectoptions()
3807 * Parse skinvar localeselectoptions
3812 public function parse_localeselectoptions()
3816 $locales = i18n::get_available_locale_list();
3818 $memid = intRequestVar('memberid');
3821 $mem =& $manager->getMember($memid);
3822 if ( !$mem->getLocale() || !in_array($mem->getLocale(), $locales) )
3824 echo "<option value=\"\" selected=\"selected\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";
3828 echo "<option value=\"\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";
3833 if ( !i18n::get_current_locale() || !in_array(i18n::get_current_locale(), $locales) )
3835 echo "<option value=\"\" selected=\"selected\">en_Latn_US</option>\n";
3839 echo "<option value=\"\">en_Latn_US</option>\n";
3842 foreach ( $locales as $locale )
3844 if ( $locale == 'en_Latn_US' )
3850 if ( $locale == $mem->getLocale() )
3852 echo "<option value=\"{$locale}\" selected=\"selected\">{$locale}</option>\n";
3856 echo "<option value=\"{$locale}\">{$locale}</option>\n";
3861 if ( $locale == i18n::get_current_locale() )
3863 echo "<option value=\"{$locale}\" selected=\"selected\">{$locale}</option>\n";
3867 echo "<option value=\"{$locale}\">{$locale}</option>\n";
3875 * AdminActions::parse_listplugplugoptionrow()
3876 * Parse templatevar listplugplugoptionrow
3878 * @param string $templateName name of template
3881 public function parse_listplugplugoptionrow($templateName = '')
3883 echo listplug_plugOptionRow(Admin::getAdminaOption(), $templateName);
3888 * AdminActions::parse_mediadirwarning()
3889 * Parse skinvar mediadirwarning
3894 public function parse_mediadirwarning()
3897 if ( !is_dir($DIR_MEDIA) )
3899 echo "<br /><b>" . _WARNING_NOTADIR . "</b>\n";
3901 if ( !is_readable($DIR_MEDIA) )
3903 echo "<br /><b>" . _WARNING_NOTREADABLE . "</b>\n";
3905 if ( !is_writeable($DIR_MEDIA) )
3907 echo "<br /><b>" . _WARNING_NOTWRITABLE . "</b>\n";
3913 * AdminActions::parse_movedistselect()
3914 * Parse skinvar movedistselect
3916 public function parse_movedistselect()
3918 $actionType = requestVar('action');
3919 switch ( $actionType )
3922 $this->selectBlog('destcatid', 'category');
3924 case 'batchcategory':
3925 $this->selectBlog('destblogid');
3928 if ( $this->skintype == 'itemmove' )
3930 $query = "SELECT icat as result FROM %s WHERE inumber=%d;";
3931 $query = sprintf($query, sql_table('item'), intRequestVar('itemid'));
3932 $catid = DB::getValue(sprintf($query, intRequestVar('itemid')));
3933 $this->selectBlog('catid', 'category', $catid, 10, 1);
3941 * AdminActions::parse_moveitemid()
3942 * Parse skinvar moveitemid
3947 public function parse_moveitemid()
3949 echo intRequestVar('itemid');
3954 * AdminActions::parse_newestcompare()
3955 * Parse skinvar newestcompare
3960 public function parse_newestcompare()
3964 $newestVersion = getLatestVersion();
3965 $newestCompare = str_replace('/', '.', $newestVersion);
3966 $currentVersion = str_replace(array('/', 'v'), array('.', ''), $nucleus['version']);
3968 if ( $newestVersion && version_compare($newestCompare, $currentVersion, '>') )
3970 echo '<br /><a style="color:red" href="http://nucleuscms.org/upgrade.php" title="' . _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE . '">';
3971 echo _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT . $newestVersion . '</a>';
3977 * AdminActions::parse_newmemberselect()
3978 * Parse skinvar newmemberselect
3980 * @param string $templateName name of template to use
3983 public function parse_newmemberselect($templateName = '')
3985 $blogid = intRequestVar('blogid');
3987 $query = "SELECT tmember FROM %s WHERE tblog=%d;";
3988 $query = sprintf($query, sql_table('team'), (integer) $blogid);
3989 $res = DB::getResult($query);
3992 foreach ( $res as $row )
3994 $tmem[] = intval($row['tmember']);
3997 $query = "SELECT mname as text, mnumber as value FROM %s WHERE mnumber NOT IN (%s);";
3998 $query = sprintf($query, sql_table('member'), implode(', ', $tmem));
4001 'name' => 'memberid',
4002 'tabindex' => 10000,
4005 Showlist($query, 'select', $template, $templateName);
4010 * AdminActions::parse_newpluginlist()
4011 * Parse skinvar newpluginlist
4016 public function parse_newpluginlist()
4018 $candidates = $this->newPlugCandidates;
4019 foreach ( $candidates as $name )
4021 echo '<option value="NP_' . $name . '">' . Entity::hsc($name) . "</option>\n";
4027 * AdminActions::parse_outputspecialdirs()
4028 * Parse skinvar outputspecialdirs
4030 * @param string $type type of setting for directory
4033 public function parse_outputspecialdirs($type)
4035 global $DIR_MEDIA, $DIR_NUCLEUS;
4040 echo Entity::hsc($DIR_NUCLEUS);
4043 echo Entity::hsc($DIR_MEDIA);
4050 * AdminActions::parse_passrequestvars()
4051 * Parse skinvar passrequestvars
4056 public function parse_passrequestvars()
4058 $passvar = Admin::getAdminpassvar();
4059 $oldaction = postVar('oldaction');
4061 if ( ($oldaction != 'logout')
4062 && ($oldaction != 'login')
4064 && !postVar('customaction') )
4072 * AdminActions::parse_pluginextras()
4073 * Parse skinvar pluginextras
4075 * @param string $type type of plugin context
4078 public function parse_pluginextras($type = 'global')
4085 $id = intRequestVar('memberid');
4086 $mem =& $manager->getMember($id);
4087 $manager->notify('MemberSettingsFormExtras', array('member' => &$mem));
4090 $id = intRequestVar('blogid');
4091 $blg =& $manager->getBlog($id);
4092 $manager->notify('BlogSettingsFormExtras', array('member' => &$blg));
4094 case 'createaccount':
4096 'type' => 'createaccount.php',
4098 'postlabel' => '<br />',
4100 'postfield' => '<br /><br />'
4102 $manager->notify('RegistrationFormExtraFields', $data);
4105 $manager->notify('GeneralSettingsFormExtras', array());
4112 * AdminActions::parse_pluginhelp()
4113 * Parse skinvar pluginhelp
4118 public function parse_pluginhelp()
4120 global $manager, $DIR_PLUGINS;
4122 $plugid = intGetVar('plugid');
4123 $plugName = $manager->getPluginNameFromPid($plugid);
4124 $plug =& $manager->getPlugin($plugName);
4126 if ( $plug->supportsFeature('HelpPage') > 0 )
4128 $helpfile = $DIR_PLUGINS . $plug->getShortName() . '/help.';
4129 if ( @file_exists($helpfile . 'php') )
4131 @include($helpfile . 'php');
4134 elseif ( @file_exists($helpfile . 'html') )
4136 @include($helpfile . 'html');
4140 echo '<p>' . _ERROR . ': ' . _ERROR_PLUGNOHELPFILE . "</p>\n";
4141 echo '<p><a href="index.php?action=pluginlist">(' . _BACK . ")</a></p>\n";
4146 * AdminActions::parse_pluginlistlist()
4147 * Parse skinvar pluginlistlist
4149 * @param string $templateName name of template to use
4152 public function parse_pluginlistlist($templateName = '')
4154 $query = "SELECT * FROM %s ORDER BY porder ASC;";
4155 $query = sprintf($query, sql_table('plugin'));
4157 $template['content'] = 'pluginlist';
4158 $template['tabindex'] = 10;
4160 Showlist($query, 'table', $template, $templateName);
4166 * AdminActions::parse_pluginoptions()
4167 * Parse skinvar pluginoptions
4169 * @param string $type type of plugin option
4172 public function parse_pluginoptions($context='global', $templateName='')
4174 global $itemid, $manager;
4179 $contextid = intRequestVar('memberid');
4182 $contextid = intRequestVar('blogid');
4185 $contextid = intRequestVar('catid');
4188 $contextid = $itemid;
4192 /* Actually registererd plugin options */
4193 $aIdToValue = array();
4194 $query = "SELECT oid, ovalue FROM %s WHERE ocontextid=%d;";
4195 $query = sprintf($query, sql_table('plugin_option'), (integer) $contextid);
4196 $res = DB::getResult($query);
4197 foreach ( $res as $row )
4199 $aIdToValue[$row['oid']] = $row['ovalue'];
4202 /* Currently available plugin options */
4203 $query = "SELECT * FROM %s, %s WHERE opid=pid and ocontext= %s ORDER BY porder, oid ASC;";
4204 $query = sprintf($query, sql_table('plugin_option_desc'), sql_table('plugin'), DB::quoteValue($context));
4205 $res = DB::getResult($query);
4208 foreach ($res as $row )
4210 if ( !array_key_exists($row['oid'], $aIdToValue) )
4212 $value = $row['odef'];
4216 $value = $aIdToValue[$row['oid']];
4220 'pid' => $row['pid'],
4221 'pfile' => $row['pfile'],
4222 'oid' => $row['oid'],
4224 'name' => $row['oname'],
4225 'description' => $row['odesc'],
4226 'type' => $row['otype'],
4227 'typeinfo' => $row['oextra'],
4228 'contextid' => $contextid,
4234 'context' => $context,
4235 'contextid' => $contextid,
4236 'options' => &$options
4238 $manager->notify('PrePluginOptionsEdit', $data);
4240 $template = array();
4241 if ( $templateName )
4243 $templates =& $manager->getTemplate($templateName);
4244 if ( !array_key_exists('INSERT_PLUGOPTION_TITLE', $templates) || empty($templates['INSERT_PLUGOPTION_TITLE']) )
4246 $template['title'] = "<tr>"
4247 . "<th colspan=\"2\"><%sprinttext(_PLUGIN_OPTIONS_TITLE, <|%insertpluginfo(name)%|>)%></th>"
4252 $template['title'] = $templates['INSERT_PLUGOPTION_TITLE'];
4255 if ( !array_key_exists('INSERT_PLUGOPTION_BODY', $templates) || empty($templates['INSERT_PLUGOPTION_BODY']) )
4257 $template['body'] = "<tr>"
4258 . "<%listplugplugoptionrow%>"
4263 $template['body'] = $templates['INSERT_PLUGOPTION_BODY'];
4269 include_libs('ACTIONS.php');
4270 $handler = new Actions($this->skintype);
4271 $parser = new PARSER($handler);
4273 foreach ( $options as $option )
4276 if ( $prevPid != $option['pid'] )
4278 $prevPid = $option['pid'];
4279 $parser->parse($template['title']);
4282 $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);
4284 if ( @$meta['access'] != 'hidden' )
4286 $parsed = $parser->parse($template['body']);
4294 * AdminActions::parse_qmenuaddselect()
4295 * Parse skinvar qmanuaddselect
4297 * @param string $templateName name of template to use
4300 public function parse_qmenuaddselect($templateName = '')
4303 $showAll = requestVar('showall');
4304 if ( $member->isAdmin() && ($showAll == 'yes') )
4306 // Super-Admins have access to all blogs! (no add item support though)
4307 $query = 'SELECT bnumber as value, bname as text'
4308 . ' FROM ' . sql_table('blog')
4309 . ' ORDER BY bname';
4313 $query = 'SELECT bnumber as value, bname as text'
4314 . ' FROM ' . sql_table('blog') . ', ' . sql_table('team')
4315 . ' WHERE tblog=bnumber and tmember=' . $member->getID()
4316 . ' ORDER BY bname';
4319 $template['name'] = 'blogid';
4320 $template['tabindex'] = 15000;
4321 $template['extra'] = _QMENU_ADD_SELECT;
4322 $template['selected'] = -1;
4323 $template['shorten'] = 10;
4324 $template['shortenel'] = '';
4325 $template['javascript'] = 'onchange="return form.submit()"';
4327 Showlist($query, 'select', $template, $templateName);
4333 * AdminActions::parse_quickmenu()
4334 * Parse skinvar quickmenu
4336 * @param string $templateName name of template to use
4339 public function parse_quickmenu($templateName = '')
4342 $templates = array();
4343 $template = array();
4344 if ( !empty($templateName) )
4346 $templates = & $manager->getTemplate($templateName);
4348 $pluginExtras = array();
4352 'options' => &$pluginExtras
4355 if ( count($pluginExtras) > 0 )
4357 if ( !array_key_exists('PLUGIN_QUICKMENU_TITLE', $templates) || empty($templates['PLUGIN_QUICKMENU_TITLE']) )
4359 $template['title'] = "<h2><%text(_QMENU_PLUGINS)%></h2>\n";
4363 $template['title'] = $templates['PLUGIN_QUICKMENU_TITLE'];
4365 if ( !array_key_exists('PLUGIN_QUICKMENU_HEAD', $templates) || empty($templates['PLUGIN_QUICKMENU_HEAD']) )
4367 $template['head'] = "<ul>\n";
4371 $template['head'] = $templates['PLUGIN_QUICKMENU_HEAD'];
4373 if ( !array_key_exists('PLUGIN_QUICKMENU_BODY', $templates) && empty($templates['PLUGIN_QUICKMENU_BODY']) )
4375 $template['body'] = "<li><a href=\"<%plugadminurl%>\" title=\"<%plugadmintooltip%>\"><%plugadmintitle%></a></li>\n";
4379 $template['body'] = $templates['PLUGIN_QUICKMENU_BODY'];
4381 if ( !array_key_exists('PLUGIN_QUICKMENU_FOOT', $templates) || empty($templates['PLUGIN_QUICKMENU_FOOT']) )
4383 $template['foot'] = "</ul>\n";
4387 $template['foot'] = $templates['PLUGIN_QUICKMENU_FOOT'];
4390 $handler = new Actions($this->skintype);
4391 $parser = new PARSER($handler);
4393 $parser->parse($template['title']);
4394 echo $template['head'];
4395 foreach ( $pluginExtras as $aInfo )
4398 'plugadminurl' => Entity::hsc($aInfo['url']),
4399 'plugadmintooltip' => Entity::hsc($aInfo['tooltip']),
4400 'plugadmintitle' => Entity::hsc($aInfo['title']),
4402 echo Template::fill($template['body'], $data);
4404 echo $template['foot'];
4410 * AdminActions::parse_requestblogid()
4411 * Parse skinvar requestblogid
4416 public function parse_requestblogid()
4418 echo intRequestVar('blogid');
4423 * AdminActions::parse_requestiprange()
4424 * Parse skinvar requestiprange
4429 public function parse_requestiprange()
4431 if ( requestVar('iprange') )
4433 echo Entity::hsc(requestVar('iprange'));
4435 elseif ( requestVar('ip') )
4437 echo Entity::hsc(requestVar('ip'));
4443 * AdminActions::parse_selectlocaladminskinfiles()
4444 * Parse skinvar selectlocaladminskinfiles
4449 public function parse_selectlocaladminskinfiles()
4451 global $DIR_SKINS, $manager, $DIR_LIBS;
4453 if ( !class_exists('SkinImport', FALSE) )
4455 include_once("{$DIR_LIBS}skinie.php");
4457 $adminskindir = $DIR_SKINS . 'admin/';
4458 $candidates = SkinImport::searchForCandidates($adminskindir);
4460 foreach ( $candidates as $skinname => $skinfile )
4462 $html = Entity::hsc($skinfile);
4463 echo '<option value="' . $html . '">' . $skinname . "</option>\n";
4470 * AdminActions::parse_selectlocalskinfiles()
4471 * Parse skinvar selectlocalskinfiles
4476 public function parse_selectlocalskinfiles()
4480 $candidates = SkinImport::searchForCandidates($DIR_SKINS);
4482 foreach ( $candidates as $skinname => $skinfile )
4484 $html = Entity::hsc($skinfile);
4485 echo '<option value="' . $html . '">' . $skinname . "</option>\n";
4492 * AdminActions::parse_skineditallowedlist()
4493 * Parse skinvar skineditallowedlist
4495 * @param string $type type of skin
4496 * @param string $templateName name of template
4499 public function parse_skineditallowedlist($type, $templateName = '')
4504 $query = "SELECT bshortname, bname FROM %s;";
4506 'content' => 'shortblognames'
4508 $query = sprintf($query, sql_table('blog'));
4509 Showlist($query, 'table', $show, $templateName);
4512 $query = "SELECT tdname as name, tddesc as description FROM %s WHERE tdname NOT LIKE 'admin/%%';";
4514 'content' => 'shortnames'
4516 $query = sprintf($query, sql_table('template_desc'));
4517 Showlist($query, 'table', $show, $templateName);
4524 * AdminActions::parse_skinielist()
4525 * Parse skinvar skinielist
4527 * @param string $type type of skin
4528 * @param string $templateName name of template to use
4531 public function parse_skinielist($type, $templateName = '')
4535 $templates = array();
4536 if ( $templateName )
4538 $templates =& $manager->getTemplate($templateName);
4540 if ( array_key_exists('SKINIE_EXPORT_LIST', $templates) && !empty($templates['SKINIE_EXPORT_LIST']) )
4542 $template = $templates['SKINIE_EXPORT_LIST'];
4547 . "<input type=\"checkbox\" name=\"<%typeid%>\" id=\"<%expid%>\" />\n"
4548 . "<label for=\"<%expid%>\"><%expname%></label>\n"
4550 . "<td><%expdesc%></td>\n"
4557 $res = DB::getResult('SELECT * FROM ' . sql_table('skin_desc'). " WHERE sdname NOT LIKE 'admin/%%';");
4558 foreach ( $res as $row )
4561 'typeid' => 'skin[' . $row['sdnumber'] . ']',
4562 'expid' => 'skinexp' . $row['sdnumber'],
4563 'expname' => Entity::hsc($row['sdname']),
4564 'expdesc' => Entity::hsc($row['sddesc'])
4566 echo Template::fill($template, $data);
4570 $res = DB::getResult('SELECT * FROM '.sql_table('template_desc'). " WHERE tdname NOT LIKE 'admin/%%';");
4571 foreach ( $res as $row )
4574 'typeid' => 'template[' . $row['tdnumber'] . ']',
4575 'expid' => 'templateexp' . $row['tdnumber'],
4576 'expname' => Entity::hsc($row['tdname']),
4577 'expdesc' => Entity::hsc($row['tddesc'])
4579 echo Template::fill($template, $data);
4587 * AdminActions::parse_skinoverview()
4588 * Parse skinvar skinoverview
4590 * @param string $templateName name of template to use
4593 public function parse_skinoverview($templateName = '')
4596 $query = "SELECT * FROM %s WHERE sdname NOT LIKE 'admin/%%';";
4597 $query = sprintf($query, sql_table('skin_desc'));
4599 $template['content'] = 'skinlist';
4600 $template['tabindex'] = 10;
4602 Showlist($query, 'table', $template, $templateName);
4607 * AdminActions::parse_skintypehelp()
4608 * Check editing skintypehelp
4613 public function parse_skintypehelp()
4615 $nowSkinType = strtolower(trim(requestVar('type')));
4617 /* TODO: use Skin class */
4618 $regularType = array(
4629 if ( in_array($nowSkinType, $regularType) )
4631 help('skinpart' . $nowSkinType);
4635 help('skinpartspecial');
4641 * AdminActions::parse_specialskinlist()
4642 * Parse skinvar specialskinlist
4644 * @param string $templateName name of template to use
4647 public function parse_specialskinlist($templateName = '')
4651 $templates = array();
4652 if ( $templateName )
4654 $templates =& $manager->getTemplate($templateName);
4657 /* TODO: use Skin class */
4668 $skinid = intRequestVar('skinid');
4669 $query = "SELECT stype FROM %s WHERE stype NOT IN ('%s') AND sdesc = %d;";
4670 $query = sprintf($query, sql_table('skin'), implode("', '", $nType), $skinid);
4672 $res = DB::getResult($query);
4673 if ( $res && $res->rowCount() > 0 )
4676 if ( array_key_exists('SPECIALSKINLIST_HEAD', $templates) && !empty($templates['SPECIALSKINLIST_HEAD']) )
4678 $template['head'] = $templates['SPECIALSKINLIST_HEAD'];
4682 $template['head'] = "<ul>\n";
4684 echo Template::fill($template['head'], $data);
4685 if ( !array_key_exists('SPECIALSKINLIST_BODY', $templates) || empty($templates['SPECIALSKINLIST_BODY']) )
4687 $template['body'] = '<li><a tabindex="<%tabindex%>" href="index.php?action=skinedittype&skinid=<%skinid%>'
4688 . '&type=<%skintype%>"><%skintype%></a> (<a tabindex="<%tabindex%>" href="index.php?'
4689 . 'action=skinremovetype&skinid=<%skinid%>&type=<%skintype%>">remove</a>)</li>';
4693 $template['body'] = $templates['SPECIALSKINLIST_BODY'];
4697 foreach ( $res as $row )
4700 'tabindex' => $tabstart++,
4701 'skinid' => $skinid,
4702 'skintype' => Entity::hsc(strtolower($row['stype']))
4704 echo Template::fill($template['body'], $data);
4707 if (array_key_exists('SPECIALSKINLIST_FOOT', $templates) && !empty($templates['SPECIALSKINLIST_FOOT']) )
4709 $template['foot'] = $templates['SPECIALSKINLIST_FOOT'];
4713 $template['foot'] = "</ul>\n";
4715 echo Template::fill($template['foot'], $data);
4721 * AdminActions::parse_sprinttext()
4724 * @param string $which
4725 * @param string $val
4728 public function parse_sprinttext($which, $val)
4730 if ( !defined($which) )
4736 $base = constant($which);
4739 if ( preg_match('#[^<|%].*[^%|>]#', $val, $matchies) )
4741 if ( !preg_match('#[(].*[^)]#', $matchies[0], $args) )
4743 $met = 'parse_' . $matchies[0];
4747 $arg = trim($args[0], '()');
4748 $met = 'parse_' . substr($matchies[0], 0, strpos($matchies[0], '('));
4751 if ( method_exists($this, $met) )
4753 $value = call_user_func(array(&$this, $met), $arg);
4757 if ( !isset($value) || empty($value) )
4761 echo sprintf($base, $value);
4766 * AdminActions::parse_systemsettings()
4767 * Parse skinvar systemsettings
4769 * @param string $type type of settings for system
4770 * @param string $templateName name of template to use
4773 public function parse_systemsettings($type = 'phpinfo', $templateName = '')
4775 global $manager, $member, $CONF, $nucleus;
4777 $member->isAdmin() or Admin::disallow();
4779 $enable = _ADMIN_SYSTEMOVERVIEW_ENABLE;
4780 $disable = _ADMIN_SYSTEMOVERVIEW_DISABLE;
4787 case 'sqlserverinfo':
4788 echo DB::getAttribute(PDO::ATTR_SERVER_VERSION);
4790 case 'sqlclientinfo':
4791 echo DB::getAttribute(PDO::ATTR_CLIENT_VERSION);
4793 case 'magicquotesgpc':
4794 echo ini_get('magic_quotes_gpc') ? 'On' : 'Off';
4796 case 'magicquotesruntime':
4797 echo ini_get('magic_quotes_runtime') ? 'On' : 'Off';
4799 case 'registerglobals':
4800 echo ini_get('register_globals') ? 'On' : 'Off';
4803 $templates = array();
4804 if ( $templateName )
4806 $templates =& $manager->getTemplate($templateName);
4808 if ( !array_key_exists('SYSTEMINFO_GDSETTINGS', $templates) || empty($templates['SYSTEMINFO_GDSETTINGS']) )
4810 $template = "<tr>\n"
4811 . "<td><%key%></td>\n"
4812 . "<td><%value%></td>\n"
4817 $template = $templates['SYSTEMINFO_GDSETTINGS'];
4820 $gdinfo = gd_info();
4822 foreach ( $gdinfo as $key => $value )
4824 if ( is_bool($value) )
4826 $value = $value ? $enable : $disable;
4830 $value = Entity::hsc($value);
4836 echo Template::fill($template, $data);
4841 phpinfo(INFO_MODULES);
4842 $im = ob_get_contents();
4844 echo ( i18n::strpos($im, 'mod_rewrite') !== FALSE ) ? $enable : $disable;
4846 case 'nucleusversion':
4847 echo getNucleusVersion() / 100 . '(' . $nucleus['version'] . ')';
4849 case 'nucleuspatchlevel':
4850 echo getNucleusPatchLevel();
4856 echo $CONF['ItemURL'];
4858 case 'alertonheaderssent':
4859 echo $CONF['alertOnHeadersSent'] ? $enable : $disable;
4861 case 'nucleuscodename':
4862 if ( $nucleus['codename'] != '' )
4864 echo ' "' . $nucleus['codename'] . '"';
4867 case 'versioncheckurl':
4868 echo sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
4875 * AdminActions::parse_templateoverview()
4876 * Parse skinvar templateoverview
4878 * @param string $templateName name of template to use
4881 public function parse_templateoverview($templateName = '')
4883 $query = "SELECT * FROM %s WHERE tdname NOT LIKE 'admin/%%' ORDER BY tdname";
4884 $query = sprintf($query, sql_table('template_desc'));
4886 $template['content'] = 'templatelist';
4887 $template['tabindex'] = 10;
4889 Showlist($query, 'table', $template, $templateName);
4895 * AdminActions::parse_ticket()
4901 public function parse_ticket()
4904 $manager->addTicketHidden();
4909 * AdminActions::parse_versioncheckurl()
4910 * Parse skinvar versioncheckurl
4915 public function parse_versioncheckurl()
4917 echo sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
4922 * AdminActions::parse_yrbloglist()
4923 * Parse skinvar yrbloglist
4925 * @param string $templateName name of template to use
4928 public function parse_yrbloglist($templateName = '')
4931 $showAll = requestVar('showall');
4933 if ( $member->isAdmin() && ($showAll == 'yes') )
4935 // Super-Admins have access to all blogs! (no add item support though)
4936 $query = "SELECT bnumber, bname, 1 as tadmin, burl, bshortname"
4938 . " ORDER BY bnumber;";
4939 $query = sprintf($query, sql_table('blog'));
4943 $query = "SELECT bnumber, bname, tadmin, burl, bshortname"
4945 . " WHERE tblog=bnumber and tmember=%d"
4946 . " ORDER BY bnumber;";
4947 $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
4950 $template['content'] = 'bloglist';
4951 $template['superadmin'] = $member->isAdmin();
4953 $amount = Showlist($query, 'table', $template, $templateName);
4955 if ( ($showAll != 'yes') && ($member->isAdmin()) )
4957 $query = 'SELECT COUNT(*) as result FROM ' . sql_table('blog');
4959 $total = DB::getValue($query);
4960 if ( $total > $amount )
4962 echo '<p><a href="index.php?action=overview&showall=yes">' . _OVERVIEW_SHOWALL . '</a></p>';
4968 echo _OVERVIEW_NOBLOGS;
4970 elseif( $amount != 0 )
4972 echo '<h2>' . _OVERVIEW_YRDRAFTS . '</h2>';
4974 $query = "SELECT ititle, inumber, bshortname"
4976 . ' WHERE iauthor=%d AND iblog=bnumber AND idraft=1;';
4977 $query = sprintf($query, sql_table('item'), sql_table('blog'), (integer) $member->getID());
4979 $template['content'] = 'draftlist';
4981 $amountdrafts = Showlist($query, 'table', $template, $templateName);
4982 if ( $amountdrafts == 0 )
4984 echo _OVERVIEW_NODRAFTS;
4991 * AdminActions::checkCondition()
4992 * Checks conditions for if statements
4994 * @param string $field type of <%if%>
4995 * @param string $name property of field
4996 * @param string $value value of property
4997 * @return boolean condition
4999 protected function checkCondition($field, $name='', $value = '')
5001 global $CONF, $archiveprevexists, $archivenextexists, $blog, $catid, $itemidnext, $itemidprev, $manager, $member;
5011 $blog =& $manager->getBlog($blogid);
5015 $blogid = getBlogIDFromCatID($catid);
5016 $blog =& $manager->getBlog($blogid);
5018 elseif ( intRequestVar('catid') )
5020 $catid = intRequestVar('catid');
5021 $blogid = getBlogIDFromCatID($catid);
5022 $blog =& $manager->getBlog($blogid);
5029 $condition = ($blog && $this->ifCategory($name, $value));
5032 $condition = $member->isLoggedIn();
5035 $condition = $member->isLoggedIn() && $this->ifOnTeam($name);
5038 $condition = $member->isLoggedIn() && $this->ifAdmin($name);
5041 $condition = $member->isLoggedIn() && $member->isAdmin();
5043 case 'allowloginedit':
5044 $condition = $member->isLoggedIn() && ($CONF['AllowLoginEdit'] || $member->isAdmin());
5047 $condition = ($itemidnext != '');
5050 $condition = ($itemidprev != '');
5052 case 'archiveprevexists':
5053 $condition = ($archiveprevexists == true);
5055 case 'archivenextexists':
5056 $condition = ($archivenextexists == true);
5059 $condition = (($name == $this->skintype) || ($name == requestVar('action')));
5062 $condition = $this->ifHasPlugin($name, $value);
5065 $condition = (Admin::getAdminAction() == $name);
5067 case 'adminoldaction':
5068 $condition = (Admin::getAdminAction() == $name);
5070 case 'addresschange':
5071 $condition = ($this->ifAddresscange());
5073 case 'bechangepass':
5074 $condition = ($this->beChangePassword());
5076 case 'skincandidates':
5077 $condition = ($this->ifSkincandidates());
5080 $condition = requestVar('nameclashes');
5082 case 'existsnewplugin':
5083 $condition = ($this->existsNewPlugin());
5090 $condition = (boolean) ($member->getAutosave() == $value);
5097 $condition = (Admin::$blog->getSetting($name) == $value);
5099 case 'itemproperty':
5104 if ( array_key_exists($name, Admin::$contents) )
5106 $condition = (boolean) (Admin::$contents[$name] == $value);
5110 $condition = $manager->pluginInstalled("NP_{$field}") && $this->ifPlugin($field, $name, $value);
5117 * AdminActions::_ifHasPlugin()
5118 * hasplugin,PlugName
5119 * -> checks if plugin exists
5120 * hasplugin,PlugName,OptionName
5121 * -> checks if the option OptionName from plugin PlugName is not set to 'no'
5122 * hasplugin,PlugName,OptionName=value
5123 * -> checks if the option OptionName from plugin PlugName is set to value
5125 * @param string $name name of plugin
5126 * @param string $value
5129 private function ifHasPlugin($name, $value)
5133 // (pluginInstalled method won't write a message in the actionlog on failure)
5134 if ( $manager->pluginInstalled("NP_{$name}") )
5136 $plugin =& $manager->getPlugin("NP_{$name}");
5137 if ( $plugin != NULL )
5145 list($name2, $value2) = preg_split('#=#', $value, 2);
5146 if ( $value2 == "" && $plugin->getOption($name2) != 'no' )
5150 else if ( $plugin->getOption($name2) == $value2 )
5161 * AdminActions::beChangePassword()
5166 private function beChangePassword()
5168 return intRequestVar('bNeedsPasswordChange');
5172 * AdminActions::ifSkincandidates()
5173 * Checks if a plugin exists and call its doIf function
5179 private function ifSkincandidates()
5182 $candidates = SKINIMPORT::searchForCandidates($DIR_SKINS);
5183 return (count($candidates) > 0);
5187 * AdminActions::ifPlugin()
5188 * Checks if a plugin exists and call its doIf function
5190 * @param string $name name of plugin
5191 * @param string $key
5192 * @param string $value
5195 private function ifPlugin($name, $key = '', $value = '')
5199 $plugin =& $manager->getPlugin("NP_{$name}");
5205 $params = func_get_args();
5206 array_shift($params);
5208 return call_user_func_array(array(&$plugin, 'doIf'), $params);
5212 * AdminActions::ifCategory()
5213 * Different checks for a category
5215 * @param string $key key for information of category
5216 * @param string $value value for information of category
5219 private function ifCategory($key = '', $value='')
5221 global $blog, $catid;
5223 // when no parameter is defined, just check if a category is selected
5224 if (($key != 'catname' && $key != 'catid') || ($value == ''))
5226 return $blog->isValidCategory($catid);
5229 // check category name
5230 if ( $key == 'catname' )
5232 $value = $blog->getCategoryIdFromName($value);
5233 if ($value == $catid)
5235 return $blog->isValidCategory($catid);
5239 // check category id
5240 if (($key == 'catid') && ($value == $catid))
5242 return $blog->isValidCategory($catid);
5249 * AdminActions::ifOnTeam()
5250 * Checks if a member is on the team of a blog and return his rights
5252 * @param string $blogName name of weblog
5255 private function ifOnTeam($blogName = '')
5257 global $blog, $member, $manager;
5259 // when no blog found
5260 if ( ($blogName == '') && !is_object($blog) )
5265 // explicit blog selection
5266 if ($blogName != '')
5268 $blogid = getBlogIDFromName($blogName);
5271 if (($blogName == '') || !$manager->existsBlogID($blogid))
5274 $blogid = $blog->getID();
5276 return $member->teamRights($blogid);
5280 * AdminActions::ifAdmin()
5281 * Checks if a member is admin of a blog
5283 * @param string $blogName name of weblog
5286 private function ifAdmin($blogName = '')
5288 global $blog, $member, $manager;
5290 // when no blog found
5291 if (($blogName == '') && (!is_object($blog)))
5296 // explicit blog selection
5297 if ($blogName != '')
5299 $blogid = getBlogIDFromName($blogName);
5302 if (($blogName == '') || !$manager->existsBlogID($blogid))
5305 $blogid = $blog->getID();
5308 return $member->isBlogAdmin($blogid);
5312 * AdminActions::ifAddresscange()
5313 * Check e-Mail address is changed
5318 private function ifAddresscange()
5322 $key = $this->objAdmin->sessionVar("{$CONF['CookiePrefix']}ackey");
5327 $info = MEMBER::getActivationInfo($key);
5332 $mem =& $manager->getMember($info->vmember);
5337 if ( $info->vtype == 'addresschange' )
5345 * AdminActions::templateEditRow()
5348 * @param array $template
5349 * @param string $desc
5350 * @param string $name
5351 * @param string $help
5352 * @param integer $tabindex
5353 * @param boolean $big
5354 * @param array $tmplt
5357 private function templateEditRow(&$template, $desc, $name, $help = '', $tabindex = 0, $big = 0, $tplt = '')
5363 if ( !array_key_exists($name, $template) )
5365 $template[$name] = '';
5373 $tmplt =& $manager->getTemplate($tplt);
5377 'description' => $desc,
5378 'help' => empty($help) ? '' : helpHtml('template' . $help),
5381 'tabindex' => $tabindex,
5382 'rows' => $big ? 10 : 5,
5385 if ( !array_key_exists('TEMPLATE_EDIT_ROW_HEAD', $tmplt) || empty($tmplt['TEMPLATE_EDIT_ROW_HEAD']) )
5387 $base['head'] = "</tr>"
5389 . "<td><%description%><%help%></td>\n"
5390 . "<td id=\"td<%count%>\">\n"
5391 . "<textarea class=\"templateedit\" name=\"<%name%>\" tabindex=\"<%tabindex%>\" cols=\"50\" rows=\"<%rows%>\" id=\"textarea<%count%>\">\n";
5395 $base['head'] = $tmplt['TEMPLATE_EDIT_ROW_HEAD'];
5398 if ( !array_key_exists('TEMPLATE_EDIT_ROW_TAIL', $tmplt) || empty($tmplt['TEMPLATE_EDIT_ROW_TAIL']) )
5400 $base['tail'] = "</textarea>\n"
5405 $base['tail'] = $tmplt['TEMPLATE_EDIT_ROW_TAIL'];
5408 echo TEMPLATE::fill($base['head'], $data);
5409 echo ENTITY::hsc($template[$name]);
5410 echo TEMPLATE::fill($base['tail'], $data);
5418 * AdminActions::customHelp()
5419 * shows a link to custom help file
5422 * @param string $tplName
5423 * @param string $url
5424 * @param string $iconURL
5425 * @param string $alt
5426 * @param string $title
5430 private function customHelp($id, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
5432 echo self::customHelpHtml($id, $tplName, $url, $iconURL, $alt, $title, $onclick);
5436 * AdminActions::customHelp()
5437 * shows a link to custom help file
5440 * @param string $tplName
5441 * @param string $url
5442 * @param string $iconURL
5443 * @param string $alt
5444 * @param string $title
5448 static function customHelplink($id, $tplName = '', $url = '', $title = '', $onclick = '')
5450 global $CONF, $manager;
5452 $templates = array();
5456 $templates =& $manager->getTemplate($tplName);
5459 if ( !array_key_exists('ADMIN_CUSTOMHELPLINK_ANCHOR', $templates) || empty($templates['ADMIN_CUSTOMHELPLINK_ANCHOR']) )
5461 $template = "<a href=\"<%helpurl%>#<%helptarget%>\" title=\"<%title%>\" <%onclick%>>\n";
5465 $template = $templates['ADMIN_CUSTOMHELPLINK_ANCHOR'];
5470 $url = $CONF['AdminURL'] . 'documentation/customHelp.html';
5473 if ( empty($onclick) )
5475 $onclick = 'onclick="if (event && event.preventDefault) event.preventDefault(); return help(this.href);"';
5477 elseif ( preg_match('#^onclick#', $onclick) )
5479 $onclick = $onclick;
5483 $onclick = 'onclick="' . $onclick . '"';
5488 'helptarget' => $id,
5489 'onclick' => $onclick,
5490 'title' => (isset($title) && !empty($title)) ? $title : _HELP_TT,
5492 return Template::fill($template, $data);
5496 * AdminActions::customHelpHtml()
5499 * @param string $tplName
5500 * @param string $url
5501 * @param string $iconURL
5502 * @param string $alt
5503 * @param string $title
5504 * @param string $onclick
5505 * @return string anchor element with help uri
5507 private function customHelpHtml($id, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
5509 global $CONF, $manager;
5511 $templates = array();
5515 $templates =& $manager->getTemplate($tplName);
5517 if ( !array_key_exists('ADMIN_CUSTOMHELPLINK_ICON', $templates) || !empty($templates['ADMIN_CUSTOMHELPLINK_ICON']) )
5519 $template = "<img src=\"<%iconurl%>\" <%width%><%height%>alt=\"<%alt%>\" title=\"<%title%>\" /></a>\n";
5523 $template = $templates['ADMIN_CUSTOMHELPLINK_ICON'];
5526 if ( empty($iconURL) )
5528 $iconURL = $CONF['AdminURL'] . 'documentation/icon-help.gif';
5531 if ( function_exists('getimagesize') )
5533 $size = getimagesize($iconURL);
5534 $width = 'width="' . $size[0] . '" ';
5535 $height = 'height="' . $size[1] . '" ';
5539 'iconurl' => $iconURL,
5541 'height' => $height,
5542 'alt' => (isset($alt) && !empty($alt)) ? $alt : _HELP_TT,
5543 'title' => (isset($title) && !empty($title)) ? $title : _HELP_TT,
5546 $icon = Template::fill($template, $data);
5547 $help = self::customHelplink($id, $tplName, $url, $title, $onclick);
5549 return $help . $icon;
5553 * AdminActions::input_yesno
5556 * @param $checkedval
5563 * @param $templateName
5566 public function input_yesno($name,
5579 $templates = array();
5580 if ( $templateName )
5582 $templates =& $manager->getTemplate($templateName);
5585 if ( $name == 'admin' )
5587 if ( !array_key_exists('INPUTYESNO_TEMPLATE_ADMIN', $templates) || empty($templates['INPUTYESNO_TEMPLATE_ADMIN']) )
5589 $template = '<input onclick="selectCanLogin(true);" type="radio" name="<%name%>" value="<%yesval%>" <%yescheckedval%> id="<%yesid%>" />' . "\n"
5590 . '<label for="<%yesid%>"><%yesvaltext%></label>' . "\n"
5591 . '<input onclick="selectCanLogin(false);" type="radio" name="<%name%>" value="<%noval%>" <%nocheckedval%> id="<%noid%>"<%disabled%> />' . "\n"
5592 . '<label for="<%noid%>"><%novaltext%></label>' . "\n";
5596 $template = $templates['INPUTYESNO_TEMPLATE_ADMIN'];
5601 if ( array_key_exists('INPUTYESNO_TEMPLATE_NORMAL', $templates) && !empty($templates['INPUTYESNO_TEMPLATE_NORMAL']) )
5603 $template = $templates['INPUTYESNO_TEMPLATE_NORMAL'];
5607 if ( array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO', $templates) && !empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO']) )
5609 $template = $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO'];
5612 if ( !isset($template) )
5614 $template = '<input type="radio" name="<%name%>" value="<%yesval%>" <%yescheckedval%> id="<%yesid%>" />' . "\n"
5615 . '<label for="<%yesid%>"><%yesvaltext%></label>' . "\n"
5616 . '<input type="radio" name="<%name%>" value="<%noval%>" <%nocheckedval%> id="<%noid%>"<%disabled%> />' . "\n"
5617 . '<label for="<%noid%>"><%novaltext%></label>' . "\n";
5622 $id = Entity::hsc($name);
5623 $id = str_replace('[', '-', $id);
5624 $id = str_replace(']', '-', $id);
5625 $id1 = $id . Entity::hsc($value1);
5626 $id2 = $id . Entity::hsc($value2);
5628 'name' => Entity::hsc($name),
5629 'yesval' => Entity::hsc($value1),
5630 'noval' => Entity::hsc($value2),
5633 'yesvaltext' => $yesval,
5634 'novaltext' => $noval,
5635 'yescheckedval' => ($checkedval == $value1) ? ' checked="checked" tabindex="' . $tabindex . '"': '',
5636 'nocheckedval' => ($checkedval != $value1) ? ' checked="checked" tabindex="' . $tabindex . '"': '',
5637 'disabled' => ($isAdmin && $name == 'canlogin') ? ' disabled="disabled"' : '',
5642 return Template::fill($template, $dat);
5646 echo Template::fill($template, $dat);
5652 * AdminActions::existsNewPlugin()
5653 * Check exists new plugin
5656 * @return boolean exists or not
5658 private function existsNewPlugin()
5660 global $DIR_PLUGINS;
5662 $query = "SELECT * FROM %s;";
5663 $query = sprintf($query, sql_table('plugin'));
5664 $res = DB::getResult($query);
5666 $installed = array();
5667 foreach( $res as $row )
5669 $installed[] = $row['pfile'];
5672 $files = scandir($DIR_PLUGINS);
5674 $candidates = array();
5675 foreach ( $files as $file )
5677 if ( preg_match("#^(NP_.*)\.php$#", $file, $matches) )
5679 if ( !in_array($matches[1], $installed) )
5681 $candidates[] = preg_replace("#^NP_#", "", $matches[1]);
5685 $this->newPlugCandidates = $candidates;
5686 return (count($candidates) > 0);
5690 * AdminActions::pagehead()
5691 * Output admin page head
5696 public function parse_pagehead()
5698 global $member, $nucleus, $CONF, $manager;
5700 $extrahead = Admin::getAdminextrahead();
5702 'extrahead' => &$extrahead,
5703 'action' => Admin::getAdminAction()
5705 $manager->notify('AdminPrePageHead', $data);
5707 $content = $this->parser->skin->getContentFromDB('pagehead');
5710 $baseUrl = Entity::hsc($CONF['SkinsURL']);
5714 if ( !array_key_exists('AdminCSS', $CONF) )
5716 DB::execute("INSERT INTO " . sql_table('config') . " VALUES ('AdminCSS', 'original')");
5717 $CONF['AdminCSS'] = 'original';
5721 /* HTTP 1.1 application for no caching */
5722 header("Cache-Control: no-cache, must-revalidate");
5723 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
5725 $root_element = 'html';
5726 $charset = i18n::get_current_charset();
5727 $locale = preg_replace('#_#', '-', i18n::get_current_locale());
5728 $xml_version_info = self::$xml_version_info;
5729 $formal_public_identifier = self::$formal_public_identifier;
5730 $system_identifier = self::$system_identifier;
5731 $xhtml_namespace = self::$xhtml_namespace;
5733 echo "<?xml version=\"{$xml_version_info}\" encoding=\"{$charset}\" ?>\n";
5734 echo "<!DOCTYPE {$root_element} PUBLIC \"{$formal_public_identifier}\" \"{$system_identifier}\">\n";
5735 echo "<{$root_element} xmlns=\"{$xhtml_namespace}\" xml:lang=\"{$locale}\" lang=\"{$locale}\">\n";
5737 echo '<title>' . Entity::hsc($CONF['SiteName']) . " - Admin</title>\n";
5740 echo "<link rel=\"stylesheet\" title=\"Nucleus Admin Default\" type=\"text/css\" href=\"{$baseUrl}admin/defaultadmin/styles/admin_{$CONF["AdminCSS"]}.css\" />\n";
5742 echo "<link rel=\"stylesheet\" title=\"Nucleus Admin Default\" type=\"text/css\" href=\"{$baseUrl}admin/defaultadmin/styles/addedit.css\" />\n";
5743 echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/edit.js\"></script>\n";
5744 echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/admin.js\"></script>\n";
5745 echo "<script type=\"text/javascript\" src=\"{$baseUrl}javascripts/compatibility.js\"></script>\n";
5746 echo "{$extrahead}\n";
5749 echo "<div id=\"adminwrapper\">\n";
5750 echo "<div class=\"header\">\n";
5751 echo '<h1>' . Entity::hsc($CONF['SiteName']) . "</h1>\n";
5753 echo "<div id=\"container\">\n";
5754 echo "<div id=\"content\">\n";
5755 echo "<div class=\"loginname\">\n";
5757 if ( !$member->isLoggedIn() )
5759 echo '<a href="index.php?action=showlogin" title="Log in">' . _NOTLOGGEDIN . "</a><br />\n";
5763 echo _LOGGEDINAS . ' ' . $member->getDisplayName() ." - <a href='index.php?action=logout'>" . _LOGOUT. "</a><br />\n";
5764 echo "<a href='index.php?action=overview'>" . _ADMINHOME . "</a> - ";
5767 echo "<a href='".$CONF['IndexURL']."'>"._YOURSITE."</a><br />\n";
5770 if ( !array_key_exists('codename', $nucleus) || empty($nucleus['codename']) )
5772 $codenamestring = '';
5776 $codenamestring = ' "' . $nucleus['codename'].'"';
5779 if ( $member->isLoggedIn() && $member->isAdmin() )
5781 $checkURL = sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
5782 echo '<a href="' . $checkURL . '" title="' . _ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_TITLE . '">Nucleus CMS ' . $nucleus['version'] . $codenamestring . '</a>';
5784 $newestVersion = getLatestVersion();
5785 $newestCompare = str_replace('/', '.', $newestVersion);
5786 $currentVersion = str_replace(array('/','v'), array('.',''), $nucleus['version']);
5788 if ( $newestVersion && version_compare($newestCompare, $currentVersion) > 0 )
5791 echo '<a style="color:red" href="http://nucleuscms.org/upgrade.php" title="' . _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE . '">';
5792 echo _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT . $newestVersion;
5798 echo "Nucleus CMS {$nucleus['version']}{$codenamestring}";
5805 $this->parser->parse($content);
5812 * AdminActionss::pagefoot()
5813 * Output admin page foot include quickmenu
5818 public function parse_pagefoot()
5820 global $action, $member, $manager;
5823 'action' => Admin::getAdminAction()
5825 $manager->notify('AdminPrePageFoot', $data);
5827 $content = $this->parser->skin->getContentFromDB('pagefoot');
5830 if ( $member->isLoggedIn() && ($action != 'showlogin') )
5832 echo '<h2>' . _LOGOUT . "</h2>\n";
5834 echo '<li><a href="index.php?action=overview">' . _BACKHOME . "</a></li>\n";
5835 echo '<li><a href="index.php?action=logout">' . _LOGOUT . "</a></li>\n";
5839 echo "<div class=\"foot\">\n";
5840 echo '<a href="' . _ADMINPAGEFOOT_OFFICIALURL . '">Nucleus CMS</a> © 2002-' . date('Y') . ' ' . _ADMINPAGEFOOT_COPYRIGHT;
5842 echo '<a href="' . _ADMINPAGEFOOT_DONATEURL . '">' . _ADMINPAGEFOOT_DONATE . "</a>\n";
5845 echo "<div id=\"quickmenu\">\n";
5847 if ( ($action != 'showlogin') && ($member->isLoggedIn()) )
5850 echo '<li><a href="index.php?action=overview">' . _QMENU_HOME . "</a></li>\n";
5853 echo '<h2>' . _QMENU_ADD . "</h2>\n";
5854 echo "<form method=\"get\" action=\"index.php\">\n";
5856 echo "<input type=\"hidden\" name=\"action\" value=\"createitem\" />\n";
5858 $showAll = requestVar('showall');
5860 if ( ($member->isAdmin()) && ($showAll == 'yes') )
5862 // Super-Admins have access to all blogs! (no add item support though)
5863 $query = "SELECT bnumber as value, bname as text FROM %s ORDER BY bname;";
5864 $query = sprintf($query, sql_table('blog'));
5868 $query = "SELECT bnumber as value, bname as text FROM %s, %s WHERE tblog=bnumber and tmember=%d ORDER BY bname;";
5869 $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
5871 $template['name'] = 'blogid';
5872 $template['tabindex'] = 15000;
5873 $template['extra'] = _QMENU_ADD_SELECT;
5874 $template['selected'] = -1;
5875 $template['shorten'] = 10;
5876 $template['shortenel'] = '';
5877 $template['javascript'] = 'onchange="return form.submit()"';
5878 showlist($query, 'select', $template);
5883 echo "<h2>{$member->getDisplayName()}</h2>\n";
5885 echo '<li><a href="index.php?action=editmembersettings">' . _QMENU_USER_SETTINGS . "</a></li>\n";
5886 echo '<li><a href="index.php?action=browseownitems">' . _QMENU_USER_ITEMS . "</a></li>\n";
5887 echo '<li><a href="index.php?action=browseowncomments">' . _QMENU_USER_COMMENTS . "</a></li>\n";
5890 if ( $member->isAdmin() )
5892 echo '<h2>' . _QMENU_MANAGE . "</h2>\n";
5894 echo '<li><a href="index.php?action=actionlog">' . _QMENU_MANAGE_LOG . "</a></li>\n";
5895 echo '<li><a href="index.php?action=settingsedit">' . _QMENU_MANAGE_SETTINGS . "</a></li>\n";
5896 echo '<li><a href="index.php?action=systemoverview">' . _QMENU_MANAGE_SYSTEM . "</a></li>\n";
5897 echo '<li><a href="index.php?action=usermanagement">' . _QMENU_MANAGE_MEMBERS . "</a></li>\n";
5898 echo '<li><a href="index.php?action=createnewlog">' . _QMENU_MANAGE_NEWBLOG . "</a></li>\n";
5899 echo '<li><a href="index.php?action=backupoverview">' . _QMENU_MANAGE_BACKUPS . "</a></li>\n";
5900 echo '<li><a href="index.php?action=pluginlist">' . _QMENU_MANAGE_PLUGINS . "</a></li>\n";
5903 echo "<h2>" . _QMENU_LAYOUT . "</h2>\n";
5905 echo '<li><a href="index.php?action=skinoverview">' . _QMENU_LAYOUT_SKINS . "</a></li>\n";
5906 echo '<li><a href="index.php?action=templateoverview">' . _QMENU_LAYOUT_TEMPL . "</a></li>\n";
5907 echo '<li><a href="index.php?action=skinieoverview">' . _QMENU_LAYOUT_IEXPORT . "</a></li>\n";
5911 $data = array('options' => array());
5913 $manager->notify('QuickMenu', $data);
5915 if ( count($data['options']) > 0 )
5917 echo "<h2>" . _QMENU_PLUGINS . "</h2>\n";
5919 foreach ( $data['options'] as $option )
5921 echo '<li><a href="' . Entity::hsc($option['url']) . '" title="' . Entity::hsc($option['tooltip']) . '">' . Entity::hsc($option['title']) . "</a></li>\n";
5926 else if ( ($action == 'activate') || ($action == 'activatesetpwd') )
5929 echo '<h2>' . _QMENU_ACTIVATE . '</h2>' . _QMENU_ACTIVATE_TEXT;
5933 echo '<h2>' . _QMENU_INTRO . '</h2>' . _QMENU_INTRO_TEXT;
5936 echo "<!-- quickmenu -->\n";
5939 echo "<!-- content -->\n";
5942 echo "<!-- container -->\n";
5945 echo "<!-- adminwrapper -->\n";
5953 $this->parser->parse($content);
5960 * AdminActions::selectBlog()
5961 * Inserts a HTML select element with choices for all blogs to which the user has access
5962 * mode = 'blog' => shows blognames and values are blogids
5963 * mode = 'category' => show category names and values are catids
5965 * @param string $name
5966 * @param string $mode
5967 * @param integer $selected
5968 * @param integer $tabindex
5969 * @param integer $showNewCat
5970 * @param integer $iForcedBlogInclude ID for weblog always included
5971 * @param $iForcedBlogInclude
5972 * ID of a blog that always needs to be included, without checking if the
5973 * member is on the blog team (-1 = none)
5976 private function selectBlog($name, $mode='blog', $selected = 0, $tabindex = 0, $showNewCat = 0, $iForcedBlogInclude = -1)
5978 global $member, $CONF;
5980 // 0. get IDs of blogs to which member can post items (+ forced blog)
5981 $aBlogIds = array();
5982 if ( $iForcedBlogInclude != -1 )
5984 $aBlogIds[] = intval($iForcedBlogInclude);
5987 if ( $member->isAdmin() && array_key_exists('ShowAllBlogs', $CONF) && $CONF['ShowAllBlogs'] )
5989 $query = "SELECT bnumber FROM %s ORDER BY bname;";
5990 $query = sprintf($query, sql_table('blog'));
5994 $query = "SELECT bnumber FROM %s, %s WHERE tblog=bnumber AND tmember=%d;";
5995 $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
5998 $rblogids = DB::getResult($query);
5999 foreach ( $rblogids as $row )
6001 if ( $row['bnumber'] != $iForcedBlogInclude )
6003 $aBlogIds[] = intval($row['bnumber']);
6007 if ( count($aBlogIds) == 0 )
6012 echo "<select name=\"{$name}\" tabindex=\"{$tabindex}\">\n";
6014 // 1. select blogs (we'll create optiongroups)
6015 // (only select those blogs that have the user on the team)
6016 $queryBlogs = "SELECT bnumber, bname FROM %s WHERE bnumber in (%s) ORDER BY bname;";
6017 $queryBlogs = sprintf($queryBlogs, sql_table('blog'), implode(',', $aBlogIds));
6018 $blogs = DB::getResult($queryBlogs);
6020 if ( $mode == 'category' )
6022 if ( $blogs->rowCount() > 1 )
6026 foreach ( $blogs as $rBlog )
6028 if ( isset($multipleBlogs) && !empty($multipleBlogs) )
6030 echo '<optgroup label="' . Entity::hsc($rBlog['bname']) . "\">\n";
6033 // show selection to create new category when allowed/wanted
6036 // check if allowed to do so
6037 if ( $member->blogAdminRights($rBlog['bnumber']) )
6039 echo '<option value="newcat-' . $rBlog['bnumber'] . '">' . _ADD_NEWCAT . "</option>\n";
6043 // 2. for each category in that blog
6044 $catQuery = "SELECT cname, catid FROM %s WHERE cblog=%d ORDER BY cname ASC;";
6045 $catQuery = sprintf($catQuery, sql_table('category'), (integer) $rBlog['bnumber']);
6046 $categories = DB::getResult($catQuery);
6047 foreach ( $categories as $rCat )
6049 if ( $rCat['catid'] == $selected )
6051 $selectText = ' selected="selected" ';
6057 echo '<option value="' . $rCat['catid'] . '" ' . $selectText . '>' . Entity::hsc($rCat['cname']) . "</option>\n";
6060 if ( isset($multipleBlogs) && !empty($multipleBlogs) )
6068 foreach ( $blogs as $rBlog )
6070 echo '<option value="' . $rBlog['bnumber'] . '"';
6071 if ( $rBlog['bnumber'] == $selected )
6073 echo '<option value="' . $rBlog['bnumber'] . '" selected="selected">' . Entity::hsc($rBlog['bname']) . "</option>\n";
6077 echo '<option value="' . $rBlog['bnumber'] . '">' . Entity::hsc($rBlog['bname']) . "</option>\n";