Пример #1
0
    $conf = infra_config();
    return infra_err($ans, $conf['subscribe']['msg']);
}
if (strlen($_REQUEST['email']) > 1000) {
    return infra_err($ans, 'Слишком много данных. ' . $conf['subscribe']['msg']);
}
$email = strip_tags($_REQUEST['email']);
$email = trim($email);
$email = infra_forFS($email);
$agent = $_SERVER['HTTP_USER_AGENT'];
$ip = $_SERVER['REMOTE_ADDR'];
session_start();
if (empty($_SESSION['submit_time'])) {
    $_SESSION['submit_time'] = 0;
}
if (time() - $_SESSION['submit_time'] < 60) {
    return infra_err($ans, 'Письмо уже отправлено! Новое сообщение можно будет отправить через 1 минуту!');
}
$_SESSION['submit_time'] = time();
$data = array('email' => $email, 'agent' => $agent, 'ip' => $ip, 'host' => $_SERVER['HTTP_HOST']);
$body = infra_template_parse('*order.tpl', $data);
infra_mail_toAdmin('Запрос ' . $data['host'] . ' ' . $email, 'noreplay@' . $data['host'], $body);
$dirs = infra_dirs();
$src = $dirs['data'] . '.subscribe.json';
$subs = infra_loadJSON($src);
if (!$subs) {
    $subs = array();
}
$subs[$email] = date('d.m.Y');
file_put_contents($src, infra_json_encode($subs));
return infra_ret($ans, 'Ваша заявка принята');
Пример #2
0
     $name = Catalog::getProducer($producer);
     $ans['name'] = $name;
     $ans['title'] = $name;
     $conf = infra_config();
     $ans['breadcrumbs'][] = array('title' => $conf['catalog']['title'], 'add' => 'producer:');
     $menu = infra_loadJSON('*catalog/menu.json');
     $ans['breadcrumbs'][] = array('href' => 'producers', 'title' => $menu['producers']['title']);
     $ans['breadcrumbs'][] = array('add' => 'producer::producer.' . $name . ':1', 'title' => $name);
 } else {
     if (!$md['group'] && $md['search']) {
         $ans['is'] = 'search';
         $ans['name'] = $md['search'];
         $ans['title'] = infra_forFs($md['search']);
         $conf = infra_config();
         $ans['breadcrumbs'][] = array('title' => $conf['catalog']['title'], 'add' => 'search:');
         $menu = infra_loadJSON('*catalog/menu.json');
         $ans['breadcrumbs'][] = array('href' => 'find', 'title' => $menu['find']['title']);
         $ans['breadcrumbs'][] = array('title' => $ans['name']);
     } else {
         //is!, descr!, text!, name!, breadcrumbs!, title
         if ($md['group']) {
             foreach ($md['group'] as $group => $v) {
                 break;
             }
         } else {
             $group = false;
         }
         $group = Catalog::getGroup($group);
         $ans['is'] = 'group';
         $ans['breadcrumbs'][] = array('href' => '', 'title' => $conf['catalog']['title'], 'add' => 'group:');
         array_map(function ($p) use(&$ans) {
Пример #3
0
             $re = '&re';
         } else {
             $re = '';
         }
         if ($p['ext'] == 'docx') {
             $p = files_get(infra_toutf($p1['folder']), infra_toutf($p['id']));
             if (!$p['images'][0]) {
                 $default = true;
                 $src = infra_theme('*imager/noimage.png');
                 //header('HTTP/1.1 404 Not Found');
                 //return;
             } else {
                 $src = $p['images'][0]['src'];
             }
         } elseif ($p['ext'] == 'mht') {
             $p = infra_loadJSON('*pages/mht/mht.php?preview' . $re . '&src=' . infra_toutf($p['src']));
             if (!$p['images'][0]) {
                 $default = true;
                 $src = infra_theme('*imager/noimage.png');
                 //header('HTTP/1.1 404 Not Found');
                 //return;
             } else {
                 $src = $p['images'][0]['src'];
             }
         }
     }
 }
 $src = infra_tofs($src);
 $type = imager_type($src);
 if (!is_null($ignoremark)) {
     //Метку ignore может выставить только администратор
Пример #4
0
        $path = infra_theme(infra_toutf($src) . $images[$i], 'fnu');
        $ar = explode('.', $path);
        $ext = '';
        if (sizeof($ar) == 2 && !$ar[0] && $ar[1]) {
            $filename = implode('.', $ar);
        } elseif (sizeof($ar) > 1) {
            //Это может быть папка или файл без расширения, тогда считаем что имя файла есть а расширения нет
            $ext = array_pop($ar);
            $filename = implode('.', $ar);
        } else {
            $filename = array_pop($ar);
            $ext = '';
        }
        if ($ext == 'mht' || $ext == 'tpl' || $ext == 'html' || $ext == 'htm') {
            $s = '*pages/mht/mht.php?preview=1&src=' . infra_toutf($src) . $images[$i];
        } elseif ($ext == 'docx') {
            $s = '*pages/docx.php?preview=1&src=' . infra_toutf($src) . $images[$i];
        }
        $data = infra_loadJSON($s);
        if ($data) {
            $list[] = $data;
        }
    }
    $images = $list;
}
if (@$_GET['debug']) {
    echo '<pre>';
    print_r($images);
    exit;
}
return infra_echo($images);
Пример #5
0
 public static function get()
 {
     $json = '*user/get.php';
     $user = infra_loadJSON($json);
     return $user;
 }
