Beispiel #1
0
 /**
  * Формирование данных доступных в шаблоне.
  */
 function createData()
 {
     if ($this->params['sort'] != 2) {
         $this->supportCached();
     }
     switch ($this->params['sort']) {
         default:
         case 1:
             $sort = "sort";
             break;
         case 2:
             $sort = "RAND()";
             break;
     }
     $where = "i.idsec={$this->section_id}";
     if ($this->params['idalb'] > 0) {
         $where .= " AND i.iditem=" . (int) $this->params['idalb'];
     } elseif ($this->params['idcat'] > 0) {
         if ($idalbs = A::$DB->getCol("SELECT id FROM {$this->section}_albums WHERE idcat=" . (int) $this->params['idcat'])) {
             $where .= " AND (i.iditem=" . implode(" OR i.iditem=", $idalbs) . ")";
         }
     }
     $images = array();
     A::$DB->query("\r\r\n\tSELECT i.* FROM " . getDomain($this->section) . "_images AS i\r\r\n\tLEFT JOIN {$this->section}_albums AS a ON a.id=i.iditem\r\r\n\tWHERE {$where} AND a.active='Y' ORDER BY {$sort}" . (!empty($this->params['rows']) ? " LIMIT 0," . (int) $this->params['rows'] : ""));
     while ($row = A::$DB->fetchRow()) {
         if (isset($links[$row['iditem']])) {
             $row['link'] = $links[$row['iditem']];
         } else {
             $row['link'] = $links[$row['iditem']] = gallery_createItemLink($row['iditem'], $this->section);
         }
         $images[] = $row;
     }
     $this->Assign("images", $images);
 }
Beispiel #2
0
 /**
  * Формирование данных доступных в шаблоне.
  */
 function createData()
 {
     if ($this->params['sort'] != 5) {
         $this->supportCached();
     }
     $this->params['idcat'] = (int) $this->params['idcat'];
     $this->params['rows'] = (int) $this->params['rows'];
     if ($this->params['idcat']) {
         $catrow = A::$DB->getRowById($this->params['idcat'], "{$this->section}_categories");
         $catrow['link'] = gallery_createCategoryLink($this->params['idcat'], $this->section);
         $this->Assign("category", $catrow);
     }
     switch ($this->params['sort']) {
         default:
         case 1:
             $sort = "date DESC";
             break;
         case 2:
             $sort = "date";
             break;
         case 3:
             $sort = "name";
             break;
         case 4:
             $sort = "sort";
             break;
         case 5:
             $sort = "RAND()";
             break;
     }
     $sql = "\r\r\n\tSELECT *,svote/cvote AS vote FROM {$this->section}_albums\r\r\n\tWHERE active='Y'" . ($this->params['idcat'] ? " AND idcat={$this->params['idcat']}" : "") . (!empty($this->params['filter']) ? " AND {$this->params['filter']}" : "") . "\r\r\n\tORDER BY {$sort}";
     if ($this->params['rows']) {
         A::$DB->queryLimit($sql, 0, $this->params['rows']);
     } else {
         A::$DB->query($sql);
     }
     $albums = array();
     while ($row = A::$DB->fetchRow()) {
         $row['category'] = getTreePath($this->section . "_categories", $row['idcat']);
         $row['link'] = gallery_createItemLink($row['id'], $this->section);
         $row['vote'] = round($row['vote'], 2);
         $row['images'] = A::$DB->getAll("\r\r\n\t  SELECT * FROM " . getDomain($this->section) . "_images\r\r\n\t  WHERE idsec=? AND iditem=? ORDER BY sort", array($this->section_id, $row['id']));
         if ($this->options['usetags']) {
             $row['tags'] = A_SearchEngine::getInstance()->convertTags($row['tags']);
         }
         prepareValues($this->section, $row);
         $row = A::$OBSERVER->Modifier('gallery_prepareValues', $this->section, $row);
         $albums[] = $row;
     }
     A::$DB->free();
     $this->Assign("albums", $albums);
 }
