Solution: Adding related object programmatic

« 
Previous article
|
|

Question

How to add related object programmatically ...

Answer

To add a list of object as an object relation through CLI, this code is not perfect and may remove any existing object relations you have.

Example

Here is an example eZ Publish PHP CLI Script which shows how to use this feature.

<?php
/**
 * tmp
 *
 * @package tmp
 * @author Olav Frengstad <olav.frengstad@07.no>
 */
require_once 'autoload.php';

$cli = eZCLI::instance();

$script = eZScript::instance( array(
        'description' => 'test script',
        'use-modules' => true,
        'use-extensions' => true,
) );

$script->startup();

$config = $argumentConfig = '';

$optionHelp = $arguments = false;
$useStandardOptions = array(
        'user'          => true,
        'siteaccess'    => true,
);
$options = $script->getOptions(
        $config,
        $argumentConfig,
        $optionHelp,
        $arguments,
        $useStandardOptions
);

$script->initialize();

$user = eZUser::fetchByName('admin');
if ( !$user )
{
        $user = eZUser::currentUser();
}

$rel = array(153);
$object = eZContentObject::fetch( 154 );

$object->appendInputRelationList( $rel,eZContentObject::RELATION_LINK );
$object->commitInputRelations($object->CurrentVersion);
$object->store();

$script->shutdown();

To run it save the file in your ez directory (preferably put it in an extension) and call it:

$ php relation.php --siteaccess <your-siteaccess-name>