Search code examples
phpmysqljoomlacron

How to run this query on Joomla DB using CRON job?


I have created these queries (and tested them in PhpMyAdmin) and now need to run them on my Joomla! DB using a CRON job calling a .php file.

DELETE FROM j25_virtuemart_vmuser_shoppergroups WHERE id IN(
SELECT * FROM (
    SELECT SG.id FROM j25_virtuemart_vmuser_shoppergroups SG
    JOIN j25_acym_user AU on AU.cms_id = SG.virtuemart_user_id
    JOIN j25_acym_user_has_list AUL ON  AUL.user_id = AU.id
    where SG.virtuemart_shoppergroup_id = 10 AND (AUL.list_id = 13 AND AUL.status=0) 
) as P
);

INSERT INTO j25_virtuemart_vmuser_shoppergroups (virtuemart_user_id, virtuemart_shoppergroup_id) 
SELECT * FROM( SELECT cms_id, '10'
 FROM j25_acym_user_has_list AUL 
left JOIN j25_acym_user AU ON  AUL.user_id = AU.id
left JOIN j25_virtuemart_vmuser_shoppergroups SG  on AU.cms_id = SG.virtuemart_user_id
where SG.virtuemart_shoppergroup_id IS NULL AND (AUL.list_id = 13 AND AUL.status=1)) as foo
ON duplicate KEY update
virtuemart_shoppergroup_id=virtuemart_shoppergroup_id;

How do I turn this into a (or 2) working PHP files which I can call upon using WGET?


Solution

  • You should include joomla files framework.php and defines.php when you run query via cron job try the following code

    define('_JEXEC', 1);
    define('DS', DIRECTORY_SEPARATOR);
    define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] . DS . '');
    require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
    require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php'); 
    $db     = JFactory::getDbo();
    $query = 'DELETE FROM j25_virtuemart_vmuser_shoppergroups WHERE id IN(
    SELECT * FROM (
        SELECT SG.id FROM j25_virtuemart_vmuser_shoppergroups SG
        JOIN j25_acym_user AU on AU.cms_id = SG.virtuemart_user_id
        JOIN j25_acym_user_has_list AUL ON  AUL.user_id = AU.id
        where SG.virtuemart_shoppergroup_id = 10 AND (AUL.list_id = 13 AND AUL.status=0) 
    ) as P
    )';
    $db->setQuery($query);
    $db->query();