concrete/src/Area/Area.php
public function getTotalBlocksInArea($c = false)
    {
        if (!$c) {
            $c = $this->c;
        }

        // exclude the area layout proxy block from counting.
        $this->load($c);
        $db = Database::connection();
        $r = $db->fetchColumn(
            'select count(b.bID) from CollectionVersionBlocks cvb inner join Blocks b on cvb.bID = b.bID inner join BlockTypes bt on b.btID = bt.btID where cID = ? and cvID = ? and arHandle = ? and btHandle <> ?',
            array($c->getCollectionID(), $c->getVersionID(), $this->arHandle, BLOCK_HANDLE_LAYOUT_PROXY)
        );

        // now grab sub-blocks.
        // NOTE: this will only traverse one level. Deal with it.
        $arHandles = $db->GetCol('select arHandle from Areas where arParentID = ?', array($this->arID));
        if (is_array($arHandles) && count($arHandles) > 0) {
            $v = array($c->getCollectionID(), $c->getVersionID());
            $q = 'select count(bID) from CollectionVersionBlocks where cID = ? and cvID = ? and arHandle in (';
            for ($i = 0; $i < count($arHandles); ++$i) {
                $arHandle = $arHandles[$i];
                $v[] = $arHandle;
                $q .= '?';
                if (($i + 1) < count($arHandles)) {
                    $q .= ',';
                }
            }
            $q .= ')';
            $sr = $db->fetchColumn($q, $v);
            $r += $sr;
        }

        return (int) $r;
    }
public function getTotalBlocksInArea($c = false)
    {
        if (!$c) {
            $c = $this->c;
        }

        // exclude the area layout proxy block from counting.
        $this->load($c);
        $db = Database::connection();
        $r = $db->fetchColumn(
            'select count(b.bID) from CollectionVersionBlocks cvb inner join Blocks b on cvb.bID = b.bID inner join BlockTypes bt on b.btID = bt.btID where cID = ? and cvID = ? and arHandle = ? and btHandle <> ?',
            array($c->getCollectionID(), $c->getVersionID(), $this->arHandle, BLOCK_HANDLE_LAYOUT_PROXY)
        );

        // now grab sub-blocks.
        // NOTE: this will only traverse one level. Deal with it.
        $arHandles = $db->GetCol('select arHandle from Areas where arParentID = ?', array($this->arID));
        if (is_array($arHandles) && count($arHandles) > 0) {
            $v = array($c->getCollectionID(), $c->getVersionID());
            $q = 'select count(bID) from CollectionVersionBlocks where cID = ? and cvID = ? and arHandle in (';
            for ($i = 0; $i < count($arHandles); ++$i) {
                $arHandle = $arHandles[$i];
                $v[] = $arHandle;
                $q .= '?';
                if (($i + 1) < count($arHandles)) {
                    $q .= ',';
                }
            }
            $q .= ')';
            $sr = $db->fetchColumn($q, $v);
            $r += $sr;
        }

        return (int) $r;
    }
public function getTotalBlocksInArea ( $ c = false ) { if ( ! $ c ) { $ c = $ this -> c ; } // exclude the area layout proxy block from counting. $ this -> load ( $ c ) ; $ db = Database :: connection ( ) ; $ r = $ db -> fetchColumn ( 'select count(b.bID) from CollectionVersionBlocks cvb inner join Blocks b on cvb.bID = b.bID inner join BlockTypes bt on b.btID = bt.btID where cID = ? and cvID = ? and arHandle = ? and btHandle <> ?' , array ( $ c -> getCollectionID ( ) , $ c -> getVersionID ( ) , $ this -> arHandle , BLOCK_HANDLE_LAYOUT_PROXY ) ) ; // now grab sub-blocks. // NOTE: this will only traverse one level. Deal with it. $ arHandles = $ db -> GetCol ( 'select arHandle from Areas where arParentID = ?' , array ( $ this -> arID ) ) ; if ( is_array ( $ arHandles ) && count ( $ arHandles ) > 0 ) { $ v = array ( $ c -> getCollectionID ( ) , $ c -> getVersionID ( ) ) ; $ q = 'select count(bID) from CollectionVersionBlocks where cID = ? and cvID = ? and arHandle in (' ; for ( $ i = 0 ; $ i < count ( $ arHandles ) ; ++ $ i ) { $ arHandle = $ arHandles [ $ i ] ; $ v [ ] = $ arHandle ; $ q .= '?' ; if ( ( $ i + 1 ) < count ( $ arHandles ) ) { $ q .= ',' ; } } $ q .= ')' ; $ sr = $ db -> fetchColumn ( $ q , $ v ) ; $ r += $ sr ; } return ( int ) $ r ; }
Returns the total number of blocks in an area.

@param Page $c must be passed if the display() method has not been run on the area object yet.
@return int
Returns the total number of blocks in an area .