public function actionDelete() { $success = false; $id = $_REQUEST['id']; if (is_numeric($id)) { $model = CatalogCategories::model()->findByPk($id); if (is_object($model)) { $anons_pic = Yii::app()->basePath . "/.." . $model->anons_pic; $content_pic = Yii::app()->basePath . "/.." . $model->content_pic; //remove category, objects in category and tags relations $categoryId = $model->id; if ($model->delete()) { $success = true; //remove all news in category $news = CatalogObjects::model()->findAllByAttributes(array("category_id" => $model->id)); if (is_array($news) && count($news)) { foreach ($news as $element) { $element->delete(); } } //remove tags relations $tagsRelations = TagsRelations::model()->findAllByAttributes(array("object_id" => $id, "model" => "catalog_category")); if (is_array($tagsRelations) && count($tagsRelations)) { foreach ($tagsRelations as $tr) { $tr->delete(); } } //remove images if exists if (is_file($anons_pic)) { unlink($anons_pic); } if (is_file($content_pic)) { unlink($content_pic); } } } } echo json_encode(array('status' => $success ? 'success' : 'fail')); }
public function actionSearch() { $objects = array(); $criteria = new CDbCriteria(); $criteria->alias = 'co'; $criteria->condition = "is_active = 1 AND is_deleted = 0"; $criteria->addCondition("lang_id = " . $this->lang); $criteria->addCondition("category_id = 1"); //@todo - искать в реальной категории if (isset($_REQUEST['data'])) { $data = $_REQUEST['data']; if (is_array($data) && count($data)) { $criteria->join = ""; $i = 0; foreach ($data as $fieldName => $items) { $field = CatalogFilteredFields::model()->findByAttributes(array("category_id" => 1, "name" => $fieldName)); if (is_object($field) && is_array($items) && count($items)) { $cond = '('; $i1 = true; foreach ($items as $item) { if (is_numeric($item)) { if (!$i1) { $cond .= "OR (`fv{$i}`.`field_id` = {$field->id} AND `fv{$i}`.`int_val` = {$item}) "; } else { $cond .= "(`fv{$i}`.`field_id` = {$field->id} AND `fv{$i}`.`int_val` = {$item}) "; $i1 = false; } } } $cond .= ')'; $criteria->join .= "INNER JOIN `catalog_filtered_fields_values` AS `fv{$i}` ON `co`.`id` = `fv{$i}`.`object_id` " . "AND {$cond} "; $i++; } } } } //$criteria->group = "object_id"; if (isset($_REQUEST['min_price']) && isset($_REQUEST['max_price'])) { //$criteria->join = "LEFT JOIN `catalog_objects` ON `catalog_filtered_fields_values`.`object_id` = `catalog_objects`.`id`"; $criteria->addBetweenCondition('price', CatalogObjects::convertPrice($_REQUEST['min_price']), CatalogObjects::convertPrice($_REQUEST['max_price'])); } $count = CatalogObjects::model()->count($criteria); $pages = new CPagination($count); $pages->pageSize = 2; $pages->applyLimit($criteria); $objects = CatalogObjects::model()->findAll($criteria); $this->renderPartial('objects', array('objects' => $objects, 'pages' => $pages)); }
</div> </div> </div> </form> <form action="/admin/catalog/saveRelations/?id=<?php echo is_object($model) ? $model->id : 0; ?> " id="catalog-relations" method="post" role="form"> <input type="hidden" name="related" value="" /> <div class="panel panel-default"> <div class="panel-heading clearfix"> <select class="rel-selector select2"> <?php $criteria = new CDbCriteria(); $criteria->condition = "id <> " . $model->id; $items = CatalogObjects::model()->findAll($criteria); ?> <option value="0">Выберите товар...</option> <?php if (is_array($items) && count($items)) { foreach ($items as $item) { ?> <option value="<?php echo $item->id; ?> " data-url="/admin/catalog/edit/<?php echo $item->id; ?> "><?php echo $item->field("artikul")->value(); ?>
public function actionToggleOnmain() { if (isset($_REQUEST['pk'])) { $model = CatalogObjects::model()->findByPk($_REQUEST['pk']); if (is_object($model)) { $model->on_main = $model->on_main ? 0 : 1; if ($model->save()) { return true; } } } return false; }
/** * Возвращает максимальную цену в категории * @param int $categoryId * @return float */ public static function getMaxPrice($categoryId) { $criteria = new CDbCriteria(); $criteria->select = "MAX(price) as max_price"; $criteria->condition = "is_active = 1 AND is_deleted = 0"; $criteria->addCondition("category_id = " . $categoryId); return CatalogObjects::model()->find($criteria)->max_price; }
public function actionSearch() { if (empty($_GET['search_string'])) { $search = ""; } else { $search = $_GET['search_string']; } if (isset($_GET['all_news']) and $_GET['all_news'] == 1) { $allN = true; } else { $allN = false; } if (isset($_GET['all_catalog']) and $_GET['all_catalog'] == 1) { $allC = true; } else { $allC = false; } $criteria = new CDbCriteria(); $criteria->addSearchCondition('h1', $search, true, 'OR'); $criteria->addSearchCondition('content', $search, true, 'OR'); $criteria->addSearchCondition('anons', $search, true, 'OR'); $criteria->addSearchCondition('name', $search, true, 'OR'); $criteria->addSearchCondition('title', $search, true, 'OR'); $criteria->addSearchCondition('lang_id', $this->lang, true, 'AND'); $criteria->addSearchCondition('is_active', "1", true, 'AND'); $modelNews = News::model()->findAll($criteria); //////////////////////////////////////////////////////////////////////////////////////////// $criteriac = new CDbCriteria(); $criteriac->addSearchCondition('h1', $search, true, 'OR'); $criteriac->addSearchCondition('content', $search, true, 'OR'); $criteriac->addSearchCondition('anons', $search, true, 'OR'); $criteriac->addSearchCondition('name', $search, true, 'OR'); $criteriac->addSearchCondition('title', $search, true, 'OR'); $criteriac->addSearchCondition('lang_id', $this->lang, true, 'AND'); $criteriac->addSearchCondition('is_active', "1", true, 'AND'); $modelCatalog = CatalogObjects::model()->findAll($criteriac); switch ($this->lang) { case 19: $this->pageTitle = "Поиск по сайту"; $this->pageDescription = "Поиск по сайту"; $this->pageKeywords = "Поиск по сайту"; break; case 20: $this->pageTitle = "Search"; $this->pageDescription = "Search"; $this->pageKeywords = "Search"; break; case 21: $this->pageTitle = "Recherche sur le site"; $this->pageDescription = "Recherche sur le site"; $this->pageKeywords = "Recherche sur le site"; break; } if ($allN or $allC) { if ($allN) { $this->render('search_all_news', array('modelNews' => $modelNews, 'search' => $search)); } if ($allC) { $this->render('search_all_catalog', array('modelCatalog' => $modelCatalog, 'search' => $search)); } } else { $this->render('search_all', array('modelNews' => $modelNews, 'modelCatalog' => $modelCatalog, 'search' => $search)); } }
public function actionEdit() { $this->layout = '//layouts/admin'; $success = false; $id = $_REQUEST['id']; $model = Orders::model()->findByPk($id); $this->pageTitle = is_object($model) ? "Заказ #" . $model->id : 'Новый заказ'; $this->breadcrumbs = array('Заказы' => array('/admin/orders'), is_object($model) ? "Заказ #" . $model->id : 'Новый заказ'); if (isset($_POST['data']) && is_object($model)) { $dataArray = $_POST['data']; $dataArray['timestamp'] = isset($dataArray['timestamp']) ? strtotime($dataArray['timestamp']) : time(); $orderItems = json_decode($dataArray['order_items'], true); unset($dataArray['order_items']); $model->setAttributes($dataArray); if ($model->save()) { $success = true; $oldItems = OrderItems::model()->findAllByAttributes(array("order_id" => $model->id)); if (is_array($oldItems) && count($oldItems)) { foreach ($oldItems as $item) { $item->delete(); } } if (is_array($orderItems) && count($orderItems)) { foreach ($orderItems as $oItem) { foreach ($oItem as $oId => $amount) { $object = CatalogObjects::model()->findByPk($oId); if (is_object($object) && $amount) { $oItemModel = new OrderItems(); $attributes = array(); $attributes['order_id'] = $model->id; $attributes['name'] = $object->name; $attributes['product_id'] = $object->id; $attributes['price'] = $object->price; $attributes['amount'] = $amount; $oItemModel->setAttributes($attributes); $oItemModel->save(); } } } } } } $this->render('edit', array('model' => $model, 'success' => $success, 'errors' => $model->errors)); }