protected function initColumn() { $collection = new DaActiveRecordCollection($this->grid->dataProvider->getData()); $idObject = $this->getObject()->id_object; foreach ($collection as $key => $obj) { if (!Yii::app()->authManager->checkObjectInstance(DaDbAuthManager::OPERATION_DELETE, Yii::app()->user->id, $idObject, $key, false)) { $collection->remove($key); } else { $this->_availableIdInstance[] = $key; } } if ($collection->getCount() == 0) { $this->visible = false; return; } $info = $this->grid->dataProvider->model->isInstancesAvailableForDelete($collection); foreach ($info as $id => $availableInfo) { if (!$availableInfo['result']) { $key = array_search($id, $this->_availableIdInstance); unset($this->_availableIdInstance[$key]); $this->_unavailableInfo[$id] = implode(', ', $availableInfo['info']); } } $js = 'function da_deleteRecord(idObject, idInstance) { ' . CHtml::ajax(array('type' => 'POST', 'dataType' => 'json', 'url' => Yii::app()->createUrl('backend/ygin/deleteRecord'), 'data' => 'js:{idObject:idObject, idInstance:idInstance}', 'success' => 'function(data){ if (data.error !== undefined) {$.daSticker({text:data.error, type:"error", sticked:true}); $("#ygin_inst_" + data.idInstance + " .action-delete a").removeClass("process"); return;} $.daSticker({text:data.message, type:"success"}); $("#ygin_inst_" + data.idInstance).remove(); if ($(".b-instance-list tbody tr").length == 0) {$(".b-instance-list, .b-instance-list-count").remove();} }')) . ' }'; Yii::app()->clientScript->registerScript('admin.delete-record-ajax', $js, CClientScript::POS_HEAD); }
protected function initColumn() { $collection = new DaActiveRecordCollection($this->grid->dataProvider->getData()); $idObject = $this->getObject()->id_object; foreach ($collection as $key => $obj) { if (!Yii::app()->authManager->checkObjectInstance(DaDbAuthManager::OPERATION_EDIT, Yii::app()->user->id, $idObject, $key, false)) { $collection->remove($key); } else { $this->_availableIdInstance[] = $key; } } if ($collection->getCount() == 0) { $this->visible = false; } }
public static function getCountViewByInstances($idObject, array $instances, $type = null) { $add = ""; if ($type != null) { $add = " AND view_type=" . $type; } $collection = new DaActiveRecordCollection($instances); $array = $collection->getKeys(); $sql = "SELECT id_instance, COUNT(view_count) AS c FROM da_stat_view WHERE id_object = :id_object AND id_instance IN (" . implode(", ", $array) . ')' . $add . ' GROUP BY id_instance;'; $data = Yii::app()->db->createCommand($sql)->queryAll(true, array(':id_object' => $idObject)); $result = array(); foreach ($data as $row) { $result[$row['id_instance']] = $row['c']; } return $result; }
<?php /** * @var $form CActiveForm * @var $this DropDownListWidget * @var $model SiteModuleTemplate */ $idInstance = $model->getIdInstance(); $modules = $this->modules; if (count($modules) == 0) { return; } $collection = new DaActiveRecordCollection($modules); //Модули есть $places = $model->modulePlaces; // Уже задействованные модули $currentIdModules = array(); $placesArray = array(); foreach ($places as $place) { $currentIdModules[] = $place->id_module; $placesArray[$place->place][] = $place; } // Получили в массиве nid модули, приписанные каким-либо местам //+ в $idUpdatedModules идентификаторы этих модулей (пригодится позднее при выводе модулей из архива) echo '<div id="modulesSeqPlace"> <div class="col-lg-6"> <div id="placeNonVisible" class="b-widget-place well"> <h4>Не используемые модули</h4> <ul>'; // Если остались модули, которые не видны $position = 0;
public function getInstancesDependentData($instances, $all = true) { $scalar = false; $collection = null; if (is_array($instances)) { $collection = new DaActiveRecordCollection($instances); } else { if ($instances instanceof DaActiveRecordCollection) { $collection = $instances; } else { if ($instances instanceof DaActiveRecord) { $collection = new DaActiveRecordCollection(array($instances)); $scalar = true; } else { throw new ErrorException('Неверно определен тип параметра метода getInstancesDependentData.'); } } } $arrayOfId = $collection->getKeys(); $relationParams = $this->getObjectInstance()->relationParameters; $assocData = array_fill_keys($arrayOfId, array()); foreach ($relationParams as $param) { $whereConfig = array('and', array('in', $param->getFieldName(), $arrayOfId)); $idObject = $param->getIdObjectParameter(); $object = DaObject::getById($idObject, false); $data = Yii::app()->db->createCommand()->select($param->getFieldName() . ' AS id, count(*) AS cnt')->from($object->table_name)->where($whereConfig)->group($param->getFieldName())->queryAll(); /* // многообъектая поддержка $iq = new InstanceQuery($where); $arrayOfIdObject = Object::getCommonObjectBySingle($idObjectTmp); if (count($arrayOfIdObject) > 1) { $iq->setUsedObjects(array($idObjectTmp)); }*/ foreach ($data as $row) { $assocData[$row['id']][$idObject] = $row['cnt']; if (!$all && isset($arrayOfId[$row['id']])) { unset($arrayOfId[$row['id']]); } } if (!$all && count($arrayOfId) == 0) { break; } } if ($scalar) { return array_shift($assocData); } return $assocData; }
public static function getProductsFromCookie() { if (ShopModule::$_productsCookie !== null) { return ShopModule::$_productsCookie; } $productsFromCookie = array(); if (isset(Yii::app()->request->cookies[self::CART_COOKIE_NAME])) { $productsFromCookie = CJSON::decode(Yii::app()->request->cookies[self::CART_COOKIE_NAME]->value, true); } ShopModule::$_productsCookie = array(); if (isset($productsFromCookie) && is_array($productsFromCookie)) { $cartProducts = Product::model()->with('category')->findAllByPk(HArray::column($productsFromCookie, 'id')); $collection = new DaActiveRecordCollection($cartProducts); foreach ($productsFromCookie as $productCookieItem) { $count = HArray::val($productCookieItem, 'count', 0); $idProduct = HArray::val($productCookieItem, 'id'); if ($count == 0) { continue; } $product = $collection->itemAt($idProduct); if ($product == null) { continue; } //чтобы появилась возможность заполнять кастомные поля (поля, определенные прикладным программистом) //делаем массовое присваивание $product->scenario = 'cookie'; unset($productCookieItem['id'], $productCookieItem['count']); $product->attributes = CMap::mergeArray(array('countInCart' => $count), $productCookieItem); ShopModule::$_productsCookie[] = $product; } } return ShopModule::$_productsCookie; }