public function executeImpl($partner_id, $subp_id, $puser_id, $partner_prefix, $puser_kuser) { $kshows_from_db = null; // works in one of 2 ways: // 1. get no requested name - will create a new kshow and return its details // 2. get some name - tries to fetch by name. if already exists - return it // get the new properties for the kuser from the request $kshow = new kshow(); $allow_duplicate_names = $this->getP("allow_duplicate_names", true, true); if ($allow_duplicate_names === "false" || $allow_duplicate_names === 0) { $allow_duplicate_names = false; } $return_metadata = $this->getP("metadata", false); $detailed = $this->getP("detailed", false); $level = $detailed ? objectWrapperBase::DETAIL_LEVEL_DETAILED : objectWrapperBase::DETAIL_LEVEL_REGULAR; $obj_wrapper = objectWrapperBase::getWrapperClass($kshow, 0); $fields_modified = baseObjectUtils::fillObjectFromMap($this->getInputParams(), $kshow, "kshow_", $obj_wrapper->getUpdateableFields()); // check that mandatory fields were set // TODO $kshow->setName(trim($kshow->getName())); // ASSUME - the name is UNIQUE per partner_id ! if ($kshow->getName()) { if (myPartnerUtils::shouldForceUniqueKshow($partner_id, $allow_duplicate_names)) { // in this case willsearch for an existing kshow with this name and return with an error if found $kshows_from_db = kshowPeer::getKshowsByName(trim($kshow->getName())); if ($kshows_from_db) { $kshow_from_db = $kshows_from_db[0]; $this->addDebug("already_exists_objects", count($kshows_from_db)); $this->addError(APIErrors::DUPLICATE_KSHOW_BY_NAME, $kshow->getName()); // This field in unique. Please change "); if (myPartnerUtils::returnDuplicateKshow($partner_id)) { $this->addMsg("kshow", objectWrapperBase::getWrapperClass($kshow_from_db, $level)); } return; } } } // the first kuser to create this kshow will be it's producer $producer_id = $puser_kuser->getKuserId(); $kshow->setProducerId($producer_id); // moved to the update - where there is $kshow->setPartnerId($partner_id); $kshow->setSubpId($subp_id); $kshow->setViewPermissions(kshow::KSHOW_PERMISSION_EVERYONE); // by default the permissions should be public if ($kshow->getPermissions() === null) { $kshow->setPermissions(myPrivilegesMgr::PERMISSIONS_PUBLIC); } // have to save the kshow before creating the default entries $kshow->save(); $show_entry = $kshow->createEntry(entry::ENTRY_MEDIA_TYPE_SHOW, $producer_id, "&auto_edit.jpg", $kshow->getName()); // roughcut $kshow->createEntry(entry::ENTRY_MEDIA_TYPE_VIDEO, $producer_id); // intro /* $sample_text = $kshow->getName(); $host = requestUtils::getHost(); */ $sample_text = ""; myEntryUtils::modifyEntryMetadataWithText($show_entry, $sample_text, ""); // set the roughcut to false so the update iwll override with better data $kshow->setHasRoughcut(false); $kshow->initFromTemplate($producer_id, $sample_text); $kshow->save(); myNotificationMgr::createNotification(kNotificationJobData::NOTIFICATION_TYPE_KSHOW_ADD, $kshow); $this->addMsg("kshow", objectWrapperBase::getWrapperClass($kshow, $level)); if ($return_metadata) { $this->addMsg("metadata", $kshow->getMetadata()); } $this->addDebug("added_fields", $fields_modified); if ($kshows_from_db) { $this->addDebug("already_exists_objects", count($kshows_from_db)); } }
public function executeImpl($partner_id, $subp_id, $puser_id, $partner_prefix, $puser_kuser) { if (!$puser_kuser) { $this->addError(APIErrors::INVALID_USER_ID, $puser_id); return; } // get the new properties for the kshow from the request $kshow_update_data = new kshow(); $start_obj_creation = microtime(true); $kshow = new kshow(); $obj_wrapper = objectWrapperBase::getWrapperClass($kshow, 0); // $this->addDebug ( "timer_getWrapperClass1" , ( microtime( true ) - $start_obj_creation ) ); $timer = microtime(true); $fields_modified = baseObjectUtils::fillObjectFromMap($this->getInputParams(), $kshow, "kshow_", $obj_wrapper->getUpdateableFields()); // $this->addDebug ( "timer_fillObjectFromMap" , ( microtime( true ) - $timer ) ); $kshow->setName(trim($kshow->getName())); $kshow_id = $this->getPM("kshow_id"); $detailed = $this->getP("detailed", false); $allow_duplicate_names = $this->getP("allow_duplicate_names", true, true); if ($allow_duplicate_names === "false" || $allow_duplicate_names === 0) { $allow_duplicate_names = false; } if (count($fields_modified) > 0) { $timer = microtime(true); $kshow_from_db = kshowPeer::retrieveByPK($kshow_id); if (!$kshow_from_db) { // kshow with this id does not exists in the DB $this->addError(APIErrors::INVALID_KSHOW_ID, $kshow_id); return; } if (!$this->isOwnedBy($kshow_from_db, $puser_kuser->getKuserId())) { $this->verifyPrivileges("edit", $kshow_id); } // user was granted explicit permissions when initiatd the ks if (myPartnerUtils::shouldForceUniqueKshow($partner_id, $allow_duplicate_names)) { $kshow_with_name_from_db = kshowPeer::getFirstKshowByName($kshow->getName()); if ($kshow_with_name_from_db && $kshow_with_name_from_db->getId() != $kshow_id) { $this->addError(APIErrors::DUPLICATE_KSHOW_BY_NAME, $kshow->getName()); $level = $detailed ? objectWrapperBase::DETAIL_LEVEL_DETAILED : objectWrapperBase::DETAIL_LEVEL_REGULAR; if (myPartnerUtils::returnDuplicateKshow($partner_id)) { $this->addMsg("kshow", objectWrapperBase::getWrapperClass($kshow_from_db, $level)); } return; } } $this->addMsg("old_kshow", objectWrapperBase::getWrapperClass($kshow_from_db->copy(), objectWrapperBase::DETAIL_LEVEL_REGULAR)); // $this->addDebug ( "timer_db_retrieve" , ( microtime( true ) - $timer ) ); $timer = microtime(true); // copy relevant fields from $kshow -> $kshow_update_data baseObjectUtils::fillObjectFromObject($obj_wrapper->getUpdateableFields(), $kshow, $kshow_from_db, baseObjectUtils::CLONE_POLICY_PREFER_NEW, null, BasePeer::TYPE_PHPNAME); // $this->addDebug ( "timer_fillObjectFromObject" , ( microtime( true ) - $timer ) ); $timer = microtime(true); // TODO - move to some generic place myKshowUtils / kshow.php // TODO - this should be called only for the first time or whenever the user wants to force overriding the sample_text $force_sample_text = $this->getP("force_sample_text", false); $force_sample_text = false; $kuser_id = $puser_kuser->getKuserId(); /* $sample_text = "This is a collaborative video for 
'" . $kshow_from_db->getIndexedCustomData3() . "'.
Click 'Add to Video' to get started"; $kshow_from_db->initFromTemplate ( $kuser_id ,$sample_text ); */ // be sure to save the $kshow_from_db and NOT $kshow - this will create a new entry in the DB $kshow_from_db->save(); // update the name of the roughcut too $show_entry_id = $kshow_from_db->getShowEntryId(); $showEntry = entryPeer::retrieveByPK($show_entry_id); if ($showEntry) { $showEntry->setName($kshow_from_db->getName()); $showEntry->save(); } // TODO - decide which of the notifications should be called myNotificationMgr::createNotification(kNotificationJobData::NOTIFICATION_TYPE_KSHOW_UPDATE_INFO, $kshow_from_db); // or //myNotificationMgr::createNotification( notification::NOTIFICATION_TYPE_KSHOW_UPDATE_PERMISSIONS , $kshow_from_db ); // $this->addDebug ( "timer_db_save" , ( microtime( true ) - $timer ) ); $end_obj_creation = microtime(true); $this->addDebug("obj_creation_time", $end_obj_creation - $start_obj_creation); } else { $kshow_from_db = $kshow; // no fiends to update ! } // see if trying to rollback $desired_version = $this->getP("kshow_version"); if ($desired_version) { $result = $kshow_from_db->rollbackVersion($desired_version); if (!$result) { $this->addError(APIErrors::ERROR_KSHOW_ROLLBACK, $kshow_id, $desired_version); } } $this->addMsg("kshow", objectWrapperBase::getWrapperClass($kshow_from_db, objectWrapperBase::DETAIL_LEVEL_REGULAR)); $this->addDebug("modified_fields", $fields_modified); }