function _getActOwner($aArray) { // dbg($aArray); $class = TheClass($aArray['seg']); global ${$class}; $aOwner = ${$class}->getBaseData($aArray['off']); return '<a href="/user/' . $aOwner['id'] . '" class="invitelink">' . $aOwner['family'] . ' ' . $aOwner['name'] . '</a>'; }
function getBaseData($id, $type = 'user') { global $Db; $where = $Db->sqlGetWhere(array('id' => $id, 'type' => $type)); // dbg($where); $sql = "SELECT * FROM `" . $this->table . "`" . $where; // dbg($sql); $aResult = $this->queryRow($sql); if (empty($aResult)) { return array(); } // dbg($aResult); $Class = TheClass($type); global ${$Class}; $aBookmark = ${$Class}->getBaseData($aResult['link_id']); // dbg($aBookmark); // dbg($aResult); $aMerge = array_merge($aBookmark, $aResult); // Console::log($aMerge); return $aMerge; }
$seg = 'photo'; include FLGR_LIBS . '/ll.php'; // DopNav - внутренняя навигация на страницах $aDopNav = array('editalbum' => 'Редактировать альбом', 'addphoto' => 'Добавить фотографии', 'descr' => 'Описание'); // Чтобы вывести первый BreadCrumbsItem необходимо // получить объект с которым связан текущий обьект (для Фотографии это - Альбом) // Назовем его Owner $owner = TheClass($aItem['seg']); //dbg($owner); $aOwner = ${$owner}->getBaseData($aItem['off']); //dbg($aOwner); // Владельцем фотографии является альбом // Теперь необходимо получить владельца альбома // Это может быть пользователь или группа (или встреча) // Назовем его Subject $subject = TheClass($aOwner['seg']); $aSubject = ${$subject}->getBaseData($aOwner['off']); //dbg($aSubject); // Добавляем первый BreadCrumbsItem, указывающий на Subject $sTmp = ''; if (isset($aSubject['family'])) { $sTmp .= $aSubject['family'] . ' '; } $sTmp .= $aSubject['name']; $BreadCrumbs->add($aOwner['seg'] . '/' . $aOwner['off'], $sTmp); // Добавляем второй BreadCrumbsItem, указывающий на владельца $sTmp = ''; if (isset($aOwner['family'])) { $sTmp .= $aOwner['family'] . ' '; } $sTmp .= $aOwner['name'];
dbg("ASSERT (Fatal): {module {$sModuleName}} [off] incorrect"); return; } // Если после [off] есть еще параметры - значит это ошибка урла и надо // выдать ASSERT (Warn) и выйти оставив взведенным $bFlag404 if (isset($aRequest[$nLevel + 3])) { dbg("ASSERT (Warn): {module {$sModuleName}} url error"); return; } // Теперь получаем [self] $self = substr($sModuleTpl, 0, strlen($sModuleTpl) - 1); //dbg($self); // Теперь, когда у нас есть [self], [seg] и [off] мы можем найти Items // Если Items найти не удалось - мы должны // выдать ASSERT (Warn) и выйти оставив взведенным $bFlag404 $class = TheClass($self); //dbg($class); $aItems = ${$class}->getItems($seg, $off); //dbg($aItems); if (empty($aItems)) { // dbg("ASSERT (Warn): {module $sModuleName} items not found"); } // Здесь мы могли бы сбросить $bFlag404 но остается вероятность, // что по url не будет найден управляющий контроллер, поэтому // оконечный управляющий контроллер сам сбрасывает $bFlag404 // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //dbg($aItems); // OPEN if ('' == $sModuleTpl) { my_die('Error: Template not found'); }
include_once FLGR_MODULES . '/!search.php'; return; // } dbg("ASSERT (Fatal): {module {$sModuleName}} [url] incorrect"); return; } // [seg] идет первым параметром после модулей и должен принадлежать множеству $segs // если это не так - мы должны выдать ASSERT (Fatal) и и выйти оставив взведенным $bFlag404 if (isset($aRequest[$nLevel + 1]) && isset($segs[$aRequest[$nLevel + 1]])) { $seg = $aRequest[$nLevel + 1]; } else { dbg("ASSERT (Fatal): {module {$sModuleName}} [seg] incorrect"); return; } // The Class $class = TheClass($seg); //dbg($class); // CONTROLLER if (isset($_POST['act'])) { switch ($_POST['act']) { case 'del_item': ${$class}->delLink2User($_POST['id'], $Permissions->getLoggedUserId()); break; case 'add_item': ${$class}->addLink2User($_POST['id'], $Permissions->getLoggedUserId()); break; default: // dbg($_POST); $name = mysql_escape_string($_POST['name']); $sql_selector = "(\n\t\t\t\t(`name` LIKE '%{$name}%') OR\n\t\t\t\t(`parentname` LIKE '%{$name}%') OR\n\t\t\t\t(`nickname` LIKE '%{$name}%')\n\t\t\t) ORDER BY `" . mysql_escape_string($_POST['order']) . "`\n\t\t\t"; // dbg($sql_selector);
/** * Получаем связанных пользователей или (если reverse==true) * связанные объекты (например, группы) * * @param id $id * @param bool $reverse * @return array */ function getLinkedUsers($id, $reverse = false) { global $Users; $aLinks = $this->getLinks2User($id, $reverse); // dbg($aLinks); foreach ($aLinks as $k => $v) { // dbg($reverse); if ($reverse) { unset($v['id']); unset($v['user_id']); $key = key($v); $value = current($v); $class = TheClass(substr($key, 0, strlen($key) - 3)); global ${$class}; // dbg($value, $class); // Console::log($key.' => '.$class.' [ '.$value.' ]'); $aLinks[$k] = ${$class}->getBaseData($value); } else { $aLinks[$k] = $Users->getBaseData($v['user_id']); } } // Console::log($aLinks); return $aLinks; }
/** * Enter description here... * * @param string $seg * @param id $off * @param array $tail * @return unknown */ function aBreadCrumbsPath($seg, $off, $tail = array()) { // dbg($seg, $off); $class = TheClass($seg); // dbg($class); global ${$class}; $aItem = ${$class}->getBaseData($off); // dbg($aItem); global $BreadCrumbs; global $segs; // тут хаки :)) if (!isset($aItem['name'])) { $aItem['name'] = $aItem['title']; } elseif (isset($aItem['family'])) { $aItem['name'] = $aItem['family'] . ' ' . $aItem['name']; } $tail["%{$seg}/{$off}"] = $aItem['name']; if (isset($aItem['seg']) && isset($aItem['off']) && isset($segs[$aItem['seg']]) && $aItem['off'] != 0) { return aBreadCrumbsPath($aItem['seg'], $aItem['off'], $tail); } return $tail; }
<?php /** * Конкретный альбом */ $seg = 'album'; include FLGR_LIBS . '/ll.php'; // DopNav - внутренняя навигация на страницах $aDopNav = array('editalbum' => 'Редактировать альбом', 'addphoto' => 'Добавить фотографии', 'descr' => 'Описание', 'delalbum' => 'Удалить альбом'); // Чтобы вывести первый BreadCrumbsItem необходимо // получить объект с которым связан текущий обьект //dbg($aItem); $owner = TheClass($aItem['seg']); //dbg($owner); $aOwner = ${$owner}->getBaseData($off); //dbg($aOwner); //dbg(aBreadCrumbsPath($seg, $aItem['id'])); foreach (array_reverse(aBreadCrumbsPath($seg, $aItem['id'])) as $k => $v) { $BreadCrumbs->add($k, $v); } // --------------------------- if (!$bFlagLastModule) { return; } // --------------------------- if (isset($_POST['act'])) { switch ($_POST['act']) { default: break; } }