Posts: 7
Threads: 2
Joined: Aug 2007
Reputation:
0
2007-12-18, 04:24 PM
(This post was last modified: 2007-12-18, 04:28 PM by Silverday.)
Hello all,
i've coded a plug-in and i can't get the variable codes (like that,{$username} )
(done creating new templates)
for example ,i described the variables in the plugin file ($tid,$username etc.) but it doesn't work when it's in the new templates,when i try to getting it.
in the plugin (creating new template,activate fuction)
<a href=\"member.php?action=profile&uid=\$uid\"><b>\$username</b></a></td>
in the plugin function
$query = $db->query ("SELECT subject,username,uid,pid,tid FROM ".TABLE_PREFIX."posts WHERE visible='1' ".get_unviewable()." ORDER BY dateline DESC LIMIT 0,".$mybb->settings['advportal_max']."");
$newest_posts = $db->fetch_array($query);
$uid = $newest_posts['uid'];
$username = $newest_posts['username'];
One more problem; i done that for to load language files (in the plugin function)
$language = $mybb->settings['bblanguage'];
$lang->load("advportal");
and it's saying 'inc/languages/turkish/admin/advportal.lang.php doesnt exist' ?
namely, why doesn't it look to the only folder of turkish? why turkish/admin ?
Thanks a lot
Posts: 4,639
Threads: 68
Joined: Mar 2007
Reputation:
42
Silverday Wrote:Hello all,
i've coded a plug-in and i can't get the variable codes (like that,{$username} )
(done creating new templates)
for example ,i described the variables in the plugin file ($tid,$username etc.) but it doesn't work when it's in the new templates,when i try to getting it.
in the plugin (creating new template,activate fuction)
<a href=\"member.php?action=profile&uid=\$uid\"><b>\$username</b></a></td>
in the plugin function Umm, you didn't enclose the variables with braces? Should be {$uid} not $uid.
Silverday Wrote:One more problem; i done that for to load language files (in the plugin function)
$language = $mybb->settings['bblanguage'];
$lang->load("advportal");
and it's saying 'inc/languages/turkish/admin/advportal.lang.php doesnt exist' ?
namely, why doesn't it look to the only folder of turkish? why turkish/admin ? Because you're language is set to turkish.
Setting the $language variable won't help in this case.
You'll have to set the language through the $lang object (can't remember the code - you'll have to look that one up).
Posts: 7
Threads: 2
Joined: Aug 2007
Reputation:
0
2007-12-22, 09:52 AM
(This post was last modified: 2007-12-22, 09:52 AM by Silverday.)
i have enclosed with { } ,didn't work.
and i've described $lang as global $mybb, $lang, $cache etc.
and i don't know the code you mean.
on result i still need help.
Enes*
Posts: 4,639
Threads: 68
Joined: Mar 2007
Reputation:
42
2007-12-22, 10:17 AM
(This post was last modified: 2007-12-22, 10:17 AM by Yumi.)
Could you please post most of your code?
It's difficult trying to guess what's happening.
Silverday Wrote:in the plugin (creating new template,activate fuction)
<a href=\"member.php?action=profile&uid=\$uid\"><b>\$username</b></a></td> I'm assuming your code looks something like this:
$new_template = " [...] <a href=\"member.php?action=profile&uid={\$uid}\"><b>{\$username}</b></a></td> [...]
Right?
Silverday Wrote:in the plugin function
$query = $db->query ("SELECT subject,username,uid,pid,tid FROM ".TABLE_PREFIX."posts WHERE visible='1' ".get_unviewable()." ORDER BY dateline DESC LIMIT 0,".$mybb->settings['advportal_max']."");
$newest_posts = $db->fetch_array($query);
$uid = $newest_posts['uid'];
$username = $newest_posts['username']; I'm going to guess that the issue is here.
If it's inside a function, and the code is being eval'd in the global scope (outside the function), you'll have to global $uid and $username, or else those two variables "die" once the function finishes executing.
Silverday Wrote:and i don't know the code you mean. I'm still not sure you want...
The file inc/languages/turkish/admin/advportal.lang.php doesn't exist. So what language file does exist?
Posts: 7
Threads: 2
Joined: Aug 2007
Reputation:
0
function advportal_activate()
{
global $db, $lang, $mybb;
advportal();
$advportal_group = array(
"gid" => "NULL",
"name" => "advportal",
"title" => "Advanced Portal Settings",
"description" => "Settings",
"disporder" => "1",
"isdefault" => "no",
);
$db->insert_query(TABLE_PREFIX."settinggroups", $advportal_group);
$gid = $db->insert_id();
// Ayarlar
$advportal_1 = array(
"sid" => "NULL",
"name" => "advportal_item_lenght",
"title" => "Maximum Length For Subject Titles",
"description" => "How many characters do you want to set as maximum? If 0,it is free.",
"optionscode" => "text",
"value" => "0",
"disporder" => "1",
"gid" => intval($gid),
);
$db->insert_query(TABLE_PREFIX."settings", $advportal_1);
$advportal_2 = array(
"sid" => "NULL",
"name" => "advportal_max",
"title" => "How Many Threads",
"description" => "How Many Threads do you want to show?",
"optionscode" => "text",
"value" => "15",
"disporder" => "2",
"gid" => intval($gid),
);
$db->insert_query(TABLE_PREFIX."settings", $advportal_2);
// Şablon Güncellemesi
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets("footer", '#<!-- End copyright -->#', "<br>MyBB Advanced Portal by <a href=\"http://www.miqrop.net\"><b>eN-S</b></a>\n<!-- End copyright -->");
find_replace_templatesets("portal", '#{\$stats}#', "\n");
find_replace_templatesets("portal", '#{\$latestthreads}#', "\n");
find_replace_templatesets("portal", '#{\$whosonline}#', "\n");
find_replace_templatesets("portal", '#{\$announcements}#', "{\$announcements}\n{\$advportal}\n{\$whosonline}\n{\$stats}");
// Yeni Şablon Yaratımı
$templatearray = array(
"tid" => "NULL",
"title" => "portal_advportal",
"template" => "
<td valign=\"top\">
<table align=\"center\" valign=\"top\" width=\"900\">
<tr class=\"thead\" width=\"900\">
<td align=\"left\"><b>{\$lang->advportal_lastposts}</b></td>\n
</tr>\n
<tr class=\"tcat\">\n
<td align=\"left\" width=\"50%\"><b>{\$lang->advportal_subject}</b></td>\n
<td align=\"right\" width=\"13%\"><b>{\$lang->advportal_author}</b></td>\n
<td align=\"center\" width=\"19%\"><b>{\$lang->advportal_poster}</b></td>\n
<td align=\"right\" width=\"9%\"><b>{\$lang->advportal_views}</b></td>\n
<td align=\"right\" width=\"9%\"><b>{\$lang->advportal_replies}</b></td>\n
</tr>\$advportal_ek</table></td>",
"sid" => "-1",
);
$db->insert_query(TABLE_PREFIX."templates", $templatearray);
$templatearray = array(
"tid" => "NULL",
"title" => "portal_advportal_ek",
"template" => "<tr class=\"trow1\" width=\"900\" height=\"40\">
<td align=\"left\" valign=\"top\" width=\"50%\"><a href=\"showthread.php?tid={\$tid}\" title=\"{\$subject}\"><b>{\$subject}</b></a></td>
<td align=\"right\" valign=\"top\" width=\"13%\">\{\$author}</td>
<td align=\"center\" valign=\"top\" width=\"19%\"><a href=\"member.php?action=profile&uid={\$uid}\"><b>{\$username}</b></a></td>
<td align=\"right\" valign=\"top\" width=\"13%\">{\$views}</a></td>
<td align=\"right\" valign=\"top\" width=\"13%\">{\$replies}</td>
</tr>",
"sid" => "-1",
);
$db->insert_query(TABLE_PREFIX."templates", $templatearray);
// Dil paketi yüklenmesi
$language = $mybb->settings['bblanguage'];
$lang->load("advportal");
// settings.php yi yeniden Yapılandır
rebuild_settings();
}
function advportal()
{
global $db, $mybb, $cache, $templates, $theme, $lang, $advportal, $advportal_ek, $unviewwhere;
// Tüm Değişkenler
if(!$mybb->settings['advportal_max'])
{
$mybb->settings['advportal_max'] = 20;
}
if(!$length)
{
$length = 10;
}
$query = $db->query ("SELECT subject,username,uid,pid,tid FROM ".TABLE_PREFIX."posts WHERE visible='1' ".get_unviewable()." ORDER BY dateline DESC LIMIT 0,".$mybb->settings['advportal_max']."");
$query2 = $db->query ("SELECT subject,username,uid,tid,replies FROM ".TABLE_PREFIX."threads WHERE visible='1' ".get_unviewable()." ORDER BY dateline DESC LIMIT 0,".$mybb->settings['advportal_max']."");
$newest_posts = $db->fetch_array($query);
$newest_thread = $db->fetch_array($query2);
$tid = $newest_posts['tid'];
$uid = $newest_posts['uid'];
$username = $newest_posts['username'];
$author = $newest_thread['username'];
$replies = $newest_posts['replies'];
$subject = $newest_posts['subject'];
$views = $newest_posts['views'];
// Şablon Değişkenlerinin Tanımlanması
eval("\$advportal = \"".$templates->get("portal_advportal")."\";");
eval("\$advportal_ek = \"".$templates->get("portal_advportal_ek")."\";");
// Uzunluk Degeri
$length = $mybb->settings['advportal_item_lenght'];
$width = $mybb->settings['advportal_width'];
if ($length != 0)
{
if (strlen($subject) > $length)
{
$subject = substr($subject,0,$length) . "...";
}
}
return $subject;
}
function get_unviewable() {
$unviewable = get_unviewable_forums();
if($unviewable)
{
$unviewwhere = " AND fid NOT IN ($unviewable)";
}
}
these codes are. (didnt copy deactivate and info functions)
Posts: 4,639
Threads: 68
Joined: Mar 2007
Reputation:
42
2007-12-22, 12:47 PM
(This post was last modified: 2007-12-22, 12:49 PM by Yumi.)
First thing - you should escape your template inserts with $db->escape_string()
Secondly, for your language issue:
ZiNga BuRgA Wrote:The file inc/languages/turkish/admin/advportal.lang.php doesn't exist. So what language file does exist?
Here's some fixed code (language thing not fixed):
function advportal_activate()
{
global $db, $lang, $mybb;
advportal();
$advportal_group = array(
"gid" => "NULL",
"name" => "advportal",
"title" => "Advanced Portal Settings",
"description" => "Settings",
"disporder" => "1",
"isdefault" => "no",
);
$db->insert_query(TABLE_PREFIX."settinggroups", $advportal_group);
$gid = $db->insert_id();
// Ayarlar
$advportal_1 = array(
"sid" => "NULL",
"name" => "advportal_item_lenght",
"title" => "Maximum Length For Subject Titles",
"description" => "How many characters do you want to set as maximum? If 0,it is free.",
"optionscode" => "text",
"value" => "0",
"disporder" => "1",
"gid" => intval($gid),
);
$db->insert_query(TABLE_PREFIX."settings", $advportal_1);
$advportal_2 = array(
"sid" => "NULL",
"name" => "advportal_max",
"title" => "How Many Threads",
"description" => "How Many Threads do you want to show?",
"optionscode" => "text",
"value" => "15",
"disporder" => "2",
"gid" => intval($gid),
);
$db->insert_query(TABLE_PREFIX."settings", $advportal_2);
// Sablon Güncellemesi
require MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets("footer", '#<!-- End copyright -->#', "<br>MyBB Advanced Portal by <a href=\"http://www.miqrop.net\"><b>eN-S</b></a>\n<!-- End copyright -->");
find_replace_templatesets("portal", '#{\$stats}#', "\n");
find_replace_templatesets("portal", '#{\$latestthreads}#', "\n");
find_replace_templatesets("portal", '#{\$whosonline}#', "\n");
find_replace_templatesets("portal", '#{\$announcements}#', "{\$announcements}\n{\$advportal}\n{\$whosonline}\n{\$stats}");
// Yeni Sablon Yaratimi
$templatearray = array(
"tid" => "NULL",
"title" => "portal_advportal",
"template" => $db->escape_string("
<td valign=\"top\">
<table align=\"center\" valign=\"top\" width=\"900\">
<tr class=\"thead\" width=\"900\">
<td align=\"left\"><b>{\$lang->advportal_lastposts}</b></td>\n
</tr>\n
<tr class=\"tcat\">\n
<td align=\"left\" width=\"50%\"><b>{\$lang->advportal_subject}</b></td>\n
<td align=\"right\" width=\"13%\"><b>{\$lang->advportal_author}</b></td>\n
<td align=\"center\" width=\"19%\"><b>{\$lang->advportal_poster}</b></td>\n
<td align=\"right\" width=\"9%\"><b>{\$lang->advportal_views}</b></td>\n
<td align=\"right\" width=\"9%\"><b>{\$lang->advportal_replies}</b></td>\n
</tr>{\$advportal_ek}</table></td>"),
"sid" => "-1",
);
$db->insert_query(TABLE_PREFIX."templates", $templatearray);
$templatearray = array(
"tid" => "NULL",
"title" => "portal_advportal_ek",
"template" => $db->escape_string("<tr class=\"trow1\" width=\"900\" height=\"40\">
<td align=\"left\" valign=\"top\" width=\"50%\"><a href=\"showthread.php?tid={\$tid}\" title=\"{\$subject}\"><b>{\$subject}</b></a></td>
<td align=\"right\" valign=\"top\" width=\"13%\">\{\$author}</td>
<td align=\"center\" valign=\"top\" width=\"19%\"><a href=\"member.php?action=profile&uid={\$uid}\"><b>{\$username}</b></a></td>
<td align=\"right\" valign=\"top\" width=\"13%\">{\$views}</a></td>
<td align=\"right\" valign=\"top\" width=\"13%\">{\$replies}</td>
</tr>"),
"sid" => "-1",
);
$db->insert_query(TABLE_PREFIX."templates", $templatearray);
// Dil paketi yüklenmesi
$lang->load("advportal");
// settings.php yi yeniden Yapilandir
rebuild_settings();
}
function advportal()
{
global $db, $mybb, $cache, $templates, $theme, $lang, $advportal, $advportal_ek, $unviewwhere;
// Tüm Degiskenler
if(!$mybb->settings['advportal_max'])
{
$mybb->settings['advportal_max'] = 20;
}
if(!$length)
{
$length = 10;
}
$query = $db->query ("SELECT subject,username,uid,pid,tid FROM ".TABLE_PREFIX."posts WHERE visible='1' ".get_unviewable()." ORDER BY dateline DESC LIMIT 0,".$mybb->settings['advportal_max']."");
$query2 = $db->query ("SELECT subject,username,uid,tid,replies FROM ".TABLE_PREFIX."threads WHERE visible='1' ".get_unviewable()." ORDER BY dateline DESC LIMIT 0,".$mybb->settings['advportal_max']."");
$newest_posts = $db->fetch_array($query);
$newest_thread = $db->fetch_array($query2);
$tid = $newest_posts['tid'];
$uid = $newest_posts['uid'];
$username = $newest_posts['username'];
$author = $newest_thread['username'];
$replies = $newest_posts['replies'];
$subject = $newest_posts['subject'];
$views = $newest_posts['views'];
// Sablon Degiskenlerinin Tanimlanmasi
eval("\$advportal = \"".$templates->get("portal_advportal")."\";");
eval("\$advportal_ek = \"".$templates->get("portal_advportal_ek")."\";");
// Uzunluk Degeri
$length = $mybb->settings['advportal_item_lenght'];
$width = $mybb->settings['advportal_width'];
if ($length != 0)
{
if (strlen($subject) > $length)
{
$subject = substr($subject,0,$length) . "...";
}
}
return $subject;
}
function get_unviewable() {
$unviewable = get_unviewable_forums();
if($unviewable)
{
$unviewwhere = " AND fid NOT IN ($unviewable)";
}
}
Posts: 3,003
Threads: 20
Joined: Feb 2006
Reputation:
9
Silverday Wrote:and it's saying 'inc/languages/turkish/admin/advportal.lang.php doesnt exist' ?
namely, why doesn't it look to the only folder of turkish? why turkish/admin ?
Cause you load the lang file within the 'activate_section' and that part happens in your PluginManager (=> /admin/ dir )
And i should remove advportal() from your activate_section and use the portal_hook to call that function; And in the advportal() function i would load that lang file; not in the activate_section.
|