[TYPO3-dam] Automatic categorization while importing

Thorsten Boock t.boock at exinit.de
Mon Sep 29 15:34:34 CEST 2008


Völker Stefan schrieb:
> Good evening,
> 
> now i am really confused...
> 
> I use following code due to dam_demo of the index_rule:   
> 
> function processMeta($meta)    {
>         $fileId = $meta['fields']['uid'];
>         $keywords = explode(',',$meta['fields']['keywords']);
>        
>         for($i = 0; $i < count($keywords); $i++) {
>             $query = $GLOBALS['TYPO3_DB']->exec_SELECTquery('COUNT(*) as 
> anzahl', 'tx_dam_cat', ' title = "'.$keywords[$i].'"','','');
>             $res = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($query);
>             if($res['anzahl'] == 0) {
>                 # create cat
>                 $insertFields = array('title' => $keywords[$nxs],'pid' 
> => 31, 'parent_id' => 0, 'tstamp' => time(), 'crdate' => time(), 
> 'cruser_id' => $BE_USER->user['uid'] );
>                 $query = 
> $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_dam_cat ',$insertFields);
>                 $catId = $GLOBALS['TYPO3_DB']->sql_insert_id();
>             } else {
>                 # get uid from cat with this keyword-title
>                 $qu = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
>                     'uid',
>                     'tx_dam_cat',
>                     'title = "'.$keywords[$i].'"',
>                     '',
>                     '');
>                 $catIdRes = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($qu);
>                 $catId = $catIdRes['uid'];
>             }
> 
>             # create mm-relation
>             $insertCatRelation = array('uid_local' => $fileId, 
> 'uid_foreign' => $catId);
>             $catQuery = 
> $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_dam_mm_cat', 
> $insertCatRelation);
>         }
>         return $meta;
>     }
> 
> 
> It won't insert the mm-relation.
> 
> 
> BUT if i use this phrase for the $insertCatRelation:
> $insertCatRelation = array('uid_local' => $fileId+1, 'uid_foreign' => 
> $catId);
> it works (although the id is wrong of course...)
> 
> I double-checke, if $fileId is an integer, it is.
> 
> What can this be ??
> 
> 
> Thanks in advance,
> 
> 
> Stefan.
> 
> Am 26.09.2008 um 11:53 schrieb Thorsten Boock:
> 
>> Völker Stefan schrieb:
>>> Hi Thorsten,
>>>
>>> sounds interesting!
>>> I will definetly have a look at this function -first thing in the 
>>> morning
>>>
>>> Best regards,
>>> Stefan.
>>>
>>>
>>> Am 25.09.2008 um 17:39 schrieb Thorsten Boock:
>>>
>>>> Völker Stefan schrieb:
>>>>> Hello DAM-lovers,
>>>>>
>>>>> is it possible, to use one of the metadata-fields for automatic
>>>>> categorization?
>>>>>
>>>>> I have this in my mind:
>>>>> An image is saved via Adobe Bridge with following keywords "animal",
>>>>> "nature", "CMS".
>>>>> It will be uploaded into the DAM and while the automatic indexing
>>>>> process, the comma-separated keywordlist will be used to categorize 
>>>>> this
>>>>> image in following categories: "animal", "nature" and "CMS".
>>>>>
>>>>> I don't believe, that there is already a solution for this, but i want
>>>>> to know, on which place (e.g. hook) i can implement this little 
>>>>> feature
>>>>> as described above.
>>>>> Where do i have to "register" my "keyword-to-category"-function?
>>>>>
>>>>> Thank you very much in advance,
>>>>>
>>>>> Stefan.
>>>>
>>>> Hi,
>>>> I'm trying to do exactly the same right now. As I had my first look on
>>>> DAM about 7 hours ago I'm not exactly sure if I really got it but have
>>>> you had a look on the file class.tx_damdemo_sv1.php of the
>>>> demo-extension, yet? I think the function processMeta is the right 
>>>> place
>>>> to call your code. The meta-array given to this function as a parameter
>>>> contains the iptc-data and thereby the keywords you are looking for.
>>>>
>>>>
>>>> Regards,
>>>> Thorsten Boock
>>>> _______________________________________________
>>>> TYPO3-project-dam mailing list
>>>> TYPO3-project-dam at lists.netfielders.de
>>>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-project-dam
>>>
>>
>> Hi Stefan,
>>
>> after taking a closer look at class.tx_dam_indexrulebase.php again, I
>> have to revoke my previous comment.
>>
>> If you overwrite $meta['fields']['category'] in the function
>> proccessMeta, it will be overwritten again at some later point. Changing
>>  the title field in processMeta for example works perfect. As I don't
>> have much time to finish the project I'm currently working on, I'm
>> unable to research the problem more precisely.
>>
>> Maybe the following (very dirty but extremly useful) testing-code helps
>> you a little bit:
>>
>> function postProcessMeta($meta, $abs) {
>>     exec('echo "'.print_r($meta, true).'" >> 
>> /home/thorsten/exiftest3.txt');
>>     exec('echo "'.print_r($abs, true).'" >> 
>> /home/thorsten/exiftest3.txt');
>>     }
>>
>> At the point where the function is called the datasets corresponding to
>> the indexed files are allready inserted into the database and you can
>> read their uids from $meta['fields']['uid']. This makes it very easy to
>> execute an updatequery. The variable abs contains the full path to the
>> indexed file. The function gets called for every single file.
>>
>> Of course this additional query will cost you script-runtime and thereby
>> it isn't a beautiful solution - but I think it will be my way to do it
>> because of the lack of time.
>>
>> Regards,
>> Thorsten Boock
>> _______________________________________________
>> TYPO3-project-dam mailing list
>> TYPO3-project-dam at lists.netfielders.de
>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-project-dam
> 

Hi,

did you find a solution for this problem, yet? I was following the demo 
extension, too and it seams to work perfect. I used the postProcessMeta 
function. I will put this in TER after some more testing.

Regards,
Thorsten Boock


More information about the TYPO3-project-dam mailing list