Beispiel #3
0
 /**
  * Формирование данных доступных в шаблоне страницы альбома.
  */
 function AlbumPage()
 {
     $this->supportCached();
     $this->addCacheParam_Get('page');
     if ($this->idcat > 0) {
         $this->category['link'] = gallery_createCategoryLink($this->category['id'], SECTION);
         if (A::$OPTIONS['usetags']) {
             $this->category['tags'] = A_SearchEngine::getInstance()->convertTags($this->category['tags']);
         }
         $this->Assign("category", $this->category);
     }
     $album = $this->album;
     $album['vote'] = $album['cvote'] > 0 ? round($album['svote'] / $album['cvote'], 2) : 0;
     $album['images'] = A::$DB->getAll("SELECT * FROM " . DOMAIN . "_images WHERE idsec=? AND iditem=? ORDER BY sort", array(SECTION_ID, $album['id']));
     if (A::$OPTIONS['usetags']) {
         $album['tags'] = A_SearchEngine::getInstance()->convertTags($album['tags']);
     }
     prepareValues(SECTION, $album);
     $album = A::$OBSERVER->Modifier('gallery_prepareValues', SECTION, $album);
     $this->Assign("album", $album);
     $irows = (int) (!empty($_GET['irows'])) ? (int) $_GET['irows'] : A::$OPTIONS['irows'];
     $this->Assign("irows", $irows);
     $pager = new A_Pager($irows);
     $images = $pager->setItems($album['images']);
     $this->Assign("images", $images);
     $this->Assign("images_pager", $pager);
     $sort = escape_order_string(!empty(A::$OPTIONS['mysort']) ? A::$OPTIONS['mysort'] : A::$OPTIONS['sort']);
     $albums = A::$DB->getCol("\r\r\n\tSELECT id FROM " . SECTION . "_albums\r\r\n\tWHERE active='Y' AND idcat={$album['idcat']} ORDER BY {$sort}");
     $i = array_search($album['id'], $albums);
     if ($i !== false) {
         $previd = isset($albums[$i - 1]) ? $albums[$i - 1] : 0;
         $nextid = isset($albums[$i + 1]) ? $albums[$i + 1] : 0;
         if ($previd) {
             $this->Assign("prevalbum", gallery_createItemLink($previd, SECTION));
         }
         if ($nextid) {
             $this->Assign("nextalbum", gallery_createItemLink($nextid, SECTION));
         }
     }
     if (A::$OPTIONS['usecomments']) {
         $comments = array();
         A::$DB->query("SELECT * FROM " . DOMAIN . "_comments WHERE idsec=" . SECTION_ID . " AND iditem={$this->idalb} AND active='Y' ORDER BY date");
         while ($row = A::$DB->fetchRow()) {
             if ($row['iduser'] > 0 && A::$AUTH->section) {
                 if ($row['user'] = A::$DB->getRowById($row['iduser'], A::$AUTH->section)) {
                     prepareValues(A::$AUTH->section, $row['user']);
                 }
             }
             $comments[] = $row;
         }
         A::$DB->free();
         $this->Assign("comments", $comments);
         $form = array();
         $form['name'] = !empty($_REQUEST['name']) ? $_REQUEST['name'] : (A::$AUTH->isLogin() ? A::$AUTH->data['name'] : "");
         $form['message'] = !empty($_REQUEST['message']) ? $_REQUEST['message'] : "";
         $this->Assign("form", $form);
         $this->Assign("captcha", $captcha = substr(time(), rand(0, 6), 4));
         A_Session::set("captcha", md5($captcha));
     }
     if (A::$OPTIONS['usevote']) {
         $this->Assign("isvote", A_Session::get(SECTION . "_vote_" . $this->idalb, false));
         $this->addCacheParam_Session(SECTION . "_vote_" . $this->idalb);
     }
     $this->AddNavigation(SECTION_NAME, getSectionLink(SECTION));
     if (isset($this->category)) {
         $this->AddNavCategories($this->category['id']);
     }
     $this->title = $this->album['name'] . (!empty($this->title) ? " - " . $this->title : "");
     $this->description = $this->album['description'];
 }
