[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите со скриптом обновления дат в базе
denmasterweb
У меня сайт на джумла, есть база данных с таблицей #__content, где прописаны новости и дата их выхода. Всего есть 30 новостей. Так вот, я создал функцию, которая при наступлении какого-то числа (к примеру 1 июня) загружает новость, где столбик publish_date=1, если дата меняется, наступает 2 число, то в цикле подгружается новость, где publish_date=2, и так до 30 числа, анонсы новостей выводятся по порядку "новые сверху" вместе с датой их выхода (сегодняшнее число). Также создал функцию, которая обновляет дату сегодняшней новости до актуальной (получается, новости из месяца в месяц крутятся по кругу, и только у действующей новости сегодня сменяется дата на актуальную, ведь если ее не сменять, то выведется дата месячной давности - 1.04.2016). День вывода и дату публикации можно вывставлять в админпанели. В идеале хотел для всех новостей выставить день выхода и дату, которая соответсвует дню (к примеру новость, где день выхода выставляю 2 число, дата должна быть 02.ХХ.ХХХХ, то есть должны сменяться только месяца и года. Но появилась проблема, если на сайт заходит хотя бы один посетитель, то все работает правильно, скрипт обновляет дату у текущей новости, но если в течении суток на сайт никто не зайдет, то дата у новости останется старой, и она не обновится. Подскажите, можно ли как-то обновлять дату в БД для текущей новости, если на сайт никто не зайдет и страница не обновляется к примеру дня три?

Слышал, что в Яваскрипте есть setInterval и Ajax, но как их применить мне в моем случае? Предоставляю код функций:


public static function updateDates() {
$date = JFactory::getDate();
$day = date('d');

jimport('joomla.utilities.date');
$tz = new DateTimeZone(JFactory::getApplication()->getCfg('offset'));
$jdate = $date->setTimezone($tz);
$f = $jdate->toSql();
$e = explode("-",$f);
$current_date = $e[0]."-".$e[1]."-".$day." "."00:00:00";
$j = explode("-",$jdate);
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$q="UPDATE `#__content` SET `date_month_year` = '".$f."' WHERE `publish_date` = ".$day." ";

$db->setQuery($q);
$db->query();

}




А здесь код контроллера:



<?php
/**
*
@package Joomla.Site
*
@subpackage mod_articles_category
*
@copyright Copyright © 2005 - 2013 Open Source Matters, Inc. All rights reserved.
*
@license GNU General Public License version 2 or later; see LICENSE.txt
*/


// no direct access
defined('_JEXEC') or die;

// Include the helper functions only once
require_once dirname(__FILE__).'/helper.php';

// Prep for Normal or Dynamic Modes
$mode = $params->get('mode', 'normal');
$idbase = null;
switch($mode)
{
case 'dynamic':
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');
if ($option === 'com_content') {
switch($view)
{
case 'category':
$idbase = JRequest::getInt('id');
break;
case 'categories':
$idbase = JRequest::getInt('id');
break;
case 'article':
if ($params->get('show_on_article_page', 1)) {
$idbase = JRequest::getInt('catid');
}
break;
}
}

break;
case 'normal':
default:
$idbase = $params->get('catid');
break;
}



$cacheid = md5(serialize(array ($idbase, $module->module)));

$cacheparams = new stdClass;
$cacheparams->cachemode = 'id';
$cacheparams->class = 'modArticlesCategoryHelper';
$cacheparams->method = 'getList';
$cacheparams->methodparams = $params;
$cacheparams->modeparams = $cacheid;

$list = JModuleHelper::moduleCache ($module, $params, $cacheparams);


if (!empty($list)) {
$grouped = false;
$article_grouping = $params->get('article_grouping', 'none');
$article_grouping_direction = $params->get('article_grouping_direction', 'ksort');
$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));
$item_heading = $params->get('item_heading');
$count = $params->get('count', 5);

if ($article_grouping !== 'none') {
$grouped = true;
switch($article_grouping)
{
case 'day':
$updateData = modArticlesCategoryHelper::updateDates();
$list = modArticlesCategoryHelper::groupByDate($list, $article_grouping, $article_grouping_direction, $params->get('month_year_format', 'F Y'), $count);
break;
case 'year':
$list = modArticlesCategoryHelper::groupByDate($list, $article_grouping, $article_grouping_direction, $params->get('month_year_format', 'F Y'));
case 'month_year':
$list = modArticlesCategoryHelper::groupByDate($list, $article_grouping, $article_grouping_direction, $params->get('month_year_format', 'F Y'));
break;
case 'author':
case 'category_title':
$list = modArticlesCategoryHelper::groupBy($list, $article_grouping, $article_grouping_direction);
break;
default:
break;
}
}

require JModuleHelper::getLayoutPath('mod_articles_category', $params->get('layout', 'default'));
}


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.