/** * @return stirng * @param string $templ_name - Шаблон оформления * @desc МАКРОС: Выводит форму подписки на рассылки */ function form($templ_name = 'default') { $templ_file = '/subscription/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('subscription.form', $templ_file); } $list = ''; $sel = new ormSelect('subscription'); $sel->where('lang', '=', languages::curId()); $sel->where('domain', '=', domains::curId()); $sel->where('active', '=', 1); $num = 0; while ($obj = $sel->getObject()) { page::assign('obj.id', $obj->id); page::assign('obj.name', $obj->name); $num++; page::assign('obj.num', $num); page::assign('class-first', $num == 1 ? 'first' : ''); page::assign('class-last', $num == $sel->getObjectCount() ? 'last' : ''); page::assign('class-odd', $num % 2 == 0 ? 'odd' : ''); page::assign('class-even', $num % 2 != 0 ? 'even' : ''); page::assign('class-third', $num % 3 == 0 ? 'third' : ''); $list .= page::parse($TEMPLATE['list']); } // Парсим текст сообщения об ошибке page::parseError('subscription'); if (empty($list)) { return page::parse($TEMPLATE['empty']); } else { page::assign('list', $list); return page::parse($TEMPLATE['frame']); } }
public function defAction() { function getSubscribersCount($id, $obj) { $sel = new ormSelect('subscribe_user'); $sel->where('parents', '=', $id); return $sel->getCount(); } ui::newButton(lang::get('SUBSCRIBE_BTN_ADD'), '/subscription/subscribe_add'); $sel = new ormSelect('subscription'); $sel->where('lang', '=', languages::curId()); $sel->where('domain', '=', domains::curId()); $table = new uiTable($sel); $table->formatValues(true); $table->addColumn('name', lang::get('SUBSCRIBE_TT1'), 200); $table->addColumn('last_subscribe', lang::get('SUBSCRIBE_TT2'), 200); $table->addColumn('id', lang::get('SUBSCRIBE_TT3'), 200, 0, 1, 'getSubscribersCount'); $table->defaultRight('msg'); $table->addRight('msg', 'list', single); $table->addRight('user', 'users', single); $table->addRight('subscribe_upd', 'edit', single); $table->addRight('subscribe_history', 'history', single); $table->addRight('subscribe_del', 'drop', multi); $table->addRight('subscribe_act', 'active', multi); $table->setDelMessage(lang::get('SUBSCRIBE_DEL_TITLE2'), lang::get('SUBSCRIBE_DEL_TEXT2')); $table->setMultiDelMessage(lang::get('SUBSCRIBE_DEL_TITLE_MULTI2'), lang::get('SUBSCRIBE_DEL_TEXT_MULTI2')); return $table->getHTML(); }
public function proc_upd() { $obj = ormPages::get(system::POST('obj_id')); $obj->tabuList('pseudo_url', 'h1', 'keywords', 'title', 'description', 'active', 'is_home_page', 'view_in_menu', 'view_submenu', 'in_search', 'in_index', 'in_new_window', 'other_link', 'img_act', 'img_no_act', 'img_h1'); $obj->loadFromPost(); // Публикация на сайте if (system::POST('publ', isBool)) { if ($obj->isInheritor('faq') && $obj->newVal('answer') == '') { ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), lang::get('FEEDBACK_MSG_3')); ui::selectErrorFields(array('select' => '', 'focus' => 'answer')); } else { $obj->active = 1; } } $obj_id = $obj->save(); // Если объект не сохранился, выводим пользователю текст ошибки. if ($obj_id === false) { system::savePostToSession(); ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); ui::selectErrorFields($obj->getErrorFields()); system::redirect('/feedback/message_upd/' . $_POST['obj_id']); } if (system::POST('send_to_email', isBool) && !$obj->send_answer_to_user && ($form_obj = ormObjects::get($obj->form_id))) { if ($form_obj->send_answer) { if ($obj->answer != '') { $fields = $obj->getClass()->loadFields(); while (list($num, $field) = each($fields)) { if (!empty($field['f_sname'])) { page::assign($field['f_sname'], $obj->__get($field['f_sname'])); } } page::assign('site_name', domains::curDomain()->getSiteName()); page::assign('base_email', domains::curDomain()->getEmail()); $mail = new phpmailer(); $mail->From = $this->parse($form_obj->answer_sender_address); $mail->FromName = $this->parse($form_obj->answer_sender_name); $mail->AddAddress($obj->email); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = $this->parse($form_obj->answer_subject); $mail->Body = $this->parse($form_obj->answer_template); $mail->Send(); // Помечаем, что ответ отправлен $obj->send_answer_to_user = 1; $obj->save(); ui::MessageBox(lang::get('FEEDBACK_MSG_1'), ''); } else { ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), lang::get('FEEDBACK_MSG_2')); ui::selectErrorFields(array('select' => '', 'focus' => 'answer')); } } } // Если данные изменились корректно перенаправляем на соответствующию страницу if ($_POST['parram'] == 'apply') { system::redirect('/feedback/message_upd/' . $obj_id); } else { system::redirect('/feedback'); } }
/** * @return array * @param boolean $type - Назначение шаблонов: 0 - шаблон для страниц 1 - шаблон для объектов * @desc Вернет все шаблоны для текущей языковой версии и текущего домена. Метод без кеширования результатов. */ static function getByDestination($type = 0, $spec_name = false) { $type = $type ? 1 : 0; $select = $spec_name ? 't_id id, concat(t_name, " (", t_file, ")") name' : '*, t_id id'; return db::q('SELECT ' . $select . ' FROM <<template>> WHERE t_type = "' . $type . '" and t_lang_id = "' . languages::curId() . '" and t_domain_id = "' . domains::curId() . '" ORDER BY t_name;', records); }
static function getMailHTML($release_id) { if ($release = ormObjects::get($release_id)) { if ($release->isInheritor('subscribe_msg')) { $subscribe = $release->getParent(); page::$macros = 1; $mail = ''; if (file_exists(TEMPL_DIR . '/subscription/mails/' . $subscribe->template . '.tpl')) { include TEMPL_DIR . '/subscription/mails/' . $subscribe->template . '.tpl'; page::assign('domain_name', domains::curDomain()->getName()); page::assign('site_name', domains::curDomain()->getSiteName()); page::assign('base_email', domains::curDomain()->getEmail()); page::assign('subscribe.id', $subscribe->id); page::assign('release.id', $release->id); page::assign('release.name', $release->name); page::assign('release.message', $release->message); $sel = new ormSelect(); $sel->depends($release->id, 1462); $num = 0; $list = ''; while ($obj = $sel->getObject()) { $num++; page::assign('obj.num', $num); page::assign('class-first', $num == 1 ? 'first' : ''); page::assign('class-last', $num == $sel->getObjectCount() ? 'last' : ''); page::assign('class-odd', $num % 2 == 0 ? 'odd' : ''); page::assign('class-even', $num % 2 != 0 ? 'even' : ''); page::assign('class-third', $num % 3 == 0 ? 'third' : ''); page::assign('obj.id', $obj->id); page::assign('obj.url', $obj->url); $obj->parseAllFields(); $list .= page::parse($TEMPLATE['list']); } page::assign('list', $list); if (!empty($list)) { page::fParse('list', $TEMPLATE['frame_list']); } $mail = page::parse($TEMPLATE['frame']); } return $mail; } } }
static function getFileSiteMap() { self::init(); $cur_date = reg::getKey('/structure/' . domains::curId() . '/cur_date'); $text = ''; reset(self::$pages); foreach (self::$pages as $page) { if ($page['active'] && $page['in_index'] && empty($page['other_link'])) { $date = date('Y-m-d', strtotime($page['o_change_date'])); if ($cur_date) { $left = (time() - strtotime($page['o_change_date'])) / 86400; if ($left > 30) { $date = date('Y-m-d'); } } $url = self::getPageUrlById($page['o_id']); $priority = $page['is_home_page'] ? 1 : 1 - (count(explode('/', $url)) - 1) * 0.1; $tmp = ''; $tmp .= '<loc>http://' . domains::curDomain()->getName() . $url . '</loc>'; $tmp .= '<lastmod>' . $date . '</lastmod>'; $tmp .= '<priority>' . $priority . '</priority>'; $text .= '<url>' . $tmp . '</url>'; } } return '<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' . $text . '</urlset>'; }
/** * @return boolean * @param string $right - Имя права в панели администрирования * @param string $module - Системное имя модуля. Если не указанно, имя определяется исходя из текущего URL`a * @desc Проверяет существование указанного права для текущего модуля */ static function issetRight($right, $module = 0) { if (!self::$isGuest) { if (empty($module)) { $module = system::url(0); } self::getRights(); $right = str_replace('_proc_', '_', $right); if ($module == 'structure' && !strpos($right, ' ')) { $sitever = languages::curId() . ' ' . domains::curId(); return isset(self::$right[$module]['rights'][$sitever][$right]) ? true : false; } else { return isset(self::$right[$module]['rights'][$right]) ? true : false; } } else { return false; } }
public function restore() { $restore = parent::restore(); if ($restore) { $parent_id = $this->getParentId(); $s = empty($this->id) ? '' : 'p_obj_id <> "' . $this->id . '" and '; $s .= empty($parent_id) ? 'r_parent_id is NULL' : 'r_parent_id = "' . $parent_id . '"'; $sql = 'SELECT count(p_obj_id) FROM <<pages>>, <<objects>>, <<rels>> WHERE pseudo_url = "' . $this->__get('pseudo_url') . '" and lang_id = "' . languages::curId() . '" and domain_id = "' . domains::curId() . '" and r_children_id = p_obj_id and ' . $s . ' and o_id = p_obj_id and o_to_trash = 0;'; $count = db::q($sql, value); if ($count > 0) { $pseudo_url = $this->__get('pseudo_url') . rand(100, 999); db::q('UPDATE <<pages>> SET pseudo_url="' . $pseudo_url . '" WHERE p_obj_id = "' . $this->id . '";'); return true; } } return false; }
/** * @return null * @param string $templ_name - Полный путь до шаблона письма, от папки /template * @param string $email - E-mail на который нужно отправить письмо. * @param string $from - E-mail от кого отправляется письмо * @param string $from_name - Имя автора письма * @desc Парсит письмо по указанному шаблону и отправляет его на указанный ящик. */ static function sendMail($templ_name, $email, $from = '', $from_name = '') { $TEMPLATE = page::getTemplate($templ_name); if (is_array($TEMPLATE)) { page::assign('domain', domains::curDomain()->getName()); page::assign('site_name', domains::curDomain()->getSiteName()); page::assign('base_email', domains::curDomain()->getEmail()); if (empty($from)) { $from = domains::curDomain()->getEmail(); } if (empty($from_name)) { $from_name = domains::curDomain()->getSiteName(); } // Отправляет письмо с инструкциями $mail = new phpmailer(); $mail->From = $from; $mail->FromName = $from_name; $mail->AddAddress($email); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = page::parse($TEMPLATE['subject']); $mail->Body = page::parse($TEMPLATE['frame']); $mail->Send(); } }
private function getLangsAndDomains($TEMPLATE) { $sub_menu = ''; $langs = languages::getAll(); $domains = domains::getAll(); page::assign('ldObjectLinks', ''); if (count($langs) > 1 || count($domains) > 1) { $isMultiDom = count($domains) > 1 ? true : false; $sub_items = $curLD = ''; $mas = array(); $num = 0; while (list($num2, $domain) = each($domains)) { reset($langs); while (list($num1, $lang) = each($langs)) { if (user::issetRight($lang['l_id'] . ' ' . $domain['d_id'], 'structure')) { if ($isMultiDom) { $lanver = $domain['d_name']; if ($lang['l_id'] != $domain['d_def_lang']) { $lanver .= '/' . $lang['l_prefix']; } } else { $lanver = $lang['l_name']; } $link = ADMIN_URL; if ($domain['d_id'] != domains::curSiteDomain()->id()) { $link .= '/' . str_replace('.', '_', $domain['d_name']); } if ($lang['l_id'] != $domain['d_def_lang']) { $link = '/' . $lang['l_prefix'] . $link; } if (domains::curId() == $domain['d_id'] && languages::curId() == $lang['l_id']) { $curLD = $link; } page::assign('name', $lanver); page::assign('url', $link); $sub_items .= page::parse($TEMPLATE['langver']); $mas[] = array('id' => $link, 'name' => $lanver); $num++; } } } if (!empty($sub_items) && $num > 1) { if ($isMultiDom) { $lanver = domains::curDomain()->getName() . languages::pre(); } else { $lanver = languages::curLang()->getName(); } page::assign('eshe', $lanver); page::assign('sub_items', $sub_items); $sub_menu = page::parse($TEMPLATE['sub_menu']); ui::SelectBox('ldObjectLinks', $mas, $curLD, 474, '', 'onSelectldObjectLinks()'); } } return $sub_menu; }
/** * @return HTML * @param int $section_id - ID новостной ленты, для которой необходимо построить RSS-ленту * @param string $templ_name - Шаблон оформления, по которому будет строится RSS-лента * @desc МАКРОС: Выводит содержимое RSS-ленты. */ public function rss($section_id, $templ_name = 'rss') { $templ_file = '/structure/rss/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('structure.rss', $templ_file); } $cur_domain = 'http://' . domains::curDomain()->getName(); page::assign('channel.url', $cur_domain); page::assign('channel.date', date('r')); page::assign('channel.notice', ''); // Определяем из каких категорий выводить ленту новостей $sections = array(); if ($section_id == 'all') { // Из нескольких $sel = new ormSelect('news_feed'); $sel->findInPages(); $sel->fields('id'); $sel->where('rss_export', '=', 1); $sel->where('active', '=', 1); while ($obj = $sel->getObject()) { $sections[] = $obj->id; } page::assign('channel.title', domains::curDomain()->getSiteName()); } else { // Из одной $section_id = system::checkVar($section_id, isInt); if (empty($section_id)) { return ''; } $sections[] = $section_id; if ($sect = ormPages::get($section_id)) { page::assign('channel.title', $sect->name); } } // Формируем выборку объектов $sel = new ormSelect(); $sel->findInPages(); $sel->fields('name, notice, publ_date'); $sel->where('parents', '=', $sections, 'OR'); $sel->where('active', '=', 1); $sel->orderBy('publ_date', desc); $sel->limit(3); // Формируем список $list = ''; while ($obj = $sel->getObject()) { $num = $sel->getObjectNum() + 1; page::assign('obj.num', $num); page::assign('obj.id', $obj->id); page::assign('obj.url', $cur_domain . $obj->_url); page::assign('obj.name', $obj->name); $notice = str_replace(' ', '', strip_tags($obj->notice)); page::assign('obj.notice', $notice); $date = date('r', strtotime($obj->publ_date)); page::assign('obj.date', $date); /* if ($obj->podkast != '') { page::assign('obj.media_url', $cur_domain.$obj->podkast); page::fParse('media', $TEMPLATE['media']); } else page::assign('media', ''); */ if (isset($TEMPLATE['list'])) { $list .= page::parse($TEMPLATE['list']); } else { return page::errorBlock('structure.rss', $templ_file, 'list'); } } if (!empty($list)) { page::assign('list', $list); if (isset($TEMPLATE['frame_list'])) { $list = page::parse($TEMPLATE['frame_list']); } else { return page::errorBlock('structure.rss', $templ_file, 'frame_list'); } } return $list; }
protected function app_defaults() { $this->write_progress("\tRunning app_defaults"); //set needed session settings $_SESSION["username"] = $this->admin_username; $_SESSION["domain_uuid"] = $this->global_settings->domain_uuid(); require $this->config_php; require "resources/require.php"; $_SESSION['event_socket_ip_address'] = $this->global_settings->event_host; $_SESSION['event_socket_port'] = $this->global_settings->event_port; $_SESSION['event_socket_password'] = $this->global_settings->event_password; //get the groups assigned to the user and then set the groups in $_SESSION["groups"] $sql = "SELECT * FROM v_group_users "; $sql .= "where domain_uuid=:domain_uuid "; $sql .= "and user_uuid=:user_uuid "; $prep_statement = $this->dbh->prepare(check_sql($sql)); $prep_statement->bindParam(':domain_uuid', $this->global_settings->domain_uuid); $prep_statement->bindParam(':user_uuid', $this->admin_uuid); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $_SESSION["groups"] = $result; unset($sql, $row_count, $prep_statement); //get the permissions assigned to the groups that the user is a member of set the permissions in $_SESSION['permissions'] $x = 0; $sql = "select distinct(permission_name) from v_group_permissions "; foreach ($_SESSION["groups"] as $field) { if (strlen($field['group_name']) > 0) { if ($x == 0) { $sql .= "where (domain_uuid = '" . $this->global_settings->domain_uuid . "' and group_name = '" . $field['group_name'] . "') "; } else { $sql .= "or (domain_uuid = '" . $this->global_settings->domain_uuid . "' and group_name = '" . $field['group_name'] . "') "; } $x++; } } $prep_statement_sub = $this->dbh->prepare($sql); $prep_statement_sub->execute(); $_SESSION['permissions'] = $prep_statement_sub->fetchAll(PDO::FETCH_NAMED); unset($sql, $prep_statement_sub); //include the config.php $db_type = $this->global_settings->db_type(); $db_path = $this->global_settings->db_path(); $db_host = $this->global_settings->db_host(); $db_port = $this->global_settings->db_port(); $db_name = $this->global_settings->db_name(); $db_username = $this->global_settings->db_username(); $db_password = $this->global_settings->db_password(); //add the database structure require_once "resources/classes/schema.php"; $schema = new schema(); echo $schema->schema(); //run all app_defaults.php files $default_language = $this->install_language; $domain = new domains(); $domain->upgrade(); //synchronize the config with the saved settings save_switch_xml(); //do not show the apply settings reminder on the login page $_SESSION["reload_xml"] = false; //clear the menu $_SESSION["menu"] = ""; }
/** * @return null * @param string $filename - Путь к файлу шаблона * @param boolean $absolut - Если true - путь считается абсолютным и вычисляется от корневой папки, в которой находится движок * @desc Обрабатывает указанный файл шаблона и выводит его на страницу */ static function parseIt($filename, $absolut = false, $withoutCache = false) { if (!system::$isAdmin && !$absolut) { $site_prefix = domains::curId() == 1 && languages::curId() == 1 ? '' : '/__' . str_replace('.', '_', domains::curDomain()->getName()) . '_' . languages::curPrefix(); if (file_exists(TEMPL_DIR . $site_prefix . $filename)) { $filename = TEMPL_DIR . $site_prefix . $filename; } else { if (file_exists(TEMPL_DIR . $site_prefix . '/structure/default.tpl')) { $filename = TEMPL_DIR . $site_prefix . '/structure/default.tpl'; } else { echo lang::get('ERROR_TEMPL2'); system::stop(); } } } while (list($key, $val) = each(self::$page_mas)) { self::assign($key, $val); } self::$arr = self::parse(file($filename)); // Сохраняем страницу в кэш if (!$withoutCache && self::isCashePage()) { $page = array('html' => self::$arr, 'page_id' => ormPages::getCurPageId(), 'page_url' => system::getCurrentUrlPN(), 'active_pages' => ormPages::getActiveId(), 'host' => $_SERVER['HTTP_HOST']); cache::set(system::getCurrentUrlPN(), $page); } // Вторично обрабатывает шаблон self::$arr = self::parse(self::parse(self::$arr, 2), 2); // Выводит обработанный шаблон на печать //echo str_replace('`%`', '%', self::$arr); echo self::$arr; self::freshAll(); }
/** * editAction * Get a record and populate the application form * @return unknown_type */ public function editAction() { $form = $this->getForm('/admin/domains/process'); $this->view->title = $this->translator->translate("Domain Edit"); $this->view->description = $this->translator->translate("Here you can edit your own domain parameters."); $id = $this->getRequest()->getParam('id'); if (!empty($id) && is_numeric($id)) { // Create the buttons in the edit form $this->view->buttons = array(array("url" => "#", "label" => $this->translator->translate('Save'), "params" => array('css' => null, 'id' => 'submit')), array("url" => "/admin/domains/confirm/id/{$id}", "label" => $this->translator->translate('Delete'), "params" => array('css' => null)), array("url" => "/admin/domains/list", "label" => $this->translator->translate('List'), "params" => array('css' => null)), array("url" => "/admin/domains/new/", "label" => $this->translator->translate('New'), "params" => array('css' => null)), array("url" => "/admin/domains/newevent/id/{$id}", "label" => $this->translator->translate('Calendar Event'), "params" => array('css' => null))); try { $rs = $this->domains->find($id, null); if (!empty($rs[0])) { $rs[0]['creation_date'] = Shineisp_Commons_Utilities::formatDateOut($rs[0]['creation_date']); $rs[0]['expiring_date'] = Shineisp_Commons_Utilities::formatDateOut($rs[0]['expiring_date']); $rs[0]['status_id'] = $rs[0]['Statuses']['status_id']; // Domains NicHandles $rs[0]['owner'] = DomainsNichandle::getProfile($id); $rs[0]['admin'] = DomainsNichandle::getProfile($id, "admin"); $rs[0]['tech'] = DomainsNichandle::getProfile($id, "tech"); $rs[0]['billing'] = DomainsNichandle::getProfile($id, "billing"); $form->populate($rs[0]); if (!empty($rs[0]['DomainsTlds']['WhoisServers'])) { $this->view->title = $rs[0]['domain'] . "." . $rs[0]['DomainsTlds']['WhoisServers']['tld']; $this->view->titlelink = "http://" . $rs[0]['domain'] . "." . $rs[0]['DomainsTlds']['WhoisServers']['tld']; $this->view->icon = "fa fa-globe"; } $this->view->owner_datagrid = domains::ownerGrid($id); $this->view->actions = Registrars::getActions($rs[0]['registrars_id']); } } catch (Exception $e) { die($e->getMessage()); } $this->view->id = $id; // Get all the messages attached to the domain $this->view->messages = Messages::getbyDomainId($id); } $this->view->mex = $this->getRequest()->getParam('mex'); $this->view->mexstatus = $this->getRequest()->getParam('status'); $this->view->dns_datagrid = Domains::dnsGrid(); $this->view->form = $form; $this->view->services_datagrid = array('records' => domains::Services($id), 'edit' => array('controller' => 'services', 'action' => 'edit')); $this->view->orders_datagrid = array('records' => domains::Orders($id), 'edit' => array('controller' => 'orders', 'action' => 'edit')); $this->render('applicantform'); }
public function send_messageAction() { if ($form_obj = ormObjects::get(system::POST('form_id'))) { $issetErrors = false; $answer = array(); // Проверка капчи if ($form_obj->captcha && !system::validCapcha('random_image')) { $issetErrors = true; $answer = array('field' => 'random_image', 'msg' => lang::get('FEEDBACK_ERROR1')); } // Если указанно куда, добавляем объект в БД if (($form_obj->any_sections || $form_obj->section) && !$issetErrors) { // Определяем раздел, в который будем добавлять отзыв if ($form_obj->any_sections) { $section = system::POST('section_id', isInt); } else { $section = $form_obj->section; $section = !empty($section) ? $section[0] : 0; } // Создаем объект обратной связи $obj = new ormPage(); $obj->setParent($section); $obj->setClass($form_obj->form_class); $obj->tabuList('pseudo_url', 'h1', 'keywords', 'title', 'description', 'answer', 'active', 'is_home_page', 'view_in_menu', 'view_submenu', 'in_search', 'in_index', 'in_new_window', 'other_link', 'img_act', 'img_no_act', 'img_h1'); $obj->loadFromPost(); $obj->active = 0; $obj->view_in_menu = 1; $obj->view_submenu = 1; $obj->in_search = 1; $obj->in_index = 1; $obj->is_home_page = 0; if ($obj->name != '') { $obj->h1 = $obj->name; $obj->title = $obj->name; } $obj->pseudo_url = rand(1000, 9999); $obj->template_id = ($sect = ormPages::get($form_obj->section)) ? $sect->template_id : 1; $obj->form_id = $form_obj->id; $obj->setRightForAll(2); $obj_id = $obj->save(); if ($obj_id) { $obj->pseudo_url = $obj_id; $obj->save(); $obj = new ormPage($obj_id); } else { $issetErrors = true; $f = $obj->getErrorFields(); $answer = array('field' => $f['focus'], 'msg' => $obj->getErrorListText(' ')); } } if (!$issetErrors) { // Отправка нужных писем page::assign('site_name', domains::curDomain()->getSiteName()); page::assign('site_url', domains::curDomain()->getName()); page::assign('base_email', domains::curDomain()->getEmail()); while (list($key, $val) = each($_POST)) { page::assign($key, system::checkVar($val, isText)); } if (isset($obj)) { $fields = $obj->getClass()->loadFields(); foreach ($fields as $field) { if (in_array($field['f_type'], array(70, 75, 80, 85))) { $fsname = $field['f_sname']; $fvalue = $obj->{$fsname}; if ($fvalue != '') { page::assign($fsname, $fvalue); } } } } // Если указан список адресатов, отправляем письма if ($form_obj->mailing_list != '') { $mail = new phpmailer(); $mail->From = $this->parse($form_obj->admin_sender_address); $mail->FromName = $this->parse($form_obj->admin_sender_name); /* if (!empty($this->files)) for($i = 0; $i < count($this->files); $i++) $mail->AddAttachment($this->files[$i][0], $this->files[$i][1]); */ $mail->AddAddress($form_obj->mailing_list); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = $this->parse($form_obj->admin_subject); $mail->Body = $this->parse($form_obj->admin_template); $mail->Send(); } // Если нужно, отправляем уведомление пользователю if ($form_obj->send_notice && !$issetErrors) { $mail = new phpmailer(); $mail->From = $this->parse($form_obj->notice_sender_address); $mail->FromName = $this->parse($form_obj->notice_sender_name); $mail->AddAddress(system::POST('email')); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = $this->parse($form_obj->notice_subject); $mail->Body = $this->parse($form_obj->notice_template); $mail->Send(); } // Показываем результат if (system::isAjax()) { if ($form_obj->msg != '') { $text = $form_obj->msg; } else { $text = lang::get('FEEDBACK_MSG_1'); } system::json(array('field' => 0, 'msg' => strip_tags($text))); } else { system::redirect('/feedback/ok/' . $form_obj->id); } } else { // Произошли ошибки if (system::isAjax()) { system::json($answer); } else { system::savePostToSession(); system::saveErrorToSession('feedback', $answer); if (empty($_POST['back_url'])) { $_POST['back_url'] = '/structure/map'; } system::redirect($_POST['back_url'], true); } } system::stop(); } else { system::stop(); } }
private function sendStateMsg() { if (!empty($this->obj)) { if ($this->change_state && ($state = ormObjects::get($this->obj->state)) && $state->info) { page::assign('order.id', $this->obj->id); page::assign('order.number', $this->getNumber()); page::assign('order.cost', $this->getTotalCost()); // Информация о доставке page::assign('order.delivery', $this->obj->_delivery); page::assign('order.delivery_price', $this->getDeliveryPrice()); page::assign('order.name', $this->obj->delivery_name); page::assign('order.surname', $this->obj->delivery_surname); page::assign('order.phone', $this->obj->delivery_phone); page::assign('order.address', $this->obj->delivery_address); page::assign('username', user::get('surname') . ' ' . user::get('name')); page::assign('goods_list', page::macros('eshop')->goodsList($this->obj->id, 'goods_list_email')); $text = str_replace(array('{', '}'), '%', $state->email_msg); $title = str_replace(array('{', '}'), '%', $state->email_title); $mail = new phpmailer(); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->From = domains::curDomain()->getEmail(); $mail->FromName = domains::curDomain()->getSiteName(); $mail->Subject = page::parse($title); $mail->Body = page::parse($text); // Отправляем письмо пользователю $mail->AddAddress($this->obj->email); $mail->Send(); // Отправляем письмо администратору if ($state->id == reg::getKey('/eshop/fisrt_state') && reg::getKey('/eshop/dubl_to_email')) { $mail->ClearAddresses(); $mail->AddAddress(domains::curDomain()->getEmail()); $mail->Send(); } } } }
public function add_procAction() { $answer = array(); if (!reg::getKey('/users/reg')) { system::redirect('/'); } if (!user::isGuest()) { system::redirect('/users/edit'); } // Проверка капчи if (!system::validCapcha('random_image')) { $answer = array('msg' => lang::get('SITE_CAPHCA'), 'field' => 'captcha'); } // Проверка согласия с условиями оферты if (reg::getKey('/users/confirm') && !system::POST('confirm', isBool)) { $answer = array('msg' => lang::get('USERS_COMFIRM'), 'field' => 'confirm'); } // Добавляем объект if (empty($answer)) { $obj = new ormObject(); $obj->setParent(41); // Устанавливаем группу "Пользователи сайта" $obj->setClass('user'); $obj->tabuList('def_modul', 'active', 'last_visit', 'last_ip', 'groups'); $obj->loadFromPost(); $obj->active = 1; $obj->email = $obj->newVal('login'); $max_tickets = reg::getKey('/booking/max_tickets'); $obj->place_limit = $max_tickets == '' || $max_tickets == 0 ? 6 : $max_tickets; if ($obj->save()) { if (reg::getKey('/users/activation')) { // Регистрация с проверкой // Формируем временный ключ активации пользователя $key = md5(date('d.m.Y') . 'activate' . $obj->id); $obj->md5_flag = $key; $obj->active = 0; $obj->save(); // Отправляем письмо $url_pre = 'http://' . domains::curDomain()->getName() . languages::pre(); page::assign('url', $url_pre . '/users/activate/' . $key); page::assign('passw', system::POST('password')); page::assign('login', $obj->login); page::assign('name', $obj->name); system::sendMail('/users/mails/activate.tpl', $obj->email); $_SESSION['user_email'] = $obj->login; } else { // Регистрация без проверки // Отправляем письмо page::assign('passw', system::POST('password')); page::assign('login', $obj->login); page::assign('name', $obj->name); system::sendMail('/users/mails/registration.tpl', $obj->email); // Автоматическая авторизация user::authHim($obj); } // Все хорошо. Пользователь добавлен. if (system::isAjax()) { system::json(array('ok' => 1)); } else { system::redirect('/users/ok'); } } else { // Произошли ошибки if ($obj->issetErrors(32)) { $answer = array('msg' => lang::get('USERS_ISSET'), 'field' => 'login'); } else { $tmp = $obj->getErrorFields(); $answer = array('msg' => $obj->getErrorListText(' '), 'field' => $tmp['focus']); } } } if (!system::isAjax()) { system::savePostToSession(); system::saveErrorToSession('add_user', $answer); if (!empty($_POST['back_url'])) { system::redirect($_POST['back_url'], true); } else { system::redirect('/users/add'); } } else { system::json($answer); } }
/** * @return array * @param boolean $prinud - Если true, данные будут взяты не из кэша, а из БД. * @desc Вернет список всех доменов системы */ static function getAll($prinud = false) { if (empty(self::$domains) || $prinud) { $mas = db::q('SELECT *, d_id id FROM <<domains>>;', records); if (db::issetError()) { die; } self::$domains = array(); while (list($key, $domain) = each($mas)) { if (empty($domain['d_domain_id'])) { self::$domains[$domain['d_id']] = $domain; } if (empty($domain['d_domain_id'])) { self::$domains_rel[$domain['d_name']] = $domain['d_id']; } else { self::$domains_rel[$domain['d_name']] = $domain['d_domain_id']; } } } return self::$domains; }
static function indexPage($page) { if ($page instanceof ormPage) { if ($page->in_search) { /* Пробегаем по всем полям, данные которых участвуют в поиске. Разбиваем их содержимое на отдельные словоформы и ранжируем в соотвествии с настройками. */ self::parseContent($page->name, 'name'); $fields = $page->getClass()->loadFields(); while (list($fname, $field) = each($fields)) { if ($field['f_search']) { self::parseContent($page->__get($fname), $fname); } } // Сохраняем все найденные слова в БД while (list($word, $rank) = each(self::$words)) { $word_id = self::getWordId(self::morphGetRoot($word)); db::q('INSERT INTO <<search_rankings>> SET sr_word_id = "' . $word_id . '", sr_rank = "' . $rank . '", sr_obj_id = "' . $page->id . '", sr_lang_id = "' . languages::curId() . '", sr_domain_id = "' . domains::curId() . '";'); } } } }
public function delete() { if (!empty($this->id) && $this->id != 1) { $is_ok = true; // Удаляем права, настройки и страницы связанные с данным языком $domain = domains::getAll(); while (list($key, $val) = each($domain)) { // Удаление страниц $tmp = ormPages::delAllFor($val['id'], $this->id); if (!$tmp) { $is_ok = $tmp; } else { // Удаление настроек reg::delKey('/structure/' . $val['id'] . '/' . $this->id); // Удаление прав db::q('DELETE FROM <<modules_rights>> WHERE mr_name = "' . $this->id . ' ' . $val['id'] . '" and mr_mod_id = "3";'); } } // Удаляем сам язык if ($is_ok) { // У все доменов приязанных к текущему языку, меняем "язык по умолчанию". $domain = db::q('SELECT d_id FROM <<domains>> WHERE d_def_lang = "' . $this->id . '";', records); while (list($key, $val) = each($domain)) { if (!empty($val['d_id'])) { $domain = domains::get($val['d_id']); if ($domain instanceof domain) { $domain->setDefLang(1); $domain->save(); } } } $is_ok = db::q('DELETE FROM <<langs>> WHERE l_id = "' . $this->id . '";'); if ($is_ok !== false) { system::log('Удалена языковая версия сайта "' . $this->values['l_name'] . '" (id:' . $this->id . ')!', warning); return true; } else { system::log('Произошла ошибка при удалении языка "' . $this->values['l_name'] . '" (id:' . $this->id . ')!', error); $this->newError(54, 'Произошла ошибка при удалении языка "' . $this->values['l_name'] . '"!'); } } else { system::log('Пользователь пытался удалить языковую версию "' . $this->values['l_name'] . '" (id:' . $this->id . '), но у него не хватило прав на удаление всех страниц!', error); $this->newError(55, 'Вы не можете удалить язык сайта "' . $this->values['l_name'] . '", т.к. не имеете прав на удаление некоторых страниц!'); } } return false; }
/** * @return int ID шаблона * @param int $type - Тип шаблона. 0 - шаблон страницы, 1 - шаблон содержимого * @desc Возвращает id стандартного шаблона для класса с учетом текущего домена и языка, 0 - шаблон не выбран */ public function getDefTemplate($type = 0) { $id = db::q('SELECT t_id FROM <<template>>, <<template_def>> WHERE t_id = td_template_id AND td_class_id = ' . $this->id . ' AND t_type = ' . $type . ' AND t_lang_id = ' . languages::curId() . ' AND t_domain_id = ' . domains::curId() . ' LIMIT 1', value); return $id != '' ? $id : 0; }
/** * @return stirng - Контент * @param string $templ_name - имя шаблона * @desc МАКРОС: Возвращает пропарсенный шаблон из папки /template/structure */ function include_templ($templ_name) { $site_prefix = domains::curId() == 1 && languages::curId() == 1 ? '' : '/__' . str_replace('.', '_', domains::curDomain()->getName()) . '_' . languages::curPrefix(); $file = TEMPL_DIR . $site_prefix . '/structure/' . $templ_name . '.tpl'; if (!file_exists($file)) { return str_replace('%name%', $templ_name, 'Указанный шаблон (%name%.tpl) не найден!'); } else { $file_tpl = implode('', file($file)); return page::parse($file_tpl); } }
/** * @return NULL * @param integer $lang_id - ID языковой версии, если не указан используется текущая. * @param integer $domain_id - ID домена, если не указан используется текущий. * @desc Указывает что выборка будет производиться только по страницам. */ public function findInPages($lang_id = 0, $domain_id = 0) { if (empty($lang_id)) { $this->cur_lang_id = languages::curId(); } if (empty($domain_id)) { $this->cur_domain_id = domains::curId(); } $this->find_page = 1; }
/** * processAction * Update the record previously selected * @return unknown_type */ public function processAction() { $request = $this->getRequest(); try { // Check if we have a POST request if (!$request->isPost()) { return $this->_helper->redirector('index'); } // Get our form and validate it $form = $this->getForm('/admin/domains/process'); if (!$form->isValid($request->getPost())) { // Invalid entries $this->view->form = $form; $this->view->title = $this->translator->translate("Domain Process"); $this->view->description = $this->translator->translate("Check all the information posted before saving them."); return $this->_helper->viewRenderer('customform'); // re-render the login form } // Get the values posted $params = $form->getValues(); // Get the id $id = $params['domain_id']; if (!empty($params['dnsform']['target']) && !empty($params['dnsform']['zones'])) { Dns_Zones::addDnsZone($id, $params['dnsform']['subdomain'], $params['dnsform']['target'], $params['dnsform']['zones']); } // Save the message note if (!empty($params['note'])) { Messages::addMessage($params['note'], $this->customer['customer_id'], $id); $isp = Shineisp_Registry::get('ISP'); $placeholder['fullname'] = $this->customer['firstname'] . " " . $this->customer['lastname']; $placeholder['domain'] = domains::getDomainName($id); $placeholder['message'] = $params['note']; $placeholder['messagetype'] = $this->translator->translate('Domain'); Messages::sendMessage("message_new", $this->customer['email'], $placeholder); Messages::sendMessage("message_admin", $isp->email, $placeholder); } Domains::setAuthInfo($id, $params['authinfocode']); Domains::setAutorenew($id, $params['autorenew']); $this->_helper->redirector('edit', 'domains', 'default', array('id' => $id, 'mex' => 'The task requested has been executed successfully.', 'status' => 'success')); } catch (Exception $e) { die($e->getMessage()); } }
static function pre() { self::init(); if (self::$cur_lang->id() != domains::curDomain()->getDefLang()) { return '/' . self::$cur_lang->getPrefix(); } else { return ''; } }
/** * @return string * @param integer $section - ID объекта с которого начинается построение дерева * @param array $parse - Шаблон оформления * @desc Рекурсивная функция строит дерево н-го уровня */ private function build_menu($section_id, $parse, $with_frame = true) { $items = ''; while ($obj = $this->getTreeObject($section_id)) { if (isset($_SESSION['TREE_OPEN_NODES'][$obj->id]) && $obj->issetChildren()) { $sub_items = $this->build_menu($obj->id, $parse); } page::assign('item.id', $obj->id); page::assign('item.parent_id', $section_id); page::assign('item.url', $this->rightEdit . '/' . $obj->id); $pach = '/css_mpanel/tree/images/'; $ico = 'file1.gif'; if ($obj->getClass()->issetField('active')) { page::assign('item.active', $obj->active); if (!$obj->active) { $ico = 'file0.gif'; } else { $ico = 'classes/' . $obj->getClass()->getSName() . '.png'; if (!file_exists(ROOT_DIR . $pach . $ico)) { $ico = 'file1.gif'; } } } else { page::assign('item.active', 1); } page::assign('obj.ico', $pach . $ico); page::assign('obj.sname', $obj->getClass()->getSName()); //определяем иконку класса, если нету присваем пустой листик $active_ico = 'classes/' . $obj->getClass()->getSName() . '.png'; if (!file_exists(ROOT_DIR . $pach . $active_ico)) { $active_ico = 'file1.gif'; } page::assign('obj.active_ico', $active_ico); page::assign('item.name', $obj->name); if (!empty($this->funct_name) && function_exists($this->funct_name)) { $notice = call_user_func($this->funct_name, $obj); } else { $notice = ''; } page::assign('item.notice', $notice); page::assign('obj.url', 'http://' . domains::curDomain()->getName() . $obj->_url); if (isset($_SESSION['TREE_OPEN_NODES'][$obj->id]) && $obj->issetChildren()) { page::assign('close', ' open'); page::assign('sub_items', $sub_items); } else { page::assign('close', $obj->issetChildren() ? ' closed' : ''); page::assign('sub_items', ''); } $items .= page::parse($parse['items']); } if (!empty($items) && $with_frame) { page::assign('items', $items); $items = page::parse($parse['frame_items']); } return $items; }
$text = $language->get(); //show the title if ($format == 'text') { echo "\n"; echo $text['label-upgrade'] . "\n"; echo "-----------------------------------------\n"; echo "\n"; echo $text['label-database'] . "\n"; } //make sure the database schema and installation have performed all necessary tasks require_once "resources/classes/schema.php"; $obj = new schema(); echo $obj->schema("text"); //run all app_defaults.php files require_once "resources/classes/domains.php"; $domain = new domains(); $domain->upgrade(); //show the content if ($format == 'html') { echo "<div align='center'>\n"; echo "<table width='40%'>\n"; echo "<tr>\n"; echo "<th align='left'>" . $text['header-message'] . "</th>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td class='row_style1'><strong>" . $text['message-upgrade'] . "</strong></td>\n"; echo "</tr>\n"; echo "</table>\n"; echo "</div>\n"; echo "<br />\n"; echo "<br />\n";
public function proc_upd() { // Обработчик для еденичного изменения класса $mini_action = substr(system::action(), -3); if (system::action() == "proc_upd") { // Говорим какой объект нужно изменить $obj = ormObjects::get(system::POST('obj_id')); } else { if (system::action() == "proc_add") { // Говорим какой объект нужно создать $obj = new ormObject(); $obj->setClass('subscription'); } } // Если произошли ошибки, перенаправляем на главную страницу модуля if ($obj->issetErrors()) { system::redirect('/subscription'); } // Присваиваем пришедшие значения полям в объекте $obj->loadFromPost($mini_action); $obj->lang = languages::curId(); $obj->domain = domains::curId(); // Сохраняем изменения $obj_id = $obj->save(); // Если объект не сохранился, выводим пользователю текст ошибки. if ($obj_id === false) { system::savePostToSession(); ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText()); ui::selectErrorFields($obj->getErrorFields()); $obj_id = empty($_POST['obj_id']) ? '' : $_POST['obj_id']; system::redirect('/subscription/subscribe_' . $mini_action . '/' . $obj_id); } // Если данные изменились корректно перенаправляем на соответствующию страницу if ($_POST['parram'] == 'apply') { system::redirect('/subscription/subscribe_upd/' . $obj_id); } else { system::redirect('/subscription'); } }
$fax_file_only = $fax_path['basename']; $fax_file_name = $fax_path['filename']; $dir_fax = $fax_path['dirname']; //get the domain_uuid from the database $sql = "select * from v_domains "; $sql .= "where domain_name = '" . $domain_name . "' "; $prep_statement = $db->prepare($sql); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); foreach ($result as &$row) { //set the domain variables $domain_uuid = $row["domain_uuid"]; $_SESSION["domain_uuid"] = $row["domain_uuid"]; $_SESSION["domain_name"] = $domain_name; //set the setting arrays $domain = new domains(); $domain->db = $db; $domain->set(); } unset($prep_statement); //get the fax details from the database $sql = "select * from v_fax "; $sql .= "where domain_uuid = '" . $_SESSION["domain_uuid"] . "' "; $sql .= "and fax_extension = '{$fax_extension}' "; $prep_statement = $db->prepare($sql); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); foreach ($result as &$row) { //set database fields as variables //$fax_email = $row["fax_email"]; $fax_uuid = $row["fax_uuid"];
private function createTemplate($field_name) { $id = 0; $type = $field_name == 'template_id' ? 0 : 1; if (!empty($_POST[$field_name . '_new_val']) && !empty($_POST[$field_name . '_new_val2'])) { $templ = new template($id); $templ->setName($_POST[$field_name . '_new_val']); $templ->setFile($_POST[$field_name . '_new_val2']); $templ->setDestination($type); $templ->setLangId(languages::curId()); $templ->setDomainId(domains::curId()); $id = $templ->save(); } if (!empty($id)) { $_POST[$field_name] = $id; } }