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(); }
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]); } }