Esempio n. 1
0
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/profiler.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/mem_storage.php";
//------------------------------------------------------------------------------
$results = array();
$profiler = new profiler();
//------------------------------------------------------------------------------
$page = 0;
$page_size = 200;
$cnt = 0;
$ms = new MemStorage('newsletter_freelancer');
$ms->clear();
//------------------------------------------------------------------------------
$profiler->start('fill_frl_mem');
//------------------------------------------------------------------------------
while ($users = freelancer::GetPrjRecps($error, ++$page, $page_size)) {
    //@todo: fill more more for testing
    for ($i = 0; $i < 1; $i++) {
        $to_storage = array();
        foreach ($users as $user) {
            $to_storage[$user['uid'] . '-' . $i] = $user;
            $cnt++;
        }
        $ms->addData($to_storage);
        unset($to_storage);
    }
}
//------------------------------------------------------------------------------
$profiler->stop('fill_frl_mem');
//------------------------------------------------------------------------------
$results['Total cnt'] = $cnt;
Esempio n. 2
0
    /**
     * @todo НЕ ИСПОЛЬЗУЕТСЯ
     *
     * @deprecated since 0026073
     * 
     * Рассылка о новых проектах. Вызывается раз в день из hourly.php
     *
     * @param array $uids - массив идентификаторов пользователей, которым уже отправленя новая рассылка (см. NewProjForMissingMoreThan24h)
     *
     * @return int количество получивших рассылку
     */
    public function NewProj($uids)
    {
        $projects = projects::GetNewProjects($error, true, 600, 50);
        $groups = professions::GetAllGroupsLite(true);
        $page = 0;
        $count = 0;
        if (empty($projects)) {
            return 0;
        }
        $this->subject = 'Новые проекты на FL.ru';
        $message = '<p>
Данное письмо отправлено почтовым роботом сервера FL.ru и не требует ответа.
</p>
<p>
На сайте <a href="' . $GLOBALS['host'] . $this->_addUrlParams('f') . '">' . $GLOBALS['host'] . '</a> опубликованы новые Проекты
</p>
%MESSAGE%
<p>
Если вы хотите оперативно получать информацию об опубликованных на FL.ru проектах, 
скачайте и установите бесплатное приложение-информер <a href="' . $GLOBALS['host'] . '/promo/freetray/' . $this->_addUrlParams('f') . '">Free-tray</a>. 
</p>';
        $this->message = $this->GetHtml('%USER_NAME%', $message, array('header' => 'default', 'footer' => 'default'), array('target_footer' => true));
        $this->recipient = '';
        $massId = $this->send('text/html');
        foreach ($projects as $i => $prj) {
            $url = $GLOBALS['host'] . getFriendlyURL('project', $projects[$i]['id']);
            $projects[$i]['html'] = array('post_date' => date('d.m.y', strtotimeEx($prj['post_date'])), 'name' => $prj['name'] ? reformat($prj['name'], 100, 0, 1) : '', 'descr' => reformat($prj['descr'], 100, 0, 1), 'url' => "<a href='{$url}{$this->_addUrlParams('f')}'>{$url}</a>");
        }
        while ($users = freelancer::GetPrjRecps($error, ++$page, 50, $uids)) {
            $this->recipient = array();
            foreach ($users as $user) {
                if (empty($user['mailer'])) {
                    continue;
                }
                $subj = array();
                foreach ($groups as $group) {
                    if (freelancer::isSubmited($user['mailer_str'], array(array('category_id' => $group['id'])))) {
                        $subj[$group['id']] = $group['name'];
                    }
                }
                $lastKind = 0;
                $message = '';
                foreach ($projects as $prj) {
                    if (!freelancer::isSubmited($user['mailer_str'], $prj['specs'])) {
                        continue;
                    }
                    if ($lastKind != $prj['kind']) {
                        $kindName = '';
                        switch ($prj['kind']) {
                            case 1:
                                $kindName = 'Попроектно';
                                break;
                            case 2:
                                $kindName = 'Конкурсы';
                                break;
                            case 3:
                                $kindName = 'На зарплату';
                                break;
                            case 4:
                                $kindName = 'В офис';
                                break;
                            case 7:
                                $kindName = 'Конкурсы';
                                break;
                        }
                        $message .= "\n";
                        $message .= "<div>-----------------------------------------------------------------------------------</div>\n";
                        $message .= "<div>{$kindName}</div>\n";
                        $message .= "<div>-----------------------------------------------------------------------------------</div>\n";
                        $lastKind = $prj['kind'];
                    }
                    $message .= "\n<div>&nbsp;</div><div>-----</div>\n";
                    $message .= "<div>{$prj['html']['post_date']}</div>\n";
                    $message .= "<div>{$prj['html']['name']}</div>\n";
                    $message .= "<div>-----</div>\n";
                    $message .= "<div>{$prj['html']['descr']}</div>\n";
                    $message .= "<div>{$prj['html']['url']}</div>\n";
                    $message .= "<div>-----------------------------------</div>\n";
                }
                if (empty($message)) {
                    continue;
                }
                $message = '<div>(' . implode('/', $subj) . ')</div><div>&nbsp;</div>' . $message;
                if (!$user['unsubscribe_key']) {
                    $user['unsubscribe_key'] = users::GetUnsubscribeKey($user['login']);
                }
                $this->recipient[] = array('email' => $user['uname'] . ' ' . $user['usurname'] . ' [' . $user['login'] . '] <' . $user['email'] . '>', 'extra' => array('USER_NAME' => $user['uname'], 'USER_SURNAME' => $user['usurname'], 'USER_LOGIN' => $user['login'], 'MESSAGE' => $message, 'UNSUBSCRIBE_KEY' => $user['unsubscribe_key']));
                ++$count;
            }
            $this->bind($massId, true);
        }
        return $count;
    }