Орла
Области
Компаний
Пользователи
Галерея
Фиксированные новости
Орла
Отзывы о фирмах
Тарифы
Пользователи
Области
Банкоматы
Торговые точки
Доска объявлений
Курсы валют
Скидки
организации Орла
организации области
товары
сайты
сайты Орел
Данные
Разделы
Поиск
Поиск запросы
Статистика
Показы каталога организаций
Статистика клиенты
Пользователи
Сайты
Управление сайтом
Анкета
Аптеки
Афиша
Афиша новая
Баннеры
Бизнес >
Викторина
Голосование
Гость на сайте
Истории
Календарь событий
Каталоги >
Конкурс красоты
Конкурс аудио
Консультации
Меню
Новое на сайте
Новости >
Организации >
Программа ТВ
Публикации
Разделы сайта
Рассылка
Рестораны
Секрет фирмы >
Сервисы >
Ссылки
Тесты
Файловый менеджер
Форум
Фотогалерея
Обратная связь
Недвижимость
Новый год
Тексты
Пользователи
Юридический рейтинг
Отзывы на товары
Бан пользователей
Жалобы
Новые тесты
Коронавирус
Файловый менеджер
Имя файла
OrganizationPhones.php
Содержимое
<?php namespace app\organizations; use App; use app\organizations\entity\OrganizationPhone; use samdark\hydrator\Hydrator; /** * Класс для работы с телефонами организации * Class OrganizationPhones * @package app\organizations */ class OrganizationPhones { /** * Функция читает и записывает в массив телефоны организации. * Если вы используете функцию Organization::getOrganization($orgId) для получения информации об * организации, то в вместе с получением информации об организации будет получены телефоны организации и будут * доступны в поле phones * * @param int $organizationId - ID организации * @param null|int - сколько выводить записей, null - все выводить записи. * @return array */ public static function getPhones($organizationId, $limit = null) { if ($limit != null) { $limit = ' LIMIT ' . (int)$limit; } $types = [ 1 => 'Телефон', 2 => 'Факс', 3 => 'Телефон и факс' ]; $phones = App::$command ->createCommand(' SELECT * FROM `firma_phone` WHERE id_firma = :id '.$limit.' ') ->bindValue(':id', $organizationId) ->queryAll(); foreach ($phones as $key => $phone) { $phones[$key]['type_string'] = isset($types[$phone['type']]) ? $types[$phone['type']] : null; $phones[$key]['ext_string'] = ($phone['ext'] != '') ? ' (доб. ' . $phone['ext'] . ')' : null; } return $phones; } /** * Функция возвращает активный номер телефона для организации $organizationId * @param $organizationId * @return string|null */ public static function getActivePhone($organizationId) { $phoneNumber = App::$command ->createCommand(' SELECT * FROM `firma_phone` WHERE active = 1 AND id_firma = :id_firma; ') ->bindValue(':id_firma', $organizationId) ->queryOne(); if (isset($phoneNumber['id']) === false) { // клиент не выбрал активный номер телефона, выбираем тогда первый попавшийся. $phoneNumber = App::$command ->createCommand(' SELECT * FROM `firma_phone` WHERE id_firma = :id_firma ORDER BY `id` ASC LIMIT 1; ') ->bindValue(':id_firma', $organizationId) ->queryOne(); } if (isset($phoneNumber['id']) == false) { return null; } $hydrator = new Hydrator([ 'id' => 'id', 'id_firma' => 'organizationId', 'number' => 'number', 'ext' => 'ext', 'info' => 'info', 'type' => 'type', 'active' => 'active' ]); return $hydrator->hydrateInto($phoneNumber, new OrganizationPhone()); } /** * Функция проверяет, разрешено ли организации $organizationId использовать телефон $phoneId * @param $organizationId * @param string $phoneNumber * @return bool */ public static function isAllowPhoneId($organizationId, $phoneNumber) { $data = App::$command ->createCommand(' SELECT COUNT(*) as total FROM `firma_phone` WHERE id_firma = :id_firma AND `number` = :number ') ->bindValue(':number', $phoneNumber) ->bindValue(':id_firma', $organizationId) ->queryOne('total'); return $data > 0; } /** * Функция устанавливает активный номер телефона. Работает с таблицей firma_phone * @param int $organizationId * @param string $phoneNumber * @throws \Exception если отсутствует доступ на изменение номера телефона. К примеру, номер телефона не принадлежит * организации. * @return bool */ public static function setActivePhone($organizationId, $phoneNumber) { if (static::isAllowPhoneId($organizationId, $phoneNumber) == false) { throw new \Exception("У вас нет доступа для изменения активного номера телефона"); } // отменяем старые активные телефоны App::$command ->createCommand(' UPDATE firma_phone SET active = 0 WHERE id_firma = :firma_id ') ->bindValue(':firma_id', $organizationId) ->query(); // устанавливаем новый активный телефон return App::$command ->createCommand(' UPDATE `firma_phone` SET active = 1 WHERE id_firma = :id_firma AND `number` = :number ') ->bindValue(':number', $phoneNumber) ->bindValue(':id_firma', $organizationId) ->query(); } /** * Функция выполняет нормализацию телефона, разбивая его на параметры и возвращая их в виде массива. * @param string $phoneNumber * @return array */ public static function normalizePhone($phoneNumber) { preg_match( '/\+\s*([0-9]+)\s*\(([0-9]+)\)\s*([0-9]+)\-([0-9]{2})\-([0-9]{2})/', $phoneNumber, $phoneParts ); $phonesCountryCode = (isset($phoneParts[1])) ? $phoneParts[1] : ''; $phonesCityCode = (isset($phoneParts[2])) ? $phoneParts[2] : ''; $phonesPhoneNumber = ''; if (isset($phoneParts[3])) { $phonesPhoneNumber .= $phoneParts[3]; } if (isset($phoneParts[4])) { $phonesPhoneNumber .= $phoneParts[4]; } if (isset($phoneParts[5])) { $phonesPhoneNumber .= $phoneParts[5]; } return [ 'country_code' => $phonesCountryCode, 'city_code' => $phonesCityCode, 'phone_number' => $phonesPhoneNumber ]; } }
/app/organizations/
Имя
Дата
Размер
..
2026-10-01
activerecord
2017-03-23
banners
2017-03-20
entity
2019-02-11
form
2020-04-06
helpers
2019-02-08
interfaces
2017-01-26
regions
2017-02-02
search
2019-02-12
shop
2020-04-06
statistic
2019-01-29
utils
2018-01-12
validators
2020-02-11
views
2018-01-16
Categories.php
2019-02-13
6 кб.
CommentVote.php
2024-08-23
5 кб.
CommentVote.php~
2017-01-26
5 кб.
Comments.php
2019-02-26
6 кб.
CommentsKarma.php
2017-01-26
308 байт
OrganizationCategory.php
2019-02-11
896 байт
OrganizationCategoryFactory.php
2018-01-12
1 кб.
OrganizationCategoryRepository.php
2019-02-12
2 кб.
OrganizationCommentsReader.php
2019-02-18
5 кб.
OrganizationEmails.php
2017-03-09
1 кб.
OrganizationFactory.php
2016-12-13
277 байт
OrganizationFiles.php
2017-02-15
645 байт
OrganizationIndexator.php
2017-08-18
349 байт
OrganizationNews.php
2019-08-23
2 кб.
OrganizationPhones.php
2019-02-11
7 кб.
OrganizationPhotos.php
2017-08-15
2 кб.
OrganizationRepository.php
2019-02-12
433 байт
OrganizationRubriks.php
2017-03-09
2 кб.
OrganizationSchedule.php
2018-01-12
2 кб.
OrganizationScheduleFactory.php
2018-01-12
844 байт
OrganizationSites.php
2020-04-09
1 кб.
OrganizationSlider.php
2019-08-12
1 кб.
OrganizationStatistics.php
2019-04-01
2 кб.
OrganizationVideos.php
2017-01-25
1 кб.
Organizations.php
2020-04-17
34 кб.
OrganizationsReader.php
2019-02-11
4 кб.
PhoneRepository.php
2019-02-11
1 кб.
Rating.php
2024-08-23
2 кб.
Rating.php~
2019-02-15
1 кб.
/app/organizations
Загрузить файлы
Файл 1
Файл 2
Файл 3