/**
  * @desc Determina el tiempo transcurrido del envio de una alerta al tiempo actual
  **/
 function checkAlert()
 {
     global $xoopsModuleConfig, $db, $xoopsConfig;
     $db = XoopsDatabaseFactory::getDatabaseConnection();
     $file = XOOPS_ROOT_PATH . "/cache/alerts.php";
     $datelast = file_get_contents($file);
     if ($datelast <= time() - $xoopsModuleConfig['hrs_alerts'] * 86400) {
         //Ejecutamos verificación de alertas
         $sql = "SELECT * FROM " . $db->prefix('dtrans_alerts');
         $result = $db->query($sql);
         while ($rows = $db->fetchArray($result)) {
             $alert = new DTAlert();
             $alert->assignVars($rows);
             //Obtenemos los datos de la descarga
             $sw = new DTSoftware($alert->software());
             if (!$sw->getVar('approved')) {
                 continue;
             }
             if (!$alert->lastActivity()) {
                 if ($sw->getVar('created') >= time() - $alert->limit() * 86400) {
                     continue;
                 }
             }
             //Verificamos la fecha de la última descarga del modulo
             if ($alert->lastActivity() <= time() - $alert->limit() * 86400) {
                 if ($alert->alerted() && $alert->alerted() < $alert->lastActivity() + $alert->limit() * 86400) {
                     continue;
                 }
                 $errors = '';
                 //Enviamos alerta al autor de la descarga
                 $xoopsMailer =& getMailer();
                 $alert->mode() ? $xoopsMailer->useMail() : $xoopsMailer->usePM();
                 $xoopsMailer->setTemplate('alert.tpl');
                 $xoopsMailer->assign('SITENAME', $xoopsConfig['sitename']);
                 $xoopsMailer->assign('ADMINMAIL', $xoopsConfig['adminmail']);
                 $xoopsMailer->assign('SITEURL', XOOPS_URL . "/");
                 $xoopsMailer->assign('DOWNLOAD', $sw->name());
                 if ($xoopsModuleConfig['urlmode']) {
                     $url = DT_URL . "/item/" . $sw->nameId();
                 } else {
                     $url = DT_URL . "/item.php?id=" . $sw->id();
                 }
                 $xoopsMailer->assign('LINK_RESOURCE', $url);
                 $xoopsMailer->assign('DAYS', $alert->limit());
                 $xoopsMailer->setTemplateDir(XOOPS_ROOT_PATH . "/modules/dtransport/language/" . $xoopsConfig['language'] . "/mail_template/");
                 $xu = new XoopsUser($sw->uid());
                 $xoopsMailer->setToUsers($xu);
                 $xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
                 $xoopsMailer->setFromName($xoopsConfig['sitename']);
                 $xoopsMailer->setSubject(sprintf(_MS_DT_SUBJECTALERT, $sw->name()));
                 $xoopsMailer->send(true);
             }
         }
         //Almacenamos la fecha de la última verificación de alertas
         file_put_contents($file, time());
     } else {
         return false;
     }
 }
Beispiel #2
0
/**
* @desc Genera la información para mostrar la Sindicación
* @param int Limite de resultados
* @return Array
*/
function &dtrans_rssshow($limit)
{
    global $util, $mc;
    $db =& XoopsDatabaseFactory::getDatabaseConnection();
    include_once XOOPS_ROOT_PATH . '/modules/dtransport/class/dtsoftware.class.php';
    foreach ($_GET as $k => $v) {
        ${$k} = $v;
    }
    $feed = array();
    // Información General
    $ret = array();
    $mc =& $util->moduleConfig('dtransport');
    $sql = "SELECT * FROM " . $db->prefix("dtrans_software") . " WHERE approved='1'";
    switch ($show) {
        case 'pops':
            $feed['title'] = htmlspecialchars(_MI_DT_RSSPOP);
            $feed['link'] = XOOPS_URL . '/modules/dtransport';
            $feed['description'] = htmlspecialchars(_MI_DT_RSSPOPDESC);
            $sql .= " ORDER BY hits DESC";
            break;
        case 'rate':
            $feed['title'] = htmlspecialchars(_MI_DT_RSSRATE);
            $feed['link'] = XOOPS_URL . '/modules/dtransport';
            $feed['description'] = htmlspecialchars(_MI_DT_RSSRATEDESC);
            $sql .= " ORDER BY `rating`/`votes` DESC";
            break;
        default:
            $feed['title'] = htmlspecialchars(_MI_DT_RSSRECENT);
            $feed['link'] = XOOPS_URL . '/modules/dtransport';
            $feed['description'] = htmlspecialchars(_MI_DT_RSSRECENTDESC);
            $sql .= " ORDER BY created DESC, modified DESC";
            break;
    }
    $sql .= " LIMIT 0, 15";
    // Generamos los elementos
    $result = $db->query($sql);
    $items = array();
    $link = XOOPS_URL . '/modules/dtransport/';
    while ($row = $db->fetchArray($result)) {
        $item = new DTSoftware();
        $item->assignVars($row);
        $rtn = array();
        $rtn['title'] = htmlspecialchars($item->name());
        $ilink = $link . ($mc['urlmode'] ? "item/" . $item->nameId() . "/" : "item.php?id=" . $item->id());
        $rtn['link'] = htmlspecialchars($ilink, ENT_QUOTES);
        $rtn['description'] = $item->shortdesc();
        $rtn['date'] = formatTimestamp($item->created());
        $items[] = $rtn;
    }
    $ret = array('feed' => $feed, 'items' => $items);
    return $ret;
}