static function getTargets($type, $item_ids = '') { // Get the type descriptor details $typedetails = SelectorCollection::getTypeDetails($type); $selecteditems = new SelectorCollection(new SelectorObject($typedetails['linkTableName'])); $sh = new SearchHandler($selecteditems, false); if (!empty($item_ids)) { if (!is_array($item_ids)) { $item_ids = array($item_ids); } $sh->addConstraint(new Constraint('item_id', 'in', '(' . implode(',', $item_ids) . ')')); } $sh->setFields(array('target_id', 'item_id')); $sh->setOrderby(array('target_id', 'item_id')); $selecteditems->load($sh); return $selecteditems->getAssoc(); }
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); } } }