Welcome to Geeklog, Anonymous Monday, November 25 2024 @ 12:25 pm EST
Geeklog Forums
changing story author code
Status: Banned
machinari
Forum User
Full Member
Registered: 03/22/04
Posts: 1512
ever wanted to change the author to your stories? I know you have
so here it is. This code is not very thick, but it works--tested on 1.3.10.
couple things to note:
* permissions are based upon the owner id not the author id, AFAICS
* this code will only altar the author and not the owner of a story.
* up to this point the author and the owner are based on the same id--not any more.
* this all means that no matter who you change the author to be, if that user has no permission to access the story (view/edit/etc.) they will still have no permission to access the story. Those settings can be set using the story perms and/or groups admin. As I said, this only altars the display in the byline. It seems to me that is all you guys were asking for.
3 changes to make
in /public_html/admin/story.php, approx. line 148, change this:
} elseif (!empty($sid) && $mode == 'editsubmission') {
to this:
//inserted by machinai to get proper author and provide the ability to change authors
$A['uid'] = DB_getItem ($_TABLES['stories'], 'uid', "sid = '$sid'");
} elseif (!empty($sid) && $mode == 'editsubmission') {
and at approx. line 271, change this:
$story_templates->set_var ('story_author', DB_getItem ($_TABLES['users'],
'username', "uid = {$A['uid']}"));
$story_templates->set_var('story_uid', $A['uid']);
// user access info
to this:
$authorA = DB_query("SELECT uid, username FROM {$_TABLES['users']} WHERE uid > '1'");
$author_option = '';
while($authrow= DB_fetchArray($authorA)){
$author_option .= '<option value="' . $authrow['uid'] . '"';
if($authrow['uid'] == $A['uid']){
$author_option .= ' selected="selected"';
} else $cur_author = '';
$author_option .= '>' . $authrow['username'] . '</option>' . LB;
}
$author_dropdown = '<select name="uid">' . $author_option . '</select>';
$story_templates->set_var ('author_dropdown', $author_dropdown);
// user access info
I guess I could've used the author list function from the top of the file... maybe next time.
Also make this change in your /layout/professional/admin/storyeditor.thtml at approx. line 20, from this:
<td align="right">{lang_author}:</td>
<td>{story_author}<input type="hidden" name="uid" value="{story_uid}"></td>
</tr>
to this:
<td align="right">{lang_author}:</td>
<td>
{author_dropdown}
</td>
</tr>
I used the professional theme. your theme's storyeditor.thtml may be a bit different.
If you don't make backups of these files before you make these changes, you have no one to blame when you have unexplained errors returned and your wife begins to nag you for sitting in front of the computer for too long....
so here it is. This code is not very thick, but it works--tested on 1.3.10.
couple things to note:
* permissions are based upon the owner id not the author id, AFAICS
* this code will only altar the author and not the owner of a story.
* up to this point the author and the owner are based on the same id--not any more.
* this all means that no matter who you change the author to be, if that user has no permission to access the story (view/edit/etc.) they will still have no permission to access the story. Those settings can be set using the story perms and/or groups admin. As I said, this only altars the display in the byline. It seems to me that is all you guys were asking for.
3 changes to make
in /public_html/admin/story.php, approx. line 148, change this:
Text Formatted Code
$A['old_sid'] = $A['sid'];} elseif (!empty($sid) && $mode == 'editsubmission') {
Text Formatted Code
$A['old_sid'] = $A['sid'];//inserted by machinai to get proper author and provide the ability to change authors
$A['uid'] = DB_getItem ($_TABLES['stories'], 'uid', "sid = '$sid'");
} elseif (!empty($sid) && $mode == 'editsubmission') {
and at approx. line 271, change this:
Text Formatted Code
$story_templates->set_var('lang_author', $LANG24[7]);$story_templates->set_var ('story_author', DB_getItem ($_TABLES['users'],
'username', "uid = {$A['uid']}"));
$story_templates->set_var('story_uid', $A['uid']);
// user access info
Text Formatted Code
$story_templates->set_var('lang_author', $LANG24[7]);$authorA = DB_query("SELECT uid, username FROM {$_TABLES['users']} WHERE uid > '1'");
$author_option = '';
while($authrow= DB_fetchArray($authorA)){
$author_option .= '<option value="' . $authrow['uid'] . '"';
if($authrow['uid'] == $A['uid']){
$author_option .= ' selected="selected"';
} else $cur_author = '';
$author_option .= '>' . $authrow['username'] . '</option>' . LB;
}
$author_dropdown = '<select name="uid">' . $author_option . '</select>';
$story_templates->set_var ('author_dropdown', $author_dropdown);
// user access info
Also make this change in your /layout/professional/admin/storyeditor.thtml at approx. line 20, from this:
Text Formatted Code
<tr><td align="right">{lang_author}:</td>
<td>{story_author}<input type="hidden" name="uid" value="{story_uid}"></td>
</tr>
Text Formatted Code
<tr><td align="right">{lang_author}:</td>
<td>
{author_dropdown}
</td>
</tr>
If you don't make backups of these files before you make these changes, you have no one to blame when you have unexplained errors returned and your wife begins to nag you for sitting in front of the computer for too long....
12
12
Quote
Status: Banned
machinari
Forum User
Full Member
Registered: 03/22/04
Posts: 1512
I neglected to mention that if you are editing an anonymous submission, the author dropdown doesn't allow anonymous so an author will be applied. obviously this is unexceptable. easy to fix. just throw in another if/else.
maybe i'll do that tomorrow.
29
10
Quote
Status: offline
Dirk
Site Admin
Admin
Registered: 01/12/02
Posts: 13073
Location:Stuttgart, Germany
Quote by machinari: I guess I could've used the author list function from the top of the file... maybe next time.
The problem with that function is that it takes a long time to load when you have a lot of users (there are Geeklog sites that have a 6-digit number of users ...).
I had the option to change the story's author in CVS at one point, but reverted it, mainly due to this problem. Entering the username or uid didn't look like a viable option to me then.
bye, Dirk
15
11
Quote
Status: Banned
machinari
Forum User
Full Member
Registered: 03/22/04
Posts: 1512
yes yes, I hadn't thought of the slow down caused by so many rows being returned. I only have about 6 users so...
15
11
Quote
tokyoahead
Anonymous
I have released a new version of my plugin.
It reduces the maximum numbers of lines displayed to 100.
if there is more than 100 items or users, there is a filter displayed:
A
B
C
...
you click on the letter, and if there are more than 100 users/items with A*... it will display
AA
AB
AC
...
(of course only those that exist will be diplayed)
please check it out at my site here. I will upload it also here.
It reduces the maximum numbers of lines displayed to 100.
if there is more than 100 items or users, there is a filter displayed:
A
B
C
...
you click on the letter, and if there are more than 100 users/items with A*... it will display
AA
AB
AC
...
(of course only those that exist will be diplayed)
please check it out at my site here. I will upload it also here.
12
11
Quote
All times are EST. The time is now 12:25 pm.
- Normal Topic
- Sticky Topic
- Locked Topic
- New Post
- Sticky Topic W/ New Post
- Locked Topic W/ New Post
- View Anonymous Posts
- Able to post
- Filtered HTML Allowed
- Censored Content