Back to PhocacartDownload class

Method getDownloadFiles

public static
getDownloadFiles
(mixed $userId, mixed $tokenDownload = '', mixed $tokenOrder = '')

Method getDownloadFiles - Source code

public static function getDownloadFiles($userId, $tokenDownload = '', $tokenOrder = '')
{
    $db = Factory::getDBO();
    $wheres = array();
    if ((int) $userId < 1 && $tokenDownload != '' && $tokenOrder != '') {
        $wheres[] = ' d.download_token = ' . $db->quote($tokenDownload);
        $wheres[] = ' o.order_token = ' . $db->quote($tokenOrder);
        $leftJoin = '';
    } else {
        $wheres[] = ' u.id = ' . (int) $userId;
        $leftJoin = ' LEFT JOIN #__users AS u ON u.id = o.user_id';
    }
    $wheres[] = ' d.published = 1';
    // In case of full group there can be problem with filtering additional files
    // so the loading can be divided into download files, additional download files and attributed download files
    $columns = 'd.id, d.order_id, d.product_id, d.attribute_id, d.option_id, d.order_product_id, d.order_attribute_id, d.order_option_id, d.title, d.alias, d.download_token, d.download_folder, d.download_file, d.download_hits, d.download_days, d.ordering, d.date, d.published, d.type, o.date AS order_date, o.order_number AS order_number';
    $groupsFull = 'd.id, d.order_id, d.product_id, d.attribute_id, d.option_id, d.order_product_id, d.order_attribute_id, d.order_option_id, d.title, d.alias, d.download_token, d.download_folder, d.download_file, d.download_hits, d.download_days, d.ordering, d.date, d.published, d.type, o.date, o.order_number';
    $groupsFast = 'd.order_id, d.download_file';
    $groups = PhocacartUtilsSettings::isFullGroupBy() ? $groupsFull : $groupsFast;
    $query = ' SELECT ' . $columns . ' FROM #__phocacart_order_downloads AS d' . ' LEFT JOIN #__phocacart_orders AS o ON o.id = d.order_id' . $leftJoin . ' WHERE ' . implode(' AND ', $wheres) . ' GROUP BY ' . $groups . ' ORDER BY d.date';
    $db->setQuery($query);
    $files = $db->loadObjectList();
    return $files;
}