Beispiel #4
0
 /**
  * Формирование данных доступных в шаблоне.
  */
 function createData()
 {
     $categories = A::$DB->getAll("SELECT id,idker,name FROM " . SECTION . "_categories ORDER BY level,sort");
     $this->Assign("categories", $categories);
     if (!empty($_GET['idcat'])) {
         $this->Assign("category", A::$DB->getRowById($_GET['idcat'], SECTION . "_categories"));
         $idcat = (int) $_GET['idcat'];
         $childcats = array($idcat);
         getTreeSubItems(SECTION . "_categories", $idcat, $childcats);
         $where = "c.idcat IN(" . implode(",", $childcats) . ")";
         $this->Assign("childcats", $childcats = count($childcats));
     } else {
         $where = "";
     }
     $rows = (int) A_Session::get(SECTION . "_rows", isset($_COOKIE[SECTION . '_rows']) ? $_COOKIE[SECTION . '_rows'] : 20);
     $sort = escape_order_string(A_Session::get(SECTION . "_sort", isset($_COOKIE[SECTION . '_sort']) ? $_COOKIE[SECTION . '_sort'] : A::$OPTIONS['sort']));
     $items = array();
     $pager = new A_Pager($rows);
     $pager->tab = "albums";
     $pager->query("\r\r\n\tSELECT c.*,c.svote/c.cvote AS vote,cc.name AS category\r\r\n\tFROM " . SECTION . "_albums AS c\r\r\n\tLEFT JOIN " . SECTION . "_categories AS cc ON cc.id=c.idcat\r\r\n\t" . (!empty($where) ? " WHERE {$where}" : "") . "\r\r\n\tORDER BY {$sort}");
     while ($row = $pager->fetchRow()) {
         $row['link'] = gallery_createItemLink($row['id'], SECTION);
         $row['cimages'] = A::$DB->getCount(DOMAIN . "_images", "idsec=" . SECTION_ID . " AND iditem=" . $row['id']);
         $row['vote'] = round($row['vote'], 2);
         $row['tags'] = A_SearchEngine::getInstance()->convertTags($row['tags']);
         if (empty($_GET['idcat']) || $childcats > 1) {
             $row['catpath'] = getTreePath(SECTION . "_categories", $row['idcat']);
         }
         $items[] = $row;
     }
     $pager->free();
     $this->Assign("items", $items);
     $this->Assign("items_pager", $pager);
     if (!empty($_GET['idalb'])) {
         $_GET['idalb'] = (int) $_GET['idalb'];
         $this->Assign("album", A::$DB->getRowById($_GET['idalb'], SECTION . "_albums"));
         $images = A::$DB->getAll("\r\r\n\t  SELECT * FROM " . DOMAIN . "_images\r\r\n\t  WHERE idsec=" . SECTION_ID . " AND iditem=" . $_GET['idalb'] . "\r\r\n\t  ORDER BY sort");
         $this->Assign("images", $images);
     }
     $this->Assign("treebox", new A_CategoriesTree("albums"));
     if (A::$OPTIONS['usecomments']) {
         $this->Assign("commbox", new A_CommentsEditor(SECTION . "_albums"));
     }
     $this->Assign("optbox1", new A_OptionsBox("Внешний вид на сайте:", array('idgroup' => 1)));
     $this->Assign("optbox2", new A_OptionsBox("Фото:", array('idgroup' => 2)));
     $this->Assign("optbox3", new A_OptionsBox("Комментирование и голосование:", array('idgroup' => 3)));
     $this->Assign("optbox4", new A_OptionsBox("Дополнительно:", array('idgroup' => 4)));
     $this->Assign("fieldsbox", new A_FieldsEditor(SECTION . "_albums", array('tab' => 'opt', 'tab_opt' => 'fields')));
     $this->Assign("rows", $rows);
     $this->Assign("sort", $sort);
 }
Beispiel #5
0
/**
 * Получение полных данных записи альбома.
 *
 * @param integer $id Идентификатор альбома.
 * @param string $section Полный строковой идентификатор раздела.
 * @param integer $idsec=0 Числовой идентификатор раздела.
 * @return array
 */
function gallery_getItem($id, $section, $idsec = 0)
{
    static $cache = array();
    if (isset($cache[$section][$id])) {
        return $cache[$section][$id];
    }
    if ($row = A::$DB->getRow("SELECT * FROM {$section}_albums WHERE id=?i AND active='Y'", $id)) {
        if (!$idsec) {
            $idsec = getSectionId($section);
        }
        $row['link'] = gallery_createItemLink($row['id'], $section);
        $row['vote'] = round($row['vote'], 2);
        if ($row['idcat'] > 0) {
            $row['category'] = getTreePath("{$section}_categories", $row['idcat']);
        }
        $row['images'] = A::$DB->getAll("SELECT * FROM " . A::$DOMAIN . "_images WHERE idsec=? AND iditem=? ORDER BY sort", array($idsec, $row['id']));
        $row['tags'] = A_SearchEngine::getInstance()->convertTags($row['tags']);
        prepareValues($section, $row);
        $row = A::$OBSERVER->Modifier('gallery_prepareValues', $section, $row);
        return $cache[$section][$id] = $row;
    } else {
        return $cache[$section][$id] = false;
    }
}