Пример #1
0
 /**
  * Action goes over all tags with instanceCount==0 and checks whether they need to be removed from the DB. Returns number of removed tags.
  * @action deletePending
  * @return int
  */
 public function deletePendingAction()
 {
     TagPeer::setUseCriteriaFilter(false);
     $c = KalturaCriteria::create(TagPeer::OM_CLASS);
     $filter = new TagFilter();
     $filter->set('_eq_instance_count', 0);
     $filter->attachToCriteria($c);
     $c->applyFilters();
     $count = $c->getRecordsCount();
     if (!$count) {
         KalturaLog::info('No tags pending for deletion.');
         return 0;
     }
     $deletedTags = 0;
     $tagsForDelete = TagPeer::doSelect($c);
     TagPeer::setUseCriteriaFilter(true);
     foreach ($tagsForDelete as $tag) {
         /* @var $tag Tag */
         switch ($tag->getObjectType()) {
             case taggedObjectType::ENTRY:
                 $deletedTags += $this->resolveEntryTag($tag);
                 break;
             case taggedObjectType::CATEGORY:
                 $deletedTags += $this->resolveCategoryTag($tag);
                 break;
         }
     }
     return $deletedTags;
 }
if ($pos === false) {
    $pos = strlen($testfile);
}
$testfile = substr($testfile, 0, $pos);
$result = TagFilter::Run($testfile, $options);
echo $result . "\n\n";
echo "-------------------\n\n";
echo "Testing Word HTML cleanup\n";
echo "-------------------------\n";
$testfile = file_get_contents("test_word.txt");
$pos = strpos($testfile, "@EXIT@");
if ($pos === false) {
    $pos = strlen($testfile);
}
$testfile = substr($testfile, 0, $pos);
$result = TagFilter::Run($testfile, $options);
echo $result . "\n\n";
echo "-------------------------\n\n";
$html = new simple_html_dom();
$web = new WebBrowser();
$result = $web->Process("http://www.barebonescms.com/");
if (!$result["success"]) {
    echo "[FAIL] An error occurred.  " . $result["error"] . "\n";
} else {
    if ($result["response"]["code"] != 200) {
        echo "[FAIL] An unexpected response code was returned.  " . $result["response"]["line"] . "\n";
    } else {
        echo "[PASS] The expected response was returned.\n";
        $html->load($result["body"]);
        $rows = $html->find('a[href]');
        foreach ($rows as $row) {
function smarty_block_mtobjectloop($args, $content, &$ctx, &$repeat)
{
    $_classname = $args['model'];
    require_once 'class.mt_' . strtolower($_classname) . '.php';
    $_classname = ucfirst($_classname);
    $_object = new $_classname();
    $_datasource = $_object->_table;
    $_datasource = str_replace('mt_', '', $_datasource);
    $deniedobjects = $ctx->mt->config('DeniedLoopObjects');
    if (!is_string($deniedobjects)) {
        $deniedobjects = 'permission,config,log,session';
    }
    $serialized = $ctx->mt->config('SerializedColumns');
    if (!is_string($serialized)) {
        $serialized = 'author_list_prefs,author_widgets';
    }
    if ($serialized) {
        $serialized = preg_split('/\\s*,\\s*/', $serialized);
    }
    if ($deniedobjects) {
        $deniedobjects = preg_split('/\\s*,\\s*/', $deniedobjects);
        if (in_array($_datasource, $deniedobjects)) {
            $repeat = FALSE;
            return '';
        }
    }
    $this_tag = strtolower($ctx->this_tag());
    $customfields = array();
    foreach ($args as $key => $value) {
        if (strpos($key, 'field___') === 0) {
            $custom_field_value = $args[$key];
            $key = str_replace('field___', '', $key);
            $customfields[$key] = $custom_field_value;
        }
    }
    $meta_fields = array();
    $meta_info = $_object->get_meta_info($_datasource);
    foreach ($meta_info as $meta => $_type) {
        $meta = str_replace('field.', $_datasource . '_', $meta);
        $meta_fields[] = $meta;
    }
    $attr_names = $_object->GetAttributeNames();
    array_push($attr_names, $_datasource . '_tags');
    $localvars = array($attr_names, common_loop_vars(), array("_{$_datasource}_counter"), $meta_fields);
    if (!isset($content)) {
        $ctx->localize($localvars);
        $ctx->stash($_datasource . '_old_vars', $old_vars);
        if (isset($args['sort_by'])) {
            $sort_by = $args['sort_by'];
            unset($args['sort_by']);
        }
        if (isset($args['sort_order'])) {
            $sort_order = $args['sort_order'];
            unset($args['sort_order']);
        }
        if (isset($args['limit'])) {
            $limit = $args['limit'];
            unset($args['limit']);
        }
        if (isset($args['offset'])) {
            $offset = $args['offset'];
            unset($args['offset']);
        }
        if (!$sort_order) {
            $sort_order = 'ascend';
        }
        $where = '';
        $_blog_id;
        $field = array();
        if (isset($args['operator'])) {
            $op = $args['operator'];
        }
        if (!$op) {
            $op = '=';
        } else {
            if ($op == 'not_like') {
                $op = 'not like';
            }
        }
        $ctx->mt->db()->escape($op);
        $class_type;
        foreach ($args as $key => $value) {
            if ($key != '_object' && $key != '_datasource') {
                if ($_object->has_column($key)) {
                    if ($key == 'class') {
                        if ($value == '*') {
                            continue;
                        }
                        $class_type = $value;
                    }
                    if ($where) {
                        $where .= " AND ";
                    }
                    if (is_array($value)) {
                        $_value = array();
                        foreach ($value as $var) {
                            $var = $ctx->mt->db()->escape($var);
                            array_push($_value, $var);
                        }
                        $vars = implode(',', $_value);
                        $where .= " {$_datasource}_{$key} in ({$vars}) ";
                    } else {
                        $value = $ctx->mt->db()->escape($value);
                        if ($key == 'class') {
                            $where .= " {$_datasource}_{$key} = '{$value}' ";
                        } else {
                            $where .= " {$_datasource}_{$key} {$op} '{$value}' ";
                        }
                    }
                    if ($key == 'blog_id') {
                        $_blog_id = $value;
                    }
                }
            }
        }
        if ($_object->has_column('class')) {
            if (!isset($args['class'])) {
                $class = strtolower($_classname);
                $class = $ctx->mt->db()->escape($class);
                if ($where) {
                    $where .= " AND ";
                }
                $where .= " {$_datasource}_class='{$class}' ";
            }
        }
        $blog_filter;
        if ($_blog_id) {
            if ($where) {
                $where .= " AND ";
            }
            $where .= " {$_datasource}_blog_id = {$_blog_id} ";
            $blog_filter = "={$_blog_id}";
        } else {
            if ($_datasource != 'blog') {
                if ($_object->has_column('blog_id')) {
                    $include_blogs = $ctx->mt->db()->include_exclude_blogs($args);
                    $blog_filter = $include_blogs;
                    if ($include_blogs) {
                        if ($where) {
                            $where .= " AND ";
                        }
                        $where .= " {$_datasource}_blog_id {$include_blogs} ";
                    }
                }
            }
        }
        if (isset($args['tags']) or isset($args['tag'])) {
            $tag_arg = isset($args['tag']) ? $args['tag'] : $args['tags'];
            $_args = array();
            $_args['tags'] = $tag_arg;
            $_args['_datasource'] = $_datasource;
            require_once 'class.getobjecttags.php';
            $get_object_tags = new GetObjectTags();
            if ($tags = $get_object_tags->fetch_object_tags($ctx, $_args, $blog_filter)) {
                if (isset($args['include_blogs']) or isset($args['exclude_blogs'])) {
                    $blog_ctx_arg = isset($args['include_blogs']) ? array('include_blogs' => $args['include_blogs']) : array('exclude_blogs' => $args['exclude_blogs']);
                    if (isset($args['include_blogs']) && isset($args['include_with_website'])) {
                        $blog_ctx_arg = array_merge($blog_ctx_arg, array('include_with_website' => $args['include_with_website']));
                    }
                }
                $tag_list = array();
                foreach ($tags as $tag) {
                    $tag_list[] = $tag->tag_id;
                }
                if (!count($tag_list)) {
                    $ctx->restore($localvars);
                    $repeat = FALSE;
                    return '';
                }
                $tag_arg = $blog_ctx_arg;
                $tag_arg['tag_id'] = $tag_list;
                $tag_arg['datasource'] = $_datasource;
                $objecttag = $ctx->mt->db()->fetch_objecttags($tag_arg);
                $object_list = array();
                if ($objecttag) {
                    foreach ($objecttag as $ot) {
                        $object_list[$ot->objecttag_object_id] = 1;
                    }
                }
                if (count($object_list)) {
                    $object_list = implode(',', array_keys($object_list));
                    if ($where) {
                        $where .= " AND ";
                    }
                    $where .= " {$_datasource}_id in ({$object_list}) ";
                } else {
                    $ctx->restore($localvars);
                    $repeat = FALSE;
                    return '';
                }
            } else {
                $ctx->restore($localvars);
                $repeat = FALSE;
                return '';
            }
        }
        if (!$where) {
            $where = '1=1';
        }
        if ($sort_by) {
            $sort_by = $ctx->mt->db()->escape($sort_by);
            $where .= " order by {$_datasource}_{$sort_by}";
            if ($sort_order == 'ascend') {
                $where .= " ASC ";
            } else {
                $where .= " DESC ";
            }
        }
        $extras = array();
        if ($offset) {
            $extras['offset'] = $offset;
        }
        if ($limit) {
            $extras['limit'] = $limit;
        }
        if (count($customfields)) {
            $meta_join_num = 1;
            if (!empty($meta_info)) {
                foreach ($customfields as $name => $value) {
                    if (!isset($meta_info['field.' . $name])) {
                        // TODO :: Asset Object
                        if (isset($args['column_def']) && $args['column_def']) {
                            $meta_info['field.' . $name] = $args['column_def'];
                        } else {
                            if ($class_type) {
                                $basenames = array();
                                foreach ($customfields as $_name => $_value) {
                                    $_name = $ctx->mt->db()->escape($_name);
                                    $basenames[] = "'{$_name}'";
                                }
                                global $customfield_types;
                                require_once 'class.mt_field.php';
                                $_field = new Field();
                                $blog_ids = array(0, $ctx->stash('blog')->id);
                                $blog_ids = implode(',', $blog_ids);
                                $basenames = implode(',', $basenames);
                                $name = $ctx->mt->db()->escape($name);
                                $field = $_field->Find("field_blog_id in ({$blog_ids}) AND field_basename in ({$basenames})\n                                    AND field_obj_type='{$class_type}'", FALSE, FALSE, array('limit' => 1));
                                if ($field) {
                                    $field = $field[0];
                                    $field = $customfield_types[$field->field_type];
                                    $meta_info['field.' . $name] = $field['column_def'];
                                }
                            }
                        }
                    }
                    if (isset($meta_info['field.' . $name])) {
                        $meta_col = $meta_info['field.' . $name];
                        $value = $ctx->mt->db()->escape($value);
                        $table = "mt_{$_datasource}_meta {$_datasource}_meta{$meta_join_num}";
                        $extras['join'][$table] = array('condition' => "({$_datasource}_meta{$meta_join_num}.{$_datasource}_meta_{$_datasource}_id = {$_datasource}_id\n                                and {$_datasource}_meta{$meta_join_num}.{$_datasource}_meta_type = 'field.{$name}'\n                                and {$_datasource}_meta{$meta_join_num}.{$_datasource}_meta_{$meta_col} = '{$value}')\n");
                        $meta_join_num++;
                    }
                }
            }
        }
        if (!isset($args['no_filter'])) {
            $ctx->stash('filter_where', $where);
            $ctx->stash('filter_extras', $extras);
            $ctx->stash('filter_args', $args);
            $ctx->stash('filter_this_tag', $this_tag);
            require_once 'class.tagfilter.php';
            $filter = new TagFilter();
            $filter->tag_filter('tag_filter_' . $this_tag, $ctx->mt, $ctx, $args);
            $where = $ctx->stash('filter_where');
            $extras = $ctx->stash('filter_extras');
            $args = $ctx->stash('filter_args');
        }
        if (isset($args['debug']) && $args['debug']) {
            echo htmlspecialchars($where);
        }
        $objects = $_object->Find($where, FALSE, FALSE, $extras);
        if (isset($args['shuffle']) && $args['shuffle']) {
            shuffle($objects);
        }
        $counter = 0;
        $ctx->stash($_datasource . '_multi', $objects);
    } else {
        $objects = $ctx->stash($_datasource . '_multi');
        $counter = $ctx->stash("_{$_datasource}_counter");
    }
    if (!count($objects)) {
        $ctx->restore($localvars);
        $repeat = FALSE;
        return '';
    }
    $lastn = count($objects);
    $methods = array();
    $paths = array();
    $blog_paths = array();
    $ctx_blogs = array();
    $blog = $ctx->stash('blog');
    $ctx_blogs[$blog->id] = $blog;
    if ($_datasource == 'blog') {
        $methods = array('blog_site_path', 'blog_site_url', 'blog_archive_path', 'blog_archive_url');
    } else {
        if ($_datasource == 'asset') {
            $paths = array('asset_url', 'asset_file_path');
            $blog_paths[$blog->id] = _objectloop_get_blog_paths($blog, $args, $ctx);
        }
    }
    if ($counter < $lastn) {
        $data = $objects[$counter];
        $values = $data->GetArray();
        if ($data->has_column('blog_id')) {
            $data_blog_id = $data->blog_id;
            if ($blog->id != $data_blog_id) {
                if (!isset($ctx_blogs[$data_blog_id])) {
                    $data_blog = $ctx->mt->db()->fetch_blog($data_blog_id);
                    $ctx_blogs[$data_blog_id] = $data_blog;
                }
                $ctx->stash('blog', $ctx_blogs[$data_blog_id]);
            } else {
                $ctx->stash('blog', $ctx_blogs[$blog->id]);
            }
        }
        if ($data->has_meta()) {
            $meta = $data->get_meta_info($_datasource);
            if (is_array($meta)) {
                foreach ($meta as $key => $value) {
                    $field_name = $_datasource . '_' . str_replace('.', '_', $key);
                    $values[$field_name] = $data->{$key};
                }
            }
        }
        if (!isset($args['no_tags'])) {
            $_args = array();
            $_args['object_id'] = $data->id;
            $_args['_datasource'] = $_datasource;
            require_once 'class.getobjecttags.php';
            $get_object_tags = new GetObjectTags();
            if ($tags = $get_object_tags->fetch_object_tags($ctx, $_args)) {
                $_tags = array();
                foreach ($tags as $_t) {
                    $_tags[] = $_t->tag_name;
                }
                $ctx->__stash['vars'][$_datasource . '_tags'] = $_tags;
            } else {
                unset($ctx->__stash['vars'][$_datasource . '_tags']);
            }
        }
        foreach ($values as $key => $value) {
            if (!preg_match('/password|secret/i', $key)) {
                if (in_array($key, $methods)) {
                    $_key = preg_replace('/.*?_/', '', $key);
                    $value = $data->{$_key}();
                } else {
                    if (in_array($key, $paths)) {
                        if (isset($blog_paths[$ctx->stash('blog')->id])) {
                            $_blog_paths = $blog_paths[$ctx->stash('blog')->id];
                        } else {
                            $_blog_paths = _objectloop_get_blog_paths($ctx->stash('blog'), $args, $ctx);
                            $blog_paths[$ctx->stash('blog')->id] = $_blog_paths;
                        }
                        $static_url = $_blog_paths['static_url'];
                        $site_path = $_blog_paths['site_path'];
                        $site_url = $_blog_paths['site_url'];
                        $archive_url = $_blog_paths['archive_url'];
                        $value = preg_replace('/^%s\\//', $static_url, $value);
                        if ($key == 'asset_file_path') {
                            $value = preg_replace('/^%r/', $site_path, $value);
                        } else {
                            $value = preg_replace('/^%r/', $site_url, $value);
                            if ($archive_url) {
                                $value = preg_replace('/^%a/', $archive_url, $value);
                            }
                        }
                    }
                }
                if (in_array($key, $serialized)) {
                    $value = preg_replace("/^BIN:/", '', $value);
                    $value = $ctx->mt->db()->unserialize($value);
                }
                $ctx->__stash['vars'][$key] = $value;
            }
        }
        $ctx->stash($_datasource, $data);
        $ctx->stash("_{$_datasource}_counter", $counter + 1);
        $count = $counter + 1;
        $ctx->__stash['vars']['__counter__'] = $count;
        $ctx->__stash['vars']['__odd__'] = $count % 2 == 1;
        $ctx->__stash['vars']['__even__'] = $count % 2 == 0;
        $ctx->__stash['vars']['__first__'] = $count == 1;
        $ctx->__stash['vars']['__last__'] = $count == $lastn;
        $repeat = TRUE;
    } else {
        $ctx->restore($localvars);
        $ctx->stash($_datasource, NULL);
        $repeat = FALSE;
    }
    return $content;
}
Пример #4
0
 /**
  * @param sfWebRequest $request
  * @return sfView
  */
 public function executeUpdateTagFilter(sfWebRequest $request)
 {
     $this->forward404Unless($request->isXmlHttpRequest());
     $decision_id = $request->getParameter('decision_id', false);
     $this->forward404Unless(is_object(DecisionTable::getInstance()->getDecisionForUser($this->getUser()->getGuardUser(), $decision_id)));
     if ($request->getParameter('filter_action') == 'add') {
         $roleFilter = new TagFilter();
         $roleFilter->decision_id = $decision_id;
         $roleFilter->tag_id = $request->getParameter('tag_id');
         $roleFilter->save();
     } else {
         if ($request->getParameter('filter_action') == 'delete') {
             $tf_by_name = Doctrine_Query::create()->from('TagFilter tf')->select('tf.id')->leftJoin('tf.Tag t')->where("t.name = ?", $request->getParameter('tag_name'))->andWhere('tf.decision_id = ?', $decision_id)->execute();
             foreach ($tf_by_name as $v) {
                 Doctrine_Query::create()->delete('TagFilter')->where('id = ?', $v->id)->execute();
             }
         }
     }
     Doctrine_Query::create()->delete('Graph')->where('decision_id = ?', $decision_id)->execute();
     $criteriaAnalyze = new CriteriaAnalyze();
     $criteriaAnalyze->setDecisionId($decision_id);
     $criteriaAnalyze->load();
     return $this->getUpdateActionResponse($criteriaAnalyze, $decision_id);
 }
Пример #5
0
<?php

chdir(dirname(__FILE__));
require_once __DIR__ . '/../../bootstrap.php';
$c = KalturaCriteria::create(TagPeer::OM_CLASS);
$filter = new TagFilter();
$filter->set('_eq_instance_count', 0);
$filter->attachToCriteria($c);
$count = $c->getRecordsCount();
if (!$count) {
    die('No tags pending for deletion.');
}
TagPeer::setUseCriteriaFilter(false);
$tagsForDelete = TagPeer::doSelect($c);
TagPeer::setUseCriteriaFilter(true);
foreach ($tagsForDelete as $tag) {
    /* @var $tag Tag */
    switch ($tag->getObjectType()) {
        case taggedObjectType::ENTRY:
            resolveEntryTag($tag);
            break;
        case taggedObjectType::CATEGORY:
            resolveCategoryTag($tag);
            break;
    }
}
function resolveEntryTag(Tag $tag)
{
    $c = KalturaCriteria::create(entryPeer::OM_CLASS);
    $c->add(entryPeer::PARTNER_ID, $tag->getPartnerId());
    if ($tag->getPrivacyContext() != kTagFlowManager::NULL_PC) {