Example #1
0
function mod_latest_faq($module_id, $cfg)
{
    $inDB = cmsDatabase::getInstance();
    if (!isset($cfg['newscount'])) {
        $cfg['newscount'] = 2;
    }
    if (!isset($cfg['cat_id'])) {
        $cfg['cat_id'] = 0;
    }
    if (!isset($cfg['maxlen'])) {
        $cfg['maxlen'] = 120;
    }
    if ($cfg['cat_id']) {
        $catsql = 'AND category_id = ' . $cfg['cat_id'];
    } else {
        $catsql = '';
    }
    $sql = "SELECT *\n            FROM cms_faq_quests\n            WHERE published = 1 " . $catsql . "\n            ORDER BY pubdate DESC\n            LIMIT " . $cfg['newscount'];
    $result = $inDB->query($sql);
    $faq = array();
    if ($inDB->num_rows($result)) {
        while ($con = $inDB->fetch_assoc($result)) {
            $con['date'] = cmsCore::dateFormat($con['pubdate']);
            $con['href'] = '/faq/quest' . $con['id'] . '.html';
            $faq[] = $con;
        }
    }
    cmsPage::initTemplate('modules', 'mod_latest_faq')->assign('faq', $faq)->assign('cfg', $cfg)->display('mod_latest_faq.tpl');
    return true;
}
function mod_calendar_eventview($module_id, $cfg)
{
    $inCore = cmsCore::getInstance();
    $inCore->loadModel('calendar');
    $c_cfg = $inCore->loadComponentConfig('calendar');
    $model = new cms_model_calendar();
    if (!$cfg['event_rate']) {
        $cfg['event_rate'] = 7;
    }
    $start = time();
    $end = $start + $cfg['event_rate'] * 24 * 60 * 60;
    $events = $model->getCalendar($start, $end);
    $smarty = cmsPage::initTemplate('modules', 'mod_calendar_eventview.tpl');
    $smarty->assign('events', $events);
    $smarty->assign('start', $start);
    $smarty->assign('end', $end);
    $smarty->assign('f_start', cmsCore::dateFormat(date('Y-m-d H:i:s', $start), 0, 0, 0));
    $smarty->assign('f_end', cmsCore::dateFormat(date('Y-m-d H:i:s', $end), 0, 0, 0));
    $smarty->display('mod_calendar_eventview.tpl');
    return true;
}
Example #3
0
function mod_latest_faq($mod, $cfg) {
    $cfg = array_merge(array(
        'newscount' => 2,
        'cat_id'    => 0,
        'maxlen'    => 120
    ), $cfg);

    if ($cfg['cat_id']) {
        $catsql = 'AND category_id = '. $cfg['cat_id'];
    } else {
        $catsql = '';
    }

    $sql = "SELECT *
            FROM cms_faq_quests
            WHERE published = 1 ". $catsql ."
            ORDER BY pubdate DESC
            LIMIT ". $cfg['newscount'];

    $result = cmsCore::c('db')->query($sql) ;

    $faq = array();

    if (cmsCore::c('db')->num_rows($result)) {
        while($con = cmsCore::c('db')->fetch_assoc($result)) {
            $con['date'] = cmsCore::dateFormat($con['pubdate']);
            $con['href'] = '/faq/quest'.$con['id'].'.html';
            $faq[] = $con;
        }
    }

    cmsPage::initTemplate('modules', $cfg['tpl'])->
        assign('faq', $faq)->
        assign('cfg', $cfg)->
        display();

    return true;
}
Example #4
0
function applet_tickets() {
    global $adminAccess;

    if (!cmsUser::isAdminCan('admin/tickets', $adminAccess)) { cpAccessDenied(); }
    
    global $_LANG;
    
    cmsUser::sessionDel('ticket_cat');

    $do = cmsCore::request('do', 'str', 'list');
    $super_user = cmsCore::c('user')->id == 1;
    
    $toolmenu = array(
        array( 'icon' => 'new.gif', 'title' => $_LANG['AD_TICKET_CREATE'], 'link' => '?view=tickets&do=add' ),
        array( 'icon' => 'liststuff.gif', 'title' => $_LANG['AD_TICKET_LIST'], 'link' => '?view=tickets&do=list' )
    );

    cpToolMenu($toolmenu, 'list', 'do');
    
    cmsCore::c('page')->setTitle($_LANG['AD_TICKETS']);
    cpAddPathway($_LANG['AD_TICKETS'], 'index.php?view=tickets');
    
    if ($do == 'list') {
        $fields = array(
            array( 'title' => 'id', 'field' => 'id', 'width' => '40' ),
            array( 'title' => $_LANG['AD_TICKET_STATUS'], 'field' => 'status', 'width' => '100', 'filter' => 1, 'prc' => 'cpTicketStatus', 'filterlist' => cpGetTicketStatusList() ),
            array( 'title' => $_LANG['AD_TICKET_DATE'], 'field' => 'pubdate', 'width' => '80' ),
            array( 'title' => $_LANG['AD_TICKET_TITLE'], 'field' => 'title', 'width' => '', 'filter' => 32, 'link' => 'index.php?view=tickets&do=view&id=%id%' ),
            array( 'title' => $_LANG['AD_TICKET_LAST_MSG_DATE'], 'field' => 'last_msg_date', 'width' => '80' ),
            array( 'title' => $_LANG['AD_TICKET_CAT'], 'field' => 'cat_id', 'width' => '150', 'filter' => 1, 'prc' => 'cpTicketCategory', 'filter' => 1, 'filterlist' => cpGetTicketCats() ),
            array( 'title' => $_LANG['AD_TICKET_PRIORITY'], 'field' => 'priority', 'width' => '100', 'filter' => 1, 'prc' => 'cpTicketPriority', 'filterlist' => cpGetTicketPriorityList() )
        );
        
        if ($super_user) {
            $fields[] = array( 'title' => $_LANG['AD_TICKET_USER'], 'field' => 'user_id', 'width' => '110', 'prc' => 'cpTicketAuthor' );
        }

        $actions = array(
            array( 'title' => $_LANG['AD_TICKET_CLOSE'], 'icon' => 'off.gif', 'link' => '?view=tickets&do=close_ticket&id=%id%', 'condition' => 'cpCheckTicketClose' ),
            array( 'title' => $_LANG['DELETE'], 'icon' => 'delete.gif', 'link' => '?view=tickets&do=delete&id=%id%', 'confirm' => $_LANG['AD_TICKET_DELETE'] )
        );

        cpListTable('cms_ticket', $fields, $actions, $super_user ? '' : 'user_id='. cmsCore::c('user')->id, 'last_msg_date DESC', 30);
    }
    
    if ($do == 'delete') {
        $id = cmsCore::request('id', 'int', 0);
        $item = cmsCore::c('db')->get_fields('cms_ticket', 'id='. $id, '*');
        
        if (!empty($item)) {
            $server = cmsCore::c('db')->get_field('cms_ticket_cat', 'id='. $item['cat_id'], 'server');
            if (empty($server)) { $server = 'http://ds-soft.ru/tickets.api.php'; }
            
            //Удаляем сам тиккет
            cmsCore::c('db')->delete('cms_ticket', 'id='. $item['id']);
            
            //Удаляем все сообщения тиккета
            cmsCore::c('db')->delete('cms_ticket_msg', 'ticket_id='. $item['id']);
            
            //Удаляем все прикрепленные изображения тиккета
            cmsCore::deleteUploadImages($item['id'], 'ticket');
            
            if ($item['status'] != '3') {
                //Отправляем сообщение на сервер техподдержки что тикет удален
                cmsCore::c('curl')->ajax()->request('post', $server .'?do=ticket_deleted', array( 'ticket_id' => $item['id'], 'ticket_secret_key' => $item['secret_key'], 'host' => cmsCore::c('config')->host ));
            }
            
            cmsCore::addSessionMessage($_LANG['AD_TICKET_DELETE_SUCCESS'], 'success');
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
        }
        
        cmsCore::redirect('index.php?view=tickets');
    }
    
    if ($do == 'close_ticket') {
        $id = cmsCore::request('id', 'int', 0);
        $item = cmsCore::c('db')->get_fields('cms_ticket', 'id='. $id, '*');
        
        if (!empty($item)) {
            cmsCore::c('db')->setFlag('cms_ticket', $item['id'], 'status', '3');
            
            $server = cmsCore::c('db')->get_field('cms_ticket_cat', 'id='. $item['cat_id'], 'server');
            if (empty($server)) { $server = 'http://ds-soft.ru/tickets.api.php'; }
            
            //Отправляем сообщение на сервер техподдержки что тикет закрыт
            cmsCore::c('curl')->ajax()->request('post', $server .'?do=ticket_closed', array( 'ticket_id' => $item['id'], 'ticket_secret_key' => $item['secret_key'], 'host' => cmsCore::c('config')->host ));
            
            cmsCore::addSessionMessage($_LANG['AD_TICKET_CLOSE_SUCCESS'], 'success');
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
        }
        
        cmsCore::redirect('index.php?view=tickets');
    }
    
    if ($do == 'add') {
        cpAddPathway($_LANG['AD_TICKET_CREATE'], 'index.php?view=tickets&do=add');
        $cats = cpGetTicketCats();
?>
<form action="index.php?view=tickets&do=submit" method="post">
    <input type="hidden" name="csrf_token" value="<?php echo cmsUser::getCsrfToken(); ?>" />
    
    <div class="panel panel-default" style="width:650px;">
        <div class="panel-body">
            <div class="form-group">
                <label><?php echo $_LANG['AD_TICKET_CAT']; ?></label>
                <select class="form-control" name="cat_id">
                    <?php foreach ($cats as $cat) { ?>
                    <option value="<?php echo $cat['id']; ?>"><?php echo $cat['title']; ?></option>
                    <?php } ?>
                </select>
            </div>
            
            <div class="form-group">
                <label><?php echo $_LANG['AD_TICKET_PRIORITY']; ?></label>
                <select class="form-control" name="priority">
                    <option value="0"><?php echo $_LANG['AD_TICKET_PRIORITY_0']; ?></option>
                    <option value="1"><?php echo $_LANG['AD_TICKET_PRIORITY_1']; ?></option>
                    <option value="2"><?php echo $_LANG['AD_TICKET_PRIORITY_2']; ?></option>
                    <option value="3"><?php echo $_LANG['AD_TICKET_PRIORITY_3']; ?></option>
                </select>
            </div>
            
            <div class="form-group">
                <label><?php echo $_LANG['AD_TICKET_TITLE']; ?></label>
                <input type="text" class="form-control" name="title" value="" required="true" maxlength="256" />
            </div>
            
            <div class="form-group">
                <label><?php echo $_LANG['AD_TICKET_MSG']; ?></label>
                <textarea class="form-control" name="msg" style="height: 200px;"></textarea>
            </div>
        </div>
    </div>
    
    <div style="margin-top:5px">
        <input type="submit" class="btn btn-primary" name="save" value="<?php echo $_LANG['AD_TICKET_SUBMIT']; ?>" />
        <input type="button" class="btn btn-default" name="back" value="<?php echo $_LANG['CANCEL']; ?>" onclick="window.location.href='index.php?view=tickets';" />
    </div>
</form>
<?php
    }
    
    if ($do == 'submit') {
        $cats = cpGetTicketCats();
        
        $item = array(
            'cat_id' => cmsCore::request('cat_id', 'int', 0),
            'priority' => cmsCore::request('priority', array(0,1,2,3), 0),
            'title' => cmsCore::request('title', 'str', ''),
            'msg' => cmsCore::request('msg', 'str', '')
        );
        
        if (!isset($cats[$item['cat_id']])) { $item['cat_id'] = 0; }
        
        if (!empty($item['title']) && !empty($item['msg'])) {
            $item['msg'] = cmsCore::c('db')->escape_string($item['msg']);
            $item['msg_count'] = 1;
            $item['pubdate'] = date('Y-m-d H:i:s');
            $item['last_msg_date'] = $item['pubdate'];
            $item['user_id'] = cmsCore::c('user')->id;
            
            $item['id'] = cmsCore::c('db')->insert('cms_ticket', $item);

            cmsCore::addSessionMessage($_LANG['AD_TICKET_CREATED'], 'success');
            
            $do = 'send';
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR_2'], 'error');
            cmsCore::redirect('index.php?view=tickets&do=add');
        }
    }
    
    if ($do == 'send') {
        if (empty($item)) {
            $id = cmsCore::request('id', 'int', 0);
            $item = cmsCore::c('db')->get_fields('cms_ticket', 'id='. $id, '*');
        }
        
        if (!empty($item)) {
            $cat = cmsCore::c('db')->get_fields('cms_ticket_cat', 'id='. $item['cat_id'], '*');
            $server = !empty($cat['server']) ? $cat['server'] : 'http://ds-soft.ru/tickets.api.php';

            $ticket = array(
                'ticket_id' => $item['id'],
                'cat_id' => $item['cat_id'],
                'priority' => $item['priority'],
                'title' => $item['title'],
                'msg' => $item['msg'],
                'host' => cmsCore::c('config')->host,
                'module' => $cat['module']
            );
            
            if ($ticket['cat_id'] > 0 && !empty($cat['module'])) {
                $ticket['module'] = $cat['module'];
            }

            //Отправляем тикет на сервер техподдержки
            $result = cmsCore::c('curl')->ajax()->request('post', $server .'?do=add_ticket', $ticket)->json();
            
            if (!empty($result['error'])) {
                cmsCore::clearSessionMessages();
                cmsCore::addSessionMessage($result['error'], 'error');
                cmsCore::c('db')->delete('cms_ticket', 'id='. $item['id']);
            } else if (isset($result['secret_key'])) {
                cmsCore::c('db')->update(
                    'cms_ticket',
                    array('status' => 1, 'secret_key' => $result['secret_key']),
                    $item['id']
                );

                cmsCore::addSessionMessage($_LANG['AD_TICKET_SENDED'], 'success');
            } else {
                cmsCore::addSessionMessage($_LANG['AD_TICKET_UNKNOWN_ERROR'], 'error');
                cmsCore::c('db')->delete('cms_ticket', 'id='. $item['id']);
            }
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
        }
        
        cmsCore::redirect('index.php?view=tickets');
    }
    
    if ($do == 'view') {
        $id = cmsCore::request('id', 'int', 0);
        $item = cmsCore::c('db')->get_fields('cms_ticket', 'id='. $id, '*');
        
        if (empty($item) || ($item['user_id'] != cmsCore::c('user')->id && !$super_user)) {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
            cmsCore::redirect('index.php?view=tickets');
        }
        
        cpAddPathway($item['title'], 'index.php?view=tickets&do=view&id='. $item['id']);
        
        if ($item['msg_count'] > 1) {
            $item['msgs'] = array();
            $results = cmsCore::c('db')->query("SELECT * FROM cms_ticket_msg WHERE ticket_id=". $item['id'] ." ORDER BY pubdate ASC");
            if (cmsCore::c('db')->num_rows($results)) {
                while($msg = cmsCore::c('db')->fetch_assoc($results)) {
                    $msg['pubdate'] = cmsCore::dateFormat($msg['pubdate']);
                    $item['msgs'][] = $msg;
                }
            }
        }
        
        if ($item['status'] != 3) {
            switch($item['priority']) {
                case 0: $class = 'info'; break;
                case 1: $class = 'success'; break;
                case 2: $class = 'primary'; break;
                case 3: $class = 'danger'; break;
            }
        }else {
            $class = 'default';
        }
?>
<div class="panel panel-<?php echo $class; ?>" style="width:650px;">
    <div class="panel-heading">
        <h4>Тема: <?php echo $item['title']; ?></h4>
        <div><?php echo $item['msg']; ?></div>
    </div>
    
    <div class="panel-body">
        <?php if (!empty($item['msgs'])) {
            foreach ($item['msgs'] as $msg) {
        ?>
            <div style="text-align: <?php if (!empty($msg['support'])) { echo 'right'; } else { echo 'left'; } ?>;">
                <span>
                    <i class="fa fa-calendar-o"></i>
                    <?php echo $msg['pubdate']; ?>
                </span>
                <?php if (!empty($msg['support'])) { ?>
                    <span>
                        <i class="fa fa-user"></i>
                        <?php echo $msg['support']; ?>
                    </span>
                <?php } ?>
            </div>
            <div class="alert alert-warning" style="margin-<?php if (!empty($msg['support'])) { echo 'left'; } else { echo 'right'; } ?>: 50px;">
                <?php echo $msg['msg']; ?>
            </div>
        <?php } } ?>
    </div>
    
    <div class="panel-footer">
        <?php if ($item['msg_count'] > 1 && $item['status'] != 3) { ?>
            <form id="ticket_msg_add" action="index.php?view=tickets&do=submit_msg" method="post">
                <div class="form-group">
                    <label><?php echo $_LANG['AD_TICKET_MSG']; ?></label>
                    <textarea class="form-control" name="msg" style="height: 200px;"></textarea>
                </div>

                <div style="margin-top:5px">
                    <input type="hidden" name="id" value="<?php echo $item['id']; ?>" />
                    <input type="submit" class="btn btn-primary" name="save" value="<?php echo $_LANG['SEND']; ?>" />
                    <input type="button" class="btn btn-warning" value="<?php echo $_LANG['AD_TICKET_CLOSE']; ?>" onclick="window.location.href='index.php?view=tickets&do=close_ticket&id=<?php echo $item['id']; ?>';return false;" />
                    <input type="button" class="btn btn-danger" value="<?php echo $_LANG['DELETE']; ?>" onclick="jsmsg('<?php echo $_LANG['AD_TICKET_DELETE']; ?>', '?view=tickets&do=delete&id=<?php echo $item['id']; ?>');" />
                    <input type="button" class="btn btn-default" value="<?php echo $_LANG['BACK']; ?>" onclick="window.location.href='index.php?view=tickets';return false;" />
                </div>
            </form>
        <?php } else { ?>
            <div>
                <?php if ($item['status'] != 3) { ?>
                    <input type="button" class="btn btn-warning" value="<?php echo $_LANG['AD_TICKET_CLOSE']; ?>" onclick="window.location.href='index.php?view=tickets&do=close_ticket&id=<?php echo $item['id']; ?>';return false;" />
                <?php } ?>
                <input type="button" class="btn btn-danger" value="<?php echo $_LANG['DELETE']; ?>" onclick="jsmsg('<?php echo $_LANG['AD_TICKET_DELETE']; ?>', '?view=tickets&do=delete&id=<?php echo $item['id']; ?>');" />
                <input type="button" class="btn btn-default" value="<?php echo $_LANG['BACK']; ?>" onclick="window.location.href='index.php?view=tickets';return false;" />
            </div>
        <?php } ?>
    </div>
</div>
<script type="text/javascript">
    $(function () {
        $('body').animate({ scrollTop: $('#ticket_msg_add').offset().top }, 1100);
    });
</script>
<?php
    }
    
    if ($do == 'submit_msg') {
        $id = cmsCore::request('id', 'int', 0);
        $item = cmsCore::c('db')->get_fields('cms_ticket', 'id='. $id, '*');
        
        if (empty($item) || ($item['user_id'] != cmsCore::c('user')->id && !$super_user)) {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
            cmsCore::redirect('index.php?view=tickets');
        }
        
        $msg = cmsCore::request('msg', 'str', '');
        $date = date('Y-m-d H:i:s');
        
        cmsCore::c('db')->insert('cms_ticket_msg', array('msg' => cmsCore::c('db')->escape_string($msg), 'ticket_id' => $item['id'], 'pubdate' => $date));
        
        cmsCore::c('db')->query("UPDATE `cms_tickets` SET `last_msg_date` = '". $date ."', `msg_count` = `msg_count`+1 WHERE `id` = '". $item['id'] ."'");
        
        $server = cmsCore::c('db')->get_field('cms_ticket_cat', 'id='. $item['cat_id'], 'server');
        if (empty($server)) { $server = 'http://ds-soft.ru/tickets.api.php'; }
        
        //Отправляем тикет на сервер техподдержки
        $result = cmsCore::c('curl')->ajax()->request('post', $server .'?do=add_ticket_msg', array( 'msg' => $msg, 'ticket_id' => $item['id'], 'secret_key' => $item['secret_key'], 'host' => cmsCore::c('config')->host ))->json();

        if (!empty($result['error'])) {
            cmsCore::addSessionMessage($result['error'], 'error');
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_MSG_SENDED'], 'success');
        }
        
        cmsCore::redirect('index.php?view=tickets&do=view&id='. $item['id']);
    }
}
Example #5
0
	public function getUserFiles($for_all=false){

        if (!$for_all){
            $allowsql = "allow_who='all'";
        } else {
            $allowsql = '1=1';
        }

        $sql = "SELECT *
                FROM cms_user_files
                WHERE {$allowsql}
                {$this->inDB->where}
                {$this->inDB->order_by}\n";

        if ($this->inDB->limit){
            $sql .= "LIMIT {$this->inDB->limit}";
        }

		$result = $this->inDB->query($sql);

		$this->inDB->resetConditions();

		if (!$this->inDB->num_rows($result)){ return array(); }

        $rownum = 0;

		while($file = $this->inDB->fetch_assoc($result)){

			$file['pubdate']  = cmsCore::dateFormat($file['pubdate']);
            $file['filelink'] = HOST.'/users/files/download'.$file['id'].'.html';
            $file['fileicon'] = cmsCore::fileIcon($file['filename']);
            $file['mb'] 	  = round(($file['filesize']/1024)/1024, 2); if ($file['mb'] == '0') { $file['mb'] = '~ 0'; }
            $file['rownum']   = $rownum; $rownum++;

			$files[] = $file;
		}

		return $files;

	}
