/** * Sets the default values in class attribute * * @param eZContentClassAttribute $classAttribute */ function initializeClassAttribute( $classAttribute ) { if ( $classAttribute->attribute( self::DEFAULT_ZONE_LAYOUT_FIELD ) === null ) $classAttribute->setAttribute( self::DEFAULT_ZONE_LAYOUT_FIELD, '' ); $classAttribute->store(); }
/** * test for getFieldName() */ public function testGetFieldName() { $providerArray = array(); $ezcca1 = new eZContentClassAttribute(array('identifier' => 'title', 'data_type_string' => 'ezstring')); $expected1 = ezfSolrDocumentFieldBase::ATTR_FIELD_PREFIX . 'title_t'; $providerArray[] = array($expected1, $ezcca1, null); // Testing the default subattribute $ezcca2 = new eZContentClassAttribute(array('identifier' => 'dummy', 'data_type_string' => 'dummy_example')); $expected2 = ezfSolrDocumentFieldBase::ATTR_FIELD_PREFIX . 'dummy_t'; $providerArray[] = array($expected2, $ezcca2, null); //Testing the class/attribute/subattribute syntax, with the secondary subattribute of // the 'dummy' datatype $ezcca3 = $ezcca2; $expected3 = ezfSolrDocumentFieldBase::SUBATTR_FIELD_PREFIX . 'dummy-subattribute1_i'; $options3 = 'subattribute1'; $providerArray[] = array($expected3, $ezcca3, $options3); //Testing the class/attribute/subattribute syntax, with the default subattribute of // the 'dummy' datatype $ezcca5 = $ezcca2; $expected5 = ezfSolrDocumentFieldBase::ATTR_FIELD_PREFIX . 'dummy_t'; $options5 = 'subattribute2'; $providerArray[] = array($expected5, $ezcca5, $options5); //Testing the class/attribute/subattribute syntax for ezobjectrelation attributes $time4 = time(); $image4 = new ezpObject("image", 2); $image4->name = __METHOD__ . $time4; $image4->caption = __METHOD__ . $time4; $imageId4 = $image4->publish(); $srcObjId4 = 123456; $ezcca4 = new eZContentClassAttribute(array('id' => $time4, 'identifier' => 'image', 'data_type_string' => 'ezobjectrelation', 'data_int' => $imageId4)); $ezcca4->store(); //Create entry in ezcontentobject_link $q4 = "INSERT INTO ezcontentobject_link VALUES( {$ezcca4->attribute('id')}, {$srcObjId4}, 1, 123456, 0, 8, {$imageId4} );"; eZDB::instance()->query($q4); $expected4 = ezfSolrDocumentFieldBase::SUBATTR_FIELD_PREFIX . 'image-name_t'; $options4 = 'name'; $providerArray[] = array($expected4, $ezcca4, $options4); // Testing the class/attribute/subattribute syntax for ezobjectrelation attributes, with a subattribute of // a different type than the default Solr type : $ezcca5 = $ezcca4; $expected5 = ezfSolrDocumentFieldBase::SUBATTR_FIELD_PREFIX . 'image-caption_t'; $options5 = 'caption'; $providerArray[] = array($expected5, $ezcca5, $options5); // perform actual testing foreach ($providerArray as $input) { $expected = $input[0]; $contentClassAttribute = $input[1]; $options = $input[2]; self::assertEquals($expected, ezfSolrDocumentFieldBase::getFieldName($contentClassAttribute, $options)); } }
/** * Initializes the content class attribute * * @param eZContentClassAttribute $classAttribute */ public function initializeClassAttribute($classAttribute) { if ($classAttribute->attribute(self::SUBTREE_LIMIT_FIELD) === null) { $classAttribute->setAttribute(self::SUBTREE_LIMIT_FIELD, 0); } if ($classAttribute->attribute(self::SHOW_DROPDOWN_FIELD) === null) { $classAttribute->setAttribute(self::SHOW_DROPDOWN_FIELD, 0); } if ($classAttribute->attribute(self::HIDE_ROOT_TAG_FIELD) === null) { $classAttribute->setAttribute(self::HIDE_ROOT_TAG_FIELD, 0); } if ($classAttribute->attribute(self::MAX_TAGS_FIELD) === null) { $classAttribute->setAttribute(self::MAX_TAGS_FIELD, 0); } $classAttribute->store(); }
/** * Executes a custom action for a class attribute which was defined on the web page. * * @param eZHTTPTool $http * @param string $action * @param eZContentClassAttribute $classAttribute */ public function customClassAttributeHTTPAction($http, $action, $classAttribute) { $id = $classAttribute->attribute('id'); $base = "ContentClass"; $content = $classAttribute->content(); $customActionVarName = "CustomActionButton"; $customActionKeyName = "{$id}_{$action}"; $idArrayName = join('_', array($base, 'sckenhancedselection_id', $id)); $idArray = array(); if ($http->hasPostVariable($idArrayName)) { $idArray = $http->postVariable($idArrayName); } switch ($action) { case 'new_option': $maxID = 0; foreach ($content['options'] as $option) { if (intval($option['id']) > $maxID) { $maxID = intval($option['id']); } } $maxID++; $content['options'][] = array('id' => $maxID, 'name' => '', 'identifier' => '', 'priority' => 1); break; case 'remove_optionlist': $removeArrayName = join('_', array($base, "sckenhancedselection_remove", $id)); if ($http->hasPostVariable($removeArrayName)) { $removeArray = $http->postVariable($removeArrayName); foreach ($removeArray as $removeID) { unset($idArray[$removeID]); unset($content['options'][$removeID]); } } break; case 'move_up': $customActionVar = $http->postVariable($customActionVarName); // This is where the user clicked $customActionValue = $customActionVar[$customActionKeyName]; // Up == swap selected row with the one above // Or: Move the row above below the selected one $this->swapRows($customActionValue - 1, $customActionValue, $content, $idArray); break; case 'move_down': $customActionVar = $http->postVariable($customActionVarName); // This is where the user clicked $customActionValue = $customActionVar[$customActionKeyName]; // Down == swap selected row with the one below // Or: Move the selected row below the one below $this->swapRows($customActionValue, $customActionValue + 1, $content, $idArray); break; case 'sort_optionlist': $sortName = join('_', array($base, 'sckenhancedselection_sort_order', $id)); if ($http->hasPostVariable($sortName)) { $sort = $http->postVariable($sortName); $sortArray = array(); $sortOrder = SORT_ASC; $sortType = SORT_STRING; $numericSorts = array('prior'); if (strpos($sort, '_') !== false) { list($type, $ranking) = explode('_', $sort); $currentOptions = $content['options']; if ($ranking === 'desc') { $sortOrder = SORT_DESC; } if (in_array($type, $numericSorts)) { $sortType = SORT_NUMERIC; } // Use POST priorities instead of the stored ones // Otherwise you have to store new priorities before you can sort $priorityArray = array(); if ($type == 'prior') { $priorityArray = $http->postVariable(join('_', array($base, 'sckenhancedselection_priority', $id))); } foreach (array_keys($currentOptions) as $key) { $option = $currentOptions[$key]; switch ($type) { case 'prior': if (isset($priorityArray[$option['id']])) { $option['priority'] = $priorityArray[$option['id']]; } $sortArray[] = $option['priority']; break; case 'alpha': default: $sortArray[] = $option['name']; break; } unset($option); } array_multisort($sortArray, $sortOrder, $sortType, $currentOptions); $idArray = array(); foreach ($currentOptions as $option) { $idArray[] = $option['id']; } $content['options'] = $currentOptions; } else { eZDebug::writeError("Unknown sort value. Please use the form type_order (ex. alpha_asc)", "SckEnhancedSelectionType"); } } break; default: eZDebug::writeError("Unknown class HTTP action: {$action}", "SckEnhancedSelectionType"); } $classAttribute->setContent($content); $classAttribute->store(); $http->setPostVariable($idArrayName, $idArray); }