/**
  * Initializes the route.
  * This method is invoked after the route is created by the route manager.
  */
 public function init()
 {
     // required for correct PhpConsoleExtension work
     YiiBase::app()->getErrorHandler()->discardOutput = false;
     YiiBase::getLogger()->autoFlush = 1;
     // init PHP Console
     require_once dirname(__FILE__) . '/PhpConsole/PhpConsole.php';
     PhpConsole::$callOldErrorHandler = false;
     PhpConsole::$callOldExceptionsHandler = false;
     PhpConsole::start($this->handleErrors, $this->handleExceptions, $this->basePathToStrip);
 }
Beispiel #2
0
 /**
  * Register a specific js file in the asset's js folder
  * @param string $jsFile
  * @param int $position the position of the JavaScript code.
  * @see CClientScript::registerScriptFile
  */
 public static function tsRegisterAssetJs($jsFile, $position = CClientScript::POS_END)
 {
     $assetsPath = Yii::getPathOfAlias(YiiBase::app()->getController()->getModule()->getId() . '.assets');
     $assetsUrl = Yii::app()->assetManager->publish($assetsPath, false, -1, true);
     Yii::app()->getClientScript()->registerScriptFile($assetsUrl . "/js/" . YiiBase::app()->getController()->getId() . "/" . $jsFile, $position);
 }
Beispiel #3
0
 /**
  * @return MinimalApplication
  */
 public static function app()
 {
     return parent::app();
 }
echo Yii::app()->request->baseUrl;
?>
/css/form.css" />

    <title><?php 
echo CHtml::encode($this->pageTitle);
?>
</title>
</head>

<body>

<div class="container1" id="page1">

    <?php 
