forked from kaltura/Tags-Editor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
removeTags.php
82 lines (82 loc) · 3.18 KB
/
removeTags.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
require_once("kalturaConfig.php");
//Retrieves the array of tags from a cached file created by getTagList.php
$tagArray = unserialize(file_get_contents(TAG_CACHE));
//Includes the client library and starts a Kaltura session to access the API
//More informatation about this process can be found at
//http://knowledge.kaltura.com/introduction-kaltura-client-libraries
require_once('lib/php5/KalturaClient.php');
$config = new KalturaConfiguration(PARTNER_ID);
$config->serviceUrl = 'http://www.kaltura.com/';
$client = new KalturaClient($config);
$ks = $client->generateSession(ADMIN_SECRET, USER_ID, KalturaSessionType::ADMIN, PARTNER_ID);
$client->setKs($ks);
//Formats the tags correctly
$tags = $_REQUEST['tags'];
//Removes the tags from the cache
foreach($tags as $index => $deleteTag) {
unset($tagArray[$deleteTag]);
}
function escapeChar($input)
{
$input = '\\'.$input[0];
return $input;
}
$tagString = implode(', ', $tags);
$tagString = preg_replace_callback('|[#-+]|','escapeChar',$tagString);
$tagString = preg_replace_callback('|[--/]|','escapeChar',$tagString);
$tagString = preg_replace_callback('|!|','escapeChar',$tagString);
$tagString = preg_replace_callback('|"|','escapeChar',$tagString);
$tagString = preg_replace_callback('|-|','escapeChar',$tagString);
$tagString = preg_replace_callback('|\\/|','escapeChar',$tagString);
$pager = new KalturaFilterPager();
$pageSize = 500;
$pager->pageSize = $pageSize;
$lastCreatedAt = 0;
$lastEntryIds = "";
$cont = true;
while($cont) {
//Instead of using a page index, the entries are retrieved by creation date
//This is the only way to ensure that the server retrieves all of the entries
$filter = new KalturaMediaEntryFilter();
$filter->orderBy = "-createdAt";
$filter->tagsMultiLikeOr = $tagString;
//Ignores entries that have already been parsed
if($lastCreatedAt != 0)
$filter->createdAtLessThanOrEqual = $lastCreatedAt;
if($lastEntryIds != "")
$filter->idNotIn = $lastEntryIds;
$results = $client->media->listAction($filter, $pager);
//If no entries are retrieved the loop may end
if(count($results->objects) == 0) {
$cont = false;
}
//For each entry in the server, the requested tags are removed
foreach($results->objects as $place => $entry) {
//Retrieves the old tags
$oldTags = explode(',', $entry->tags);
foreach($oldTags as $index => $tag) {
$oldTags[$index] = trim($tag);
}
//Deletes the appropriate tags
foreach($tags as $tag) {
if(in_array($tag, $oldTags))
unset($oldTags[array_search($tag, $oldTags)]);
}
//Updates the corresponding media entry with the new list of tags
$joinedTags = implode(', ', $oldTags);
$mediaEntry = new KalturaMediaEntry();
$mediaEntry->tags = $joinedTags;
$entryId = $results->objects[$place]->id;
$updateResults = $client->media->update($entryId, $mediaEntry);
//Keeps a tally of which creation dates were examined
//and which entry ids have already been seen
if($lastCreatedAt != $entry->createdAt)
$lastEntryIds = "";
if($lastEntryIds != "")
$lastEntryIds .= ",";
$lastEntryIds .= $entry->id;
$lastCreatedAt = $entry->createdAt;
}
}
file_put_contents(TAG_CACHE, serialize($tagArray));