PDA

View Full Version : Scheduled Task is not running


vb_guru
07-10-2006, 07:23 AM
I have added a custom Scheduled Task. When I try to run it by clicking Run Now to just goes to the next page and shows the name of the cron job. There is no "Done" on the page. Here is the code:

<?php

error_reporting(E_ALL & ~E_NOTICE);

if (!is_object($DB_site))
{
exit;
}

$users = $DB_site->query("
SELECT username, email, usergroupid, membergroupids, languageid, retaileremailaccept
FROM " . TABLE_PREFIX . "user
WHERE usergroupid ='9' OR membergroupids ='9'
AND retaileremailaccept = '0'
");

vbmail_start();

$row = $DB_site->num_rows($users);
if($row > 0)
{
while ($user = $DB_site->fetch_array($users))
{
$username = unhtmlspecialchars($user['username']);
$useremail = $user['email'];
eval(fetch_email_phrases('retaileremail_accept', $user['languageid']));
vbmail($useremail, $subject, $message);
}

vbmail_end();

$DB_site->query("
UPDATE " . TABLE_PREFIX . "user
SET retaileremailaccept = '1'
WHERE username = '" . addslashes($username) . "'
");

log_cron_action('Notification Email sent to: ' . $username, $nextitem);
}

?>

Any ideas why this is happening? I can run other standard vBulletin scheduled tasks.

Paul M
07-10-2006, 05:48 PM
What version of VB ?

vb_guru
07-10-2006, 07:31 PM
What version of VB ?
3.54


I have checked the footer and that looks good.

SELECT username, email, usergroupid, membergroupids, languageid, retaileremailaccept
FROM " . TABLE_PREFIX . "user
WHERE usergroupid ='9' OR membergroupids ='9'
AND retaileremailaccept = '0'

I ran the above SQL via PHPAdmin and it pulls the correct number of users.

Thanks for the reply and help!

Paul M
07-10-2006, 08:48 PM
3.54That's explains the problem then. All the database references are to $DB_site which is vb3.0 code.

Change them to $vbulletin->db.

vb_guru
07-10-2006, 10:58 PM
That's explains the problem then. All the database references are to $DB_site which is vb3.0 code.

Change them to $vbulletin->db.

That would explain the problem. I will give that a try. Funny thing is that I went to the vbulletin.com user manual and looked at their coding standards and saw the $DB_site in the examples.

Paul M,

Thanks for the help. I made the update you suggested, changing $DB_site to $vbulletin->db. The task now runs.

However, there is still one small problem. Based upon the data in the database when the script runs I should get three users updated. I do get the 3 e-mails sent to the correct users however only the last user gets the column retaileremailaccept = '1' updated.

I think there may be a problem in the code so that it is not looping through and doing the update for each of the rows selected in the first SQL query. Any ideas on why this is happening?

Paul M
07-11-2006, 12:30 PM
Your update query is not inside your while loop.

agsguar
08-18-2006, 06:24 PM
try this!

I have the answer..

Check in your forum permission, in CRON.PHP file.. CHANGE the CHMOD to this

https://vborg.vbsupport.ru/

Originaly this appears whitout permission, after this the task work fine and automatic.

Regards!!