Forums / Developer / class and attribute filtering

class and attribute filtering

Author Message

Jean-Luc Chassaing

Wednesday 04 February 2009 6:26:16 am

Hello,

Let me try to turn that simple way ..

I've made multiple classes witch are copies of the Folder class. That means they all have the same attribute names.

Now I want to fetch objects of different classes and make an attribute filtering.

The problem is that attribute filtering can only be done on objects of the same class. Is there a tricky way to manage that or have I to build an extended attribute filter ?

Thank you.

Jean-Luc Chassaing

Thursday 05 February 2009 2:06:17 am

I found a solution and would like to have your opinion.

My problem deals with the inheritance between classes. So I solved it by using an extended attribute filter.

Here is the code for this filter :

class eZMultiClassAttributeFilter
{
	/**
	 * Constructor
	 *
	 */
	function __construct()
	{
	
	}
	
	public function filterAttributes($params)
	{
		$sqlJoins = "";
		
		$subrequest = array();
		
		$attribId = '(';
		foreach ( $params as $key => $sort )
		{
			if ($key > 0)
			{
				$attribId .= ',';
			}
			if (! is_numeric( $sort[0] ))
			{
				$attribId .= eZContentObjectTreeNode::classAttributeIDByIdentifier( $sort[0] );
			} else
			{
				$attribId .= $sort[0];
			}
		}
		$attribId .= ')';
		
		$subrequest = "SELECT attr.contentobject_id 
					   FROM ezcontentobject_attribute as attr, ezcontentobject as obj
					   WHERE obj.id = attr.contentobject_id 
					   AND attr.version = obj.current_version 
					   AND attr.contentclassattribute_id in $attribId 
					   AND attr.data_int = 0 ";
		
		$sqlJoins .= " ezcontentobject.id in (" . $subrequest . ") AND";
		
		return array('tables' => '', 'joins' => $sqlJoins, 'colums' => '' );
	}

}

it would need some more improvements on the attribute filtering but this solution solved my problem.

eZ debug

Timing: Jan 18 2025 16:16:25
Script start
Timing: Jan 18 2025 16:16:25
Module start 'content'
Timing: Jan 18 2025 16:16:25
Module end 'content'
Timing: Jan 18 2025 16:16:26
Script end

Main resources:

Total runtime0.7887 sec
Peak memory usage4,096.0000 KB
Database Queries189

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0063 588.8281180.8359
Module start 'content' 0.00630.6816 769.6641467.5703
Module end 'content' 0.68790.1008 1,237.2344333.0625
Script end 0.7887  1,570.2969 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00380.4857210.0002
Check MTime0.00140.1748210.0001
Mysql Total
Database connection0.00080.100210.0008
Mysqli_queries0.730192.56011890.0039
Looping result0.00160.19711870.0000
Template Total0.764296.920.3821
Template load0.00170.219720.0009
Template processing0.762596.672320.3812
Template load and register function0.00020.025110.0002
states
state_id_array0.00080.107610.0008
state_identifier_array0.00070.084320.0003
Override
Cache load0.00140.1788170.0001
Sytem overhead
Fetch class attribute can translate value0.00120.154620.0006
Fetch class attribute name0.00210.266930.0007
XML
Image XML parsing0.00220.282620.0011
class_abstraction
Instantiating content class attribute0.00000.001440.0000
General
dbfile0.00320.4018270.0001
String conversion0.00000.000830.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
2content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
2content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
3content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
1content/datatype/view/ezxmltags/literal.tpl<No override>extension/community/design/standard/templates/content/datatype/view/ezxmltags/literal.tplEdit templateOverride template
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 10
 Number of unique templates used: 6

Time used to render debug report: 0.0001 secs