Example #6
0
 /**
  * Возвращает опрос
  * @param str $where условия запроса
  * @return int
  */
 public function getPoll($where)
 {
     $poll = $this->inDB->get_fields('cms_forum_polls', $where, '*');
     if (!$poll) {
         return false;
     }
     global $_LANG;
     $poll['answers'] = cmsCore::yamlToArray($poll['answers']);
     $num = 1;
     foreach ($poll['answers'] as $key => $value) {
         $poll['answers_key'][$num] = $key;
         $num++;
     }
     $poll['options'] = cmsCore::yamlToArray($poll['options']);
     switch ($poll['options']['result']) {
         case 0:
             $poll['options']['result_text'] = $_LANG['AVAILABLE_FOR_ALL'];
             break;
         case 1:
             $poll['options']['result_text'] = $_LANG['AVAILABLE_FOR_VOTERS'];
             break;
         case 2:
             $poll['options']['result_text'] = $_LANG['AVAILABLE_AFTER_VOTE'];
             break;
     }
     switch ($poll['options']['change']) {
         case 0:
             $poll['options']['change_text'] = $_LANG['PROHIBITED'];
             break;
         case 1:
             $poll['options']['change_text'] = $_LANG['ALLOW'];
             break;
     }
     $poll['days_left'] = round((strtotime($poll['enddate']) - time()) / 86400);
     $poll['days_left'] = $poll['days_left'] < 0 ? 0 : $poll['days_left'];
     $poll['is_closed'] = $poll['days_left'] <= 0;
     $poll['is_user_vote'] = $this->isUserVoted($poll['id']);
     // совместимость старых типов ответов, по id
     // если пользователь проголосовал
     if (!is_bool($poll['is_user_vote'])) {
         if (is_numeric($poll['is_user_vote'])) {
             $poll['is_user_vote'] = $poll['answers_key'][$poll['is_user_vote']];
         }
     }
     $poll['vote_count'] = $this->getVoteCount($poll['answers']);
     $poll['fenddate'] = cmsCore::dateFormat($poll['enddate']);
     $poll['show_result'] = false;
     return cmsCore::callEvent('GET_THREAD_POLL', $poll);
 }
