/** * Will return an array of 2: * 1. an object (usually string) representing the response * 2. a string representing the recommended content type header */ public function renderDataInRequestedFormat($response_params, $response_type, $escape_text = false) { if ($this->cached_content) { return $this->cached_content; } $this->escape_text = $escape_text; $this->response_type = $response_type; if ($this->response_type == self::RESPONSE_TYPE_XML) { $content_type = "text/xml; charset=utf-8"; $response = '<?xml version="1.0" encoding="ISO-8859-1"?><xml>' . $this->array2xml($response_params) . '</xml>'; } elseif ($this->response_type == self::RESPONSE_TYPE_PHP) { $content_type = "text/html; charset=utf-8"; $response = $this->array2phpserialize($response_params); } elseif ($this->response_type == self::RESPONSE_TYPE_PHP_ARRAY || $this->response_type == self::RESPONSE_TYPE_PHP_OBJECT) { $content_type = "text/html; charset=utf-8"; $response = objectWrapperBase::toArrayImpl($response_params); } elseif ($this->response_type == self::RESPONSE_TYPE_RAW) { $content_type = "text/html; charset=utf-8"; $response = $response_params; } elseif ($this->response_type == self::RESPONSE_TYPE_HTML) { $content_type = "text/html; charset=utf-8"; $response = $response_params; } elseif ($this->response_type == self::RESPONSE_TYPE_MRSS) { $content_type = "text/xml; charset=utf-8"; //$response = kalturaRssRenderer::renderMrssFeed( objectWrapperBase::toArrayImpl ( $response_params ) ); $mrss_renderer = new kalturaRssRenderer(kalturaRssRenderer::TYPE_YAHOO); $response = $mrss_renderer->renderMrssFeed($response_params); } else { $content_type = "text/html; charset=utf-8"; $response = self::json_serialize($response_params); } $res = array($response, $content_type); // we reached here and there is a $this->cachekey - store in the cahce for the next time if ($this->cachekey) { if (!$this->my_cache) { $this->my_cache = new myCache("kwr", $this->cachekey->expiry); } $this->cached_content = $this->my_cache->put($response_type . "_" . $this->cachekey->toString(), $res); // the cache is per $response_type } return $res; }
/** * This is not a regular service. * Because the caller is not a partner but rather a 3rd party provider that wishs to query our system, * The security is slightly different and the respons is in the format of mRss which is related to entries only. */ public function executeImpl($partner_id, $subp_id, $puser_id, $partner_prefix, $puser_kuser) { myDbHelper::$use_alternative_con = myDbHelper::DB_HELPER_CONN_PROPEL2; header("Content-Type: text/xml; charset=utf-8"); // TODO - verify permissions for viewing lists // validate the ks of the caller $code = $this->getP("code"); if ($code != 'fsalh5423a43g') { return "<xml></xml>"; die; } $detailed = $this->getP("detailed", false); $limit = $this->getP("page_size", 100); $limit = $this->maxPageSize($limit); $operated_partner_id = $this->getP("operated_partner_id"); $page = $this->getP("page", 1); $offset = ($page - 1) * $limit; // kuserPeer::setUseCriteriaFilter( false ); if ($operated_partner_id) { entryPeer::setUseCriteriaFilter(true); } else { entryPeer::setUseCriteriaFilter(false); } // FOR now - display only 2 partners // 2460 - dorimedia $partner_list = array(593, 2460); $c = KalturaCriteria::create(entryPeer::OM_CLASS); $c->addAnd(entryPeer::STATUS, entryStatus::READY); // for now display only entries that are part of the kaltura network // $c->addAnd ( entryPeer::DISPLAY_IN_SEARCH , mySearchUtils::DISPLAY_IN_SEARCH_KALTURA_NETWORK ); // filter $filter = new entryFilter(); $fields_set = $filter->fillObjectFromRequest($this->getInputParams(), "filter_", null); $this->setExtraFilters($filter); $offset = ($page - 1) * $limit; $c->setLimit($limit); if ($offset > 0) { $c->setOffset($offset); } $filter->attachToCriteria($c); //if ($order_by != -1) entryPeer::setOrder( $c , $order_by ); $c->addAnd(entryPeer::PARTNER_ID, $partner_list, Criteria::IN); $start_1 = microtime(true); if ($detailed) { // for some entry types - there are no kshow or kusers - don't join even when detailed if ($this->joinOnDetailed()) { $list = entryPeer::doSelectJoinAll($c); } else { $list = entryPeer::doSelect($c); } $level = objectWrapperBase::DETAIL_LEVEL_DETAILED; } else { $list = entryPeer::doSelect($c); $level = objectWrapperBase::DETAIL_LEVEL_REGULAR; } $count = $c->getRecordsCount(); $end_1 = microtime(true); KalturaLog::log("benchmark db: [" . ($end_1 - $start_1) . "]"); $result_count = count($list); $start_2 = microtime(true); $mrss_renderer = new kalturaRssRenderer(kalturaRssRenderer::TYPE_TABOOLA); $str = $mrss_renderer->renderMrssFeed($list, $page, $result_count); $end_2 = microtime(true); KalturaLog::log("benchmark render: [" . ($end_2 - $start_2) . "]"); echo $str; // don't return to the rest of the implementation - the base class manipulates the content. die; }