public function run($args) { // Расчет ретинга фирмы /* * описание * Сайт, Контакты, Адрес, большой текст с описанем * если не описания то - бал * галлерея * + бал за каждую картинку * - бал если нет не одной каринки * туры * + бал за каждый тур ( если есть рейтинг тура то вмест бала сумируем его если нет то просто 10 ) * если нет не одного тура то выставляет бал 0 * акции * + бал за каждую акцию * Коментарии и отзывы * + бал за каждый комментарий */ $count = 30; $lastFirm = CatCache::fetchBySlug("index_last_firm"); if ($lastFirm->date != date("Y-m-d")) { $lastFirm->value = 0; } $list = CatalogFirms::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("id>:id")->setParams(array(":id" => $lastFirm->value))->setLimit($count)->setOrderBy("id")); foreach ($list as $item) { $id = $item->id; $rating = 0; // Проверяем описание if ($item->www) { $rating += 10; } if ($item->tel && $item->email) { $rating += 10; } if ($item->description) { $rating += 10; if (strlen($item->description) > 500) { $rating += 20; } } else { $rating -= 10; } if ($item->image) { $rating += 10; } else { $rating -= 10; } // end ( Проверяем описание ) // Галлрея $images = CatGallery::count(DBQueryParamsClass::CreateParams()->setConditions("catalog='catalog_firms' AND item_id=:id")->setParams(array(":id" => $id))); if ($images > 0) { $rating += $images * 5; } else { $rating -= 10; } // Туры $tours = CatalogTours::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("firm_id=:id")->setParams(array(":id" => $id))->setLimit(-1)); foreach ($tours as $tour) { if ($tour->rating > 0) { $rating += $tour->rating; } else { $rating += 10; } } if (sizeof($tours) == 0) { $rating = 0; } // Туры $tours = CatalogTours::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("firm_id=:id")->setParams(array(":id" => $id))->setLimit(-1)); foreach ($tours as $tour) { if ($tour->rating > 0) { $rating += $tour->rating; } else { $rating += 10; } } if (sizeof($tours) == 0) { $rating = 0; } // Акции $sales = CatalogFirmsItems::count(DBQueryParamsClass::CreateParams()->setConditions("firm_id=:id")->setParams(array(":id" => $id))); if ($sales > 0) { $rating += $sales * 5; } // Коментарии $comments = CatalogFirmsComments::count(DBQueryParamsClass::CreateParams()->setConditions("firm_id=:id")->setParams(array(":id" => $id))); if ($comments > 0) { $rating += $comments * 5; } $item->rating = $rating; if (!$item->save()) { print_r($item->getErrors()); } } if ($item->id > 0) { $lastFirm->value = $item->id; $lastFirm->date = date("Y-m-d", mktime(date("h") + 1, 0, 0, date("m"), date("d"), date("Y"))); //echo $lastFirm->date."*".mktime( date("h")+1,0,0,date("m"),date("d"), date("Y") ); if (!$lastFirm->save()) { print_r($lastFirm->getErrors()); } } //echo "*"; }
public function run($args) { // Расчет ретинга фирмы /* + Заполленность описания 40 если не заполнено - 30 + Заполленность ПРОГРАММЫ 40 если не заполнено - 30 + Заполленность ЦЕНЫ 80 если не заполнено - 30 + Заполенность ЦЕНЫ И ВАЛЮТЫ 100 - если не заполнена цена - 100 не учитывать если не заполнено валюта + Заполенность ВКЛЮЧННО 40 если не заполнено - 30 + Заполенность НЕ ВКЛЮЧННО 20 + Заполенность ВНИМАНИЕ 20 + Заполенность ДЛИТЕЛЬНОСТЬ 40 если не заполнено - 30 + Галлерея + 10 за каждую, но учитывать только 5 Если нет не одной то -50 Если меньше 3 то -20 */ $count = 100; $lastFirm = CatCache::fetchBySlug("index_last_tours"); if ($lastFirm->date != date("Y-m-d")) { $lastFirm->value = 0; } $list = CatalogTours::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("id>:id")->setParams(array(":id" => $lastFirm->value))->setLimit($count)); foreach ($list as $item) { $id = $item->id; $rating = 0; // Проверяем описание if ((int) $item->price > 0) { $rating += 100; if ($item->currency_id->id > 0) { $rating += 50; } } else { $rating -= 50; } if ($item->description) { if (strlen(trim(strip_tags($item->description))) > 200) { $rating += 100; } } else { $rating -= 30; } if ($item->program) { if (strlen(trim(strip_tags($item->program))) > 200) { $rating += 40; } } //else $rating -= 30; if ($item->prices) { if (strlen(trim(strip_tags($item->prices))) > 100) { $rating += 40; } } //else $rating -= 30; if ($item->included) { if (strlen(trim(strip_tags($item->included))) > 100) { $rating += 40; } } //else $rating -= 30; if ($item->duration) { $rating += 40; } //else $rating -= 30; if ($item->not_included) { $rating += 20; } if ($item->attention) { $rating += 20; } // Галлерея $images = CatGallery::count(DBQueryParamsClass::CreateParams()->setConditions("catalog='catalog_tours' AND item_id=:id")->setParams(array(":id" => $id))); if ($images > 0) { if (sizeof($images) > 3) { if (sizeof($images) > 5) { $rating += 80; } else { $rating += sizeof($images) * 10; } } else { $rating -= 30; } } $item->rating = $rating; if (!$item->save()) { print_r($item->getErrors()); } if ($item->id > 0) { $lastFirm->value = $item->id; $lastFirm->date = date("Y-m-d", mktime(date("h") + 1, 0, 0, date("m"), date("d"), date("Y"))); //echo $lastFirm->date."*".mktime( date("h")+1,0,0,date("m"),date("d"), date("Y") ); if (!$lastFirm->save()) { print_r($lastFirm->getErrors()); } } } }