Beispiel #1
0
    /**
     * Load the data, don't forget to validate the incoming data
     */
    private function getData()
    {
        // validate incoming parameters
        if ($this->URL->getParameter(1) === null) {
            $this->redirect(FrontendNavigation::getURL(404));
        }
        // fetch record
        $this->record = FrontendTagsModel::get($this->URL->getParameter(1));
        // validate record
        if (empty($this->record)) {
            $this->redirect(FrontendNavigation::getURL(404));
        }
        // fetch modules
        $this->modules = FrontendTagsModel::getModulesForTag($this->record['id']);
        // loop modules
        foreach ($this->modules as $module) {
            // set module class
            $class = 'Frontend' . SpoonFilter::toCamelCase($module) . 'Model';
            // get the ids of the items linked to the tag
            $otherIds = (array) FrontendModel::getDB()->getColumn('SELECT other_id
				 FROM modules_tags
				 WHERE module = ? AND tag_id = ?', array($module, $this->record['id']));
            // set module class
            $class = 'Frontend' . SpoonFilter::toCamelCase($module) . 'Model';
            // get the items that are linked to the tags
            $items = (array) FrontendTagsModel::callFromInterface($module, $class, 'getForTags', $otherIds);
            // add into results array
            if (!empty($items)) {
                $this->results[] = array('name' => $module, 'label' => FL::lbl(SpoonFilter::ucfirst($module)), 'items' => $items);
            }
        }
    }
Beispiel #2
0
 /**
  * Get tags for current "page"
  */
 private function getTags()
 {
     // get page id
     $pageId = FrontendPage::getCurrentPageId();
     // array of excluded records
     $this->exclude[] = array('module' => 'pages', 'other_id' => $pageId);
     // get tags for page
     $tags = (array) FrontendTagsModel::getForItem('pages', $pageId);
     foreach ($tags as $tag) {
         $this->tags = array_merge((array) $this->tags, (array) $tag['name']);
     }
     // get page record
     $record = (array) FrontendNavigation::getPageInfo($pageId);
     // loop blocks
     foreach ((array) $record['extra_blocks'] as $block) {
         // set module class
         $class = 'Frontend' . SpoonFilter::toCamelCase($block['module']) . 'Model';
         // get record for module
         $record = FrontendTagsModel::callFromInterface($block['module'], $class, 'getIdForTags', $this->URL);
         // check if record exists
         if (!$record) {
             continue;
         }
         // add to excluded records
         $this->exclude[] = array('module' => $block['module'], 'other_id' => $record['id']);
         // get record's tags
         $tags = (array) FrontendTagsModel::getForItem($block['module'], $record['id']);
         foreach ($tags as $tag) {
             $this->tags = array_merge((array) $this->tags, (array) $tag['name']);
         }
     }
 }