function event_ExecuteEditor(&$data) { global $lang, $manager; if (isset($manager->types[$data['type']]['content']['movie']) && $data['sheet'] == 'movie') { if (isset($_REQUEST['json']) && $_REQUEST['json'] == 'list') { $res = sql::query("\r\n\t\t\t\t\t\tSELECT\r\n\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\tFROM\r\n\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_movie\r\n\t\t\t\t\t\tWHERE\r\n\t\t\t\t\t\t\tID='" . $data['params']['id'] . "' AND\r\n\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "'\r\n\t\t\t\t\t"); $tpl = new Template($this->getTemplate('json.template')); if ($movie = sql::fetch_array($res)) { $tpl->set("movie", $movie); } echo $tpl->fetch(); exit; } if (isset($_REQUEST['json']) && $_REQUEST['json'] == 'delete') { $res = sql::query("\r\n\t\t\t\t\t\tSELECT \r\n\t\t\t\t\t\t\t* \r\n\t\t\t\t\t\tFROM \r\n\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_movie\r\n\t\t\t\t\t\tWHERE \r\n\t\t\t\t\t\t\tID='" . $data['params']['id'] . "' AND\r\n\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "'\r\n\t\t\t\t\t"); if ($row = sql::fetch_array($res)) { $directory = _BASE_MEDIA_ . 'movies/'; if (file_exists($directory . $row['filename'])) { unlink($directory . $row['filename']); } $res = sql::query("\r\n\t\t\t\t\t\t\tDELETE FROM \r\n\t\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_movie\r\n\t\t\t\t\t\t\tWHERE \r\n\t\t\t\t\t\t\t\tID='" . $data['params']['id'] . "' AND\r\n\t\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "'\r\n\t\t\t\t\t\t"); } // Mark this action as a modification revisions::updateModificationDate($data['params']['id'], $data['params']['revision']); exit; } if ($_SERVER['REQUEST_METHOD'] == 'POST') { /* Upload */ if (isset($_FILES['Filedata'])) { if ($_FILES['Filedata']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['Filedata']['tmp_name'])) { $directory = _BASE_MEDIA_ . 'movies/'; $original = $_FILES['Filedata']['name']; $contenttype = files::getCleanContentType($_FILES['Filedata']['type'], $_FILES['Filedata']['name']); $filename = files::getUniqueName($contenttype, $directory); if (files::allowedContentType($contenttype, 'movie')) { // Insert into database... move_uploaded_file($_FILES['Filedata']['tmp_name'], $directory . $filename); $res = sql::query("\r\n\t\t\t\t\t\t\t\t\tINSERT INTO\r\n\t\t\t\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_movie \r\n\t\t\t\t\t\t\t\t\tSET \r\n\t\t\t\t\t\t\t\t\t\tID='" . $data['params']['id'] . "', \r\n\t\t\t\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "',\r\n\t\t\t\t\t\t\t\t\t\tfilename='" . addslashes($filename) . "', \r\n\t\t\t\t\t\t\t\t\t\tname='" . addslashes($original) . "',\r\n\t\t\t\t\t\t\t\t\t\ttype='" . addslashes($contenttype) . "', \r\n\t\t\t\t\t\t\t\t\t\tsize='" . addslashes($_FILES['Filedata']['size']) . "',\r\n\t\t\t\t\t\t\t\t\t\twidth=320,\r\n\t\t\t\t\t\t\t\t\t\theight=240,\r\n\t\t\t\t\t\t\t\t\t\tautostart=0\r\n\t\t\t\t\t\t\t\t"); // Mark this action as a modification revisions::updateModificationDate($data['params']['id'], $data['params']['revision']); // Workaround for a Flash bug on OS X.. We need to send back content... any content will do echo " "; flush(); exit; } else { header("HTTP/1.1 415 Unsupported Media Type"); header("Status: 415 Unsupported Media Type"); exit; } } else { switch ($_FILES['Filedata']['error']) { case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: header("HTTP/1.1 413 Request Entity Too Large"); header("Status: 413 Request Entity Too Large"); exit; case UPLOAD_ERR_NO_FILE: case UPLOAD_ERR_PARTIAL: default: header("HTTP/1.1 400 Bad Request"); header("Status: 400 Bad Request"); exit; } } } else { // Update size and autostart $autostart = isset($_REQUEST['autostart']) ? intval($_REQUEST['autostart']) : 0; $width = isset($_REQUEST['size']) ? intval($_REQUEST['size']) : 320; switch ($width) { case 320: $height = 240; case 640: $height = 480; default: $height = round($width / 4 * 3); } $res = sql::query("\r\n\t\t\t\t\t\t\tUPDATE\r\n\t\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_movie\r\n\t\t\t\t\t\t\tSET\r\n\t\t\t\t\t\t\t\twidth='" . addslashes($width) . "',\r\n\t\t\t\t\t\t\t\theight='" . addslashes($height) . "',\r\n\t\t\t\t\t\t\t\tautostart='" . addslashes($autostart) . "'\r\n\t\t\t\t\t\t\tWHERE\r\n\t\t\t\t\t\t\t\tID='" . $data['params']['id'] . "' AND\r\n\t\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "'\r\n\t\t\t\t\t\t"); } // Mark this action as a modification revisions::updateModificationDate($data['params']['id'], $data['params']['revision']); header("Location: " . url::item($data['params']['id'], 'edit') . "/movie?revision=" . $data['params']['revision']); exit; } $res = sql::query("\r\n\t\t\t\t\tSELECT\r\n\t\t\t\t\t\t*\r\n\t\t\t\t\tFROM\r\n\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_movie\r\n\t\t\t\t\tWHERE\r\n\t\t\t\t\t\tID='" . $data['params']['id'] . "' AND\r\n\t\t\t\t\t\trevision='" . $data['params']['revision'] . "'\r\n\t\t\t\t"); $tpl = new Template($this->getTemplate('editor.template')); if ($movie = sql::fetch_array($res)) { $tpl->set("movie", $movie); } $tpl->set("id", $data['params']['id']); $tpl->set("revision", $data['params']['revision']); $tpl->set("filemask", files::getFilemask('movie')); $tpl->set("ticket", ticket::generate($data['params']['id'])); $data['template']->append('content', $tpl->fetch()); // Make sure the following assets are included $data['page']->assets->registerJavascript('/core/assets/javascript/plugin.js'); $data['page']->assets->registerJavascript('/core/assets/javascript/flash.js'); $data['page']->assets->registerJavascript('/core/assets/javascript/upload.js'); $data['page']->assets->registerJavascript('/core/assets/javascript/progress.js'); $data['page']->assets->registerJavascript($this->localAsset('editor.js')); $data['page']->assets->registerJavascript($this->localAsset('player.js')); } }
function event_ExecuteEditor(&$data) { global $lang, $manager; if (isset($manager->types[$data['type']]['content']['files']) && ($data['sheet'] == 'attachments' || $data['sheet'] == 'files')) { if (isset($_REQUEST['json']) && $_REQUEST['json'] == 'list') { $tpl = new Template($this->getTemplate('json.template')); if ($data['sheet'] == 'files') { $tpl->set("files", $this->_files_list($data['params']['id'], $data['params']['revision'])); } else { $tpl->set("files", $this->_attachments_list($data['params']['id'], $data['params']['revision'])); } echo $tpl->fetch(); exit; } if (isset($_REQUEST['json']) && $_REQUEST['json'] == 'delete') { $res = sql::query("\r\n\t\t\t\t\t\tSELECT \r\n\t\t\t\t\t\t\t* \r\n\t\t\t\t\t\tFROM \r\n\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_files \r\n\t\t\t\t\t\tWHERE \r\n\t\t\t\t\t\t\tID='" . $data['params']['id'] . "' AND \r\n\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "' AND \r\n\t\t\t\t\t\t\tfilename='" . addslashes($_POST['delete']) . "'\r\n\t\t\t\t\t"); if ($row = sql::fetch_array($res)) { $directory = _BASE_MEDIA_ . 'files/'; if (file_exists($directory . $row['filename'])) { unlink($directory . $row['filename']); } $res = sql::query("\r\n\t\t\t\t\t\t\tDELETE FROM \r\n\t\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_files \r\n\t\t\t\t\t\t\tWHERE \r\n\t\t\t\t\t\t\t\tID='" . $data['params']['id'] . "' AND \r\n\t\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "' AND \r\n\t\t\t\t\t\t\t\tfilename='" . addslashes($row['filename']) . "'\r\n\t\t\t\t\t\t"); } // Mark this action as a modification revisions::updateModificationDate($data['params']['id'], $data['params']['revision']); exit; } if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_REQUEST['files']) && is_array($_REQUEST['files'])) { // Update title and position while (list($id, $file) = each($_REQUEST['files'])) { $res = sql::query("\r\n\t\t\t\t\t\t\t\tUPDATE\r\n\t\t\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_files \r\n\t\t\t\t\t\t\t\tSET\r\n\t\t\t\t\t\t\t\t\ttitle='" . addslashes($file['title']) . "',\r\n\t\t\t\t\t\t\t\t\tposition='" . addslashes($file['position']) . "'\r\n\t\t\t\t\t\t\t\tWHERE \r\n\t\t\t\t\t\t\t\t\tID='" . $data['params']['id'] . "' AND \r\n\t\t\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "' AND \r\n\t\t\t\t\t\t\t\t\tfilename='" . addslashes($id) . "'\r\n\t\t\t\t\t\t\t"); } // Mark this action as a modification revisions::updateModificationDate($data['params']['id'], $data['params']['revision']); } if (isset($_FILES['Filedata'])) { $flashUsed = preg_match('/Flash/i', $_SERVER['HTTP_USER_AGENT']); if ($_FILES['Filedata']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['Filedata']['tmp_name'])) { $directory = _BASE_MEDIA_ . 'files/'; $original = $_FILES['Filedata']['name']; $contenttype = files::getCleanContentType($_FILES['Filedata']['type'], $_FILES['Filedata']['name']); $filename = files::getUniqueName($contenttype, $directory); if (files::allowedContentType($contenttype)) { // Insert into database... @move_uploaded_file($_FILES['Filedata']['tmp_name'], $directory . $filename); $attachment = $data['sheet'] == 'files' ? 0 : 1; $res = sql::query("\r\n\t\t\t\t\t\t\t\t\tSELECT \r\n\t\t\t\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\t\t\t\tFROM\r\n\t\t\t\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_files \r\n\t\t\t\t\t\t\t\t\tWHERE\r\n\t\t\t\t\t\t\t\t\t\tID = " . $data['params']['id'] . " AND\r\n\t\t\t\t\t\t\t\t\t\trevision = " . $data['params']['revision'] . " AND\r\n\t\t\t\t\t\t\t\t\t\tattachment = " . $attachment . "\r\n\t\t\t\t\t\t\t\t\tORDER BY\r\n\t\t\t\t\t\t\t\t\t\tposition DESC\r\n\t\t\t\t\t\t\t\t\tLIMIT 1\r\n\t\t\t\t\t\t\t\t"); if ($row = sql::fetch_array($res)) { $position = $row['position'] + 1; } else { $position = 0; } $res = sql::query("\r\n\t\t\t\t\t\t\t\t\tINSERT INTO \r\n\t\t\t\t\t\t\t\t\t\t" . _TABLE_PREFIX_ . "contents_files \r\n\t\t\t\t\t\t\t\t\tSET \r\n\t\t\t\t\t\t\t\t\t\tID='" . $data['params']['id'] . "', \r\n\t\t\t\t\t\t\t\t\t\trevision='" . $data['params']['revision'] . "', \r\n\t\t\t\t\t\t\t\t\t\tfilename='" . addslashes($filename) . "', \r\n\t\t\t\t\t\t\t\t\t\tname='" . addslashes($original) . "',\r\n\t\t\t\t\t\t\t\t\t\ttype='" . addslashes($contenttype) . "', \r\n\t\t\t\t\t\t\t\t\t\ttitle='" . addslashes($original) . "',\r\n\t\t\t\t\t\t\t\t\t\tsize='" . addslashes($_FILES['Filedata']['size']) . "',\r\n\t\t\t\t\t\t\t\t\t\tposition='" . $position . "',\r\n\t\t\t\t\t\t\t\t\t\tattachment='" . $attachment . "',\r\n\t\t\t\t\t\t\t\t\t\tmodified=NOW()\r\n\t\t\t\t\t\t\t\t"); // Mark this action as a modification revisions::updateModificationDate($data['params']['id'], $data['params']['revision']); if (!$flashUsed) { header("Location: " . url::item($data['params']['id'], 'edit') . "/" . $data['sheet'] . "?revision=" . $data['params']['revision']); } else { // Workaround for a Flash bug on OS X.. We need to send back content... any content will do echo " "; flush(); } } else { if ($flashUsed) { header("HTTP/1.1 415 Unsupported Media Type"); header("Status: 415 Unsupported Media Type"); } else { header("Location: " . url::item($data['params']['id'], 'edit') . "/" . $data['sheet'] . "?revision=" . $data['params']['revision']); } } exit; } else { switch ($_FILES['Filedata']['error']) { case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: if ($flashUsed) { header("HTTP/1.1 413 Request Entity Too Large"); header("Status: 413 Request Entity Too Large"); } else { header("Location: " . url::item($data['params']['id'], 'edit') . "/" . $data['sheet'] . "?revision=" . $data['params']['revision']); } break; case UPLOAD_ERR_NO_FILE: case UPLOAD_ERR_PARTIAL: if ($flashUsed) { header("HTTP/1.1 400 Bad Request"); header("Status: 400 Bad Request"); } else { header("Location: " . url::item($data['params']['id'], 'edit') . "/" . $data['sheet'] . "?revision=" . $data['params']['revision']); } break; case UPLOAD_ERR_NO_TMP_DIR: case UPLOAD_ERR_CANT_WRITE: case UPLOAD_ERR_EXTENSION: default: if ($flashUsed) { header("HTTP/1.1 500 Internal Error"); header("Status: 500 Internal Error"); } else { header("Location: " . url::item($data['params']['id'], 'edit') . "/" . $data['sheet'] . "?revision=" . $data['params']['revision']); } break; } exit; } } header("Location: " . url::item($data['params']['id'], 'edit') . "/" . $data['sheet'] . "?revision=" . $data['params']['revision']); exit; } $tpl = new Template($this->getTemplate('editor.template')); if ($data['sheet'] == 'files') { $tpl->set("files", $this->_files_list($data['params']['id'], $data['params']['revision'])); } else { $tpl->set("files", $this->_attachments_list($data['params']['id'], $data['params']['revision'])); } $tpl->set("id", $data['params']['id']); $tpl->set("revision", $data['params']['revision']); $tpl->set("filemask", files::getFilemask()); $tpl->set("ticket", ticket::generate($data['params']['id'])); $tpl->set("sheet", $data['sheet']); $data['template']->append('content', $tpl->fetch()); // Make sure the following assets are included $data['page']->assets->registerJavascript('/core/assets/javascript/plugin.js'); $data['page']->assets->registerJavascript('/core/assets/javascript/flash.js'); $data['page']->assets->registerJavascript('/core/assets/javascript/upload.js'); $data['page']->assets->registerJavascript('/core/assets/javascript/progress.js'); $data['page']->assets->registerCSS($this->localAsset('editor.css')); $data['page']->assets->registerJavascript($this->localAsset('editor.js')); } }