Пример #1
0
 public function afterDelete()
 {
     # Проверка и очистка связей
     $characteristics = Characteristic::model()->findAll('Characteristic=:Characteristic', array(':Characteristic' => $this->id));
     if (count($characteristics) > 0) {
         foreach ($characteristics as $characteristic) {
             $characteristic->delete();
         }
     }
     Comment::model()->deleteAll('object_id=:object_id and type=' . L::ritem('CommentType', __CLASS__), array(':object_id' => $this->id));
     return parent::afterDelete();
 }
Пример #2
0
 public function scopes()
 {
     return array('active' => array('condition' => 't.archive is null or t.archive != ' . L::ritem('ArchiveStatus', 'Архив'), 'order' => 't.title asc'));
 }
 protected function parseTempTechsTable()
 {
     $criteria = new CDbCriteria();
     $criteria->limit = 1000;
     $criteria->offset = 7000;
     #$criteria->condition = 'id=429';
     #$criteria->order = 'id desc';
     $models = Tmp::model()->findAll($criteria);
     foreach ($models as $k => $model) {
         preg_match_all('|<TR BGCOLOR=#ECECEC><TD><P class=table1>(.*)</TD>(?:.*)<TD Bgcolor=#F5F5F5><P class=table>(.*)</TD>|isU', $model->techs_table, $out, PREG_PATTERN_ORDER);
         $tmp = array();
         foreach ($out[2] as $i => $val) {
             if (!isset($tmp[$out[1][$i]])) {
                 $tmp[$out[1][$i]] = trim(strip_tags($out[2][$i], '<br>'));
             } else {
                 $tmp['_' . $out[1][$i]] = trim(strip_tags($out[2][$i], '<br>'));
             }
         }
         #d($tmp, true);
         $char = new Characteristic();
         $models[$k]->mod = $tmp['Модель'];
         /********/
         @(list($models[$k]->modificationManufactureStart, $models[$k]->modificationManufactureEnd) = explode('-', $tmp['Год выпуска']));
         $models[$k]->modificationManufactureStart = intval($models[$k]->modificationManufactureStart) ? intval($models[$k]->modificationManufactureStart) : null;
         $models[$k]->modificationManufactureEnd = intval($models[$k]->modificationManufactureEnd) ? intval($models[$k]->modificationManufactureEnd) : null;
         /********/
         $char->body = L::ritem('bodyType', trim($tmp['Кузов']));
         if (($tmp['Кузов'] == 'Купе-кабриолет' || $tmp['Кузов'] == 'Купе-Родстер' || $tmp['Кузов'] == 'Купе-Кабриолет') && !L::ritem('bodyType', trim($tmp['Кузов']))) {
             $char->body = 20;
         }
         if (($tmp['Кузов'] == 'Хэтчбэк' || $tmp['Кузов'] == 'Хэчтбек' || $tmp['Кузов'] == 'Седан<BR>Хэтчбек') && !L::ritem('bodyType', trim($tmp['Кузов']))) {
             $char->body = 3;
         }
         if ($tmp['Кузов'] == 'Landaulet' && !L::ritem('bodyType', trim($tmp['Кузов']))) {
             $char->body = 21;
         }
         if ($tmp['Кузов'] == 'Компактвен' && !L::ritem('bodyType', trim($tmp['Кузов']))) {
             $char->body = 12;
         }
         if ($tmp['Кузов'] == 'Джип' && !L::ritem('bodyType', trim($tmp['Кузов']))) {
             $char->body = 6;
         }
         @(list($char->doors, $char->seats) = explode('/', $tmp['Количество дверей/мест']));
         @($char->weight = intval($tmp['Снаряженная масса, кг']) ? intval($tmp['Снаряженная масса, кг']) : null);
         @($char->weight_loaded = intval($tmp['Полная масса, кг']) ? intval($tmp['Полная масса, кг']) : null);
         @($char->trunk_capacity = $tmp['Объем багажника min/max, л']);
         @($char->length = intval($tmp['Длина']) ? intval($tmp['Длина']) : null);
         @($char->width = intval($tmp['Ширина']) ? intval($tmp['Ширина']) : null);
         @($char->height = intval($tmp['Высота']) ? intval($tmp['Высота']) : null);
         @($char->wheelbase = intval($tmp['Колесная база']) ? intval($tmp['Колесная база']) : null);
         #$char-> ??? = $tmp['Колея передняя/задняя'];
         $char->clearance = @$tmp['Дорожный просвет'];
         $char->turn_radius = @intval(str_replace(',', '.', $tmp['Минимальный радиус поворота, м']));
         $char->displacement = @$tmp['Расположение'];
         if (isset($tmp['Число и расположение цилиндров']) && strstr($tmp['Число и расположение цилиндров'], 'V')) {
             $char->engine_type = 'V-образный, ' . mb_strtolower($tmp['Тип'], 'UTF-8');
         } elseif (isset($tmp['Число и расположение цилиндров']) && strstr($tmp['Число и расположение цилиндров'], 'оппозитно')) {
             $char->engine_type = 'Оппозитный, ' . mb_strtolower($tmp['Тип'], 'UTF-8');
         } elseif (isset($tmp['Число и расположение цилиндров']) && strstr($tmp['Число и расположение цилиндров'], 'в ряд')) {
             $char->engine_type = 'Рядный, ' . mb_strtolower($tmp['Тип'], 'UTF-8');
         }
         $char->cylinders = intval(preg_replace('|[^0-9]|i', '', $tmp['Число и расположение цилиндров']));
         $char->volume = $tmp['Рабочий объем, куб.см'];
         $char->valves = intval($tmp['Число клапанов']) ? intval($tmp['Число клапанов']) : null;
         if (isset($tmp['Мощность, л.с./ об/мин']) && strstr($tmp['Мощность, л.с./ об/мин'], '/')) {
             $t = explode('/', $tmp['Мощность, л.с./ об/мин']);
             $char->max_power = round(str_replace(',', '.', $t[0]));
             $char->max_power_rpm = $t[1];
         }
         if (isset($tmp['Максимальный крутящий момент, Нхм / об/мин']) && strstr($tmp['Максимальный крутящий момент, Нхм / об/мин'], '/')) {
             $t = explode('/', $tmp['Максимальный крутящий момент, Нхм / об/мин']);
             $char->max_torque = $t[0];
             $char->max_torque_rpm = $t[1];
         }
         if (isset($tmp['_Тип']) && ($t = preg_split('/(\\(|<br>)/iU', $tmp['_Тип']))) {
             if (count($t) > 0) {
                 foreach ($t as $t0) {
                     if (empty($t0)) {
                         continue;
                     }
                     $t0 = trim(preg_replace('|[\\(\\)]|is', '', $t0));
                     if (strstr($t0, 'Механи')) {
                         $char->transmission_mt = $t0;
                         $char->gears_mt = intval(preg_replace('|[^\\d]|is', '', $t0));
                     } else {
                         $char->transmission_at = $t0;
                         $char->gears_at = intval(preg_replace('|[^\\d]|is', '', $t0));
                     }
                 }
             }
         }
         if (isset($tmp['Максимальная скорость, км/ч']) && ($t = preg_split('/(\\(|<br>|\\/)/iU', $tmp['Максимальная скорость, км/ч']))) {
             $t = CArray::trimEmpty($t);
             if (isset($t[0])) {
                 $t[0] = trim(preg_replace('|[\\(\\)]|is', '', $t[0]));
                 $char->top_speed_mt = intval($t[0]) ? intval($t[0]) : null;
             }
             if (isset($t[1])) {
                 $t[1] = trim(preg_replace('|[\\(\\)]|is', '', $t[1]));
                 $char->top_speed_at = intval($t[1]) ? intval($t[1]) : null;
             } elseif (isset($char->transmission_at)) {
                 $char->top_speed_at = $char->top_speed_mt;
             }
         }
         if (isset($tmp['Время разгона с места до 100 км/ч, с']) && ($t = preg_split('/(\\(|<br>|\\/)/iU', $tmp['Время разгона с места до 100 км/ч, с']))) {
             $t = CArray::trimEmpty($t);
             if (isset($t[0])) {
                 $t[0] = trim(preg_replace('|[\\(\\)]|is', '', $t[0]));
                 $char->acceleration_mt = (double) $t[0] ? (double) $t[0] : null;
             }
             if (isset($t[1])) {
                 $t[1] = trim(preg_replace('|[\\(\\)]|is', '', $t[1]));
                 $char->acceleration_at = (double) $t[1] ? (double) $t[1] : null;
             } elseif (isset($char->transmission_at)) {
                 $char->acceleration_at = $char->acceleration_mt;
             }
         }
         if (isset($tmp['Городской цикл']) && ($t = preg_split('/(\\(|<br>|\\/)/iU', $tmp['Городской цикл']))) {
             $t = CArray::trimEmpty($t);
             if (isset($t[0])) {
                 $t[0] = trim(preg_replace('|[\\(\\)]|is', '', $t[0]));
                 $t[0] = str_replace(',', '.', $t[0]);
                 $char->fuel_consumption_urban_mt = (double) $t[0] > 0 ? (double) $t[0] : null;
             }
             if (isset($t[1])) {
                 $t[1] = trim(preg_replace('|[\\(\\)]|is', '', $t[1]));
                 $t[1] = str_replace(',', '.', $t[1]);
                 $char->fuel_consumption_urban_at = (double) $t[1] > 0 ? (double) $t[1] : null;
             } elseif (isset($char->transmission_at)) {
                 $char->fuel_consumption_urban_at = $char->fuel_consumption_urban_mt;
             }
         }
         if (isset($tmp['Загородный цикл']) && ($t = preg_split('/(\\(|<br>|\\/)/iU', $tmp['Загородный цикл']))) {
             $t = CArray::trimEmpty($t);
             if (isset($t[0])) {
                 $t[0] = trim(preg_replace('|[\\(\\)]|is', '', $t[0]));
                 $t[0] = str_replace(',', '.', $t[0]);
                 $char->fuel_consumption_country_mt = (double) $t[0] > 0 ? (double) $t[0] : null;
             }
             if (isset($t[1])) {
                 $t[1] = trim(preg_replace('|[\\(\\)]|is', '', $t[1]));
                 $t[1] = str_replace(',', '.', $t[1]);
                 $char->fuel_consumption_country_at = (double) $t[1] > 0 ? (double) $t[1] : null;
             } elseif (isset($char->transmission_at)) {
                 $char->fuel_consumption_country_at = $char->fuel_consumption_country_mt;
             }
         }
         if (isset($tmp['Смешанный цикл']) && ($t = preg_split('/(\\(|<br>|\\/)/iU', $tmp['Смешанный цикл']))) {
             $t = CArray::trimEmpty($t);
             if (isset($t[0])) {
                 $t[0] = trim(preg_replace('|[\\(\\)]|is', '', $t[0]));
                 $t[0] = str_replace(',', '.', $t[0]);
                 $char->fuel_consumption_combined_mt = (double) $t[0] > 0 ? (double) $t[0] : null;
             }
             if (isset($t[1])) {
                 $t[1] = trim(preg_replace('|[\\(\\)]|is', '', $t[1]));
                 $t[1] = str_replace(',', '.', $t[1]);
                 $char->fuel_consumption_combined_at = (double) $t[1] > 0 ? (double) $t[1] : null;
             } elseif (isset($char->transmission_at)) {
                 $char->fuel_consumption_combined_at = $char->fuel_consumption_combined_mt;
             }
         }
         if (isset($tmp['Размер шин']) && ($t = preg_split('/(<br>)/iU', $tmp['Размер шин']))) {
             $t = CArray::trimEmpty($t);
             if (isset($t[0])) {
                 $t[0] = trim(str_ireplace(array("\n", '(', ')', 'Спереди', 'Сзади'), '', $t[0]));
                 $char->tyres_front = $t[0] ? $t[0] : null;
             }
             if (isset($t[1])) {
                 $t[1] = trim(str_ireplace(array("\n", '(', ')', 'Спереди', 'Сзади'), '', $t[1]));
                 $char->tyres_rear = $t[1] ? $t[1] : null;
             } else {
                 $char->tyres_rear = $char->tyres_front;
             }
         }
         if (isset($tmp['Размер дисков']) && ($t = preg_split('/(<br>)/iU', $tmp['Размер дисков']))) {
             $t = CArray::trimEmpty($t);
             if (isset($t[0])) {
                 $t[0] = trim(str_ireplace(array("\n", '(', ')', 'Спереди', 'Сзади'), '', $t[0]));
                 $char->disks_front = $t[0] ? $t[0] : null;
             }
             if (isset($t[1])) {
                 $t[1] = trim(str_ireplace(array("\n", '(', ')', 'Спереди', 'Сзади'), '', $t[1]));
                 $char->disks_rear = $t[1] ? $t[1] : null;
             } else {
                 $char->disks_rear = $char->disks_front;
             }
         }
         @($char->drive = $tmp['Привод']);
         @($char->suspension_front = $tmp['Передних колес']);
         @($char->suspension_rear = $tmp['Задних колес']);
         @($char->brakes_front = $tmp['Передние']);
         @($char->brakes_rear = $tmp['Задние']);
         @($char->fuel_type = $tmp['Топливо']);
         @($char->fuel_capacity = intval($tmp['Емкость топливного бака, л']) ? intval($tmp['Емкость топливного бака, л']) : null);
         $models[$k]->char = $char;
         $this->saveChar($models[$k]);
     }
 }