Esempio n. 1
0
 public static function get($id)
 {
     $class = false;
     if (!empty($id) && !is_array($id)) {
         self::init();
         // Проверяем переданные данные, определяем ID
         if (is_numeric($id)) {
             $id = system::checkVar($id, isInt);
         } else {
             if (!is_array($id)) {
                 $sname = system::checkVar($id, isVarName);
                 if (!empty($sname) && array_key_exists($sname, self::$cl_names)) {
                     $id = self::$cl_names[$sname];
                 }
             }
         }
         // Загрузка класса
         if (is_numeric($id) && isset(self::$classes[$id])) {
             $class = self::$classes[$id];
         } else {
             if (isset(self::$classes_data[$id])) {
                 $class = new ormClass(self::$classes_data[$id]);
                 if (!$class->issetErrors()) {
                     self::$classes[$class->id()] = $class;
                 } else {
                     $class = false;
                 }
             }
         }
     }
     if ($class) {
         return $class;
     }
 }
Esempio n. 2
0
 static function changeGoods($goods_id, $count)
 {
     if (isset($_SESSION['basket'][$goods_id])) {
         $count = system::checkVar($count, isInt);
         $_SESSION['basket'][$goods_id]['count'] = $count;
         return true;
     }
     return false;
 }
Esempio n. 3
0
 /**
  * @return null
  * @param integer $id - ID ORM-объекта
  * @param string $title - Заголовок для корня
  * @param string $url - Ссылка (если нужно)
  * @desc Устанавливает корень дерева с указанием параметров
  */
 public function setRoot($id, $title, $url = '#')
 {
     $this->root_id = system::checkVar($id, isInt);
     $title = system::checkVar($title, isString);
     if ($title != false) {
         $this->root_title = $title;
     }
     $url = system::checkVar($url, isString);
     if ($url != false) {
         $this->root_url = $url;
     }
 }
Esempio n. 4
0
 public function proc_edit()
 {
     $text = system::checkVar(system::POST('minitext'), isText);
     $id = system::checkVar(system::POST('minitext_id'), isInt);
     $key = ormPages::getPrefix() . '/minitext/' . $id;
     if ($text && $id && reg::existKey($key)) {
         if (reg::setKey($key, $text)) {
             system::json(array('error' => 0));
             system::stop();
         }
     }
     system::json(array('error' => 1, 'errorInfo' => lang::get('STRUCTURE_MINITEXT_ERROR')));
     system::stop();
 }
