/** */ protected function listSection() { $parentPath = $this->parentPath(SPRequest::sid()); $this->assign($parentPath, 'current_path'); $this->_plgSect = '_SectionListTemplate'; $c = $this->get('categories'); $categories = array(); $entries = array(); /* get users/authors data first */ $usersData = array(); if (count($c)) { foreach ($c as $cat) { $usersData[] = $cat->get('owner'); } reset($c); } $usersData = $this->userData($usersData); /* handle the categories */ if (count($c)) { foreach ($c as $cat) { $category = array(); /* data needed to display in the list */ $category['name'] = $cat->get('name'); $category['state'] = $cat->get('state'); $category['approved'] = $cat->get('approved'); if (isset($usersData[$cat->get('owner')])) { $uName = $usersData[$cat->get('owner')]->name; $uUrl = SPUser::userUrl($usersData[$cat->get('owner')]->id); $category['owner'] = "<a href=\"{$uUrl}\">{$uName}</a>"; } else { $category['owner'] = Sobi::Txt('GUEST'); } /* the rest - case someone need */ $category['position'] = $cat->get('position'); $category['createdTime'] = $cat->get('createdTime'); $category['cout'] = $cat->get('cout'); $category['coutTime'] = $cat->get('coutTime'); $category['id'] = $cat->get('id'); $category['validSince'] = $cat->get('validSince'); $category['validUntil'] = $cat->get('validUntil'); $category['description'] = $cat->get('description'); $category['icon'] = $cat->get('icon'); $category['introtext'] = $cat->get('introtext'); $category['parent'] = $cat->get('parent'); $category['confirmed'] = $cat->get('confirmed'); $category['counter'] = $cat->get('counter'); $category['nid'] = $cat->get('nid'); $category['metaDesc'] = $cat->get('metaDesc'); $category['metaKeys'] = $cat->get('metaKeys'); $category['metaAuthor'] = $cat->get('metaAuthor'); $category['metaRobots'] = $cat->get('metaRobots'); $category['ownerIP'] = $cat->get('ownerIP'); $category['updatedTime'] = $cat->get('updatedTime'); $category['updater'] = $cat->get('updater'); $category['updaterIP'] = $cat->get('updaterIP'); $category['version'] = $cat->get('version'); $category['object'] =& $cat; $categories[] = $category; } } /* re-assign the categories */ $this->assign($categories, 'categories'); /* handle the fields in this section for header */ $f = $this->get('fields'); $entriesOrdering = array(Sobi::Txt('ORDER_BY') => array(), 'e_sid.asc' => Sobi::Txt('EMN.ORDER_BY_ID_ASC'), 'e_sid.desc' => Sobi::Txt('EMN.ORDER_BY_ID_DESC'), $this->get('entries_field') . '.asc' => Sobi::Txt('EMN.ORDER_BY_NAME_ASC'), $this->get('entries_field') . '.desc' => Sobi::Txt('EMN.ORDER_BY_NAME_DESC'), 'state.asc' => Sobi::Txt('EMN.ORDER_BY_STATE_ASC'), 'state.desc' => Sobi::Txt('EMN.ORDER_BY_STATE_DESC'), 'createdTime.asc' => Sobi::Txt('EMN_ORDER_BY_CREATION_DATE_ASC'), 'createdTime.desc' => Sobi::Txt('EMN_ORDER_BY_CREATION_DATE_DESC'), 'updatedTime.asc' => Sobi::Txt('EMN_ORDER_BY_UPDATE_DATE_ASC'), 'updatedTime.desc' => Sobi::Txt('EMN_ORDER_BY_UPDATE_DATE_DESC'), 'approved.asc' => Sobi::Txt('EMN.ORDER_BY_APPROVAL_ASC'), 'approved.desc' => Sobi::Txt('EMN.ORDER_BY_APPROVAL_DESC')); if ($this->get('task') == 'view') { $entriesOrdering['position.asc'] = Sobi::Txt('EMN.ORDER_BY_ORDER_ASC'); $entriesOrdering['position.desc'] = Sobi::Txt('EMN.ORDER_BY_ORDER_DESC'); } $customFields = array(); $customHeader = array(); if (count($f)) { /* @var SPField $fit */ foreach ($f as $field) { $entriesOrdering[Sobi::Txt('EMN.ORDER_BY_FIELD')][$field->get('nid') . '.asc'] = '\'' . $field->get('name') . '\' ' . Sobi::Txt('EMN.ORDER_BY_FIELD_ASC'); $entriesOrdering[Sobi::Txt('EMN.ORDER_BY_FIELD')][$field->get('nid') . '.desc'] = '\'' . $field->get('name') . '\' ' . Sobi::Txt('EMN.ORDER_BY_FIELD_DESC'); $customFields[] = $field->get('nid'); $customHeader[] = array('content' => $field->get('name'), 'attributes' => array('type' => 'text')); } } $entriesOrdering['owner.desc'] = Sobi::Txt('EMN.ORDER_BY_OWNER'); $this->assign($customHeader, 'customHeader'); $this->assign($customFields, 'custom_fields'); $this->assign($entriesOrdering, 'entriesOrdering'); /* handle the entries */ $e = $this->get('entries'); if (count($e)) { /* get users/authors data first */ $usersData = array(); foreach ($e as $i => $sid) { $e[$i] = SPFactory::EntryRow($sid); $usersData[] = $e[$i]->get('owner'); } reset($e); $usersData = $this->userData($usersData); foreach ($e as $sentry) { /* @var SPEntryAdm $sentry */ $entry = array(); $entry['state'] = $sentry->get('state'); $entry['approved'] = $sentry->get('approved'); if (isset($usersData[$sentry->get('owner')])) { $uName = $usersData[$sentry->get('owner')]->name; $uUrl = SPUser::userUrl($usersData[$sentry->get('owner')]->id); $entry['owner'] = "<a href=\"{$uUrl}\">{$uName}</a>"; } else { $entry['owner'] = Sobi::Txt('GUEST'); } $catPosition = $sentry->getCategories(); if (SPRequest::sid() && isset($catPosition[SPRequest::sid()])) { $sentry->position = $catPosition[SPRequest::sid()]['position']; } /* the rest - case someone need */ $entry['position'] = $sentry->get('position'); $entry['createdTime'] = $sentry->get('createdTime'); $entry['cout'] = $sentry->get('cout'); $entry['coutTime'] = $sentry->get('coutTime'); $entry['id'] = $sentry->get('id'); $entry['validSince'] = $sentry->get('validSince'); $entry['validUntil'] = $sentry->get('validUntil'); $entry['description'] = $sentry->get('description'); $entry['icon'] = $sentry->get('icon'); $entry['introtext'] = $sentry->get('introtext'); $entry['parent'] = $sentry->get('parent'); $entry['confirmed'] = $sentry->get('confirmed'); $entry['counter'] = $sentry->get('counter'); $entry['nid'] = $sentry->get('nid'); $entry['metaDesc'] = $sentry->get('metaDesc'); $entry['metaKeys'] = $sentry->get('metaKeys'); $entry['metaAuthor'] = $sentry->get('metaAuthor'); $entry['metaRobots'] = $sentry->get('metaRobots'); $entry['ownerIP'] = $sentry->get('ownerIP'); $entry['updatedTime'] = $sentry->get('updatedTime'); $entry['updater'] = $sentry->get('updater'); $entry['updaterIP'] = $sentry->get('updaterIP'); $entry['version'] = $sentry->get('version'); $fields = $sentry->getFields(); $entry['fields'] = $fields; $entry['valid'] = $sentry->get('valid') ? 'valid' : 'invalid'; $entry['object'] =& $sentry; $entry['name'] = $sentry->get('name'); /* fields data init */ if (count($f)) { foreach ($f as $field) { $entry[$field->get('nid')] = null; } } /* now fill with the real data if any */ if (count($fields)) { foreach ($fields as $field) { $entry[$field->get('nid')] = $field->data(); } } if (count($customFields)) { foreach ($customFields as $customField) { $entry['customFields'][$customField] = $entry[$customField]; } } $entries[] = $entry; } } $this->assign($entries, 'entries'); }