Пример #6
0
$fd = Catalog::initMark($ans);
if (isset($_GET['lim'])) {
    $lim = $_GET['lim'];
} else {
    $lim = '0,20';
}
$p = explode(',', $lim);
if (sizeof($p) != 2) {
    return infra_err($ans, 'Is wrong paramter lim');
}
$start = (int) $p[0];
$count = (int) $p[1];
$args = array($start, $count);
$list = Catalog::cache('producers.php', function ($start, $count) {
    $ans = array();
    $conf = infra_config();
    $data = Catalog::init();
    $prods = array();
    Xlsx::runPoss($data, function (&$pos) use(&$prods) {
        @$prods[$pos['Производитель']]++;
    });
    arsort($prods, SORT_NUMERIC);
    $prods = array_slice($prods, $start, $count);
    return $prods;
}, $args, isset($_GET['re']));
$ans['menu'] = infra_loadJSON('*catalog/menu.json');
$ans['list'] = $list;
$conf = infra_config();
$ans['breadcrumbs'][] = array('href' => '', 'title' => $conf['catalog']['title'], 'add' => 'group');
$ans['breadcrumbs'][] = array('href' => 'producers', 'title' => 'Производители');
return infra_ret($ans);
Пример #7
0
<?php

namespace itlife\catalog;

use itlife\files\Xlsx;
$ans = array();
$fd = Catalog::initMark($ans);
//На главной странице каталога показываются
$data = infra_loadJSON('*catalog/search.php?m=' . $ans['m']);
$ans['childs'] = $data['childs'];
return infra_ret($ans);
Пример #8
0
<?php

