diff --git a/plugin/Plugin.abstract.php b/plugin/Plugin.abstract.php
index 3a6177579..8698dcb46 100644
--- a/plugin/Plugin.abstract.php
+++ b/plugin/Plugin.abstract.php
@@ -1,739 +1,755 @@
getUUID();
if (empty(PluginAbstract::$dataObject[$uuid])) {
$obj = Plugin::getPluginByUUID($uuid);
//echo $obj['object_data'];
$o = array();
if (!empty($obj['object_data'])) {
$o = _json_decode(stripslashes($obj['object_data']));
$json_last_error = json_last_error();
if ($json_last_error !== JSON_ERROR_NONE) {
//var_dump($this->getName(), $json_last_error, $o, $obj['object_data']);
//_error_log('getDataObject - JSON error (' . $json_last_error . ') ' . $this->getName()." ".$this->getUUID());
$o = _json_decode($obj['object_data']);
$json_last_error = json_last_error();
}
switch ($json_last_error) {
case JSON_ERROR_NONE:
//echo ' - No errors';
break;
default:
_error_log('getDataObject - JSON error ' . $this->getName());
_error_log($obj['object_data']);
_error_log('striped slashes');
_error_log(stripslashes($obj['object_data']));
case JSON_ERROR_DEPTH:
_error_log(' - Maximum stack depth exceeded');
break;
case JSON_ERROR_STATE_MISMATCH:
_error_log(' - Underflow or the modes mismatch');
break;
case JSON_ERROR_CTRL_CHAR:
_error_log(' - Unexpected control character found');
break;
case JSON_ERROR_SYNTAX:
_error_log(' - Syntax error, malformed JSON');
_error_log($obj['object_data']);
_error_log('striped slashes');
_error_log(stripslashes($obj['object_data']));
break;
case JSON_ERROR_UTF8:
_error_log(' - Malformed UTF-8 characters, possibly incorrectly encoded');
break;
}
}
$eo = $this->getEmptyDataObject();
// check if the plugin define any array for the select option, if does, overwrite it
foreach ($eo as $key => $value) {
if(empty($o->$key)){
continue;
}
$teo = gettype($value);
$to = gettype($o->$key);
if($teo !== $to){ // this will make sure the type is the same
if(!is_numeric($value) || !is_numeric($o->$key)){
if(!(is_int($value) && is_bool($o->$key)) && !(is_bool($value) && is_int($o->$key))){
_error_log("getDataObject - type is different $teo !== $to uuid = $uuid");
$o->$key = $value;
}
}
}
if(isset($value->type) && is_array($value->type) && isset($o->$key) && isset($o->$key->type)){
$o->$key->type = $value->type;
}
}
$wholeObjects = array_merge((array) $eo, (array) $o);
$disabledPlugins = plugin::getAllDisabled();
foreach ($disabledPlugins as $value) {
$p = AVideoPlugin::loadPlugin($value['dirName']);
if (is_object($p)) {
$foreginObjects = $p->getCustomizeAdvancedOptions();
if ($foreginObjects) {
foreach ($foreginObjects as $optionName => $defaultValue)
if (isset($wholeObjects[$optionName]))
unset($wholeObjects[$optionName]);
}
}
}
PluginAbstract::$dataObject[$this->getUUID()] = $wholeObjects;
}else {
$wholeObjects = PluginAbstract::$dataObject[$this->getUUID()];
}
//var_dump($obj['object_data']);
//var_dump($eo, $o, (object) array_merge((array) $eo, (array) $o));exit;
return (object) $wholeObjects;
}
public function setDataObject($object) {
$pluginRow = Plugin::getPluginByUUID($this->getUUID());
if(empty($pluginRow)){
return false;
}
$obj = new Plugin($pluginRow['id']);
$obj->setObject_data(addcslashes(json_encode($object), '\\'));
return $obj->save();
}
public function setDataObjectParameter($parameterName, $value) {
$object = $this->getDataObject();
eval("\$object->$parameterName = \$value;");
return $this->setDataObject($object);
}
public function getEmptyDataObject() {
$obj = new stdClass();
return $obj;
}
public function getFirstPage() {
return false;
}
+ public function onEncoderNotifyIsDone($videos_id) {
+ return false;
+ }
+
+ public function onEncoderReceiveImage($videos_id) {
+ return false;
+ }
+
+ public function onUploadIsDone($videos_id) {
+ return false;
+ }
+
+ public function onReceiveFile($videos_id) {
+ return false;
+ }
+
public function afterNewVideo($videos_id) {
return false;
}
public function afterDonation($from_users_id, $how_much, $videos_id, $users_id) {
return false;
}
public function afterNewComment($comments_id) {
return false;
}
public function afterNewResponse($comments_id) {
return false;
}
public function xsendfilePreVideoPlay() {
return false;
}
public function getLogin() {
$obj = new stdClass();
$obj->class = ""; // btn btn-primary btn-block
$obj->icon = ""; // fab fa-facebook-square
$obj->type = ""; // Facebook, Google, etc
$obj->linkToDevelopersPage = ""; //https://console.developers.google.com/apis/credentials , https://developers.facebook.com/apps
return $obj;
}
public function getWatchActionButton($videos_id) {
return "";
}
public function getNetflixActionButton($videos_id) {
return "";
}
public function getGalleryActionButton($videos_id) {
return "";
}
public function getStart() {
return false;
}
public function getEnd() {
return false;
}
public function afterVideoJS() {
return false;
}
public function canEditPlugin() {
global $global;
return empty($global['disableAdvancedConfigurations']);
}
public function hidePlugin() {
return false;
}
public function getChannelButton() {
return "";
}
public function getVideoManagerButton() {
return "";
}
public function getLivePanel() {
return "";
}
public function getPlayListButtons($playlist_id) {
return "";
}
public function getMyAccount($users_id) {
return "";
}
/**
*
* @return type array(array("key"=>'live key', "users"=>false, "name"=>$userName, "user"=>$user, "photo"=>$photo, "UserPhoto"=>$UserPhoto, "title"=>''));
*/
public function getLiveApplicationArray() {
return array();
}
public function addRoutes() {
return false;
}
public function addView($videos_id, $total) {
return false;
}
public function getCustomizeAdvancedOptions() {
return false;
}
public function getUserOptions() {
return array();
}
public function getModeYouTube($videos_id) {
return false;
}
public function getModeLive($key) {
return false;
}
public function getModeLiveLink($liveLink_id) {
return false;
}
public function getModeYouTubeLive($users_id) {
return false;
}
public function getEmbed($videos_id) {
return false;
}
/**
* Loads a channel before display the channel page, usefull to create customized channel pages
* @param type $user is an database array from channels owner
* @return boolean
*/
public function getChannel($user_id, $user) {
return false;
}
/**
*
* @return type return a list of IDs of the user groups
*/
public function getDynamicUserGroupsId($users_id) {
return array();
}
public function getDynamicUsersId($users_groups_id) {
return array();
}
public function navBarButtons() {
return "";
}
public function navBarProfileButtons() {
return "";
}
public function navBar() {
return "";
}
public function navBarAfter() {
return "";
}
public function isReady($pluginsList) {
$return = array('ready' => array(), 'missing' => array());
foreach ($pluginsList as $name) {
$plugin = AVideoPlugin::loadPlugin($name);
$uuid = $plugin->getUUID();
if (!AVideoPlugin::isEnabled($uuid)) {
$return['missing'][] = array('name' => $name, 'uuid' => $uuid);
} else {
$return['ready'][] = array('name' => $name, 'uuid' => $uuid);
}
}
return $return;
}
public function isReadyLabel($pluginsList) {
$desc = "
";
$ready = $this->isReady($pluginsList);
foreach ($ready['ready'] as $value) {
$desc .= "{$value['name']} ";
}
foreach ($ready['missing'] as $value) {
$desc .= "{$value['name']} ";
}
return $desc;
}
public function getAllVideosExcludeVideosIDArray() {
return array();
}
/**
*
* @param type $users_id
* @return 0 = I dont know, -1 = can not upload, 1 = can upload
*/
public function userCanUpload($users_id) {
return 0;
}
/**
*
* @param type $users_id
* @param type $videos_id
* @return 0 = I dont know, -1 = can not watch, 1 = can watch
*/
public function userCanWatchVideo($users_id, $videos_id) {
return 0;
}
/**
*
* @param type $users_id
* @param type $videos_id
* @return 0 = I dont know, -1 = can not watch, 1 = can watch
*/
public function userCanWatchVideoWithAds($users_id, $videos_id) {
return 0;
}
/**
* temporary, to avoid error on old secureVideosDirectory plugins
* @return boolean
*/
function verifyEmbedSecurity() {
return true;
}
function showAds($videos_id) {
return true;
}
function isPaidUser($users_id) {
return false;
}
function getVideo() {
return null;
}
public function onUserSignIn($users_id) {
return null;
}
public function onUserSignup($users_id) {
return null;
}
public function onLiveStream($users_id, $live_servers_id) {
return null;
}
public function thumbsOverlay($videos_id) {
return "";
}
public static function profileTabName($users_id) {
return "";
}
public static function profileTabContent($users_id) {
return "";
}
public static function getVideoWhereClause() {
return "";
}
public static function getManagerVideosAddNew() {
return "";
}
public static function saveVideosAddNew($post, $videos_id) {
return true;
}
public static function getManagerVideosReset() {
return "";
}
public static function getManagerVideosEdit() {
return "";
}
public static function getManagerVideosEditField() {
return "";
}
public static function getManagerVideosJavaScripts() {
return "";
}
public static function getManagerVideosTab() {
return "";
}
public static function getManagerVideosBody() {
return "";
}
public static function getAllVideosArray($videos_id) {
return array();
}
public static function getVideoTags($videos_id) {
return array();
}
public function getMobileInfo() {
return null;
}
public function getUploadMenuButton() {
return "";
}
public function dataSetup() {
return "";
}
function getPermissionsOptions(){
return array();
}
protected function addDataObjectHelper($property, $name, $description=""){
$this->dataObjectHelper[$property] = array("name"=>$name, "description"=>$description);
}
function getDataObjectHelper(){
return $this->dataObjectHelper;
}
function onUserSocketConnect(){
}
function onUserSocketDisconnect(){
}
function onVideoSetLive_transmitions_history_id($video_id, $oldValue, $newValue) {
}
function onVideoSetEncoderURL($video_id, $oldValue, $newValue) {
}
function onVideoSetFilepath($video_id, $oldValue, $newValue) {
}
function onVideoSetFilesize($video_id, $oldValue, $newValue) {
}
function onVideoSetUsers_id($video_id, $oldValue, $newValue) {
}
function onVideoSetSites_id($video_id, $oldValue, $newValue) {
}
function onVideoSetVideo_password($video_id, $oldValue, $newValue) {
}
function onVideoSetClean_title($video_id, $oldValue, $newValue) {
}
function onVideoSetDuration($video_id, $oldValue, $newValue) {
}
function onVideoSetIsSuggested($video_id, $oldValue, $newValue) {
}
function onVideoSetStatus($video_id, $oldValue, $newValue) {
}
function onVideoSetType($video_id, $oldValue, $newValue, $force) {
}
function onVideoSetRotation($video_id, $oldValue, $newValue) {
}
function onVideoSetZoom($video_id, $oldValue, $newValue) {
}
function onVideoSetDescription($video_id, $oldValue, $newValue) {
}
function onVideoSetCategories_id($video_id, $oldValue, $newValue) {
}
function onVideoSetVideoDownloadedLink($video_id, $oldValue, $newValue) {
}
function onVideoSetVideoGroups($video_id, $oldValue, $newValue) {
}
function onVideoSetTrailer1($video_id, $oldValue, $newValue) {
}
function onVideoSetTrailer2($video_id, $oldValue, $newValue) {
}
function onVideoSetTrailer3($video_id, $oldValue, $newValue) {
}
function onVideoSetRate($video_id, $oldValue, $newValue) {
}
function onVideoSetYoutubeId($video_id, $oldValue, $newValue) {
}
function onVideoSetTitle($video_id, $oldValue, $newValue) {
}
function onVideoSetFilename($video_id, $oldValue, $newValue, $force) {
}
function onVideoSetNext_videos_id($video_id, $oldValue, $newValue) {
}
function onVideoSetVideoLink($video_id, $oldValue, $newValue) {
}
function onVideoSetCan_download($video_id, $oldValue, $newValue) {
}
function onVideoSetCan_share($video_id, $oldValue, $newValue) {
}
function onVideoSetOnly_for_paid($video_id, $oldValue, $newValue) {
}
function onVideoSetRrating($video_id, $oldValue, $newValue) {
}
function onVideoSetExternalOptions($video_id, $oldValue, $newValue) {
}
function onVideoSetVideoStartSeconds($video_id, $oldValue, $newValue) {
}
function onVideoSetSerie_playlists_id($video_id, $oldValue, $newValue) {
}
function updateParameter($parameterName, $newValue) {
$pluginDO = $this->getDataObject();
$pluginDB = Plugin::getPluginByName($this->getName());
foreach ($pluginDO as $key => $value) {
if ($key == $parameterName) {
$pluginDO->$key = $newValue;
}
}
$p = new Plugin($pluginDB['id']);
$p->setObject_data(json_encode($pluginDO));
return $p->save();
}
public function getWalletConfigurationHTML($users_id, $wallet, $walletDataObject) {
return "";
}
}
class PluginPermissionOption{
private $type, $name, $description, $className;
function __construct($type, $name, $description, $className) {
$this->type = $type;
$this->name = $name;
$this->description = $description;
$this->className = $className;
}
function getType() {
return $this->type;
}
function getName() {
return $this->name;
}
function getDescription() {
return $this->description;
}
function getClassName() {
return $this->className;
}
}