コード例 #1
0
ファイル: SelectorController.php プロジェクト: uzerpllp/uzerp
 public function confirm_relationships()
 {
     $flash = Flash::Instance();
     //echo 'Items<pre>'.print_r($_SESSION['selected_items'], true).'</pre><br>';
     //echo 'Targets<pre>'.print_r($_SESSION['selected_targets'], true).'</pre><br>';
     // double check the items data;
     // use the data from $_SESSION['selected_items'] if it exists
     // otherwise use the ids in $this->_data['selected_items']
     $selected_items = empty($_SESSION['selected_items']['data']) ? array() : $_SESSION['selected_items']['data'];
     if (empty($selected_items)) {
         if (!isset($this->_data['selected_items']) || count($this->_data['selected_items']) <= 0) {
             $flash->addError("You must select at least one item.");
             sendBack();
         } else {
             $items = new SelectorCollection($this->_templateobject);
             $items->setTableName($items->setOverview());
             $sh = new SearchHandler($items, false);
             $sh->addConstraint(new Constraint('id', 'IN', '(' . implode(',', $this->_data['selected_items']) . ')'));
             $items->load($sh);
             $idField = $items->getModel()->idField;
             foreach ($items->getArray() as $data) {
                 $selected_items[$data->{$idField}] = $data;
             }
         }
     }
     // double check the targets data
     $selected_targets = empty($_SESSION['selected_targets']['data']) ? array() : $_SESSION['selected_targets']['data'];
     if (empty($selected_targets)) {
         if (!isset($this->_data['selected_targets']) || count($this->_data['selected_targets']) <= 0) {
             $flash->addError("You must select at least one target.");
             sendBack();
         } else {
             $target = new $this->targetModel();
             $collection = $this->targetModel . 'Collection';
             $targets = new $collection($target);
             $sh = new SearchHandler($targets, false);
             $sh->addConstraint(new Constraint('id', 'IN', '(' . implode(',', $this->_data['selected_targets']) . ')'));
             $targets->load($sh);
             $idField = $targets->getModel()->idField;
             foreach ($targets->getArray() as $data) {
                 $selected_items[$data->{$idField}] = $data;
             }
         }
     }
     $selected_item_headings = empty($_SESSION['selected_items']['headings']) ? $this->_templateobject->getDisplayFieldNames() : $_SESSION['selected_items']['headings'];
     $selected_target_headings = empty($_SESSION['selected_targets']['headings']) ? $target->getDisplayFieldNames() : $_SESSION['selected_targets']['headings'];
     $this->view->set('selected_items', $selected_items);
     $this->view->set('selected_targets', $selected_targets);
     $this->view->set('selected_item_headings', $selected_item_headings);
     $this->view->set('selected_target_headings', $selected_target_headings);
     $this->view->set('target_title', $this->title);
     $this->view->set('page_title', 'Confirm Link of Items to ' . $this->title);
     $deleted_items = empty($_SESSION['selected_items']['delete']) ? array() : $_SESSION['selected_items']['delete'];
     $deleted_targets = empty($_SESSION['selected_targets']['delete']) ? array() : $_SESSION['selected_targets']['delete'];
     $this->view->set('deleted', 'none');
     if (count($deleted_items) > 0 || count($deleted_targets) > 0) {
         $this->_templateobject->idField = 'id';
         $this->_templateobject->orderby = $this->itemFields;
         $collection = new SelectorCollection(clone $this->_templateobject);
         $collection->setTableName($collection->selectorLinkOverview($this->itemFields, $this->linkTableName, $this->targetModel, $this->targetFields));
         $sh = $this->setSearchHandler($collection);
         $sh->setFields(array_merge(array('id'), $this->itemFields, $this->targetFields));
         $cc1 = new ConstraintChain();
         if (!empty($deleted_targets)) {
             $cc1->add(new Constraint('item_id', 'IN', '(' . implode(',', array_keys($selected_items)) . ')'));
             $cc1->add(new Constraint('target_id', 'IN', '(' . implode(',', array_keys($deleted_targets)) . ')'));
         }
         $cc2 = new ConstraintChain();
         if (!empty($deleted_items)) {
             $cc2->add(new Constraint('item_id', 'IN', '(' . implode(',', array_keys($deleted_items)) . ')'));
             $cc2->add(new Constraint('target_id', 'IN', '(' . implode(',', array_keys($selected_targets)) . ')'));
         }
         $sh->addConstraint($cc1);
         $sh->addConstraint($cc2, 'OR');
         $collection->load($sh);
         if ($collection->num_records > 0) {
             $this->view->set('deleted', $collection);
         }
     }
 }