2 class AdminActions extends BaseActions
8 /* FIXME: this is really needed or not */
12 * AdminActions::$page_action_names
13 * list of whole action names with which this class can deal
15 static private $page_action_names = array(
25 'adminskineditallowedlist',
28 'adminspecialskinlist',
29 'admintemplateoverview',
30 'allowedadminskinactions',
50 'configsettingsyesno',
52 'defaultadminskintypes',
62 'editadmintemplateinfo',
71 'editplugoptionslist',
82 'insertpluginoptions',
86 'languageselectoptions',
87 'listplugplugoptionrow',
104 'selectlocaladminskinfiles',
105 'selectlocalskinfiles',
106 'skineditallowedlist',
118 'adminstyleselectoptions',
119 /* FIXME: typo of adminstylesheets */
121 'adminskinselectoptions'
122 /* FIXME: lack entries. need to be review
123 * parse_banlistdeletedlist
126 * parse_customhelplink
128 * parse_insertpluginfo
129 * parse_insplugoptcontent
135 * AdminActions::$page_type_friendly_names
136 * friendly name for wrapped page types
138 static private $page_type_friendly_names = array(
139 'actionlog' => _ADM_SKPRT_ACTIONLOG,
140 'activate' => _ADM_SKPRT_ACTIVATE,
141 'activatesetpwd' => _ADM_SKPRT_ACTIVATESETPWD,
142 'addnewlog' => _ADM_SKPRT_ADDNEWLOG,
143 'adminerrorpage' => _ADM_SKPRT_ADMINERRORPAGE,
144 'adminskindelete' => _ADM_SKPRT_ADMINSKINDELETE,
145 'adminskinedit' => _ADM_SKPRT_ADMINSKINEDIT,
146 'adminskinedittype' => _ADM_SKPRT_ADMINSKINEDITTYPE,
147 'adminskiniedoimport' => _ADM_SKPRT_ADMINSKINIEDOIMPORT,
148 'adminskinieimport' => _ADM_SKPRT_ADMINSKINIEIMPORT,
149 'adminskinieoverview' => _ADM_SKPRT_ADMINSKINIEOVERVIEW,
150 'adminskinoverview' => _ADM_SKPRT_ADMINSKINOVERVIEW,
151 'adminskinremovetype' => _ADM_SKPRT_ADMINSKINREMOVETYPE,
152 'admintemplatedelete' => _ADM_SKPRT_ADMINTEMPLATEDELETE,
153 'admintemplateedit' => _ADM_SKPRT_ADMINTEMPLATEEDIT,
154 'admintemplateoverview' => _ADM_SKPRT_ADMINTEMPLATEOVERVIEW,
155 'backupoverview' => _ADM_SKPRT_BACKUPOVERVIEW,
156 'backuprestore' => _ADM_SKPRT_BACKUPRESTORE,
157 'banlist' => _ADM_SKPRT_BANLIST,
158 'banlistdelete' => _ADM_SKPRT_BANLISTDELETE,
159 'banlistdeleteconfirm' => _ADM_SKPRT_BANLISTDELETECONFIRM,
160 'banlistnew' => _ADM_SKPRT_BANLISTNEW,
161 'batchcategory' => _ADM_SKPRT_BATCHCATEGORY,
162 'batchcomment' => _ADM_SKPRT_BATCHCOMMENT,
163 'batchdelete' => _ADM_SKPRT_BATCHDELETE,
164 'batchitem' => _ADM_SKPRT_BATCHITEM,
165 'batchmember' => _ADM_SKPRT_BATCHMEMBER,
166 'batchmove' => _ADM_SKPRT_BATCHMOVE,
167 'batchteam' => _ADM_SKPRT_BATCHTEAM,
168 'blogcommentlist' => _ADM_SKPRT_BLOGCOMMENTLIST,
169 'blogselectbox' => _ADM_SKPRT_BLOGSELECTBOX,
170 'blogsettings' => _ADM_SKPRT_BLOGSETTINGS,
171 'bookmarklet' => _ADM_SKPRT_BOOKMARKLET,
172 'browseowncomments' => _ADM_SKPRT_BROWSEOWNCOMMENTS,
173 'browseownitems' => _ADM_SKPRT_BROWSEOWNITEMS,
174 'categorydelete' => _ADM_SKPRT_CATEGORYDELETE,
175 'categoryedit' => _ADM_SKPRT_CATEGORYEDIT,
176 'commentdelete' => _ADM_SKPRT_COMMENTDELETE,
177 'commentedit' => _ADM_SKPRT_COMMENTEDIT,
178 'createitem' => _ADM_SKPRT_CREATEITEM,
179 'createnewlog' => _ADM_SKPRT_CREATENEWLOG,
180 'deleteblog' => _ADM_SKPRT_DELETEBLOG,
181 'editmembersettings' => _ADM_SKPRT_EDITMEMBERSETTINGS,
182 'insertpluginoptions' => _ADM_SKPRT_INSERTPLUGINO,
183 'itemcommentlist' => _ADM_SKPRT_ITEMCOMMENTLIST,
184 'itemdelete' => _ADM_SKPRT_ITEMDELETE,
185 'itemedit' => _ADM_SKPRT_ITEMEDIT,
186 'itemlist' => _ADM_SKPRT_ITEMLIST,
187 'itemmove' => _ADM_SKPRT_ITEMMOVE,
188 'manage' => _ADM_SKPRT_MANAGE,
189 'manageteam' => _ADM_SKPRT_MANAGETEAM,
190 'memberdelete' => _ADM_SKPRT_MEMBERDELETE,
191 'overview' => _ADM_SKPRT_OVERVIEW,
192 'pagefoot' => _ADM_SKPRT_PAGEFOOT,
193 'pagehead' => _ADM_SKPRT_PAGEHEAD,
194 'plugindelete' => _ADM_SKPRT_PLUGINDELETE,
195 'pluginhelp' => _ADM_SKPRT_PLUGINHELP,
196 'pluginlist' => _ADM_SKPRT_PLUGINLIST,
197 'pluginoptions' => _ADM_SKPRT_PLUGINOPTIONS,
198 'settingsedit' => _ADM_SKPRT_SETTINGSEDIT,
199 'showlogin' => _ADM_SKPRT_SHOWLOGIN,
200 'skindelete' => _ADM_SKPRT_SKINDELETE,
201 'skinedit' => _ADM_SKPRT_SKINEDIT,
202 'skinedittype' => _ADM_SKPRT_SKINEDITTYPE,
203 'skiniedoimport' => _ADM_SKPRT_SKINIEDOIMPORT,
204 'skinieimport' => _ADM_SKPRT_SKINIEIMPORT,
205 'skinieoverview' => _ADM_SKPRT_SKINIEOVERVIEW,
206 'skinoverview' => _ADM_SKPRT_SKINOVERVIEW,
207 'skinremovetype' => _ADM_SKPRT_SKINREMOVETYPE,
208 'systemoverview' => _ADM_SKPRT_SYSTEMOVERVIEW,
209 'teamdelete' => _ADM_SKPRT_TEAMDELETE,
210 'templatedelete' => _ADM_SKPRT_TEMPLATEDELETE,
211 'templateedit' => _ADM_SKPRT_TEMPLATEEDIT,
212 'templateoverview' => _ADM_SKPRT_TEMPLATEOVERVIEW,
213 'usermanagement' => _ADM_SKPRT_USERMANAGEMENT,
217 * AdminActions::get_allowed_actions_for_type()
220 * @param string $type page type
221 * @return array allowed actions for the page type
223 static public function get_allowed_actions_for_type($type)
225 $default_actions = array(
242 $extra_actions = array();
246 /* NOTE: admin actions */
248 $extra_actions = array(
253 $extra_actions = array(
258 case 'activatesetpwd':
259 $extra_actions = array(
263 $extra_actions = array(
269 case 'adminerrorpage':
270 $extra_actions = array(
273 case 'adminskindelete':
274 $extra_actions = array(
278 case 'adminskinedit':
279 $extra_actions = array(
281 'defaultadminskintypes',
282 'adminspecialskinlist',
285 case 'adminskinedittype':
286 $extra_actions = array(
289 'allowedadminskinactions',
290 'adminskineditallowedlist',
293 case 'adminskiniedoimport':
294 $extra_actions = array(
298 case 'adminskinieimport':
299 $extra_actions = array(
303 case 'adminskinieoverview':
304 $extra_actions = array(
305 'selectlocaladminskinfiles',
309 case 'adminskinoverview':
310 $extra_actions = array(
314 case 'adminskinremovetype':
315 $extra_actions = array(
319 case 'admintemplateedit':
320 $extra_actions = array(
321 'editadmintemplateinfo',
324 case 'admintemplateoverview':
325 $extra_actions = array(
326 'admintemplateoverview',
329 case 'backupoverview':
330 $extra_actions = array(
333 case 'backuprestore':
334 $extra_actions = array(
338 $extra_actions = array(
344 case 'banlistdelete':
345 $extra_actions = array(
350 case 'banlistdeleteconfirm':
351 $extra_actions = array(
352 'banlistdeletedlist',
357 $extra_actions = array(
363 case 'batchcategory':
364 $extra_actions = array(
370 $extra_actions = array(
376 $extra_actions = array(
382 $extra_actions = array(
388 $extra_actions = array(
394 $extra_actions = array(
403 $extra_actions = array(
409 case 'blogcommentlist':
410 $extra_actions = array(
416 case 'blogselectbox':
417 $extra_actions = array(
422 $extra_actions = array(
437 $extra_actions = array(
441 case 'browseowncomments':
442 $extra_actions = array(
446 case 'browseownitems':
447 $extra_actions = array(
451 case 'categorydelete':
452 $extra_actions = array(
458 $extra_actions = array(
464 case 'commentdelete':
465 $extra_actions = array(
470 $extra_actions = array(
475 $extra_actions = array(
490 $extra_actions = array(
496 $extra_actions = array(
501 case 'editmembersettings':
502 $extra_actions = array(
504 'languageselectoptions',
505 'adminskinselectoptions',
509 case 'insertpluginoptions':
510 $extra_actions = array(
511 'insertpluginoptions',
514 case 'itemcommentlist':
515 $extra_actions = array(
521 $extra_actions = array(
528 $extra_actions = array(
545 $extra_actions = array(
552 $extra_actions = array(
558 $extra_actions = array(
562 $extra_actions = array(
571 $extra_actions = array(
576 $extra_actions = array(
581 $extra_actions = array(
589 $extra_actions = array(
603 $extra_actions = array(
608 $extra_actions = array(
614 $extra_actions = array(
619 case 'pluginoptions':
620 $extra_actions = array(
622 'editplugoptionslist',
626 $extra_actions = array(
629 'configsettingsedit',
630 'languageselectoptions',
631 'configsettingsyesno',
634 'adminstyleselectoptions',
640 $extra_actions = array(
646 $extra_actions = array(
651 $extra_actions = array(
657 $extra_actions = array(
660 'allowedskinactions',
661 'skineditallowedlist',
662 'skineditallowedlist',
665 case 'skiniedoimport':
666 $extra_actions = array(
671 $extra_actions = array(
675 case 'skinieoverview':
676 $extra_actions = array(
677 'selectlocalskinfiles',
682 $extra_actions = array(
686 case 'skinremovetype':
687 $extra_actions = array(
691 case 'systemoverview':
692 $extra_actions = array(
697 $extra_actions = array(
703 case 'templatedelete':
704 $extra_actions = array(
709 $extra_actions = array(
713 case 'templateoverview':
714 $extra_actions = array(
718 case 'usermanagement':
719 $extra_actions = array(
725 $extra_actions = array(
736 'selectlocaladminskinfiles',
743 return array_merge($default_actions, $extra_actions);
747 * AdminActions::get_defined_actions()
748 * Returns an array with the actions that are defined
749 * in the AdminActions class
754 static public function get_page_action_names()
756 return self::$page_action_names;
760 * AdminActions::get_page_type_friendly_names()
764 * @return array list of friendly names for page actions
766 static public function get_page_type_friendly_names()
768 return self::$page_type_friendly_names;
772 * Actions::__construct()
773 * Constructor for a new Actions object
775 * @param string $type
778 public function __construct($type)
780 $this->BaseActions();
781 $this->skintype = $type;
788 * @param object $skin an instance of Skin class
791 public function setSkin(&$skin)
793 $this->skin =& $skin;
798 * Actions::setParser()
801 * @param object $parser an instance of Parser class
804 public function setParser(&$parser)
806 $this->parser =& $parser;
811 * AdminActions::parse_actionloglist()
812 * Parse skinvar actionloglist
814 * @param string $templateName name of template to use
817 public function parse_actionloglist($templateName = '')
819 $query = "SELECT * FROM %s ORDER BY timestamp DESC";
820 $query = sprintf($query, sql_table('actionlog'));
822 $template['content'] = 'actionlist';
823 $amount = skinableShowlist($query, 'table', $template, $templateName);
829 * AdminActions::parse_activationmessage()
830 * Parse skinvar activationmessage
832 * @param string $type type of message
833 * @param string $templateName name of template to use
836 public function parse_activationmessage($type, $templateName = '')
838 global $CONF, $manager;
842 if ( !empty($templateName))
844 $template = skinableTEMPLATE::read($templateName);
847 $key = postVar('ackey');
850 $this->objAdmin->error(_ERROR_ACTIVATE);
853 $info = MEMBER::getActivationInfo($key);
856 $this->objAdmin->error(_ERROR_ACTIVATE);
859 $mem = MEMBER::createFromId($info->vmember);
862 $this->objAdmin->error(_ERROR_ACTIVATE);
864 switch ( $info->vtype )
867 if ( array_key_exists('ACTIVATE_FORGOT_TITLE', $template) && !empty($template['ACTIVATE_FORGOT_TITLE']) )
869 $title = $template['ACTIVATE_FORGOT_TITLE'];
873 $title = _ACTIVATE_FORGOT_TITLE;
875 if ( array_key_exists('ACTIVATE_FORGOT_TEXT', $template) && !empty($template['ACTIVATE_FORGOT_TEXT']) )
877 $text = $template['ACTIVATE_FORGOT_TEXT'];
881 $text = _ACTIVATE_FORGOT_TEXT;
885 if ( array_key_exists('ACTIVATE_REGISTER_TITLE', $template) && !empty($template['ACTIVATE_REGISTER_TITLE']) )
887 $title = $template['ACTIVATE_REGISTER_TITLE'];
891 $title = _ACTIVATE_REGISTER_TITLE;
893 if ( array_key_exists('ACTIVATE_REGISTER_TEXT', $template) && !empty($template['ACTIVATE_REGISTER_TEXT']) )
895 $text = $template['ACTIVATE_REGISTER_TEXT'];
899 $text = _ACTIVATE_REGISTER_TEXT;
902 case 'addresschange':
903 if ( array_key_exists('ACTIVATE_CHANGE_TITLE', $template) && !empty($template['ACTIVATE_CHANGE_TITLE']) )
905 $title = $template['ACTIVATE_CHANGE_TITLE'];
909 $title = _ACTIVATE_CHANGE_TITLE;
911 if (array_key_exists('ACTIVATE_CHANGE_TEXT', $template) && !empty($template['ACTIVATE_CHANGE_TEXT']))
913 $text = $template['ACTIVATE_CHANGE_TEXT'];
917 $text = _ACTIVATE_CHANGE_TEXT;
922 'memberName' => Entity::hsc($mem->getDisplayName()),
923 'realName' => Entity::hsc($mem->getRealName()),
928 echo TEMPLATE::fill($title, $aVars);
931 echo TEMPLATE::fill($text, $aVars);
934 echo Entity::hsc($key);
941 * Actions::parse_addtickettourl()
942 * Parse skinvar addtickettourl
944 * @param string $url URI for ticket
947 public function parse_addtickettourl($url)
950 $url = $manager->addTicketToUrl($url);
951 echo Entity::hsc($url);
956 * Actions::parse_adminbanlist()
957 * Parse skinvar adminbanlist
959 * @param string $templateName name of template to use
962 public function parse_adminbanlist($templateName = '')
964 $blogid = intRequestVar('blogid');
966 $query = "SELECT * FROM %s WHERE blogid=%d ORDER BY iprange;";
967 $query = sprintf($query, sql_table('ban'), (integer) $blogid);
969 $template['content'] = 'banlist';
971 $amount = Showlist($query, 'table', $template, $templateName);
981 * Actions::parse_adminbatchaction()
982 * Parse skinvar adminbatchaction
987 public function parse_adminbatchaction()
989 echo Entity::hsc(requestVar('batchaction'));
994 * Actions::parse_adminbatchlist()
995 * Parse skinvar adminbatchlist
997 * @param string $templateName name of template to use
1000 public function parse_adminbatchlist($templateName = '')
1003 $templates = array();
1004 if ( !empty($templateName) )
1006 $templates = Template::read($templateName);
1008 if ( isset($templates['ADMIN_BATCHLIST']) || !empty($templates['ADMIN_BATCHLIST']) )
1010 $template = $templates['ADMIN_BATCHLIST'];
1014 $template = '<li><%text(_BATCH_EXECUTING)%><b><%adminbatchaction%></b>'
1015 . '<%batchlisttype%> <b><%batchid%></b>...'
1016 . '<b><%batchlistmsg%></b></li>' . "\n";
1019 $selected = requestIntArray('batch');
1020 $action = requestVar('batchaction');
1022 switch ( $this->skintype )
1025 $batchlisttype = _BATCH_ONITEM;
1026 $deleteaction = 'deleteOneItem';
1027 $moveaction = 'moveOneItem';
1028 $destid = intRequestVar('destcatid');
1030 case 'batchcomment':
1031 $batchlisttype = _BATCH_ONCOMMENT;
1032 $deleteaction = 'deleteOneComment';
1035 $batchlisttype = _BATCH_ONMEMBER;
1036 $deleteaction = 'deleteOneMember';
1037 $setadminsql = sql_table('member') . ' SET madmin = 1 WHERE mnumber = ';
1038 $unsetchksql = 'SELECT * FROM ' . sql_table('member') . ' WHERE madmin = 1 AND mcanlogin = 1';
1039 $unsetupsql = sql_table('member') . ' SET madmin = 0 WHERE mnumber = ';
1040 $unseterrmsg = _ERROR_ATLEASTONEADMIN;
1043 $blogid = intRequestVar('blogid');
1044 $batchlisttype = _BATCH_ONTEAM;
1045 $deleteaction = 'deleteOneTeamMember';
1046 $setadminsql = sql_table('team') . ' SET tadmin = 1 WHERE tblog = ' . $blogid . ' AND tmember = ';
1047 $unsetchksql = 'SELECT * FROM ' . sql_table('team') . ' WHERE tadmin = 1 AND tblog = ' . $blogid;
1048 $unseterrmsg = _ERROR_ATLEASTONEBLOGADMIN;
1049 $unsetupsql = sql_table('team') . ' SET tadmin = 0 WHERE tblog = ' . $blogid . ' AND tmember = ';
1051 case 'batchcategory':
1052 $batchlisttype = _BATCH_ONCATEGORY;
1053 $deleteaction = 'deleteOneCategory';
1054 $moveaction = 'moveOneCategory';
1055 $destid = intRequestVar('destblogid');
1059 // walk over all selectedids and perform action
1060 foreach ( $selected as $selectedid )
1063 $selectedid = intval($selectedid);
1067 if ( $this->skintype != 'batchteam' )
1069 $error = $this->objAdmin->$deleteaction($selectedid);
1073 $error = $this->objAdmin->deleteOneTeamMember($blogid, $selectedid);
1077 $error = $this->objAdmin->$moveaction($selectedid, $destid);
1081 sql_query('UPDATE ' . $setadminsql . $selectedid);
1085 // there should always remain at least one super-admin
1086 $r = sql_query($unsetchksql);
1087 if ( sql_num_rows($r) < 2 )
1089 $error = $unseterrmsg;
1093 sql_query('UPDATE ' . $unsetupsql . $selectedid);
1097 $error = _BATCH_UNKNOWN . Entity::hsc($action);
1100 'batchid' => $selectedid,
1101 'batchlisttype' => Entity::hsc($batchlisttype),
1102 'adminbatchaction' => Entity::hsc($action),
1103 'batchlistmsg' => $error ? $error : _BATCH_SUCCESS,
1105 $handler = new Actions('template', $template, new ADMIN);
1106 $parser = new Parser($handler);
1109 $parser->parse($template);
1110 $template = ob_get_contents();
1113 echo TEMPLATE::fill($template, $data);
1119 * Actions::parse_adminbloglink()
1120 * Parse skinvar adminbloglink
1122 * @param string $templateName name of template to use
1125 public function parse_adminbloglink($templateName = '')
1128 $blogid = intRequestVar('blogid');
1129 $blog =& $manager->getBlog($blogid);
1130 $templates = array();
1132 if ( !empty($templateName) )
1134 $templates = Template::read($templateName);
1137 if ( isset($templates['ADMIN_BLOGLINK']) || !empty($templates['ADMIN_BLOGLINK']) )
1139 $template = $templates['ADMIN_BLOGLINK'];
1143 $template = '<a href="<%url%>" title="<%adminbloglinktitle%>"><%blogname%></a>';
1147 'url' => Entity::hsc($blog->getURL()),
1148 'adminbloglinktitle' => _BLOGLIST_TT_VISIT,
1149 'blogname' => Entity::hsc($blog->getName())
1152 echo TEMPLATE::fill($template, $data);
1157 * Actions::parse_adminerrormesg()
1158 * Parse skinvar adminerrormesg
1163 public function parse_adminerrormesg()
1168 if ( requestVar('errormessage') )
1170 $message = requestVar('errormessage');
1172 elseif ( cookieVar($CONF['CookiePrefix'] . 'errormessage') )
1174 $message = cookieVar($CONF['CookiePrefix'] . 'errormessage');
1176 elseif ( $this->objAdmin->sessionVar($CONF['CookiePrefix'] . 'errormessage') )
1178 $message = $this->objAdmin->sessionVar($CONF['CookiePrefix'] . 'errormessage');
1180 echo Entity::hsc($message);
1185 * Actions::parse_adminparsedinclude()
1186 * Parse skinvar adminparsedinclude
1188 * @param string $filename name of file
1191 public function parse_adminparsedinclude($filename)
1193 // check current level
1194 if ( $this->level > 3)
1196 // max. depth reached (avoid endless loop)
1199 $skin = new Skin($this->skintype->id);
1200 $file = $this->getIncludeFileName($filename);
1202 if ( !$skin->isValid && !file_exists($file) )
1207 $contents = $skin->getContent($filename);
1211 if ( !file_exists($file) )
1215 $contents = file_get_contents($file);
1216 if ( empty($contents) )
1221 $this->level = $this->level + 1;
1222 // parse file contents
1223 $this->parser->parse($contents);
1225 $this->level = $this->level - 1;
1230 * Actions::parse_adminskineditallowedlist()
1231 * Parse skinvar adminskineditallowedlist
1233 * @param string $type template/blog
1234 * @param string $templateName name of template to use
1237 public function parse_adminskineditallowedlist($type = 'template', $templateName = '')
1241 /* TODO: blog seems not to be used */
1243 $query = "SELECT bshortname, bname FROM %s";
1244 $query = sprintf($query, sql_table('blog'));
1246 'content' => 'shortblognames'
1250 $query = "SELECT tdname as name, tddesc as description FROM %s;";
1251 $query = sprintf($query, sql_table('admintemplate_desc'));
1253 'content' => 'shortnames'
1257 Showlist($query, 'table', $show, $templateName);
1262 * Actions::parse_adminskinielist()
1263 * Parse skinvar adminskinielist
1265 * @param string $type skin/template
1266 * @param string $templateName name of template to use
1269 public function parse_adminskinielist($type, $templateName = '')
1271 $templates = array();
1272 if ( $templateName )
1274 $templates = Template::read($templateName);
1276 if ( isset($templates['SKINIE_EXPORT_LIST']) && !empty($templates['SKINIE_EXPORT_LIST']) )
1278 $template = $templates['SKINIE_EXPORT_LIST'];
1282 $template = '<td><input type="checkbox" name="<%typeid%>" id="<%expid%>" /><label for="<%expid%>"><%expname%></label></td>' . "\n"
1283 . "<td><%expdesc%></td>\n"
1289 $query = "SELECT * FROM %s;";
1290 $query = sprintf($query, sql_table('adminskin_desc'));
1291 $res = sql_query($query);
1293 while ( $skinObj = sql_fetch_object($res) )
1296 'typeid' => 'skin[' . $skinObj->sdnumber . ']',
1297 'expid' => 'skinexp' . $skinObj->sdnumber,
1298 'expname' => Entity::hsc($skinObj->sdname),
1299 'expdesc' => Entity::hsc($skinObj->sddesc),
1301 echo TEMPLATE::fill($template, $data);
1305 $query = "SELECT * FROM %s;";
1306 $query = sprintf($query, sql_table('admintemplate_desc'));
1307 $res = sql_query($query);
1308 while ( $templateObj = sql_fetch_object($res) )
1311 'typeid' => 'template[' . $templateObj->tdnumber . ']',
1312 'expid' => 'templateexp' . $templateObj->tdnumber,
1313 'expname' => Entity::hsc($templateObj->tdname),
1314 'expdesc' => Entity::hsc($templateObj->tddesc),
1316 echo TEMPLATE::fill($template, $data);
1324 * Actions::parse_adminskinoverview()
1325 * Parse skinvar adminskinoverview
1327 * @param string $templateName name of template to use
1330 public function parse_adminskinoverview($templateName = '')
1332 $query = "SELECT * FROM %s ORDER BY sdname;";
1333 $query = sprintf($query, sql_table('adminskin_desc'));
1335 $template['content'] = 'adminskinlist';
1336 $template['tabindex'] = 10;
1337 Showlist($query, 'table', $template, $templateName);
1342 * Actions::parse_adminskinselectoptions()
1343 * Parse skinvar adminskinselectoptions
1348 public function parse_adminskinselectoptions()
1351 $query = "SELECT sdname as text, sdnumber as value FROM %s;";
1352 $query = sprintf($query, sql_table('adminskin_desc'));
1354 $template['name'] = 'adminskin';
1355 $template['selected'] = $CONF['DefaultAdminSkin'];
1356 $template['tabindex'] = 110;
1357 Showlist($query, 'select', $template, '');
1362 * Actions::parse_adminspecialskinlist()
1363 * Parse skinvar adminspecialskinlist
1365 * @param string $templateName name of template to use
1367 public function parse_adminspecialskinlist($templateName = '')
1369 $templates = array();
1370 if ( $templateName )
1372 $templates = Template::read($templateName);
1375 $nType = Skin::getAdminskinDefaultTypes();
1376 $skinid = intRequestVar('skinid');
1378 $query = "SELECT stype FROM %s WHERE stype NOT IN (%s) AND sdesc=%d;";
1379 $query = sprintf($query, sql_table('adminskin'), "'" . implode("', '", $nType) . "'", (integer) $skinid);
1381 $res = sql_query($query);
1382 if ( $res && sql_num_rows($res) > 0 )
1385 if ( isset($templates['ADMIN_SPECIALSKINLIST_HEAD']) && !empty($templates['ADMIN_SPECIALSKINLIST_HEAD']) )
1387 $template['head'] = $templates['ADMIN_SPECIALSKINLIST_HEAD'];
1391 $template['head'] = "<ul>\n";
1393 echo TEMPLATE::fill($template['head'], $data);
1394 if ( isset($templates['ADMIN_SPECIALSKINLIST_BODY']) && !empty($templates['ADMIN_SPECIALSKINLIST_BODY']) )
1396 $template['body'] = $templates['ADMIN_SPECIALSKINLIST_BODY'];
1400 $template['body'] = '<li><a tabindex="<%tabindex%>" href="index.php?action=adminskinedittype&skinid=<%skinid%>'
1401 . '&type=<%skintype%>"><%skintype%></a> (<a tabindex="<%tabindex%>" href="index.php?'
1402 . 'action=adminskinremovetype&skinid=<%skinid%>&type=<%skintype%>">remove</a>)</li>';
1405 while ( $row = sql_fetch_assoc($res) )
1408 'tabindex' => $tabstart++,
1409 'skinid' => $skinid,
1410 'skintype' => Entity::hsc(strtolower($row['stype']))
1412 echo TEMPLATE::fill($template['body'], $data);
1416 if ( isset($templates['ADMIN_SPECIALSKINLIST_FOOT']) && !empty($templates['ADMIN_SPECIALSKINLIST_FOOT']) )
1418 $template['foot'] = $templates['ADMIN_SPECIALSKINLIST_FOOT'];
1422 $template['foot'] = "<ul>\n";
1424 echo TEMPLATE::fill($template['foot'], $data);
1430 * Actions::parse_adminstylesheets()
1431 * Parse skinvar adminstylesheets
1436 public function parse_adminstylesheets()
1439 $includePrefix = $this->skintype->includePrefix;
1441 if ( strlen($includePrefix) > 0 )
1443 $styleURL = Entity::hsc($CONF['AdminURL']) . 'adminskins/' . $includePrefix . 'admin_' . $CONF['AdminCSS'] . '.css';
1447 $styleURL = Entity::hsc($CONF['AdminURL']) . 'styles/admin_' . $CONF['AdminCSS'] . '.css';
1454 * Actions::parse_adminstyleselectoptions()
1455 * Parse skinvar adminstyleselectoptions
1460 public function parse_adminstyleselectoptions()
1462 global $CONF, $manager, $DIR_NUCLEUS;
1463 if ( strlen($this->skintype->includePrefix) > 0 )
1465 $scndir = $DIR_NUCLEUS . 'adminskins/' . $this->skintype->includePrefix;
1469 $scndir = $DIR_NUCLEUS . 'styles/';
1471 $files = scandir($scndir);
1473 foreach ( $files as $file )
1475 if ( !preg_match("#^admin_(.*)\.css$#", $file, $matches) )
1480 $name = $matches[1];
1481 $opts = '<option value="' . $name . '"';
1482 if ( $name != $CONF['AdminCSS'] )
1484 $opts .= "<option value=\"{$name}\">{$name}</option>\n";
1488 $opts .= "<option value=\"{$name}\" selected=\"selected\">{$name}</option>\n";
1496 * Actions::parse_admintemplateoverview()
1497 * Parse skinvar admintemplateoverview
1499 * @param string $templateName name of template to use
1502 public function parse_admintemplateoverview($templateName = '')
1504 $query = "SELECT * FROM %s ORDER BY tdname;";
1505 $query = sprintf($query, sql_table('admintemplate_desc'));
1507 $template['content'] = 'admintemplatelist';
1508 $template['tabindex'] = 10;
1510 Showlist($query, 'table', $template, $templateName);
1515 * Actions::parse_allowedadminskinactions()
1516 * Parse skinvar allowedadminskinactions
1521 public function parse_allowedadminskinactions()
1523 global $DIR_ADMINSKINS;
1524 $skinType = strtolower(trim(requestVar('type')));
1525 $actions = Skin::getAllowedActionsForType($skinType);
1528 while ( $current = array_shift($actions) )
1530 // skip deprecated vars
1531 if ($current == 'ifcat' || $current == 'imagetext' || $current == 'vars')
1536 echo "<a href=\"{$DIR_ADMINSKINS}documentation/help.html#{$current}\" onclick=\"if (event && event.preventDefault) event.preventDefault(); return help(this.href);\">{$current}</a>\n";
1538 if ( count($actions) != 0 )
1547 * Actions::parse_allowedskinactions()
1548 * Parse skinvar allowedskinactions
1553 public function parse_allowedskinactions()
1555 $skinType = strtolower(trim(requestVar('type')));
1556 $actions = SKIN::getAllowedActionsForType($skinType);
1559 while ( $current = array_shift($actions) )
1561 // skip deprecated vars
1562 if ( $current == 'ifcat' || $current == 'imagetext' || $current == 'vars' )
1567 /* TODO: alternative function should be used or not? */
1568 echo helplink("skinvar-{$current}") . "$current</a>\n";
1570 if ( count($actions) != 0 )
1579 * Action::parse_banlistdeletedlist()
1580 * Parse skinvar banlistdeletedlist
1582 * @param string $templateName name of template to use
1585 public function parse_banlistdeletedlist($templateName = '')
1588 $templates = array();
1590 if ( $templateName )
1592 $templates = Template::read($templateName);
1594 if ( isset($templates['BANLIST_DELETED_LIST']) && !empty($templates['BANLIST_DELETED_LIST']) )
1596 $template = $templates['BANLIST_DELETED_LIST'];
1600 $template = "<li><%blogname%></li>\n";
1602 $deleted = requestArray('delblogs');
1603 foreach ( $deleted as $delblog )
1605 $blog =& $manager->getBlog($delblog);
1607 Entity::hsc($blog->getName())
1609 TEMPLATE::fill($template, $data);
1615 * Actions::parse_batchdeletelist()
1616 * Parse skinvar batchdeletelist
1621 public function parse_batchdeletelist()
1623 $selected = requestIntArray('batch');
1626 foreach ( $selected as $select )
1628 echo '<input type="hidden" name="batch[' . ($index++) . ']" value="' . intval($select) . "\" />\n";
1630 // add hidden vars for team & comment
1631 if ( requestVar('action') == 'batchteam' )
1633 echo '<input type="hidden" name="blogid" value="' . intRequestVar('blogid') . "\" />\n";
1635 if ( requestVar('action') == 'batchcomment' )
1637 echo '<input type="hidden" name="itemid" value="' . intRequestVar('itemid') . "\" />\n";
1643 * Actions::parse_batchdeletetype()
1644 * Parse skinvar batchdeletetype
1649 public function parse_batchdeletetype()
1651 echo Entity::hsc(requestVar('action'));
1656 * Actions::parse_batchmovebtn()
1657 * Parse skinvar batchmovebtn
1662 public function parse_batchmovebtn()
1664 $actionType = requestVar('action');
1665 switch ( $actionType )
1670 case 'batchcategory':
1678 * Actions::parse_batchmovelist()
1679 * Parse skinvar batchmovelist
1684 public function parse_batchmovelist()
1686 $selected = requestIntArray('batch');
1687 foreach ( $selected as $select )
1689 echo '<input type="hidden" name="batch[' . ($select++) . ']" value="' . intval($select) . "\" />\n";
1695 * Actions::parse_batchmovetitle()
1696 * Parse skinvar batchmovetitle
1701 public function parse_batchmovetitle()
1703 $actionType = requestVar('action');
1704 switch ( $actionType )
1709 case 'batchcategory':
1710 echo _MOVECAT_TITLE;
1717 * Actions::parse_batchmovetype()
1718 * Parse skinvar batchmovetype
1723 public function parse_batchmovetype()
1725 echo Entity::hsc(requestVar('action'));
1730 * Actions::parse_blogcatlist()
1731 * Parse skinvar blogcatlist
1736 public function parse_blogcatlist()
1739 $blogid = intRequestVar('blogid');
1740 $query = "SELECT * FROM %s WHERE cblog = %d ORDER BY cname;";
1741 $query = sprintf($query, sql_table('category'), (integer) $blogid);
1743 $template['content'] = 'categorylist';
1744 $template['tabindex'] = 200;
1746 $batch = new Batch('member');
1747 $batch->showlist($query, 'table', $template);
1752 * Actions::parse_blognotifysetting()
1753 * Parse skinvar blognotifysetting
1758 public function parse_blognotifysetting($type)
1761 $blogid = intRequestVar('blogid');
1762 $blog = $manager->getBlog($blogid);
1767 if ( !$blog->notifyOnComment() )
1773 if ( !$blog->notifyOnVote() )
1779 if ( !$blog->notifyOnNewItem() )
1785 echo ' checked="checked"';
1790 * AdminAction::parse_blogselectbox()
1791 * Parse skinvar blogselectbox
1796 public function parse_blogselectbox()
1800 $selectData = requestVar('selectData');
1801 $mode = $selectData['mode'];
1802 $name = ENTITY::hsc($selectData['name'], ENT_QUOTES);
1803 $tabindex = ENTITY::hsc($selectData['tabindex'], ENT_QUOTES);
1804 $aBlogIds = array_map('intval', $selectData['aBlogIds']);
1805 $showNewCat = intval($selectData['showNewCat']);
1806 $selected = intval($selectData['selected']);
1808 echo "<select name=\"{$name}\" tabindex=\"{$tabindex}\">\n";
1810 // 1. select blogs (we'll create optiongroups)
1811 // (only select those blogs that have the user on the team)
1812 $queryBlogs = "SELECT bnumber, bname FROM %s WHERE bnumber in (%s) ORDER BY bname;";
1813 $queryBlogs = sprintf($queryBlogs, sql_table('blog'), implode(',', $aBlogIds));
1814 $blogs = sql_query($queryBlogs);
1816 if ( $mode == 'category' )
1818 if ( sql_num_rows($blogs) > 1 )
1822 while ( $oBlog = sql_fetch_object($blogs) )
1824 if ( isset($multipleBlogs) && !empty($multipleBlogs) )
1826 echo '<optgroup label="' . ENTITY::hsc($oBlog->bname, ENT_QUOTES) . "\>\n";
1829 // show selection to create new category when allowed/wanted
1832 // check if allowed to do so
1833 if ( $member->blogAdminRights($oBlog->bnumber) )
1835 echo '<option value="newcat-' . $oBlog->bnumber . '">' . _ADD_NEWCAT . "</option>\n";
1839 // 2. for each category in that blog
1840 $catQueriy = "SELECT cname, catid FROM %s WHERE cblog=%d ORDER BY cname ASC;";
1841 $catQuery = sprintf($catQuery, sql_table('category'), (integer) $oBlog->bnumber);
1842 $categories = sql_query(sprintf($catQueriy));
1843 while ( $oCat = sql_fetch_object($categories) )
1845 if ( $oCat->catid == $selected )
1847 $selectText = ' selected="selected" ';
1853 echo '<option value="' . $oCat->catid . '" ' . $selectText . '>' . ENTITY::hsc($oCat->cname, ENT_QUOTES) . "</option>\n";
1856 if ( isset($multipleBlogs) && !empty($multipleBlogs) )
1865 while ( $oBlog = sql_fetch_object($blogs) )
1867 echo '<option value="' . $oBlog->bnumber . '"';
1868 if ( $oBlog->bnumber == $selected )
1870 echo '<option value="' . $oBlog->bnumber . '" selected="selected">' . ENTITY::hsc($oBlog->bname, ENT_QUOTES) . "</option>\n";
1874 echo '<option value="' . $oBlog->bnumber . '">' . ENTITY::hsc($oBlog->bname, ENT_QUOTES) . "</option>\n";
1883 * Actions::parse_blogsetting()
1884 * Parse skinvar blogsetting
1886 * @param string $which name of weblog setting
1889 public function parse_blogsetting($which)
1891 echo $this->parse_getblogsetting($which);
1896 * Actions::parse_blogsettingyesno()
1897 * Parse skinvar blogsettingyesno
1899 * @param string $type type of weblog setting
1900 * @param string $templateName name of template to use
1903 public function parse_blogsettingyesno($type, $templateName = '')
1907 $blogid = intRequestVar('blogid');
1908 $blog = $manager->getBlog($blogid);
1912 case 'convertbreaks':
1913 $checkedval = $blog->convertBreaks();
1916 case 'allowpastposting':
1917 $checkedval = $blog->allowPastPosting();
1921 $checkedval = $blog->commentsEnabled();
1925 $checkedval = $blog->isPublic();
1929 $checkedval = $blog->emailRequired();
1933 $checkedval = $blog->getSearchable();
1937 $this->parse_inputyesno($type, $checkedval, $tabindex, 1, 0, _YES, _NO, 0, $templateName);
1942 * Actions::parse_blogteamlist()
1943 * Parse skinvar blogteamlist
1945 * @param string $templateName name of template to use
1948 public function parse_blogteamlist($templateName = '')
1951 $blogid = intRequestVar('blogid');
1952 $query = "SELECT tblog, tmember, mname, mrealname, memail, tadmin "
1954 . "WHERE tmember=mnumber AND tblog= %d";
1955 $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);
1957 $template['content'] = 'teamlist';
1958 $template['tabindex'] = 10;
1960 $batch = new Batch('team');
1961 $batch->showlist($query, 'table', $template, _LISTS_NOMORE, $templateName);
1966 * Actions::parse_blogteammembers()
1967 * Parse skinvar blogteammembers
1972 public function parse_blogteammembers()
1974 $blogid = intRequestVar('blogid');
1975 $query = "SELECT mname, mrealname "
1977 . "WHERE mnumber=tmember AND tblog=%d;";
1978 $query = sprintf($query, sql_table('member'), sql_table('team'), (integer) $blogid);
1979 $res = sql_query($query);
1980 $memberNames = array();
1981 while ($o = sql_fetch_object($res)) {
1982 $memberNames[] = Entity::hsc($o->mname) . ' (' . Entity::hsc($o->mrealname). ')';
1984 echo implode(',', $memberNames);
1988 * Actions::parse_blogtime()
1989 * Parse skinvar blogtime
1991 * @param string $type type of time
1992 * @param string $format format for time expression
1993 * @param integer $offset offset of time
1996 public function parse_blogtime($type, $format = '%H:%M', $offset = 0)
2000 if ( $type != 'blogtime' )
2002 /* return server time */
2003 $timestamp = time() + $offset;
2007 $bid = intRequestVar('blogid');
2008 $b = $manager->getBlog($bid);
2009 $timestamp = $b->getCorrectTime() + $offset;
2012 echo i18n::formatted_datetime($format, $timestamp);
2017 * Actions::parse_bookmarkletadmin()
2018 * Parse skinvar bookmarkletadmin
2020 * @param string $type type of anchor element for bookmarklet
2023 public function parse_bookmarkletadmin($type)
2027 $blogid = intRequestVar('blogid');
2029 if ( $type != 'regfile' )
2031 echo Entity::hsc(getBookmarklet($blogid));
2035 $url = 'index.php?action=regfile&blogid=' . intval($blogid);
2036 $url = $manager->addTicketToUrl($url);
2037 /* TODO: Shift-JIS is not always correct, I think... */
2038 echo Entity::hsc($url, 'SJIS');
2044 * Actions::parse_category()
2045 * Parse skinvar category
2047 * @param string $type name of setting for category
2050 public function parse_category($type = 'name')
2052 echo $this->parse_getcategory($type);
2057 * Actions::parse_categorysetting()
2058 * Parse skinvar categorysetting
2060 * @param string $type type in category setting
2063 public function parse_categorysetting($type)
2065 $catid = intRequestVar('catid');
2066 if ( $type == 'id' )
2071 $blogid = intRequestVar('blogid');
2072 $query = "SELECT * FROM %s WHERE cblog = %d AND catid = %d;";
2073 $query = sprintf($query, sql_table('category'), (integer) $blogid, (integer) $catid);
2074 $res = sql_query($query);
2075 $obj = sql_fetch_object($res);
2077 if ( $type != desc )
2079 echo Entity::hsc($obj->cdesc);
2083 echo Entity::hsc($obj->cname);
2090 * Actions::parse_codename()
2091 * Parse templatevar codename
2096 * TODO: is this need???
2098 public function parse_codename()
2101 echo $nucleus['codename'];
2106 * Actions::parse_commentnavlist()
2107 * Parse skinvar commentnavlist
2112 public function parse_commentnavlist()
2114 global $CONF, $manager, $member;
2117 if ( postVar('start') )
2119 $start = intPostVar('start');
2126 // amount of items to show
2127 if ( postVar('amount') )
2129 $amount = intPostVar('amount');
2133 $amount = (integer) $CONF['DefaultListSize'];
2139 $query = 'SELECT cbody, cuser, cmail, cemail, mname, ctime, chost, cnumber, cip, citem '
2141 . 'LEFT OUTER JOIN %s ON mnumber=cmember '
2143 $query = sprintf($query, sql_table('comment'), sql_table('member'));
2145 if ( $this->skintype == 'itemcommentlist' )
2147 $itemid = intRequestVar('itemid');
2148 $query .= " citem={$itemid}";
2149 $template['canAddBan'] = $member->blogAdminRights(intRequestVar('blogid'));
2151 $nonComments = _NOCOMMENTS;
2153 elseif ( $this->skintype == 'browseowncomments' )
2156 $query .= ' cmember=' . $member->getID();
2157 $template['canAddBan'] = 0;
2159 $nonComments = _NOCOMMENTS_YOUR;
2161 elseif ( $this->skintype == 'blogcommentlist' )
2164 $query .= ' cblog=' . intRequestVar('blogid');
2165 $template['canAddBan'] = $member->blogAdminRights(intRequestVar('blogid'));
2166 $bid = intRequestVar('blogid');
2167 $nonComments = _NOCOMMENTS_BLOG;
2170 $search = postVar('search');
2171 if ( !empty($search) )
2173 $query .= ' and cbody LIKE "%' . sql_real_escape_string($search) . '%"';
2176 $query .= " ORDER BY ctime ASC LIMIT {$start},{$amount}";
2178 $template['content'] = 'commentlist';
2180 $navList = new Navlist($this->skintype, $start, $amount, 0, 1000, $bid, $search, $itemid);
2181 $navList->showBatchList('comment', $query, 'table', $template, $nonComments);
2186 * Actions::parse_configsettingsedit()
2187 * Parse skinvar configsettingsedit
2189 * @param string $type type of global configuration
2192 public function parse_configsettingsedit($type)
2197 case 'DefaultListSize':
2198 if ( !array_key_exists('DefaultListSize', $CONF) )
2200 $query = "INSERT INTO %s VALUES (DefaultListSize, 10);";
2201 $query = sprintf($query, sql_table('config'));
2203 $CONF['DefaultListSize'] = 10;
2205 elseif ( intval($CONF['DefaultListSize']) < 1 )
2207 $CONF['DefaultListSize'] = 10;
2209 echo intval($CONF['DefaultListSize']);
2211 case 'SessionCookie':
2212 $value = $CONF['SessionCookie'];
2213 $txt1 = _SETTINGS_COOKIESESSION;
2214 $txt2 = _SETTINGS_COOKIEMONTH;
2215 $this->parse_inputyesno('SessionCookie', $value, 10190, 1, 0, $txt1, $txt2);
2218 $value = $CONF['URLMode'];
2219 $txt1 = _SETTINGS_URLMODE_NORMAL;
2220 $txt2 = _SETTINGS_URLMODE_PATHINFO;
2221 $this->parse_inputyesno('URLMode', $value, 10077, 'normal', 'pathinfo', $txt1, $txt2);
2224 if ( array_key_exists($type, $CONF) && is_string($CONF[$type]) )
2226 echo Entity::hsc($CONF[$type]);
2234 * Actions::parse_configsettingsyesno()
2235 * Parse skinvar configsettingsyesno
2237 * @param string $type type of global setting
2238 * @param integer $tabindex tabindex attribute of input element
2241 public function parse_configsettingsyesno($type, $tabindex)
2244 if ( array_key_exists($type, $CONF) )
2246 $this->parse_inputyesno($type, $CONF[$type], $tabindex);
2252 * Actions::parse_customhelplink()
2253 * Parse skinvar customhelplink
2255 * @param string $topic name of topic
2256 * @param string $tplName name of template
2257 * @param string $url string as URI
2258 * @param string $iconURL string as URI for icon
2259 * @param string $alt alternative text for image element
2260 * @param string $title title for anchor element
2263 public function parse_customhelplink($topic, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
2265 $this->customHelp($topic, $url, $iconURL);
2270 * Actions::parse_date()
2271 * Parse skinvar date
2273 public function parse_date($format = 'c')
2275 global $CONF, $manager;
2276 echo i18n::formatted_datetime($format, time(), 'iso8601', $manager->getBlog((integer) $CONF['DefaultBlog']));
2281 * Actions::parse_defaultadminskintypes()
2282 * Parse skinvar defaultadminskintypes
2284 * @param string $tabindex index number for tabindex attribute of input element
2285 * @param string $templateName name of template
2288 public function parse_defaultadminskintypes($tabindex, $templateName = '')
2290 $templates = array();
2291 if ( $templateName )
2293 $templates = Template::read($templateName);
2296 $types = Skin::getAdminskinDefaultTypeFriendlyNames();
2299 if ( array_key_exists('ADMINSKINTYPELIST_HEAD', $templates) && !empty($templates['ADMINSKINTYPELIST_HEAD']) )
2301 $template['head'] = $templates['ADMINSKINTYPELIST_HEAD'];
2305 $template['head'] = "<ul>\n";
2308 echo $template['head'];
2310 if ( array_key_exists('ADMINSKINTYPELIST_BODY', $templates) && !empty($templates['ADMINSKINTYPELIST_BODY']) )
2312 $template['body'] = $templates['ADMINSKINTYPELIST_BODY'];
2316 $template['body'] = '<li><a tabindex="<%tabindex%>" href="index.php?action=adminskinedittype&skinid=<%skinid%>&type=<%skintype%>">'
2317 . "<%name%></a> <%help%></li>\n";
2319 $handler = new Actions('template', $template, new ADMIN);
2320 $parser = new PARSER(Actions::getDefinedActions(), $handler);
2322 foreach ( $types as $type => $fName )
2324 $helplink = $this->customHelpHtml('skinpart' . $type, $templateName);
2326 'tabindex' => $tabindex,
2327 'skintype' => $type,
2329 'help' => $helplink,
2330 'skinid' => intrequestVar('skinid'),
2332 $templateBody = Template::fill($template['body'], $data);
2333 $parser->parse($templateBody);
2336 if ( array_key_exists('ADMINSKINTYPELIST_FOOT', $templates) && !empty($templates['ADMINSKINTYPELIST_FOOT']) )
2338 $template['foot'] = $templates['ADMINSKINTYPELIST_FOOT'];
2342 $template['foot'] = " </ul>\n";
2344 echo $template['foot'];
2349 * Actions::parse_defblogselect()
2350 * Parse skinvar defblogselect
2352 * @param string $templateName name of template
2355 public function parse_defblogselect($templateName = '')
2358 $query = "SELECT bname as text, bnumber as value FROM %s;";
2359 $query = sprintf($query, sql_table('blog'));
2360 $template['name'] = 'DefaultBlog';
2361 $template['selected'] = $CONF['DefaultBlog'];
2362 $template['tabindex'] = 10;
2363 Showlist($query, 'select', $template, $templateName);
2368 * Actions::parse_defcatselect()
2369 * Parse skinvar defcatselect
2371 * @param string $templateName name of template
2374 public function parse_defcatselect($templateName = '')
2377 $blogid = intRequestVar('blogid');
2378 $blog = $manager->getBlog($blogid);
2379 $query = "SELECT cname as text, catid as value FROM %s WHERE cblog=%d;";
2380 $query = sprintf($query, sql_table('category'), (integer) $blog->getID());
2381 $template['name'] = 'defcat';
2382 $template['selected'] = $blog->getDefaultCategory();
2383 $template['tabindex'] = 110;
2384 Showlist($query, 'select', $template, $templateName);
2389 * Actions::parse_defskinselect()
2390 * Parse skinvar defskinselect
2392 * @param string $type type of skin
2393 * @param string $templateName name of template
2396 public function parse_defskinselect($type = 'blog', $templateName = '')
2399 $query = "SELECT sdname as text, sdnumber as value FROM %s;";
2400 $query = sprintf($query, sql_table('skin_desc'));
2402 $blogid = intRequestVar('blogid');
2407 $template['selected'] = $CONF['BaseSkin'];
2411 $blog = $manager->getBlog($blogid);
2412 $template['selected'] = $blog->getDefaultSkin();
2415 if ( $type != 'blog' )
2417 $nname = 'BaseSkin';
2424 $template['name'] = $nname;
2425 $template['tabindex'] = 50;
2426 Showlist($query, 'select', $template, $templateName);
2431 * AdminActions::parse_deletecomment()
2432 * Parse skinvar deletecomment
2434 * @param string $type type of infomation for comment
2437 public function parse_deletecomment($type = 'id')
2439 $commentid = intRequestVar('commentid');
2440 $comment = COMMENT::getComment($commentid);
2445 echo intRequestVar('commentid');
2448 if ( array_key_exists('member', $comment) && !empty($comment['member']) )
2450 echo $comment['member'];
2454 echo $comment['user'];
2458 $body = strip_tags($comment['body']);
2459 echo ENTITY::hsc(shorten($body, 300, '...'), ENT_QUOTES);
2465 * Actions::parse_deleteitembody()
2466 * Parse skinvar deleteitembody
2471 public function parse_deleteitembody()
2474 $itemid = intRequestVar('itemid');
2475 $item =& $manager->getItem($itemid, 1, 1);
2476 $body = strip_tags($item['body']);
2477 echo Entity::hsc(shorten($body, 300, '...'));
2482 * Actions::parse_deleteitemid()
2483 * Parse skinvar deleteitemid
2488 public function parse_deleteitemid()
2490 echo (integer) intRequestVar('itemid');
2495 * Actions::parse_deleteitemtitle()
2496 * Parse skinvar deleteitemtitle
2501 public function parse_deleteitemtitle()
2504 $itemid = intRequestVar('itemid');
2505 $item =& $manager->getItem($itemid, 1, 1);
2506 echo Entity::hsc(strip_tags($item['title']));
2511 * Actions::parse_editadminskin()
2512 * Parse skinvar editadminskin
2514 * @param string $type type of skin setting
2517 public function parse_editadminskin($type = 'id')
2519 $skinid = intRequestVar('skinid');
2520 $skin = new Skin($skinid);
2524 echo intRequestVar('skinid');
2527 echo Entity::hsc($skin->getName());
2530 echo Entity::hsc($skin->getDescription());
2533 echo Entity::hsc($skin->getContentType());
2536 echo Entity::hsc($skin->getIncludePrefix());
2539 $this->parse_inputyesno('inc_mode', $skin->getIncludeMode(), 120, 'skindir', 'normal', _PARSER_INCMODE_SKINDIR, _PARSER_INCMODE_NORMAL);
2547 * Actions::parse_editadminskintype()
2548 * Parse skinvar editadminskintype
2550 * @param string $type name of skin type
2553 public function parse_editadminskintype($type = 'id')
2555 global $CONF, $manager, $member;
2556 $skinid = intRequestVar('skinid');
2557 $skin = new Skin($skinid);
2558 $fNames = Skin::getFriendlyNames();
2559 $sType = strtolower(trim(requestVar('type')));
2564 echo intRequestVar('skinid');
2567 echo Entity::hsc($skin->getName());
2570 echo Entity::hsc($skin->getDescription());
2573 echo Entity::hsc($skin->getContentType());
2576 echo Entity::hsc($skin->getContent($sType));
2579 $skinType = isset($fNames[$sType]) ? $fNames[$sType] : ucfirst($sType);
2580 echo Entity::hsc($skinType);
2583 echo Entity::hsc($sType);
2586 echo Entity::hsc($skin->getIncludePrefix());
2589 $incMode = $skin->getIncludeMode() ? _PARSER_INCMODE_SKINDIR : _PARSER_INCMODE_NORMAL;
2590 echo Entity::hsc($incMode);
2599 * Actions::parse_editadmintemplateinfo()
2600 * Parse skinvar editadmintemplateinfo
2602 * @param string $type type of skin template
2603 * @param string $description description of template
2604 * @param string $name name of stemplate
2605 * @param string $tabindex index number for tabindex attribute of input element
2606 * @param string $big
2607 * @param string $tplt
2609 public function parse_editadmintemplateinfo($type, $description = '', $name = '', $help = '', $tabindex = 0, $big = 0, $tplt = '')
2612 $templateid = intRequestVar('templateid');
2613 $templatename = Template::getNameFromId($templateid);
2614 $templatedescription = Template::getDesc($templateid);
2615 $template =& Template::read($templatename);
2619 echo intval($templateid);
2622 echo Entity::hsc($templatename);
2625 echo Entity::hsc($templatedescription);
2627 case 'extratemplate':
2629 $pluginfields = array();
2631 'AdminTemplateExtraFields',
2633 'fields' => &$pluginfields
2639 $tmplt = Template::read($description);
2641 if ( array_key_exists('TEMPLATE_EDIT_EXPLUGNAME', $tmplt) && !empty($tmplt['TEMPLATE_EDIT_EXPLUGNAME']) )
2643 $base = $tmplt['TEMPLATE_EDIT_EXPLUGNAME'];
2649 . "\t" . '<th colspan="2"><%explugtplname%>' . "</th>\n";
2651 foreach ( $pluginfields as $pfkey => $pfvalue )
2654 'explugtplname' => Entity::hsc($pfkey)
2656 echo TEMPLATE::fill($base, $data);
2657 foreach ( $pfvalue as $pffield => $pfdesc )
2659 $this->_templateEditRow($template, $pfdesc, $pffield, '', ++$tabidx, 0, $name);
2664 $desc = defined($description) ? constant($description) : $description;
2665 $name = defined($name) ? constant($name) : $name;
2666 $this->_templateEditRow($template, $desc, $name, $help, $tabindex, $big, $tplt);
2673 * Actions::parse_editcomment()
2674 * Parse skinvar editcomment
2676 * @param string $type type of comment setting
2679 public function parse_editcomment($type = 'id')
2682 $commentid = intRequestVar('commentid');
2683 $comment = COMMENT::getComment($commentid);
2685 $manager->notify('PrepareCommentForEdit', array('comment' => &$comment));
2690 echo intRequestVar('commentid');
2693 if (array_key_exists('member', $comment) && !empty($comment['member']) )
2695 echo $comment['member'] . " (" . _EDITC_MEMBER . ")";
2699 echo $comment['user'] . " (" . _EDITC_NONMEMBER . ")";
2703 echo date("Y-m-d @ H:i", $comment['timestamp']);
2706 $comment['body'] = str_replace('<br />', '', $comment['body']);
2707 $comment['body'] = preg_replace("#<a href=['\"]([^'\"]+)['\"]( rel=\"nofollow\")?>[^<]*</a>#", "\\1", $comment['body']);
2708 echo $comment['body'];
2710 echo $comment[$type];
2717 * Actions::parse_editdesturl()
2718 * Parse skinvar editdesturl
2720 public function parse_editdesturl()
2722 if ( requestVar('desturl') )
2724 echo Entity::hsc(requestVar('desturl'));
2730 * Actions::parse_editmemberlist()
2731 * Parse skinvar editmemberlist
2733 * @param string $templateName name of template
2736 public function parse_editmemberlist($templateName = '')
2739 // show list of members with actions
2740 $query = 'SELECT * FROM '.sql_table('member');
2741 $template['content'] = 'memberlist';
2742 $template['tabindex'] = 10;
2744 $batch = new Batch('member');
2745 $batch->showlist($query, 'table', $template, _LISTS_NOMORE, $templateName);
2750 * AdminActions::parse_editmember()
2751 * Parse skinvar editmember
2753 * @param string $type type of information for member
2754 * @return string $tempateName name of template to use
2757 public function parse_editmember($type = 'id', $templateName = '')
2759 global $CONF, $manager, $member;
2760 $memberid = intRequestVar('memberid');
2761 $mem = MEMBER::createFromID($memberid);
2766 echo intRequestVar('memberid');
2769 if ( $this->skintype == 'teamdelete' || $this->skintype == 'memberdelete' )
2771 echo ENTITY::hsc($mem->getDisplayName(), ENT_QUOTES);
2775 $dispName = ENTITY::hsc($mem->getDisplayName(), ENT_QUOTES);
2776 if ( $CONF['AllowLoginEdit'] || $member->isAdmin() )
2778 echo '<input name="name" tabindex="10" maxlength="32" size="32" value="' . $dispName . "\" />\n";
2787 echo ENTITY::hsc($mem->getRealName(), ENT_QUOTES);
2790 echo ENTITY::hsc($mem->getEmail(), ENT_QUOTES);
2793 echo ENTITY::hsc($mem->getURL(), ENT_QUOTES);
2796 $this->parse_inputyesno('admin', $mem->isAdmin(), 60, 1, 0, _YES, _NO, 0, $templateName);
2799 $this->parse_inputyesno('canlogin', $mem->canLogin(), 70, 1, 0, _YES, _NO, $mem->isAdmin(), $templateName);
2802 echo ENTITY::hsc($mem->getNotes(), ENT_QUOTES);
2805 $this->parse_inputyesno('autosave', $mem->getAutosave(), 87, 1, 0, _YES, _NO, 0, $templateName);
2814 * Actions::parse_editpluginfo()
2815 * Parse skinvar editpluginfo
2817 * @param string $type type of plugin info
2820 public function parse_editpluginfo($type)
2822 $pid = intRequestVar('plugid');
2829 echo Entity::hsc(getPluginNameFromPid($pid));
2836 * Actions::parse_editplugoptionslist()
2837 * Parse skinvar editplugoptionslist
2839 * @param string $templateName name of template
2842 public function parse_editplugoptionslist($templateName = '')
2846 $pid = intRequestVar('plugid');
2847 $aOptions = array();
2850 $query = "SELECT * FROM %s WHERE ocontext='global' AND opid=%d ORDER BY oid ASC";
2851 $query = sprintf($query, sql_table('plugin_option_desc'), (integer) $pid);
2852 $resource = sql_query($query);
2854 while ( $o = sql_fetch_object($resource) )
2856 array_push($aOIDs, $o->oid);
2857 $aOptions[$o->oid] = array(
2860 'value' => $o->odef,
2861 'name' => $o->oname,
2862 'description' => $o->odesc,
2863 'type' => $o->otype,
2864 'typeinfo' => $o->oextra,
2869 // fill out actual values
2870 if ( count($aOIDs) > 0 )
2872 $query = 'SELECT oid, ovalue FROM %s WHERE oid in (%s)';
2873 $query = sprintf($query, sql_table('plugin_option'), implode(',', $aOIDs));
2875 $result = sql_query($query);
2877 while ( $o = sql_fetch_object($result) )
2879 $aOptions[$o->oid]['value'] = $o->ovalue;
2885 'PrePluginOptionsEdit',
2887 'context' => 'global',
2889 'options' => &$aOptions
2893 $template['content'] = 'plugoptionlist';
2894 $amount = Showlist($aOptions, 'table', $template, $templateName);
2897 echo '<p>' . _ERROR_NOPLUGOPTIONS . "</p>\n";
2903 * Actions::parse_editskin()
2904 * Parse skinvar editskin
2906 * @param string $type type of skin
2909 public function parse_editskin($type = 'id')
2911 $skinid = intRequestVar('skinid');
2912 $skin = new SKIN($skinid);
2916 echo intRequestVar('skinid');
2919 echo Entity::hsc($skin->getName());
2922 echo Entity::hsc($skin->getDescription());
2925 echo Entity::hsc($skin->getContentType());
2928 echo Entity::hsc($skin->getIncludePrefix());
2931 $this->parse_inputyesno('inc_mode', $skin->getIncludeMode(), 120, 'skindir', 'normal', _PARSER_INCMODE_SKINDIR, _PARSER_INCMODE_NORMAL);
2939 * Actions::parse_editskintype()
2940 * Parse skinvar editskintype
2942 * @param string $type name of type for skin type
2945 public function parse_editskintype($type = 'id')
2947 global $CONF, $manager, $member;
2948 $skinid = intRequestVar('skinid');
2949 $skin = new SKIN($skinid);
2950 $fNames = SKIN::getFriendlyNames();
2951 $sType = strtolower(trim(requestVar('type')));
2956 echo intRequestVar('skinid');
2959 echo Entity::hsc($skin->getName());
2962 echo Entity::hsc($skin->getDescription());
2965 echo Entity::hsc($skin->getContentType());
2968 echo Entity::hsc($skin->getContent($sType));
2971 $skinType = isset($fNames[$sType]) ? $fNames[$sType] : ucfirst($sType);
2972 echo Entity::hsc($skinType);
2975 echo Entity::hsc($sType);
2978 echo Entity::hsc($skin->getIncludePrefix());
2981 $incMode = $skin->getIncludeMode() ? _PARSER_INCMODE_SKINDIR : _PARSER_INCMODE_NORMAL;
2982 echo Entity::hsc($incMode);
2991 * Actions::parse_edittemplateinfo()
2992 * Parse skinvar edittemplateinfo
2994 * @param string $type name of type for skin
2995 * @param string $description description for skin
2996 * @param string $name name of skin
2997 * @param string $help
2998 * @param string $tabindex index value for tabindex attribute of input element
2999 * @param string $big
3000 * @param string $tplt name of template
3002 public function parse_edittemplateinfo($type, $description = '', $name = '', $help = '', $tabindex = 0, $big = 0, $tplt = '')
3005 $templateid = intRequestVar('templateid');
3006 $templatename = TEMPLATE::getNameFromId($templateid);
3007 $templatedescription = TEMPLATE::getDesc($templateid);
3008 $template =& $manager->getTemplate($templatename);
3012 echo intval($templateid);
3015 echo Entity::hsc($templatename);
3018 echo Entity::hsc($templatedescription);
3020 case 'extratemplate':
3022 $pluginfields = array();
3024 'TemplateExtraFields',
3026 'fields' => &$pluginfields
3032 $tmplt = Template::read($description);
3034 if ( array_key_exists('TEMPLATE_EDIT_EXPLUGNAME', $tmplt) && !empty($tmplt['TEMPLATE_EDIT_EXPLUGNAME']) )
3036 $base = $tmplt['TEMPLATE_EDIT_EXPLUGNAME'];
3040 $base = "</tr><tr>\n"
3041 . "\t" . '<th colspan="2"><%explugtplname%>' . "</th>\n";
3043 foreach ( $pluginfields as $pfkey => $pfvalue )
3046 'explugtplname' => Entity::hsc($pfkey)
3048 echo TEMPLATE::fill($base, $data);
3049 foreach ( $pfvalue as $pffield => $pfdesc )
3051 $this->_templateEditRow($template, $pfdesc, $pffield, '', ++$tabidx, 0, $name);
3056 $desc = defined($description) ? constant($description) : $description;
3057 $name = defined($name) ? constant($name) : $name;
3058 $this->_templateEditRow($template, $desc, $name, $help, $tabindex, $big, $tplt);
3065 * Actions::parse_eventformextra()
3066 * Parse skinvar eventformextra
3068 * @param string $type name of type for event form extra
3071 public function parse_eventformextra($type = 'activation')
3077 $key = requestVar('ackey');
3080 $this->objAdmin->error(_ERROR_ACTIVATE);
3082 $info = MEMBER::getActivationInfo($key);
3085 $this->objAdmin->error(_ERROR_ACTIVATE);
3087 $mem = MEMBER::createFromId($info->vmember);
3090 $this->objAdmin->error(_ERROR_ACTIVATE);
3093 'type' => 'activation',
3097 case 'membermailform-notloggedin':
3099 'type' => 'membermailform-notloggedin',
3103 $manager->notify('FormExtra', $data);
3108 * Actions::parse_extrahead()
3109 * Parse skinvar extrahead
3111 public function parse_extrahead()
3114 $extrahead = $this->objAdmin->extrahead;
3118 'extrahead' => &$extrahead,
3119 'action' => $this->objAdmin->action
3127 * AdminActions::parse_getblogsetting()
3128 * Parse skinvar getblogsetting
3130 public function parse_getblogsetting($which)
3138 elseif ( $bid = intRequestVar('blogid') )
3141 $b = $manager->getBlog($bid);
3151 return ENTITY::hsc($b->getID(), ENT_QUOTES);
3154 return ENTITY::hsc($b->getURL(), ENT_QUOTES);
3157 return ENTITY::hsc($b->getName(), ENT_QUOTES);
3160 return ENTITY::hsc($b->getDescription(), ENT_QUOTES);
3163 return ENTITY::hsc($b->getShortName(), ENT_QUOTES);
3165 case 'notifyaddress':
3166 return ENTITY::hsc($b->getNotifyAddress(), ENT_QUOTES);
3169 return ENTITY::hsc($b->getMaxComments(), ENT_QUOTES);
3172 return ENTITY::hsc($b->getUpdateFile(), ENT_QUOTES);
3175 return ENTITY::hsc($b->getTimeOffset(), ENT_QUOTES);
3182 * Actions::parse_geteditpluginfo()
3183 * Parse skinvar geteditpluginfo
3185 * @param string $type name of setting for edit plugin info
3188 public function parse_geteditpluginfo($type)
3190 $pid = intRequestVar('plugid');
3197 return Entity::hsc(getPluginNameFromPid($pid));
3204 * Actions::parse_getmember()
3205 * Parse skinvar getmember
3206 * (includes a member info thingie)
3208 * @param string $what name of setting for member
3211 public function parse_getmember($what)
3213 global $memberinfo, $member;
3214 // 1. only allow the member-details-page specific variables on member pages
3215 if ( $this->skintype == 'member' )
3220 return Entity::hsc($memberinfo->getDisplayName());
3223 return Entity::hsc($memberinfo->getRealName());
3226 return Entity::hsc($memberinfo->getNotes());
3229 return Entity::hsc($memberinfo->getURL());
3232 return Entity::hsc($memberinfo->getEmail());
3235 return Entity::hsc($memberinfo->getID());
3239 // 2. the next bunch of options is available everywhere, as long as the user is logged in
3240 if ( $member->isLoggedIn() )
3245 return $member->getDisplayName();
3247 case 'yourrealname':
3248 return $member->getRealName();
3251 return $member->getNotes();
3254 return $member->getURL();
3257 return $member->getEmail();
3260 return $member->getID();
3268 * Actions::parse_headmessage()
3269 * Parse skinvar headmessage
3274 public function parse_headmessage()
3276 if ( !empty($this->objAdmin->headMess) )
3278 echo '<p>' . _MESSAGE . ': ' . Entity::hsc($this->objAdmin->headMess) . "</p>\n";
3284 * Actions::parse_helplink()
3285 * Parse skinvar helplink
3287 * @param string $topic name of topic for help
3290 public function parse_helplink($topic = '')
3292 if ( empty($topic) )
3301 * Actions::parse_helpplugname()
3302 * Parse skinvar helpplugname
3307 public function parse_helpplugname()
3309 $plugid = intGetVar('plugid');
3310 Entity::hsc(getPluginNameFromPid($plugid));
3315 * Actions::parse_ilistaddnew()
3316 * Parse skinvar ilistaddnew
3321 public function parse_ilistaddnew()
3323 $blogid = intRequestVar('blogid');
3324 if ( intPostVar('start') == 0 )
3326 echo '<p><a href="index.php?action=createitem&blogid=' . $blogid . '">' . _ITEMLIST_ADDNEW . "</a></p>\n";
3332 * Actions::parse_importskininfo()
3333 * Parse skinvar importskininfo
3335 * @param string $type name of information for imported skin
3338 public function parse_importskininfo($type)
3343 echo Entity::hsc(requestVar('skininfo'));
3346 $dataArr = requestArray('skinnames');
3347 echo implode(' <em>' . _AND . '</em> ', $dataArr);
3350 $dataArr = requestArray('tpltnames');
3351 echo implode(' <em>' . _AND . '</em> ', $dataArr);
3354 $dataArr = requestArray('skinclashes');
3355 echo implode(' <em>' . _AND . '</em> ', $dataArr);
3358 $dataArr = requestArray('tpltclashes');
3359 echo implode(' <em>' . _AND . '</em> ', $dataArr);
3362 echo Entity::hsc(requestVar('skinfile'));
3365 echo Entity::hsc(requestVar('mode'));
3372 * Actions::parse_inputyesno()
3373 * Parse skinvar inputyesno
3375 * @param string $name
3376 * @param string $checkedval
3377 * @param string $tabindex
3378 * @param string $value1
3379 * @param string $value2
3380 * @param string $yesval
3381 * @param string $noval
3382 * @param string $isAdmin
3383 * @param string $templateName
3386 public function parse_inputyesno($name, $checkedval, $tabindex = 0, $value1 = 1, $value2 = 0, $yesval = _YES, $noval = _NO, $isAdmin = 0, $templateName = '')
3388 self::input_yesno($name, $checkedval, $tabindex, $value1, $value2, $yesval, $noval, $isAdmin, $templateName );
3393 * Actions::parse_insertpluginfo()
3394 * Parse templatevar insertpluginfo
3396 public function parse_insertpluginfo($type)
3398 $option = $this->objAdmin;
3402 return $option['pid'];
3405 return Entity::hsc($option['pfile']);
3412 * Actions::parse_insertpluginoptions()
3413 * Parse skinvar insertpluginoptions
3415 * @param string $templateName name of template
3418 public function parse_insertpluginoptions($templateName = '')
3420 $options = $this->objAdmin->aOptions;
3421 $template = array();
3422 $templats = array();
3424 if ( $templateName )
3426 $templates = Template::read($templateName);
3428 if (array_key_exists('INSERT_PLUGOPTION_TITLE', $templates) && !empty($templates['INSERT_PLUGOPTION_TITLE']) )
3430 $template['title'] = $templates['INSERT_PLUGOPTION_TITLE'];
3434 $template['title'] = '<tr><th colspan="2"><%sprinttext(_PLUGIN_OPTIONS_TITLE, <|%insertpluginfo(name)%|>)%></th></tr>' . "\n";
3436 if ( array_key_exists('INSERT_PLUGOPTION_BODY', $templates) && !empty($templates['INSERT_PLUGOPTION_BODY']) )
3438 $template['body'] = $templates['INSERT_PLUGOPTION_BODY'];
3442 $template['body'] = '<tr><%listplugplugoptionrow%></tr>' . "\n";
3447 foreach ( $options as $option )
3449 $handler = new Actions($this->skintype, $template, $option);
3450 $parser = new PARSER(Actions::getDefinedActions(), $handler);
3452 if ( $prevPid != $option['pid'] )
3454 $prevPid = $option['pid'];
3455 $parser->parse($template['title']);
3457 $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);
3458 if ( @$meta['access'] != 'hidden' )
3460 $parsed = $parser->parse($template['body']);
3467 * Actions::parse_insplugoptcontent()
3468 * Parse skinvar insplugoptcontent
3473 public function parse_insplugoptcontent()
3475 $option = $this->objAdmin->aOption;
3477 $meta = NucleusPlugin::getOptionMeta($option['typeinfo']);
3478 if (array_key_exists('access', $meta) && $meta['access'] != 'hidden')
3481 listplug_plugOptionRow($option);
3488 * Actions::parse_iprangeinput()
3489 * Parse skinvar iprangeinput
3494 public function parse_iprangeinput()
3496 if ( requestVar('ip') )
3498 $iprangeVal = Entity::hsc(requestVar('ip'));
3499 echo '<input name="iprange" type="radio" value="' . $iprangeVal . '" checked="checked" id="ip_fixed" />' . "\n";
3500 echo '<label for="ip_fixed">' . $iprangeVal . "</label><br />\n";
3501 echo '<input name="iprange" type="radio" value="custom" id="ip_custom" />' . "\n";
3502 echo '<label for="ip_custom">' . _BAN_IP_CUSTOM . '</label>' . "\n";
3503 echo '<input name="customiprange" value="' . $iprangeVal . '" maxlength="15" size="15" />' . "\n";
3507 echo '<input name="iprange" value="custom" type="hidden" />' . "\n";
3508 echo '<input name="customiprange" value="" maxlength="15" size="15" />' . "\n";
3514 * Actions::parse_itemnavlist()
3515 * Parse skinvar itemnavlist
3520 public function parse_itemnavlist()
3522 global $CONF, $manager, $member;
3523 if ( $this->skintype == 'itemlist' )
3525 $blogid = intRequestVar('blogid');
3526 $blog =& $manager->getBlog($blogid);
3528 if ( postVar('start') )
3530 $start = intPostVar('start');
3537 // amount of items to show
3538 if ( postVar('amount') )
3540 $amount = intPostVar('amount');
3544 $amount = intval($CONF['DefaultListSize']);
3550 $query = "SELECT bshortname, cname, mname, ititle, ibody, inumber, idraft, itime"
3551 . " FROM %s, %s, %s"
3552 . " WHERE iblog=bnumber AND iauthor=mnumber AND icat=catid;";
3554 $query = sprintf($query, sql_table('item'), sql_table('blog'), sql_table('member'), sql_table('category'));
3556 if ( $this->skintype == 'itemlist' )
3558 $query .= 'and iblog = ' . $blogid;
3559 $template['now'] = $blog->getCorrectTime(time());
3561 // non-blog-admins can only edit/delete their own items
3562 if ( !$member->blogAdminRights($blogid) )
3564 $query .= ' and iauthor = ' . $member->getID();
3567 elseif ( $this->skintype == 'browseownitems' )
3569 $query .= 'and iauthor = ' . $member->getID();
3571 $template['now'] = time();
3574 // search through items
3575 $search = postVar('search');
3577 if ( !empty($search) )
3579 $query .= ' AND ((ititle LIKE "%' . sql_real_escape_string($search) . '%") '
3580 . ' OR (ibody LIKE "%' . sql_real_escape_string($search) . '%") '
3581 . ' OR (imore LIKE "%' . sql_real_escape_string($search) . '%"))';
3583 $query .= ' ORDER BY itime DESC'
3584 . " LIMIT {$start},{$amount}";
3586 $template['content'] = 'itemlist';
3588 $navList = new Navlist($this->skintype, $start, $amount, 0, 1000, $blogid, $search, 0);
3589 $navList->showBatchList('item', $query, 'table', $template);
3594 * Actions::parse_jstoolbaroptions()
3595 * Parse skinvar jstoolbaroptions
3600 public function parse_jstoolbaroptions()
3604 _SETTINGS_JSTOOLBAR_NONE,
3605 _SETTINGS_JSTOOLBAR_SIMPLE,
3606 _SETTINGS_JSTOOLBAR_FULL
3609 foreach ( $options as $option )
3611 $text = "<option value=\"%d\"%s>%s</option>\n";
3612 $extra = ($CONF['DisableJsTools'] == $i) ? ' selected="selected"' : '';
3613 echo sprintf($text, $i, $extra, $option);
3620 * Actions::parse_localeselectoptions()
3621 * Parse skinvar localeselectoptions
3626 public function parse_localeselectoptions()
3628 $locales = i18n::get_available_locale_list();
3629 $memid = intRequestVar('memberid');
3632 $mem = MEMBER::createFromID($memid);
3633 if ( !$mem->getLocale() || !in_array($mem->getLocale(), $locales) )
3635 echo "<option value=\"\" selected=\"selected\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";
3639 echo "<option value=\"\">" . Entity::hsc(_MEMBERS_USESITELANG) . "</option>\n";
3644 if ( !i18n::get_current_locale() || !in_array(i18n::get_current_locale(), $locales) )
3646 echo "<option value=\"\" selected=\"selected\">en_Latn_US</option>\n";
3649 foreach ( $locales as $locale )
3653 if ( $locale == $mem->getLocale() )
3655 echo "<option value=\"{$locale}\" selected=\"selected\">{$locale}</option>\n";
3659 echo "<option value=\"{$locale}\">{$locale}</option>\n";
3664 if ( $locale == i18n::get_current_locale() )
3666 echo "<option value=\"{$locale}\" selected=\"selected\">{$locale}</option>\n";
3670 echo "<option value=\"{$locale}\">{$locale}</option>\n";
3678 * Actions::parse_listplugplugoptionrow()
3679 * Parse templatevar listplugplugoptionrow
3681 * @param string $templateName name of template
3684 public function parse_listplugplugoptionrow($templateName = '')
3686 $option = $this->objAdmin;
3687 echo listplug_plugOptionRow($option, $templateName);
3692 * Actions::parse_mediadirwarning()
3693 * Parse skinvar mediadirwarning
3698 public function parse_mediadirwarning()
3701 if ( !is_dir($DIR_MEDIA) )
3703 echo "<br /><b>" . _WARNING_NOTADIR . "</b>\n";
3705 if ( !is_readable($DIR_MEDIA) )
3707 echo "<br /><b>" . _WARNING_NOTREADABLE . "</b>\n";
3709 if ( !is_writeable($DIR_MEDIA) )
3711 echo "<br /><b>" . _WARNING_NOTWRITABLE . "</b>\n";
3717 * Actions::parse_movedistselect()
3718 * Parse skinvar movedistselect
3720 public function parse_movedistselect()
3722 $actionType = requestVar('action');
3723 switch ( $actionType )
3726 $this->objAdmin->selectBlogCategory('destcatid');
3728 case 'batchcategory':
3729 $this->objAdmin->selectBlog('destblogid');
3732 if ( $this->skintype == 'itemmove' )
3734 $query = "SELECT icat as result FROM %s WHERE inumber=%d;";
3735 $query = spriintf($query, sql_table('item'), intRequestVar('itemid'));
3736 $catid = quickQuery(sprintf($query, intRequestVar('itemid')));
3737 $this->objAdmin->selectBlogCategory('catid', $catid, 10, 1);
3745 * Actions::parse_moveitemid()
3746 * Parse skinvar moveitemid
3751 public function parse_moveitemid()
3753 echo intRequestVar('itemid');
3758 * Actions::parse_newestcompare()
3759 * Parse skinvar newestcompare
3764 public function parse_newestcompare()
3767 $newestVersion = getLatestVersion();
3768 $newestCompare = str_replace('/', '.', $newestVersion);
3769 $currentVersion = str_replace(array('/', 'v'), array('.', ''), $nucleus['version']);
3770 if ( $newestVersion && version_compare($newestCompare, $currentVersion, '>') )
3772 echo '<br /><a style="color:red" href="http://nucleuscms.org/upgrade.php" title="' . _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TITLE . '">';
3773 echo _ADMIN_SYSTEMOVERVIEW_LATESTVERSION_TEXT . $newestVersion . '</a>';
3779 * Actions::parse_newmemberselect()
3780 * Parse skinvar newmemberselect
3782 * @param string $templateName name of template to use
3785 public function parse_newmemberselect($templateName = '')
3787 $blogid = intRequestVar('blogid');
3789 $query = "SELECT tmember FROM %s WHERE tblog=%d;";
3790 $query = sprintf($query, sql_table('team'), (integer) $blogid);
3791 $res = sql_query($query);
3794 while ( $tmember = sql_fetch_object($res) )
3796 $tmem[] = intval($tmember->tmember);
3799 $query = "SELECT mname as text, mnumber as value FROM %s WHERE mnumber NOT IN (%s);";
3800 $query = sprintf($query, sql_table('member'), implode(', ', $tmem));
3802 $template['name'] = 'memberid';
3803 $template['tabindex'] = 10000;
3804 Showlist($query, 'select', $template, $templateName);
3809 * Actions::parse_newpluginlist()
3810 * Parse skinvar newpluginlist
3815 public function parse_newpluginlist()
3817 $candidates = $this->newPlugCandidates;
3818 foreach ( $candidates as $name )
3820 echo '<option value="NP_' . $name . '">' . Entity::hsc($name) . "</option>\n";
3826 * Actions::parse_outputspecialdirs()
3827 * Parse skinvar outputspecialdirs
3829 * @param string $type type of setting for directory
3832 public function parse_outputspecialdirs($type)
3837 global $DIR_NUCLEUS;
3838 echo Entity::hsc($DIR_NUCLEUS);
3842 echo Entity::hsc($DIR_MEDIA);
3849 * Actions::parse_passrequestvars()
3850 * Parse skinvar passrequestvars
3855 public function parse_passrequestvars()
3857 $oldaction = postVar('oldaction');
3858 if ( ($oldaction != 'logout')
3859 && ($oldaction != 'login')
3860 && $this->objAdmin->passvar
3861 && !postVar('customaction') )
3869 * Actions::parse_pluginextras()
3870 * Parse skinvar pluginextras
3872 * @param string $type type of plugin context
3875 public function parse_pluginextras($type = 'global')
3881 $id = intRequestVar('memberid');
3882 $mem = MEMBER::createFromID($id);
3884 'MemberSettingsFormExtras',
3891 $id = intRequestVar('blogid');
3892 $blg = $manager->getBlog($id);
3894 'BlogSettingsFormExtras',
3902 'GeneralSettingsFormExtras',
3912 * Actions::parse_pluginhelp()
3913 * Parse skinvar pluginhelp
3918 public function parse_pluginhelp()
3920 global $manager, $DIR_PLUGINS;
3921 $plugid = intGetVar('plugid');
3922 $plugName = getPluginNameFromPid($plugid);
3923 $plug =& $manager->getPlugin($plugName);
3925 if ( $plug->supportsFeature('HelpPage') > 0 )
3927 $helpfile = $DIR_PLUGINS . $plug->getShortName() . '/help.';
3928 if ( @file_exists($helpfile . 'php') )
3930 @include($helpfile . 'php');
3933 elseif ( @file_exists($helpfile . 'html') )
3935 @include($helpfile . 'html');
3939 echo '<p>' . _ERROR . ': ' . _ERROR_PLUGNOHELPFILE . "</p>\n";
3940 echo '<p><a href="index.php?action=pluginlist">(' . _BACK . ")</a></p>\n";
3945 * Actions::parse_pluginlistlist()
3946 * Parse skinvar pluginlistlist
3948 * @param string $templateName name of template to use
3951 public function parse_pluginlistlist($templateName = '')
3953 $query = "SELECT * FROM %s ORDER BY porder ASC;";
3954 $query = sprintf($query, sql_table('plugin'));
3955 $template['content'] = 'pluginlist';
3956 $template['tabindex'] = 10;
3957 Showlist($query, 'table', $template, $templateName);
3962 * Actions::parse_pluginoptions()
3963 * Parse skinvar pluginoptions
3965 * @param string $type type of plugin option
3968 public function parse_pluginoptions($type = 'global')
3973 $id = intRequestVar('memberid');
3976 $id = intRequestVar('blogid');
3979 $id = intRequestVar('catid');
3982 $this->objAdmin->_insertPluginOptions($type, $id);
3987 * Actions::parse_qmenuaddselect()
3988 * Parse skinvar qmanuaddselect
3990 * @param string $templateName name of template to use
3993 public function parse_qmenuaddselect($templateName = '')
3996 $showAll = requestVar('showall');
3997 if ( $member->isAdmin() && ($showAll == 'yes') )
3999 // Super-Admins have access to all blogs! (no add item support though)
4000 $query = 'SELECT bnumber as value, bname as text'
4001 . ' FROM ' . sql_table('blog')
4002 . ' ORDER BY bname';
4006 $query = 'SELECT bnumber as value, bname as text'
4007 . ' FROM ' . sql_table('blog') . ', ' . sql_table('team')
4008 . ' WHERE tblog=bnumber and tmember=' . $member->getID()
4009 . ' ORDER BY bname';
4011 $template['name'] = 'blogid';
4012 $template['tabindex'] = 15000;
4013 $template['extra'] = _QMENU_ADD_SELECT;
4014 $template['selected'] = -1;
4015 $template['shorten'] = 10;
4016 $template['shortenel'] = '';
4017 $template['javascript'] = 'onchange="return form.submit()"';
4018 Showlist($query, 'select', $template, $templateName);
4023 * Actions::parse_quickmenu()
4024 * Parse skinvar quickmenu
4026 * @param string $templateName name of template to use
4029 public function parse_quickmenu($templateName = '')
4032 $templates = array();
4033 $template = array();
4034 if ( !empty($templateName) )
4036 $templates = Template::read($templateName);
4038 $pluginExtras = array();
4042 'options' => &$pluginExtras
4045 if ( count($pluginExtras) > 0 )
4047 if ( array_key_exists('PLUGIN_QUICKMENU_TITLE', $templates) || !empty($templates['PLUGIN_QUICKMENU_TITLE']) )
4049 $template['title'] = $templates['PLUGIN_QUICKMENU_TITLE'];
4053 $template['title'] = '<h2><%text(_QMENU_PLUGINS)%></h2>';
4055 $handler = new Actions($this->skintype, $template, $this->objAdmin);
4056 $parser = new PARSER(Actions::getDefinedActions(), $handler);
4057 $parser->parse($template['title']);
4059 if ( array_key_exists('PLUGIN_QUICKMENU_HEAD', $templates) || !empty($templates['PLUGIN_QUICKMENU_HEAD']) )
4061 $template['head'] = $templates['PLUGIN_QUICKMENU_HEAD'];
4065 $template['head'] = '<ul>';
4068 echo $template['head'];
4070 if ( array_key_exists('PLUGIN_QUICKMENU_BODY', $templates) || !empty($templates['PLUGIN_QUICKMENU_BODY']) )
4072 $template['body'] = $templates['PLUGIN_QUICKMENU_BODY'];
4076 $template['body'] = '<li><a href="<%plugadminurl%>" title="<%plugadmintooltip%>"><%plugadmintitle%></a></li>';
4079 foreach ( $pluginExtras as $aInfo )
4082 'plugadminurl' => Entity::hsc($aInfo['url']),
4083 'plugadmintooltip' => Entity::hsc($aInfo['tooltip']),
4084 'plugadmintitle' => Entity::hsc($aInfo['title']),
4086 echo TEMPLATE::fill($template['body'], $data);
4088 if ( array_key_exists('PLUGIN_QUICKMENU_FOOT', $templates) || !empty($templates['PLUGIN_QUICKMENU_FOOT']) )
4090 $template['foot'] = $templates['PLUGIN_QUICKMENU_FOOT'];
4094 $template['foot'] = '</ul>';
4096 echo $template['foot'];
4102 * Actions::parse_requestblogid()
4103 * Parse skinvar requestblogid
4108 public function parse_requestblogid()
4110 echo intRequestVar('blogid');
4115 * Actions::parse_requestiprange()
4116 * Parse skinvar requestiprange
4121 public function parse_requestiprange()
4123 if ( requestVar('iprange') )
4125 echo Entity::hsc(requestVar('iprange'));
4127 elseif ( requestVar('ip') )
4129 echo Entity::hsc(requestVar('ip'));
4135 * Actions::parse_selectlocaladminskinfiles()
4136 * Parse skinvar selectlocaladminskinfiles
4141 public function parse_selectlocaladminskinfiles()
4143 global $DIR_ADMINSKINS, $manager;
4144 $candidates = SkinImport::searchForCandidates($DIR_ADMINSKINS);
4145 foreach ( $candidates as $skinname => $skinfile )
4147 $html = Entit::hsc($skinfile);
4148 echo '<option value="' . $html . '">' . $skinname . "</option>\n";
4154 * Actions::parse_selectlocalskinfiles()
4155 * Parse skinvar selectlocalskinfiles
4160 public function parse_selectlocalskinfiles()
4163 $candidates = SkinImport::searchForCandidates($DIR_SKINS);
4164 foreach ( $candidates as $skinname => $skinfile )
4166 $html = Entity::hsc($skinfile);
4167 echo '<option value="' . $html . '">' . $skinname . "</option>\n";
4173 * Actions::parse_skineditallowedlist()
4174 * Parse skinvar skineditallowedlist
4176 * @param string $type type of skin
4177 * @param string $templateName name of template
4180 public function parse_skineditallowedlist($type, $templateName = '')
4185 $query = "SELECT bshortname, bname FROM %s";
4187 'content' => 'shortblognames'
4189 $query = sprintf($query, sql_table('blog'));
4190 Showlist($query, 'table', $show, $templateName);
4193 $query = "SELECT tdname as name, tddesc as description FROM %s";
4195 'content' => 'shortnames'
4197 $query = sprintf($query, sql_table('template_desc'));
4198 Showlist($query, 'table', $show, $templateName);
4205 * Actions::parse_skinfile()
4206 * Inserts an url relative to the skindir (useful when doing import/export)
4208 * e.g. <skinfile(default/myfile.sth)>
4210 * @param string $filename file name for skin
4213 public function parse_skinfile($filename)
4216 * TODO: we should decide to use different directory or default $DIR_SKINS
4217 $base = NP_SkinableAdmin::getAdminSkinURL();
4218 $pref = PARSER::getProperty('IncludePrefix');
4219 echo $base . $pref . $filename;
4221 $pref = PARSER::getProperty('IncludePrefix');
4222 echo $pref . $filename;
4227 * Actions::parse_skinielist()
4228 * Parse skinvar skinielist
4230 * @param string $type type of skin
4231 * @param string $templateName name of template to use
4234 public function parse_skinielist($type, $templateName = '')
4236 $templates = array();
4237 if ( $templateName )
4239 $templates = Template::read($templateName);
4241 if ( array_key_exists('SKINIE_EXPORT_LIST', $templates) && !empty($templates['SKINIE_EXPORT_LIST']) )
4243 $template = $templates['SKINIE_EXPORT_LIST'];
4247 $template = '<td><input type="checkbox" name="<%typeid%>" id="<%expid%>" /><label for="<%expid%>"><%expname%></label></td>' . "\n"
4248 . "<td><%expdesc%></td>\n"
4254 $res = sql_query('SELECT * FROM ' . sql_table('skin_desc'));
4255 while ( $skinObj = sql_fetch_object($res) )
4258 'typeid' => 'skin[' . $skinObj->sdnumber . ']',
4259 'expid' => 'skinexp' . $skinObj->sdnumber,
4260 'expname' => Entity::hsc($skinObj->sdname),
4261 'expdesc' => Entity::hsc($skinObj->sddesc),
4263 echo TEMPLATE::fill($template, $data);
4267 $res = sql_query('SELECT * FROM '.sql_table('template_desc'));
4268 while ($templateObj = sql_fetch_object($res)) {
4270 'typeid' => 'template[' . $templateObj->tdnumber . ']',
4271 'expid' => 'templateexp' . $templateObj->tdnumber,
4272 'expname' => Entity::hsc($templateObj->tdname),
4273 'expdesc' => Entity::hsc($templateObj->tddesc),
4275 echo TEMPLATE::fill($template, $data);
4283 * Actions::parse_skinoverview()
4284 * Parse skinvar skinoverview
4286 * @param string $templateName name of template to use
4289 public function parse_skinoverview($templateName = '')
4291 $query = "SELECT * FROM %s ORDER BY sdname";
4292 $query = sprintf($query, sql_table('skin_desc'));
4294 $template['content'] = 'skinlist';
4295 $template['tabindex'] = 10;
4297 Showlist($query, 'table', $template, $templateName);
4302 * Actions::parse_skintypehelp()
4303 * Check editing skintypehelp
4308 public function parse_skintypehelp()
4310 $nowSkinType = strtolower(trim(requestVar('type')));
4311 $regularType = array(
4322 if ( in_array($nowSkinType, $regularType) )
4324 help('skinpart' . $nowSkinType);
4328 help('skinpartspecial');
4334 * Actions::parse_specialskinlist()
4335 * Parse skinvar specialskinlist
4337 * @param string $templateName name of template to use
4340 public function parse_specialskinlist($templateName = '')
4342 $templates = array();
4343 if ( $templateName )
4345 $templates = Template::read($templateName);
4357 $skinid = intRequestVar('skinid');
4358 $query = "SELECT stype FROM %s WHERE stype NOT IN ('%s') AND sdesc = %d;";
4359 $query = sprintf($query, sql_table('skin'), implode("', '", $nType), $skinid);
4361 $res = sql_query($query);
4362 if ( $res && sql_num_rows($res) > 0 )
4365 if ( array_key_exists('SPECIALSKINLIST_HEAD', $templates) && !empty($templates['SPECIALSKINLIST_HEAD']) )
4367 $template['head'] = $templates['SPECIALSKINLIST_HEAD'];
4371 $template['head'] = "<ul>\n";
4373 echo TEMPLATE::fill($template['head'], $data);
4374 if ( array_key_exists('SPECIALSKINLIST_BODY', $templates) && !empty($templates['SPECIALSKINLIST_BODY']) )
4376 $template['body'] = $templates['SPECIALSKINLIST_BODY'];
4380 $template['body'] = '<li><a tabindex="<%tabindex%>" href="index.php?action=skinedittype&skinid=<%skinid%>'
4381 . '&type=<%skintype%>"><%skintype%></a> (<a tabindex="<%tabindex%>" href="index.php?'
4382 . 'action=skinremovetype&skinid=<%skinid%>&type=<%skintype%>">remove</a>)</li>';
4385 while ( $row = sql_fetch_assoc($res) )
4388 'tabindex' => $tabstart++,
4389 'skinid' => $skinid,
4390 'skintype' => Entity::hsc(strtolower($row['stype']))
4392 echo TEMPLATE::fill($template['body'], $data);
4395 if (array_key_exists('SPECIALSKINLIST_FOOT', $templates) && !empty($templates['SPECIALSKINLIST_FOOT']) )
4397 $template['foot'] = $templates['SPECIALSKINLIST_FOOT'];
4401 $template['foot'] = "</ul>\n";
4403 echo TEMPLATE::fill($template['foot'], $data);
4409 * Actions::parse_sprinttext()
4412 * @param string $which
4413 * @param string $val
4416 public function parse_sprinttext($which, $val)
4418 if ( !defined($which) )
4424 $base = constant($which);
4427 if ( preg_match('#[^<|%].*[^%|>]#', $val, $matchies) )
4429 if ( !preg_match('#[(].*[^)]#', $matchies[0], $args) )
4431 $met = 'parse_' . $matchies[0];
4435 $arg = trim($args[0], '()');
4436 $met = 'parse_' . substr($matchies[0], 0, strpos($matchies[0], '('));
4439 if ( method_exists($this, $met) )
4441 $value = call_user_func(array(&$this, $met), $arg);
4445 if ( !isset($value) || empty($value) )
4449 echo sprintf($base, $value);
4454 * Actions::parse_systemsettings()
4455 * Parse skinvar systemsettings
4457 * @param string $type type of settings for system
4458 * @param string $templateName name of template to use
4461 public function parse_systemsettings($type = 'phpinfo', $templateName = '')
4463 global $member, $CONF, $nucleus;
4465 $member->isAdmin() or $this->objAdmin->disallow();
4467 $enable = _ADMIN_SYSTEMOVERVIEW_ENABLE;
4468 $disable = _ADMIN_SYSTEMOVERVIEW_DISABLE;
4475 case 'sqlserverinfo':
4476 echo sql_get_server_info();
4478 case 'sqlclientinfo':
4479 echo sql_get_client_info();
4481 case 'magicquotesgpc':
4482 echo ini_get('magic_quotes_gpc') ? 'On' : 'Off';
4484 case 'magicquotesruntime':
4485 echo ini_get('magic_quotes_runtime') ? 'On' : 'Off';
4487 case 'registerglobals':
4488 echo ini_get('register_globals') ? 'On' : 'Off';
4491 $templates = array();
4492 if ( $templateName )
4494 $templates = Template::read($templateName);
4496 if ( array_key_exists('SYSTEMINFO_GDSETTINGS', $templates) && !empty($templates['SYSTEMINFO_GDSETTINGS']) )
4498 $template = $templates['SYSTEMINFO_GDSETTINGS'];
4502 $template = "<tr>\n\t\t" . '<td width="50%">' . "<%key%></td><td><%value%></td>\n</tr>\n";
4505 $gdinfo = gd_info();
4507 foreach ( $gdinfo as $key => $value )
4509 if ( is_bool($value) )
4511 $value = $value ? $enable : $disable;
4515 $value = Entity::hsc($value);
4521 echo TEMPLATE::fill($template, $data);
4526 phpinfo(INFO_MODULES);
4527 $im = ob_get_contents();
4529 echo (strstr($im, 'mod_rewrite') != '') ? $enable : $disable;
4531 case 'nucleusversion':
4532 echo getNucleusVersion() / 100 . '(' . $nucleus['version'] . ')';
4534 case 'nucleuspatchlevel':
4535 echo getNucleusPatchLevel();
4541 echo $CONF['ItemURL'];
4543 case 'alertonheaderssent':
4544 echo $CONF['alertOnHeadersSent'] ? $enable : $disable;
4546 case 'nucleuscodename':
4547 if ( $nucleus['codename'] != '' )
4549 echo ' "' . $nucleus['codename'] . '"';
4552 case 'versioncheckurl':
4553 echo sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
4560 * Actions::parse_templateoverview()
4561 * Parse skinvar templateoverview
4563 * @param string $templateName name of template to use
4566 public function parse_templateoverview($templateName = '')
4568 $query = "SELECT * FROM %s ORDER BY tdname";
4569 $query = sprintf($query, sql_table('template_desc'));
4570 $template['content'] = 'templatelist';
4571 $template['tabindex'] = 10;
4572 Showlist($query, 'table', $template, $templateName);
4577 * AdminActions::parse_ticket()
4583 public function parse_ticket()
4586 $manager->addTicketHidden();
4591 * Actions::parse_versioncheckurl()
4592 * Parse skinvar versioncheckurl
4597 public function parse_versioncheckurl()
4599 echo sprintf(_ADMIN_SYSTEMOVERVIEW_VERSIONCHECK_URL, getNucleusVersion(), getNucleusPatchLevel());
4604 * Actions::parse_yrbloglist()
4605 * Parse skinvar yrbloglist
4607 * @param string $templateName name of template to use
4610 public function parse_yrbloglist($templateName = '')
4613 $showAll = requestVar('showall');
4615 if ( $member->isAdmin() && ($showAll == 'yes') )
4617 // Super-Admins have access to all blogs! (no add item support though)
4618 $query = "SELECT bnumber, bname, 1 as tadmin, burl, bshortname"
4620 . " ORDER BY bnumber";
4621 $query = sprintf($query, sql_table('blog'));
4625 $query = "SELECT bnumber, bname, tadmin, burl, bshortname"
4627 . " WHERE tblog=bnumber and tmember=%d"
4628 . " ORDER BY bnumber";
4629 $query = sprintf($query, sql_table('blog'), sql_table('team'), (integer) $member->getID());
4632 $template['content'] = 'bloglist';
4633 $template['superadmin'] = $member->isAdmin();
4635 $amount = Showlist($query, 'table', $template, $templateName);
4637 if ( ($showAll != 'yes') && ($member->isAdmin()) )
4639 $query = 'SELECT COUNT(*) as result FROM ' . sql_table('blog');
4641 $total = quickQuery($query);
4642 if ( $total > $amount )
4644 echo '<p><a href="index.php?action=overview&showall=yes">' . _OVERVIEW_SHOWALL . '</a></p>';
4650 echo _OVERVIEW_NOBLOGS;
4652 elseif( $amount != 0 )
4654 echo '<h2>' . _OVERVIEW_YRDRAFTS . '</h2>';
4656 $query = "SELECT ititle, inumber, bshortname"
4658 . ' WHERE iauthor=%d AND iblog=bnumber AND idraft=1';
4659 $query = sprintf($query. sql_table('item'), sql_table('blog'), (integer) $member->getID());
4661 $template['content'] = 'draftlist';
4663 $amountdrafts = Showlist($query, 'table', $template, $templateName);
4664 if ( $amountdrafts == 0 )
4666 echo _OVERVIEW_NODRAFTS;
4673 * Actions::customHelp()
4674 * shows a link to custom help file
4676 * @param integer $id
4677 * @param string $tplName
4678 * @param string $url
4679 * @param string $iconURL
4680 * @param string $alt
4681 * @param string $title
4685 private function customHelp($id, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
4687 echo self::customHelpHtml($id, $tplName, $url, $iconURL, $alt, $title, $onclick);
4691 * Actions::customHelpHtml()
4693 * @param integer $id
4694 * @param string $tplName
4695 * @param string $url
4696 * @param string $iconURL
4697 * @param string $alt
4698 * @param string $title
4699 * @param string $onclick
4700 * @return string anchor element with help uri
4702 private function customHelpHtml($id, $tplName = '', $url = '', $iconURL = '', $alt = '', $title = '', $onclick = '')
4704 $templates = array();
4707 $templates = Template::read($tplName);
4709 if ( array_key_exists('ADMIN_CUSTOMHELPLINK_ICON', $templates) && !empty($templates['ADMIN_CUSTOMHELPLINK_ICON']) )
4711 $template = $templates['ADMIN_CUSTOMHELPLINK_ICON'];
4715 $template = '<img src="<%iconurl%>" <%width%><%height%>alt="<%alt%>" title="<%title%>" /></a>';
4718 if ( empty($iconURL) )
4721 $iconURL = $CONF['AdminURL'] . 'documentation/icon-help.gif';
4723 if ( function_exists('getimagesize') )
4725 $size = getimagesize($iconURL);
4726 $width = 'width="' . $size[0] . '" ';
4727 $height = 'height="' . $size[1] . '" ';
4730 'iconurl' => $iconURL,
4732 'height' => $height,
4733 'alt' => (isset($alt) && !empty($alt)) ? $alt : _HELP_TT,
4734 'title' => (isset($title) && !empty($title)) ? $title : _HELP_TT,
4736 $icon = TEMPLATE::fill($template, $data);
4737 $help = self::customHelplink($id, $tplName, $url, $title, $onclick);
4738 return $help . $icon;
4742 * Actions::input_yesno
4745 * @param $checkedval
4752 * @param $templateName
4755 private function input_yesno($name,
4766 $templates = array();
4767 if ( $templateName )
4769 $templates = Template::read($templateName);
4772 if ( $name == 'admin' )
4774 if ( array_key_exists('INPUTYESNO_TEMPLATE_ADMIN', $templates) && !empty($templates['INPUTYESNO_TEMPLATE_ADMIN']) )
4776 $template = $templates['INPUTYESNO_TEMPLATE_ADMIN'];
4780 $template = '<input onclick="selectCanLogin(true);" type="radio" name="<%name%>" value="<%yesval%>" <%yescheckedval%> id="<%yesid%>" />' . "\n"
4781 . '<label for="<%yesid%>"><%yesvaltext%></label>' . "\n"
4782 . '<input onclick="selectCanLogin(false);" type="radio" name="<%name%>" value="<%noval%>" <%nocheckedval%> id="<%noid%>"<%disabled%> />' . "\n"
4783 . '<label for="<%noid%>"><%novaltext%></label>' . "\n";
4788 if ( array_key_exists('INPUTYESNO_TEMPLATE_NORMAL', $templates) && !empty($templates['INPUTYESNO_TEMPLATE_NORMAL']) )
4790 $template = $templates['INPUTYESNO_TEMPLATE_NORMAL'];
4794 if ( array_key_exists('SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO', $templates) && !empty($templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO']) )
4796 $template = $templates['SHOWLIST_LISTPLUG_TABLE_PLGOPT_OYESNO'];
4799 if ( !isset($template) )
4801 $template = '<input type="radio" name="<%name%>" value="<%yesval%>" <%yescheckedval%> id="<%yesid%>" />' . "\n"
4802 . '<label for="<%yesid%>"><%yesvaltext%></label>' . "\n"
4803 . '<input type="radio" name="<%name%>" value="<%noval%>" <%nocheckedval%> id="<%noid%>"<%disabled%> />' . "\n"
4804 . '<label for="<%noid%>"><%novaltext%></label>' . "\n";
4809 $id = Entity::hsc($name);
4810 $id = str_replace('[', '-', $id);
4811 $id = str_replace(']', '-', $id);
4812 $id1 = $id . Entity::hsc($value1);
4813 $id2 = $id . Entity::hsc($value2);
4815 'name' => Entity::hsc($name),
4816 'yesval' => Entity::hsc($value1),
4817 'noval' => Entity::hsc($value2),
4820 'yesvaltext' => $yesval,
4821 'novaltext' => $noval,
4822 'yescheckedval' => ($checkedval == $value1) ? ' checked="checked" tabindex="' . $tabindex . '"': '',
4823 'nocheckedval' => ($checkedval != $value1) ? ' checked="checked" tabindex="' . $tabindex . '"': '',
4824 'disabled' => ($isAdmin && $name == 'canlogin') ? ' disabled="disabled"' : '',
4829 return Template::fill($template, $dat);
4833 echo TEMPLATE::fill($template, $dat);
4839 * AdminActions::parse_text()
4842 * FIXME: is this really needed?
4844 * @param string $which constant vallue
4847 public function parse_text($which)
4849 if ( defined($which) )
4851 echo constant($which);