Esempio n. 5
0
 /**
  * @return null
  * @param string $name - префикс
  * @desc Устанавливает префикс языковой версии
  */
 public function setPrefix($name)
 {
     $name = system::checkVar($name, isVarName, 4);
     if (empty($name)) {
         $this->newError(50, 'Префикс языка указан в неправильном формате!');
     } else {
         $isset = db::q('SELECT count(l_id) FROM <<langs>>
     					WHERE l_prefix = "' . $name . '" and
     						  l_id <> "' . $this->id . '";', value);
         if (empty($isset)) {
             $this->values['l_prefix'] = $name;
         } else {
             $this->newError(51, 'Невозможно добавить язык с префиксом "' . $name . '". Язык с таким префиксом уже зарегистрирован в системе!');
         }
     }
 }
Esempio n. 6
0
    public static function getObjectsByClass($class_id)
    {
        $class_id = system::checkVar($class_id, isVarName);
        if (is_numeric($class_id)) {
            $sql = 'SELECT o_id id, o_name name
	   				 	 FROM <<objects>>
	   				 	 WHERE o_class_id = "' . $class_id . '" and
	   				 	 	   o_to_trash = 0;';
        } else {
            $sql = 'SELECT o_id id, o_name name
	   				 	 FROM <<objects>>, <<classes>>
	   				 	 WHERE o_class_id = c_id and
	   				 	 	   c_sname = "' . $class_id . '" and
	   				 	 	   o_to_trash = 0;';
        }
        return db::q($sql, records);
    }
Esempio n. 7
0
 public function change_basketAction()
 {
     $goods_list = basket::getGoodsData();
     $num = $cost = 0;
     while (list($id, $goods) = each($goods_list)) {
         if (isset($_POST['basket_check'][$id]) && isset($_POST['basket_count'][$id])) {
             $count = system::checkVar($_POST['basket_count'][$id], isInt);
             if (empty($count)) {
                 $count = 1;
             }
             basket::changeGoods($id, $count);
         } else {
             basket::delGoods($id);
         }
     }
     if (system::POST('is_order', isBool)) {
         system::redirect('/eshop/order');
     } else {
         system::redirect('/eshop/basket');
     }
 }
Esempio n. 8
0
 public function change_rateAction()
 {
     if ($page = ormPages::get(system::url(2))) {
         if (!isset($_SESSION['change_rate'][$page->id]) && $page->getClass()->issetField('rate')) {
             // Высчитываем новый рейтинг
             $rate = system::checkVar(system::url(3), isInt);
             if ($rate > 5) {
                 $rate = 5;
             } else {
                 if ($rate < 1) {
                     $rate = 1;
                 }
             }
             $new_rate = $page->rate != 0 ? ($page->rate + $rate) / 2 : $rate;
             // Сохраняем
             $page->rate = $new_rate;
             $page->save();
             $_SESSION['change_rate'][$page->id] = 1;
             system::json(array('error' => 0, 'new_rate' => $new_rate));
         }
     }
     system::json(array('error' => 1, 'new_rate' => 0));
 }
Esempio n. 9
0
 /**
 * @return stirng - Путь до изображения
 * @param string $file_name - Исходное изображение
 * @param CONST $scale_type - Способ масштабирования рисунка, одна из трех констант
 			stRateably	-	Масштабирование с учетом пропорций, относительно $width или $height
 			stSquare    - 	Обрезать по квадрату со стороной $width
 			stInSquare  - 	Вписать в квадрат со стороной $width
 * @param int $width - Ширина конечного изображения, если == 0 не учитывается
 * @param int $height - Высота конечного изображения, если == 0 не учитывается
 * @param string $watermark - Способ наложения водяного знака. Одно из нескольких значений:
 			0 		- 	Водяной знак не накладывается
 			1-9 	-	Водяной знак накладывается в одну из 9 позиций квадрата (см. документацию)
 * @desc МАКРОС: При необходимости масштабирует изображение под заданные параметры и
 				возвращает путь до кешированного файла.
 */
 public function resize($file_name, $scale_type, $width = 0, $height = 0, $watermark = 0)
 {
     if (!empty($file_name)) {
         if (system::checkVar($file_name, isAbsUrl)) {
             return $file_name;
         }
         $scale = !is_numeric($scale_type) ? constant($scale_type) : $scale_type;
         $dir = '/cache/img/' . $scale_type . '_' . $width . 'x' . $height . '_' . $watermark;
         $new_file = $dir . '/' . system::fileName($file_name);
         if (!file_exists(ROOT_DIR . $new_file)) {
             if (!is_dir(ROOT_DIR . $dir)) {
                 @mkdir(ROOT_DIR . $dir, 0777);
             }
             $img = new resizer($file_name, $scale, $width, $height);
             if (is_numeric($watermark) && $watermark > 0) {
                 $img->setWatermark(reg::getKey('/core/watermark'), $watermark);
             }
             $img->save(ROOT_DIR . $new_file);
         }
         if (file_exists(ROOT_DIR . $new_file)) {
             return $new_file;
         }
     }
 }
Esempio n. 10
0
 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();
     }
 }
Esempio n. 11
0
    function getGroupBySName($name, $only_id = false)
    {
        $sname = system::checkVar($name, isVarName);
        if ($sname !== false) {
            $sql = 'SELECT fg_id FROM <<fgroup>>
		        		 WHERE fg_class_id = "' . $this->id . '" and fg_sname="' . $sname . '";';
            $id = db::q($sql, value);
            if ($id !== false) {
                if (!$only_id) {
                    return new ormFieldsGroup($id);
                } else {
                    return $id;
                }
            } else {
                return false;
            }
        }
    }
