Ejemplo n.º 1
0
 function deleteStoredObjectAttribute($contentObjectAttribute, $version = null)
 {
     $contentObjectAttributeID = $contentObjectAttribute->attribute("id");
     $db = eZDB::instance();
     /* First we remove the link between the keyword and the object
      * attribute to be removed */
     if ($version == null) {
         eZPersistentObject::removeObject(eZURLObjectLink::definition(), array('contentobject_attribute_id' => $contentObjectAttributeID));
     } else {
         eZPersistentObject::removeObject(eZURLObjectLink::definition(), array('contentobject_attribute_id' => $contentObjectAttributeID, 'contentobject_attribute_version' => $version));
     }
     /* Here we figure out which which URLs are not in use at all */
     if ($db->databaseName() == 'oracle') {
         $res = $db->arrayQuery("SELECT DISTINCT id\n                                     FROM ezurl, ezurl_object_link\n                                     WHERE ezurl.id = ezurl_object_link.url_id(+)\n                                         AND url_id IS NULL");
     } else {
         $res = $db->arrayQuery(" SELECT DISTINCT id\n                                     FROM ezurl LEFT JOIN ezurl_object_link ON (ezurl.id  = ezurl_object_link.url_id)\n                                     WHERE url_id IS NULL");
     }
     /* And if there are some, we delete them */
     if (count($res)) {
         $unusedUrlIDs = array();
         foreach ($res as $record) {
             $unusedUrlIDs[] = $record['id'];
         }
         $unusedUrlIDString = implode(', ', $unusedUrlIDs);
         $db->query("DELETE FROM ezurl WHERE id IN ({$unusedUrlIDString})");
     }
 }
Ejemplo n.º 2
0
    static function handleList( $parameters = array(), $asCount = false )
    {
        $parameters = array_merge( array( 'as_object' => true,
                                          'is_valid' => null,
                                          'offset' => false,
                                          'limit' => false,
                                          'only_published' => false ),
                                   $parameters );
        $asObject = $parameters['as_object'];
        $isValid = $parameters['is_valid'];
        $offset = $parameters['offset'];
        $limit = $parameters['limit'];
        $onlyPublished = $parameters['only_published'];
        $limitArray = null;
        if ( !$asCount and $offset !== false and $limit !== false )
            $limitArray = array( 'offset' => $offset,
                                 'length' => $limit );
        $conditions = array();
        if( $isValid === false ) $isValid = 0;
        if ( $isValid !== null )
        {
            $conditions['is_valid'] = $isValid;
        }
        if ( count( $conditions ) == 0 )
            $conditions = null;

        if ( $onlyPublished )  // Only fetch published urls
        {
            $conditionQuery = "";
            if ( $isValid !== null )
            {
                $isValid = (int) $isValid;
                $conditionQuery = " AND ezurl.is_valid=$isValid ";
            }
            $db = eZDB::instance();
            $cObjAttrVersionColumn = eZPersistentObject::getShortAttributeName( $db, eZURLObjectLink::definition(), 'contentobject_attribute_version' );

            if ( $asCount )
            {
                $urls = $db->arrayQuery( "SELECT count( DISTINCT ezurl.id ) AS count
                                            FROM
                                                 ezurl,
                                                 ezurl_object_link,
                                                 ezcontentobject_attribute,
                                                 ezcontentobject_version
                                            WHERE
                                                 ezurl.id                                     = ezurl_object_link.url_id
                                             AND ezurl_object_link.contentobject_attribute_id = ezcontentobject_attribute.id
                                             AND ezurl_object_link.$cObjAttrVersionColumn     = ezcontentobject_attribute.version
                                             AND ezcontentobject_attribute.contentobject_id   = ezcontentobject_version.contentobject_id
                                             AND ezcontentobject_attribute.version            = ezcontentobject_version.version
                                             AND ezcontentobject_version.status               = " . eZContentObjectVersion::STATUS_PUBLISHED . "
                                                 $conditionQuery" );
                return $urls[0]['count'];
            }
            else
            {
                $query = "SELECT DISTINCT ezurl.*
                            FROM
                                  ezurl,
                                  ezurl_object_link,
                                  ezcontentobject_attribute,
                                  ezcontentobject_version
                            WHERE
                                  ezurl.id                                     = ezurl_object_link.url_id
                              AND ezurl_object_link.contentobject_attribute_id = ezcontentobject_attribute.id
                              AND ezurl_object_link.$cObjAttrVersionColumn     = ezcontentobject_attribute.version
                              AND ezcontentobject_attribute.contentobject_id   = ezcontentobject_version.contentobject_id
                              AND ezcontentobject_attribute.version            = ezcontentobject_version.version
                              AND ezcontentobject_version.status               = " . eZContentObjectVersion::STATUS_PUBLISHED . "
                             $conditionQuery";

                if ( !$offset && !$limit )
                {
                    $urlArray = $db->arrayQuery( $query );
                }
                else
                {
                    $urlArray = $db->arrayQuery( $query, array( 'offset' => $offset,
                                                                 'limit'  => $limit ) );
                }
                if ( $asObject )
                {
                    $urls = array();
                    foreach ( $urlArray as $url )
                    {
                        $urls[] = new eZURL( $url );
                    }
                    return $urls;
                }
                else
                    $urls = $urlArray;
                return $urls;
            }
        }
        else
        {
            if ( $asCount )
            {
                $urls = eZPersistentObject::fetchObjectList( eZURL::definition(),
                                                             array(),
                                                             $conditions,
                                                             false,
                                                             null,
                                                             false,
                                                             false,
                                                             array( array( 'operation' => 'count( id )',
                                                                           'name' => 'count' ) ) );
                return $urls[0]['count'];
            }
            else
            {
                return eZPersistentObject::fetchObjectList( eZURL::definition(),
                                                            null, $conditions, null, $limitArray,
                                                            $asObject );
            }
        }
    }
Ejemplo n.º 3
0
 static function clearCacheForObjectLink($urlID)
 {
     $urlObjectLinkList = eZPersistentObject::fetchObjectList(eZURLObjectLink::definition(), null, array('url_id' => $urlID), null, null, true);
     foreach ($urlObjectLinkList as $urlObjectLink) {
         $objectAttributeID = $urlObjectLink->attribute('contentobject_attribute_id');
         $objectAttributeVersion = $urlObjectLink->attribute('contentobject_attribute_version');
         $objectAttribute = eZContentObjectAttribute::fetch($objectAttributeID, $objectAttributeVersion);
         if ($objectAttribute) {
             $objectID = $objectAttribute->attribute('contentobject_id');
             $objectVersion = $objectAttribute->attribute('version');
             eZContentCacheManager::clearContentCacheIfNeeded($objectID, $objectVersion);
         }
     }
 }