language; $per_page = 10; $page = $_GET['page'] ?? 1; /** * @var \yii\web\View $this */ if (!empty($_GET['advance_filter']) || !empty($_GET['tags'])) { $objects = RegisterObjects::find(); $objects = $objects->select('register_objects.ref_num')->where(['lib_type' => 1]); $conditionOr = ['or']; //[ FILTER BY NAME ] if (!empty($_GET['object_name'])) { $conditionOr[] = ['LIKE', 'name', $_GET['object_name']]; $conditionOr[] = ['LIKE', 'ts_en_name', $_GET['object_name']]; } //[ FILTER BY CREATOR ] if (!empty($_GET['created_by'])) { $conditionOr[] = ['=', 'created_by', $_GET['created_by']]; } $conditionAnd = ['and']; //[ FILTER BY YEAR FROM ] if (!empty($_GET['year_from'])) { $conditionAnd[] = ['>=', 'created_year', $_GET['year_from']]; } //[ FILTER BY YEAR TO ] if (!empty($_GET['year_to'])) { $conditionAnd[] = ['<=', 'created_year', $_GET['year_to']]; } //region [FILTER BY OBJECT FIELDS] $fields = Fields::find()->where(['lib_type' => 1, 'active' => 1, 'deleted' => 0])->all(); $objectFieldIdArray = []; $objectFieldValueTextArray = []; foreach ($fields as $field) { if (!empty($_GET['name_id_' . $field->id])) $objectFieldIdArray[] = $_GET['name_id_' . $field->id]; if (!empty($_GET['name_text_' . $field->id])) $objectFieldValueTextArray[] = $_GET['name_text_' . $field->id]; } if (sizeof($objectFieldIdArray) > 0 || sizeof($objectFieldValueTextArray) > 0) { $objects = $objects->joinWith('registerObjectFields'); } if(sizeof($objectFieldIdArray) > 0) { $conditionOr[] = ['IN', 'value_id', $objectFieldIdArray]; } if(sizeof($objectFieldValueTextArray) > 0) { foreach ($objectFieldValueTextArray as $value) { $conditionOr[] = ['=', 'value_text', $value]; } } $objectIds = []; if($conditionOr != ['or'] || $conditionAnd != ['and']) { $objects = $objects->andWhere($conditionOr ?? [])->andWhere($conditionAnd ?? [])->all(); foreach ($objects as $object) { $objectIds[] = $object->ref_num; } } if(!empty($_GET['tags'])) { $tags = explode('_', $_GET['tags']); $objectTags = ObjectTags::find()->where(['IN', 'tag_id', $tags])->andWhere(['active' => 1, 'deleted' => 0])->all(); foreach ($objectTags as $objectTag) { if(!in_array($objectTag->object_id, $objectIds)) { $objectIds[] = $objectTag->object_id; } } } $collectionObjectConditionAnd = ['and']; $collectionObjectConditionAnd[] = ['IN', 'object_id', $objectIds]; $collectionObjectConditionAnd[] = ['=', 'deleted', 0]; $collectionObjectConditionAnd[] = ['=', 'active', 1]; $collectionObjectConditionAnd[] = ['=', 'published', 1]; if (!empty($_GET['partner_id'])) $collectionObjectConditionAnd[] = ['=', 'partner_id', $_GET['partner_id']]; $collectionObjectConditionOr = ['or']; $collectionObjectConditionOr[] = ['IS', 'is_payable', NULL]; $collectionObjectConditionOr[] = ['=', 'is_payable', 0]; $collectionObjects = CollectionsObjects::find()->joinWith('collection') ->where($collectionObjectConditionOr) ->andWhere($collectionObjectConditionAnd) ->groupBy('collection_id'); $count = $collectionObjects->count(); if ($count <= $per_page) $page = 1; $collectionObjects->offset($per_page * $page - $per_page)->limit($per_page); if (!empty($_GET['order_title'])) { $collectionObjects = $collectionObjects->orderBy([$_GET['order_title'] => SORT_ASC]); } else { $collectionObjects = $collectionObjects->orderBy(['id' => SORT_DESC]); } //region DISPLAY DATA $count = $collectionObjects->count(); $data = []; /** @var CollectionsObjects $collectionObject */ foreach ($collectionObjects->all() as $collectionObject) { $model = new \stdClass(); $collection = $collectionObject->collection; $model->title = $lg == 'en' ? ($collection->name_en ?? $collection->name) : $collection->name; $model->type = 'collection'; $model->img = $collection->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png'); $model->id = $collection->id; $data[] = $model; } header('Content-type: application/json'); echo json_encode(['data' => $data, 'lastPage' => ceil($count/$per_page), 'count' => $count]); //endregion } else { $collections = Collections::find()->where(['or', ['=', 'is_payable', 0], ['IS', 'is_payable', null]]) ->andWhere(['deleted' => 0, 'active' => 1, 'published' => 1]); if (!empty($_GET['partner_id'])) { $collections = $collections->andWhere(['partner_id' => $_GET['partner_id']]); } $collections = $collections->offset($per_page * $page - $per_page)->limit($per_page); $count = $collections->count(); $data = []; foreach ($collections->all() as $collection) { $model = new \stdClass(); $model->title = $lg == 'en' ? $collection->name_en ?? $collection->name : $collection->name; $model->type = 'collection'; $model->img = $collection->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png'); $model->id = $collection->id; $data[] = $model; } header('Content-type: application/json'); echo json_encode(['data' => $data, 'lastPage' => ceil($count/$per_page), 'count' => $count]); }