Esempio n. 12
0
 static function getTags($limit = 100)
 {
     $limit = system::checkVar($limit, isInt);
     if (empty($limit)) {
         $limit = 100;
     }
     $tags = db::q('SELECT t_id id, t_name name, t_count count  FROM <<tags>>, <<tags_rels>>
                     WHERE t_id = tr_tag_id and tr_obj_id = "' . $obj_id . '"
                     ORDER BY t_id LIMIT ' . $limit . ';', records, 0);
     return $tags;
 }
Esempio n. 13
0
 /**
  * @return null
  * @param integer $parent_id - ID родительского ORM-объекта к которому прикрепляем данный объект.
  * @param integer $position - Позиция в которую устанавливаем данный объект
  * @desc Устанавливает нового родителя, сохраняя связи с другими родителями
  */
 public function setNewParent($parent_id, $position = 0)
 {
     $id = system::checkVar($parent_id, isInt);
     $position = system::checkVar($position, isInt);
     $this->new_parents[$id] = array('parent_id' => $id, 'position' => $position);
 }
Esempio n. 14
0
 static function delIndexForPage($page_id)
 {
     if (system::checkVar($page_id, isInt)) {
         db::q('DELETE FROM <<search_rankings>> WHERE sr_obj_id = "' . $page_id . '";');
     }
 }
Esempio n. 15
0
 public function setFilters()
 {
     if ($this->getCount() > 0) {
         reset($this->filters);
         while (list($fname, $field) = each($this->filters)) {
             if (isset($_SESSION['filters_' . $this->prefix][$fname])) {
                 // Запоминаем данные пришедшие через POST
                 if (isset($_POST['filter']) && isset($_POST[$fname])) {
                     if ($_POST[$fname] == '' || empty($_POST[$fname]) && ($field['f_type'] == 90 || $field['f_type'] == 95)) {
                         $value = '';
                     } else {
                         if ($field['f_type'] == 50 || $field['f_type'] > 69 && $field['f_type'] < 86) {
                             $value = system::checkVar($_POST[$fname], isInt);
                         } else {
                             if ($field['f_type'] == 90 || $field['f_type'] == 95) {
                                 $value = system::checkVar($_POST[$fname], isInt);
                             } else {
                                 $value = system::checkVar($_POST[$fname], isString);
                             }
                         }
                     }
                     $_SESSION['filters_' . $this->prefix][$fname] = $value;
                     if (isset($_POST[$fname . '2'])) {
                         if (empty($_POST[$fname . '2'])) {
                             $value2 = '';
                         } else {
                             if ($field['f_type'] > 24 && $field['f_type'] < 33) {
                                 $value2 = system::checkVar($_POST[$fname . '2'], isString);
                             } else {
                                 $value2 = system::checkVar($_POST[$fname . '2'], isInt);
                             }
                         }
                         $_SESSION['filters_' . $this->prefix][$fname . '_2'] = $value2;
                     }
                 }
                 if (isset($_SESSION['filters_' . $this->prefix][$fname . '_2'])) {
                     $value2 = $_SESSION['filters_' . $this->prefix][$fname . '_2'];
                 } else {
                     if (isset($value2)) {
                         unset($value2);
                     }
                 }
                 $value = $_SESSION['filters_' . $this->prefix][$fname];
                 // Устанавливаем на основе сохраненных данных фильтры
                 if ($value !== '' || isset($value2) && $value2 !== '') {
                     if ($field['f_type'] == 50) {
                         // Галочка
                         if (!empty($value)) {
                             $value = $value === 1 ? true : false;
                             $this->select->where($fname, '=', $value);
                             $this->is_filtered = true;
                         }
                     } else {
                         if ($field['f_type'] > 69 && $field['f_type'] < 86) {
                             // Файлы
                             if ($value === 1) {
                                 $this->select->where($fname, '<>', '');
                                 $this->is_filtered = true;
                             } else {
                                 if ($value === 2) {
                                     $this->select->where($fname, '=', '');
                                     $this->is_filtered = true;
                                 }
                             }
                         } else {
                             if ($field['f_type'] == 90 || $field['f_type'] == 95) {
                                 // Справочники
                                 if (!empty($value)) {
                                     if ($field['f_relation'] == 2) {
                                         $parents[] = $value;
                                     } else {
                                         $this->select->where($fname, '=', $value);
                                     }
                                     $this->is_filtered = true;
                                 }
                             } else {
                                 if ($field['f_type'] == 25 || $field['f_type'] == 30 || $field['f_type'] == 32) {
                                     // Фильтры по временным отрезкам
                                     if ($field['f_type'] == 25) {
                                         // Дата
                                         if (!empty($value)) {
                                             $value = date('Y-m-d', strtotime($value));
                                         }
                                         if (!empty($value2)) {
                                             $value2 = date('Y-m-d', strtotime($value2));
                                         }
                                     } else {
                                         if ($field['f_type'] == 30) {
                                             // Время
                                             if (!empty($value)) {
                                                 $value = date('H:i:s', strtotime($value));
                                             }
                                             if (!empty($value2)) {
                                                 $value2 = date('H:i:s', strtotime($value2));
                                             }
                                         } else {
                                             if ($field['f_type'] == 32) {
                                                 // Дата и Время
                                                 if (!empty($value)) {
                                                     $value = date('Y-m-d H:i:s', strtotime($value));
                                                 }
                                                 if (!empty($value2)) {
                                                     $value2 = date('Y-m-d H:i:s', strtotime($value2));
                                                 }
                                             }
                                         }
                                     }
                                     if (isset($value2)) {
                                         if ($value !== '' && $value2 === '') {
                                             $this->select->where($fname, '>=', $value);
                                         } else {
                                             if ($value === '' && $value2 !== '') {
                                                 $this->select->where($fname, '<=', $value2);
                                             } else {
                                                 if ($value !== '' && $value2 !== '') {
                                                     $this->select->where($fname, 'BETWEEN', $value, $value2);
                                                 }
                                             }
                                         }
                                     } else {
                                         $this->select->where($fname, '=', $value);
                                     }
                                     $this->is_filtered = true;
                                 } else {
                                     if (is_numeric($value) || isset($value2) && is_numeric($value2)) {
                                         // Числовые поля
                                         if (isset($value2)) {
                                             if ($value !== '' && $value2 === '') {
                                                 $this->select->where($fname, '>=', $value);
                                             } else {
                                                 if ($value === '' && $value2 !== '') {
                                                     $this->select->where($fname, '<=', $value2);
                                                 } else {
                                                     if ($value !== '' && $value2 !== '') {
                                                         $this->select->where($fname, 'BETWEEN', $value, $value2);
                                                     }
                                                 }
                                             }
                                         } else {
                                             $this->select->where($fname, '=', $value);
                                         }
                                         $this->is_filtered = true;
                                     } else {
                                         if (!empty($value)) {
                                             // Текстовые поля
                                             $this->select->where($fname, 'LIKE', '%' . $value . '%');
                                             $this->is_filtered = true;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Esempio n. 16
0
    /**
     * @return null
     * @param string $name - Доменное имя
     * @param integer $id - ID зеркала
     * @desc Добавляет или изменяет зеркало домена.
     */
    public function changeMirror($name, $id = '')
    {
        $id = system::checkVar($id, isInt);
        $name = system::checkVar($name, isRuDomain);
        if (!empty($this->id) && !empty($this->values['d_def_lang']) && !empty($name)) {
            if (!empty($id)) {
                db::q('UPDATE <<domains>> SET d_name = "' . $name . '" WHERE d_id = "' . $id . '";');
                system::log('Изменено зеркало "' . $name . '" (id:' . $id . ') домена "' . $this->values['d_name'] . '" (id:' . $this->id . ')', warning);
            } else {
                db::q('INSERT INTO <<domains>>
	    			   SET d_name = "' . $name . '",
	    				   d_domain_id = "' . $this->id . '",
	    				   d_def_lang = NULL,
	    				   d_online = 1;');
                system::log('Добавлено зеркало "' . $name . '" (id:' . $id . ') к домена "' . $this->values['d_name'] . '" (id:' . $this->id . ')', warning);
            }
            return true;
        }
    }
Esempio n. 17
0
 /**
  * @return integer
  * @param integer $obj_id - ID объекта
  * @param boolean $only_active - Если true - вернет количество активных (проверенных) комментариев
  * @desc Вернет общее количество комментариев для указанного объекта
  */
 public static function getAllCount($obj_id, $only_active = false)
 {
     $obj_id = system::checkVar($obj_id, isInt);
     if ($obj_id) {
         $where = $only_active ? ' and c_active = 1' : '';
         $count = db::q('SELECT count(c_id) FROM <<comments>> WHERE c_obj_id = "' . $obj_id . '" ' . $where . ';', value);
         if ($count) {
             return $count;
         }
     }
     return 0;
 }
Esempio n. 18
0
 static function addEmail($email, $subscriptions, $copyUserData = false)
 {
     $email = system::checkVar($email, isEmail);
     if (!empty($email) && !empty($subscriptions)) {
         $obj = new ormObject();
         $obj->setClass('subscribe_user');
         $obj->name = $email;
         if (!user::isGuest() && $copyUserData) {
             $obj->second_name = user::get('surname');
             $obj->first_name = user::get('name');
             $obj->user_id = user::get('id');
         }
         // Указываем на какие подписки подписать
         while (list($key, $val) = each($subscriptions)) {
             $obj->setNewParent($val);
         }
         // Сохраняем изменения
         $sid = $obj->save();
         if ($obj->issetErrors(29)) {
             // Если указанный e-mail уже существует, пытаемся найти его и подписать на рассылки.
             $sel = new ormSelect('subscribe_user');
             $sel->where('name', '=', $email);
             $sel->limit(1);
             if ($obj = $sel->getObject()) {
                 if (!user::isGuest() && $copyUserData) {
                     $obj->second_name = user::get('surname');
                     $obj->first_name = user::get('name');
                     $obj->user_id = user::get('id');
                 }
                 reset($subscriptions);
                 while (list($key, $val) = each($subscriptions)) {
                     $obj->setNewParent($val);
                 }
                 $sid = $obj->save();
             }
         }
         return $sid;
     }
 }
Esempio n. 19
0
 /**
  * @return null
  * @param integer $state - Право доступа к странице
  * @desc Установка для всех (групп и пользователей) единого права доступа
  */
 public function setRightForAll($state)
 {
     $this->right_for_all = system::checkVar($state, isInt);
     $this->right_state = $this->right_for_all;
 }
Esempio n. 20
0
 /**
  * @return null
  * @param string $change_funct - Имя php-функции для обработки добавления/изменения записей.
  * @param string $del_funct - Имя php-функции для обработки удаления записей.
  * @param string $addit_val - Дополнительный параметр передаваемый в функцию.
  * @desc Сохраняет все пришедшие данные. Метод используется обработчиком формы.
  */
 public function process($change_funct, $del_funct = '', $addit_val = '')
 {
     // print_r($_POST);
     if (isset($_POST['obj' . $this->form_name])) {
         while (list($id, $fields) = each($_POST['obj' . $this->form_name])) {
             $id = system::checkVar($id, isInt);
             if (!$this->without_del && isset($_POST['delete_' . $this->form_name . '_' . $id])) {
                 if (!empty($del_funct)) {
                     if (function_exists($del_funct)) {
                         call_user_func($del_funct, $id, $this->form_name, $addit_val);
                     } else {
                         trigger_error('Not found user function "' . $del_funct . '()"!', E_USER_ERROR);
                     }
                 }
             } else {
                 $check = false;
                 foreach ($fields as $val) {
                     if (!empty($val)) {
                         $check = true;
                     }
                 }
                 if ($check) {
                     if (function_exists($change_funct)) {
                         $is_ok = call_user_func($change_funct, $id, $fields, $this->form_name, $addit_val);
                     } else {
                         trigger_error('Not found user function "' . $change_funct . '()"!', E_USER_ERROR);
                     }
                     if (!$is_ok) {
                         system::savePostToSession();
                     }
                 }
             }
         }
     }
 }
Esempio n. 21
0
 public function activateAction()
 {
     if (!reg::getKey('/users/reg') || !reg::getKey('/users/activation')) {
         system::redirect('/');
     }
     if ($userKey = system::checkVar(system::url(2), isMD5)) {
         // Ищем нужного пользователя
         $sel = new ormSelect('user');
         $sel->where('md5_flag', '=', $userKey);
         $sel->limit(1);
         if ($user = $sel->getObject()) {
             $key = md5(date('d.m.Y') . 'activate' . $user->id);
             if ($key == $userKey) {
                 $user->active = 1;
                 $user->md5_flag = '';
                 $user->save();
                 // Авторизуем пользователя
                 user::authHim($user);
                 page::globalVar('h1', lang::get('USERS_ADD_H1'));
                 page::globalVar('title', lang::get('USERS_ADD_H1'));
                 return lang::get('USERS_ADD_MSG2');
             }
         }
     }
     return ormPages::get404();
 }
Esempio n. 22
0
 public function setParram($text)
 {
     $this->newprop['c_parram'] = system::checkVar($text, isString);
 }
Esempio n. 23
0
 private static function getMacrosContent($post_parram = 0)
 {
     $macros = self::macros(system::url(1));
     $parram = array();
     if (!empty($post_parram) && is_array($post_parram)) {
         while (list($key, $val) = each($post_parram)) {
             $parram[] = system::checkVar($val, isString);
         }
     } else {
         $num = 3;
         while (system::issetUrl($num)) {
             $parram[] = system::url($num);
             $num++;
         }
     }
     if (method_exists($macros, system::url(2))) {
         $html = call_user_func_array(array($macros, system::url(2)), $parram);
     } else {
         $html = 'Указанный макрос не существует "' . system::url(1) . '.' . system::url(2) . '()"<br>';
     }
     return $html;
 }
Esempio n. 24
0
 static function auth($login, $password)
 {
     $ret = false;
     $login = system::checkVar($login, isString);
     $sel = new ormSelect('user');
     $sel->where($sel->val('active', '=', 1), $sel->val('login', '=', trim($login)), $sel->containedIn('user_group', $sel->val('active', '=', 1)));
     $sel->limit(1);
     if (self::$obj = $sel->getObject()) {
         if (self::$obj->password == system::checkVar($password, isPassword)) {
             $ret = self::authHim(self::$obj);
         } else {
             $max_error = reg::getKey('/users/errorCountBlock');
             //Смотрим, если у юзера уже N неправильных паролей, то блокируем его
             if (self::$obj->error_passw + 1 >= $max_error && $max_error > 0) {
                 self::$obj->active = 0;
                 self::sendMailBlock(self::$obj);
             }
             self::$obj->error_passw++;
             self::$obj->save();
             if (!self::$obj->active) {
                 //записываем что пользователь заблокирован по своей дурости из-за не знания пароля
                 system::log(str_replace('%user%', $login, str_replace('%count%', $max_error, lang::get('BLOCKED_USER'))), error);
             } else {
                 //Записываем в журнал о неправильном вводе пароля
                 system::log(str_replace('%user%', $login, lang::get('ERROR_PASSWORD')), error);
             }
         }
     }
     return $ret;
 }
Esempio n. 25
0
 /**
  * @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('&nbsp;', '', 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;
 }
Esempio n. 26
0
 /**
  * @return null
  * @param integer $id - ID домена
  * @desc Привязывает шаблон к указанному домену
  */
 public function setDomainId($id)
 {
     $name = system::checkVar($id, isInt);
     if (empty($name)) {
         $this->newError(67, 'Не указан домен для шаблона!');
     } else {
         $this->values['t_domain_id'] = $name;
     }
 }
Esempio n. 27
0
 /**
  * @return string HTML
  * @param integer $obj_id - ID группы или пользователя
  * @param boolean $obj_type - Тип объекта: 0 - группа, 1 - пользователь
  * @desc Сохраняет настройки прав пришедшие через POST для группы или пользователя
  */
 public static function setListForModuls($obj_id, $obj_type)
 {
     if (!empty($obj_id)) {
         db::q("DELETE FROM <<modules_rgu>> WHERE rgu_obj_id = {$obj_id}");
         if (!empty($_POST['rights'])) {
             if ($obj_type == 0) {
                 while (list($key, $right) = each($_POST['rights'])) {
                     $right = system::checkVar($right, isInt);
                     db::q("INSERT INTO <<modules_rgu>>\n\t\t\t                    SET rgu_obj_id = {$obj_id},\n\t\t\t                        rgu_value = 1,\n\t\t\t                        rgu_right_id = {$right};");
                 }
             } else {
                 while (list($right, $value) = each($_POST['rights'])) {
                     $right = system::checkVar($right, isInt);
                     $value = system::checkVar($value, isInt);
                     if ($value != 0 && $right != false && $value != false) {
                         db::q("INSERT INTO <<modules_rgu>>\n\t\t\t                    SET rgu_obj_id = {$obj_id},\n\t\t\t                        rgu_value = {$value},\n\t\t\t                        rgu_right_id = {$right};");
                     }
                 }
             }
         }
     }
 }
Esempio n. 28
0
    /**
    * @return null
    * @param ormObject $obj -  ORM-Объект информация о котором заносится в журнал
    * @param string $text -  Текст сообщения
    * @param const $state -  Статус сообщения, используйте одну из контант:
    		info	-	В порядке информации
    		error	-	Ошибка
    		warning	-	Предупреждение
    * @param string $type -  Тип записи (для системных нужд, использовать не рекомендуется)
    		0 - обычная,
    		1 - информаци о помещении объекта в корзину
    * @desc Функция реализует добавление событий об изменение ORM-объектов в базу данных
    */
    static function revue(ormObject $obj, $text, $state = error, $type = 0)
    {
        $state = system::checkVar($state, isInt);
        $type = system::checkVar($type, isInt);
        $text = system::checkVar($text, isString);
        db::q('INSERT INTO <<revue>>
 			   SET rev_state = "' . $state . '",
 				   rev_type = "' . $type . '",
 				   rev_obj_id = "' . $obj->id . '",
 				   rev_class_id = "' . $obj->getClass()->id() . '",
 				   rev_user_id = "' . user::get('id') . '",
 				   rev_user = "******",
 				   rev_datetime = "' . date('Y-m-d H:i:s') . '",
 				   rev_message = "' . $text . '",
 				   rev_ip = "' . $_SERVER['REMOTE_ADDR'] . '";');
    }
Esempio n. 29
0
 /**
 	* @return boolean В случае успеха true
 	* @param string $key - Ключ в котором будет хранится список
 	* @param string $value - Записываемое значение
 	* @desc Добавляем значения в список. Все значения записанные в список идентифицируются по ID.
 			Метод удобно использовать, когда не важно какой ключ будет у значений списка.
 
      Пример:
 		 reg::addToList('/core/test_list', 'La');
 		 reg::addToList('/core/test_list', 'Ma');
 		 reg::addToList('/core/test_list', 'Pa');
 		 print_r(reg::getList('/core/test_list'));
  Вернет:
 		 Array (
 		 	[705] => La
 		 	[706] => Ma
 		 	[707] => Pa
 		 )
 */
 static function addToList($key, $value = '', $desc = '')
 {
     self::init();
     $value = system::checkVar($value, isText);
     $way = self::getWay($key);
     $keyID = self::getIDKey($way);
     if ($keyID['state'] === true) {
         // Добавляем ключ
         $sect = $keyID['id'];
         for ($i = $keyID['level']; $i < count($way); $i++) {
             if ($sect !== false) {
                 $w = count($way) == $i ? $way[$i] : 'auto_id';
                 $val = count($way) - 1 == $i ? $value : '';
                 $desc = count($way) - 1 == $i ? $desc : '';
                 $sect = self::newKey($w, $val, $sect, $desc);
             }
         }
         return true;
     }
 }
Esempio n. 30
0
 static function get($page_id, $filter_class = '')
 {
     self::init();
     if (is_numeric($page_id) && !empty($page_id) && !is_array($page_id)) {
         $page_id = system::checkVar($page_id, isInt);
         if (!isset(self::$pages_obj[$page_id])) {
             if (self::issetPage($page_id)) {
                 self::$pages_obj[$page_id] = new ormPage(self::$pages[$page_id]);
             } else {
                 self::$pages_obj[$page_id] = new ormPage($page_id);
             }
         }
         $obj = self::$pages_obj[$page_id];
         if (isset($obj) && $obj instanceof ormPage && !$obj->issetErrors() && $obj->id == $page_id) {
             if (empty($filter_class) || $obj->isInheritor($filter_class)) {
                 return $obj;
             }
         }
     } else {
         if (is_array($page_id) && isset($page_id['o_id'])) {
             if (!isset(self::$pages_obj[$page_id['o_id']])) {
                 $obj = new ormPage($page_id);
                 self::$pages_obj[$obj->id] = $obj;
                 if (!isset(self::$pages[$obj->id])) {
                     self::$pages[$obj->id] = $page_id;
                     if (isset($page_id['r_parent_id'])) {
                         self::$pages_rel[$page_id['o_id']] = $page_id['r_parent_id'];
                         self::$pages_rel2[$page_id['r_parent_id']][] = $page_id['o_id'];
                     }
                 }
             } else {
                 $obj = self::$pages_obj[$page_id['o_id']];
                 $obj->supplementData($page_id);
             }
             if (empty($filter_class) || $obj->isInheritor($filter_class)) {
                 return $obj;
             }
         }
     }
     return false;
 }