Exemplo n.º 1
0
 function addLoadedItems($items)
 {
     $this->load();
     foreach ($items as $modelName => $m_items) {
         if (!Set::numeric(array_keys(SetMulti::excludeKeys($m_items, array('internal'))))) {
             $m_items = array($m_items);
         }
         foreach ($m_items as $item) {
             if (!empty($item['id'])) {
                 $model = ClassRegistry::init($modelName);
                 if ($model->Behaviors->attached('Node')) {
                     if (!empty($item['internal']['Node'][0]['id'])) {
                         $nodeId = $item['internal']['Node'][0]['id'];
                     } else {
                         $node = $model->node($model->myNodeRef($item['id']), false, true);
                         $nodeId = $node['Node']['id'];
                     }
                     if (!empty($nodeId)) {
                         if (isset($this->loadedItems[$nodeId])) {
                             unset($this->loadedItems[$nodeId]);
                             //Make sure everything id in DESC Order
                         }
                         $this->loadedItems[$nodeId] = $this->startTime;
                         if (!empty($item['items'])) {
                             $this->addLoadedItems($item['items']);
                         }
                     }
                 }
             }
         }
     }
     //debug($this->loadedItems);
 }
Exemplo n.º 2
0
 function excludeKeys($array, $keys, $recursive = false)
 {
     $array = array_diff_key($array, array_flip($keys));
     if ($recursive) {
         foreach ($array as &$val) {
             if (is_array($val)) {
                 if ($recursive !== true) {
                     $recursive--;
                 }
                 $val = SetMulti::excludeKeys($val, $keys, $recursive);
             }
         }
     }
     return $array;
 }
Exemplo n.º 3
0
 function addItems($items)
 {
     //debug($items);
     if (!empty($items)) {
         foreach ($items as $modelName => $model) {
             App::import('Lib', 'SetMulti');
             if (!Set::numeric(array_keys(SetMulti::excludeKeys($model, array('internal'))))) {
                 $model = array($model);
             }
             if (array_key_exists('internal', $model)) {
                 if (empty($this->items[$modelName]['internal'])) {
                     $this->items[$modelName]['internal'] = array();
                 }
                 $this->items[$modelName]['internal'] = array_merge($this->items[$modelName]['internal'], $model['internal']);
                 unset($model['internal']);
             }
             foreach ($model as $item) {
                 $this->items[$modelName][] = $item;
             }
         }
         $this->controller->Link->addLoadedItems($items);
     }
 }
Exemplo n.º 4
0
 function parseStringOperation($val, $options = array())
 {
     if (is_numeric($val)) {
         return $val;
     }
     $_this =& Operations::getInstance();
     $localOpt = array('type', 'error');
     $defOpt = array('mode' => 'full', 'error' => false);
     $opt = array_merge($defOpt, $options);
     App::import('Lib', 'SetMulti');
     foreach ($_this->operators as $op) {
         $op = Set::merge($_this->opDefOpt, $op, SetMulti::excludeKeys($opt, $localOpt));
         if (empty($opt['type']) || in_array($op['type'], (array) $opt['type'])) {
             $pattern = $_this->getPattern($op);
             //debug($pattern);
             if (!empty($pattern)) {
                 if (preg_match($pattern, (string) $val, $res)) {
                     //debug($res);
                     $oper = array('operator' => $op['name']);
                     array_shift($res);
                     foreach ($res as $k => $r) {
                         if (!is_numeric($k)) {
                             $oper[$k] = $r;
                         }
                     }
                     return $oper;
                 }
             }
         }
     }
     if ($opt['error'] == '(val)') {
         return $val;
     } else {
         return $opt['error'];
     }
 }