kuz cous
|
Friday 17 August 2007 1:50:03 am
Hello,
I have a little problem. I need to import many objects from a csv file. My object class look like this :
- First Name : text line
- Last Name : text line
- User Account : User Account - Some other attributes : Enhanced Object Relation
I got no problem to add the first three attributes but I have no idea how to implement the Enhanced Object Relation attribute via Php. Here is the code I use to add my objects from a csv file.
#!/usr/bin/env php
<?php
/* Include required files */
include_once( "lib/ezutils/classes/ezextension.php" );
include_once( "lib/ezutils/classes/ezmodule.php" );
include_once( 'lib/ezutils/classes/ezcli.php' );
include_once( 'kernel/classes/ezscript.php' );
include_once( 'lib/ezutils/classes/ezexecution.php' );
include_once( 'kernel/classes/ezcontentobjecttreenode.php' );
include_once( 'kernel/classes/eznodeassignment.php' );
include_once( "lib/ezutils/classes/ezoperationhandler.php");
include_once( "kernel/classes/datatypes/ezuser/ezuser.php" );
include_once( 'kernel/classes/datatypes/ezuser/ezusersetting.php' );
/* Start up the eZ CLI enviorment that make the script work correct */
$cli =& eZCLI::instance();
$script =& eZScript::instance( array( 'debug-message' => '',
'use-session' => false,
'use-modules' => true,
'use-extensions' => true ) );
$script->startup();
$endl = $cli->endlineString();
$script->initialize();
$fp = fopen('c:\\Downloads\\test.csv', 'r');
while ($row = fgetcsv($fp, 1000, ';'))
{
$Users[] = array( 'nom' => trim( array_shift( $row ) ),
'prenom' => trim( array_shift( $row ) ),
'entite' => trim( array_shift( $row ) ),
'crd' => trim( array_shift( $row ) ),
'labo' => trim( array_shift( $row ) ),
'location' => trim( array_shift( $row ) ),
'profession' => trim( array_shift( $row ) ),
'diplome' => trim( array_shift( $row ) ),
'domaines' => trim( array_shift( $row ) ),
'ref_exp' => trim( array_shift( $row ) ),
'email' => trim( array_shift( $row ) ),
'tel' => trim( array_shift( $row ) )
);
}
fclose( $fp );
foreach ( $Users as $i => $User )
{
$class =& eZContentClass::fetch( 65 );
$contentObject =& $class->instantiate( 14, 1);
$contentObjectID = $contentObject->attribute( 'id' );
$nodeAssignment =& eZNodeAssignment::create( array(
'contentobject_id' => $contentObject->attribute( 'id' ),
'contentobject_version' => 1,
'parent_node' => 72,
'is_main' => 1
)
);
$nodeAssignment->store();
/* Add data to the eZ object */
$ContentObjectAttributes =& $contentObject->attribute('data_map');
//Nom (Last Name)
$nom = $ContentObjectAttributes['nom'];
$nom->setAttribute("data_text", utf8_encode($Users[$i]['nom']));
$nom->store();
//Prenom (First Name)
$prenom = $ContentObjectAttributes['prenom'];
$prenom->setAttribute("data_text", utf8_encode($Users[$i]['prenom']));
$prenom->store();
//Login
$userID = $contentObjectID;
$user =& new eZUser( $userID );
$login_gen = create_login($Users[$i]['nom'],$Users[$i]['prenom']);
$password = "user";
$user->setInformation( $userID, $login_gen, $Users[$i]['email'],$password, $password );
$isEnabled = 1;
$userSetting =& eZUserSetting::create( $userID, $isEnabled );
$userSetting->store();
$user->store();
//telephone (phone)
$tel=$ContentObjectAttributes['telephone'];
$tel->setAttribute("data_text", $Users[$i]['tel']);
$tel->store();
//entite - enhanced object relation
/* Part to add an enhanced object relation attribute*/
/* Publish the new eZ object */
$operationResult = eZOperationHandler::execute( 'content', 'publish',&
array(
'object_id' => $contentObject->attribute( 'id' ),
'version' => $contentObject->attribute('current_version' ) ) );
/* End the eZ CLI enviorment*/
$cli->output( "User added : ".$Users[$i]['nom']." ".$Users[$i]['prenom'] );
}
$script->shutdown();
function create_login($nom, $prenom)
{
$login = strtolower($prenom{0}).strtolower(str_replace(' ','',$nom));
return $login;
}
?>
All is working fine with that code but now I want to add the other attributes and I have no idea on how to do that.
I found this thread : http://ez.no/community/forum/developer/fantastic_csv_import_extension_who_owns_it/re_fantastic_csv_import_extension_who_owns_it__18
where Felipe Jaramillo talks about the importing of ezenhancedobjectrelation data types.
Few post later, he provides a small code to implement this data type but I think it's missing something.
I want to know if someone has already succeed to add an ezenhancedobjectrelation data type in php? If not, how could I do that ? I need to add a ezenhancedobjectrelation class like for the User Account attribute, and use the ezenhancedobjectrelation functions to create the attribute ? And sorry for my english.
|