function calendar()
{
    $inCore = cmsCore::getInstance();
    $inPage = cmsPage::getInstance();
    $inUser = cmsUser::getInstance();
    $inCore->loadModel('calendar');
    $model = new cms_model_calendar();
    $do = $inCore->request('do', 'str', 'view');
    $cfg = $inCore->loadComponentConfig('calendar');
    if ($do == 'view') {
        $inPage->setTitle("Календарь событий");
        $inPage->addPathway("Календарь", "/calendar");
        $smarty = $inPage->initTemplate('components', 'com_calendar_view.tpl');
        $category_id = $inCore->request('category_id', 'int', 0);
        $can_add = FALSE;
        $moderated = TRUE;
        if ($cfg['group_' . $inUser->group_id]) {
            $can_add = TRUE;
            $moderated = FALSE;
        } elseif ($cfg['m_group_' . $inUser->group_id]) {
            $can_add = TRUE;
            $moderated = TRUE;
        }
        if ($inUser->is_admin) {
            $can_add = TRUE;
        }
        $catigories = $model->getAllCategories();
        if ($category_id) {
            $category = $category_id;
            $cat = $model->getCategory($category);
            $inPage->addPathway($cat['name']);
        } else {
            $category = "all";
        }
        if ($cfg['calendar_view'] == 'afisha') {
            $inCore->redirect('/calendar/list.html');
        }
        $smarty->assign('can_add', $can_add);
        $smarty->assign('cfg', $cfg);
        $smarty->assign('catigories', $catigories);
        $smarty->assign('category', $category);
        $smarty->display('com_calendar_view.tpl');
        return;
    }
    if ($do == "list") {
        $inPage->addPathway("Календарь", "/calendar");
        $inPage->addPathway("Афиша");
        $per_day = 10;
        //Количество сообытий в дне максимум
        $display_days = 5;
        //количество дней которые показывается на странице
        $dayt = 60 * 60 * 24;
        //Продолжительность дня в секундах
        $start_time = strtotime(date('Y-m-d', time()) . " 00:00:00") - $dayt;
        //Определяем утро сегодняшнего дня
        $output = array();
        for ($i = 0; $i < $display_days; $i++) {
            $start = strtotime(date('Y-m-d', $start_time + $dayt * $i));
            $n = date("N", $start + 1);
            //Определяем заголовок блока дня
            if ($i == 0) {
                $day['title'] = "Сегодня";
            } elseif ($i == 1) {
                $day['title'] = "Завтра";
            } else {
                $day['title'] = $inCore->dateFormat(date('Y-m-d H:i:s', $start_time + $dayt * ($i + 1)));
            }
            $day['events'] = $model->getCalendar($start, $start + 86400);
            //Определяем активные встречи за временной период
            $output[] = $day;
        }
        $inPage->setTitle("Календарь событий");
        $smarty = $inPage->initTemplate('components', 'com_calendar_list.tpl');
        $smarty->assign('events', $output);
        $smarty->assign('cfg', $cfg);
        $smarty->display('com_calendar_list.tpl');
    }
    if ($do == "view_event") {
        $event_id = $inCore->request('event_id', 'int', 0);
        $event = $model->getEvent($event_id);
        /*FOTOLIB*/
        include 'fotolib.class.php';
        $foto = new FotoLib();
        //Проверяем можем ли добавлять фото
        $allow_add_foto = $foto->addAcces("calendar", $event);
        if ($_FILES) {
            $foto->uploadFoto($_FILES, "calendar", $event_id);
        }
        $images = $foto->loadImages("calendar", $event_id);
        /*FOTOLIB*/
        if (!$event) {
            cmsCore::addSessionMessage('Ошибка запроса', 'error');
            $inCore->redirect('/calendar');
            exit;
        } elseif ($event['hide'] == 1 and !$inUser->is_admin) {
            cmsCore::addSessionMessage('Ошибка доступа', 'error');
            $inCore->redirect('/calendar');
            exit;
        } else {
            if ($event['type'] == 'private' and $event['author_id'] != $inUser->id) {
                cmsCore::addSessionMessage('Ошибка запроса', 'error');
                $inCore->redirect('/calendar');
                exit;
            }
            $msg = $inCore->parseSmiles($event['content'], true);
            if (count($event['parent']) != 0) {
                $delta = $event['end_time'] - $event['start_time'];
                $day = date("d", $event['start_time']);
                $month = date("n", $event['start_time']) - 1;
                //Яваскриптики считают с 0
                $year = date("Y", $event['start_time']);
                if ($delta < 24 * 60 * 60) {
                    $calendar_view = "agendaDay";
                    if (date("d", $event['start_time']) != date("d", $event['end_time'])) {
                        //Если меньше 24 часов но всё же в разные дни включаем недельный вид
                        $calendar_view = "agendaWeek";
                    }
                } elseif ($delta < 7 * 24 * 60 * 60) {
                    $calendar_view = "agendaWeek";
                } else {
                    $calendar_view = "month";
                }
                $events_string = "";
                foreach ($event['parent'] as $parent) {
                    $events_string .= "{\n\t  id    : '" . $parent['id'] . "',\n\t  title : '" . str_replace("'", '"', $parent['title']) . "',\n\t  start : '" . date("Y-m-d H:i:s", $parent['start_time']) . "',\n\t  end   : '" . date("Y-m-d H:i:s", $parent['end_time']) . "',\n\t  url   : '/calendar/event" . $parent['id'] . ".html',";
                    if ($parent['end_time'] - $parent['start_time'] > 60 * 60 * 8) {
                        $events_string .= "allDay: true,";
                    } else {
                        $events_string .= "allDay: false,";
                    }
                    switch ($parent['type']) {
                        case "public":
                            if ($parent['author_id'] == $inUser->id) {
                                $events_string .= "color: '#B9C3BC',\n";
                            } else {
                                $events_string .= "color: '#C3BCB9',\n";
                            }
                            $events_string .= "textColor: '#000000',\n";
                            break;
                        case "private":
                            $events_string .= "color: '#3366CC'\n";
                    }
                    $events_string .= "},";
                }
            }
            $issignup = $model->isSignup($event_id);
            $singups_user = $model->getSingupsUsers($event_id);
            $inPage->setTitle('Просмотр события "' . $event['title'] . '"');
            $inPage->addPathway("Календарь", "/calendar");
            if ($event['parent_id']) {
                $parent = $model->getEvent($event['parent_id']);
                $inPage->addPathway($parent['title'], "/calendar/event" . $parent['id'] . ".html");
            }
            $inPage->addPathway($event['title'], "/calendar/event" . $event_id . ".html");
            $smarty = $inPage->initTemplate('components', 'com_calendar_event_view.tpl');
            $smarty->assign('user_id', $inUser->id);
            $smarty->assign('event', $event);
            $smarty->assign('content', $msg);
            $smarty->assign('parent', $event['parent']);
            $smarty->assign('calendar_view', $calendar_view);
            $smarty->assign('events_string', $events_string);
            $smarty->assign('year', $year);
            $smarty->assign('month', $month);
            $smarty->assign('day', $day);
            $smarty->assign('start_time', date("d.m.Y H:i", $event['start_time']));
            $smarty->assign('end_time', date("d.m.Y H:i", $event['end_time']));
            $smarty->assign('issngnup', $issignup);
            $smarty->assign('singups_user', $singups_user);
            $smarty->assign('images', $images);
            //fotolib
            $smarty->assign('allow_add_foto', $allow_add_foto);
            //fotolib
            if ($event['start_time'] - time() < 0) {
                $status = "Прошедшее событие";
            } else {
                if ($event['start_time'] - time() > 86400) {
                    $status = 'Осталось ' . declension(round(($event['start_time'] - time()) / 86400), array("день", "дня", "дней"));
                } else {
                    $status = 'Осталось ' . declension(round(($event['start_time'] - time()) / 3600), array("час", "часа", "часов"));
                }
            }
            $smarty->assign('status', $status);
            if ($inUser->id == $event['author_id'] or $inUser->is_admin) {
                $smarty->assign('admin', TRUE);
            }
            $smarty->display('com_calendar_event_view.tpl');
            $inCore->includeComments();
            comments('calendar', $event_id);
            return;
        }
    }
    if ($do == "delete_event") {
        if ($inUser->id == 0) {
            $inCore->redirect('/');
            exit;
        }
        $event_id = $inCore->request('event_id', 'int', 0);
        $deleted = $model->deleteEvent($event_id);
        if ($deleted) {
            cmsCore::addSessionMessage('Ваше мероприятие удалено!', 'success');
            $inCore->redirect('/calendar');
            exit;
        } else {
            cmsCore::addSessionMessage('Ошибка', 'error');
            $inCore->redirect('/calendar');
            exit;
        }
    }
    if ($do == "edit_event") {
        if ($inUser->id == 0) {
            $inCore->redirect('/');
            exit;
        }
        $event_id = $inCore->request('event_id', 'int', 0);
        $event = $model->getEvent($event_id);
        if ($event["author_id"] != $inUser->id and !$inUser->is_admin) {
            cmsCore::addSessionMessage('Ошибка доступа', 'error');
            $inCore->redirectBack();
            exit;
        }
        if ($inUser->is_admin) {
            $can_moderate = true;
        }
        $is_send = $inCore->inRequest('title');
        if ($is_send) {
            $title = $inCore->request('title', 'str');
            $type = $inCore->request('type', 'str');
            $date_start = $inCore->request('date_start', 'str');
            $date_end = $inCore->request('date_end', 'str');
            $hour_start = $inCore->request('hour_start', 'str');
            $hour_end = $inCore->request('hour_end', 'str');
            $min_start = $inCore->request('min_start', 'str');
            $min_end = $inCore->request('min_end', 'str');
            $content = $inCore->request('content', 'str');
            if ($can_moderate) {
                $m_hide = $inCore->request('hide', 'str');
                if ($m_hide == "on") {
                    $hide = 1;
                } else {
                    $hide = 0;
                }
            }
            if (!$title || !$type || !$date_start || !$hour_start || !$hour_end || !$min_start || !$min_end) {
                cmsCore::addSessionMessage('Ой, что то не было заполнено...', 'error');
                $inCore->redirectBack();
                exit;
            } else {
                $start_time = strtotime($date_start . ' ' . $hour_start . ':' . $min_start);
                if ($data_end == "" or $data_end < $data_start) {
                    $data_end = $data_start;
                }
                $end_time = strtotime($date_end . ' ' . $hour_end . ':' . $min_end);
                if (!is_numeric($type)) {
                    $category_id = "0";
                } else {
                    $category_id = $type;
                    $type = "public";
                }
                $update = $model->updateEvent($event_id, $type, $category_id, $start_time, $end_time, $title, $content, $hide);
                if ($update) {
                    cmsCore::addSessionMessage('Ваше мероприятие изменено!', 'success');
                    $inCore->redirect('/calendar/event' . $event_id . '.html');
                    exit;
                } else {
                    cmsCore::addSessionMessage('Ошибка добавления!', 'error');
                    $inCore->redirect('/calendar/edit' . $event_id . '.html');
                    exit;
                }
            }
        } else {
            $event = $model->getEvent($event_id);
            if (!$event) {
                cmsCore::addSessionMessage('Ошибка запроса тут', 'error');
                $inCore->redirect('/calendar');
                exit;
            }
            if ($event['category_id']) {
                $event['type'] = $event['category_id'];
            }
            $bb_toolbar = cmsPage::getBBCodeToolbar('calendar', 1, 'forum');
            $smilies = cmsPage::getSmilesPanel('calendar');
            //Проверяем присоедиялся ли пользователь ко встрече
            $catigories = $model->getAllCategories();
            $inPage->setTitle("Редактировать событие");
            $smarty = $inPage->initTemplate('components', 'com_calendar_add.tpl');
            $smarty->assign('event', $event);
            $smarty->assign('edit', 1);
            $smarty->assign('cfg', $cfg);
            $smarty->assign('catigories', $catigories);
            $smarty->assign('title', $event['title']);
            $smarty->assign('content', $event['content']);
            $smarty->assign('type', $event['type']);
            $smarty->assign('start_date', date("d.m.Y", $event['start_time']));
            $smarty->assign('start_hour', date("H", $event['start_time']));
            $smarty->assign('start_min', date("i", $event['start_time']));
            $smarty->assign('end_date', date("d.m.Y", $event['end_time']));
            $smarty->assign('end_hour', date("H", $event['end_time']));
            $smarty->assign('end_min', date("i", $event['end_time']));
            $smarty->assign('bb_toolbar', $bb_toolbar);
            $smarty->assign('smilies', $smilies);
            $smarty->assign('can_moderate', $can_moderate);
            $smarty->display('com_calendar_add.tpl');
            return;
        }
    }
    if ($do == "event_signup") {
        //Если не залогинились то возвращаем обратно
        if ($inUser->id == 0) {
            $inCore->redirectBack();
            return;
        }
        $event_id = $inCore->request('event_id', 'int', 0);
        $event = $model->getEvent($event_id);
        //Если приватное событие то отправляем обратно
        if ($event["type"] == "private") {
            $inCore->redirectBack();
            return;
        }
        //Если мероприятие уже прошло говорим ай-яй-яй
        if ($event['start_time'] - time() < 0) {
            cmsCore::addSessionMessage('Присоединиться к мероприятию уже невозможно', 'error');
            $inCore->redirectBack();
            exit;
        }
        //Проверяем статус присоединения ко встрече
        if ($model->isSignup($event_id)) {
            //Если уже присоединялись то удаляем и выводим статус
            $model->deleteSignup($event_id);
            cmsCore::addSessionMessage('Вы отказались от участия в мероприятии ' . $event["title"], 'success');
            // Добавляем событие в ленту
            cmsActions::log('del_signup', array('object' => $event["title"], 'object_url' => '/calendar/event' . $event_id . '.html', 'object_id' => $event_id, 'target' => '', 'target_url' => '/calendar/event' . $event_id . '.html', 'target_id' => '0', 'description' => ''));
            $inCore->redirect('/calendar/event' . $event_id . '.html');
        } else {
            //Если не присоединялись то добавляем в базу и выводим статус
            //Если уже присоединялись то удаляем и выводим статус
            $model->addSignup($event["id"]);
            cmsCore::addSessionMessage('Вы присоединились к событию ' . $event["title"], 'success');
            // Добавляем событие в ленту
            cmsActions::log('add_signup', array('object' => $event["title"], 'object_url' => '/calendar/event' . $event_id . '.html', 'object_id' => $event["id"], 'target' => '', 'target_url' => '/calendar/event' . $event_id . '.html', 'target_id' => '0', 'description' => ''));
            $inCore->redirect('/calendar/event' . $event_id . '.html');
        }
        return;
    }
    //AJAX
    if ($do == "ajax_add") {
        $can_add = FALSE;
        $moderated = TRUE;
        if ($cfg['group_' . $inUser->group_id] or $inUser->is_admin) {
            $can_add = TRUE;
            $moderated = FALSE;
        } elseif ($cfg['m_group_' . $inUser->group_id]) {
            $can_add = TRUE;
            $moderated = TRUE;
        }
        if ($can_add) {
            $title = $inCore->request('title', 'str');
            $type = $inCore->request('type', 'str');
            $date_start = $inCore->request('date_start', 'str');
            $date_end = $inCore->request('date_end', 'str');
            $hour_start = $inCore->request('hour_start', 'str');
            $hour_end = $inCore->request('hour_end', 'str');
            $min_start = $inCore->request('min_start', 'str');
            $min_end = $inCore->request('min_end', 'str');
            $content = $inCore->request('content', 'str');
            $parent_id = $inCore->request('parent_id', 'int');
            $m_hide = $inCore->request('hide', 'str');
            if ($m_hide == "on" or $moderated) {
                $hide = 1;
            } else {
                $hide = 0;
            }
            $start_time = strtotime($date_start . ' ' . $hour_start . ':' . $min_start);
            $end_time = strtotime($date_end . ' ' . $hour_end . ':' . $min_end);
            if ($start_hour < $cfg['calendar_minTime']) {
                $output['error'] = TRUE;
                $output['errortext'] = "Событие начинается слишком рано";
            }
            if ($end_hour > $cfg['calendar_maxTime']) {
                $output['error'] = TRUE;
                $output['errortext'] = "Событие заканчивается слишком поздно";
            }
            if ($end_hour == $cfg['calendar_maxTime'] and $end_min != 0) {
                $output['error'] = TRUE;
                $output['errortext'] = "Событие заканчивается слишком поздно";
            }
            if ($type == "private") {
                $category_id = 0;
                $type = "private";
            } else {
                if (is_numeric($type)) {
                    $category_id = $type;
                } else {
                    $category_id = 0;
                }
                $type = "public";
            }
            if ($parent_id) {
                $parent = $model->getEvent($parent_id);
                if (!$parent) {
                    $output['error'] = TRUE;
                    $output['errortext'] = "Родительское событие не найдено";
                } elseif ($parent['user_id'] != $inUser->id or !$inUser->is_admin) {
                    $output['error'] = TRUE;
                    $output['errortext'] = "Ошибка прав доступа";
                } elseif ($parent['hide'] == 1) {
                    $output['error'] = TRUE;
                    $output['errortext'] = "Нельзя добавлять события в скрытое событие";
                }
            }
            if (!$output['error']) {
                $event_id = $model->addEvent($inUser->id, $type, $category_id, $start_time, $end_time, $title, $content, $parent_id, $hide);
            }
            $output = array();
            if (!$event_id) {
                $output['error'] = TRUE;
                $output['errortext'] = "Ошибка БД";
            } else {
                $output['error'] = FALSE;
                $event = $model->getEvent($event_id);
                $output['event_id'] = $event_id;
                $output['start'] = $event['start_time'];
                $output['end'] = $event['end_time'];
                $output['hide'] = $hide;
                if ($event['end_time'] - $event['start_time'] > 60 * 60 * 8) {
                    $output['allDay'] = TRUE;
                } else {
                    $output['allDay'] = FALSE;
                }
                $output['bg'] = $event['bg'];
                $output['tx'] = $event['tx'];
                if ($type != "private" and $hide != 1) {
                    cmsActions::log('add_event', array('object' => 'событие', 'object_url' => '/calendar/event' . $event_id . '.html', 'object_id' => $event_id, 'target' => $title, 'target_url' => '/calendar/event' . $event_id . '.html', 'target_id' => '0', 'description' => $title));
                }
            }
        } else {
            $output['error'] = TRUE;
            $output['errortext'] = "Ошибка доступа";
        }
        print json_encode($output);
        exit;
    }
    if ($do == "ajax_edit") {
        $type_act = $inCore->request('type', 'str');
        $id = $inCore->request('id', 'int');
        $dayDelta = $inCore->request('dayDelta', 'str');
        $minuteDelta = $inCore->request('minuteDelta', 'str');
        $event = $model->getEvent($id);
        if ($event['author_id'] == $inUser->id or $inUser->is_admin) {
            $type = $event['type'];
            $category_id = $event['category_id'];
            $start_time = $event['start_time'];
            $end_time = $event['end_time'];
            $title = $event['title'];
            $content = $event['content'];
            $delta = $dayDelta * 24 * 60 * 60 + $minuteDelta * 60;
            if ($type_act == "drop") {
                $start_time = $start_time + $delta;
                $end_time = $end_time + $delta;
            }
            if ($type_act == "resize") {
                if ($end_time - $start_time > 0) {
                    $end_time = $end_time + $delta;
                } else {
                    print "Ошибка смещения";
                }
            }
            $model->updateEvent($id, $type, $category_id, $start_time, $end_time, $title, $content);
        } else {
            print "Ошибка доступа";
        }
        exit;
    }
    if ($do == "ajax_get_event") {
        $starttime = $inCore->request('start', 'int');
        $endtime = $inCore->request('end', 'int');
        $parent_id = $inCore->request('parent_id', 'parent_id');
        $category = $inCore->request('category', 'int');
        if ($category == "all" and !is_numeric($category)) {
            $category = FALSE;
        }
        if (!$parent_id) {
            $parent_id = 0;
        }
        if ($inUser->is_admin) {
            $show_hidden = true;
        }
        $events = $model->getCalendar($starttime, $endtime, $category, $parent_id, $show_hidden);
        $output = array();
        foreach ($events as $data) {
            $data['start'] = date("Y-m-d H:i:s", $data["start_time"]);
            $data['end'] = date("Y-m-d H:i:s", $data["end_time"]);
            $data['url'] = "/calendar/event" . $data['id'] . ".html";
            //       $data['image'] = "/components/calendar/images/no_image.png";
            if ($data["author_id"] == $inUser->id or $inUser->is_admin) {
                $data['editable'] = true;
            } else {
                $data['editable'] = false;
            }
            if ($data["end_time"] - $data["start_time"] > 60 * 60 * 8) {
                $data['allDay'] = "true";
            }
            if (!$data['category_id']) {
                switch ($data["type"]) {
                    case "public":
                        $data['color'] = $cfg['public_bg_color'];
                        $data['textColor'] = $cfg['public_tx_color'];
                        break;
                    case "private":
                        $data['color'] = $cfg['private_bg_color'];
                        $data['textColor'] = $cfg['private_tx_color'];
                        break;
                }
            } else {
                $data['color'] = $data['bg'];
                $data['textColor'] = $data['tx'];
            }
            if ($data["type"] == "private" and $data['author_id'] != $inUser->id) {
            } else {
                $output[] = $data;
            }
        }
        print json_encode($output);
        exit;
    }
    if ($do == "isc_calendar") {
        header('Content-type: text/calendar; charset=utf-8');
        header('Content-Disposition: inline; filename=calendar.ics');
        echo "BEGIN:VCALENDAR\n";
        echo "VERSION:2.0\n";
        echo "PRODID:-//hacksw/handcal//NONSGML v1.0//EN'\n";
        $events = $model->getCalendar(time() - 60 * 60 * 24 * 30, time() + 60 * 60 * 24 * 30, 0);
        foreach ($events as $event) {
            if ($event['type'] == "public") {
                $title = $event["title"];
                $dtstart = date("Ymd", $event["start_time"] - 60 * 60 * 4) . "T" . date("His", $event["start_time"] - 60 * 60 * 4);
                $dtend = date("Ymd", $event["end_time"] - 60 * 60 * 4) . "T" . date("His", $event["end_time"] - 60 * 60 * 4);
                echo "BEGIN:VEVENT\n";
                echo "DTSTART:{$dtstart}\n";
                echo "DTEND:{$dtend}\n";
                echo "SUMMARY:{$title}\n";
                echo "END:VEVENT\n";
            }
        }
        echo "END:VCALENDAR\n";
        exit;
    }
    if ($do == "ajax_add_form") {
        $start = strtotime($inCore->request('start', 'str'));
        $end = strtotime($inCore->request('end', 'str'));
        if ($start < strtotime('now 00:00:00')) {
            echo 'error';
            exit;
        }
        if (!$cfg['group_' . $inUser->group_id] and !$inUser->is_admin and !$cfg['m_group_' . $inUser->group_id]) {
            echo 'error';
            exit;
        }
        //Коректность времени добавления
        $start_hour = date("H", $start);
        if ($start_hour < $cfg['calendar_minTime']) {
            $start_hour = $cfg['calendar_minTime'];
        }
        $end_hour = date("H", $end);
        $end_min = date("i", $end);
        if ($end_hour > $cfg['calendar_maxTime']) {
            $end_hour = $cfg['calendar_maxTime'];
            $end_min = "00";
        }
        if ($inUser->is_admin) {
            $can_moderate = true;
        }
        $catigories = $model->getAllCategories();
        $bb_toolbar = cmsPage::getBBCodeToolbar('message', $cfg['img_on'], 'forum');
        $smilies = cmsPage::getSmilesPanel('message');
        $smarty = $inPage->initTemplate('components', 'com_calendar_add.tpl');
        $smarty->assign('catigories', $catigories);
        $smarty->assign('start_date', date("d.m.Y", $start));
        $smarty->assign('start_hour', $start_hour);
        $smarty->assign('start_min', date("i", $start));
        $smarty->assign('end_date', date("d.m.Y", $end));
        $smarty->assign('end_hour', $end_hour);
        $smarty->assign('end_min', $end_min);
        $smarty->assign('can_moderate', $can_moderate);
        $smarty->assign('bb_toolbar', $bb_toolbar);
        $smarty->assign('smilies', $smilies);
        $smarty->assign('cfg', $cfg);
        //print_r($cfg);
        $smarty->display('com_calendar_add.tpl');
        exit;
    }
    if ($do == "ajax_get_config") {
        print json_encode($cfg);
        exit;
    }
    //   FOTOLIB
    if ($do == "imagerotate") {
        $side = $md5 = $inCore->request('side', 'str');
        $image_id = $inCore->request('image_id', 'int');
        include 'fotolib.class.php';
        $foto = new FotoLib();
        $foto->Rotate($side, $image_id);
        $inCore->redirectBack();
        exit;
    }
    if ($do == "imagedelete") {
        include 'fotolib.class.php';
        $image_id = $inCore->request('image_id', 'int');
        $foto = new FotoLib();
        $foto->Delete($image_id);
        $inCore->redirectBack();
        exit;
    }
    if ($do == "ajax_format_date") {
        print cmsCore::dateFormat(date('Y-m-d H:i:s', $inCore->request('time', 'int')), 0, 0, 0);
        exit;
    }
}
Example #8
0
 /**
  * Возвращает блог по ссылке или по id
  * @param int or string $id_or_link
  * @return array $blog
  */
 public function getPost($id_or_link = 0)
 {
     if (is_numeric($id_or_link)) {
         $where = "p.id = '{$id_or_link}'";
     } else {
         $where = "p.seolink = '{$id_or_link}'";
     }
     $sql = "SELECT p.*,\r\n\t\t\t\t\t   u.nickname as author_nickname,\r\n\t\t\t\t\t   u.login as author_login,\r\n\t\t\t\t\t   up.imageurl as author_image,\r\n\t\t\t\t\t   u.is_deleted as author_deleted\r\n\t\t\t\tFROM cms_blog_posts p\r\n\t\t\t\tLEFT JOIN cms_users u ON u.id = p.user_id\r\n\t\t\t\tLEFT JOIN cms_user_profiles up ON up.user_id = u.id\r\n\t\t\t\tWHERE {$where} LIMIT 1";
     $result = $this->inDB->query($sql);
     if (!$this->inDB->num_rows($result)) {
         return false;
     }
     global $_LANG;
     $post = $this->inDB->fetch_assoc($result);
     $post['feditdate'] = cmsCore::dateFormat($post['edit_date']);
     $post['fpubdate'] = cmsCore::dateDiffNow($post['pubdate']) . ' ' . $_LANG['BACK'] . ' (' . cmsCore::dateFormat($post['pubdate']) . ')';
     //Убираем тег [cut]
     $post['content_html'] = preg_replace('/\\[(cut=)\\s*(.*?)\\]/ui', '', $post['content_html']);
     $post['author_avatar'] = cmsUser::getUserAvatarUrl($post['user_id'], 'small', $post['author_image'], $post['author_deleted']);
     return cmsCore::callEvent('GET_POST', $post);
 }
