} } if ($opt == 'hide_banner') { if (!isset($_REQUEST['item'])) { if (isset($_REQUEST['item_id'])) { dbHide('cms_banners', $_REQUEST['item_id']); } echo '1'; exit; } else { dbHideList('cms_banners', $_REQUEST['item']); cmsCore::redirectBack(); } } if ($opt == 'submit' || $opt == 'update') { if (!cmsCore::validateForm()) { cmsCore::error404(); } $item_id = cmsCore::request('item_id', 'int', 0); $title = cmsCore::request('title', 'str', $_LANG['AD_UNTITLED_BANNER']); $link = cmsCore::request('b_link', 'str'); $typeimg = cmsCore::request('typeimg', 'str'); $maxhits = cmsCore::request('maxhits', 'int'); $maxuser = 0; $published = cmsCore::request('published', 'int', 0); $position = cmsCore::request('position', 'str'); if (@$_FILES['picture']['size']) { $ext = mb_strtolower(pathinfo($_FILES['picture']['name'], PATHINFO_EXTENSION)); if (!in_array($ext, array('jpg', 'jpeg', 'gif', 'png', 'swf'))) { cmsCore::addSessionMessage($_LANG['AD_INCORRECT_FILE_TYPE'], 'error'); cmsCore::redirectBack();
function applet_config() { // получаем оригинальный конфиг $config = cmsConfig::getDefaultConfig(); $inPage = cmsPage::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; global $adminAccess; if (!cmsUser::isAdminCan('admin/config', $adminAccess)) { cpAccessDenied(); } $GLOBALS['cp_page_title'] = $_LANG['AD_SITE_SETTING']; cpAddPathway($_LANG['AD_SITE_SETTING'], 'index.php?view=config'); $do = cmsCore::request('do', 'str', 'list'); if ($do == 'save') { if (!cmsCore::validateForm()) { cmsCore::error404(); } $newCFG = array(); $newCFG['sitename'] = stripslashes(cmsCore::request('sitename', 'str', '')); $newCFG['title_and_sitename'] = cmsCore::request('title_and_sitename', 'int', 0); $newCFG['title_and_page'] = cmsCore::request('title_and_page', 'int', 0); $newCFG['hometitle'] = stripslashes(cmsCore::request('hometitle', 'str', '')); $newCFG['homecom'] = cmsCore::request('homecom', 'str', ''); $newCFG['siteoff'] = cmsCore::request('siteoff', 'int', 0); $newCFG['debug'] = cmsCore::request('debug', 'int', 0); $newCFG['offtext'] = htmlspecialchars(cmsCore::request('offtext', 'str', ''), ENT_QUOTES); $newCFG['keywords'] = cmsCore::request('keywords', 'str', ''); $newCFG['metadesc'] = cmsCore::request('metadesc', 'str', ''); $newCFG['seourl'] = cmsCore::request('seourl', 'int', 0); $newCFG['lang'] = cmsCore::request('lang', 'str', 'ru'); $newCFG['is_change_lang'] = cmsCore::request('is_change_lang', 'int', 0); $newCFG['sitemail'] = cmsCore::request('sitemail', 'str', ''); $newCFG['sitemail_name'] = cmsCore::request('sitemail_name', 'str', ''); $newCFG['wmark'] = cmsCore::request('wmark', 'str', ''); $newCFG['template'] = cmsCore::request('template', 'str', ''); $newCFG['splash'] = cmsCore::request('splash', 'int', 0); $newCFG['slight'] = cmsCore::request('slight', 'int', 0); $newCFG['db_host'] = $config['db_host']; $newCFG['db_base'] = $config['db_base']; $newCFG['db_user'] = $config['db_user']; $newCFG['db_pass'] = $config['db_pass']; $newCFG['db_prefix'] = $config['db_prefix']; $newCFG['show_pw'] = cmsCore::request('show_pw', 'int', 0); $newCFG['last_item_pw'] = cmsCore::request('last_item_pw', 'int', 0); $newCFG['index_pw'] = cmsCore::request('index_pw', 'int', 0); $newCFG['fastcfg'] = cmsCore::request('fastcfg', 'int', 0); $newCFG['mailer'] = cmsCore::request('mailer', 'str', ''); $newCFG['smtpsecure'] = cmsCore::request('smtpsecure', 'str', ''); $newCFG['smtpauth'] = cmsCore::request('smtpauth', 'int', 0); $newCFG['smtpuser'] = cmsCore::inRequest('smtpuser') ? cmsCore::request('smtpuser', 'str', '') : $config['smtpuser']; $newCFG['smtppass'] = cmsCore::inRequest('smtppass') ? cmsCore::request('smtppass', 'str', '') : $config['smtppass']; $newCFG['smtphost'] = cmsCore::request('smtphost', 'str', ''); $newCFG['smtpport'] = cmsCore::request('smtpport', 'int', '25'); $newCFG['timezone'] = cmsCore::request('timezone', 'str', ''); $newCFG['timediff'] = cmsCore::request('timediff', 'str', ''); $newCFG['user_stats'] = cmsCore::request('user_stats', 'int', 0); $newCFG['allow_ip'] = cmsCore::request('allow_ip', 'str', ''); if (cmsConfig::saveToFile($newCFG)) { cmsCore::addSessionMessage($_LANG['AD_CONFIG_SAVE_SUCCESS'], 'success'); } else { cmsCore::addSessionMessage($_LANG['AD_CONFIG_SITE_ERROR'], 'error'); } cmsCore::clearCache(); cmsCore::redirect('index.php?view=config'); } ?> <div> <?php cpCheckWritable('/includes/config.inc.php'); ?> <div id="config_tabs" class="uitabs"> <ul id="tabs"> <li><a href="#basic"><span><?php echo $_LANG['AD_SITE']; ?> </span></a></li> <li><a href="#home"><span><?php echo $_LANG['AD_MAIN']; ?> </span></a></li> <li><a href="#design"><span><?php echo $_LANG['AD_DESIGN']; ?> </span></a></li> <li><a href="#time"><span><?php echo $_LANG['AD_TIME']; ?> </span></a></li> <li><a href="#database"><span><?php echo $_LANG['AD_DB']; ?> </span></a></li> <li><a href="#mail"><span><?php echo $_LANG['AD_POST']; ?> </span></a></li> <li><a href="#other"><span><?php echo $_LANG['AD_PATHWAY']; ?> </span></a></li> <li><a href="#seq"><span><?php echo $_LANG['AD_SECURITY']; ?> </span></a></li> </ul> <form action="/admin/index.php?view=config" method="post" name="CFGform" target="_self" id="CFGform" style="margin-bottom:30px"> <input type="hidden" name="csrf_token" value="<?php echo cmsUser::getCsrfToken(); ?> " /> <div id="basic"> <table width="720" border="0" cellpadding="5"> <tr> <td> <strong><?php echo $_LANG['AD_SITENAME']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_USE_HEADER']; ?> </span> </td> <td width="350" valign="top"> <input name="sitename" type="text" id="sitename" value="<?php echo htmlspecialchars($config['sitename']); ?> " style="width:358px" /> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_TAGE_ADD']; ?> </strong> </td> <td valign="top"> <label><input name="title_and_sitename" type="radio" value="1" <?php if ($config['title_and_sitename']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="title_and_sitename" type="radio" value="0" <?php if (!$config['title_and_sitename']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_TAGE_ADD_PAGINATION']; ?> </strong> </td> <td valign="top"> <label><input name="title_and_page" type="radio" value="1" <?php if ($config['title_and_page']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="title_and_page" type="radio" value="0" <?php if (!$config['title_and_page']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td> <strong><?php echo $_LANG['TEMPLATE_INTERFACE_LANG']; ?> :</strong> </td> <td width="350" valign="top"> <select name="lang" id="lang" style="width:364px"> <?php $langs = cmsCore::getDirsList('/languages'); foreach ($langs as $lng) { echo '<option value="' . $lng . '" ' . ($config['lang'] == $lng ? 'selected="selected"' : '') . '>' . $lng . '</option>'; } ?> </select> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_SITE_LANGUAGE_CHANGE']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_VIEW_FORM_LANGUAGE_CHANGE']; ?> </span> </td> <td valign="top"> <label><input name="is_change_lang" type="radio" value="1" <?php if ($config['is_change_lang']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="is_change_lang" type="radio" value="0" <?php if (!$config['is_change_lang']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_SITE_ON']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_ONLY_ADMINS']; ?> </span> </td> <td valign="top"> <label><input name="siteoff" type="radio" value="0" <?php if (!$config['siteoff']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="siteoff" type="radio" value="1" <?php if ($config['siteoff']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_DEBUG_ON']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_WIEW_DB_ERRORS']; ?> </span> </td> <td valign="top"> <label><input name="debug" type="radio" value="1" <?php if ($config['debug']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="debug" type="radio" value="0" <?php if (!$config['debug']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td valign="middle"> <strong><?php echo $_LANG['AD_WHY_STOP']; ?> </strong><br /> <span class="hinttext"><?php echo $_LANG['AD_VIEW_WHY_STOP']; ?> </span> </td> <td valign="top"><input name="offtext" type="text" id="offtext" value="<?php echo htmlspecialchars($config['offtext']); ?> " style="width:358px" /></td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_WATERMARK']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_WATERMARK_NAME']; ?> </span> </td> <td> <input name="wmark" type="text" id="wmark" value="<?php echo $config['wmark']; ?> " style="width:358px" /> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_QUICK_CONFIG']; ?> </strong> <br /> <span class="hinttext"><?php echo $_LANG['AD_MODULE_CONFIG']; ?> </span> </td> <td valign="top"> <label><input name="fastcfg" type="radio" value="1" <?php if ($config['fastcfg']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="fastcfg" type="radio" value="0" <?php if (!$config['fastcfg']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_ONLINESTATS']; ?> </strong> </td> <td valign="top"> <label><input name="user_stats" type="radio" value="0" <?php if (!$config['user_stats']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['AD_NO_ONLINESTATS']; ?> </label><br> <label><input name="user_stats" type="radio" value="1" <?php if ($config['user_stats'] == 1) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['AD_YES_ONLINESTATS']; ?> </label><br> <label><input name="user_stats" type="radio" value="2" <?php if ($config['user_stats'] == 2) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['AD_CRON_ONLINESTATS']; ?> </label> </td> </tr> </table> </div> <div id="home"> <table width="720" border="0" cellpadding="5"> <tr> <td> <strong><?php echo $_LANG['AD_MAIN_PAGE']; ?> </strong><br /> <span class="hinttext"><?php echo $_LANG['AD_MAIN_SITENAME']; ?> </span><br/> <span class="hinttext"><?php echo $_LANG['AD_BROWSER_TITLE']; ?> </span> </td> <td width="350" valign="top"> <input name="hometitle" type="text" id="hometitle" value="<?php echo htmlspecialchars($config['hometitle']); ?> " style="width:358px" /> </td> </tr> <tr> <td valign="top"> <strong><?php echo $_LANG['AD_KEY_WORDS']; ?> </strong><br /> <span class="hinttext"><?php echo $_LANG['AD_FROM_COMMA']; ?> </span> <div class="hinttext" style="margin-top:4px"><a style="color:#09C" href="http://tutorial.semonitor.ru/#5" target="_blank"><?php echo $_LANG['AD_WHAT_KEY_WORDS']; ?> </a></div> </td> <td> <textarea name="keywords" style="width:350px" rows="3" id="keywords"><?php echo $config['keywords']; ?> </textarea> </td> </tr> <tr> <td valign="top"> <strong><?php echo $_LANG['AD_DESCRIPTION']; ?> </strong><br /> <span class="hinttext"><?php echo $_LANG['AD_LESS_THAN']; ?> </span> <div class="hinttext" style="margin-top:4px"><a style="color:#09C" href="http://tutorial.semonitor.ru/#219" target="_blank"><?php echo $_LANG['AD_WHAT_DESCRIPTION']; ?> </a></div> </td> <td> <textarea name="metadesc" style="width:350px" rows="3" id="metadesc"><?php echo $config['metadesc']; ?> </textarea> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_MAIN_PAGE_COMPONENT']; ?> </strong> </td> <td width="350" valign="top"> <select name="homecom" style="width:358px"> <option value="" <?php if (!$config['homecom']) { ?> selected="selected"<?php } ?> ><?php echo $_LANG['AD_ONLY_MODULES']; ?> </option> <?php echo cmsCore::getListItems('cms_components', $config['homecom'], 'title', 'ASC', 'internal=0', 'link'); ?> </select> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_GATE_PAGE']; ?> </strong> <br/> <span class="hinttext"><?php echo $_LANG['AD_FIRST_VISIT']; ?> </span> <br/> <span class="hinttext"><?php echo $_LANG['AD_FIRST_VISIT_TEMPLATE']; ?> </strong></span> </td> <td valign="top"> <label><input name="splash" type="radio" value="0" <?php if (!$config['splash']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['HIDE']; ?> </label> <label><input name="splash" type="radio" value="1" <?php if ($config['splash']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['SHOW']; ?> </label> </td> </tr> </table> </div> <div id="design"> <table width="720" border="0" cellpadding="5"> <tr> <td valign="top"> <div style="margin-top:2px"> <strong><?php echo $_LANG['TEMPLATE']; ?> :</strong><br /> <span class="hinttext"><?php echo $_LANG['AD_TEMPLATE_FOLDER']; ?> </span> </div> </td> <td> <select name="template" id="template" style="width:350px" onchange="document.CFGform.submit();"> <?php $templates = cmsCore::getDirsList('/templates'); foreach ($templates as $template) { echo '<option value="' . $template . '" ' . ($config['template'] == $template ? 'selected="selected"' : '') . '>' . $template . '</option>'; } $tpl_info = $inPage->getCurrentTplInfo(); ?> </select> <?php if (file_exists(PATH . '/templates/' . TEMPLATE . '/positions.jpg')) { ?> <script> $(function() { $('#pos').dialog({modal: true, autoOpen: false, closeText: LANG_CLOSE, width: 'auto'}); }); </script> <a onclick="$('#pos').dialog('open');return false;" href="#" class="ajaxlink"><?php echo $_LANG['AD_TPL_POS']; ?> </a> <div id="pos" title="<?php echo $_LANG['AD_TPL_POS']; ?> "><img src="/templates/<?php echo TEMPLATE; ?> /positions.jpg" alt="<?php echo $_LANG['AD_TPL_POS']; ?> " /></div> <?php } ?> <div style="margin-top:5px" class="hinttext"> <?php echo sprintf($_LANG['AD_TEMPLATE_INFO'], $tpl_info['author'], $tpl_info['renderer'], $tpl_info['ext']); ?> </div> </td> </tr> <tr> <td><strong><?php echo $_LANG['AD_SEARCH_RESULT']; ?> </strong></td> <td valign="top"> <label><input name="slight" type="radio" value="1" <?php if ($config['slight']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="slight" type="radio" value="0" <?php if (!$config['slight']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> </table> </div> <div id="time"> <table width="720" border="0" cellpadding="5"> <tr> <td valign="top" width="100"> <div style="margin-top:2px"> <strong><?php echo $_LANG['AD_TIME_ARREA']; ?> </strong> </div> </td> <td> <select name="timezone" id="timezone" style="width:350px"> <?php include PATH . '/admin/includes/timezones.php'; ?> <?php foreach ($timezones as $tz) { ?> <option value="<?php echo $tz; ?> " <?php if ($tz == $config['timezone']) { ?> selected="selected"<?php } ?> ><?php echo $tz; ?> </option> <?php } ?> </select> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_TIME_SLIP']; ?> </strong> </td> <td width="350"> <select name="timediff" id="timediff" style="width:60px"> <?php for ($h = -12; $h <= 12; $h++) { ?> <option value="<?php echo $h; ?> " <?php if ($h == $config['timediff']) { ?> selected="selected"<?php } ?> ><?php echo $h > 0 ? '+' . $h : $h; ?> </option> <?php } ?> </select> </td> </tr> </table> </div> <div id="database"> <table width="720" border="0" cellpadding="5" style="margin-top:15px;"> <tr> <td> <strong><?php echo $_LANG['AD_DB_SIZE']; ?> </strong> </td> <td width="350"> <?php $result = $inDB->query("SELECT (sum(data_length)+sum(index_length))/1024/1024 as size FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = '{$config['db_base']}'", true); if (!$inDB->error()) { $s = $inDB->fetch_assoc($result); echo round($s['size'], 2) . ' ' . $_LANG['SIZE_MB']; } else { echo $_LANG['AD_DB_SIZE_ERROR']; } ?> </td> </tr> <tr> <td colspan="2"><span class="hinttext"><?php echo $_LANG['AD_MYSQL_CONFIG']; ?> </span></td> </tr> </table> </div> <div id="mail"> <table width="720" border="0" cellpadding="5" style="margin-top:15px;"> <tr> <td width="250"> <strong><?php echo $_LANG['AD_SITE_EMAIL']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_SITE_EMAIL_POST']; ?> </span> </td> <td> <input name="sitemail" type="text" id="sitemail" value="<?php echo $config['sitemail']; ?> " style="width:358px" /> </td> </tr> <tr> <td width="250"> <strong><?php echo $_LANG['AD_SENDER_EMAIL']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_IF_NOT_HANDLER']; ?> </span> </td> <td> <input name="sitemail_name" type="text" id="sitemail_name" value="<?php echo $config['sitemail_name']; ?> " style="width:358px" /> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_SEND_METHOD']; ?> </strong> </td> <td> <select name="mailer" style="width:354px"> <option value="mail" <?php if ($config['mailer'] == 'mail') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_PHP_MAILER']; ?> </option> <option value="sendmail" <?php if ($config['mailer'] == 'sendmail') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_SEND_MAILER']; ?> </option> <option value="smtp" <?php if ($config['mailer'] == 'smtp') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_SMTP_MAILER']; ?> </option> </select> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_ENCRYPTING']; ?> </strong> </td> <td> <label><input name="smtpsecure" type="radio" value="" <?php if (!$config['smtpsecure']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> <label><input name="smtpsecure" type="radio" value="tls" <?php if ($config['smtpsecure'] == 'tls') { echo 'checked="checked"'; } ?> /> tls</label> <label><input name="smtpsecure" type="radio" value="ssl" <?php if ($config['smtpsecure'] == 'ssl') { echo 'checked="checked"'; } ?> /> ssl</label> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_SMTP_LOGIN']; ?> </strong> </td> <td> <label><input name="smtpauth" type="radio" value="1" <?php if ($config['smtpauth']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="smtpauth" type="radio" value="0" <?php if (!$config['smtpauth']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_SMTP_USER']; ?> </strong> </td> <td> <?php if (!$config['smtpuser']) { ?> <input name="smtpuser" type="text" id="smtpuser" value="<?php echo $config['smtpuser']; ?> " style="width:350px" /> <?php } else { ?> <span class="hinttext"><?php echo $_LANG['AD_IF_CHANGE_USER']; ?> </span> <?php } ?> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_SMTP_PASS']; ?> </strong> </td> <td> <?php if (!$config['smtppass']) { ?> <input name="smtppass" type="password" id="smtppass" value="<?php echo $config['smtppass']; ?> " style="width:350px" /> <?php } else { ?> <span class="hinttext"><?php echo $_LANG['AD_IF_CHANGE_PASS']; ?> </span> <?php } ?> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_SMTP_HOST']; ?> </strong><br> <span class="hinttext"><?php echo $_LANG['AD_SOME_HOST']; ?> </span> </td> <td> <input name="smtphost" type="text" id="smtphost" value="<?php echo $config['smtphost']; ?> " style="width:350px" /> </td> </tr> <tr> <td> <strong><?php echo $_LANG['AD_SMTP_PORT']; ?> </strong> </td> <td> <input name="smtpport" type="text" id="smtpport" value="<?php echo $config['smtpport']; ?> " style="width:350px" /> </td> </tr> </table> </div> <div id="other"> <table width="720" border="0" cellpadding="5"> <tr> <td> <strong><?php echo $_LANG['AD_VIEW_PATHWAY']; ?> </strong><br /> <span class="hinttext"> <?php echo $_LANG['AD_PATH_TO_CATEGORY']; ?> </span> </td> <td> <label><input name="show_pw" type="radio" value="1" <?php if ($config['show_pw']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="show_pw" type="radio" value="0" <?php if (!$config['show_pw']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td><strong><?php echo $_LANG['AD_MAINPAGE_PATHWAY']; ?> </strong></td> <td> <label><input name="index_pw" type="radio" value="1" <?php if ($config['index_pw']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['YES']; ?> </label> <label><input name="index_pw" type="radio" value="0" <?php if (!$config['index_pw']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td><strong><?php echo $_LANG['AD_PAGE_PATHWAY']; ?> </strong></td> <td> <label><input name="last_item_pw" type="radio" value="0" <?php if (!$config['last_item_pw']) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['HIDE']; ?> </label> <label><input name="last_item_pw" type="radio" value="1" <?php if ($config['last_item_pw'] == 1) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['AD_PAGE_PATHWAY_LINK']; ?> </label> <label><input name="last_item_pw" type="radio" value="2" <?php if ($config['last_item_pw'] == 2) { echo 'checked="checked"'; } ?> /><?php echo $_LANG['AD_PAGE_PATHWAY_TEXT']; ?> </label> </td> </tr> </table> </div> <div id="seq"> <table width="720" border="0" cellpadding="5"> <tr> <td> <strong><?php echo $_LANG['AD_IP_ADMIN']; ?> </strong> <br /> <span class="hinttext"><?php echo $_LANG['AD_IP_COMMA']; ?> </span></td> <td valign="top"> <input name="allow_ip" type="text" id="allow_ip" value="<?php echo htmlspecialchars($config['allow_ip']); ?> " style="width:358px" /></td> </tr> </table> <p style="color:#900"><?php echo $_LANG['AD_ATTENTION']; ?> </p> </div> <div align="left"> <input name="do" type="hidden" id="do" value="save" /> <input name="save" type="submit" id="save" value="<?php echo $_LANG['SAVE']; ?> " /> <input name="back" type="button" id="back" value="<?php echo $_LANG['CANCEL']; ?> " onclick="window.history.back();" /> </div> </form> </div></div> <?php }
function applet_plugins() { global $_LANG; $inCore = cmsCore::getInstance(); $GLOBALS['cp_page_title'] = $_LANG['AD_PLUGINS']; cpAddPathway($_LANG['AD_PLUGINS'], 'index.php?view=plugins'); global $adminAccess; if (!cmsUser::isAdminCan('admin/plugins', $adminAccess)) { cpAccessDenied(); } $do = cmsCore::request('do', 'str', 'list'); $id = cmsCore::request('id', 'int', -1); // ===================================================================================== // if ($do == 'hide') { dbHide('cms_plugins', $id); echo '1'; exit; } // ===================================================================================== // if ($do == 'show') { dbShow('cms_plugins', $id); echo '1'; exit; } // ===================================================================================== // if ($do == 'list') { $toolmenu = array(); $toolmenu[1]['icon'] = 'install.gif'; $toolmenu[1]['title'] = $_LANG['AD_INSTALL_PLUGINS']; $toolmenu[1]['link'] = '?view=install&do=plugin'; cpToolMenu($toolmenu); $plugin_id = cmsCore::request('installed', 'str', ''); if ($plugin_id) { $task = cmsCore::request('task', 'str', 'install'); if ($task == 'install' || $task == 'upgrade') { $plugin = $inCore->loadPlugin($plugin_id); $task_str = $task == 'install' ? $_LANG['AD_IS_INSTALL'] : $_LANG['AD_IS_UPDATE']; echo '<div style="color:green;margin-top:12px;margin-bottom:5px;">' . $_LANG['AD_PLUGIN'] . ' <strong>"' . $plugin->info['title'] . '"</strong> ' . $task_str . '. ' . $_LANG['AD_ENABLE_PLUGIN'] . '.</div>'; } if ($task == 'remove') { echo '<div style="color:green;margin-top:12px;margin-bottom:5px;">' . $_LANG['AD_REMOVE_PLUGIN_OK'] . '.</div>'; } } $fields = array(); $fields[0]['title'] = 'id'; $fields[0]['field'] = 'id'; $fields[0]['width'] = '20'; $fields[1]['title'] = $_LANG['TITLE']; $fields[1]['field'] = 'title'; $fields[1]['width'] = '250'; $fields[2]['title'] = $_LANG['DESCRIPTION']; $fields[2]['field'] = 'description'; $fields[2]['width'] = ''; $fields[3]['title'] = $_LANG['AD_AUTHOR']; $fields[3]['field'] = 'author'; $fields[3]['width'] = '160'; $fields[4]['title'] = $_LANG['AD_VERSION']; $fields[4]['field'] = 'version'; $fields[4]['width'] = '50'; $fields[5]['title'] = $_LANG['AD_FOLDER']; $fields[5]['field'] = 'plugin'; $fields[5]['width'] = '100'; $fields[6]['title'] = $_LANG['AD_ENABLE']; $fields[6]['field'] = 'published'; $fields[6]['width'] = '60'; $actions = array(); $actions[0]['title'] = $_LANG['AD_CONFIG']; $actions[0]['icon'] = 'config.gif'; $actions[0]['link'] = '?view=plugins&do=config&id=%id%'; $actions[1]['title'] = $_LANG['DELETE']; $actions[1]['icon'] = 'delete.gif'; $actions[1]['confirm'] = $_LANG['AD_REMOVE_PLUGIN_FROM']; $actions[1]['link'] = '?view=install&do=remove_plugin&id=%id%'; cpListTable('cms_plugins', $fields, $actions); } // ===================================================================================== // if ($do == 'save_config') { if (!cmsCore::validateForm()) { cmsCore::error404(); } $plugin_name = cmsCore::request('plugin', 'str', 0); $config = cmsCore::request('config', 'array_str'); if (!$config || !$plugin_name) { cmsCore::redirectBack(); } $inCore->savePluginConfig($plugin_name, $config); cmsUser::clearCsrfToken(); cmsCore::addSessionMessage($_LANG['AD_CONFIG_SAVE_SUCCESS'], 'success'); cmsCore::redirect('index.php?view=plugins'); } // ===================================================================================== // if ($do == 'config') { $plugin_name = $inCore->getPluginById($id); if (!$plugin_name) { cmsCore::error404(); } $plugin = $inCore->loadPlugin($plugin_name); $config = $inCore->loadPluginConfig($plugin_name); $GLOBALS['cp_page_title'] = $plugin->info['title']; cpAddPathway($plugin->info['title'], 'index.php?view=plugins&do=config&id=' . $id); echo '<h3>' . $plugin->info['title'] . '</h3>'; if (!$config) { echo '<p>' . $_LANG['AD_PLUGIN_DISABLE'] . '.</p>'; echo '<p><a href="javascript:window.history.go(-1);">' . $_LANG['BACK'] . '</a></p>'; return; } echo '<form action="index.php?view=plugins&do=save_config&plugin=' . $plugin_name . '" method="POST">'; echo '<input type="hidden" name="csrf_token" value="' . cmsUser::getCsrfToken() . '" />'; echo '<table class="proptable" width="605" cellpadding="8" cellspacing="0" border="0">'; foreach ($config as $field => $value) { echo '<tr>'; echo '<td width="150"><strong>' . (isset($_LANG[mb_strtoupper($field)]) ? $_LANG[mb_strtoupper($field)] : $field) . ':</strong></td>'; echo '<td><input type="text" style="width:90%" name="config[' . $field . ']" value="' . htmlspecialchars($value) . '" /></td>'; echo '</tr>'; } echo '</table>'; echo '<div style="margin-top:6px;">'; echo '<input type="submit" name="save" value="' . $_LANG['SAVE'] . '" /> '; echo '<input type="button" name="back" value="' . $_LANG['CANCEL'] . '" onclick="window.history.go(-1)" />'; echo '</div>'; echo '</form>'; } // ===================================================================================== // }
function applet_arhive() { $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; $GLOBALS['cp_page_title'] = $_LANG['AD_ARTICLES_ARCHIVE']; $cfg = $inCore->loadComponentConfig('content'); $cfg_arhive = $inCore->loadComponentConfig('arhive'); cmsCore::loadModel('content'); $model = new cms_model_content(); cpAddPathway($_LANG['AD_ARTICLE_SITE'], 'index.php?view=tree'); cpAddPathway($_LANG['AD_ARTICLES_ARCHIVE'], 'index.php?view=arhive'); $do = cmsCore::request('do', 'str', 'list'); $id = cmsCore::request('id', 'int', -1); if ($do == 'saveconfig') { if (!cmsCore::validateForm()) { cmsCore::error404(); } $cfg['source'] = cmsCore::request('source', 'str', ''); $inCore->saveComponentConfig('arhive', $cfg); cmsCore::addSessionMessage($_LANG['AD_CONFIG_SAVE_SUCCESS'], 'success'); cmsCore::redirect('?view=arhive&do=config'); } if ($do == 'config') { $toolmenu = array(); $toolmenu[0]['icon'] = 'folders.gif'; $toolmenu[0]['title'] = $_LANG['AD_LIST_OF_ARTICLES']; $toolmenu[0]['link'] = '?view=arhive'; cpToolMenu($toolmenu); cpAddPathway($_LANG['AD_SETTINGS'], 'index.php?view=arhive&do=config'); ?> <form action="index.php?view=arhive&do=saveconfig" method="post" name="optform" target="_self" id="form1"> <input type="hidden" name="csrf_token" value="<?php echo cmsUser::getCsrfToken(); ?> " /> <table width="609" border="0" cellpadding="10" cellspacing="0" class="proptable"> <tr> <td valign="top"><strong><?php echo $_LANG['AD_SOURCE_MATERIALS']; ?> </strong></td> <td width="100" valign="top"> <select name="source" id="source" style="width:285px"> <option value="content" <?php if ($cfg_arhive['source'] == 'content') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_ARTICLE_SITE']; ?> </option> <option value="arhive" <?php if ($cfg_arhive['source'] == 'arhive') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_ARTICLES_ARCHIVE']; ?> </option> <option value="both" <?php if ($cfg_arhive['source'] == 'both') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_CATALOG_AND_ARCHIVE']; ?> </option> </select> </td> </tr> </table> <p> <input name="opt" type="hidden" value="saveconfig" /> <input name="save" type="submit" id="save" value="<?php echo $_LANG['SAVE']; ?> " /> <input name="back" type="button" id="back" value="<?php echo $_LANG['CANCEL']; ?> " onclick="window.location.href='index.php?view=arhive';" /> </p> </form> <?php } if ($do == 'list') { $toolmenu = array(); $toolmenu[0]['icon'] = 'config.gif'; $toolmenu[0]['title'] = $_LANG['AD_SETTINGS']; $toolmenu[0]['link'] = '?view=arhive&do=config'; $toolmenu[1]['icon'] = 'delete.gif'; $toolmenu[1]['title'] = $_LANG['AD_DELETE_SELECTED']; $toolmenu[1]['link'] = "javascript:checkSel('?view=arhive&do=delete&multiple=1');"; cpToolMenu($toolmenu); //TABLE COLUMNS $fields = array(); $fields[0]['title'] = 'id'; $fields[0]['field'] = 'id'; $fields[0]['width'] = '30'; $fields[1]['title'] = $_LANG['AD_CREATE']; $fields[1]['field'] = 'pubdate'; $fields[1]['width'] = '80'; $fields[1]['filter'] = 15; $fields[1]['fdate'] = '%d/%m/%Y'; $fields[2]['title'] = $_LANG['TITLE']; $fields[2]['field'] = 'title'; $fields[2]['width'] = ''; $fields[2]['link'] = '?view=content&do=edit&id=%id%'; $fields[2]['filter'] = 15; $fields[3]['title'] = $_LANG['AD_PARTITION']; $fields[3]['field'] = 'category_id'; $fields[3]['width'] = '100'; $fields[3]['filter'] = 1; $fields[3]['prc'] = 'cpCatById'; $fields[3]['filterlist'] = cpGetList('cms_category'); //ACTIONS $actions = array(); $actions[0]['title'] = $_LANG['AD_TO_ARTICLES_CATALOG']; $actions[0]['icon'] = 'arhive_off.gif'; $actions[0]['link'] = '?view=arhive&do=arhive_off&id=%id%'; $actions[2]['title'] = $_LANG['DELETE']; $actions[2]['icon'] = 'delete.gif'; $actions[2]['confirm'] = $_LANG['AD_DELETE_MATERIALS']; $actions[2]['link'] = '?view=content&do=delete&id=%id%'; //Print table cpListTable('cms_content', $fields, $actions, 'is_arhive=1'); } if ($do == 'arhive_off') { if (isset($_REQUEST['id'])) { $sql = "UPDATE cms_content SET is_arhive = 0 WHERE id = '{$id}'"; $inDB->query($sql); cmsCore::redirect('?view=arhive'); } } if ($do == 'delete') { if (!isset($_REQUEST['item'])) { if ($id >= 0) { $model->deleteArticle($id, $cfg['af_delete']); } } else { $model->deleteArticles($_REQUEST['item'], $cfg['af_delete']); } cmsCore::redirect('?view=arhive'); } }
function photos() { $inCore = cmsCore::getInstance(); $inPage = cmsPage::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); cmsCore::loadClass('photo'); $inPhoto = cmsPhoto::getInstance(); global $_LANG; $model = new cms_model_photos(); $pagetitle = $inCore->menuTitle(); $root_album_id = $inDB->getNsRootCatId('cms_photo_albums'); $id = cmsCore::request('id', 'int', $root_album_id); $do = $inCore->do; $page = cmsCore::request('page', 'int', 1); $inPage->addPathway($inCore->getComponentTitle(), '/photos'); // только авторизованные пользуются js if ($inUser->id) { $inPage->addHeadJS('components/photos/js/photos.js'); $inPage->addHeadJsLang(array('NO_PUBLISH', 'EDIT_PHOTO', 'YOU_REALLY_DELETE_PHOTO', 'MOVE_PHOTO')); } /////////////////////////////// Просмотр альбома /////////////////////////////////////////////////////////////////////////////////////////// if ($do == 'view') { $album = $inDB->getNsCategory('cms_photo_albums', $id, null); if (!$album && $inCore->menuId() !== 1) { cmsCore::error404(); } // Неопубликованные альбомы показываем только админам if (!$album['published'] && !$inUser->is_admin) { cmsCore::error404(); } $album = cmsCore::callEvent('GET_PHOTO_ALBUM', $album); // если не корневой альбом if ($album['id'] != $root_album_id) { $path_list = $inDB->getNsCategoryPath('cms_photo_albums', $album['NSLeft'], $album['NSRight'], 'id, title, NSLevel'); if ($path_list) { foreach ($path_list as $pcat) { $inPage->addPathway($pcat['title'], '/photos/' . $pcat['id']); } } $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $album['title'] . ' - ' . $_LANG['PHOTOGALLERY']; $inPage->setTitle($pagetitle); } else { $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $_LANG['PHOTOGALLERY']; $inPage->setTitle($pagetitle); $album['title'] = $pagetitle; } //Формируем подкатегории альбома $inDB->orderBy('f.' . $model->config['orderby'], $model->config['orderto']); $subcats = $inPhoto->getAlbums($album['id']); // Сортировка фотографий $orderby = cmsCore::getSearchVar('orderby', $album['orderby']); $orderto = cmsCore::getSearchVar('orderto', $album['orderto']); if (!in_array($orderby, array('title', 'pubdate', 'rating', 'hits'))) { $orderby = $album['orderby']; } if (!in_array($orderto, array('desc', 'asc'))) { $orderto = $album['orderto']; } // Устанавливаем альбом $inPhoto->whereAlbumIs($album['id']); // Общее количество фото по заданным выше условиям $total = $inPhoto->getPhotosCount($inUser->is_admin); //устанавливаем сортировку $inDB->orderBy('f.' . $orderby, $orderto); //устанавливаем номер текущей страницы и кол-во фото на странице $inDB->limitPage($page, $album['perpage']); $photos = $inPhoto->getPhotos($inUser->is_admin, $album['showdate']); if (!$photos && $page > 1) { cmsCore::error404(); } cmsPage::initTemplate('components', 'com_photos_view')->assign('root_album_id', $root_album_id)->assign('cfg', $model->config)->assign('album', $album)->assign('can_add_photo', $album['public'] && $inUser->id || $inUser->is_admin)->assign('subcats', $subcats)->assign('photos', $photos)->assign('pagebar', cmsPage::getPagebar($total, $page, $album['perpage'], '/photos/' . $album['id'] . '-%page%'))->assign('total', $total)->assign('orderby', $orderby)->assign('orderto', $orderto)->display('com_photos_view.tpl'); // если есть фотограйии в альбоме и включены комментарии в альбоме, то показываем их if ($album['is_comments'] && $photos && $inCore->isComponentInstalled('comments')) { cmsCore::includeComments(); comments('palbum', $album['id']); } } /////////////////////////////// VIEW PHOTO /////////////////////////////////////////////////////////////////////////////////////////// if ($do == 'viewphoto') { // получаем фото $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::error404(); } // Если фото клуба редиректим на новый алрес if (mb_strstr($photo['NSDiffer'], 'club')) { cmsCore::redirect('/clubs/photo' . $photo['id'] . '.html', '301'); } $is_author = $photo['user_id'] == $inUser->id && $inUser->id; // неопубликованное фото видно админам и автору if (!$photo['published'] && !$inUser->is_admin && !$is_author) { cmsCore::error404(); } $path_list = $inDB->getNsCategoryPath('cms_photo_albums', $photo['NSLeft'], $photo['NSRight'], 'id, title, NSLevel'); if ($path_list) { foreach ($path_list as $pcat) { $inPage->addPathway($pcat['title'], '/photos/' . $pcat['id']); } } $inPage->addPathway($photo['title']); $inPage->setTitle($photo['title']); // Обновляем количество просмотров фотографии if (!$is_author) { $inDB->setFlag('cms_photo_files', $photo['id'], 'hits', $photo['hits'] + 1); } //навигация if ($photo['album_nav']) { $nextid = $inDB->get_fields('cms_photo_files', 'id<' . $photo['id'] . ' AND album_id = ' . $photo['album_id'] . ' AND published=1', 'id, file', 'id DESC'); $previd = $inDB->get_fields('cms_photo_files', 'id>' . $photo['id'] . ' AND album_id = ' . $photo['album_id'] . ' AND published=1', 'id, file', 'id ASC'); } else { $previd = false; $nextid = false; } $photo['karma_buttons'] = cmsKarmaButtons('photo', $photo['id'], $photo['rating'], $is_author); $photo['genderlink'] = cmsUser::getGenderLink($photo['user_id'], $photo['nickname'], $photo['gender'], $photo['login']); cmsPage::initTemplate('components', 'com_photos_view_photo')->assign('photo', $photo)->assign('bbcode', '[IMG]' . HOST . '/images/photos/medium/' . $photo['file'] . '[/IMG]')->assign('previd', $previd)->assign('nextid', $nextid)->assign('cfg', $model->config)->assign('is_author', $is_author)->assign('is_admin', $inUser->is_admin)->assign('tagbar', $photo['a_tags'] ? cmsTagBar('photo', $photo['id']) : '')->display('com_photos_view_photo.tpl'); //выводим комментарии, если они разрешены и фото опубликовано if ($photo['comments'] && $inCore->isComponentInstalled('comments')) { cmsCore::includeComments(); comments('photo', $photo['id']); } } /////////////////////////////// PHOTO UPLOAD //////////////////////////////////////////////////////////////////////////////// if ($do == 'addphoto') { // Неавторизованных просим авторизоваться if (!$inUser->id) { cmsUser::goToLogin(); } $do_photo = cmsCore::request('do_photo', 'str', 'addphoto'); // получаем альбом $album = $inDB->getNsCategory('cms_photo_albums', $id); if (!$album) { cmsCore::error404(); } if (!$album['published'] && !$inUser->is_admin) { cmsCore::error404(); } $album = cmsCore::callEvent('GET_PHOTO_ALBUM', $album); // права доступа // загружаем только в разрешенные альбомы if (!$album['public'] && !$inUser->is_admin) { cmsCore::error404(); } // Смотрим ограничения загрузки в сутки $today_uploaded = $album['uplimit'] ? $model->loadedByUser24h($inUser->id, $album['id']) : 0; if (!$inUser->is_admin && $album['uplimit'] && $today_uploaded >= $album['uplimit']) { cmsCore::addSessionMessage('<strong>' . $_LANG['MAX_UPLOAD_IN_DAY'] . '</strong> ' . $_LANG['CAN_UPLOAD_TOMORROW'], 'error'); cmsCore::redirectBack(); } // глубиномер $path_list = $inDB->getNsCategoryPath('cms_photo_albums', $album['NSLeft'], $album['NSRight'], 'id, title, NSLevel'); if ($path_list) { foreach ($path_list as $pcat) { $inPage->addPathway($pcat['title'], '/photos/' . $pcat['id']); } } include 'components/photos/add_photo.php'; } /////////////////////////////// PHOTO EDIT /////////////////////////////////////////////////////////////////////////////////////////// if ($do == 'editphoto') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } // получаем фото $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::halt(); } if (mb_strstr($photo['NSDiffer'], 'club')) { cmsCore::halt(); } $is_author = $photo['user_id'] == $inUser->id && $inUser->id; if (!$inUser->is_admin && !$is_author) { cmsCore::halt(); } if (cmsCore::inRequest('edit_photo')) { $mod['title'] = cmsCore::request('title', 'str', ''); $mod['title'] = $mod['title'] ? $mod['title'] : $photo['title']; $mod['description'] = cmsCore::request('description', 'str', ''); $mod['tags'] = cmsCore::request('tags', 'str', ''); $mod['comments'] = $inUser->is_admin ? cmsCore::request('comments', 'int') : $photo['comments']; $file = $model->initUploadClass($inDB->getNsCategory('cms_photo_albums', $photo['album_id']))->uploadPhoto($photo['file']); $mod['file'] = $file['filename'] ? $file['filename'] : $photo['file']; $inPhoto->updatePhoto($mod, $photo['id']); $description = '<a href="/photos/photo' . $photo['id'] . '.html" class="act_photo"><img src="/images/photos/small/' . $mod['file'] . '" alt="' . htmlspecialchars(stripslashes($mod['title'])) . '" /></a>'; cmsActions::updateLog('add_photo', array('object' => $mod['title'], 'description' => $description), $photo['id']); cmsCore::addSessionMessage($_LANG['PHOTO_SAVED'], 'success'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/photos/photo' . $photo['id'] . '.html')); } else { $photo['tags'] = cmsTagLine('photo', $photo['id'], false); cmsPage::initTemplate('components', 'com_photos_edit')->assign('photo', $photo)->assign('form_action', '/photos/editphoto' . $photo['id'] . '.html')->assign('no_tags', false)->assign('is_admin', $inUser->is_admin)->display('com_photos_edit.tpl'); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } } /////////////////////////////// PHOTO MOVE ///////////////////////////////////////////////////////////////////////////////////////// if ($do == 'movephoto') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::halt(); } if (mb_strstr($photo['NSDiffer'], 'club')) { cmsCore::halt(); } if (!$inUser->is_admin) { cmsCore::halt(); } if (!cmsCore::inRequest('move_photo')) { cmsPage::initTemplate('components', 'com_photos_move')->assign('form_action', '/photos/movephoto' . $photo['id'] . '.html')->assign('html', $inPhoto->getAlbumsOption('', $photo['album_id']))->display('com_photos_move.tpl'); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } else { $album = cmsCore::callEvent('GET_PHOTO_ALBUM', $inDB->getNsCategory('cms_photo_albums', cmsCore::request('album_id', 'int'))); if (!$album) { cmsCore::halt(); } if (!$album['public'] && !$inUser->is_admin) { cmsCore::error404(); } // Смотрим ограничения загрузки в сутки $today_uploaded = $album['uplimit'] ? $model->loadedByUser24h($inUser->id, $album['id']) : 0; if (!$inUser->is_admin && $album['uplimit'] && $today_uploaded >= $album['uplimit']) { cmsCore::jsonOutput(array('error' => true, 'text' => '<strong>' . $_LANG['MAX_UPLOAD_IN_DAY'] . '</strong> ' . $_LANG['CAN_UPLOAD_TOMORROW'])); } $inDB->query("UPDATE cms_photo_files SET album_id = '{$album['id']}' WHERE id = '{$photo['id']}'"); cmsActions::updateLog('add_photo', array('target' => $album['title'], 'target_url' => '/photos/' . $album['id'], 'target_id' => $album['id']), $photo['id']); cmsCore::addSessionMessage($_LANG['PHOTO_MOVED'], 'info'); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/photos/' . $album['id'])); } } /////////////////////////////// PHOTO DELETE ///////////////////////////////////////////////////////////////////////////////////////// if ($do == 'delphoto') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } if (!cmsCore::validateForm()) { cmsCore::halt(); } $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::halt(); } if (mb_strstr($photo['NSDiffer'], 'club')) { cmsCore::halt(); } $is_author = $photo['user_id'] == $inUser->id && $inUser->id; if (!$inUser->is_admin && !$is_author) { cmsCore::halt(); } $inPhoto->deletePhoto($photo, $model->initUploadClass($inDB->getNsCategory('cms_photo_albums', $photo['album_id']))); cmsCore::addSessionMessage($_LANG['PHOTO_DELETED'], 'success'); cmsUser::clearCsrfToken(); cmsCore::jsonOutput(array('error' => false, 'redirect' => '/photos/' . $photo['album_id'])); } /////////////////////////////// PHOTO PUBLISH ///////////////////////////////////////////////////////////////////////////////////////// if ($do == 'publish_photo') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } $photo = cmsCore::callEvent('GET_PHOTO', $inPhoto->getPhoto($id)); if (!$photo) { cmsCore::halt(); } if (!$inUser->is_admin) { cmsCore::halt(); } $inPhoto->publishPhoto($photo['id']); cmsCore::callEvent('ADD_PHOTO_DONE', $photo); $description = '<a href="/photos/photo' . $photo['id'] . '.html" class="act_photo"><img src="/images/photos/small/' . $photo['file'] . '" alt="' . htmlspecialchars(stripslashes($photo['title'])) . '" /></a>'; cmsActions::log('add_photo', array('object' => $photo['title'], 'object_url' => '/photos/photo' . $photo['id'] . '.html', 'object_id' => $photo['id'], 'user_id' => $photo['user_id'], 'target' => $photo['cat_title'], 'target_id' => $photo['album_id'], 'target_url' => '/photos/' . $photo['album_id'], 'description' => $description)); cmsCore::halt('ok'); } /////////////////////////////// VIEW LATEST/BEST PHOTOS ////////////////////////////////////////////////////////////////////////////// if (in_array($do, array('latest', 'best'))) { if ($do == 'latest') { $inDB->orderBy('f.pubdate', 'DESC'); $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $_LANG['NEW_PHOTO_IN_GALLERY']; } else { $inDB->orderBy('f.rating', 'DESC'); $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $_LANG['BEST_PHOTOS']; } $inDB->limit($model->config['best_latest_perpage']); // выбираем категории фото $inDB->addJoin("INNER JOIN cms_photo_albums a ON a.id = f.album_id AND a.published = 1 AND a.NSDiffer = ''"); $inDB->addSelect('a.title as cat_title'); $photos = $inPhoto->getPhotos(false, 'with_comments'); if (!$photos) { cmsCore::error404(); } $inPage->addPathway($pagetitle); $inPage->setTitle($pagetitle); cmsPage::initTemplate('components', 'com_photos_bl')->assign('maxcols', $model->config['best_latest_maxcols'])->assign('pagetitle', $pagetitle)->assign('photos', $photos)->display('com_photos_bl.tpl'); } /////////////////////////////// /////////////////////////////// /////////////////////////////// /////////////////////////////// ////// }
function applet_userbanlist() { $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); global $_LANG; global $adminAccess; if (!cmsUser::isAdminCan('admin/users', $adminAccess)) { cpAccessDenied(); } $GLOBALS['cp_page_title'] = $_LANG['AD_BANLIST']; cpAddPathway($_LANG['AD_USERS'], 'index.php?view=users'); cpAddPathway($_LANG['AD_BANLIST'], 'index.php?view=userbanlist'); $do = cmsCore::request('do', 'str', 'list'); $id = cmsCore::request('id', 'int', -1); $to = cmsCore::request('to', 'int', 0); // для редиректа обратно в профиль на сайт if ($to) { cmsUser::sessionPut('back_url', cmsCore::getBackURL()); } if ($do == 'list') { $toolmenu[] = array('icon' => 'useradd.gif', 'title' => $_LANG['AD_TO_BANLIST_ADD'], 'link' => '?view=userbanlist&do=add'); $toolmenu[] = array('icon' => 'edit.gif', 'title' => $_LANG['AD_EDIT_SELECTED'], 'link' => "javascript:checkSel('?view=userbanlist&do=edit&multiple=1');"); $toolmenu[] = array('icon' => 'delete.gif', 'title' => $_LANG['AD_DELETE_SELECTED'], 'link' => "javascript:checkSel('?view=userbanlist&do=delete&multiple=1');"); cpToolMenu($toolmenu); $fields[] = array('title' => 'id', 'field' => 'id', 'width' => '30'); $fields[] = array('title' => $_LANG['AD_IS_ACTIVE'], 'field' => 'status', 'width' => '55', 'prc' => 'cpYesNo'); $fields[] = array('title' => $_LANG['AD_BANLIST_USER'], 'field' => 'user_id', 'width' => '120', 'filter' => '12', 'prc' => 'cpUserNick'); $fields[] = array('title' => $_LANG['AD_BANLIST_IP'], 'field' => 'ip', 'width' => '100', 'link' => '?view=userbanlist&do=edit&id=%id%', 'filter' => '12'); $fields[] = array('title' => $_LANG['DATE'], 'field' => 'bandate', 'width' => '', 'fdate' => '%d/%m/%Y %H:%i:%s', 'filter' => '12'); $fields[] = array('title' => $_LANG['AD_BANLIST_TIME'], 'field' => 'int_num', 'width' => '55'); $fields[] = array('title' => '', 'field' => 'int_period', 'width' => '70'); $fields[] = array('title' => $_LANG['AD_AUTOREMOVE'], 'field' => 'autodelete', 'width' => '90', 'prc' => 'cpYesNo'); $actions[] = array('title' => $_LANG['EDIT'], 'icon' => 'edit.gif', 'link' => '?view=userbanlist&do=edit&id=%id%'); $actions[] = array('title' => $_LANG['DELETE'], 'icon' => 'delete.gif', 'confirm' => $_LANG['AD_REMOVE_RULE'], 'link' => '?view=userbanlist&do=delete&id=%id%'); cpListTable('cms_banlist', $fields, $actions, '1=1', 'ip DESC'); } if ($do == 'delete') { if (!isset($_REQUEST['item'])) { if ($id >= 0) { dbDelete('cms_banlist', $id); } } else { dbDeleteList('cms_banlist', $_REQUEST['item']); } cmsCore::redirect('?view=userbanlist'); } if ($do == 'submit' || $do == 'update') { if (!cmsCore::validateForm()) { cmsCore::error404(); } $types = array('user_id' => array('user_id', 'int', 0), 'ip' => array('ip', 'str', ''), 'cause' => array('cause', 'str', ''), 'autodelete' => array('autodelete', 'int', 0), 'int_num' => array('int_num', 'int', 0), 'int_period' => array('int_period', 'str', '', create_function('$p', 'if(!in_array($p, array("MONTH","DAY","HOUR","MINUTE"))){ $p = "MINUTE"; } return $p;'))); $items = cmsCore::getArrayFromRequest($types); $error = false; if (!$items['ip']) { $error = true; cmsCore::addSessionMessage($_LANG['AD_NEED_IP'], 'error'); } if ($items['ip'] == $_SERVER['REMOTE_ADDR'] || $items['user_id'] == $inUser->id) { $error = true; cmsCore::addSessionMessage($_LANG['AD_ITS_YOUR_IP'], 'error'); } if (cmsUser::userIsAdmin($items['user_id'])) { $error = true; cmsCore::addSessionMessage($_LANG['AD_ITS_ADMIN'], 'error'); } if ($error) { cmsCore::redirectBack(); } if ($do == 'update') { $inDB->update('cms_banlist', $items, $id); if (empty($_SESSION['editlist'])) { cmsCore::redirect('?view=userbanlist'); } else { cmsCore::redirect('?view=userbanlist&do=edit'); } } $inDB->insert('cms_banlist', $items); $back_url = cmsUser::sessionGet('back_url'); cmsUser::sessionDel('back_url'); cmsCore::redirect($back_url ? $back_url : '?view=userbanlist'); } if ($do == 'add' || $do == 'edit') { $GLOBALS['cp_page_head'][] = '<script language="JavaScript" type="text/javascript" src="/admin/js/banlist.js"></script>'; $toolmenu[] = array('icon' => 'save.gif', 'title' => $_LANG['SAVE'], 'link' => 'javascript:document.addform.submit();'); $toolmenu[] = array('icon' => 'cancel.gif', 'title' => $_LANG['CANCEL'], 'link' => 'javascript:history.go(-1);'); cpToolMenu($toolmenu); if ($do == 'add') { echo '<h3>' . $_LANG['AD_TO_BANLIST_ADD'] . '</h3>'; cpAddPathway($_LANG['AD_TO_BANLIST_ADD']); } else { if (isset($_REQUEST['multiple'])) { if (isset($_REQUEST['item'])) { $_SESSION['editlist'] = cmsCore::request('item', 'array_int', array()); } else { cmsCore::addSessionMessage($_LANG['AD_NO_SELECT_OBJECTS'], 'error'); cmsCore::redirectBack(); } } $ostatok = ''; if (isset($_SESSION['editlist'])) { $item_id = array_shift($_SESSION['editlist']); if (sizeof($_SESSION['editlist']) == 0) { unset($_SESSION['editlist']); } else { $ostatok = '(' . $_LANG['AD_NEXT_IN'] . sizeof($_SESSION['editlist']) . ')'; } } else { $item_id = cmsCore::request('id', 'int', 0); } $mod = $inDB->get_fields('cms_banlist', "id = '{$item_id}'", '*'); if (!$mod) { cmsCore::error404(); } echo '<h3>' . $_LANG['AD_EDIT_RULE'] . ' ' . $ostatok . '</h3>'; cpAddPathway($_LANG['AD_EDIT_RULE']); } ?> <div style="margin-top:2px;padding:10px;border:dotted 1px silver; width:508px;background:#FFFFCC"> <div style="font-weight:bold"><?php echo $_LANG['ATTENTION']; ?> !</div> <div><?php echo $_LANG['AD_CAUTION_INFO_0']; ?> </div> <div><?php echo $_LANG['AD_CAUTION_INFO_1']; ?> </div> </div> <form id="addform" name="addform" method="post" action="index.php?view=userbanlist"> <input type="hidden" name="csrf_token" value="<?php echo cmsUser::getCsrfToken(); ?> " /> <table width="530" border="0" cellspacing="5" class="proptable"> <tr> <td width="150" valign="top"><div><strong><?php echo $_LANG['AD_BANLIST_USER']; ?> : </strong></div></td> <?php if ($do == 'add' && $to) { $mod['user_id'] = $to; $mod['ip'] = $inDB->get_field('cms_users', 'id=' . $to, 'last_ip'); } ?> <td valign="top"> <select name="user_id" id="user_id" onchange="loadUserIp()" style="width: 250px;"> <option value="0" <?php if (@(!$mod['user_id'])) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_WHITHOUT_USER']; ?> </option> <?php if (isset($mod['user_id'])) { echo $inCore->getListItems('cms_users', $mod['user_id'], 'nickname', 'ASC', 'is_deleted=0 AND is_locked=0', 'id', 'nickname'); } else { echo $inCore->getListItems('cms_users', 0, 'nickname', 'ASC', 'is_deleted=0 AND is_locked=0', 'id', 'nickname'); } ?> </select> </td> </tr> <tr> <td valign="top"><strong><?php echo $_LANG['AD_BANLIST_IP']; ?> :</strong></td> <td valign="top"><input name="ip" type="text" id="ip" style="width: 244px;" value="<?php echo @$mod['ip']; ?> "/></td> </tr> <tr> <td valign="top"><strong><?php echo $_LANG['AD_BANLIST_CAUSE']; ?> :</strong></td> <td valign="top"> <textarea name="cause" style="width:240px" rows="5"><?php echo @$mod['cause']; ?> </textarea> </td> </tr> <?php $forever = false; if (!@$mod['int_num']) { $forever = true; } ?> <tr> <td valign="top"><strong><?php echo $_LANG['AD_BAN_FOREVER']; ?> </strong></td> <td valign="top"><input type="checkbox" name="forever" value="1" <?php if ($forever) { echo 'checked="checked"'; } ?> onclick="$('tr.bantime').toggle();"/></td> </tr> <tr class="bantime"> <td valign="top"><strong><?php echo $_LANG['AD_BAN_FOR_TIME']; ?> </strong> </td> <td valign="top"><p> <input name="int_num" type="text" id="int_num" size="5" value="<?php echo @(int) $mod['int_num']; ?> "/> <select name="int_period" id="int_period"> <option value="MINUTE" <?php if (@mb_strstr($mod['int_period'], 'MINUTE')) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['MINUTE10']; ?> </option>] <option value="HOUR" <?php if (@mb_strstr($mod['int_period'], 'HOUR')) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['HOUR10']; ?> </option> <option value="DAY" <?php if (@mb_strstr($mod['int_period'], 'DAY')) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['DAY10']; ?> </option> <option value="MONTH" <?php if (@mb_strstr($mod['int_period'], 'MONTH')) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['MONTH10']; ?> </option> </select> </p> <p><label><input name="autodelete" type="checkbox" id="autodelete" value="1" <?php if ($mod['autodelete']) { echo 'checked="checked"'; } ?> /> <?php echo $_LANG['AD_REMOVE_BAN']; ?> </label></p> </td> </tr> <?php if ($forever) { ?> <script type="text/javascript">$('tr.bantime').hide();</script><?php } ?> </table> <p> <label> <input name="add_mod" type="submit" id="add_mod" <?php if ($do == 'add') { echo 'value="' . $_LANG['AD_TO_BANLIST_ADD'] . '"'; } else { echo 'value="' . $_LANG['SAVE'] . '"'; } ?> /> </label> <label><span style="margin-top:15px"> <input name="back" type="button" id="back" value="<?php echo $_LANG['CANCEL']; ?> " onclick="window.history.back();"/> </span></label> <input name="do" type="hidden" id="do" <?php if ($do == 'add') { echo 'value="submit"'; } else { echo 'value="update"'; } ?> /> <?php if ($do == 'edit') { echo '<input name="id" type="hidden" value="' . $mod['id'] . '" />'; } ?> </p> </form> <?php } }
function applet_cron() { cmsCore::loadClass('cron'); global $_LANG; global $adminAccess; if (!cmsUser::isAdminCan('admin/config', $adminAccess)) { cpAccessDenied(); } $GLOBALS['cp_page_title'] = $_LANG['AD_CRON_MISSION']; cpAddPathway($_LANG['AD_SITE_SETTING'], 'index.php?view=config'); cpAddPathway($_LANG['AD_CRON_MISSION'], 'index.php?view=cron'); $do = cmsCore::request('do', 'str', 'list'); $id = cmsCore::request('id', 'int', '0'); if ($do == 'list') { $toolmenu = array(); $toolmenu[0]['icon'] = 'new.gif'; $toolmenu[0]['title'] = $_LANG['AD_CREATE_CRON_MISSION']; $toolmenu[0]['link'] = "?view=cron&do=add"; cpToolMenu($toolmenu); $items = cmsCron::getJobs(false); $tpl_file = 'admin/cron.php'; $tpl_dir = file_exists(TEMPLATE_DIR . $tpl_file) ? TEMPLATE_DIR : DEFAULT_TEMPLATE_DIR; include $tpl_dir . $tpl_file; } if ($do == 'show') { if ($id) { cmsCron::jobEnabled($id, true); } echo '1'; exit; } if ($do == 'hide') { if ($id) { cmsCron::jobEnabled($id, false); } echo '1'; exit; } if ($do == 'delete') { if ($id) { cmsCron::removeJobById($id); } cmsCore::redirect('index.php?view=cron'); } if ($do == 'execute') { if ($id) { $job_result = cmsCron::executeJobById($id); } if ($job_result) { cmsCore::addSessionMessage($_LANG['AD_MISSION_SUCCESS'], 'success'); } else { cmsCore::addSessionMessage($_LANG['AD_MISSION_ERROR'], 'error'); } cmsCore::redirect('index.php?view=cron'); } if ($do == 'submit') { if (!cmsCore::validateForm()) { cmsCore::error404(); } $job_name = cmsCore::request('job_name', 'str'); $comment = cmsCore::request('comment', 'str'); $job_interval = cmsCore::request('job_interval', 'int'); $enabled = cmsCore::request('enabled', 'int'); $component = cmsCore::request('component', 'str'); $model_method = cmsCore::request('model_method', 'str'); $custom_file = cmsCore::request('custom_file', 'str'); $custom_file = mb_stripos($custom_file, 'image') || mb_stripos($custom_file, 'upload') || mb_stripos($custom_file, 'cache') ? '' : $custom_file; $custom_file = preg_replace('/\\.+\\//', '', $custom_file); $class_name = cmsCore::request('class_name', 'str'); $class_method = cmsCore::request('class_method', 'str'); cmsCron::registerJob($job_name, array('interval' => $job_interval, 'component' => $component, 'model_method' => $model_method, 'comment' => $comment, 'custom_file' => $custom_file, 'enabled' => $enabled, 'class_name' => $class_name, 'class_method' => $class_method)); cmsCore::redirect('index.php?view=cron'); } if ($do == 'update') { if (!cmsCore::validateForm()) { cmsCore::error404(); } if (!$id) { cmsCore::halt(); } $job_name = cmsCore::request('job_name', 'str'); $comment = cmsCore::request('comment', 'str'); $job_interval = cmsCore::request('job_interval', 'int'); $enabled = cmsCore::request('enabled', 'int'); $component = cmsCore::request('component', 'str'); $model_method = cmsCore::request('model_method', 'str'); $custom_file = cmsCore::request('custom_file', 'str'); $custom_file = mb_stripos($custom_file, 'image') || mb_stripos($custom_file, 'upload') || mb_stripos($custom_file, 'cache') ? '' : $custom_file; $custom_file = preg_replace('/\\.+\\//', '', $custom_file); $class_name = cmsCore::request('class_name', 'str'); $class_method = cmsCore::request('class_method', 'str'); cmsCron::updateJob($id, array('job_name' => $job_name, 'job_interval' => $job_interval, 'component' => $component, 'model_method' => $model_method, 'comment' => $comment, 'custom_file' => $custom_file, 'is_enabled' => $enabled, 'class_name' => $class_name, 'class_method' => $class_method)); cmsCore::redirect('index.php?view=cron'); } if ($do == 'edit' || $do == 'add') { $toolmenu = array(); $toolmenu[0]['icon'] = 'save.gif'; $toolmenu[0]['title'] = $_LANG['SAVE']; $toolmenu[0]['link'] = 'javascript:document.addform.submit();'; $toolmenu[1]['icon'] = 'cancel.gif'; $toolmenu[1]['title'] = $_LANG['CANCEL']; $toolmenu[1]['link'] = 'javascript:history.go(-1);'; cpToolMenu($toolmenu); if ($do == 'edit') { $mod = cmsCron::getJobById($id); echo '<h3>' . $_LANG['AD_EDIT_MISSION'] . '</h3>'; cpAddPathway($mod['job_name'], 'index.php?view=cron&do=edit&id=' . $mod['id']); } else { echo '<h3>' . $_LANG['AD_CREATE_CRON_MISSION'] . '</h3>'; cpAddPathway($_LANG['AD_CREATE_CRON_MISSION'], 'index.php?view=cron&do=add'); } ?> <form action="index.php?view=cron" method="post" enctype="multipart/form-data" name="addform" id="addform"> <input type="hidden" name="csrf_token" value="<?php echo cmsUser::getCsrfToken(); ?> " /> <table width="750" border="0" cellpadding="0" cellspacing="10" class="proptable"> <tr> <td width="300" valign="middle"> <strong><?php echo $_LANG['TITLE']; ?> :</strong><br/> <span class="hinttext"><?php echo $_LANG['AD_ONLY_LATIN']; ?> </span> </td> <td width="" valign="middle"> <input name="job_name" type="text" style="width:220px" value="<?php echo @$mod['job_name']; ?> " /> </td> </tr> <tr> <td width="" valign="middle"> <strong><?php echo $_LANG['DESCRIPTION']; ?> : </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_ONLY_200_SIMBOLS']; ?> </span> </td> <td valign="middle"> <input name="comment" type="text" maxlength="200" style="width:400px" value="<?php echo htmlspecialchars($mod['comment']); ?> " /> </td> </tr> <tr> <td width="" valign="middle"> <strong><?php echo $_LANG['AD_MISSION_ON']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_MISSION_OFF']; ?> </span> </td> <td valign="middle"> <label> <input name="enabled" type="radio" value="1" <?php if ($mod['is_enabled']) { echo 'checked="checked"'; } ?> /> <?php echo $_LANG['YES']; ?> </label> <label> <input name="enabled" type="radio" value="0" <?php if (!$mod['is_enabled']) { echo 'checked="checked"'; } ?> /> <?php echo $_LANG['NO']; ?> </label> </td> </tr> <tr> <td width="" valign="middle"> <strong><?php echo $_LANG['AD_MISSION_INTERVAL']; ?> :</strong><br/> <span class="hinttext"><?php echo $_LANG['AD_MISSION_PERIOD']; ?> </span> </td> <td valign="middle"> <input name="job_interval" type="text" maxlength="4" style="width:50px" value="<?php echo @$mod['job_interval']; ?> " /> <?php echo $_LANG['HOUR1'] . '.'; ?> </td> </tr> <tr> <td width="" valign="middle"> <strong><?php echo $_LANG['AD_PHP_FILE']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_EXAMPLE']; ?> : <strong>includes/myphp/test.php</strong></span><br/> </td> <td valign="middle"> <input name="custom_file" type="text" maxlength="250" style="width:220px" value="<?php echo @$mod['custom_file']; ?> " /> </td> </tr> <tr> <td width="" valign="middle"> <strong><?php echo $_LANG['AD_COMPONENT']; ?> : </strong><br/> </td> <td valign="middle"> <input name="component" type="text" maxlength="250" style="width:220px" value="<?php echo @$mod['component']; ?> " /> </td> </tr> <tr> <td width="" valign="middle"> <strong><?php echo $_LANG['AD_METHOD']; ?> </strong><br/> </td> <td valign="middle"> <input name="model_method" type="text" maxlength="250" style="width:220px" value="<?php echo @$mod['model_method']; ?> " /> </td> </tr> <tr> <td width="" valign="middle"> <strong><?php echo icms_ucfirst($_LANG['AD_CLASS']); ?> </strong><br/> <span class="hinttext"> <span style="color:#666;font-family: mono"><?php echo $_LANG['AD_FILE_CLASS']; ?> </span>, <?php echo $_LANG['AD_EXAMPLE']; ?> <strong>actions|cmsActions</strong> <?php echo $_LANG['OR']; ?> <br/> <span style="color:#666;font-family: mono"><?php echo $_LANG['AD_CLASS']; ?> </span>, <?php echo $_LANG['AD_EXAMPLE']; ?> <strong>cmsDatabase</strong> </span> </td> <td valign="top"> <input name="class_name" type="text" maxlength="50" style="width:220px" value="<?php echo @$mod['class_name']; ?> " /> </td> </tr> <tr> <td width="" valign="middle"> <strong><?php echo $_LANG['AD_CLASS_METHOD']; ?> </strong><br/> </td> <td valign="middle"> <input name="class_method" type="text" maxlength="50" style="width:220px" value="<?php echo @$mod['class_method']; ?> " /> </td> </tr> </table> <p> <?php if ($do == 'edit') { ?> <input name="do" type="hidden" id="do" value="update" /> <input name="add_mod" type="submit" id="add_mod" value="<?php echo $_LANG['AD_SAVE_CRON_MISSION']; ?> " /> <?php } else { ?> <input name="do" type="hidden" id="do" value="submit" /> <input name="add_mod" type="submit" id="add_mod" value="<?php echo $_LANG['AD_CREATE_CRON_MISSION']; ?> " /> <?php } ?> <span style="margin-top:15px"> <input name="back2" type="button" id="back2" value="<?php echo $_LANG['CANCEL']; ?> " onclick="window.history.back();" /> </span> <?php if ($do == 'edit') { echo '<input name="id" type="hidden" value="' . $mod['id'] . '" />'; } ?> </p> </form> <?php } }
function applet_cats() { $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; $GLOBALS['cp_page_title'] = $_LANG['AD_ARTICLES']; cpAddPathway($_LANG['AD_ARTICLES'], 'index.php?view=tree'); cmsCore::loadModel('content'); $model = new cms_model_content(); $do = cmsCore::request('do', 'str', 'add'); $id = cmsCore::request('id', 'int', -1); define('IS_BILLING', $inCore->isComponentInstalled('billing')); if (IS_BILLING) { cmsCore::loadClass('billing'); } if ($do == 'delete') { $is_with_content = cmsCore::inRequest('content'); $model->deleteCategory($id, $is_with_content); cmsCore::addSessionMessage($is_with_content ? $_LANG['AD_CATEGORY_REMOVED'] : $_LANG['AD_CATEGORY_REMOVED_NOT_ARTICLE'], 'success'); cmsCore::redirect('?view=tree'); } if ($do == 'update') { if (!cmsCore::validateForm()) { cmsCore::error404(); } if (isset($_REQUEST['id'])) { $category['id'] = cmsCore::request('id', 'int', 0); $category['title'] = cmsCore::request('title', 'str', $_LANG['AD_SECTION_UNTITLED']); $category['parent_id'] = cmsCore::request('parent_id', 'int'); $category['description'] = cmsCore::request('description', 'html'); $category['description'] = $inDB->escape_string($category['description']); $category['published'] = cmsCore::request('published', 'int', 0); $category['showdate'] = cmsCore::request('showdate', 'int', 0); $category['showcomm'] = cmsCore::request('showcomm', 'int', 0); $category['orderby'] = cmsCore::request('orderby', 'str'); $category['orderto'] = cmsCore::request('orderto', 'str'); $category['modgrp_id'] = cmsCore::request('modgrp_id', 'int', 0); $category['maxcols'] = cmsCore::request('maxcols', 'int', 0); $category['showtags'] = cmsCore::request('showtags', 'int', 0); $category['showrss'] = cmsCore::request('showrss', 'int', 0); $category['showdesc'] = cmsCore::request('showdesc', 'int', 0); $category['is_public'] = cmsCore::request('is_public', 'int', 0); $category['url'] = cmsCore::request('url', 'str'); if ($category['url']) { $category['url'] = cmsCore::strToURL($category['url'], $model->config['is_url_cyrillic']); } $category['tpl'] = cmsCore::request('tpl', 'str', 'com_content_view.tpl'); $category['cost'] = cmsCore::request('cost', 'str', ''); if (!is_numeric($category['cost'])) { $category['cost'] = ''; } $album = array(); $album['id'] = cmsCore::request('album_id', 'int', 0); $album['header'] = cmsCore::request('album_header', 'str', ''); $album['orderby'] = cmsCore::request('album_orderby', 'str', ''); $album['orderto'] = cmsCore::request('album_orderto', 'str', ''); $album['maxcols'] = cmsCore::request('album_maxcols', 'int', 0); $album['max'] = cmsCore::request('album_max', 'int', 0); if ($album['id']) { $category['photoalbum'] = serialize($album); } else { $category['photoalbum'] = ''; } // получаем старую категорию $old = $inDB->get_fields('cms_category', "id='{$category['id']}'", '*'); // если сменили категорию if ($old['parent_id'] != $category['parent_id']) { // перемещаем ее в дереве $inCore->nestedSetsInit('cms_category')->MoveNode($category['id'], $category['parent_id']); // обновляем сеолинки категорий $inDB->updateNsCategorySeoLink('cms_category', $category['id'], $model->config['is_url_cyrillic']); // Обновляем ссылки меню на категории $model->updateCatMenu(); // обновляем сеолинки всех вложенных статей $model->updateArticlesSeoLink($category['id']); cmsCore::addSessionMessage($_LANG['AD_CATEGORY_NEW_URL'], 'info'); } $inDB->update('cms_category', $category, $category['id']); // если пришел запрос на обновление ссылок // и категория не менялась - если менялась, мы выше все обновили if (cmsCore::inRequest('update_seolink') && $old['parent_id'] == $category['parent_id']) { // обновляем сеолинки категорий $inDB->updateNsCategorySeoLink('cms_category', $category['id'], $model->config['is_url_cyrillic']); // Обновляем ссылки меню на категории $model->updateCatMenu(); // обновляем сеолинки всех вложенных статей $model->updateArticlesSeoLink($category['id']); cmsCore::addSessionMessage($_LANG['AD_SECTION_AND_ARTICLES_NEW_URL'], 'info'); } if (!cmsCore::request('is_access', 'int', 0)) { $showfor = $_REQUEST['showfor']; cmsCore::setAccess($category['id'], $showfor, 'category'); } else { cmsCore::clearAccess($category['id'], 'category'); } cmsCore::addSessionMessage($_LANG['AD_CATEGORY_SAVED'], 'success'); if (!isset($_SESSION['editlist']) || @sizeof($_SESSION['editlist']) == 0) { cmsCore::redirect('?view=tree&cat_id=' . $category['id']); } else { cmsCore::redirect('?view=tree'); } } } if ($do == 'submit') { if (!cmsCore::validateForm()) { cmsCore::error404(); } $category['title'] = cmsCore::request('title', 'str', $_LANG['AD_CATEGORY_UNTITLED']); $category['url'] = cmsCore::request('url', 'str'); if ($category['url']) { $category['url'] = cmsCore::strToURL($category['url']); } $category['parent_id'] = cmsCore::request('parent_id', 'int'); $category['description'] = cmsCore::request('description', 'html'); $category['description'] = $inDB->escape_string($category['description']); $category['published'] = cmsCore::request('published', 'int', 0); $category['showdate'] = cmsCore::request('showdate', 'int', 0); $category['showcomm'] = cmsCore::request('showcomm', 'int', 0); $category['orderby'] = cmsCore::request('orderby', 'str'); $category['orderto'] = cmsCore::request('orderto', 'str'); $category['modgrp_id'] = cmsCore::request('modgrp_id', 'int', 0); $category['maxcols'] = cmsCore::request('maxcols', 'int', 0); $category['showtags'] = cmsCore::request('showtags', 'int', 0); $category['showrss'] = cmsCore::request('showrss', 'int', 0); $category['showdesc'] = cmsCore::request('showdesc', 'int', 0); $category['is_public'] = cmsCore::request('is_public', 'int', 0); $category['tpl'] = cmsCore::request('tpl', 'str', 'com_content_view.tpl'); $category['cost'] = cmsCore::request('cost', 'str', 0); if (!is_numeric($category['cost'])) { $category['cost'] = ''; } $album = array(); $album['id'] = cmsCore::request('album_id', 'int', 0); $album['header'] = cmsCore::request('album_header', 'str', ''); $album['orderby'] = cmsCore::request('album_orderby', 'str', ''); $album['orderto'] = cmsCore::request('album_orderto', 'str', ''); $album['maxcols'] = cmsCore::request('album_maxcols', 'int', 0); $album['max'] = cmsCore::request('album_max', 'int', 0); if ($album['id']) { $category['photoalbum'] = serialize($album); } else { $category['photoalbum'] = ''; } $ns = $inCore->nestedSetsInit('cms_category'); $category['id'] = $ns->AddNode($category['parent_id']); $category['seolink'] = cmsCore::generateCatSeoLink($category, 'cms_category', $model->config['is_url_cyrillic']); if ($category['id']) { $inDB->update('cms_category', $category, $category['id']); if (!cmsCore::request('is_access', 'int', 0)) { $showfor = $_REQUEST['showfor']; cmsCore::setAccess($category['id'], $showfor, 'category'); } else { cmsCore::clearAccess($category['id'], 'category'); } } $inmenu = cmsCore::request('createmenu', 'str', ''); if ($inmenu) { createMenuItem($inmenu, $category['id'], $category['title']); } cmsCore::addSessionMessage($_LANG['AD_CATEGORY_ADD'], 'success'); cmsCore::redirect('?view=tree'); } if ($do == 'add' || $do == 'edit') { require '../includes/jwtabs.php'; $GLOBALS['cp_page_head'][] = jwHeader(); $toolmenu = array(); $toolmenu[0]['icon'] = 'save.gif'; $toolmenu[0]['title'] = $_LANG['SAVE']; $toolmenu[0]['link'] = 'javascript:document.addform.submit();'; $toolmenu[1]['icon'] = 'cancel.gif'; $toolmenu[1]['title'] = $_LANG['CANCEL']; $toolmenu[1]['link'] = 'javascript:history.go(-1);'; cpToolMenu($toolmenu); $menu_list = cpGetList('menu'); if ($do == 'add') { echo '<h3>' . $_LANG['AD_CREATE_SECTION'] . '</h3>'; cpAddPathway($_LANG['AD_CREATE_SECTION'], 'index.php?view=cats&do=add'); $mod['tpl'] = 'com_content_view.tpl'; } else { if (isset($_REQUEST['multiple'])) { if (isset($_REQUEST['item'])) { $_SESSION['editlist'] = $_REQUEST['item']; } else { echo '<p class="error">' . $_LANG['AD_NO_SELECT_OBJECTS'] . '</p>'; return; } } $ostatok = ''; if (isset($_SESSION['editlist'])) { $id = array_shift($_SESSION['editlist']); if (sizeof($_SESSION['editlist']) == 0) { unset($_SESSION['editlist']); } else { $ostatok = '(' . $_LANG['AD_NEXT_IN'] . sizeof($_SESSION['editlist']) . ')'; } } else { $id = (int) $_REQUEST['id']; } $sql = "SELECT * FROM cms_category WHERE id = {$id} LIMIT 1"; $result = $inDB->query($sql); if ($inDB->num_rows($result)) { $mod = $inDB->fetch_assoc($result); if (@$mod['photoalbum']) { $mod['photoalbum'] = unserialize($mod['photoalbum']); } } echo '<h3>' . $_LANG['AD_EDIT_SECTION'] . $ostatok . '</h3>'; cpAddPathway($mod['title'], 'index.php?view=cats&do=edit&id=' . $mod['id']); } ?> <form id="addform" name="addform" method="post" action="index.php"> <input type="hidden" name="csrf_token" value="<?php echo cmsUser::getCsrfToken(); ?> " /> <input type="hidden" name="view" value="cats" /> <table class="proptable" width="100%" cellpadding="15" cellspacing="2"> <tr> <!-- главная ячейка --> <td valign="top"> <table border="0" cellpadding="0" cellspacing="5" width="100%"> <tbody> <tr> <td> <strong><?php echo $_LANG['AD_TITLE_PARTITION']; ?> </strong> </td> <td width="190" style="padding-left:6px"> <strong><?php echo $_LANG['AD_TEMPLATE_PARTITION']; ?> </strong> </td> </tr> <tr> <td> <input name="title" type="text" id="title" style="width:100%" value="<?php echo htmlspecialchars($mod['title']); ?> " /> </td> <td style="padding-left:6px"> <input name="tpl" type="text" style="width:98%" value="<?php echo @$mod['tpl']; ?> " /> </td> </tr> </tbody> </table> <div><strong><?php echo $_LANG['AD_PARENT_PARTITION']; ?> </strong></div> <div> <div class="parent_notice" style="color:red;margin:4px 0px;display:none"><?php echo $_LANG['AD_ANOTHER_PARENT']; ?> </div> <select name="parent_id" size="12" id="parent_id" style="width:100%" onchange="if($(this).val()=='<?php echo $mod['id']; ?> '){ $('.parent_notice').show();$('#add_mod').prop('disabled', true); } else { $('.parent_notice').hide();$('#add_mod').prop('disabled', false); }"> <?php $rootid = $inDB->getNsRootCatId('cms_category'); ?> <option value="<?php echo $rootid; ?> " <?php if (@$mod['parent_id'] == $rootid || !isset($mod['parent_id'])) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_SECTION']; ?> </option> <?php if (isset($mod['parent_id'])) { echo $inCore->getListItemsNS('cms_category', $mod['parent_id']); } else { echo $inCore->getListItemsNS('cms_category'); } ?> </select> </div> <div><strong><?php echo $_LANG['AD_SECTION_DESCRIPT']; ?> </strong></div> <div> <?php $inCore->insertEditor('description', $mod['description'], '250', '100%'); ?> </div> </td> <!-- боковая --> <td valign="top" width="300" style="background:#ECECEC;"> <?php ob_start(); ?> {tab=<?php echo $_LANG['AD_TAB_PUBLISH']; ?> } <table width="100%" cellpadding="0" cellspacing="0" border="0" class="checklist"> <tr> <td width="20"><input type="checkbox" name="published" id="published" value="1" <?php if ($mod['published'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="published"><strong><?php echo $_LANG['AD_PUBLIC_SECTION']; ?> </strong></label></td> </tr> </table> <div style=" <?php if ($do == 'edit') { ?> display:none;<?php } ?> " class="url_cat"> <div style="margin-top:15px"> <strong><?php echo $_LANG['AD_SECTION_URL']; ?> </strong><br/> <div style="color:gray"><?php echo $_LANG['AD_FROM_TITLE']; ?> </div> </div> <div> <input type="text" name="url" value="<?php echo $mod['url']; ?> " style="width:99%"/> </div> </div> <?php if ($do == 'edit') { ?> <table width="100%" cellpadding="0" cellspacing="0" border="0" style="margin-top:15px"> <tr> <td width="20"><input type="checkbox" name="update_seolink" id="update_seolink" value="1" onclick="$('.url_cat').slideToggle('fast');" /></td> <td><label for="update_seolink"><strong><?php echo $_LANG['AD_NEW_LINK']; ?> </strong></label></td> </tr> </table> <div class="url_cat" style="display:none;"><strong style="color:#F00;"><?php echo $_LANG['ATTENTION']; ?> :</strong> <?php echo $_LANG['AD_NO_LINKS']; ?> </div> <?php } ?> <div style="margin-top:20px"><strong><?php echo $_LANG['AD_SORT_ARTICLES']; ?> </strong></div> <div> <select name="orderby" id="orderby" style="width:100%"> <option value="pubdate" <?php if (@$mod['orderby'] == 'pubdate') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_CALENDAR']; ?> </option> <option value="title" <?php if (@$mod['orderby'] == 'title') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_TITLE']; ?> </option> <option value="ordering" <?php if (@$mod['orderby'] == 'ordering') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_ORDER']; ?> </option> <option value="hits" <?php if (@$mod['orderby'] == 'hits') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_VIEWS']; ?> </option> </select> <select name="orderto" id="orderto" style="width:100%"> <option value="ASC" <?php if (@$mod['orderto'] == 'ASC') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_INCREMENT']; ?> </option> <option value="DESC" <?php if (@$mod['orderto'] == 'DESC') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_DECREMENT']; ?> </option> </select> </div> <div style="margin-top:20px"><strong><?php echo $_LANG['AD_HOW_MANY_COLUMNS']; ?> </strong></div> <div> <?php if (!isset($mod['maxcols'])) { $mod['maxcols'] = 1; } ?> <input class="uispin" name="maxcols" type="text" id="maxcols" style="width:99%" value="<?php echo @$mod['maxcols']; ?> " /> </div> <div style="margin-top:20px"><strong><?php echo $_LANG['AD_HOW_PUBLISH_SET']; ?> </strong></div> <table width="100%" cellpadding="0" cellspacing="0" border="0" class="checklist"> <tr> <td width="20"><input type="checkbox" name="showdesc" id="showdesc" value="1" <?php if ($mod['showdesc'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="showdesc"><?php echo $_LANG['AD_PREVIEW']; ?> </label></td> </tr> <tr> <td width="20"><input type="checkbox" name="showdate" id="showdate" value="1" <?php if ($mod['showdate'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="showdate"><?php echo $_LANG['AD_CALENDAR_VIEW']; ?> </label></td> </tr> <tr> <td width="20"><input type="checkbox" name="showcomm" id="showcomm" value="1" <?php if ($mod['showcomm'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="showcomm"><?php echo $_LANG['AD_HOW_MANY_COMENTS']; ?> </label></td> </tr> <tr> <td width="20"><input type="checkbox" name="showtags" id="showtags" value="1" <?php if ($mod['showtags'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="showtags"><?php echo $_LANG['AD_HOW_MANY_TAGS']; ?> </label></td> </tr> <tr> <td width="20"><input type="checkbox" name="showrss" id="showrss" value="1" <?php if ($mod['showrss'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="showrss"><?php echo $_LANG['AD_RSS_VIEW']; ?> </label></td> </tr> </table> <?php if ($do == 'add') { ?> <div style="margin-top:25px"> <strong><?php echo $_LANG['AD_CREATE_LINK']; ?> </strong> </div> <div> <select name="createmenu" id="createmenu" style="width:99%"> <option value="0" selected="selected"><?php echo $_LANG['AD_DONT_CREATE']; ?> </option> <?php foreach ($menu_list as $menu) { ?> <option value="<?php echo $menu['id']; ?> "> <?php echo $menu['title']; ?> </option> <?php } ?> </select> </div> <?php } ?> {tab=<?php echo $_LANG['AD_EDITORS']; ?> } <div style="margin-top:10px"> <strong><?php echo $_LANG['AD_USERS_ARTICLES']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_IF_SWITCH']; ?> </span> </div> <div> <select name="is_public" style="width:100%"> <option value="0" <?php if (!$mod['is_public']) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['NO']; ?> </option> <option value="1" <?php if ($mod['is_public']) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['YES']; ?> </option> </select> </div> <?php if (IS_BILLING) { ?> <div style="margin-top:15px"> <strong><?php echo $_LANG['AD_COST_ARTICLES_ADD']; ?> </strong><br/> <div style="color:gray"><?php echo $_LANG['AD_COST_ARTICLES_BY_DEFAULT']; ?> </div> </div> <div> <input type="text" name="cost" value="<?php echo $mod['cost']; ?> " style="width:50px"/><?php echo $_LANG['BILLING_POINT10']; ?> </div> <?php } ?> <div style="margin-top:20px"> <strong><?php echo $_LANG['AD_EDITORS_SECTION']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_USERS_CAN_ADMIN']; ?> </span> </div> <div> <select name="modgrp_id" id="modgrp_id" style="width:100%"> <option value="0" <?php if (!isset($mod['modgrp_id']) || @$mod['modgrp_id'] == 0) { echo 'selected'; } ?> ><?php echo $_LANG['AD_ONLY_ADMINS']; ?> </option> <?php if (@$mod['modgrp_id']) { echo $inCore->getListItems('cms_user_groups', $mod['modgrp_id'], 'id', 'ASC', 'is_admin = 0'); } else { echo $inCore->getListItems('cms_user_groups', 0, 'id', 'ASC', 'is_admin = 0'); } ?> </select> </div> {tab=<?php echo $_LANG['AD_FOTO']; ?> } <div style="margin-top:10px"> <strong><?php echo $_LANG['AD_PHOTOALBUM_CONNECT']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_PHOTO_BY_ARTICLES']; ?> </span> </div> <div> <select name="album_id" id="album_id" style="width:100%" onchange="choosePhotoAlbum()"> <option value="0" <?php if (!isset($mod['photoalbum']['id']) || !@$mod['photoalbum']['id']) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_DONT_CONNECT']; ?> </option> <?php //FIND ROOT if (isset($mod['photoalbum']['id'])) { echo $inCore->getListItemsNS('cms_photo_albums', $mod['photoalbum']['id']); } else { echo $inCore->getListItemsNS('cms_photo_albums'); } ?> </select> </div> <div id="con_photoalbum" <?php if (!isset($mod['photoalbum']['id']) || !$mod['photoalbum']['id']) { echo 'style="display:none;"'; } ?> > <div style="margin-top:20px"> <strong><?php echo $_LANG['AD_TITLE']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_OVER_PHOTOS']; ?> </span> </div> <div> <input name="album_header" type="text" id="album_header" style="width:99%" value="<?php echo @$mod['photoalbum']['header']; ?> " /> </div> <div style="margin-top:20px"> <strong><?php echo $_LANG['AD_PHOTOS_SORT']; ?> </strong> </div> <div> <select name="album_orderby" id="album_orderby" style="width:100%"> <option value="title" <?php if (@$mod['photoalbum']['orderby'] == 'title') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_ALPHABET']; ?> </option> <option value="pubdate" <?php if (@$mod['photoalbum']['orderby'] == 'pubdate') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_CALENDAR']; ?> </option> <option value="rating" <?php if (@$mod['photoalbum']['orderby'] == 'rating') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_RATING']; ?> </option> <option value="hits" <?php if (@$mod['photoalbum']['orderby'] == 'hits') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_VIEWS']; ?> </option> </select> <select name="album_orderto" id="album_orderto" style="width:100%"> <option value="desc" <?php if (@$mod['photoalbum']['orderto'] == 'desc') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_DECREMENT']; ?> </option> <option value="asc" <?php if (@$mod['photoalbum']['orderto'] == 'asc') { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_BY_INCREMENT']; ?> </option> </select> </div> <div style="margin-top:20px"> <strong><?php echo $_LANG['AD_HOW_MANY_COLUMNS']; ?> </strong> </div> <div> <?php if (!isset($mod['photoalbum']['maxcols'])) { $mod['photoalbum']['maxcols'] = 2; } ?> <input name="album_maxcols" type="text" id="album_maxcols" style="width:99%" value="<?php echo @$mod['photoalbum']['maxcols']; ?> "/> </div> <div style="margin-top:20px"> <strong><?php echo $_LANG['AD_HOW_MANY_PHOTO']; ?> </strong> </div> <div> <?php if (!isset($mod['photoalbum']['max'])) { $mod['photoalbum']['max'] = 8; } ?> <input name="album_max" type="text" id="album_max" style="width:99%" value="<?php echo @$mod['photoalbum']['max']; ?> "/> </div> </div> {tab=<?php echo $_LANG['AD_TAB_ACCESS']; ?> } <table width="100%" cellpadding="0" cellspacing="0" border="0" class="checklist" style="margin-top:5px"> <tr> <td width="20"> <?php $sql = "SELECT * FROM cms_user_groups"; $result = $inDB->query($sql); $style = 'disabled="disabled"'; $public = 'checked="checked"'; if ($do == 'edit') { $sql2 = "SELECT * FROM cms_content_access WHERE content_id = " . $mod['id'] . " AND content_type = 'category'"; $result2 = $inDB->query($sql2); $ord = array(); if ($inDB->num_rows($result2)) { $public = ''; $style = ''; while ($r = $inDB->fetch_assoc($result2)) { $ord[] = $r['group_id']; } } } ?> <input name="is_access" type="checkbox" id="is_public" onclick="checkGroupList()" value="1" <?php echo $public; ?> /> </td> <td><label for="is_public"><strong><?php echo $_LANG['AD_SHARE']; ?> </strong></label></td> </tr> </table> <div style="padding:5px"> <span class="hinttext"> <?php echo $_LANG['AD_IF_NOTED']; ?> </span> </div> <div style="margin-top:10px;padding:5px;padding-right:0px;" id="grp"> <div> <strong><?php echo $_LANG['AD_GROUPS_VIEW']; ?> </strong><br /> <span class="hinttext"> <?php echo $_LANG['AD_SELECT_MULTIPLE_CTRL']; ?> </span> </div> <div> <?php echo '<select style="width: 99%" name="showfor[]" id="showin" size="6" multiple="multiple" ' . $style . '>'; if ($inDB->num_rows($result)) { while ($item = $inDB->fetch_assoc($result)) { echo '<option value="' . $item['id'] . '"'; if ($do == 'edit') { if (inArray($ord, $item['id'])) { echo 'selected="selected"'; } } echo '>'; echo $item['title'] . '</option>'; } } echo '</select>'; ?> </div> </div> {/tabs} <?php echo jwTabs(ob_get_clean()); ?> </td> </tr> </table> <p> <input name="add_mod" type="submit" id="add_mod" <?php if ($do == 'add') { echo 'value="' . $_LANG['AD_SAVE_SECTION'] . '"'; } else { echo 'value="' . $_LANG['AD_SAVE_SECTION'] . '"'; } ?> /> <input name="back" type="button" id="back" value="<?php echo $_LANG['CANCEL']; ?> " onclick="window.history.back();"/> <input name="do" type="hidden" id="do" <?php if ($do == 'add') { echo 'value="submit"'; } else { echo 'value="update"'; } ?> /> <?php if ($do == 'edit') { echo '<input name="id" type="hidden" value="' . $mod['id'] . '" />'; } ?> </p> </form> <script type="text/javascript"> function choosePhotoAlbum(){ id = $('select[name=album_id]').val(); if(id != 0){ $('#con_photoalbum').fadeIn(); } else { $('#con_photoalbum').hide(); } } </script> <?php } }
function applet_content() { $inCore = cmsCore::getInstance(); $inUser = cmsUser::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; //check access global $adminAccess; if (!cmsUser::isAdminCan('admin/content', $adminAccess)) { cpAccessDenied(); } $cfg = $inCore->loadComponentConfig('content'); cmsCore::loadModel('content'); $model = new cms_model_content(); $GLOBALS['cp_page_title'] = $_LANG['AD_ARTICLES']; cpAddPathway($_LANG['AD_ARTICLES'], 'index.php?view=tree'); $do = cmsCore::request('do', 'str', 'add'); $id = cmsCore::request('id', 'int', -1); if ($do == 'arhive_on') { $inDB->query("UPDATE cms_content SET is_arhive = 1 WHERE id = '{$id}'"); cmsCore::addSessionMessage($_LANG['AD_ARTICLES_TO_ARHIVE'], 'success'); cmsCore::redirectBack(); } if ($do == 'move') { $item_id = cmsCore::request('id', 'int', 0); $cat_id = cmsCore::request('cat_id', 'int', 0); $dir = $_REQUEST['dir']; $step = 1; $model->moveItem($item_id, $cat_id, $dir, $step); echo '1'; exit; } if ($do == 'move_to_cat') { $items = cmsCore::request('item', 'array_int'); $to_cat_id = cmsCore::request('obj_id', 'int', 0); if ($items && $to_cat_id) { $last_ordering = (int) $inDB->get_field('cms_content', "category_id = '{$to_cat_id}' ORDER BY ordering DESC", 'ordering'); foreach ($items as $item_id) { $article = $model->getArticle($item_id); if (!$article) { continue; } $last_ordering++; $model->updateArticle($article['id'], array('category_id' => $to_cat_id, 'ordering' => $last_ordering, 'url' => $article['url'], 'title' => $inDB->escape_string($article['title']), 'id' => $article['id'], 'user_id' => $article['user_id'])); } cmsCore::addSessionMessage($_LANG['AD_ARTICLES_TO'], 'success'); } cmsCore::redirect('?view=tree&cat_id=' . $to_cat_id); } if ($do == 'show') { if (!isset($_REQUEST['item'])) { if ($id >= 0) { dbShow('cms_content', $id); } echo '1'; exit; } else { dbShowList('cms_content', cmsCore::request('item', 'array_int')); cmsCore::redirectBack(); } } if ($do == 'hide') { if (!isset($_REQUEST['item'])) { if ($id >= 0) { dbHide('cms_content', $id); } echo '1'; exit; } else { dbHideList('cms_content', cmsCore::request('item', 'array_int')); cmsCore::redirectBack(); } } if ($do == 'delete') { if (!isset($_REQUEST['item'])) { if ($id >= 0) { $model->deleteArticle($id); cmsCore::addSessionMessage($_LANG['AD_ARTICLE_REMOVE'], 'success'); } } else { $model->deleteArticles(cmsCore::request('item', 'array_int')); cmsCore::addSessionMessage($_LANG['AD_ARTICLES_REMOVE'], 'success'); } cmsCore::redirectBack(); } if ($do == 'update') { if (!cmsCore::validateForm()) { cmsCore::error404(); } if (isset($_REQUEST['id'])) { $id = cmsCore::request('id', 'int', 0); $article['category_id'] = cmsCore::request('category_id', 'int', 1); $article['title'] = cmsCore::request('title', 'str'); $article['url'] = cmsCore::request('url', 'str'); $article['showtitle'] = cmsCore::request('showtitle', 'int', 0); $article['description'] = cmsCore::request('description', 'html', ''); $article['description'] = $inDB->escape_string($article['description']); $article['content'] = cmsCore::request('content', 'html', ''); $article['content'] = $inDB->escape_string($article['content']); $article['published'] = cmsCore::request('published', 'int', 0); $article['showdate'] = cmsCore::request('showdate', 'int', 0); $article['showlatest'] = cmsCore::request('showlatest', 'int', 0); $article['showpath'] = cmsCore::request('showpath', 'int', 0); $article['comments'] = cmsCore::request('comments', 'int', 0); $article['canrate'] = cmsCore::request('canrate', 'int', 0); $enddate = explode('.', cmsCore::request('enddate', 'str')); $article['enddate'] = $enddate[2] . '-' . $enddate[1] . '-' . $enddate[0]; $article['is_end'] = cmsCore::request('is_end', 'int', 0); $article['pagetitle'] = cmsCore::request('pagetitle', 'str', ''); $article['tags'] = cmsCore::request('tags', 'str'); $olddate = cmsCore::request('olddate', 'str', ''); $pubdate = cmsCore::request('pubdate', 'str', ''); $article['user_id'] = cmsCore::request('user_id', 'int', $inUser->id); $article['tpl'] = cmsCore::request('tpl', 'str', 'com_content_read.tpl'); $date = explode('.', $pubdate); $article['pubdate'] = $date[2] . '-' . $date[1] . '-' . $date[0] . ' ' . date('H:i'); $autokeys = cmsCore::request('autokeys', 'int'); switch ($autokeys) { case 1: $article['meta_keys'] = $inCore->getKeywords($article['content']); $article['meta_desc'] = $article['title']; break; case 2: $article['meta_desc'] = strip_tags($article['description']); $article['meta_keys'] = $article['tags']; break; case 3: $article['meta_desc'] = cmsCore::request('meta_desc', 'str'); $article['meta_keys'] = cmsCore::request('meta_keys', 'str'); break; } $model->updateArticle($id, $article); if (!cmsCore::request('is_public', 'int', 0)) { $showfor = $_REQUEST['showfor']; cmsCore::setAccess($id, $showfor, 'material'); } else { cmsCore::clearAccess($id, 'material'); } $file = 'article' . $id . '.jpg'; if (cmsCore::request('delete_image', 'int', 0)) { @unlink(PATH . "/images/photos/small/{$file}"); @unlink(PATH . "/images/photos/medium/{$file}"); } else { // Загружаем класс загрузки фото 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(); } cmsCore::addSessionMessage($_LANG['AD_ARTICLE_SAVE'], 'success'); if (!isset($_SESSION['editlist']) || @sizeof($_SESSION['editlist']) == 0) { cmsCore::redirect('?view=tree&cat_id=' . $article['category_id']); } else { cmsCore::redirect('?view=content&do=edit'); } } } if ($do == 'submit') { if (!cmsCore::validateForm()) { cmsCore::error404(); } $article['category_id'] = cmsCore::request('category_id', 'int', 1); $article['title'] = cmsCore::request('title', 'str'); $article['url'] = cmsCore::request('url', 'str'); $article['showtitle'] = cmsCore::request('showtitle', 'int', 0); $article['description'] = cmsCore::request('description', 'html', ''); $article['description'] = $inDB->escape_string($article['description']); $article['content'] = cmsCore::request('content', 'html', ''); $article['content'] = $inDB->escape_string($article['content']); $article['published'] = cmsCore::request('published', 'int', 0); $article['showdate'] = cmsCore::request('showdate', 'int', 0); $article['showlatest'] = cmsCore::request('showlatest', 'int', 0); $article['showpath'] = cmsCore::request('showpath', 'int', 0); $article['comments'] = cmsCore::request('comments', 'int', 0); $article['canrate'] = cmsCore::request('canrate', 'int', 0); $enddate = explode('.', cmsCore::request('enddate', 'str')); $article['enddate'] = $enddate[2] . '-' . $enddate[1] . '-' . $enddate[0]; $article['is_end'] = cmsCore::request('is_end', 'int', 0); $article['pagetitle'] = cmsCore::request('pagetitle', 'str', ''); $article['tags'] = cmsCore::request('tags', 'str'); $article['pubdate'] = $_REQUEST['pubdate']; $date = explode('.', $article['pubdate']); $article['pubdate'] = $date[2] . '-' . $date[1] . '-' . $date[0] . ' ' . date('H:i'); $article['user_id'] = cmsCore::request('user_id', 'int', $inUser->id); $article['tpl'] = cmsCore::request('tpl', 'str', 'com_content_read.tpl'); $autokeys = cmsCore::request('autokeys', 'int'); switch ($autokeys) { case 1: $article['meta_keys'] = $inCore->getKeywords($article['content']); $article['meta_desc'] = $article['title']; break; case 2: $article['meta_desc'] = strip_tags($article['description']); $article['meta_keys'] = $article['tags']; break; case 3: $article['meta_desc'] = cmsCore::request('meta_desc', 'str'); $article['meta_keys'] = cmsCore::request('meta_keys', 'str'); break; } $article['id'] = $model->addArticle($article); if (!cmsCore::request('is_public', 'int', 0)) { $showfor = $_REQUEST['showfor']; if (sizeof($showfor) > 0 && !cmsCore::request('is_public', 'int', 0)) { cmsCore::setAccess($article['id'], $showfor, 'material'); } } $inmenu = cmsCore::request('createmenu', 'str', ''); if ($inmenu) { createMenuItem($inmenu, $article['id'], $article['title']); } // Загружаем класс загрузки фото 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 = 'article' . $article['id'] . '.jpg'; // Процесс загрузки фото $inUploadPhoto->uploadPhoto(); cmsCore::addSessionMessage($_LANG['AD_ARTICLE_ADD'], 'success'); cmsCore::redirect('?view=tree&cat_id=' . $article['category_id']); } if ($do == 'add' || $do == 'edit') { require '../includes/jwtabs.php'; $GLOBALS['cp_page_head'][] = jwHeader(); $toolmenu = array(); $toolmenu[0]['icon'] = 'save.gif'; $toolmenu[0]['title'] = $_LANG['SAVE']; $toolmenu[0]['link'] = 'javascript:document.addform.submit();'; $toolmenu[1]['icon'] = 'cancel.gif'; $toolmenu[1]['title'] = $_LANG['CANCEL']; $toolmenu[1]['link'] = 'javascript:history.go(-1);'; cpToolMenu($toolmenu); $menu_list = cpGetList('menu'); if ($do == 'add') { echo '<h3>' . $_LANG['AD_CREATE_ARTICLE'] . '</h3>'; cpAddPathway($_LANG['AD_CREATE_ARTICLE'], 'index.php?view=content&do=add'); $mod['category_id'] = (int) $_REQUEST['to']; $mod['showpath'] = 1; $mod['tpl'] = 'com_content_read.tpl'; } else { if (isset($_REQUEST['item'])) { $_SESSION['editlist'] = $_REQUEST['item']; } $ostatok = ''; if (isset($_SESSION['editlist'])) { $id = array_shift($_SESSION['editlist']); if (sizeof($_SESSION['editlist']) == 0) { unset($_SESSION['editlist']); } else { $ostatok = '(' . $_LANG['AD_NEXT_IN'] . sizeof($_SESSION['editlist']) . ')'; } } else { $id = (int) $_REQUEST['id']; } $sql = "SELECT *, (TO_DAYS(enddate) - TO_DAYS(CURDATE())) as daysleft, DATE_FORMAT(pubdate, '%d.%m.%Y') as pubdate, DATE_FORMAT(enddate, '%d.%m.%Y') as enddate\n\t\t\t\t\t FROM cms_content\n\t\t\t\t\t WHERE id = {$id} LIMIT 1"; $result = $inDB->query($sql); if ($inDB->num_rows($result)) { $mod = $inDB->fetch_assoc($result); } echo '<h3>' . $_LANG['AD_EDIT_ARTICLE'] . $ostatok . '</h3>'; cpAddPathway($mod['title'], 'index.php?view=content&do=edit&id=' . $mod['id']); } ?> <form id="addform" name="addform" method="post" action="index.php" enctype="multipart/form-data"> <input type="hidden" name="csrf_token" value="<?php echo cmsUser::getCsrfToken(); ?> " /> <input type="hidden" name="view" value="content" /> <table class="proptable" width="100%" cellpadding="15" cellspacing="2"> <tr> <!-- главная ячейка --> <td valign="top"> <table width="100%" cellpadding="0" cellspacing="4" border="0"> <tr> <td valign="top"> <div><strong><?php echo $_LANG['AD_ARTICLE_NAME']; ?> </strong></div> <div> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><input name="title" type="text" id="title" style="width:100%" value="<?php echo htmlspecialchars($mod['title']); ?> " /></td> <td style="width:15px;padding-left:10px;padding-right:10px;"> <input type="checkbox" title="<?php echo $_LANG['AD_VIEW_TITLE']; ?> " name="showtitle" <?php if ($mod['showtitle'] || $do == 'add') { echo 'checked="checked"'; } ?> value="1"> </td> </tr> </table> </div> </td> <td width="130" valign="top"> <div><strong><?php echo $_LANG['AD_PUBLIC_DATE']; ?> </strong></div> <div> <input name="pubdate" type="text" id="pubdate" style="width:100px" <?php if (@(!$mod['pubdate'])) { echo 'value="' . date('d.m.Y') . '"'; } else { echo 'value="' . $mod['pubdate'] . '"'; } ?> /> <input type="hidden" name="olddate" value="<?php echo @$mod['pubdate']; ?> " /> </div> </td> <td width="16" valign="bottom" style="padding-bottom:10px"> <input type="checkbox" name="showdate" id="showdate" title="<?php echo $_LANG['AD_VIEW_DATE_AND_AUTHOR']; ?> " value="1" <?php if ($mod['showdate'] || $do == 'add') { echo 'checked="checked"'; } ?> /> </td> <td width="160" valign="top"> <div><strong><?php echo $_LANG['AD_ARTICLE_TEMPLATE']; ?> </strong></div> <div><input name="tpl" type="text" style="width:160px" value="<?php echo @$mod['tpl']; ?> "></div> </td> </tr> </table> <div><strong><?php echo $_LANG['AD_ARTICLE_NOTICE']; ?> </strong></div> <div><?php $inCore->insertEditor('description', $mod['description'], '200', '100%'); ?> </div> <div><strong><?php echo $_LANG['AD_ARTICLE_TEXT']; ?> </strong></div> <?php insertPanel(); ?> <div><?php $inCore->insertEditor('content', $mod['content'], '400', '100%'); ?> </div> <div><strong><?php echo $_LANG['AD_ARTICLE_TAGS']; ?> </strong></div> <div><input name="tags" type="text" id="tags" style="width:99%" value="<?php if (isset($mod['id'])) { echo cmsTagLine('content', $mod['id'], false); } ?> " /></div> <table width="100%" cellpadding="0" cellspacing="0" border="0" class="checklist"> <tr> <td width="20"> <input type="radio" name="autokeys" id="autokeys1" <?php if ($do == 'add' && $cfg['autokeys']) { ?> checked="checked"<?php } ?> value="1"/> </td> <td> <label for="autokeys1"><strong><?php echo $_LANG['AD_AUTO_GEN_KEY']; ?> </strong></label> </td> </tr> <tr> <td width="20"> <input type="radio" name="autokeys" id="autokeys2" value="2"/> </td> <td> <label for="autokeys2"><strong><?php echo $_LANG['AD_TAGS_AS_KEY']; ?> </strong></label> </td> </tr> <tr> <td width="20"> <input type="radio" name="autokeys" id="autokeys3" value="3" <?php if ($do == 'edit' || !$cfg['autokeys']) { ?> checked="checked"<?php } ?> /> </td> <td> <label for="autokeys3"><strong><?php echo $_LANG['AD_MANUAL_KEY']; ?> </strong></label> </td> </tr> <?php if ($cfg['af_on'] && $do == 'add') { ?> <tr> <td width="20"><input type="checkbox" name="noforum" id="noforum" value="1" /> </td> <td><label for="noforum"><strong><?php echo $_LANG['AD_NO_CREATE_THEME']; ?> </strong></label></td> </tr> <?php } ?> </table> </td> <!-- боковая ячейка --> <td width="300" valign="top" style="background:#ECECEC;"> <?php ob_start(); ?> {tab=<?php echo $_LANG['AD_TAB_PUBLISH']; ?> } <table width="100%" cellpadding="0" cellspacing="0" border="0" class="checklist"> <tr> <td width="20"><input type="checkbox" name="published" id="published" value="1" <?php if ($mod['published'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="published"><strong><?php echo $_LANG['AD_PUBLIC_ARTICLE']; ?> </strong></label></td> </tr> </table> <div style="margin-top:7px"> <select name="category_id" size="10" id="category_id" style="width:99%;height:200px"> <option value="1" <?php if (@$mod['category_id'] == 1 || !isset($mod['category_id'])) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_ROOT_CATEGORY']; ?> </option> <?php if (isset($mod['category_id'])) { echo $inCore->getListItemsNS('cms_category', $mod['category_id']); } else { echo $inCore->getListItemsNS('cms_category'); } ?> </select> </div> <div style="margin-bottom:10px"> <select name="showpath" id="showpath" style="width:99%"> <option value="0" <?php if (@(!$mod['showpath'])) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_PATHWAY_NAME_ONLY']; ?> </option> <option value="1" <?php if (@$mod['showpath']) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_PATHWAY_FULL']; ?> </option> </select> </div> <div style="margin-top:15px"> <strong><?php echo $_LANG['AD_ARTICLE_URL']; ?> </strong><br/> <div style="color:gray"><?php echo $_LANG['AD_IF_UNKNOWN']; ?> </div> </div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td><input type="text" name="url" value="<?php echo $mod['url']; ?> " style="width:100%"/></td> <td width="40" align="center">.html</td> </tr> </table> </div> <div style="margin-top:10px"> <strong><?php echo $_LANG['AD_ARTICLE_AUTHOR']; ?> </strong> </div> <div> <select name="user_id" id="user_id" style="width:99%"> <?php if (isset($mod['user_id'])) { echo $inCore->getListItems('cms_users', $mod['user_id'], 'nickname', 'ASC', 'is_deleted=0 AND is_locked=0', 'id', 'nickname'); } else { echo $inCore->getListItems('cms_users', $inUser->id, 'nickname', 'ASC', 'is_deleted=0 AND is_locked=0', 'id', 'nickname'); } ?> </select> </div> <div style="margin-top:12px"><strong><?php echo $_LANG['AD_PHOTO']; ?> </strong></div> <div style="margin-bottom:10px"> <?php if ($do == 'edit') { if (file_exists(PATH . '/images/photos/small/article' . $mod['id'] . '.jpg')) { ?> <div style="margin-top:3px;margin-bottom:3px;padding:10px;border:solid 1px gray;text-align:center"> <img src="/images/photos/small/article<?php echo $id; ?> .jpg" border="0" /> </div> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="16"><input type="checkbox" id="delete_image" name="delete_image" value="1" /></td> <td><label for="delete_image"><?php echo $_LANG['AD_PHOTO_REMOVE']; ?> </label></td> </tr> </table> <?php } } ?> <input type="file" name="picture" style="width:100%" /> </div> <div style="margin-top:25px"><strong><?php echo $_LANG['AD_PUBLIC_PARAMETRS']; ?> </strong></div> <table width="100%" cellpadding="0" cellspacing="0" border="0" class="checklist"> <tr> <td width="20"><input type="checkbox" name="showlatest" id="showlatest" value="1" <?php if ($mod['showlatest'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="showlatest"><?php echo $_LANG['AD_VIEW_NEW_ARTICLES']; ?> </label></td> </tr> <tr> <td width="20"><input type="checkbox" name="comments" id="comments" value="1" <?php if ($mod['comments'] || $do == 'add') { echo 'checked="checked"'; } ?> /></td> <td><label for="comments"><?php echo $_LANG['AD_ENABLE_COMMENTS']; ?> </label></td> </tr> <tr> <td width="20"><input type="checkbox" name="canrate" id="canrate" value="1" <?php if ($mod['canrate']) { echo 'checked="checked"'; } ?> /></td> <td><label for="canrate"><?php echo $_LANG['AD_ENABLE_RATING']; ?> </label></td> </tr> </table> <?php if ($do == 'add') { ?> <div style="margin-top:25px"> <strong><?php echo $_LANG['AD_CREATE_LINK']; ?> </strong> </div> <div> <select name="createmenu" id="createmenu" style="width:99%"> <option value="0" selected="selected"><?php echo $_LANG['AD_DONT_CREATE_LINK']; ?> </option> <?php foreach ($menu_list as $menu) { ?> <option value="<?php echo $menu['id']; ?> "> <?php echo $menu['title']; ?> </option> <?php } ?> </select> </div> <?php } ?> {tab=<?php echo $_LANG['AD_DATE']; ?> } <div style="margin-top:5px"> <strong><?php echo $_LANG['AD_ARTICLE_TIME']; ?> </strong> </div> <div> <select name="is_end" id="is_end" style="width:99%" onchange="if($(this).val() == 1){ $('#final_time').show(); }else {$('#final_time').hide();}"> <option value="0" <?php if (@(!$mod['is_end'])) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_UNLIMITED']; ?> </option> <option value="1" <?php if (@$mod['is_end']) { echo 'selected="selected"'; } ?> ><?php echo $_LANG['AD_TO_FINAL_TIME']; ?> </option> </select> </div> <div id="final_time" <?php if (@(!$mod['is_end'])) { echo 'style="display: none"'; } ?> > <div style="margin-top:20px"> <strong><?php echo $_LANG['AD_FINAL_TIME']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_CALENDAR_FORMAT']; ?> </span> </div> <div><input name="enddate" type="text" style="width:80%" <?php if (@(!$mod['is_end'])) { echo 'value="' . date('d.m.Y') . '"'; } else { echo 'value="' . $mod['enddate'] . '"'; } ?> id="enddate" /></div></div> {tab=SEO} <div style="margin-top:5px"> <strong><?php echo $_LANG['AD_PAGE_TITLE']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_IF_UNKNOWN']; ?> </span> </div> <div> <input name="pagetitle" type="text" id="pagetitle" style="width:99%" value="<?php if (isset($mod['pagetitle'])) { echo htmlspecialchars($mod['pagetitle']); } ?> " /> </div> <div style="margin-top:20px"> <strong><?php echo $_LANG['KEYWORDS']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_FROM_COMMA']; ?> </span> </div> <div> <textarea name="meta_keys" style="width:97%" rows="2" id="meta_keys"><?php echo htmlspecialchars($mod['meta_keys']); ?> </textarea> </div> <div style="margin-top:20px"> <strong><?php echo $_LANG['DESCRIPTION']; ?> </strong><br/> <span class="hinttext"><?php echo $_LANG['AD_LESS_THAN']; ?> </span> </div> <div> <textarea name="meta_desc" style="width:97%" rows="4" id="meta_desc"><?php echo htmlspecialchars($mod['meta_desc']); ?> </textarea> </div> {tab=<?php echo $_LANG['AD_TAB_ACCESS']; ?> } <table width="100%" cellpadding="0" cellspacing="0" border="0" class="checklist" style="margin-top:5px"> <tr> <td width="20"> <?php $sql = "SELECT * FROM cms_user_groups"; $result = $inDB->query($sql); $style = 'disabled="disabled"'; $public = 'checked="checked"'; if ($do == 'edit') { $sql2 = "SELECT * FROM cms_content_access WHERE content_id = " . $mod['id'] . " AND content_type = 'material'"; $result2 = $inDB->query($sql2); $ord = array(); if ($inDB->num_rows($result2)) { $public = ''; $style = ''; while ($r = $inDB->fetch_assoc($result2)) { $ord[] = $r['group_id']; } } } ?> <input name="is_public" type="checkbox" id="is_public" onclick="checkGroupList()" value="1" <?php echo $public; ?> /> </td> <td><label for="is_public"><strong><?php echo $_LANG['AD_SHARE']; ?> </strong></label></td> </tr> </table> <div style="padding:5px"> <span class="hinttext"> <?php echo $_LANG['AD_IF_NOTED']; ?> </span> </div> <div style="margin-top:10px;padding:5px;padding-right:0px;" id="grp"> <div> <strong><?php echo $_LANG['AD_GROUPS_VIEW']; ?> </strong><br /> <span class="hinttext"> <?php echo $_LANG['AD_SELECT_MULTIPLE_CTRL']; ?> </span> </div> <div> <?php echo '<select style="width: 99%" name="showfor[]" id="showin" size="6" multiple="multiple" ' . $style . '>'; if ($inDB->num_rows($result)) { while ($item = $inDB->fetch_assoc($result)) { echo '<option value="' . $item['id'] . '"'; if ($do == 'edit') { if (inArray($ord, $item['id'])) { echo 'selected="selected"'; } } echo '>'; echo $item['title'] . '</option>'; } } echo '</select>'; ?> </div> </div> {/tabs} <?php echo jwTabs(ob_get_clean()); ?> </td> </tr> </table> <p> <input name="add_mod" type="submit" id="add_mod" <?php if ($do == 'add') { echo 'value="' . $_LANG['AD_CREATE_CONTENT'] . '"'; } else { echo 'value="' . $_LANG['AD_SAVE_CONTENT'] . '"'; } ?> /> <input name="back" type="button" id="back" value="<?php echo $_LANG['CANCEL']; ?> " onclick="window.history.back();"/> <input name="do" type="hidden" id="do" <?php if ($do == 'add') { echo 'value="submit"'; } else { echo 'value="update"'; } ?> /> <?php if ($do == 'edit') { echo '<input name="id" type="hidden" value="' . $mod['id'] . '" />'; } ?> </p> </form> <?php } }
function blog() { $inCore = cmsCore::getInstance(); $inPage = cmsPage::getInstance(); $inDB = cmsDatabase::getInstance(); $inUser = cmsUser::getInstance(); cmsCore::loadClass('blog'); $inBlog = cmsBlogs::getInstance(); $inBlog->owner = 'site'; global $_LANG; cmsCore::loadModel('blog'); $model = new cms_model_blog(); define('IS_BILLING', $inCore->isComponentInstalled('billing')); if (IS_BILLING) { cmsCore::loadClass('billing'); } // Проверяем включени ли компонент if (!$model->config['component_enabled']) { cmsCore::error404(); } //Получаем параметры $id = cmsCore::request('id', 'int', 0); $post_id = cmsCore::request('post_id', 'int', 0); $seolink = cmsCore::request('seolink', 'str', ''); $do = cmsCore::request('do', 'str', 'blog'); $page = cmsCore::request('page', 'int', 1); $cat_id = cmsCore::request('cat_id', 'int', 0); $ownertype = cmsCore::request('ownertype', 'str', ''); $on_moderate = cmsCore::request('on_moderate', 'int', 0); $pagetitle = $inCore->menuTitle(); $pagetitle = $pagetitle && $inCore->isMenuIdStrict() ? $pagetitle : $_LANG['RSS_BLOGS']; $inPage->addPathway($pagetitle, '/blog'); $inPage->setTitle($pagetitle); $inPage->setDescription($pagetitle); $blog_id = 25; ////////// НАСТРОЙКИ БЛОГА //////////////////////////////////////////////////////////////////////////////////////// if ($do == 'config') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } // получаем блог $blog = $inBlog->getBlog($id); if (!$blog) { cmsCore::error404(); } //Проверяем является пользователь хозяином блога или админом if ($blog['user_id'] != $inUser->id && !$inUser->is_admin) { cmsCore::halt(); } //Если нет запроса на сохранение, показываем форму настроек блога if (!cmsCore::inRequest('goadd')) { //Получаем список авторов блога $authors = $inBlog->getBlogAuthors($blog['id']); $smarty = $inCore->initSmarty('components', 'com_blog_config.tpl'); $smarty->assign('blog', $blog); $smarty->assign('form_action', '/blog/' . $blog['id'] . '/editblog.html'); $smarty->assign('authors_list', cmsUser::getAuthorsList($authors)); $smarty->assign('users_list', cmsUser::getUsersList(false, $authors)); $smarty->assign('is_restrictions', !$inUser->is_admin && $model->config['min_karma']); $smarty->assign('cfg', $model->config); $smarty->display('com_blog_config.tpl'); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } //Если пришел запрос на сохранение if (cmsCore::inRequest('goadd')) { if (!cmsCore::validateForm()) { cmsCore::halt(); } //Получаем настройки $title = cmsCore::request('title', 'str'); $allow_who = cmsCore::request('allow_who', 'str', 'all'); $ownertype = cmsCore::request('ownertype', 'str', 'single'); $premod = cmsCore::request('premod', 'int', 0); $forall = cmsCore::request('forall', 'int', 1); $showcats = cmsCore::request('showcats', 'int', 1); $authors = cmsCore::request('authorslist', 'array_int', array()); //Проверяем настройки if (mb_strlen($title) < 5) { $title = $blog['title']; } //Проверяем ограничения по карме (для смены типа блога) if ($model->config['min_karma'] && !$inUser->is_admin) { // если персональный блог if ($ownertype == 'single' && $inUser->karma < $model->config['min_karma_private']) { cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['BLOG_YOU_NEED'] . ' <a href="/users/' . $inUser->id . '/karma.html">' . $_LANG['BLOG_KARMS'] . '</a> ' . $_LANG['FOR_CREATE_PERSON_BLOG'] . ' — ' . $model->config['min_karma_private'] . ', ' . $_LANG['BLOG_HEAVING'] . ' — ' . $inUser->karma)); } // если коллективный блог if ($ownertype == 'multi' && $inUser->karma < $model->config['min_karma_public']) { cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['BLOG_YOU_NEED'] . ' <a href="/users/' . $inUser->id . '/karma.html">' . $_LANG['BLOG_KARMS'] . '</a> ' . $_LANG['FOR_CREATE_TEAM_BLOG'] . ' — ' . $model->config['min_karma_public'] . ', ' . $_LANG['BLOG_HEAVING'] . ' — ' . $inUser->karma)); } } //сохраняем авторов $inBlog->updateBlogAuthors($blog['id'], $authors); //сохраняем настройки блога $blog['seolink_new'] = $inBlog->updateBlog($blog['id'], array('title' => $title, 'allow_who' => $allow_who, 'showcats' => $showcats, 'ownertype' => $ownertype, 'premod' => $premod, 'forall' => $forall), $model->config['update_seo_link_blog']); $blog['seolink'] = $blog['seolink_new'] ? $blog['seolink_new'] : $blog['seolink']; if (stripslashes($title) != $blog['title']) { // обновляем записи постов cmsActions::updateLog('add_post', array('target' => $title, 'target_url' => $model->getBlogURL()), 0, $blog['id']); // обновляем запись добавления блога cmsActions::updateLog('add_blog', array('object' => $title, 'object_url' => $model->getBlogURL()), $blog['id']); } // Очищаем токен cmsUser::clearCsrfToken(); cmsCore::jsonOutput(array('error' => false, 'redirect' => $model->getBlogURL())); } } ////////// ПРОСМОТР БЛОГА //////////////////////////////////////////////////////////////////////////////////////// if ($do == 'blog') { // получаем блог $blog = $inBlog->getBlog($blog_id); if (!$blog) { cmsCore::error404(); } // Права доступа $myblog = $inUser->id && $inUser->id == $blog['user_id']; // автор блога $is_writer = $inBlog->isUserBlogWriter($blog, $inUser->id); // может ли пользователь писать в блог // Заполняем head страницы $inPage->setTitle($blog['title']); //$inPage->addPathway($blog['title'], $model->getBlogURL($blog['seolink'])); $inPage->setDescription($blog['title']); // rss в адресной строке $inPage->addHead('<link rel="alternate" type="application/rss+xml" title="' . htmlspecialchars(strip_tags($blog['title'])) . '" href="' . HOST . '/rss/blogs/' . $blog['id'] . '/feed.rss">'); if ($myblog || $inUser->is_admin) { $inPage->addHeadJS('components/blog/js/blog.js'); } //Если доступа нет, возвращаемся и выводим сообщение об ошибке if (!cmsUser::checkUserContentAccess($blog['allow_who'], $blog['user_id'])) { cmsCore::addSessionMessage($_LANG['CLOSED_BLOG'] . '<br>' . $_LANG['CLOSED_BLOG_TEXT'], 'error'); cmsCore::redirect('/'); } // Если показываем посты на модерации, если запрашиваем их if ($on_moderate) { if (!$inUser->is_admin && !($myblog && $blog['ownertype'] == 'multi' && $blog['premod'])) { cmsCore::error404(); } $inBlog->whereNotPublished(); $inPage->setTitle($_LANG['POSTS_ON_MODERATE']); $inPage->addPathway($_LANG['POSTS_ON_MODERATE']); $blog['title'] .= ' - ' . $_LANG['POSTS_ON_MODERATE']; } //Получаем html-код ссылки на автора с иконкой его пола $blog['author'] = cmsUser::getGenderLink($blog['user_id']); // посты данного блога $inBlog->whereBlogIs($blog['id']); // кроме админов автора в списке только с доступом для всех if (!$inUser->is_admin && !$myblog) { $inBlog->whereOnlyPublic(); } // если пришла категория if ($cat_id) { $all_total = $inBlog->getPostsCount($inUser->is_admin || $myblog); $inBlog->whereCatIs($cat_id); } // всего постов $total = $inBlog->getPostsCount($inUser->is_admin || $myblog); //устанавливаем сортировку $inDB->orderBy('p.pubdate', 'DESC'); $inDB->limitPage($page, $model->config['perpage']); // сами посты $posts = $inBlog->getPosts($inUser->is_admin || $myblog, $model); if (!$posts && $page > 1) { cmsCore::error404(); } //Если нужно, получаем список рубрик (категорий) этого блога $blogcats = $blog['showcats'] ? $inBlog->getBlogCats($blog['id']) : false; //Считаем количество постов, ожидающих модерации $on_moderate = ($inUser->is_admin || $myblog) && !$on_moderate ? $inBlog->getModerationCount($blog['id']) : false; // админлинки $blog['moderate_link'] = $model->getBlogURL() . '/moderate.html'; $blog['blog_link'] = $model->getBlogURL(); $blog['add_post_link'] = '/blog/newpost' . ($cat_id ? $cat_id : '') . '.html'; //Генерируем панель со страницами if ($cat_id) { $pagination = cmsPage::getPagebar($total, $page, $model->config['perpage'], $blog['blog_link'] . '/page-%page%/cat-' . $cat_id); } else { $pagination = cmsPage::getPagebar($total, $page, $model->config['perpage'], $blog['blog_link'] . '/page-%page%'); } $smarty = $inCore->initSmarty('components', 'com_blog_view.tpl'); $smarty->assign('myblog', $myblog); $smarty->assign('is_config', true); $smarty->assign('is_admin', $inUser->is_admin); $smarty->assign('is_writer', $is_writer); $smarty->assign('on_moderate', $on_moderate); $smarty->assign('cat_id', $cat_id); $smarty->assign('blogcats', $blogcats); $smarty->assign('total', $total); $smarty->assign('all_total', isset($all_total) ? $all_total : 0); $smarty->assign('blog', $blog); $smarty->assign('posts', $posts); $smarty->assign('pagination', $pagination); $smarty->display('com_blog_view.tpl'); } ////////// НОВЫЙ ПОСТ / РЕДАКТИРОВАНИЕ ПОСТА ////////////////////////////////////////////////////////////////// if ($do == 'newpost' || $do == 'editpost') { // для редактирования сначала получаем пост if ($do == 'editpost') { $post = $inBlog->getPost($post_id); if (!$post) { cmsCore::error404(); } $id = $post['blog_id']; $post['tags'] = cmsTagLine('blogpost', $post['id'], false); } // получаем блог $blog = $inBlog->getBlog($blog_id); if (!$blog) { cmsCore::error404(); } //Если доступа нет, возвращаемся и выводим сообщение об ошибке if (!cmsUser::checkUserContentAccess($blog['allow_who'], $blog['user_id'])) { cmsCore::addSessionMessage($_LANG['CLOSED_BLOG'] . '<br>' . $_LANG['CLOSED_BLOG_TEXT'], 'error'); cmsCore::redirect('/blog'); } // Права доступа $myblog = $inUser->id && $inUser->id == $blog['user_id']; // автор блога $is_writer = $inBlog->isUserBlogWriter($blog, $inUser->id); // может ли пользователь писать в блог // если не его блог, пользователь не писатель и не админ, вне зависимости от авторства показываем 404 if (!$myblog && !$is_writer && !$inUser->is_admin) { cmsCore::error404(); } // проверяем является ли пользователь автором, если редактируем пост if ($do == 'editpost' && !$inUser->is_admin && $post['user_id'] != $inUser->id) { cmsCore::error404(); } //Если еще не было запроса на сохранение if (!cmsCore::inRequest('goadd')) { $inPage->addPathway($blog['title'], $model->getBlogURL()); //для нового поста if ($do == 'newpost') { if (IS_BILLING) { cmsBilling::checkBalance('blogs', 'add_post'); } $inPage->addPathway($_LANG['NEW_POST']); $inPage->setTitle($_LANG['NEW_POST']); $post = cmsUser::sessionGet('mod'); if ($post) { cmsUser::sessionDel('mod'); } else { $post['cat_id'] = $cat_id; $post['comments'] = 1; } } //для редактирования поста if ($do == 'editpost') { $inPage->addPathway($post['title'], $model->getPostURL('', $post['seolink'])); $inPage->addPathway($_LANG['EDIT_POST']); $inPage->setTitle($_LANG['EDIT_POST']); } $inPage->initAutocomplete(); $autocomplete_js = $inPage->getAutocompleteJS('tagsearch', 'tags'); //получаем рубрики блога $cat_list = cmsCore::getListItems('cms_blog_cats', $post['cat_id'], 'id', 'ASC', "blog_id = '{$blog['id']}'"); //получаем код панелей bbcode и смайлов $bb_toolbar = cmsPage::getBBCodeToolbar('message', $model->config['img_on'], 'blogs', 'post', $post_id); $smilies = cmsPage::getSmilesPanel('message'); $inCore->initAutoGrowText('#message'); //показываем форму $smarty = $inCore->initSmarty('components', 'com_blog_edit_post.tpl'); $smarty->assign('blog', $blog); $smarty->assign('pagetitle', $do == 'editpost' ? $_LANG['EDIT_POST'] : $_LANG['NEW_POST']); $smarty->assign('mod', $post); $smarty->assign('cat_list', $cat_list); $smarty->assign('bb_toolbar', $bb_toolbar); $smarty->assign('smilies', $smilies); $smarty->assign('is_admin', $inUser->is_admin); $smarty->assign('myblog', $myblog); $smarty->assign('user_can_iscomments', cmsUser::isUserCan('comments/iscomments')); $smarty->assign('autocomplete_js', $autocomplete_js); $smarty->display('com_blog_edit_post.tpl'); } //Если есть запрос на сохранение if (cmsCore::inRequest('goadd')) { $error = false; //Получаем параметры $mod['title'] = cmsCore::request('title', 'str'); $mod['content'] = cmsCore::request('content', 'html'); $mod['feel'] = cmsCore::request('feel', 'str', ''); $mod['music'] = cmsCore::request('music', 'str', ''); $mod['cat_id'] = cmsCore::request('cat_id', 'int'); $mod['allow_who'] = cmsCore::request('allow_who', 'str', $blog['allow_who']); $mod['tags'] = cmsCore::request('tags', 'str', ''); $mod['comments'] = cmsCore::request('comments', 'int', 1); $mod['published'] = $myblog || !$blog['premod'] ? 1 : 0; $mod['blog_id'] = $blog['id']; //Проверяем их if (mb_strlen($mod['title']) < 2) { cmsCore::addSessionMessage($_LANG['POST_ERR_TITLE'], 'error'); $errors = true; } if (mb_strlen($mod['content']) < 5) { cmsCore::addSessionMessage($_LANG['POST_ERR_TEXT'], 'error'); $errors = true; } // Если есть ошибки, возвращаемся назад if ($errors) { cmsUser::sessionPut('mod', $mod); cmsCore::redirectBack(); } //Если нет ошибок //добавляем новый пост... if ($do == 'newpost') { if (IS_BILLING) { cmsBilling::process('blogs', 'add_post'); } $mod['pubdate'] = date('Y-m-d H:i:s'); $mod['user_id'] = $inUser->id; // добавляем пост, получая его id и seolink $added = $inBlog->addPost($mod); if ($mod['published']) { if ($blog['allow_who'] != 'nobody' && $mod['allow_who'] != 'nobody') { cmsActions::log('add_post', array('object' => $mod['title'], 'object_url' => $model->getPostURL('', $added['seolink']), 'object_id' => $added['id'], 'target' => $blog['title'], 'target_url' => $model->getBlogURL(), 'target_id' => $blog['id'], 'description' => '', 'is_friends_only' => (int) ($blog['allow_who'] == 'friends' || $mod['allow_who'] == 'friends'))); } cmsCore::addSessionMessage($_LANG['POST_CREATED'], 'success'); cmsCore::redirect($model->getPostURL('', $added['seolink'])); } if (!$mod['published']) { $message = str_replace('%user%', cmsUser::getProfileLink($inUser->login, $inUser->nickname), $_LANG['MSG_POST_SUBMIT']); $message = str_replace('%post%', '<a href="' . $model->getPostURL('', $added['seolink']) . '">' . $mod['title'] . '</a>', $message); $message = str_replace('%blog%', '<a href="' . $model->getBlogURL() . '">' . $blog['title'] . '</a>', $message); cmsUser::sendMessage(USER_UPDATER, $blog['user_id'], $message); cmsCore::addSessionMessage($_LANG['POST_PREMODER_TEXT'], 'info'); cmsCore::redirect($model->getBlogURL()); } } //...или сохраняем пост после редактирования if ($do == 'editpost') { if ($model->config['update_date']) { $mod['pubdate'] = date('Y-m-d H:i:s'); } $mod['edit_times'] = (int) $post['edit_times'] + 1; $new_post_seolink = $inBlog->updatePost($post['id'], $mod, $model->config['update_seo_link']); $post['seolink'] = is_string($new_post_seolink) ? $new_post_seolink : $post['seolink']; cmsActions::updateLog('add_post', array('object' => $mod['title'], 'pubdate' => $model->config['update_date'] ? $mod['pubdate'] : $post['pubdate'], 'object_url' => $model->getPostURL('', $post['seolink'])), $post['id']); if (!$mod['published']) { $message = str_replace('%user%', cmsUser::getProfileLink($inUser->login, $inUser->nickname), $_LANG['MSG_POST_UPDATE']); $message = str_replace('%post%', '<a href="' . $model->getPostURL('', $post['seolink']) . '">' . $mod['title'] . '</a>', $message); $message = str_replace('%blog%', '<a href="' . $model->getBlogURL() . '">' . $blog['title'] . '</a>', $message); cmsUser::sendMessage(USER_UPDATER, $blog['user_id'], $message); cmsCore::addSessionMessage($_LANG['POST_PREMODER_TEXT'], 'info'); } else { cmsCore::addSessionMessage($_LANG['POST_UPDATED'], 'success'); } cmsCore::redirect($model->getPostURL('', $post['seolink'])); } } } ////////// НОВАЯ РУБРИКА / РЕДАКТИРОВАНИЕ РУБРИКИ ////////////////////////////////////////////////////// if ($do == 'newcat' || $do == 'editcat') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } // Для редактирования сначала получаем рубрику if ($do == 'editcat') { $cat = $inBlog->getBlogCategory($cat_id); if (!$cat) { cmsCore::halt(); } $id = $cat['blog_id']; } // получаем блог $blog = $inBlog->getBlog($id); if (!$blog) { cmsCore::halt(); } //Проверяем является пользователь хозяином блога или админом if ($blog['user_id'] != $inUser->id && !$inUser->is_admin) { cmsCore::halt(); } //Если нет запроса на сохранение if (!cmsCore::inRequest('goadd')) { $smarty = $inCore->initSmarty('components', 'com_blog_edit_cat.tpl'); $smarty->assign('mod', $cat); $smarty->assign('form_action', $do == 'newcat' ? '/blog/' . $blog['id'] . '/newcat.html' : '/blog/editcat' . $cat['id'] . '.html'); $smarty->display('com_blog_edit_cat.tpl'); cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean())); } //Если есть запрос на сохранение if (cmsCore::inRequest('goadd')) { if (!cmsCore::validateForm()) { cmsCore::halt(); } $new_cat['title'] = cmsCore::request('title', 'str', ''); $new_cat['description'] = cmsCore::request('description', 'str', ''); $new_cat['blog_id'] = $blog['id']; if (mb_strlen($new_cat['title']) < 3) { cmsCore::jsonOutput(array('error' => true, 'text' => $_LANG['CAT_ERR_TITLE'])); } //новая рубрика if ($do == 'newcat') { $cat['id'] = $inBlog->addBlogCategory($new_cat); cmsCore::addSessionMessage($_LANG['CAT_IS_ADDED'], 'success'); } //редактирование рубрики if ($do == 'editcat') { $inBlog->updateBlogCategory($cat['id'], $new_cat); cmsCore::addSessionMessage($_LANG['CAT_IS_UPDATED'], 'success'); } cmsUser::clearCsrfToken(); cmsCore::jsonOutput(array('error' => false, 'redirect' => $model->getBlogURL(1, $cat['id']))); } } ///////////////////////// УДАЛЕНИЕ РУБРИКИ ///////////////////////////////////////////////////////////////////////// if ($do == 'delcat') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } $cat = $inBlog->getBlogCategory($cat_id); if (!$cat) { cmsCore::halt(); } $blog = $inBlog->getBlog($cat['blog_id']); if (!$blog) { cmsCore::halt(); } if ($blog['user_id'] != $inUser->id && !$inUser->is_admin) { cmsCore::halt(); } if (!cmsCore::validateForm()) { cmsCore::halt(); } $inBlog->deleteBlogCategory($cat['id']); cmsCore::addSessionMessage($_LANG['CAT_IS_DELETED'], 'success'); cmsUser::clearCsrfToken(); cmsCore::jsonOutput(array('error' => false, 'redirect' => $model->getBlogURL())); } ////////////////////////// ПРОСМОТР ПОСТА ///////////////////////////////////////////////////////////////////////// if ($do == 'post') { $post = $inBlog->getPost($seolink); if (!$post) { cmsCore::error404(); } $blog = $inBlog->getBlog($post['blog_id']); if (!$blog) { cmsCore::error404(); } // право просмотра блога if (!cmsUser::checkUserContentAccess($blog['allow_who'], $blog['user_id'])) { cmsCore::addSessionMessage($_LANG['CLOSED_BLOG'] . '<br>' . $_LANG['CLOSED_BLOG_TEXT'], 'error'); cmsCore::redirect('/blog'); } // право просмотра самого поста if (!cmsUser::checkUserContentAccess($post['allow_who'], $post['user_id'])) { cmsCore::addSessionMessage($_LANG['CLOSED_POST'] . '<br>' . $_LANG['CLOSED_POST_TEXT'], 'error'); cmsCore::redirect($model->getBlogURL()); } if ($inUser->id) { $inPage->addHeadJS('components/blog/js/blog.js'); } $inPage->addPathway($blog['title'], $model->getBlogURL()); $inPage->setTitle($post['title']); $inPage->addPathway($post['title']); $inPage->setDescription($post['title']); if ($post['cat_id']) { $cat = $inBlog->getBlogCategory($post['cat_id']); } $post['tags'] = cmsTagBar('blogpost', $post['id']); $is_author = $inUser->id && $inUser->id == $post['user_id']; $smarty = $inCore->initSmarty('components', 'com_blog_view_post.tpl'); $smarty->assign('post', $post); $smarty->assign('blog', $blog); $smarty->assign('cat', $cat); $smarty->assign('is_author', $is_author); $smarty->assign('myblog', $inUser->id && $inUser->id == $blog['user_id']); $smarty->assign('is_admin', $inUser->is_admin); $smarty->assign('karma_form', cmsKarmaForm('blogpost', $post['id'], $post['rating'], $is_author)); $smarty->assign('navigation', $inBlog->getPostNavigation($post['id'], $blog['id'], $model, $blog['seolink'])); $smarty->display('com_blog_view_post.tpl'); if ($inCore->isComponentInstalled('comments') && $post['comments']) { cmsCore::includeComments(); comments('blog', $post['id']); } } ///////////////////////// УДАЛЕНИЕ ПОСТА ///////////////////////////////////////////////////////////////////////////// if ($do == 'delpost') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } $post = $inBlog->getPost($post_id); if (!$post) { cmsCore::halt(); } $blog = $inBlog->getBlog($post['blog_id']); if (!$blog) { cmsCore::halt(); } // удалять могут авторы, авторы блога, админы if ($blog['user_id'] != $inUser->id && !$inUser->is_admin && $inUser->id != $post['user_id']) { cmsCore::halt(); } if (!cmsCore::validateForm()) { cmsCore::halt(); } $inBlog->deletePost($post['id']); if ($inUser->id != $post['user_id']) { cmsUser::sendMessage(USER_UPDATER, $post['user_id'], $_LANG['YOUR_POST'] . ' <b>«' . $post['title'] . '»</b> ' . $_LANG['WAS_DELETED_FROM_BLOG'] . ' <b>«<a href="' . $model->getBlogURL() . '">' . $blog['title'] . '</a>»</b>'); } cmsCore::addSessionMessage($_LANG['POST_IS_DELETED'], 'success'); cmsUser::clearCsrfToken(); cmsCore::jsonOutput(array('error' => false, 'redirect' => $model->getBlogURL())); } ///////////////////////// ПУБЛИКАЦИЯ ПОСТА ///////////////////////////////////////////////////////////////////////// if ($do == 'publishpost') { if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); } if (!$inUser->id) { cmsCore::halt(); } $post = $inBlog->getPost($post_id); if (!$post) { cmsCore::halt(); } $blog = $inBlog->getBlog($post['blog_id']); if (!$blog) { cmsCore::halt(); } // публикуют авторы блога и админы if ($blog['user_id'] != $inUser->id && !$inUser->is_admin) { cmsCore::halt(); } $inBlog->publishPost($post_id); if ($blog['allow_who'] == 'all' && $post['allow_who'] == 'all') { cmsCore::callEvent('ADD_POST_DONE', $post); } $post['seolink'] = $model->getPostURL('', $post['seolink']); if ($blog['allow_who'] != 'nobody' && $post['allow_who'] != 'nobody') { cmsActions::log('add_post', array('object' => $post['title'], 'user_id' => $post['user_id'], 'object_url' => $post['seolink'], 'object_id' => $post['id'], 'target' => $blog['title'], 'target_url' => $model->getBlogURL(), 'target_id' => $blog['id'], 'description' => '', 'is_friends_only' => (int) ($blog['allow_who'] == 'friends' || $post['allow_who'] == 'friends'))); } cmsUser::sendMessage(USER_UPDATER, $post['user_id'], $_LANG['YOUR_POST'] . ' <b>«<a href="' . $post['seolink'] . '">' . $post['title'] . '</a>»</b> ' . $_LANG['PUBLISHED_IN_BLOG'] . ' <b>«<a href="' . $model->getBlogURL() . '">' . $blog['title'] . '</a>»</b>'); cmsCore::halt('ok'); } ////////// VIEW POPULAR POSTS //////////////////////////////////////////////////////////////////////////////////////// if ($do == 'best') { $inPage->setTitle($_LANG['POPULAR_IN_BLOGS']); $inPage->addPathway($_LANG['POPULAR_IN_BLOGS']); $inPage->setDescription($_LANG['POPULAR_IN_BLOGS']); // кроме админов в списке только с доступом для всех if (!$inUser->is_admin) { $inBlog->whereOnlyPublic(); } // ограничиваем по рейтингу если надо if ($model->config['list_min_rating']) { $inBlog->ratingGreaterThan($model->config['list_min_rating']); } // всего постов $total = $inBlog->getPostsCount($inUser->is_admin); //устанавливаем сортировку $inDB->orderBy('p.rating', 'DESC'); $inDB->limitPage($page, $model->config['perpage']); // сами посты $posts = $inBlog->getPosts($inUser->is_admin, $model); if (!$posts && $page > 1) { cmsCore::error404(); } $smarty = $inCore->initSmarty('components', 'com_blog_view_posts.tpl'); $smarty->assign('pagetitle', $_LANG['POPULAR_IN_BLOGS']); $smarty->assign('total', $total); $smarty->assign('ownertype', $ownertype); $smarty->assign('posts', $posts); $smarty->assign('pagination', cmsPage::getPagebar($total, $page, $model->config['perpage'], '/blogs/popular-%page%.html')); $smarty->assign('cfg', $model->config); $smarty->display('com_blog_view_posts.tpl'); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// $inCore->executePluginRoute($do); }