if (!YiiBase::app()->user->isGuest) {
    ?>
        <div id="header">
            <div id="logo"><?php 
    echo CHtml::encode(Yii::app()->name);
    ?>
</div>
        </div><!-- header -->

        <div id="mainmenu">
            <?php 
    $this->widget('zii.widgets.CMenu', array('items' => array(array('label' => 'Таблица', 'url' => array('/report/')), array('label' => 'Города', 'url' => array('/city/')), array('label' => 'Сайты', 'url' => array('/sites/')), array('label' => 'Выход (' . Yii::app()->user->name . ')', 'url' => array('/site/logout'), 'visible' => !Yii::app()->user->isGuest))));
    ?>
        </div><!-- mainmenu -->
        <?php 
    if (isset($this->breadcrumbs)) {
 public function action()
 {
     if ($this->hasErrors()) {
         echo '<pre>';
         print_r($this->errors);
     } else {
         //определяем город юзера по его IP
         $this->city = YiiBase::app()->sypexgeo->action($this->ip);
         //не удалось определить город по IP юзера
         if (empty($this->city)) {
             //тогда выбираем город-Москва и отдаём данные по этому городу
             $city = $this->getMoscow();
         } else {
             //поиск города в справочнике
             $city_row = City::findTownByName($this->city);
             //Не нашли город в справочнике
             if (empty($city_row)) {
                 //не удалось найти город в нашем списке - тогда город - Москва для этого сайта
                 $city = $this->getMoscow();
             } else {
                 //поиск соответствия = город+сайт+активность
                 $query = YiiBase::app()->db->cache(3600)->createCommand('SELECT * FROM {{city_site_phone}} WHERE city_id=:city_id AND site_id=:site_id AND active=1');
                 $query->bindValue(':city_id', $city_row['id'], PDO::PARAM_INT);
                 $query->bindValue(':site_id', $this->site_id, PDO::PARAM_INT);
                 $city = $query->queryRow();
                 //не нашли совпадения по АКТИВНОСТИ_города+совпадению_по_сайту+названию_города
                 if (empty($city)) {
                     $city = $this->getMoscow();
                     //учитываем метку рекламы и если есть метка рекламы-  выводим номер для рекламы
                     $this->phones[self::getPhoneUtm($city)] = 'Москва';
                 }
             }
         }
         //формируем список активных регионов по сайту, для отображения
         if (empty($this->regions)) {
             $this->regions = CHtml::listData($this->findActiveRegions(), 'city', 'phone');
         }
         //если город - АКТИВЕН - используем его телефон
         if (!empty($city) && empty($this->phones)) {
             //получим массив всей информаци о городе
             $row_info_city = City::findById($city['city_id']);
             //определяем сколько строчек телефонов будет
             if ($row_info_city['main_city'] == City::NOT_ACTIVE) {
                 //(3 номера)
                 //добавили номер города
                 $this->phones[self::getPhoneUtm($city)] = $row_info_city['city'];
             }
             ////если есть привязки к шаблонам - ищем телефон подвязанный к шаблону(если НЕ находим то возвращаем по дефолту номер)
             $phone_from_template = Phone::getPhoneByTemplateANDCity($this->template, $row_info_city['parent_id'], $this->site_id);
             $region_city_name = City::findNameTownById($row_info_city['parent_id']);
             // нашли номер телефона подвязанного к шаблону
             //к шаблону не будет подвязок номеров рекламы, поэтому не проверяем и не подвязываем доп. номера
             if (!empty($phone_from_template)) {
                 $this->phones[$phone_from_template] = $region_city_name;
                 $this->regions[$region_city_name] = $phone_from_template;
             } else {
                 $query_region = YiiBase::app()->db->createCommand('SELECT phone, google_phone, direct_phone FROM {{city_site_phone}} WHERE city_id=:city_id AND site_id=:site_id');
                 $query_region->bindValue(':site_id', $this->site_id, PDO::PARAM_INT);
                 $query_region->bindValue(':city_id', $row_info_city['parent_id'], PDO::PARAM_INT);
                 $region_default_phone = $query_region->queryRow();
                 //используем номер телефона региона по-умолчанию
                 $this->phones[self::getPhoneUtm($region_default_phone)] = $region_city_name;
             }
         }
     }
 }
Beispiel #6
0
                                                            <li class="dropdown-tree  <?php 
echo YiiBase::app()->getController()->action->id == "create" && YiiBase::app()->getController()->getId() == "productoSubcategoria" ? "open-tree" : "";
?>
"><a  class="<?php 
echo YiiBase::app()->getController()->action->id == "create" ? "dropdown-tree-a" : "";
?>
" href="<?php 
echo Yii::app()->createUrl('producto/productoSubcategoria/create');
?>
">Nuevo</a></li>
                                                            <li class="dropdown-tree  <?php 
echo YiiBase::app()->getController()->action->id == "admin" && YiiBase::app()->getController()->getId() == "productoSubcategoria" ? "open-tree" : "";
?>
"><a  class="<?php 
echo YiiBase::app()->getController()->action->id == "admin" ? "dropdown-tree-a" : "";
?>
" href="<?php 
echo Yii::app()->createUrl('producto/productoSubcategoria');
?>
">Administrar</a></li>

                                                        </ul>
                                                    </li>

                                                </ul>
                                            </div>
                                        </div>
                                    </div>

                                </div>
 protected function afterSave()
 {
     parent::afterSave();
     //при создании - если это регион ? - обновим привязку родителя на него же самого
     if ($this->isNewRecord) {
         if ($this->main_city == 1) {
             $query = YiiBase::app()->db->createCommand('UPDATE {{city}} SET parent_id=:parent_id WHERE id=:id');
             $query->bindValue(':id', $this->id, PDO::PARAM_INT);
             $query->bindValue(':parent_id', $this->id, PDO::PARAM_INT);
             $query->execute();
         }
     }
 }
 protected function afterSave()
 {
     parent::afterSave();
     //при обновлении подвязки-шаблона и телефона мог измениться город
     if (!$this->isNewRecord) {
         //принудительно укажем, что к данной связке(город+сайт)-подвязан (шаблон+телефон+сайт)
         $query = YiiBase::app()->db->createCommand('UPDATE {{city_site_phone}} SET relation_tpl=1 WHERE city_id=:city_id AND site_id=:site_id');
         $query->bindValue(':city_id', $this->city_id, PDO::PARAM_INT);
         $query->bindValue(':site_id', $this->site_id, PDO::PARAM_INT);
         $query->execute();
     }
 }
 public function actionSypexAdvanced()
 {
     if (isset($_GET['ip']) && isset($_GET['site_id'])) {
         //определяем город по Айпи
         $city = YiiBase::app()->sypexgeo->action($_GET['ip']);
         //не удалось определить город по IP
         if (empty($city)) {
             echo '8-800-333-85-07';
             die;
         }
         $city_name = City::findTownByName(trim($city));
         if (empty($city_name)) {
             echo '8-800-333-85-07';
             die;
         }
         //на основании города/сайта - находим номер телефона
         $phone_query = YiiBase::app()->db->cache(3600)->createCommand('SELECT phone FROM {{city_site_phone}}  WHERE site_id=:site_id AND city_id=:city_id');
         $phone_query->bindValue(':city_id', $city_name['id'], PDO::PARAM_INT);
         $phone_query->bindValue(':site_id', $_GET['site_id'], PDO::PARAM_INT);
         $phone = $phone_query->queryScalar();
         //если нашли номер телефона по городу, изменим город на Москву и найдём номер
         if ($phone) {
             echo $city_name['city'] . ' ' . $phone;
             die;
         } else {
             //НЕ нашли совпадение по городу и сайту
             //ищем совпадение по Московском области, если город попадает в МО
             $city_moscow = City::findTownByName('Москва');
             //есть совпадение по МО
             if ($city_name['parent_id'] == $city_moscow['id']) {
                 $phone_query = YiiBase::app()->db->cache(3600)->createCommand('SELECT phone FROM {{city_site_phone}}  WHERE site_id=:site_id AND city_id=:city_id');
                 $phone_query->bindValue(':city_id', $city_moscow['id'], PDO::PARAM_INT);
                 $phone_query->bindValue(':site_id', $_GET['site_id'], PDO::PARAM_INT);
                 $phone = $phone_query->queryScalar();
                 echo 'Москва ' . $phone;
                 die;
             } else {
                 echo '8-800-333-85-07';
                 die;
             }
         }
     }
     die;
 }
        echo $c['date'];
        ?>
:
                                    </div>
                                </td>
                            <?php 
    } else {
        ?>
                                <td>
                                    <div class="person"><b><?php 
        echo $c['person'];
        ?>
 says:</b>
                                        <div><img style="width: 40px;border-radius: 50%;"
                                                  src="<?php 
        echo YiiBase::app()->baseUrl;
        ?>
/images/amicapic.jpg">
                                        </div>
                                    </div>
                                    <div class="chat_time"
                                         style="display:none;font-size: 10px;"><?php 
        echo $c['date'];
        ?>
</div>
                                </td>
                                <td>
                                    <div id='amica_talkbubble'><?php 
        echo $c['message'];
        ?>
</div>
 static function findNameTownById($id)
 {
     $sql = 'SELECT town FROM {{town}} WHERE id=:id';
     $query = YiiBase::app()->db->cache(3600)->createCommand($sql);
     $query->bindValue(':id', $id, PDO::PARAM_INT);
     return $query->queryScalar();
 }
 /**
  * Deletes a particular model.
  * If deletion is successful, the browser will be redirected to the 'admin' page.
  * @param integer $id the ID of the model to be deleted
  */
 public function actionDelete($id)
 {
     if (Yii::app()->request->isPostRequest) {
         // we only allow deletion via POST request
         $model = $this->loadModel($id);
         $city_id = $model->city_id;
         $site_id = $model->site_id;
         $model->delete();
         //после удаления телефона/шаблона, проверим надо ли изменить признак
         $count_query = YiiBase::app()->db->createCommand('SELECT COUNT(id) FROM tbl_tpl_city_site WHERE city_id=:city_id AND site_id=:site_id');
         $count_query->bindValue(':city_id', $city_id, PDO::PARAM_INT);
         $count_query->bindValue('site_id', $site_id, PDO::PARAM_INT);
         $count = $count_query->queryScalar();
         //если нет больше подвязанных номеро/шаблонов изменим статус города, как не подвязанный к шаблону
         if ($count == 0) {
             $query = YiiBase::app()->db->createCommand('UPDATE tbl_city_site_phone SET relation_tpl=0 WHERE city_id=:city_id AND site_id=:site_id');
             $query->bindValue(':city_id', $city_id, PDO::PARAM_INT);
             $query->bindValue(':site_id', $site_id, PDO::PARAM_INT);
             $query->execute();
         }
         // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
         if (!isset($_GET['ajax'])) {
             $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
         }
     } else {
         throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
     }
 }
 /**
  * Retrieves a list of models based on the current search/filter conditions.
  *
  * Typical usecase:
  * - Initialize the model fields with values from filter form.
  * - Execute this method to get CActiveDataProvider instance which will filter
  * models according to data in model fields.
  * - Pass data provider to CGridView, CListView or any similar widget.
  *
  * @return CActiveDataProvider the data provider that can return the models
  * based on the search/filter conditions.
  */
 public function search()
 {
     // @todo Please modify the following code to remove attributes that should not be searched.
     $criteria = new CDbCriteria();
     $criteria->with = array('city', 'site');
     $criteria->together = true;
     $criteria->compare('t.active', $this->active);
     $criteria->compare('t.relation_tpl', $this->relation_tpl);
     $criteria->compare('t.site_id', $this->site_id);
     $criteria->compare('city.main_city', $this->main_city);
     //==========фильтрация по регулярному выражению или отрацание по регулярке============================
     //проверим и примениним - ФИЛЬТРАЦИЮ по РЕГИОНУ(РЕГУЛЯРКА)
     if (isset($_GET['radio_selected_region']) && isset($_GET['search_word_accept_reg_region'])) {
         if (!empty($_GET['radio_selected_region']) && !empty($_GET['search_word_accept_reg_region'])) {
             //получаем список регионов, котор. попадают в совпадение по регулярке(ID-список регионов)
             if ($_GET['radio_selected_region'] == 'search_word_accept_region') {
                 //удовлетворяет регулярному выражению
                 $exception_list = YiiBase::app()->db->createCommand('SELECT id FROM {{city}} WHERE city REGEXP "' . $_GET['search_word_accept_reg_region'] . '" AND id=parent_id')->queryAll();
             } else {
                 //не удовлетворяет регулярному выражению
                 $exception_list = YiiBase::app()->db->createCommand('SELECT id FROM {{city}} WHERE city NOT REGEXP "' . $_GET['search_word_accept_reg_region'] . '" AND id=parent_id')->queryAll();
             }
             if (!empty($exception_list)) {
                 $ids = array();
                 foreach ($exception_list as $except) {
                     $ids[] = $except['id'];
                 }
                 //после получения списка регионов - находим по ним список привязанных городов и формируем ID-list вхождений
                 $list_ids = YiiBase::app()->db->createCommand('SELECT id FROM {{city}} WHERE parent_id IN (' . implode(',', $ids) . ')')->queryAll();
                 $ids = array();
                 foreach ($list_ids as $except) {
                     $ids[] = $except['id'];
                 }
                 if (!empty($exception_list)) {
                     $criteria->addInCondition('city_id', $ids);
                 }
             }
         }
     }
     //проверим и примениним - ФИЛЬТРАЦИЮ по ГОРОДУ(РЕГУЛЯРКА)
     if (isset($_GET['radio_selected_city']) && isset($_GET['search_word_accept_reg_city'])) {
         if (!empty($_GET['radio_selected_city']) && !empty($_GET['search_word_accept_reg_city'])) {
             //2 типа удовлетворяет регулярке или нет по регулярке
             if ($_GET['radio_selected_city'] == 'search_word_accept_city') {
                 //удовлетворяет регулярному выражению
                 $criteria->addCondition('city.city  REGEXP "' . $_GET['search_word_accept_reg_city'] . '"');
             } else {
                 //не удовлетворяет регулярному выражению
                 $criteria->addCondition('city.city NOT  REGEXP "' . $_GET['search_word_accept_reg_city'] . '"');
             }
         }
     }
     //проверим и примениним - ФИЛЬТРАЦИЮ по Местный телефон(РЕГУЛЯРКА)
     if (isset($_GET['radio_selected_localphone']) && isset($_GET['search_word_accept_reg_localphone'])) {
         if (!empty($_GET['radio_selected_localphone']) && !empty($_GET['search_word_accept_reg_localphone'])) {
             //2 типа удовлетворяет регулярке или нет по регулярке
             if ($_GET['radio_selected_localphone'] == 'search_word_accept_localphone') {
                 //удовлетворяет регулярному выражению
                 $criteria->addCondition('t.phone  REGEXP "' . $_GET['search_word_accept_reg_localphone'] . '"');
             } else {
                 //не удовлетворяет регулярному выражению
                 $criteria->addCondition('t.phone NOT  REGEXP "' . $_GET['search_word_accept_reg_localphone'] . '"');
             }
         }
     }
     //проверим и примениним - ФИЛЬТРАЦИЮ по региональный номер телефона(РЕГУЛЯРКА)
     if (isset($_GET['radio_selected_regionphone']) && isset($_GET['search_word_accept_reg_regionphone'])) {
         if (!empty($_GET['radio_selected_regionphone']) && !empty($_GET['search_word_accept_reg_regionphone'])) {
             //полчаем список ID-регионов, по которым есть воспадение в номере рег. выражения
             if ($_GET['radio_selected_regionphone'] == 'search_word_accept_regionphone') {
                 //удовлетворяет регулярному выражению
                 $exception_list = YiiBase::app()->db->createCommand('SELECT distinct(city_id) FROM {{city_site_phone}} WHERE phone REGEXP "' . $_GET['search_word_accept_reg_regionphone'] . '" AND active=1')->queryAll();
             } else {
                 //не удовлетворяет регулярному выражению
                 $exception_list = YiiBase::app()->db->createCommand('SELECT distinct(city_id) FROM {{city_site_phone}} WHERE phone NOT REGEXP "' . $_GET['search_word_accept_reg_regionphone'] . '" AND active=1')->queryAll();
             }
             if (!empty($exception_list)) {
                 $ids = array();
                 foreach ($exception_list as $except) {
                     $ids[] = $except['city_id'];
                 }
                 //поиск регионов по найденным совпадениям
                 $inner_ids = YiiBase::app()->db->createCommand('SELECT id FROM {{city}} WHERE main_city=1 AND id IN(' . implode(',', $ids) . ')')->queryAll();
                 if (!empty($inner_ids)) {
                     $in_ids = array();
                     foreach ($inner_ids as $id) {
                         $in_ids[] = $id['id'];
                     }
                     $criteria->addInCondition('city_id', $in_ids);
                 }
             }
         }
     }
     $sort = new CSort();
     $sort->defaultOrder = 'city.city asc';
     // устанавливаем сортировку по умолчанию
     $sort->attributes['city_id'] = array('asc' => 'city.city', 'desc' => 'city.city desc');
     //$sort->attributes['region_id'] = array('asc' => 'city.region.city','desc' => 'city.region.city desc');
     $sort->attributes['main_city'] = array('asc' => 'city.main_city', 'desc' => 'city.main_city desc');
     $sort->attributes['active'] = array('asc' => 'active', 'desc' => 'active desc');
     $sort->attributes['site_id'] = array('asc' => 'site.site', 'desc' => 'site.site desc');
     $sort->attributes['phone'] = array('asc' => 'phone', 'desc' => 'phone desc');
     $sort->attributes['relation_tpl'] = array('asc' => 'relation_tpl', 'desc' => 'relation_tpl desc');
     return new CActiveDataProvider($this, array('pagination' => array('pageSize' => 50), 'criteria' => $criteria, 'sort' => $sort));
 }
<?php

/* @var $this PhoneController */
/* @var $model Phone */
$this->menu = array(array('label' => 'List Phone', 'url' => array('index')), array('label' => 'Create Phone', 'url' => array('create')));
Yii::app()->clientScript->registerScript('search', "\n\$('.search-button').click(function(){\n\t\$('.search-form').toggle();\n\treturn false;\n});\n\$('.search-form form').submit(function(){\n\t\$('#phone-grid').yiiGridView('update', {\n\t\tdata: \$(this).serialize()\n\t});\n\treturn false;\n});\n");
?>
<h2><?php 
echo 'Город:' . $model->city->city;
?>
</h2>
<?php 
//echo CHtml::link('Advanced Search','#',array('class'=>'search-button btn'));
echo CHtml::link('Добавить', YiiBase::app()->createAbsoluteUrl('phone/create', array('Phone[city_id]' => $_GET['Phone']['city_id'])));
?>


<?php 
$this->widget('bootstrap.widgets.TbGridView', array('id' => 'phone-grid', 'dataProvider' => $model->search(), 'type' => TbHtml::GRID_TYPE_BORDERED, 'columns' => array(array('name' => 'phone', 'value' => '$data->phone', 'header' => 'Телефон'), array('name' => 'city_id', 'header' => 'Город', 'type' => 'raw', 'value' => '$data->city->city'), array('name' => 'template_id', 'value' => '$data->TemplateNameFromModx', 'header' => 'Шаблон'), array('name' => 'site_id', 'value' => '$data->site->site', 'header' => 'Сайт'), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{update}{delete}'))));
<?php

/**
 * Created by PhpStorm.
 * User: user
 * Date: 12.12.14
 * Time: 9:31
 */
echo CHtml::link('Добавить', '/report/create/');
?>


<?php 
$this->widget('bootstrap.widgets.TbGridView', array('id' => 'city-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'ajaxUpdate' => false, 'template' => '{summary}{items}{pager}', 'type' => TbHtml::GRID_TYPE_BORDERED, 'columns' => array(array('header' => 'Город', 'value' => '$data->city->city', 'name' => 'city_id', 'filter' => $this->widget('application.components.CityFilterWidget', array(), true)), array('header' => 'Регион', 'name' => 'region_id', 'type' => 'raw', 'value' => '$data->city->region->city', 'filter' => $this->widget('application.components.RegionFilterWidget', array(), true)), array('header' => 'Областной центр', 'type' => 'raw', 'name' => 'main_city', 'value' => 'City::getYesNot($data->city->main_city)', 'filter' => array(1 => 'Да', 0 => 'Нет')), array('header' => 'Привязка к шаблону', 'type' => 'raw', 'name' => 'relation_tpl', 'value' => '$data->relationtpl', 'filter' => array(1 => 'Да', 0 => 'Нет')), array('header' => 'Активен', 'type' => 'raw', 'name' => 'active', 'value' => 'CHtml::link(City::getYesNot($data->active),"' . YiiBase::app()->createAbsoluteUrl('city/changeactive') . '", array("class"=>"action_active", "city_id"=>$data->id))', 'filter' => array(1 => 'Да', 0 => 'Нет')), array('header' => 'Местный телефон', 'name' => 'phone', 'value' => '$data->phone', 'type' => 'raw', 'filter' => $this->widget('application.components.LocalPhoneFilterWidget', array(), true)), array('name' => 'region_phone', 'value' => '$data->region_phone', 'type' => 'raw', 'header' => 'Регион. телефон', 'filter' => $this->widget('application.components.RegionPhoneFilterWidget', array(), true)), array('header' => 'Сайт', 'type' => 'raw', 'name' => 'site_id', 'value' => '$data->site->site', 'filter' => CHtml::listData(Site::model()->findAll(), 'id', 'site')), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{update}'))));