query("DELETE FROM ".$canvas->main." WHERE block_id = '$block_id'");
if($variables = $wpdb->get_results("SELECT variable_id, type FROM ".$canvas->variables." WHERE parent = '$block_id'")) {
foreach($variables as $variable) {
$wpdb->query("DELETE FROM ".$canvas->variables." WHERE parent = '$block_id'");
if($variable->type == 'Radio' || $variable->type == 'Image' || $variable->type == 'Select')
$wpdb->query("DELETE FROM ".$canvas->options." WHERE var_id = '".$variable->variable_id."'");
}
}
}
function canvas_delete_block_by_mod_ID($customWriteModuleId) {
global $wpdb, $canvas;
if ($blocks = $wpdb->get_results("SELECT block_id FROM ".$canvas->main." WHERE module_id = ".$customWriteModuleId)){
foreach($blocks as $block)
canvas_delete_block($block->block_id);
}
}
function canvas_import_form() {
?>
Import from XML
If you're using a correctly built Canvas-compatible theme, you can import layout schemes from other users.
Cancel
"."[[:space:]]+"."<","><",$data);
$data = eregi_replace(">"."[[:space:]]+",">",$data);
$data = eregi_replace("[[:space:]]+"."<","<",$data);
if (!xml_parse($xmlparser, $data, feof($fp)))
$error = "XML error parsing ".$filename;
}
xml_parser_free($xmlparser);
$block_ids = $wpdb->get_results("SELECT block_id FROM ".$canvas->main." WHERE theme = '".get_option('template')."'");
foreach($block_ids as $block_id) {
canvas_delete_block($block_id->block_id);
}
canvas_install(); // clean install
foreach($imported_blocks as $key => $block) {
$old_block = $wpdb->get_results("SELECT block_id, zone FROM ".$canvas->main." WHERE ubi = '".$block['ubi']."'");
$old_block = $old_block[0];
//if($old_block->zone != 'shelf') $old_block = canvas_duplicate_block($old_block->block_id);
$wpdb->query("UPDATE ".$canvas->main." SET zone = '".$block['zone']."', position = '".$block['position']."' WHERE block_id = '".$old_block->block_id."'");
if($imported_variables && $block['type'] == 'plugin') {
foreach($imported_variables[$key] as $variables) {
$wpdb->query("UPDATE ".$canvas->variables." SET value = '".addslashes($variables['value'])."' WHERE variable_name = '".addslashes($variables['name'])."' AND parent = '".$old_block->block_id."'");
}
}
}
}
function canvas_import_plugin($moduleID, $filename, $position, $modTitle, $template_page, $duplicate_id, $block_id = -1) {
global $wpdb, $canvas;
if(substr($filename, -13) == 'configure.xml') {
$plugin = canvas_get_plugin($filename, $modTitle);
$path = $plugin->functionPath;
list($plugin_id, $position) = canvas_install_plugin_data($moduleID, $plugin, $position, $template_page, $duplicate_id, $block_id);
if (!empty($plugin->variables)) {
// Import or update variables
foreach($plugin->variables as $variable) {
//$name = $path.'_'.str_replace(array(' ','.'), '_', addslashes($variable['name']));
$name = str_replace(array(' ','.'), '_', addslashes($variable['name']));
$type = $variable['type'];
$default = addslashes($variable['default']);
$description = addslashes($variable['description']);
$options = $variable['option'];
canvas_install_variable_data($name, $plugin_id, $type, $default, $description, $options);
}
}
// Delete obselete variables
$blockVars = $wpdb->get_results("SELECT * FROM ".$canvas->variables." WHERE parent = '$plugin_id'");
foreach($blockVars as $blockVar){
$found = false;
if (!empty($plugin->variables)){
foreach($plugin->variables as $variable) {
//$name = $path.'_'.str_replace(array(' ','.'), '_', addslashes($variable['name']));
$name = str_replace(array(' ','.'), '_', addslashes($variable['name']));
if ($name == $blockVar->variable_name) $found = true;
}
}
if (!$found){
$wpdb->query("DELETE FROM ".$canvas->variables." WHERE variable_id = ". $blockVar->variable_id);
}
}
}
return $plugin;
}
function get_template_pages($template) {
$result = array();
$filename = ABSPATH.'/wp-content/themes/'.$template.'/canvas.php';
if(file_exists($filename)) {
$file_data = implode('', file($filename));
preg_match_all("||", $file_data, $pages);
if(!empty($pages[2])) {
foreach($pages[2] as $page) {
list($page_name, $id) = split('\s*\|\s*',$page);
$result[] = trim($id);
}
}
}
return $result;
}
function canvas_import_plugins($position, $dir='') {
global $wpdb, $canvas;
include_once "RCCWP_Application.php";
$customModules = RCCWP_CustomWriteModule::GetCustomModules();
$currDuplicates = $wpdb->get_results("SELECT * FROM ".$canvas->duplicates);
$template = get_option('template');
$template_pages = get_template_pages($template);
$currModules = $wpdb->get_results("SELECT * FROM ".$canvas->main);
foreach($currModules as $currModule){
// Delete obselete modules
$found = false;
foreach($customModules as $customModule){
if ($customModule->id == $currModule->module_id) $found = true;
}
if (!$found){
canvas_delete_block_by_mod_ID($currModule->module_id);
$wpdb->query("DELETE FROM ".$canvas->duplicates." WHERE module_id = '$currModule->module_id'");
}
// Delete obselete duplicates
$found = false;
foreach($currDuplicates as $currDuplicate){
if ($currDuplicate->duplicate_id == $currModule->duplicate_id) $found = true;
}
if (!$found && $currModule->duplicate_id != 0){
canvas_delete_block($currModule->block_id);
}
}
// Insert/Update modules in canvas table
foreach($customModules as $customModule){
foreach($template_pages as $template_page){
$currModules = $wpdb->get_results("SELECT * FROM ".$canvas->main." WHERE module_id = '$customModule->id' AND theme = '".get_option('template')."' AND page='$template_page'");
// --- The module doesn't exist in the database, insert it for the first time
if (!$currModules){
$configFile = $dir.$customModule->name."/configure.xml";
if (file_exists($configFile)){
$plugin = canvas_import_plugin($customModule->id, $configFile, $position, $customModule->name, $template_page, 0);
$position++;
}
}
// --- If a duplicate doesn't exist, insert it
$currDuplicates = $wpdb->get_results("SELECT * FROM ".$canvas->duplicates." WHERE module_id = '$customModule->id'");
foreach($currDuplicates as $currDuplicate){
if (!$wpdb->get_results("SELECT * FROM ".$canvas->main." WHERE module_id = '$customModule->id' AND theme = '".get_option('template')."' AND page='$template_page' AND duplicate_id = $currDuplicate->duplicate_id")){
$configFile = $dir.$customModule->name."/configure.xml";
if (file_exists($configFile)){
$plugin = canvas_import_plugin($customModule->id, $configFile, $position, $currDuplicate->duplicate_name, $template_page, $currDuplicate->duplicate_id);
$position++;
}
}
}
// --- Update each instance of this module
foreach($currModules as $currModule){
$configFile = $dir.$customModule->name."/configure.xml";
// Get module name
include_once('RCCWP_CustomWriteModule.php');
$customWriteModule = RCCWP_CustomWriteModule::Get($currModule->module_id);
$currModule->module_name = $customWriteModule->name;
$modID = $currModule->block_id;
$modName = $currModule->module_name;
$modTemplateName = $currModule->template_name; // $wpdb->get_var("SELECT template_name FROM ".$canvas->main." WHERE module_name = '$customModule->name' AND theme = '".get_option('template')."'");
$modTemplateSize = $currModule->template_size; //$wpdb->get_var("SELECT template_size FROM ".$canvas->main." WHERE module_name = '$customModule->name' AND theme = '".get_option('template')."'");
// Check whether there is a custom configure.xml defined for this module
$overidConfig = get_module_template_folder($modName, $modTemplateName, $modTemplateSize)."configure.xml";
if (file_exists($overidConfig))
$configFile = $overidConfig;
if (file_exists($configFile)){
$plugin = canvas_import_plugin($customModule->id, $configFile, $position, $modName, $template_page, $currDuplicate->duplicate_id, $modID);
$position++;
}
}
}
}
return array($plugin, $position);
}
function canvas_install_plugin_data($moduleID, $plugin, $position, $template_page, $duplicate_id, $block_id = -1) {
global $wpdb, $canvas;
//$name = addslashes($plugin->functionName);
$author = $plugin->functionAuthor;
$uri = $plugin->functionUri;
$description = addslashes($plugin->functionDesc);
$group = $plugin->functionGroup;
$path = $plugin->functionPath;
$ubi = md5($name.$author.$uri.$description.$group.$path);
if ($block_id == -1){
//if (!$wpdb->get_var("SELECT module_id FROM ".$canvas->main." WHERE module_id = $moduleID AND theme = '".get_option('template')."' AND page='$template_page'") ) {
// install module for the first time
$wpdb->query("INSERT INTO ".$canvas->main." (module_id, type, zone, position, author, description, block_group, uri, path, theme, ubi, duplicate_id, page) VALUES ($moduleID, 'plugin','shelf','$position','$author','$description','$group','$uri','$path','".get_option('template')."','$ubi', $duplicate_id, '$template_page')");
$position++;
$plugin_id = mysql_insert_id($wpdb->dbh);
}
else{
//if ($wpdb->get_var("SELECT block_id FROM ".$canvas->main." WHERE block_id = $block_id"))
//If this the main module, not a duplicate, update its name
$wpdb->query("UPDATE ".$canvas->main.
" SET author = '$author', description = '$description', path ='$path'".
" WHERE block_id = $block_id");
//..else
// $wpdb->query("UPDATE ".$canvas->main.
// " SET author = '$author', description = '$description', path ='$path'".
// " WHERE block_id = $block_id");
$plugin_id = $wpdb->get_var("SELECT block_id FROM ".$canvas->main." WHERE block_id = $block_id");
$position = $wpdb->get_var("SELECT position FROM ".$canvas->main." WHERE block_id = $block_id");
}
return array($plugin_id,$position);
}
function canvas_install_variable_data($name, $parent, $type, $default, $description, $options) {
global $wpdb, $canvas;
if (!$wpdb->get_var("SELECT variable_name FROM ".$canvas->variables." WHERE variable_name = '$name' AND parent = '$parent'") ) {
$wpdb->query("INSERT INTO ".$canvas->variables." (variable_name,parent,type,value,default_value,description) VALUES ('$name','$parent','$type','$default','$default','$description')");
$var_id = $wpdb->get_var("SELECT variable_id FROM ".$canvas->variables." WHERE variable_name = '$name' AND parent = '$parent'");
if (!empty($options)) {
foreach($options as $option) {
$option_name = addslashes($option['name']);
$option_value = addslashes($option['value']);
$option_params = addslashes($option['params']);
$wpdb->query("INSERT INTO ".$canvas->options." (var_id, option_text, option_value, option_params) VALUES ('$var_id','$option_name','$option_value','$option_params')");
}
}
}
else{
$extraParam = '';
if ('__RESETDEFAULT__' == $wpdb->get_var("SELECT default_value FROM ".$canvas->variables." WHERE variable_name = '$name' AND parent = '$parent'"))
$extraParam = ", value = '$default' ";
$wpdb->query("UPDATE ".$canvas->variables.
" SET type = '$type', default_value = '$default', description = '$description' ". $extraParam.
" WHERE variable_name = '$name' AND parent = '$parent'");
$var_id = $wpdb->get_var("SELECT variable_id FROM ".$canvas->variables." WHERE variable_name = '$name' AND parent = '$parent'");
$wpdb->query("DELETE FROM ".$canvas->options." WHERE var_id = '$var_id'");
if (!empty($options)) {
foreach($options as $option) {
$option_name = addslashes($option['name']);
$option_value = addslashes($option['value']);
$option_params = addslashes($option['params']);
$wpdb->query("INSERT INTO ".$canvas->options." (var_id,option_text,option_value, option_params) VALUES ('$var_id','$option_name','$option_value','$option_params')");
}
}
}
}
function canvas_restore_form($xml_path) {
?>
Restore from XML
Attempt to restore this theme's layout to the default settings.
Cancel