<?php
$e = $modx->event->name;
switch($e) {
case 'OnDocFormSave':
//Referrence to the current Resource
$current = $modx->resource;
$serie = $current->getTVValue('serie');
$category = $current->getTVValue('category');
//Should ensure that the user is doesn't create symlinks for anything other than resources in the right folder
if($current->getOne('ContentType')!='modResource'&¤t->get('parent')==6)return;
//Ensures that we don't create two new objects if the already exists
$existingObjOne = $modx->getObject('modResource',array('pagetitle'=>$serie,'parent'=>symParentOne);
$existingObjTwo = $modx->getObject('modResource',array('pagetitle'=>$category,'parent'=>symParentTwo);
if($exsistingObjOne!=null||$exsistingObjTwo!=null)
{
return;
}
// use current resource tv.serie.value to locate parent folder for symlinks
$symParentOne = $modx->getObject('modResource',array('pagetitle' => $serie ));
$symIdOne = $symParentOne->get('id');
$symParentTwo = $modx->getObject('modResource',array('pagetitle' => $category ));
$symIdTwo = $symParentTwo->get('id');
if($serie != null)
{
// Create symlink in series
$symOne = &$modx->newObject('modSymlink');
$symOne->set('pagetitle', $current->get('pagetitle'));
$symOne->set('parent',$symIdOne);
$symOne->set('published',1);
$symOne->set('symlink', $current->get('id'));
$symOne->save();
}
if($category != null)
{
// Create symlink in category
$symTwo = &$modx->newObject('?');
$symTwo->set('pagetitle', $current->get('pagetitle'));
$symTwo->set('parent',$symIdTwo);
$symTwo->set('published',1);
$symTwo->set('symlink',$current->get('id'));
$symTwo->save();
}
break;
case 'OnDocFormDelete':
//Referrence to the current Resource, get the name of the current resource for removing of symlinks
$current = $modx->resource;
//Should ensure that the user is doesn't delete symlinks for anything other than resources in the right folder
if($current->getOne('ContentType')!='modResource'&¤t->get('parent')==6)return;
$symlinks = $modx->getCollection('modSymlink',array('pagetitle'=>$current->get('pagetitle')));
if($symlinks != null)
{
£symlinks->remove();
}
break;
}

<?php
/* set these appropriately */
$fields = array(
'template' => 1, /* ID of desired template */
'content_type' => 1, /* don't change this */
'class_key' => 'modSymLink',
'context_key' => 'web',
'parent' => 12, /* id of desired parent */
'richtext' => 0,
'hidemenu' => 0,
'published' => 1,
'searchable' => 0,
'cacheable' => 1,
'content' => 12, // ID of linked resource
);
$resource = $modx->newObject('modSymlink', $fields);
$resource->save();
<?php
$eventName = $modx->event->name;
switch($eventName)
{
case 'OnDocFormSave':
//Referrence to the current Resource
$current = $modx->resource;
$serie = $current->getTVValue('serie');
$category = $current->getTVValue('category');
//$parentObject = $modx->getObject('modResource', array('pagetitle' => 'Pool', 'context_key' => $current->get('context_key') ));
//Should ensure that the user is doesn't create symlinks for anything other than resources in the right folder
if($current->get('class_key')!='modDocument' && $current->get('parent')!= 6/*$parentObject->get('id')*/)
{
return;
}
// use current resource tv.serie.value to locate parent folder for symlinks
$symParentOne = $modx->getObject('modResource',array('pagetitle' => $serie, 'context_key' => $current->get('context_key') ));
$symParentTwo = $modx->getObject('modResource',array('pagetitle' => $category, 'context_key' => $current->get('context_key') ));
//Ensures that we don't create two new objects if thye already exists
$existingObjOne = $modx->getObject('modResource',array('pagetitle'=>$current->get('pagetitle'),'parent'=>$symParentOne->get('id'),'context_key' => $current->get('context_key') ));
$existingObjTwo = $modx->getObject('modResource',array('pagetitle'=>$current->get('pagetitle'),'parent'=>$symParentTwo->get('id'),'context_key' => $current->get('context_key') ));
if(!empty($existingObjOne)||!empty($existingObjTwo))
{
return;
}
if(!empty($serie))
{
// Create symlink in serie
$fields = array(
'template' => 7, /* ID of desired template */
'content_type' => 1, /* don't change this */
'class_key' => 'modSymLink',
'context_key' => $current->get('context_key'),
'parent' => $symParentOne->get('id'), /* id of desired parent */
'richtext' => 1,
'pagetitle' => $current->get('pagetitle'),
'hidemenu' => 0,
'published' => 1,
'searchable' => 0,
'cacheable' => 1,
'content' => $current->get('id') // ID of linked resource
);
$resource = $modx->newObject('modSymlink', $fields);
$resource->save();
}
if(!empty($category))
{
$fields = array(
'template' => 7, /* ID of desired template */
'content_type' => 1, /* don't change this */
'class_key' => 'modSymLink',
'context_key' => $current->get('context_key'),
'parent' => $symParentTwo->get('id'), /* id of desired parent */
'richtext' => 0,
'pagetitle' => $current->get('pagetitle'),
'hidemenu' => 0,
'published' => 1,
'searchable' => 0,
'cacheable' => 1,
'content' => $current->get('id') // ID of linked resource
);
$resource = $modx->newObject('modSymlink', $fields);
$resource->save();
}
break;
case 'OnDocFormDelete':
//Referrence to the current Resource, get the name of the current resource for removing of symlinks
$current = $modx->resource;
//$parentObject = $modx->getObject('modResource', array('pagetitle' => 'Pool', 'context_key' => $current->get('context_key') ));
//Should ensure that the user is doesn't delete symlinks for anything other than resources in the right folder
if($current->get('class_key')!='modDocument'&& $current->get('parent')!= 6/*$parentObject->get('id')*/)
{
return;
}
$symlinks = $modx->getCollection('modSymlink',array('pagetitle'=>$current->get('pagetitle')));
if(!empty($symlinks))
{
$modx->removeCollection('modSymlink',array('pagetitle'=>$current->get('pagetitle')));
}
break;
}
<?php
$eventName = $modx->event->name;
switch($eventName)
{
case 'OnDocFormSave':
$modx->runSnippet('createSymlinks');
break;
case 'OnDocFormDelete':
$modx->runSnippet('deleteSymlinks');
break;
}
<?php
$eventName = $modx->event->name;
switch($eventName)
{
case 'OnDocFormSave':
//Referrence to the current Resource
$current = $resource;
$serie = $current->getTVValue('serie');
$category = $current->getTVValue('category');
//$parentObject = $modx->getObject('modResource', array('pagetitle' => 'Pool', 'context_key' => $current->get('context_key') ));
echo 'class_key is:'. $current->get('class_key');
echo 'parent is:'. $current->get('parent');
//Should ensure that the user is doesn't create symlinks for anything other than resources in the right folder
if($current->get('class_key')!='modDocument' || $current->get('parent')!= 6/*$parentObject->get('id')*/)
{
echo 'Symlinks NOT created, REASON: Resource is either not a modDocument or product not created in folder Pool';
return;
}
// use current resource tv.serie.value to locate parent folder for symlinks
$symParentOne = $modx->getObject('modResource',array('pagetitle' => $serie, 'context_key' => $current->get('context_key') ));
$symParentTwo = $modx->getObject('modResource',array('pagetitle' => $category, 'context_key' => $current->get('context_key') ));
echo 'serie parent is:'. $symParentOne->get('pagetitle');
echo 'category parent is:'. $symParentTwo->get('pagetitle');
//Ensures that we don't create two new objects if thye already exists
$existingObjOne = $modx->getObject('modResource',array('pagetitle'=>$current->get('pagetitle'),'parent'=>$symParentOne->get('id'),'context_key' => $current->get('context_key') ));
$existingObjTwo = $modx->getObject('modResource',array('pagetitle'=>$current->get('pagetitle'),'parent'=>$symParentTwo->get('id'),'context_key' => $current->get('context_key') ));
if(!empty($existingObjOne)||!empty($existingObjTwo))
{
echo 'Symlinks NOT created, REASON: They likely already exists';
return;
}
if(!empty($serie))
{
echo 'Laver symlink';
echo 'context_key is:'. $current->get('context_key');
echo 'sym parent is:'. $symParentOne->get('id');
echo 'pagetitle is:'. $current->get('pagetitle');
echo 'content id is:'. $current->get('id');
// Create symlink in serie
$fields = array(
'template' => 7, /* ID of desired template */
'content_type' => 1, /* don't change this */
'class_key' => 'modSymLink',
'context_key' => $current->get('context_key'),
'parent' => $symParentOne->get('id'), /* id of desired parent */
'richtext' => 1,
'pagetitle' => $current->get('pagetitle'),
'alias' => $current->get('pagetitle'),
'hidemenu' => 0,
'published' => 1,
'searchable' => 0,
'cacheable' => 1,
'content' => $current->get('id') // ID of linked resource
);
$resource = $modx->newObject('modSymlink', $fields);
$resource->save();
}
if(!empty($category))
{
$fields = array(
'template' => 7, /* ID of desired template */
'content_type' => 1, /* don't change this */
'class_key' => 'modSymLink',
'context_key' => $current->get('context_key'),
'parent' => $symParentTwo->get('id'), /* id of desired parent */
'richtext' => 0,
'pagetitle' => $current->get('pagetitle'),
'alias' => $current->get('pagetitle'),
'hidemenu' => 0,
'published' => 1,
'searchable' => 0,
'cacheable' => 1,
'content' => $current->get('id') // ID of linked resource
);
$resource = $modx->newObject('modSymlink', $fields);
$resource->save();
}
break;
case 'OnDocFormDelete':
//Referrence to the current Resource, get the name of the current resource for removing of symlinks
$current = $resource;
//$parentObject = $modx->getObject('modResource', array('pagetitle' => 'Pool', 'context_key' => $current->get('context_key') ));
//Should ensure that the user is doesn't delete symlinks for anything other than resources in the right folder
if($current->get('class_key')!='modDocument'|| $current->get('parent')!= 6/*$parentObject->get('id')*/)
{
return;
}
$symlinks = $modx->getCollection('modSymlink',array('pagetitle'=>$current->get('pagetitle')));
if(!empty($symlinks))
{
$modx->removeCollection('modSymlink',array('pagetitle'=>$current->get('pagetitle')));
}
break;
}
$current = $resource;
$current =& $resource;
$category = $resource->getTVValue('category'); 
foreach($category as $key => $value)
{
}