Example #9
0
 if (!$usr) {
     cmsCore::error404();
 }
 cmsCore::loadLib('tags');
 $sql = "SELECT p.*, a.title as album, pr.gender\n            FROM cms_user_photos p\n\t\t\tINNER JOIN cms_user_albums a ON a.id = p.album_id\n\t\t\tINNER JOIN cms_user_profiles pr ON pr.user_id = p.user_id\n            WHERE p.id = '{$photoid}' AND p.user_id = '{$id}' LIMIT 1";
 $result = $inDB->query($sql);
 if (!$inDB->num_rows($result)) {
     cmsCore::error404();
 }
 $photo = $inDB->fetch_assoc($result);
 $inPage->setTitle($photo['title']);
 $inPage->addPathway($usr['nickname'], cmsUser::getProfileURL($usr['login']));
 $inPage->addPathway($_LANG['PHOTOALBUMS'], '/users/' . $usr['id'] . '/photoalbum.html');
 $inPage->addPathway($photo['album'], '/users/' . $usr['login'] . '/photos/private' . $photo['album_id'] . '.html');
 $inPage->addPathway($photo['title']);
 $photo['pubdate'] = cmsCore::dateFormat($photo['pubdate'], true, false, false);
 $photo['genderlink'] = cmsUser::getGenderLink($usr['id'], $usr['nickname'], $photo['gender'], $usr['login']);
 $photo['filesize'] = round(filesize(PATH . '/images/users/photos/medium/' . $photo['imageurl']) / 1024, 2);
 //ссылки на предыдущую и следующую фотографии
 $previd = $inDB->get_fields('cms_user_photos', "id>'{$photo['id']}' AND user_id = '{$usr['id']}' AND album_id='{$photo['album_id']}'", 'id, title, pubdate', 'id ASC');
 $nextid = $inDB->get_fields('cms_user_photos', "id<'{$photo['id']}' AND user_id = '{$usr['id']}' AND album_id='{$photo['album_id']}'", 'id, title, pubdate', 'id DESC');
 // Проверяем права доступа
 $is_allow = cmsUser::checkUserContentAccess($photo['allow_who'], $id);
 // Если видим фото, обновляем просмотры
 if ($is_allow) {
     $inDB->query("UPDATE cms_user_photos SET hits = hits + 1 WHERE id = " . $photo['id']);
 }
 cmsPage::initTemplate('components', 'com_users_photos_view')->assign('photo', $photo)->assign('bbcode', '[IMG]' . HOST . '/images/users/photos/medium/' . $photo['imageurl'] . '[/IMG]')->assign('previd', $previd)->assign('nextid', $nextid)->assign('usr', $usr)->assign('myprofile', $myprofile)->assign('is_admin', cmsUser::userIsAdmin($inUser->id))->assign('is_allow', $is_allow)->assign('tagbar', $is_allow ? cmsTagBar('userphoto', $photo['id']) : '')->display('com_users_photos_view.tpl');
 if ($inCore->isComponentInstalled('comments') && $is_allow) {
     cmsCore::includeComments();
     comments('userphoto', $photo['id']);
Example #10
0
function mod_photo($mod, $cfg) {
    $cfg = array_merge(array(
        'user_photos' => 0,
        'is_full'     => 1,
        'showmore'    => 1,
        'album_id'    => 0,
        'whatphoto'   => 'all',
        'shownum'     => 5,
        'maxcols'     => 2,
        'sort'        => 'pubdate',
        'showclubs'   => 0,
        'is_subs'     => 1,
        'is_lightbox' => 1
    ), $cfg);

    // Задаем период
    cmsCore::c('photo')->wherePeriodIs($cfg['whatphoto']);
    
    //устанавливаем номер текущей страницы и кол-во фото на странице
    cmsCore::c('db')->limit($cfg['shownum']);
    
    if (!$cfg['user_photos']) {
        // выбираем категории фото
        cmsCore::c('db')->addJoin('INNER JOIN cms_photo_albums a ON a.id = f.album_id AND a.published = 1');
        cmsCore::c('db')->addSelect('a.title as cat_title, a.NSDiffer');

        // если категория задана, выбираем из нее
        if ($cfg['album_id']) {
            // Если выбирать нужно включая вложенные
            if ($cfg['is_subs']) {
                // получаем категорию
                $album = cmsCore::c('db')->getNsCategory('cms_photo_albums', $cfg['album_id']);
                if (!$album) { return false; }

                cmsCore::c('photo')->whereThisAndNestedCats($album['NSLeft'], $album['NSRight']);
            } else {
                cmsCore::c('photo')->whereAlbumIs($cfg['album_id']);
            }
        }

        // если фото клубов не нужны
        if (!$cfg['showclubs']) {
            cmsCore::c('db')->where("f.owner = 'photos'");
        }

        //устанавливаем сортировку
        cmsCore::c('db')->orderBy('f.'.$cfg['sort'], 'DESC');

        // получаем фото
        $photos = cmsCore::c('photo')->getPhotos(false, $cfg['is_full']);
        
        if (empty($photos)) { return false; }
        
        $tpl = $cfg['tpl'];
    } else {
        if ($cfg['sort'] == 'rating') { $cfg['sort'] = 'hits'; }
        
        $sql = "SELECT u.id uid, u.nickname author, u.login as login, f.title, f.id, f.album_id, pr.gender gender, f.imageurl as file, f.pubdate, a.title as album_title FROM cms_user_photos f
		INNER JOIN cms_user_albums a ON a.id = f.album_id
                LEFT JOIN cms_users u ON u.id = f.user_id
                LEFT JOIN cms_user_profiles pr ON pr.user_id = u.id
                WHERE f.allow_who='all' AND u.is_deleted = 0 AND u.is_locked = 0
                      AND f.album_id > 0 AND a.allow_who = 'all'
                      ". cmsCore::c('db')->where ."
                ORDER BY f.". $cfg['sort'] ." DESC \n";

        if (cmsCore::c('db')->limit) {
            $sql .= "LIMIT ". cmsCore::c('db')->limit;
        }

        $result = cmsCore::c('db')->query($sql);

        cmsCore::c('db')->resetConditions();

        if (!cmsCore::c('db')->num_rows($result)) { return false; }

        $photos = array();

        while ($photo = cmsCore::c('db')->fetch_assoc($result)) {
            if ($cfg['is_full']) {
                $photo['comments'] = cmsCore::getCommentsCount('userphoto', $photo['id']);
            }

            $photo['pubdate'] = cmsCore::dateFormat($photo['pubdate'], false, false, false);
            $photos[] = $photo;
        }
        
        cmsCore::callEvent('GET_PHOTOS', $photos);
        
        $tpl = 'mod_user_photo';
    }
    
    cmsPage::initTemplate('modules', $tpl)->
        assign('photos', $photos)->
        assign('cfg', $cfg)->
        display();

    return true;
}
Example #11
0
 /**
  * Возвращает html стены пользователя
  * @param int $selected
  * @param array $exclude
  * @return html
  */
 public static function getUserWall($target_id, $component = 'users', $my_profile = 0, $is_admin = 0)
 {
     $inDB = cmsDatabase::getInstance();
     $inUser = self::getInstance();
     cmsCore::loadLanguage('components/' . $component);
     if (!$my_profile && !$is_admin) {
         $my_profile = $inUser->is_admin;
     }
     $records = array();
     //получаем общее число записей на стене этого пользователя
     $total = $inDB->rows_count('cms_user_wall', "user_id = '{$target_id}' AND usertype = '{$component}'");
     if ($total) {
         $sql = "SELECT w.*, g.gender, g.imageurl, u.nickname as author, u.login as author_login, u.is_deleted, w.pubdate\n                    FROM cms_user_wall w\n\t\t\t\t\tINNER JOIN cms_users u ON u.id = w.author_id\n\t\t\t\t\tINNER JOIN cms_user_profiles g ON g.user_id = u.id\n                    WHERE w.user_id = '{$target_id}' AND w.usertype = '{$component}'\n                    ORDER BY w.pubdate DESC\n";
         if ($inDB->limit) {
             $sql .= "LIMIT {$inDB->limit}";
         }
         $result = $inDB->query($sql);
         $inDB->resetConditions();
         while ($record = $inDB->fetch_assoc($result)) {
             $record['is_today'] = time() - strtotime($record['pubdate']) < 86400;
             $record['fpubdate'] = $record['is_today'] ? cmsCore::dateDiffNow($record['pubdate']) : cmsCore::dateFormat($record['pubdate']);
             $record['avatar'] = cmsUser::getUserAvatarUrl($record['author_id'], 'small', $record['imageurl'], $record['is_deleted']);
             $records[] = $record;
         }
         $records = cmsCore::callEvent('GET_WALL_POSTS', $records);
     }
     ob_start();
     cmsPage::initTemplate('components', 'com_users_wall')->assign('records', $records)->assign('user_id', $inUser->id)->assign('target_id', $target_id)->assign('my_profile', $my_profile)->assign('is_admin', $is_admin)->assign('component', $component)->assign('total', $total)->assign('pagebar', cmsPage::getPagebar($total, $inDB->page, $inDB->perpage, 'javascript:wallPage(%page%)'))->display('com_users_wall.tpl');
     return ob_get_clean();
 }
Example #12
0
    /**
     * Получаем статьи по заданным параметрам
     * @return array
     */
    public function getArticlesList($only_published=true) {
        $today = date("Y-m-d H:i:s");

        if ($only_published) {
            cmsCore::c('db')->where("con.published = 1 AND con.pubdate <= '". $today ."'");
        }

        $sql = "SELECT con.*,
                    con.pubdate as fpubdate,
                    cat.title as cat_title, cat.seolink as catseolink,
                    cat.showdesc,
                    u.nickname as author,
                    u.login as user_login
                FROM cms_content con
                INNER JOIN cms_category cat ON cat.id = con.category_id
                LEFT JOIN cms_users u ON u.id = con.user_id
                WHERE con.is_arhive = 0
                ". cmsCore::c('db')->where ."
                ". cmsCore::c('db')->group_by ."
                ". cmsCore::c('db')->order_by. "\n";

        if (cmsCore::c('db')->limit) {
            $sql .= "LIMIT ". cmsCore::c('db')->limit;
        }

        $result = cmsCore::c('db')->query($sql);

        cmsCore::c('db')->resetConditions();

        if (!cmsCore::c('db')->num_rows($result)) { return false; }

        while ($article = cmsCore::c('db')->fetch_assoc($result)) {
            $article['fpubdate'] = cmsCore::dateFormat($article['fpubdate']);
            $article['tagline']  = cmsTagLine('content', $article['id'], true);
            $article['comments'] = cmsCore::getCommentsCount('article', $article['id']);
            $article['url']      = $this->getArticleURL(null, $article['seolink']);
            $article['cat_url']  = $this->getCategoryURL(null, $article['catseolink']);
            
            if (file_exists(PATH .'/images/content/medium/'. ceil($article['id']/100) .'/article'. $article['id' ] .'.jpg')) {
                $article['image'] = '/images/content/medium/'. ceil($article['id']/100) .'/article'. $article['id' ] .'.jpg';
                $article['image_small'] = '/images/content/small/'. ceil($article['id']/100) .'/article'. $article['id' ] .'.jpg';
            }
            
            if (!empty($article['images'])) { $article['images'] = json_decode($article['images'], true); }
            
            $articles[] = $article;
        }

        $articles = cmsCore::callEvent('GET_ARTICLES', $articles);

        return $articles;
    }
Example #13
0
 /**
  * Возвращает массив фотографий по заданным условиям
  * @param bool $show_all
  * @param bool $is_rating
  * @return array $photos
  */
 public function getPhotos($show_all = false, $is_comments_count = false)
 {
     $pub_where = $show_all ? '1=1' : 'f.published = 1';
     $sql = "SELECT f.* {$this->inDB->select}\r\n\r\n                FROM cms_photo_files f\r\n\t\t\t\t{$this->inDB->join}\r\n                WHERE {$pub_where}\r\n                      {$this->inDB->where}\r\n\r\n                {$this->inDB->group_by}\r\n\r\n                {$this->inDB->order_by}\n";
     if ($this->inDB->limit) {
         $sql .= "LIMIT {$this->inDB->limit}";
     }
     $result = $this->inDB->query($sql);
     $this->inDB->resetConditions();
     if (!$this->inDB->num_rows($result)) {
         return false;
     }
     $photos = array();
     while ($photo = $this->inDB->fetch_assoc($result)) {
         if ($is_comments_count) {
             $photo['comments'] = cmsCore::getCommentsCount($photo['owner'] == 'photos' ? 'photo' : 'club_photo', $photo['id']);
         }
         $photo['pubdate'] = cmsCore::dateFormat($photo['pubdate'], false, false, false);
         $photos[] = $photo;
     }
     return cmsCore::callEvent('GET_PHOTOS', $photos);
 }
Example #14
0
 public function getRecord($item_id)
 {
     $this->deleteOldRecords();
     $this->clearOldVips();
     $sql = "SELECT i.*,\r\n                       a.id as cat_id,\r\n\t\t\t\t\t   a.form_id,\r\n                       a.NSLeft as NSLeft,\r\n                       a.NSRight as NSRight,\r\n                       a.title as cat_title,\r\n                       a.title as category,\r\n                       a.public as public,\r\n                       a.thumb1 as thumb1,\r\n                       a.thumb2 as thumb2,\r\n                       a.thumbsqr as thumbsqr,\r\n                       u.nickname as user,\r\n                       u.is_deleted as user_is_deleted,\r\n                       u.login as user_login\r\n                FROM cms_board_items i\r\n\t\t\t\tINNER JOIN cms_board_cats a ON a.id = i.category_id\r\n\t\t\t\tLEFT JOIN cms_users u ON u.id = i.user_id\r\n                WHERE i.id = '{$item_id}'";
     $result = $this->inDB->query($sql);
     if (!$this->inDB->num_rows($result)) {
         return false;
     }
     $record = $this->inDB->fetch_assoc($result);
     $timedifference = strtotime("now") - strtotime($record['pubdate']);
     $record['is_overdue'] = round($timedifference / 86400) > $record['pubdays'] && $record['pubdays'] > 0;
     $record['fpubdate'] = $record['pubdate'];
     $record['pubdate'] = cmsCore::dateFormat($record['pubdate']);
     $record['vipdate'] = cmsCore::dateFormat($record['vipdate']);
     $record['enc_city'] = urlencode($record['city']);
     $record['moderator'] = $this->checkAccess($record['user_id']);
     if (!$record['file'] || !file_exists(PATH . '/images/board/small/' . $record['file'])) {
         $record['file'] = '';
     }
     if (!$record['formsdata']) {
         $record['form_array'] = array();
     } else {
         $record['form_array'] = cmsCore::yamlToArray($record['formsdata']);
     }
     return cmsCore::callEvent('GET_BOARD_RECORD', $record);
 }
Example #15
0
 /**
  * Получаем комментарии по заданным параметрам
  * @return array
  */
 public function getComments($only_published = true, $is_tree = false, $from_module = false)
 {
     $inUser = cmsUser::getInstance();
     $comments = array();
     global $_LANG;
     $published = $only_published ? 'c.published = 1' : '1=1';
     $sql = "SELECT c.*,\r\n\t\t\t\t\t   IFNULL(u.nickname, 0) as nickname,\r\n\t\t\t\t\t   IFNULL(u.login, 0) as login,\r\n\t\t\t\t\t   IFNULL(u.is_deleted, 0) as is_deleted,\r\n\t\t\t\t\t   IFNULL(p.imageurl, 0) as imageurl,\r\n\t\t\t\t\t   IFNULL(p.gender, 0) as gender\r\n                FROM cms_comments c\r\n\t\t\t\tLEFT JOIN cms_users u ON u.id = c.user_id\r\n\t\t\t\tLEFT JOIN cms_user_profiles p ON p.user_id = u.id\r\n                WHERE {$published}\r\n\t\t\t\t\t{$this->inDB->where}\r\n\r\n                {$this->inDB->group_by}\r\n\r\n                {$this->inDB->order_by}\n";
     if ($this->inDB->limit) {
         $sql .= "LIMIT {$this->inDB->limit}";
     }
     $result = $this->inDB->query($sql);
     $this->inDB->resetConditions();
     if (!$this->inDB->num_rows($result)) {
         return array();
     }
     while ($comment = $this->inDB->fetch_assoc($result)) {
         $comment['level'] = 0;
         $comment['is_editable'] = $this->isEditable($comment['pubdate']);
         $comment['fpubdate'] = cmsCore::dateFormat($comment['pubdate'], true, true);
         if ($comment['guestname']) {
             $comment['author'] = $comment['guestname'];
             $comment['is_profile'] = false;
             $comment['ip'] = in_array($this->config['cmm_ip'], array(1, 2)) ? $comment['ip'] : '';
         } else {
             $comment['author']['nickname'] = $comment['nickname'];
             $comment['author']['login'] = $comment['login'];
             $comment['is_profile'] = true;
             $comment['user_image'] = cmsUser::getUserAvatarUrl($comment['user_id'], 'small', $comment['imageurl'], $comment['is_deleted']);
             $comment['ip'] = $this->config['cmm_ip'] == 2 && $comment['ip'] ? $comment['ip'] : '';
         }
         switch ($comment['gender']) {
             case 'm':
                 $comment['gender'] = $_LANG['COMMENTS_MALE'];
                 break;
             case 'f':
                 $comment['gender'] = $_LANG['COMMENTS_FEMALE'];
                 break;
             default:
                 $comment['gender'] = $_LANG['COMMENTS_GENDER'];
         }
         $comment['show'] = !$this->config['min_karma'] || $comment['rating'] >= $this->config['min_karma_show'] || cmsUser::userIsAdmin($comment['user_id']);
         $comment['is_my'] = $inUser->id == $comment['user_id'];
         if ($inUser->id) {
             $comment['is_voted'] = $comment['is_my'] ? true : cmsUser::isRateUser('comment', $inUser->id, $comment['id']);
         } else {
             $comment['is_voted'] = true;
         }
         $comments[] = $comment;
     }
     if ($is_tree) {
         $comments = $this->buildTree(0, 0, $comments);
     }
     return $from_module ? cmsCore::callEvent('GET_COMMENTS_MODULE', $comments) : cmsCore::callEvent('GET_COMMENTS', $comments);
 }
Example #16
0
 /**
  * Получаем статьи по id категориям
  * @return array
  */
 public function getArticlesList2($only_published = true, $cat_id = '1')
 {
     $today = date("Y-m-d H:i:s");
     if ($only_published) {
         $this->inDB->where("con.published = 1 AND con.pubdate <= '{$today}' AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '{$today}')) AND con.category_id = '{$cat_id}'");
     }
     $sql = "SELECT con.*,\n                       con.pubdate as fpubdate,\n\t\t\t\t\t   cat.title as cat_title, cat.seolink as catseolink,\n\t\t\t\t\t   cat.showdesc, cat.description as catdescription,\n                       u.nickname as author,\n                       u.login as user_login\n                FROM cms_content con\n\t\t\t\tINNER JOIN cms_category cat ON cat.id = con.category_id\n\t\t\t\tLEFT JOIN cms_users u ON u.id = con.user_id\n                WHERE con.is_arhive = 0\n                      {$this->inDB->where}\n\n                {$this->inDB->group_by}\n\n                ORDER BY con.ordering\n";
     if ($this->inDB->limit) {
         $sql .= "LIMIT {$this->inDB->limit}";
     }
     $result = $this->inDB->query($sql);
     $this->inDB->resetConditions();
     if (!$this->inDB->num_rows($result)) {
         return false;
     }
     while ($article = $this->inDB->fetch_assoc($result)) {
         $article['fpubdate'] = cmsCore::dateFormat($article['fpubdate']);
         $article['tagline'] = cmsTagLine('content', $article['id'], true);
         $article['comments'] = cmsCore::getCommentsCount('article', $article['id']);
         $article['url'] = $this->getArticleURL(null, $article['seolink']);
         $article['cat_url'] = $this->getCategoryURL(null, $article['catseolink']);
         if (isset($_SESSION['lang']) && $_SESSION['lang'] != 'ru') {
             $article['image'] = file_exists(PATH . '/images/photos/small/article' . $article['id'] . '_' . $_SESSION['lang'] . '.jpg') ? 'article' . $article['id'] . '_' . $_SESSION['lang'] . '.jpg' : '';
         } else {
             $article['image'] = file_exists(PATH . '/images/photos/small/article' . $article['id'] . '.jpg') ? 'article' . $article['id'] . '.jpg' : '';
         }
         $articles[] = $article;
     }
     $articles = cmsCore::callEvent('GET_ARTICLES', $articles);
     return $articles;
 }
Example #17
0
    /**
     * Возвращает массив фотографий по заданным условиям
     * @param bool $show_all
     * @param bool $is_rating
     * @return array $photos
     */
    public function getPhotos($show_all = false, $is_comments_count = false){
        $pub_where = ($show_all ? '1=1' : 'f.published = 1');

        $sql = "SELECT f.* ". cmsCore::c('db')->select ."
                        FROM cms_photo_files f
                        ". cmsCore::c('db')->join ."
                        WHERE ". $pub_where ."
                        ". cmsCore::c('db')->where ."
                        ". cmsCore::c('db')->group_by ."
                        ". cmsCore::c('db')->order_by ."\n";

        if (cmsCore::c('db')->limit){
            $sql .= "LIMIT ". cmsCore::c('db')->limit;
        }

        $result = cmsCore::c('db')->query($sql);

        cmsCore::c('db')->resetConditions();

        if(!cmsCore::c('db')->num_rows($result)){ return false; }

        $photos = array();

        while ($photo = cmsCore::c('db')->fetch_assoc($result)){
            if($is_comments_count){
                $photo['comments'] = cmsCore::getCommentsCount(($photo['owner']=='photos' ? 'photo' : 'club_photo'), $photo['id']);
            }
            $photo['pubdate'] = cmsCore::dateFormat($photo['pubdate'], false, false, false);
            $photos[] = $photo;
        }

        return cmsCore::callEvent('GET_PHOTOS', $photos);
    }
Example #18
0
    /**
     * Получает массив результатов поиска (постранично)
     * выполняя подсветку искомых слов
     * @return array $rs
     */
    public function getResults() {
        $sql = "SELECT pubdate, title, description, link, place, placelink, imageurl
                FROM cms_search
                    WHERE 1=1 ". cmsCore::c('db')->where ."
                    ". cmsCore::c('db')->group_by ."
                    ". cmsCore::c('db')->order_by ."
		LIMIT ". (($this->page-1)*$this->config['perpage']) .", ". $this->config['perpage'];

        $result = cmsCore::c('db')->query($sql);

        cmsCore::c('db')->resetConditions();

        if (!cmsCore::c('db')->num_rows($result)) { return false; }

        $rs = array();

        while ($res = cmsCore::c('db')->fetch_assoc($result)) {
            $res['pubdate'] = $res['pubdate'] ? cmsCore::dateFormat($res['pubdate'], true, false, false) : '';
            // заголовок с учетом подсветки слов поиска
            $res['s_title'] = $this->getHighlightedText($res['title']);
            // описание с учетом подсветки слов поиска
            $res['description'] = $this->getHighlightedText($res['description']);
            
            $rs[] = $res;
        }

        return cmsCore::callEvent('GET_SEARCH_RESULT', $rs);
    }
Example #19
0
 /**
  * Возвращает массив событий для ленты активности
  * @return array
  */
 public function getActionsLog()
 {
     $inUser = cmsUser::getInstance();
     if (!$this->only_friends) {
         $this->inDB->where('log.is_friends_only = 0');
     }
     if (!$inUser->id) {
         $this->inDB->where('log.is_users_only = 0');
     }
     $pactions = cmsCore::callEvent('GET_BEFORE_ACTIONS', false);
     if ($pactions !== false) {
         return $pactions;
     }
     $sql = "SELECT log.*,\r\n\t\t               log.pubdate as orig_pubdate,\r\n                       a.message,\r\n                       a.name,\r\n                       u.nickname as user_nickname,\r\n                       u.login as user_login\r\n                FROM cms_actions_log log\r\n                LEFT JOIN cms_actions a ON a.id = log.action_id AND a.is_visible = 1\r\n                LEFT JOIN cms_users u ON u.id = log.user_id\r\n                WHERE 1=1 {$this->inDB->where}\r\n                ORDER BY log.id DESC\r\n\t\t\t\t";
     if ($this->inDB->limit) {
         $sql .= "LIMIT {$this->inDB->limit}";
     }
     $result = $this->inDB->query($sql);
     // Сбрасываем условия
     $this->inDB->resetConditions();
     if (!$this->inDB->num_rows($result)) {
         return false;
     }
     $actions = array();
     global $_LANG;
     $last_date = '';
     $today_date = date('j F Y');
     $yesterday_date = date('j F Y', time() - 3600 * 24);
     while ($action = $this->inDB->fetch_assoc($result)) {
         $action['item_date'] = '';
         $item_date = date('j F Y', strtotime($action['orig_pubdate']));
         if ($item_date != $last_date) {
             switch ($item_date) {
                 case $today_date:
                     $date = icms_ucfirst($_LANG['TODAY']);
                     break;
                 case $yesterday_date:
                     $date = icms_ucfirst($_LANG['YESTERDAY']);
                     break;
                 default:
                     $date = cmsCore::dateFormat($item_date, true, false, false);
             }
             $action['item_date'] = $date;
             $last_date = $item_date;
         }
         $action['object_link'] = $action['target_link'] = '';
         if ($action['object']) {
             $action['object_link'] = $action['object_url'] ? '<a href="' . $action['object_url'] . '" class="act_obj_' . $action['name'] . '">' . $action['object'] . '</a>' : $action['object'];
         }
         if ($action['target']) {
             $action['target_link'] = '<a href="' . $action['target_url'] . '" class="act_tgt_' . $action['name'] . '">' . $action['target'] . '</a>';
         }
         if ($action['message']) {
             $target_pos = mb_strpos($action['message'], '|');
             if ($target_pos !== false) {
                 if (!$this->show_targets || !$action['target']) {
                     $action['message'] = mb_substr($action['message'], 0, $target_pos);
                 } else {
                     $action['message'] = str_replace('|', '', $action['message']);
                 }
             }
             $action['message'] = sprintf($action['message'], $action['object_link'], $action['target_link']);
         }
         $action['is_new'] = (bool) (strtotime($action['pubdate']) > strtotime($inUser->logdate));
         $action['user_url'] = cmsUser::getProfileURL($action['user_login']);
         $action['pubdate'] = cmsCore::dateDiffNow($action['pubdate']);
         $actions[] = $action;
     }
     return cmsCore::callEvent('GET_ACTIONS', $actions);
 }
Example #20
0
function applet_tickets()
{
    global $adminAccess;
    if (!cmsUser::isAdminCan('admin/tickets', $adminAccess)) {
        cpAccessDenied();
    }
    global $_LANG;
    cmsUser::sessionDel('ticket_cat');
    $do = cmsCore::request('do', 'str', 'list');
    $super_user = cmsCore::c('user')->id == 1;
    $toolmenu = array(array('icon' => 'new.gif', 'title' => $_LANG['AD_TICKET_CREATE'], 'link' => '?view=tickets&do=add'), array('icon' => 'liststuff.gif', 'title' => $_LANG['AD_TICKET_LIST'], 'link' => '?view=tickets&do=list'));
    cpToolMenu($toolmenu, 'list', 'do');
    cmsCore::c('page')->setTitle($_LANG['AD_TICKETS']);
    cpAddPathway($_LANG['AD_TICKETS'], 'index.php?view=tickets');
    if ($do == 'list') {
        $fields = array(array('title' => 'id', 'field' => 'id', 'width' => '40'), array('title' => $_LANG['AD_TICKET_STATUS'], 'field' => 'status', 'width' => '100', 'filter' => 1, 'prc' => 'cpTicketStatus', 'filterlist' => cpGetTicketStatusList()), array('title' => $_LANG['AD_TICKET_DATE'], 'field' => 'pubdate', 'width' => '80'), array('title' => $_LANG['AD_TICKET_TITLE'], 'field' => 'title', 'width' => '', 'filter' => 32, 'link' => 'index.php?view=tickets&do=view&id=%id%'), array('title' => $_LANG['AD_TICKET_LAST_MSG_DATE'], 'field' => 'last_msg_date', 'width' => '80'), array('title' => $_LANG['AD_TICKET_CAT'], 'field' => 'cat_id', 'width' => '150', 'filter' => 1, 'prc' => 'cpTicketCategory', 'filter' => 1, 'filterlist' => cpGetTicketCats()), array('title' => $_LANG['AD_TICKET_PRIORITY'], 'field' => 'priority', 'width' => '100', 'filter' => 1, 'prc' => 'cpTicketPriority', 'filterlist' => cpGetTicketPriorityList()));
        if ($super_user) {
            $fields[] = array('title' => $_LANG['AD_TICKET_USER'], 'field' => 'user_id', 'width' => '110', 'prc' => 'cpTicketAuthor');
        }
        $actions = array(array('title' => $_LANG['AD_TICKET_CLOSE'], 'icon' => 'off.gif', 'link' => '?view=tickets&do=close_ticket&id=%id%', 'condition' => 'cpCheckTicketClose'), array('title' => $_LANG['DELETE'], 'icon' => 'delete.gif', 'link' => '?view=tickets&do=delete&id=%id%', 'confirm' => $_LANG['AD_TICKET_DELETE']));
        cpListTable('cms_ticket', $fields, $actions, $super_user ? '' : 'user_id=' . cmsCore::c('user')->id, 'last_msg_date DESC', 30);
    }
    if ($do == 'delete') {
        $id = cmsCore::request('id', 'int', 0);
        $item = cmsCore::c('db')->get_fields('cms_ticket', 'id=' . $id, '*');
        if (!empty($item)) {
            $server = cmsCore::c('db')->get_field('cms_ticket_cat', 'id=' . $item['cat_id'], 'server');
            if (empty($server)) {
                $server = 'http://ds-soft.ru/tickets.api.php';
            }
            //Удаляем сам тиккет
            cmsCore::c('db')->delete('cms_ticket', 'id=' . $item['id']);
            //Удаляем все сообщения тиккета
            cmsCore::c('db')->delete('cms_ticket_msg', 'ticket_id=' . $item['id']);
            //Удаляем все прикрепленные изображения тиккета
            cmsCore::deleteUploadImages($item['id'], 'ticket');
            if ($item['status'] != '3') {
                //Отправляем сообщение на сервер техподдержки что тикет удален
                cmsCore::c('curl')->ajax()->request('post', $server . '?do=ticket_deleted', array('ticket_id' => $item['id'], 'ticket_secret_key' => $item['secret_key'], 'host' => cmsCore::c('config')->host));
            }
            cmsCore::addSessionMessage($_LANG['AD_TICKET_DELETE_SUCCESS'], 'success');
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
        }
        cmsCore::redirect('index.php?view=tickets');
    }
    if ($do == 'close_ticket') {
        $id = cmsCore::request('id', 'int', 0);
        $item = cmsCore::c('db')->get_fields('cms_ticket', 'id=' . $id, '*');
        if (!empty($item)) {
            cmsCore::c('db')->setFlag('cms_ticket', $item['id'], 'status', '3');
            $server = cmsCore::c('db')->get_field('cms_ticket_cat', 'id=' . $item['cat_id'], 'server');
            if (empty($server)) {
                $server = 'http://ds-soft.ru/tickets.api.php';
            }
            //Отправляем сообщение на сервер техподдержки что тикет закрыт
            cmsCore::c('curl')->ajax()->request('post', $server . '?do=ticket_closed', array('ticket_id' => $item['id'], 'ticket_secret_key' => $item['secret_key'], 'host' => cmsCore::c('config')->host));
            cmsCore::addSessionMessage($_LANG['AD_TICKET_CLOSE_SUCCESS'], 'success');
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
        }
        cmsCore::redirect('index.php?view=tickets');
    }
    if ($do == 'add') {
        cpAddPathway($_LANG['AD_TICKET_CREATE'], 'index.php?view=tickets&do=add');
        cmsCore::c('page')->initTemplate('applets', 'tickets_add')->assign('cats', cpGetTicketCats())->display();
    }
    if ($do == 'submit') {
        $cats = cpGetTicketCats();
        $item = array('cat_id' => cmsCore::request('cat_id', 'int', 0), 'priority' => cmsCore::request('priority', array(0, 1, 2, 3), 0), 'title' => cmsCore::request('title', 'str', ''), 'msg' => cmsCore::request('msg', 'str', ''));
        if (!isset($cats[$item['cat_id']])) {
            $item['cat_id'] = 0;
        }
        if (!empty($item['title']) && !empty($item['msg'])) {
            $item['msg'] = cmsCore::c('db')->escape_string($item['msg']);
            $item['msg_count'] = 1;
            $item['pubdate'] = date('Y-m-d H:i:s');
            $item['last_msg_date'] = $item['pubdate'];
            $item['user_id'] = cmsCore::c('user')->id;
            $item['id'] = cmsCore::c('db')->insert('cms_ticket', $item);
            cmsCore::addSessionMessage($_LANG['AD_TICKET_CREATED'], 'success');
            $do = 'send';
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR_2'], 'error');
            cmsCore::redirect('index.php?view=tickets&do=add');
        }
    }
    if ($do == 'send') {
        if (empty($item)) {
            $id = cmsCore::request('id', 'int', 0);
            $item = cmsCore::c('db')->get_fields('cms_ticket', 'id=' . $id, '*');
        }
        if (!empty($item)) {
            $cat = cmsCore::c('db')->get_fields('cms_ticket_cat', 'id=' . $item['cat_id'], '*');
            $server = !empty($cat['server']) ? $cat['server'] : 'http://ds-soft.ru/tickets.api.php';
            $ticket = array('ticket_id' => $item['id'], 'cat_id' => $item['cat_id'], 'priority' => $item['priority'], 'title' => $item['title'], 'msg' => $item['msg'], 'host' => cmsCore::c('config')->host, 'module' => $cat['module']);
            if ($ticket['cat_id'] > 0 && !empty($cat['module'])) {
                $ticket['module'] = $cat['module'];
            }
            //Отправляем тикет на сервер техподдержки
            $result = cmsCore::c('curl')->ajax()->request('post', $server . '?do=add_ticket', $ticket)->json();
            if (!empty($result['error'])) {
                cmsCore::clearSessionMessages();
                cmsCore::addSessionMessage($result['error'], 'error');
                cmsCore::c('db')->delete('cms_ticket', 'id=' . $item['id']);
            } else {
                if (isset($result['secret_key'])) {
                    cmsCore::c('db')->update('cms_ticket', array('status' => 1, 'secret_key' => $result['secret_key']), $item['id']);
                    cmsCore::addSessionMessage($_LANG['AD_TICKET_SENDED'], 'success');
                } else {
                    cmsCore::addSessionMessage($_LANG['AD_TICKET_UNKNOWN_ERROR'], 'error');
                    cmsCore::c('db')->delete('cms_ticket', 'id=' . $item['id']);
                }
            }
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
        }
        cmsCore::redirect('index.php?view=tickets');
    }
    if ($do == 'view') {
        $id = cmsCore::request('id', 'int', 0);
        $item = cmsCore::c('db')->get_fields('cms_ticket', 'id=' . $id, '*');
        if (empty($item) || $item['user_id'] != cmsCore::c('user')->id && !$super_user) {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
            cmsCore::redirect('index.php?view=tickets');
        }
        cpAddPathway($item['title'], 'index.php?view=tickets&do=view&id=' . $item['id']);
        if ($item['msg_count'] > 1) {
            $item['msgs'] = array();
            $results = cmsCore::c('db')->query("SELECT * FROM cms_ticket_msg WHERE ticket_id=" . $item['id'] . " ORDER BY pubdate ASC");
            if (cmsCore::c('db')->num_rows($results)) {
                while ($msg = cmsCore::c('db')->fetch_assoc($results)) {
                    $msg['pubdate'] = cmsCore::dateFormat($msg['pubdate']);
                    $item['msgs'][] = $msg;
                }
            }
        }
        if ($item['status'] != 3) {
            switch ($item['priority']) {
                case 0:
                    $class = 'info';
                    break;
                case 1:
                    $class = 'success';
                    break;
                case 2:
                    $class = 'primary';
                    break;
                case 3:
                    $class = 'danger';
                    break;
            }
        } else {
            $class = 'default';
        }
        cmsCore::c('page')->initTemplate('applets', 'tickets_view')->assign('item', $item)->display();
    }
    if ($do == 'submit_msg') {
        $id = cmsCore::request('id', 'int', 0);
        $item = cmsCore::c('db')->get_fields('cms_ticket', 'id=' . $id, '*');
        if (empty($item) || $item['user_id'] != cmsCore::c('user')->id && !$super_user) {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_ERROR'], 'error');
            cmsCore::redirect('index.php?view=tickets');
        }
        $msg = cmsCore::request('msg', 'str', '');
        $date = date('Y-m-d H:i:s');
        cmsCore::c('db')->insert('cms_ticket_msg', array('msg' => cmsCore::c('db')->escape_string($msg), 'ticket_id' => $item['id'], 'pubdate' => $date));
        cmsCore::c('db')->query("UPDATE `cms_tickets` SET `last_msg_date` = '" . $date . "', `msg_count` = `msg_count`+1 WHERE `id` = '" . $item['id'] . "'");
        $server = cmsCore::c('db')->get_field('cms_ticket_cat', 'id=' . $item['cat_id'], 'server');
        if (empty($server)) {
            $server = 'http://ds-soft.ru/tickets.api.php';
        }
        //Отправляем тикет на сервер техподдержки
        $result = cmsCore::c('curl')->ajax()->request('post', $server . '?do=add_ticket_msg', array('msg' => $msg, 'ticket_id' => $item['id'], 'secret_key' => $item['secret_key'], 'host' => cmsCore::c('config')->host))->json();
        if (!empty($result['error'])) {
            cmsCore::addSessionMessage($result['error'], 'error');
        } else {
            cmsCore::addSessionMessage($_LANG['AD_TICKET_MSG_SENDED'], 'success');
        }
        cmsCore::redirect('index.php?view=tickets&do=view&id=' . $item['id']);
    }
}
Example #21
0
 public function getClubPreMembers($club_id, $role = '', $prem = '')
 {
     $club_members = array();
     $role_where = $role ? "AND c.role = '{$role}'" : '';
     $prem_where = $prem ? "AND premoderlist = '{$prem}'" : '';
     $sql = "SELECT c.user_id, c.role, u.nickname, u.login, u.status, u.logdate, p.karma, p.gender, p.imageurl as admin_avatar, u.is_deleted\n\t\t\t\tFROM cms_user_clubs c\n\t\t\t\tLEFT JOIN cms_users u ON u.id = c.user_id\n\t\t\t\tLEFT JOIN cms_user_profiles p ON p.user_id = u.id\n\t\t\t\tWHERE club_id = '{$club_id}' {$role_where} {$prem_where}\n\t\t\t\tORDER BY c.role DESC, u.logdate DESC\n";
     if ($this->inDB->limit) {
         $sql .= "LIMIT {$this->inDB->limit}";
     }
     $rs = $this->inDB->query($sql);
     $this->inDB->resetConditions();
     if (!$this->inDB->num_rows($rs)) {
         return $club_members;
     }
     while ($u = $this->inDB->fetch_assoc($rs)) {
         $u['admin_avatar'] = cmsUser::getUserAvatarUrl($u['user_id'], 'small', $u['admin_avatar'], $u['is_deleted']);
         $u['is_online'] = cmsUser::isOnline($u['user_id']);
         $u['logdate'] = cmsCore::dateFormat($u['logdate'], true, true);
         $club_members[] = $u;
     }
     return $club_members;
 }
Example #22
0
function content()
{
    $inCore = cmsCore::getInstance();
    $inPage = cmsPage::getInstance();
    $inDB = cmsDatabase::getInstance();
    $inUser = cmsUser::getInstance();
    $model = new cms_model_content();
    define('IS_BILLING', $inCore->isComponentInstalled('billing'));
    if (IS_BILLING) {
        cmsCore::loadClass('billing');
    }
    global $_LANG;
    $id = cmsCore::request('id', 'int', 0);
    $do = $inCore->do;
    $seolink = cmsCore::strClear(urldecode(cmsCore::request('seolink', 'html', '')));
    if (is_numeric($seolink)) {
        cmsCore::error404();
    }
    $page = cmsCore::request('page', 'int', 1);
    ///////////////////////////////////// VIEW CATEGORY ////////////////////////////////////////////////////////////////////////////////
    if ($do == 'view') {
        $cat = $inDB->getNsCategory('cms_category', $seolink);
        // если не найдена категория и мы не на главной, 404
        if (!$cat && $inCore->menuId() !== 1) {
            cmsCore::error404();
        }
        // языки
        $cat = translations::process(cmsConfig::getConfig('lang'), 'content_category', $cat);
        // Плагины
        $cat = cmsCore::callEvent('GET_CONTENT_CAT', $cat);
        // Неопубликованные показываем только админам
        if (!$cat['published'] && !$inUser->is_admin) {
            cmsCore::error404();
        }
        // Проверяем доступ к категории
        if (!$inCore->checkUserAccess('category', $cat['id'])) {
            cmsCore::addSessionMessage($_LANG['NO_PERM_FOR_VIEW_TEXT'] . '<br>' . $_LANG['NO_PERM_FOR_VIEW_RULES'], 'error');
            cmsCore::redirect('/content');
        }
        // если не корень категорий
        if ($cat['NSLevel'] > 0) {
            $inPage->setTitle($cat['pagetitle'] ? $cat['pagetitle'] : $cat['title']);
            $pagetitle = $cat['title'];
            $showdate = $cat['showdate'];
            $showcomm = $cat['showcomm'];
            $inPage->addHead('<link rel="alternate" type="application/rss+xml" title="' . htmlspecialchars($cat['title']) . '" href="' . HOST . '/rss/content/' . $cat['id'] . '/feed.rss">');
        }
        // Если корневая категория
        if ($cat['NSLevel'] == 0) {
            if ($model->config['hide_root']) {
                cmsCore::error404();
            }
            $inPage->setTitle($_LANG['CATALOG_ARTICLES']);
            $pagetitle = $_LANG['CATALOG_ARTICLES'];
            $showdate = 1;
            $showcomm = 1;
        }
        // Получаем дерево категорий
        $path_list = $inDB->getNsCategoryPath('cms_category', $cat['NSLeft'], $cat['NSRight'], 'id, title, NSLevel, seolink, url');
        if ($path_list) {
            $path_list = translations::process(cmsConfig::getConfig('lang'), 'content_category', $path_list);
            foreach ($path_list as $pcat) {
                if (!$inCore->checkUserAccess('category', $pcat['id'])) {
                    cmsCore::addSessionMessage($_LANG['NO_PERM_FOR_VIEW_TEXT'] . '<br>' . $_LANG['NO_PERM_FOR_VIEW_RULES'], 'error');
                    cmsCore::redirect('/content');
                }
                $inPage->addPathway($pcat['title'], $model->getCategoryURL(null, $pcat['seolink']));
            }
        }
        // Получаем подкатегории
        $subcats_list = $model->getSubCats($cat['id']);
        // Привязанный фотоальбом
        $cat_photos = $model->getCatPhotoAlbum($cat['photoalbum']);
        // Получаем статьи
        // Редактор/администратор
        $is_editor = $cat['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd') || $inUser->is_admin;
        // Условия
        $model->whereCatIs($cat['id']);
        // Общее количество статей
        $total = $model->getArticlesCount($is_editor);
        // Сортировка и разбивка на страницы
        $inDB->orderBy($cat['orderby'], $cat['orderto']);
        $inDB->limitPage($page, $model->config['perpage']);
        // Получаем статьи
        $content_list = $total ? $model->getArticlesList(!$is_editor) : array();
        $inDB->resetConditions();
        if (!$content_list && $page > 1) {
            cmsCore::error404();
        }
        $pagebar = cmsPage::getPagebar($total, $page, $model->config['perpage'], $model->getCategoryURL(null, $cat['seolink'], 0, true));
        $template = $cat['tpl'] ? $cat['tpl'] : 'com_content_view.tpl';
        if ($cat['NSLevel'] > 0) {
            // meta description
            if ($cat['meta_desc']) {
                $meta_desc = $cat['meta_desc'];
            } elseif (mb_strlen(strip_tags($cat['description'])) >= 250) {
                $meta_desc = crop($cat['description']);
            } else {
                $meta_desc = $cat['title'];
            }
            $inPage->setDescription($meta_desc);
            // meta keywords
            if ($cat['meta_keys']) {
                $meta_keys = $cat['meta_keys'];
            } elseif ($content_list) {
                foreach ($content_list as $c) {
                    $k[] = $c['title'];
                }
                $meta_keys = implode(', ', $k);
            } else {
                $meta_keys = $cat['title'];
            }
            $inPage->setKeywords($meta_keys);
        }
        cmsPage::initTemplate('components', $template)->assign('cat', $cat)->assign('is_homepage', (bool) ($inCore->menuId() == 1))->assign('showdate', $showdate)->assign('showcomm', $showcomm)->assign('pagetitle', $pagetitle)->assign('subcats', $subcats_list)->assign('cat_photos', $cat_photos)->assign('articles', $content_list)->assign('pagebar', $pagebar)->display($template);
    }
    ///////////////////////////////////// READ ARTICLE ////////////////////////////////////////////////////////////////////////////////
    if ($do == 'read') {
        // Получаем статью
        $article = $model->getArticle($seolink);
        if (!$article) {
            cmsCore::error404();
        }
        $article = translations::process(cmsConfig::getConfig('lang'), 'content_content', $article);
        $article = cmsCore::callEvent('GET_ARTICLE', $article);
        $is_admin = $inUser->is_admin;
        $is_author = $inUser->id == $article['user_id'];
        $is_author_del = cmsUser::isUserCan('content/delete');
        $is_editor = $article['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd');
        // если статья не опубликована или дата публикации позже, 404
        if ((!$article['published'] || strtotime($article['pubdate']) > time()) && !$is_admin && !$is_editor && !$is_author) {
            cmsCore::error404();
        }
        if (!$inCore->checkUserAccess('material', $article['id'])) {
            cmsCore::addSessionMessage($_LANG['NO_PERM_FOR_VIEW_TEXT'] . '<br>' . $_LANG['NO_PERM_FOR_VIEW_RULES'], 'error');
            cmsCore::redirect($model->getCategoryURL(null, $article['catseolink']));
        }
        // увеличиваем кол-во просмотров
        if (@(!$is_author)) {
            $inDB->setFlag('cms_content', $article['id'], 'hits', $article['hits'] + 1);
        }
        // Картинка статьи
        $article['image'] = file_exists(PATH . '/images/photos/medium/article' . $article['id'] . '.jpg') ? 'article' . $article['id'] . '.jpg' : '';
        // Заголовок страницы
        $article['pagetitle'] = $article['pagetitle'] ? $article['pagetitle'] : $article['title'];
        // Тело статьи в зависимости от настроек
        $article['content'] = $model->config['readdesc'] ? $article['description'] . $article['content'] : $article['content'];
        // Дата публикации
        $article['pubdate'] = cmsCore::dateFormat($article['pubdate']);
        // Шаблон статьи
        $article['tpl'] = $article['tpl'] ? $article['tpl'] : 'com_content_read.tpl';
        $inPage->setTitle($article['pagetitle']);
        // Получаем дерево категорий
        $path_list = $article['showpath'] ? $inDB->getNsCategoryPath('cms_category', $article['leftkey'], $article['rightkey'], 'id, title, NSLevel, seolink, url') : array();
        if ($path_list) {
            $path_list = translations::process(cmsConfig::getConfig('lang'), 'content_category', $path_list);
            foreach ($path_list as $pcat) {
                if (!$inCore->checkUserAccess('category', $pcat['id'])) {
                    cmsCore::addSessionMessage($_LANG['NO_PERM_FOR_VIEW_TEXT'] . '<br>' . $_LANG['NO_PERM_FOR_VIEW_RULES'], 'error');
                    cmsCore::redirect('/content');
                }
                $inPage->addPathway($pcat['title'], $model->getCategoryURL(null, $pcat['seolink']));
            }
        }
        $inPage->addPathway($article['title']);
        // Мета теги KEYWORDS и DESCRIPTION
        if ($article['meta_keys']) {
            $inPage->setKeywords($article['meta_keys']);
        } else {
            if (mb_strlen($article['content']) > 30) {
                $inPage->setKeywords(cmsCore::getKeywords(cmsCore::strClear($article['content'])));
            }
        }
        if (mb_strlen($article['meta_desc'])) {
            $inPage->setDescription($article['meta_desc']);
        }
        // Выполняем фильтры
        $article['content'] = cmsCore::processFilters($article['content']);
        // Разбивка статей на страницы
        $pt_pages = array();
        if (!empty($GLOBALS['pt'])) {
            foreach ($GLOBALS['pt'] as $num => $page_title) {
                $pt_pages[$num]['title'] = $page_title;
                $pt_pages[$num]['url'] = $model->getArticleURL(null, $article['seolink'], $num + 1);
            }
        }
        // Рейтинг статьи
        if ($model->config['rating'] && $article['canrate']) {
            $karma = cmsKarma('content', $article['id']);
            $karma_points = cmsKarmaFormatSmall($karma['points']);
            $btns = cmsKarmaButtonsText('content', $article['id'], $karma['points'], $is_author);
        }
        cmsPage::initTemplate('components', $article['tpl'])->assign('article', $article)->assign('cfg', $model->config)->assign('page', $page)->assign('is_pages', !empty($GLOBALS['pt']))->assign('pt_pages', $pt_pages)->assign('is_admin', $is_admin)->assign('is_editor', $is_editor)->assign('is_author', $is_author)->assign('is_author_del', $is_author_del)->assign('tagbar', cmsTagBar('content', $article['id']))->assign('karma_points', @$karma_points)->assign('karma_votes', @$karma['votes'])->assign('karma_buttons', @$btns)->display($article['tpl']);
        // Комментарии статьи
        if ($article['published'] && $article['comments'] && $inCore->isComponentInstalled('comments')) {
            cmsCore::includeComments();
            comments('article', $article['id'], array(), $is_author);
        }
    }
    ///////////////////////////////////// ADD ARTICLE //////////////////////////////////////////////////////////////////////////////////
    if ($do == 'addarticle' || $do == 'editarticle') {
        $is_add = cmsUser::isUserCan('content/add');
        // может добавлять статьи
        $is_auto_add = cmsUser::isUserCan('content/autoadd');
        // добавлять статьи без модерации
        if (!$is_add && !$is_auto_add) {
            cmsCore::error404();
        }
        // Для редактирования получаем статью и проверяем доступ
        if ($do == 'editarticle') {
            // Получаем статью
            $item = $model->getArticle($id);
            if (!$item) {
                cmsCore::error404();
            }
            $pubcats = array();
            // доступ к редактированию админам, авторам и редакторам
            if (!$inUser->is_admin && $item['user_id'] != $inUser->id && !($item['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd'))) {
                cmsCore::error404();
            }
        }
        // Для добавления проверяем не вводили ли мы данные ранее
        if ($do == 'addarticle') {
            $item = cmsUser::sessionGet('article');
            if ($item) {
                cmsUser::sessionDel('article');
            }
            // Категории, в которые разрешено публиковать
            $pubcats = $model->getPublicCats();
            if (!$pubcats) {
                cmsCore::addSessionMessage($_LANG['ADD_ARTICLE_ERR_CAT'], 'error');
                cmsCore::redirectBack();
            }
        }
        // не было запроса на сохранение, показываем форму
        if (!cmsCore::inRequest('add_mod')) {
            $dynamic_cost = false;
            // Если добавляем статью
            if ($do == 'addarticle') {
                $pagetitle = $_LANG['ADD_ARTICLE'];
                $inPage->setTitle($pagetitle);
                $inPage->addPathway($_LANG['USERS'], '/' . str_replace('/', '', cmsUser::PROFILE_LINK_PREFIX));
                $inPage->addPathway($inUser->nickname, cmsUser::getProfileURL($inUser->login));
                $inPage->addPathway($_LANG['MY_ARTICLES'], '/content/my.html');
                $inPage->addPathway($pagetitle);
                // поддержка биллинга
                if (IS_BILLING) {
                    $action = cmsBilling::getAction('content', 'add_content');
                    foreach ($pubcats as $p => $pubcat) {
                        if ($pubcat['cost']) {
                            $dynamic_cost = true;
                        } else {
                            $pubcats[$p]['cost'] = $action['point_cost'][$inUser->group_id];
                        }
                    }
                    cmsBilling::checkBalance('content', 'add_content', $dynamic_cost);
                }
            }
            // Если редактируем статью
            if ($do == 'editarticle') {
                $pagetitle = $_LANG['EDIT_ARTICLE'];
                $inPage->setTitle($pagetitle);
                $inPage->addPathway($_LANG['USERS'], '/' . str_replace('/', '', cmsUser::PROFILE_LINK_PREFIX));
                if ($item['user_id'] != $inUser->id) {
                    $user = $inDB->get_fields('cms_users', "id='{$item['user_id']}'", 'login, nickname');
                    $inPage->addPathway($user['nickname'], cmsUser::getProfileURL($user['login']));
                } else {
                    $inPage->addPathway($inUser->nickname, cmsUser::getProfileURL($inUser->login));
                }
                $inPage->addPathway($_LANG['MY_ARTICLES'], '/content/my.html');
                $inPage->addPathway($pagetitle);
                $item['tags'] = cmsTagLine('content', $item['id'], false);
                $item['image'] = file_exists(PATH . '/images/photos/small/article' . $item['id'] . '.jpg') ? 'article' . $item['id'] . '.jpg' : '';
                if (!$is_auto_add) {
                    cmsCore::addSessionMessage($_LANG['ATTENTION'] . ': ' . $_LANG['EDIT_ARTICLE_PREMODER'], 'info');
                }
            }
            $inPage->initAutocomplete();
            $autocomplete_js = $inPage->getAutocompleteJS('tagsearch', 'tags');
            $item = cmsCore::callEvent('PRE_EDIT_ARTICLE', @$item ? $item : array());
            cmsPage::initTemplate('components', 'com_content_edit')->assign('mod', $item)->assign('do', $do)->assign('cfg', $model->config)->assign('pubcats', $pubcats)->assign('pagetitle', $pagetitle)->assign('is_admin', $inUser->is_admin)->assign('is_billing', IS_BILLING)->assign('dynamic_cost', $dynamic_cost)->assign('autocomplete_js', $autocomplete_js)->display('com_content_edit.tpl');
        }
        // Пришел запрос на сохранение статьи
        if (cmsCore::inRequest('add_mod')) {
            $errors = false;
            $article['category_id'] = cmsCore::request('category_id', 'int', 1);
            $article['user_id'] = $item['user_id'] ? $item['user_id'] : $inUser->id;
            $article['title'] = cmsCore::request('title', 'str', '');
            $article['tags'] = cmsCore::request('tags', 'str', '');
            $article['description'] = cmsCore::request('description', 'html', '');
            $article['content'] = cmsCore::request('content', 'html', '');
            $article['description'] = cmsCore::badTagClear($article['description']);
            $article['content'] = cmsCore::badTagClear($article['content']);
            $article['published'] = $is_auto_add ? 1 : 0;
            if ($do == 'editarticle') {
                $article['published'] = $item['published'] == 0 ? $item['published'] : $article['published'];
            }
            $article['pubdate'] = $do == 'editarticle' ? $item['pubdate'] : date('Y-m-d H:i');
            $article['enddate'] = $do == 'editarticle' ? $item['enddate'] : $article['pubdate'];
            $article['is_end'] = $do == 'editarticle' ? $item['is_end'] : 0;
            $article['showtitle'] = $do == 'editarticle' ? $item['showtitle'] : 1;
            $article['meta_desc'] = $do == 'addarticle' ? mb_strtolower($article['title']) : $inDB->escape_string($item['meta_desc']);
            $article['meta_keys'] = $do == 'addarticle' ? $inCore->getKeywords($article['content']) : $inDB->escape_string($item['meta_keys']);
            $article['showdate'] = $do == 'editarticle' ? $item['showdate'] : 1;
            $article['showlatest'] = $do == 'editarticle' ? $item['showlatest'] : 1;
            $article['showpath'] = $do == 'editarticle' ? $item['showpath'] : 1;
            $article['comments'] = $do == 'editarticle' ? $item['comments'] : 1;
            $article['canrate'] = $do == 'editarticle' ? $item['canrate'] : 1;
            $article['pagetitle'] = '';
            if ($do == 'editarticle') {
                $article['tpl'] = $item['tpl'];
            }
            if (mb_strlen($article['title']) < 2) {
                cmsCore::addSessionMessage($_LANG['REQ_TITLE'], 'error');
                $errors = true;
            }
            if (mb_strlen($article['content']) < 10) {
                cmsCore::addSessionMessage($_LANG['REQ_CONTENT'], 'error');
                $errors = true;
            }
            if ($errors) {
                // При добавлении статьи при ошибках сохраняем введенные поля
                if ($do == 'addarticle') {
                    cmsUser::sessionPut('article', $article);
                }
                cmsCore::redirectBack();
            }
            $article['description'] = $inDB->escape_string($article['description']);
            $article['content'] = $inDB->escape_string($article['content']);
            $article = cmsCore::callEvent('AFTER_EDIT_ARTICLE', $article);
            // добавление статьи
            if ($do == 'addarticle') {
                $article_id = $model->addArticle($article);
            }
            // загрузка фото
            $file = 'article' . (@$article_id ? $article_id : $item['id']) . '.jpg';
            if (cmsCore::request('delete_image', 'int', 0)) {
                @unlink(PATH . "/images/photos/small/{$file}");
                @unlink(PATH . "/images/photos/medium/{$file}");
            }
            // Загружаем класс загрузки фото
            cmsCore::loadClass('upload_photo');
            $inUploadPhoto = cmsUploadPhoto::getInstance();
            // Выставляем конфигурационные параметры
            $inUploadPhoto->upload_dir = PATH . '/images/photos/';
            $inUploadPhoto->small_size_w = $model->config['img_small_w'];
            $inUploadPhoto->medium_size_w = $model->config['img_big_w'];
            $inUploadPhoto->thumbsqr = $model->config['img_sqr'];
            $inUploadPhoto->is_watermark = $model->config['watermark'];
            $inUploadPhoto->input_name = 'picture';
            $inUploadPhoto->filename = $file;
            // Процесс загрузки фото
            $inUploadPhoto->uploadPhoto();
            // операции после добавления/редактирования статьи
            // добавление статьи
            if ($do == 'addarticle') {
                // Получаем добавленную статью
                $article = $model->getArticle($article_id);
                if (!$article['published']) {
                    cmsCore::addSessionMessage($_LANG['ARTICLE_PREMODER_TEXT'], 'info');
                    // отсылаем уведомление администраторам
                    $link = '<a href="' . $model->getArticleURL(null, $article['seolink']) . '">' . $article['title'] . '</a>';
                    $message = str_replace('%user%', cmsUser::getProfileLink($inUser->login, $inUser->nickname), $_LANG['MSG_ARTICLE_SUBMIT']);
                    $message = str_replace('%link%', $link, $message);
                    cmsUser::sendMessageToGroup(USER_UPDATER, cmsUser::getAdminGroups(), $message);
                } else {
                    //регистрируем событие
                    cmsActions::log('add_article', array('object' => $article['title'], 'object_url' => $model->getArticleURL(null, $article['seolink']), 'object_id' => $article['id'], 'target' => $article['cat_title'], 'target_url' => $model->getCategoryURL(null, $article['catseolink']), 'target_id' => $article['category_id'], 'description' => ''));
                    if (IS_BILLING) {
                        $category_cost = $article['cost'] === '' ? false : (int) $article['cost'];
                        cmsBilling::process('content', 'add_content', $category_cost);
                    }
                    cmsUser::checkAwards($inUser->id);
                }
                cmsCore::addSessionMessage($_LANG['ARTICLE_SAVE'], 'info');
                cmsCore::redirect('/my.html');
            }
            // Редактирование статьи
            if ($do == 'editarticle') {
                $model->updateArticle($item['id'], $article, true);
                cmsActions::updateLog('add_article', array('object' => $article['title']), $item['id']);
                if (!$article['published']) {
                    $link = '<a href="' . $model->getArticleURL(null, $item['seolink']) . '">' . $article['title'] . '</a>';
                    $message = str_replace('%user%', cmsUser::getProfileLink($inUser->login, $inUser->nickname), $_LANG['MSG_ARTICLE_EDITED']);
                    $message = str_replace('%link%', $link, $message);
                    cmsUser::sendMessageToGroup(USER_UPDATER, cmsUser::getAdminGroups(), $message);
                }
                $mess = $article['published'] ? $_LANG['ARTICLE_SAVE'] : $_LANG['ARTICLE_SAVE'] . ' ' . $_LANG['ARTICLE_PREMODER_TEXT'];
                cmsCore::addSessionMessage($mess, 'info');
                cmsCore::redirect($model->getArticleURL(null, $item['seolink']));
            }
        }
    }
    ///////////////////////// PUBLISH ARTICLE /////////////////////////////////////////////////////////////////////////////
    if ($do == 'publisharticle') {
        if (!$inUser->id) {
            cmsCore::error404();
        }
        $article = $model->getArticle($id);
        if (!$article) {
            cmsCore::error404();
        }
        // Редактор с правами на добавление без модерации или администраторы могут публиковать
        if (!($article['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd')) && !$inUser->is_admin) {
            cmsCore::error404();
        }
        $inDB->setFlag('cms_content', $article['id'], 'published', 1);
        cmsCore::callEvent('ADD_ARTICLE_DONE', $article);
        if (IS_BILLING) {
            $author = $inDB->get_fields('cms_users', "id='{$article['user_id']}'", '*');
            $category_cost = $article['cost'] === '' ? false : (int) $article['cost'];
            cmsBilling::process('content', 'add_content', $category_cost, $author);
        }
        //регистрируем событие
        cmsActions::log('add_article', array('object' => $article['title'], 'user_id' => $article['user_id'], 'object_url' => $model->getArticleURL(null, $article['seolink']), 'object_id' => $article['id'], 'target' => $article['cat_title'], 'target_url' => $model->getCategoryURL(null, $article['catseolink']), 'target_id' => $article['cat_id'], 'description' => ''));
        $link = '<a href="' . $model->getArticleURL(null, $article['seolink']) . '">' . $article['title'] . '</a>';
        $message = str_replace('%link%', $link, $_LANG['MSG_ARTICLE_ACCEPTED']);
        cmsUser::sendMessage(USER_UPDATER, $article['user_id'], $message);
        cmsUser::checkAwards($article['user_id']);
        cmsCore::redirectBack();
    }
    ///////////////////////////////////// DELETE ARTICLE ///////////////////////////////////////////////////////////////////////////////////
    if ($do == 'deletearticle') {
        if (!$inUser->id) {
            cmsCore::error404();
        }
        $article = $model->getArticle($id);
        if (!$article) {
            cmsCore::error404();
        }
        // права доступа
        $is_author = cmsUser::isUserCan('content/delete') && $article['user_id'] == $inUser->id;
        $is_editor = $article['modgrp_id'] == $inUser->group_id && cmsUser::isUserCan('content/autoadd');
        if (!$is_author && !$is_editor && !$inUser->is_admin) {
            cmsCore::error404();
        }
        if (!cmsCore::inRequest('goadd')) {
            $inPage->setTitle($_LANG['ARTICLE_REMOVAL']);
            $inPage->addPathway($_LANG['ARTICLE_REMOVAL']);
            $confirm['title'] = $_LANG['ARTICLE_REMOVAL'];
            $confirm['text'] = $_LANG['ARTICLE_REMOVAL_TEXT'] . ' <a href="' . $model->getArticleURL(null, $article['seolink']) . '">' . $article['title'] . '</a>?';
            $confirm['action'] = $_SERVER['REQUEST_URI'];
            $confirm['yes_button'] = array();
            $confirm['yes_button']['type'] = 'submit';
            $confirm['yes_button']['name'] = 'goadd';
            cmsPage::initTemplate('components', 'action_confirm')->assign('confirm', $confirm)->display('action_confirm.tpl');
        } else {
            $model->deleteArticle($article['id']);
            if ($_SERVER['HTTP_REFERER'] == '/my.html') {
                cmsCore::addSessionMessage($_LANG['ARTICLE_DELETED'], 'info');
                cmsCore::redirectBack();
            } else {
                // если удалили как администратор или редактор и мы не авторы статьи, отсылаем сообщение автору
                if (($is_editor || $inUser->is_admin) && $article['user_id'] != $inUser->id) {
                    $link = '<a href="' . $model->getArticleURL(null, $article['seolink']) . '">' . $article['title'] . '</a>';
                    $message = str_replace('%link%', $link, $article['published'] ? $_LANG['MSG_ARTICLE_DELETED'] : $_LANG['MSG_ARTICLE_REJECTED']);
                    cmsUser::sendMessage(USER_UPDATER, $article['user_id'], $message);
                } else {
                    cmsCore::addSessionMessage($_LANG['ARTICLE_DELETED'], 'info');
                }
                cmsCore::redirect($model->getCategoryURL(null, $article['catseolink']));
            }
        }
    }
    ///////////////////////////////////// MY ARTICLES ///////////////////////////////////////////////////////////////////////////////////
    if ($do == 'my') {
        if (!cmsUser::isUserCan('content/add')) {
            cmsCore::error404();
        }
        $inPage->setTitle($_LANG['MY_ARTICLES']);
        $inPage->addPathway($_LANG['USERS'], '/' . str_replace('/', '', cmsUser::PROFILE_LINK_PREFIX));
        $inPage->addPathway($inUser->nickname, cmsUser::getProfileURL($inUser->login));
        $inPage->addPathway($_LANG['MY_ARTICLES']);
        $perpage = 15;
        // Условия
        $model->whereUserIs($inUser->id);
        // Общее количество статей
        $total = $model->getArticlesCount(false);
        // Сортировка и разбивка на страницы
        $inDB->orderBy('con.pubdate', 'DESC');
        $inDB->limitPage($page, $perpage);
        // Получаем статьи
        $content_list = $total ? $model->getArticlesList(false) : array();
        $inDB->resetConditions();
        cmsPage::initTemplate('components', 'com_content_my')->assign('articles', $content_list)->assign('total', $total)->assign('user_can_delete', cmsUser::isUserCan('content/delete'))->assign('pagebar', cmsPage::getPagebar($total, $page, $perpage, '/content/my%page%.html'))->display('com_content_my.tpl');
    }
    ///////////////////////////////////// BEST ARTICLES ///////////////////////////////////////////////////////////////////////////////////
    if ($do == 'best') {
        $inPage->setTitle($_LANG['ARTICLES_RATING']);
        $inPage->addPathway($_LANG['ARTICLES_RATING']);
        // Только статьи, за которые можно голосовать
        $inDB->where("con.canrate = 1");
        // Сортировка и разбивка на страницы
        $inDB->orderBy('con.rating', 'DESC');
        $inDB->limitPage(1, 30);
        // Получаем статьи
        $content_list = $model->getArticlesList();
        cmsPage::initTemplate('components', 'com_content_rating')->assign('articles', $content_list)->display('com_content_rating.tpl');
    }
}
Example #23
0
 /**
  * Получаем статьи по заданным параметрам
  * @return array
  */
 public function getArticlesList($only_published = true)
 {
     $today = date("Y-m-d H:i:s");
     if ($only_published) {
         $this->inDB->where("con.published = 1 AND con.pubdate <= '{$today}' AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '{$today}'))");
     }
     $sql = "SELECT con.*,\r\n\t\t\t\t\t   cat.title as cat_title, cat.seolink as catseolink,\r\n\t\t\t\t\t   cat.showdesc,\r\n                       u.nickname as author,\r\n                       u.login as user_login\r\n                FROM cms_content con\r\n\t\t\t\tINNER JOIN cms_category cat ON cat.id = con.category_id\r\n\t\t\t\tLEFT JOIN cms_users u ON u.id = con.user_id\r\n                WHERE con.is_arhive = 0\r\n                      {$this->inDB->where}\r\n\r\n                {$this->inDB->group_by}\r\n\r\n                {$this->inDB->order_by}\n";
     if ($this->inDB->limit) {
         $sql .= "LIMIT {$this->inDB->limit}";
     }
     $result = $this->inDB->query($sql);
     $this->inDB->resetConditions();
     if (!$this->inDB->num_rows($result)) {
         return false;
     }
     while ($article = $this->inDB->fetch_assoc($result)) {
         $article['fpubdate'] = cmsCore::dateFormat($article['pubdate']);
         $article['ffpubdate'] = date('c', strtotime($article['pubdate']));
         $article['tagline'] = cmsTagLine('content', $article['id'], true);
         $article['comments'] = cmsCore::getCommentsCount('article', $article['id']);
         $article['url'] = $this->getArticleURL(null, $article['seolink']);
         $article['cat_url'] = $this->getCategoryURL(null, $article['catseolink']);
         $article['image'] = file_exists(PATH . '/images/photos/small/article' . $article['id'] . '.jpg') ? 'article' . $article['id'] . '.jpg' : '';
         $articles[] = $article;
     }
     $articles = cmsCore::callEvent('GET_ARTICLES', $articles);
     return translations::process(cmsConfig::getConfig('lang'), 'content_content', $articles);
 }
Example #24
0
 public function getArhiveContent()
 {
     $sql = "SELECT {$this->inDB->select}\n                FROM cms_content con\n\t\t\t\t{$this->inDB->join}\n                WHERE 1=1 {$this->inDB->where}\n                {$this->inDB->group_by}\n                {$this->inDB->order_by}\n";
     if ($this->inDB->limit) {
         $sql .= "LIMIT {$this->inDB->limit}";
     }
     $result = $this->inDB->query($sql);
     $this->inDB->resetConditions();
     if (!$this->inDB->num_rows($result)) {
         return array();
     }
     cmsCore::loadModel('content');
     $content_model = new cms_model_content();
     while ($item = $this->inDB->fetch_assoc($result)) {
         if (!isset($item['seolink'])) {
             $item['fmonth'] = cmsCore::intMonthToStr($item['month']);
         } else {
             $item['url'] = $content_model->getArticleURL(0, $item['seolink']);
             $item['category_url'] = $content_model->getCategoryURL(0, $item['cat_seolink']);
             $item['fpubdate'] = cmsCore::dateFormat($item['pubdate']);
         }
         $item['image'] = file_exists(PATH . '/images/photos/small/article' . $item['id'] . '.jpg') ? 'article' . $item['id'] . '.jpg' : '';
         $content[] = $item;
     }
     return cmsCore::callEvent('GET_ARHIVE', $content);
 }
Example #25
0
function mod_uc($module_id, $cfg)
{
    $inDB = cmsDatabase::getInstance();
    cmsCore::loadModel('catalog');
    if (!in_array(@$cfg['sort'], array('rating', 'hits', 'pubdate'))) {
        $cfg['sort'] = 'pubdate';
    }
    global $_LANG;
    if (@$cfg['cat_id'] > 0) {
        if (!@$cfg['subs']) {
            //select from category
            $catsql = ' AND i.category_id = ' . $cfg['cat_id'];
        } else {
            //select from category and subcategories
            $rootcat = $inDB->get_fields('cms_uc_cats', "id='{$cfg['cat_id']}'", 'NSLeft, NSRight');
            if (!$rootcat) {
                return false;
            }
            $catsql = "AND (c.NSLeft >= {$rootcat['NSLeft']} AND c.NSRight <= {$rootcat['NSRight']})";
        }
    } else {
        $catsql = '';
    }
    $sql = "SELECT i.* , IFNULL(AVG( r.points ), 0) AS rating, c.view_type as viewtype\n            FROM cms_uc_items i\n            LEFT JOIN cms_uc_cats c ON c.id = i.category_id\n            LEFT JOIN cms_uc_ratings r ON r.item_id = i.id\n            WHERE i.published = 1 {$catsql}\n            GROUP BY i.id\n            ORDER BY {$cfg['sort']} DESC\n            LIMIT " . $cfg['num'];
    $result = $inDB->query($sql);
    $items = array();
    if (!$inDB->num_rows($result)) {
        return false;
    }
    cmsCore::includeFile('components/catalog/includes/shopcore.php');
    if ($cfg['showtype'] == 'thumb') {
        while ($item = $inDB->fetch_assoc($result)) {
            if (mb_strlen($item['imageurl']) < 4) {
                $item['imageurl'] = 'nopic.jpg';
            } elseif (!file_exists(PATH . '/images/catalog/small/' . $item['imageurl'])) {
                $item['imageurl'] = 'nopic.jpg';
            }
            if ($item['viewtype'] == 'shop') {
                $item['price'] = number_format(shopDiscountPrice($item['id'], $item['category_id'], $item['price']), 2, '.', ' ');
            }
            $items[] = $item;
        }
    }
    if ($cfg['showtype'] == 'list') {
        while ($item = $inDB->fetch_assoc($result)) {
            $item['fieldsdata'] = cmsCore::yamlToArray($item['fieldsdata']);
            $item['title'] = mb_substr($item['title'], 0, 40);
            for ($f = 0; $f < $cfg['showf']; $f++) {
                $item['fdata'][] = cms_model_catalog::getUCSearchLink($item['category_id'], $item['fieldsdata'][$f]);
            }
            if ($cfg['sort'] == 'rating') {
                $item['key'] = '<a href="/catalog/item' . $item['id'] . '.html" title="' . $_LANG['UC_MODULE_RATING'] . ': ' . round($item['rating'], 2) . '">' . cms_model_catalog::buildRating(round($item['rating'], 2)) . '</a>';
            } elseif ($cfg['sort'] == 'hits') {
                $item['key'] = $_LANG['UC_MODULE_VIEWS'] . ': <a href="/catalog/item' . $item['id'] . '.html" title="' . $_LANG['UC_MODULE_VIEWS'] . '">' . $item['hits'] . '</a>';
            } else {
                $item['key'] = cmsCore::dateFormat($item['pubdate']);
            }
            if ($item['viewtype'] == 'shop') {
                $item['price'] = number_format(shopDiscountPrice($item['id'], $item['category_id'], $item['price']), 2, '.', ' ');
            }
            $items[] = $item;
        }
    }
    cmsPage::initTemplate('modules', 'mod_uc')->assign('items', $items)->assign('cfg', $cfg)->display('mod_uc.tpl');
    return true;
}
Example #26
0
    public function getArhiveContent(){
        $sql = "SELECT ". cmsCore::c('db')->select ."
                FROM cms_content con
				". cmsCore::c('db')->join ."
                WHERE 1=1 ". cmsCore::c('db')->where ."
                ". cmsCore::c('db')->group_by ."
                ". cmsCore::c('db')->order_by ."\n";

        if (cmsCore::c('db')->limit){
            $sql .= "LIMIT ". cmsCore::c('db')->limit;
        }

        $result = cmsCore::c('db')->query($sql);

        cmsCore::c('db')->resetConditions();

        if (!cmsCore::c('db')->num_rows($result)) { return array(); }

        while ($item = cmsCore::c('db')->fetch_assoc($result)){
            if(!isset($item['seolink'])){
                $item['fmonth'] = cmsCore::intMonthToStr($item['month']);
            } else {
                $item['url']          = cmsCore::m('content')->getArticleURL(0, $item['seolink']);
                $item['category_url'] = cmsCore::m('content')->getCategoryURL(0, $item['cat_seolink']);
                $item['fpubdate']     = cmsCore::dateFormat($item['pubdate']);
            }
            $item['image'] = (file_exists(PATH.'/images/photos/small/article'.$item['id'].'.jpg') ?
                                'article'.$item['id'].'.jpg' : '');

            $content[] = $item;
        }

        return cmsCore::callEvent('GET_ARHIVE', $content);
    }
Example #27
0
 function getCalendar($start_time, $end_time, $category_id, $parent_id, $show_hidden = FALSE)
 {
     if ($start_time and $end_time) {
         $sql = "SELECT cms_events.*,\n      cms_events_category.name as category_name,\n      cms_events_category.bg,\n      cms_events_category.tx,\n      cms_events_category.id as category_id\n      FROM cms_events \n      LEFT JOIN cms_events_category ON cms_events.category_id = cms_events_category.id\n      WHERE cms_events.parent_id = '{$parent_id}' \n      AND cms_events.start_time > '{$start_time}'\n      AND cms_events.end_time < '{$end_time}'";
     } else {
         $sql = "SELECT cms_events.*,\n      cms_events_category.name as category_name,\n      cms_events_category.bg,\n      cms_events_category.tx,\n      cms_events_category.id as category_id\n      FROM cms_events \n      LEFT JOIN cms_events_category ON cms_events.category_id = cms_events_category.id";
     }
     if (!$show_hidden) {
         $sql .= 'AND cms_events.hide = 0';
     }
     if ($category_id) {
         $sql .= " AND category_id = {$category_id}";
     }
     $sql .= " ORDER BY cms_events.start_time ASC";
     $result = $this->inDB->query($sql);
     if ($this->inDB->error()) {
         print mysql_error();
         return false;
     }
     if (!$this->inDB->num_rows($result)) {
         return false;
     }
     $output = array();
     while ($row = $this->inDB->fetch_assoc($result)) {
         $row['start_date'] = date("Y-m-d H:i", $row['start_time']);
         $row['end_date'] = date("Y-m-d H:i", $row['end_time']);
         $row['f_start_date'] = cmsCore::dateFormat(date("Y-m-d H:i", $row['start_time']));
         $row['f_end_date'] = cmsCore::dateFormat(date("Y-m-d H:i", $row['end_time']));
         if ($row['bg'] == "") {
             $row['bg'] = $this->config['public_bg_color'];
             $row['tx'] = $this->config['public_tx_color'];
         }
         $output[] = $row;
     }
     return $output;
 }