require_once __DIR__ . '../infra/infra.php';
$data = infra_loadJSON('*rss/data.php');
header('Content-Type:text/xml; charset=utf-8');
$html = infra_template_parse('*rss/rss.tpl', $data);
echo $html;
Пример #9
0
 } else {
     if ($seo['defitem']) {
         $da = $seo['defitem']['data'];
     } else {
         $da = false;
     }
 }
 if (!$submit) {
     //Распарсить json. Нет itemslist, Нет item не найден
     //item обязательно должен быть либо в дефолтных, либо в созданных, либо в itemslist
     if (isset($seo['tpl'])) {
         $tpl = infra_template_parse(array($seo['tpl']), $da);
         $ans['tpl'] = $tpl;
         if (isset($seo['json'])) {
             $json = infra_template_parse(array($seo['json']), $da);
             $d = infra_loadJSON($json);
             $ans['text'] = infra_template_parse($tpl, $d);
         } else {
             $ans['text'] = infra_loadTEXT($tpl);
         }
         $ans['text'] = strip_tags($ans['text'], '<p><a><ul><li><table><tr><td><b><strong><h1><h2><h3>');
     }
     $ans['result'] = 1;
     $ans['seo'] = array('name' => $seo['name'], 'item' => @$seo['item'], 'defitem' => @$seo['defitem']);
 } else {
     if (!$da) {
         $ans['msg'] = 'Для редактирвоания нужно создать страницу';
     } else {
         $item = $_REQUEST['seo'];
         $item['data'] = $da;
         $src = infrajs_seo_saveitem($name, $item);
Пример #10
0
}
$ans['cat_id'] = $id;
$ans['cat_time'] = $time;
$user = array('cat_id' => $id, 'list' => array(), 'time' => time());
foreach ($data['users'] as $k => $v) {
    if ($v['cat_id'] == $id) {
        $user = $v;
        unset($data['users'][$k]);
        break;
    }
}
$data['users'] = array_values($data['users']);
foreach ($user['list'] as $k => $v) {
    if ($v['val'] == $val) {
        unset($user['list'][$k]);
        break;
    }
}
$user['list'] = array_values($user['list']);
$search = infra_loadJSON('*catalog/search.php?val=' . $val);
array_unshift($user['list'], array('val' => $val, 'time' => time(), 'count' => $search['count']));
if (sizeof($user['list']) > 10) {
    $user['list'] = array_slice($user['list'], 0, 10);
}
array_unshift($data['users'], $user);
if (sizeof($data['users']) > 100) {
    $data['users'] = array_slice($data['users'], 0, 50);
}
file_put_contents($dir . 'catalog_stat.json', infra_json_encode($data));
$ans['data'] = $data;
return infra_ret($ans);
Пример #11
0
<?php

$data = array();
$seo = infra_loadJSON('*seo/seo.php?type=item&id=Главная страница');
infra_require('*files/files.inc.php');
if (!empty($seo['item']['title'])) {
    $data['title'] = $seo['item']['title'];
} else {
    $data['title'] = 'Новостная лента ' . $_SERVER['HTTP_HOST'];
}
if (!empty($seo['item']['description'])) {
    $data['description'] = $seo['item']['description'];
} else {
    $data['description'] = 'Новостная лента сайта ' . $_SERVER['HTTP_HOST'];
}
$data['time'] = infra_admin_time();
$data['link'] = 'http://' . infra_view_getHost() . '/' . infra_view_getRoot();
$conf = infra_config();
$exts = array('docx', 'tpl', 'mht', 'html');
$files = $conf['files'];
$folders = array(array('dir' => $files['folder_blog'], 'link' => '?Блог/'), array('dir' => $files['folder_events'], 'link' => '?События/'), array('dir' => $files['folder_pages'], 'link' => '?'));
$items = array();
infra_forr($folders, function ($fold) use($exts, &$items) {
    if (!$fold['dir']) {
        return;
    }
    $ar = files_list($fold['dir'], 0, 100, $exts);
    if (!$ar) {
        return;
    }
    $ar = array_values($ar);
Пример #12
0
function _seo_all($name = false)
{
    //Возвращает все [seo,seo] с item указанными по умолчанию и item заполненными пользователем
    //Те что заполенны пользователем отмечены user:true
    //Для каждого item расчитан link
    $list = infra_admin_cache('seo.inc.php', function ($name) {
        $list = infra_loadJSON('*pages/list.php?src=infra/cache/seo/&f=1&d=0&onlyname=2');
        $seo = array();
        $items_cache = array();
        foreach ($list as $i) {
            $s = infra_loadJSON('infra/cache/seo/' . $i . '.json');
            //{link:'',items:[{}]}
            if (!isset($s['link'])) {
                continue;
            }
            //link обязателен
            $linktpl = $s['link'];
            $seo[$i] = $s;
            if (!isset($seo[$i]['items'])) {
                $seo[$i]['items'] = array();
            }
            $items_cache[$i] = array();
            foreach ($seo[$i]['items'] as $item) {
                if ($linktpl) {
                    $link = infra_template_parse(array($linktpl), $item['data']);
                } else {
                    $link = '';
                }
                $item['layer'] = true;
                $item['link'] = $link;
                $items_cache[$i][$link] = $item;
            }
        }
        $list = infra_loadJSON('*pages/list.php?src=infra/data/seo/&f=1&d=0&onlyname=2');
        foreach ($list as $i) {
            if (!isset($seo[$i])) {
                continue;
            }
            //Хранятся данные seo для слоя которого сейчас нет.. и нет значит и link
            $linktpl = $seo[$i]['link'];
            $data = infra_loadJSON('infra/data/seo/' . $i . '.json');
            if (!isset($data['items'])) {
                continue;
            }
            //items обязателен
            foreach ($data['items'] as $n => $item) {
                $link = infra_template_parse(array($linktpl), $item['data']);
                $item['user'] = true;
                $item['link'] = $link;
                if (isset($items_cache[$i][$link])) {
                    foreach ($item as $k => $v) {
                        $items_cache[$i][$link][$k] = $v;
                    }
                } else {
                    $items_cache[$i][$link] = $item;
                }
            }
        }
        $list = array();
        foreach ($items_cache as $k => $v) {
            $r = array('json' => @$seo[$k]['json'], 'tpl' => @$seo[$k]['tpl'], 'name' => $k, 'defitems' => @$seo[$k]['defitems'], 'link' => $seo[$k]['link'], 'schema' => $seo[$k]['schema'], 'items' => array_values($v));
            foreach ($r['items'] as $item) {
                if (isset($item['user'])) {
                    if ($item['user']) {
                        $r['user'] = true;
                        break;
                    }
                }
            }
            $list[] = $r;
            if ($k == $name) {
                return $r;
            }
        }
        if ($name) {
            return array('name' => $name);
        }
        return $list;
    }, array($name));
    if ($name) {
        $seos = array($list);
    } else {
        $seos = $list;
    }
    return $seos;
}
Пример #13
0
function infrajs_seo_apply()
{
    $conf = infra_config();
    if (!$conf['seo']['seo']) {
        return;
    }
    $store =& infrajs_store();
    $layer =& $store['seolayer'];
    if (!$layer) {
        return;
    }
    $seo = $layer['seo'];
    $reallink = $layer['crumb']->toString();
    $item = $seo;
    if (isset($seo['name'])) {
        $id = $seo['name'] . '|' . $reallink;
        $r = infra_loadJSON('*seo/seo.php?type=item&id=' . $id);
        $item = $r['item'];
    }
    //Применяем
    $html = infra_html();
    $name = 'keywords';
    //stencil//
    if (isset($item[$name])) {
        if (!is_string($item[$name])) {
            $item[$name] = implode(', ', $item[$name]);
        }
        $r = preg_match('/<meta.*name=.{0,1}' . $name . '.{0,1}.*>/i', $html);
        if (!$r) {
            $html = str_ireplace('<head>', "<head>\n<meta name=\"" . $name . '" content="' . infrajs_seo_value($item[$name]) . '">', $html);
        } else {
            $html = preg_replace('/(<meta.*name=.{0,1}' . $name . '.{0,1})(.*>)/i', '<meta name="' . $name . '" content="' . infrajs_seo_value($item[$name]) . '" >', $html);
        }
    }
    $name = 'description';
    //stencil//
    if (isset($item[$name])) {
        $r = preg_match('/<meta.*name=.{0,1}' . $name . '.{0,1}.*>/i', $html);
        if (!$r) {
            $html = str_ireplace('<head>', "<head>\n<meta name=\"" . $name . '" content="' . infrajs_seo_value($item[$name]) . '">', $html);
        } else {
            $html = preg_replace('/(<meta.*name=.{0,1}' . $name . '.{0,1})(.*>)/i', '<meta name="' . $name . '" content="' . infrajs_seo_value($item[$name]) . '" >', $html);
        }
    }
    $name = 'title';
    //stencil//
    if (isset($item[$name])) {
        $r = preg_match('/<title>/i', $html);
        if (!$r) {
            $html = str_ireplace('<head>', "<head>\n<title>" . infrajs_seo_value($item[$name]) . '</title>', $html);
        } else {
            $html = preg_replace('/<title>.*<\\/title>/i', '<title>' . infrajs_seo_value($item[$name]) . '</title>', $html);
        }
    }
    infra_html($html, true);
}
Пример #14
0
<?php

$ans = array('title' => 'Проверка обработчиков каталога - позиция, группа, производители, рубрики и тп.');
$data = infra_loadJSON('*catalog/rubrics.php');
if (!$data) {
    return infra_err($ans, 'Ошибка rubrics.php');
}
$data = infra_loadJSON('*catalog/producers.php');
if (!$data) {
    return infra_err($ans, 'Ошибка producers.php');
}
$data = infra_loadJSON('*catalog/stat.php');
if (!$data) {
    return infra_err($ans, 'Ошибка stat.php');
}
return infra_ret($ans);