示例#1
0
    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);
    }
示例#2
0
 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;
     }
 }
示例#3
0
 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;
 }
示例#4
0
文件: index.php 项目: kot-ezhva/ygin
<?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;
示例#5
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;
 }
示例#6
0
 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;
 }