function resizer_route($route) { if (!isset($route['params']['wildcard'])) { return false; } $config = ImageResizer::getConfig(); $parts = explode('/', $route['params']['wildcard']); $params = array('w' => 'width', 'h' => 'height', 'q' => 'quality', 'cw' => 'crop_width', 'ch' => 'crop_height', 's' => 'scale', 'r' => 'rotation', 'xgr' => 'IMG_FILTER_GRAYSCALE', 'xbr' => 'brightness', 'xcn' => 'IMG_FILTER_CONTRAST', 'xco' => 'IMG_FILTER_COLORIZE', 'xed' => 'IMG_FILTER_EDGEDETECT', 'xem' => 'IMG_FILTER_EMBOSS', 'xgb' => 'IMG_FILTER_GAUSSIAN_BLUR', 'xsb' => 'IMG_FILTER_SELECTIVE_BLUR', 'xmr' => 'IMG_FILTER_MEAN_REMOVAL', 'xsm' => 'IMG_FILTER_SMOOTH', 'xpx' => 'IMG_FILTER_PIXELATE', 'cx' => 'cropx', 'cy' => 'cropy'); $file = null; $options = array(); for ($i = 0; $i < sizeof($parts); $i++) { $part = $parts[$i]; if (is_array($file)) { $file[] = $part; } else { if ($part == 'bw') { $options['blackwhite'] = true; } else { if ($part == 'ratio') { $options['ratio'] = true; } else { if ($part == 'crop') { $options['crop'] = true; } else { if (preg_match('/^([a-z]+)([0-9\\.]+)$/', $part, $matches)) { if (isset($params[$matches[1]])) { $options[$params[$matches[1]]] = $matches[2]; } else { $options[$matches[1]] = $matches[2]; } } else { if ($part == 'f') { $file = array(); } else { if (isset($config['size'][$part])) { $options = array_merge($options, $config['size'][$part]); } } } } } } } } if (!is_array($file)) { return false; } else { $file = Gregory::absolutePath(implode('/', $file), array($config['path'])); } if (!$file || empty($file)) { return false; } ini_set("memory_limit", $config['memory_limit']); $Resizer = new ImageResizer($file); $Resizer->resize($options); $Resizer->render(); return true; }
function processImages($image, &$imagePath, &$bigImagePath) { $result = null; if ($_FILES[$image]["error"] == UPLOAD_ERR_OK) { $tmp_name = $_FILES[$image]["tmp_name"]; $name = $_FILES[$image]["name"]; $target_file = dirname(__DIR__) . "/images/" . $name; $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION)); if (file_exists($target_file)) { $bigImagePath = str_replace($_SERVER['DOCUMENT_ROOT'], "", $target_file); $imagePath = ImageResizer::i()->resizeImage($target_file, 200, 200); if ($imagePath == null) { $result = "Resizing failed"; } } else { if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") { $result = "Invalid File Type. Only JPG, PNG and GIF are allowed"; } else { if (move_uploaded_file($tmp_name, $target_file)) { $bigImagePath = str_replace($_SERVER['DOCUMENT_ROOT'], "", $target_file); $imagePath = ImageResizer::i()->resizeImage($target_file, 200, 200); if ($imagePath == null) { $result = "Resizing failed"; } } else { $result = "Moving failed"; } } } } else { $result = "Upload failed"; } return $result; }
function fetchFile($dropbox, $filename, $username, $userid) { $temp = dirname(dirname(__FILE__)) . '/pictures/' . $username . '/temp/' . Util::getFileNameFromPath($filename); $pic = $dropbox->getFile($filename); file_put_contents($temp, $pic['data']); $this->saveFileToDB($temp, $userid); unset($pic); $thumbnail = dirname(dirname(__FILE__)) . '/pictures/' . $username . '/thumbnails/' . Util::getFileNameFromPath($filename); $optimized = dirname(dirname(__FILE__)) . '/pictures/' . $username . '/optimized/' . Util::getFileNameFromPath($filename); $main = dirname(dirname(__FILE__)) . '/pictures/' . $username . '/main/' . Util::getFileNameFromPath($filename); $resizer = new ImageResizer($temp); $resizer->resize(80, $thumbnail); $resizer->resize(460, $optimized); $resizer->resize(800, $main); unlink($temp); unset($resizer); }
public static function generateAvatarThumb($upload_name, $folder, $filename) { //Start to check if the File type is Image type, so we Generate Everythumb size for it if (in_array(strtolower(CFileHelper::getExtension($upload_name)), array('gif', 'jpg', 'png'))) { //Start to create Thumbs for it $sizes = AvatarSize::getSizes(); foreach ($sizes as $size) { if (!(file_exists(AVATAR_FOLDER . DIRECTORY_SEPARATOR . $size['id'] . DIRECTORY_SEPARATOR . $folder) && AVATAR_FOLDER . DIRECTORY_SEPARATOR . $size . DIRECTORY_SEPARATOR . $folder)) { mkdir(AVATAR_FOLDER . DIRECTORY_SEPARATOR . $size['id'] . DIRECTORY_SEPARATOR . $folder, 0777, true); } $thumbs = new ImageResizer(AVATAR_FOLDER . DIRECTORY_SEPARATOR . 'root' . DIRECTORY_SEPARATOR . $folder . DIRECTORY_SEPARATOR, $filename, AVATAR_FOLDER . DIRECTORY_SEPARATOR . $size['id'] . DIRECTORY_SEPARATOR . $folder . DIRECTORY_SEPARATOR, $filename, $size['width'], $size['height'], $size['ratio'], 90, '#FFFFFF'); $thumbs->output(); } } }
public function uploadItemResources($aResources, $itemId) { if ($aResources != '') { $itemResourceManager = ItemResource::newInstance(); foreach ($aResources['error'] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmpName = $aResources['tmp_name'][$key]; $itemResourceManager->insert(array('fk_i_item_id' => $itemId)); $resourceId = $itemResourceManager->getConnection()->get_last_id(); // Create thumbnail $path = osc_content_path() . 'uploads/' . $resourceId . '_thumbnail.png'; $size = explode('x', osc_thumbnail_dimensions()); ImageResizer::fromFile($tmpName)->resizeTo($size[0], $size[1])->saveToFile($path); // Create normal size $path = osc_content_path() . 'uploads/' . $resourceId . '.png'; $size = explode('x', osc_normal_dimensions()); ImageResizer::fromFile($tmpName)->resizeTo($size[0], $size[1])->saveToFile($path); if (osc_keep_original_image()) { $path = osc_content_path() . 'uploads/' . $resourceId . '_original.png'; move_uploaded_file($tmpName, $path); } $s_path = 'oc-content/uploads/'; $resourceType = 'image/png'; $itemResourceManager->update(array('s_path' => $s_path, 's_name' => osc_genRandomPassword(), 's_extension' => 'png', 's_content_type' => $resourceType), array('pk_i_id' => $resourceId, 'fk_i_item_id' => $itemId)); } } unset($itemResourceManager); } }
function pieform_element_filebrowser_upload(Pieform $form, $element, $data) { global $USER; $parentfolder = $data['uploadfolder'] ? (int) $data['uploadfolder'] : null; $institution = !empty($element['institution']) ? $element['institution'] : $form->get_property('institution'); $group = !empty($element['group']) ? $element['group'] : $form->get_property('group'); if (get_config('licensemetadata')) { $license = $data['license']; $licensor = $data['licensor']; $licensorurl = $data['licensorurl']; } $uploadnumber = (int) $data['uploadnumber']; $editable = (int) $element['config']['edit']; $selectable = (int) $element['config']['select']; $querybase = $element['page'] . (strpos($element['page'], '?') === false ? '?' : '&'); $prefix = $form->get_name() . '_' . $element['name']; $userfileindex = isset($data['userfileindex']) ? $data['userfileindex'] : null; $resizeonuploadenable = get_config_plugin('artefact', 'file', 'resizeonuploadenable'); $resizeonuploaduseroption = get_config_plugin('artefact', 'file', 'resizeonuploaduseroption'); $resizeonuploaduserenable = (int) $data['resizeonuploaduserenable']; $result = array('error' => false, 'uploadnumber' => $uploadnumber); if ($parentfolder == 0) { $parentfolder = null; } $data = new StdClass(); $data->parent = $parentfolder; $data->owner = $data->group = $data->institution = null; if (get_config('licensemetadata')) { $data->license = $license; $data->licensor = $licensor; $data->licensorurl = $licensorurl; } if ($parentfolder) { $parentartefact = artefact_instance_from_id($parentfolder); if (!$USER->can_edit_artefact($parentartefact)) { $result['error'] = true; $result['message'] = get_string('cannoteditfolder', 'artefact.file'); return $result; } else { if ($parentartefact->get('locked')) { $result['error'] = true; $result['message'] = get_string('cannoteditfoldersubmitted', 'artefact.file'); return $result; } } $parentfoldername = $parentartefact->get('title'); } else { $parentfoldername = null; } if ($institution) { if (!$USER->can_edit_institution($institution)) { $result['error'] = true; $result['message'] = get_string('notadminforinstitution', 'admin'); return $result; } $data->institution = $institution; } else { if ($group) { if (!group_within_edit_window($group)) { return array('error' => true, 'message' => get_string('cannoteditfolder', 'artefact.file')); } if (!$parentfolder) { if (!pieform_element_filebrowser_edit_group_folder($group, 0)) { return array('error' => true, 'message' => get_string('cannoteditfolder', 'artefact.file')); } } $data->group = $group; } else { $data->owner = $USER->get('id'); } } $data->container = 0; if (isset($userfileindex)) { $originalname = $_FILES['userfile']['name'][$userfileindex]; } else { $originalname = $_FILES['userfile']['name']; } $originalname = $originalname ? basename($originalname) : get_string('file', 'artefact.file'); $data->title = ArtefactTypeFileBase::get_new_file_title($originalname, $parentfolder, $data->owner, $group, $institution); // Overwrite image file with resized version if required $resized = false; $resizeattempted = false; // resize specified if (resizing is enabled AND user has enabled resizing) OR (resizing is enabled AND user is not given an option to enable/disable) if ($resizeonuploadenable && $resizeonuploaduserenable || $resizeonuploadenable && !$resizeonuploaduseroption) { require_once 'file.php'; require_once 'imageresizer.php'; $file = $_FILES['userfile']; if (isset($userfileindex)) { $tmpname = $file['tmp_name'][$userfileindex]; } else { $tmpname = $file['tmp_name']; } if (is_image_file($tmpname)) { $imageinfo = getimagesize($tmpname); $mimetype = $imageinfo['mime']; $width = $imageinfo[0]; $height = $imageinfo[1]; $bmptypes = array('image/bmp', 'image/x-bmp', 'image/ms-bmp', 'image/x-ms-bmp'); // resize image if necessary $resizeonuploadmaxwidth = get_config_plugin('artefact', 'file', 'resizeonuploadmaxwidth'); $resizeonuploadmaxheight = get_config_plugin('artefact', 'file', 'resizeonuploadmaxheight'); // Don't support bmps for now if (($width > $resizeonuploadmaxwidth || $height > $resizeonuploadmaxheight) && !in_array($mimetype, $bmptypes)) { $resizeattempted = true; $imgrs = new ImageResizer($tmpname, $mimetype); $img = $imgrs->get_image(); if (!empty($img)) { $imgrs->resize_image(array('w' => $resizeonuploadmaxwidth, 'h' => $resizeonuploadmaxheight), $mimetype); //auto $saveresize = $imgrs->save_image($tmpname, $mimetype, 85); if (!$saveresize) { return array('error' => true, 'message' => get_string('problemresizing', 'artefact.file')); } $resized = true; } } } } try { $newid = ArtefactTypeFile::save_uploaded_file('userfile', $data, $userfileindex, $resized); } catch (QuotaExceededException $e) { prepare_upload_failed_message($result, $e, $parentfoldername, $originalname); // update the file listing if (defined('GROUP')) { $group = group_current_group(); $result['quota'] = $group->quota; $result['quotaused'] = $group->quotaused; } else { $result['quota'] = $USER->get('quota'); $result['quotaused'] = $USER->get('quotaused'); } $result['newlist'] = pieform_element_filebrowser_build_filelist($form, $element, $parentfolder, null, $data->owner, $data->group, $data->institution); return $result; } catch (UploadException $e) { prepare_upload_failed_message($result, $e, $parentfoldername, $originalname); if (defined('GROUP')) { $group = group_current_group(); $result['quota'] = $group->quota; $result['quotaused'] = $group->quotaused; } return $result; } // Upload succeeded if (isset($element['filters'])) { $artefacttypes = isset($element['filters']['artefacttype']) ? $element['filters']['artefacttype'] : null; $filetypes = isset($element['filters']['filetype']) ? $element['filters']['filetype'] : null; if (!empty($artefacttypes) || !empty($filetypes)) { // Need to check the artefacttype or filetype (mimetype) of the uploaded file. $file = artefact_instance_from_id($newid); if (is_array($artefacttypes) && !in_array($file->get('artefacttype'), $artefacttypes) || is_array($filetypes) && !in_array($file->get('filetype'), $filetypes)) { $result['error'] = true; $result['uploaded'] = true; $result['message'] = get_string('wrongfiletypeforblock', 'artefact.file'); return $result; } } } if ($parentfoldername) { if ($data->title == $originalname) { $result['message'] = get_string('uploadoffiletofoldercomplete', 'artefact.file', $originalname, $parentfoldername); } else { $result['message'] = get_string('fileuploadedtofolderas', 'artefact.file', $originalname, $parentfoldername, $data->title); } } else { if ($data->title == $originalname) { $result['message'] = get_string('uploadoffilecomplete', 'artefact.file', $originalname); } else { $result['message'] = get_string('fileuploadedas', 'artefact.file', $originalname, $data->title); } } if ($resizeattempted && !$resized) { $result['message'] .= get_string('insufficientmemoryforresize', 'artefact.file'); } $result['highlight'] = $newid; $artefact = artefact_instance_from_id($newid); $result['artefacttype'] = $artefact->get('artefacttype'); $result['uploaded'] = true; $result['newlist'] = pieform_element_filebrowser_build_filelist($form, $element, $parentfolder, $newid, $data->owner, $data->group, $data->institution); if (defined('GROUP')) { $group = group_current_group(false); $result['quota'] = $group->quota; $result['quotaused'] = $group->quotaused; } else { $result['quota'] = $USER->get('quota'); $result['quotaused'] = $USER->get('quotaused'); } $result['maxuploadsize'] = display_size(get_max_upload_size(!$institution && !$group)); return $result; }
public function uploadItemResources($aResources,$itemId) { if($aResources != '') { $itemResourceManager = ItemResource::newInstance(); $folder = osc_uploads_path().(floor($itemId/100))."/"; $numImagesItems = osc_max_images_per_item(); $numImages = $itemResourceManager->countResources($itemId); foreach ($aResources['error'] as $key => $error) { if($numImagesItems==0 || ($numImagesItems>0 && $numImages<$numImagesItems)) { if ($error == UPLOAD_ERR_OK) { $tmpName = $aResources['tmp_name'][$key]; $imgres = ImageResizer::fromFile($tmpName); $extension = osc_apply_filter('upload_image_extension', $imgres->getExt()); $mime = osc_apply_filter('upload_image_mime', $imgres->getMime()); // Create normal size $normal_path = $path = $tmpName."_normal"; $size = explode('x', osc_normal_dimensions()); $img = ImageResizer::fromFile($tmpName)->autoRotate()->resizeTo($size[0], $size[1]); if( osc_is_watermark_text() ) { $img->doWatermarkText(osc_watermark_text(), osc_watermark_text_color()); } else if ( osc_is_watermark_image() ){ $img->doWatermarkImage(); } $img->saveToFile($path, $extension); // Create preview $path = $tmpName."_preview"; $size = explode('x', osc_preview_dimensions()); ImageResizer::fromFile($normal_path)->resizeTo($size[0], $size[1])->saveToFile($path, $extension); // Create thumbnail $path = $tmpName."_thumbnail"; $size = explode('x', osc_thumbnail_dimensions()); ImageResizer::fromFile($normal_path)->resizeTo($size[0], $size[1])->saveToFile($path, $extension); $numImages++; $itemResourceManager->insert(array( 'fk_i_item_id' => $itemId )); $resourceId = $itemResourceManager->dao->insertedId(); if(!is_dir($folder)) { if (!@mkdir($folder, 0755, true)) { return 3; // PATH CAN NOT BE CREATED } } osc_copy($tmpName.'_normal', $folder.$resourceId.'.'.$extension); osc_copy($tmpName.'_preview', $folder.$resourceId.'_preview.'.$extension); osc_copy($tmpName.'_thumbnail', $folder.$resourceId.'_thumbnail.'.$extension); if( osc_keep_original_image() ) { $path = $folder.$resourceId.'_original.'.$extension; osc_copy($tmpName, $path); } @unlink($tmpName."_normal"); @unlink($tmpName."_preview"); @unlink($tmpName."_thumbnail"); @unlink($tmpName); $s_path = str_replace(osc_base_path(), '', $folder); $itemResourceManager->update( array( 's_path' => $s_path ,'s_name' => osc_genRandomPassword() ,'s_extension' => $extension ,'s_content_type' => $mime ) ,array( 'pk_i_id' => $resourceId ,'fk_i_item_id' => $itemId ) ); osc_run_hook('uploaded_file', ItemResource::newInstance()->findByPrimaryKey($resourceId)); } } } unset($itemResourceManager); } return 0; // NO PROBLEMS }
/** * @param $sourceImage * @param $targetImage * @param $width * @param $height * @param bool $crop * @return bool */ public static function resize($sourceImage, $targetImage, $width, $height, $crop = false) { if (!ImageResizer::isImage($sourceImage)) { return false; } // $size = getimagesize($sourceImage); // $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1)); $icfunc = "imagecreatefrom" . $format; if (!function_exists($icfunc)) { return false; } $isrc = $icfunc($sourceImage); if ($width == null && $height == null) { return false; } else { if ($width != null && $height == null) { $x_ratio = $width / $size[0]; $y_ratio = $x_ratio; $height = $height * $y_ratio; } else { if ($width == null && $height != null) { $y_ratio = $height / $size[1]; $x_ratio = $y_ratio; $width = $height * $x_ratio; } else { if ($width != null && $height != null) { $x_ratio = $width / $size[0]; $y_ratio = $height / $size[1]; } } } } // if ($x_ratio < 1.0 || $y_ratio < 1.0) { if ($crop) { $ratiomax = max($x_ratio, $y_ratio); $src_left = floor(($size[0] - $width / $ratiomax) / 2); $src_top = floor(($size[1] - $height / $ratiomax) / 2); $idest = imagecreatetruecolor($width, $height); imagecopyresampled($idest, $isrc, 0, 0, $src_left, $src_top, $width, $height, $width / $ratiomax, $height / $ratiomax); } else { $ratio = min($x_ratio, $y_ratio); $new_width = floor($size[0] * $ratio); $new_height = floor($size[1] * $ratio); $idest = imagecreatetruecolor($new_width, $new_height); imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]); } } else { $new_width = $size[0]; $new_height = $size[1]; $idest = imagecreatetruecolor($new_width, $new_height); imagecopy($idest, $isrc, 0, 0, 0, 0, $new_width, $new_height); } // imageinterlace($idest, true); // create destination image imagejpeg($idest, $targetImage, 80); // set access rights chmod($targetImage, 0664); // clean up imagedestroy($isrc); imagedestroy($idest); return true; }
function doModel() { parent::doModel(); switch ($this->action) { case 'import': // calling import view $this->doView('tools/import.php'); break; case 'import_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=import'); } // calling $sql = Params::getFiles('sql'); if (isset($sql['size']) && $sql['size'] != 0) { $content_file = file_get_contents($sql['tmp_name']); $conn = DBConnectionClass::newInstance(); $c_db = $conn->getOsclassDb(); $comm = new DBCommandClass($c_db); if ($comm->importSQL($content_file)) { osc_add_flash_ok_message(_m('Import complete'), 'admin'); } else { osc_add_flash_error_message(_m('There was a problem importing data to the database'), 'admin'); } } else { osc_add_flash_warning_message(_m('No file was uploaded'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=import'); break; case 'images': // calling images view $this->doView('tools/images.php'); break; case 'images_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=images'); } $preferences = Preference::newInstance()->toArray(); $wat = new Watermark(); $aResources = ItemResource::newInstance()->getAllResources(); foreach ($aResources as $resource) { osc_run_hook('regenerate_image', $resource); $path = osc_content_path() . 'uploads/'; // comprobar que no haya original $img_original = $path . $resource['pk_i_id'] . "_original*"; $aImages = glob($img_original); // there is original image if (count($aImages) == 1) { $image_tmp = $aImages[0]; } else { $img_normal = $path . $resource['pk_i_id'] . ".*"; $aImages = glob($img_normal); if (count($aImages) == 1) { $image_tmp = $aImages[0]; } else { $img_thumbnail = $path . $resource['pk_i_id'] . "_thumbnail*"; $aImages = glob($img_thumbnail); $image_tmp = $aImages[0]; } } // extension preg_match('/\\.(.*)$/', $image_tmp, $matches); if (isset($matches[1])) { $extension = $matches[1]; // Create normal size $path_normal = $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '.jpg'; $size = explode('x', osc_normal_dimensions()); ImageResizer::fromFile($image_tmp)->resizeTo($size[0], $size[1])->saveToFile($path); if (osc_is_watermark_text()) { $wat->doWatermarkText($path, osc_watermark_text_color(), osc_watermark_text(), 'image/jpeg'); } elseif (osc_is_watermark_image()) { $wat->doWatermarkImage($path, 'image/jpeg'); } // Create preview $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_preview.jpg'; $size = explode('x', osc_preview_dimensions()); ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path); // Create thumbnail $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_thumbnail.jpg'; $size = explode('x', osc_thumbnail_dimensions()); ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path); // update resource info ItemResource::newInstance()->update(array('s_path' => 'oc-content/uploads/', 's_name' => osc_genRandomPassword(), 's_extension' => 'jpg', 's_content_type' => 'image/jpeg'), array('pk_i_id' => $resource['pk_i_id'])); osc_run_hook('regenerated_image', ItemResource::newInstance()->findByPrimaryKey($resource['pk_i_id'])); // si extension es direfente a jpg, eliminar las imagenes con $extension si hay if ($extension != 'jpg') { $files_to_remove = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . "*" . $extension; $fs = glob($files_to_remove); if (is_array($fs)) { array_map("unlink", $fs); } } // .... } else { // no es imagen o imagen sin extesión } } osc_add_flash_ok_message(_m('Re-generation complete'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=images'); break; case 'category': $this->doView('tools/category.php'); break; case 'category_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=category'); } osc_update_cat_stats(); osc_add_flash_ok_message(_m("Recount category stats has been successful"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=category'); break; case 'locations': $this->doView('tools/locations.php'); break; case 'locations_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=locations'); } $workToDo = LocationsTmp::newInstance()->count(); if ($workToDo > 0) { $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=locations'); break; } // we need populate location tmp table $aCountry = Country::newInstance()->listAll(); foreach ($aCountry as $country) { $aRegionsCountry = Region::newInstance()->getByCountry($country['pk_c_code']); LocationsTmp::newInstance()->insert(array('id_location' => $country['pk_c_code'], 'e_type' => 'COUNTRY')); foreach ($aRegionsCountry as $region) { $aCitiesRegion = City::newInstance()->getByRegion($region['pk_i_id']); LocationsTmp::newInstance()->insert(array('id_location' => $region['pk_i_id'], 'e_type' => 'REGION')); foreach ($aCitiesRegion as $city) { LocationsTmp::newInstance()->insert(array('id_location' => $city['pk_i_id'], 'e_type' => 'CITY')); } unset($aCitiesRegion); } unset($aRegionsCountry); } unset($aCountry); $workToDo = LocationsTmp::newInstance()->count(); Preference::newInstance()->replace('location_todo', $workToDo); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=locations'); break; case 'upgrade': $this->doView('tools/upgrade.php'); break; case 'backup': $this->doView('tools/backup.php'); break; case 'backup-sql': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); } //databasse dump... if (Params::getParam('bck_dir') != '') { $path = trim(Params::getParam('bck_dir')); if (substr($path, -1, 1) != "/") { $path .= '/'; } } else { $path = osc_base_path(); } $filename = 'OSClass_mysqlbackup.' . date('YmdHis') . '.sql'; switch (osc_dbdump($path, $filename)) { case -1: $msg = _m('Path is empty'); osc_add_flash_error_message($msg, 'admin'); break; case -2: $msg = sprintf(_m('Could not connect with the database. Error: %s'), mysql_error()); osc_add_flash_error_message($msg, 'admin'); break; case -3: $msg = _m('There are no tables to back up'); osc_add_flash_error_message($msg, 'admin'); break; case -4: $msg = _m('The folder is not writable'); osc_add_flash_error_message($msg, 'admin'); break; default: $msg = _m('Backup completed successfully'); osc_add_flash_ok_message($msg, 'admin'); break; } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); break; case 'backup-sql_file': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); } //databasse dump... $filename = 'OSClass_mysqlbackup.' . date('YmdHis') . '.sql'; $path = sys_get_temp_dir() . "/"; switch (osc_dbdump($path, $filename)) { case -1: $msg = _m('Path is empty'); osc_add_flash_error_message($msg, 'admin'); break; case -2: $msg = sprintf(_m('Could not connect with the database. Error: %s'), mysql_error()); osc_add_flash_error_message($msg, 'admin'); break; case -3: $msg = sprintf(_m('Could not select the database. Error: %s'), mysql_error()); osc_add_flash_error_message($msg, 'admin'); break; case -4: $msg = _m('There are no tables to back up'); osc_add_flash_error_message($msg, 'admin'); break; case -5: $msg = _m('The folder is not writable'); osc_add_flash_error_message($msg, 'admin'); break; default: $msg = _m('Backup completed successfully'); osc_add_flash_ok_message($msg, 'admin'); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($filename)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($path . $filename)); flush(); readfile($path . $filename); exit; break; } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); break; case 'backup-zip_file': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); } $filename = "OSClass_backup." . date('YmdHis') . ".zip"; $path = sys_get_temp_dir() . "/"; if (osc_zip_folder(osc_base_path(), $path . $filename)) { $msg = _m('Archived successfully!'); osc_add_flash_ok_message($msg, 'admin'); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($filename)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($path . $filename)); flush(); readfile($path . $filename); exit; } else { $msg = _m('Error, the zip file was not created in the specified directory'); osc_add_flash_error_message($msg, 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); break; case 'backup-zip': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); } //zip of the code just to back it up if (Params::getParam('bck_dir') != '') { $archive_name = trim(Params::getParam('bck_dir')); if (substr(trim($archive_name), -1, 1) != "/") { $archive_name .= '/'; } $archive_name = Params::getParam('bck_dir') . '/OSClass_backup.' . date('YmdHis') . '.zip'; } else { $archive_name = osc_base_path() . "OSClass_backup." . date('YmdHis') . ".zip"; } $archive_folder = osc_base_path(); if (osc_zip_folder($archive_folder, $archive_name)) { $msg = _m('Archived successfully!'); osc_add_flash_ok_message($msg, 'admin'); } else { $msg = _m('Error, the zip file was not created in the specified directory'); osc_add_flash_error_message($msg, 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); break; case 'backup_post': $this->doView('tools/backup.php'); break; case 'maintenance': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because it is a demo site"), 'admin'); $this->doView('tools/maintenance.php'); break; } $mode = Params::getParam('mode'); if ($mode == 'on') { $maintenance_file = osc_base_path() . '.maintenance'; $fileHandler = @fopen($maintenance_file, 'w'); if ($fileHandler) { osc_add_flash_ok_message(_m('Maintenance mode is ON'), 'admin'); } else { osc_add_flash_error_message(_m('There was an error creating the .maintenance file, please create it manually at the root folder'), 'admin'); } fclose($fileHandler); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=maintenance'); } else { if ($mode == 'off') { $deleted = @unlink(osc_base_path() . '.maintenance'); if ($deleted) { osc_add_flash_ok_message(_m('Maintenance mode is OFF'), 'admin'); } else { osc_add_flash_error_message(_m('There was an error removing the .maintenance file, please remove it manually from the root folder'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=maintenance'); } } $this->doView('tools/maintenance.php'); break; default: } }
<?php // passes thru a image (with optional width & height specified) namespace cd; $name = File::getUploadPath($this->owner); if (!empty($_GET['w']) && !empty($_GET['h'])) { $im = new ImageResizer($name); if ($_GET['w'] <= $im->getWidth() && $_GET['h'] <= $im->getHeight()) { $im->resizeAspect($_GET['w'], $_GET['h']); } } else { $im = new Image($name); } $im->render();
<?php include "../cbImage.php"; include "../ImageResizer.class.php"; $c = new Image("cars.jpg"); $r = new ImageResizer($c); //print_r($c->getType()); //$r->scalePercentage(80); $r->Thumbnail(200, 200); $r->show();
function theme_bender_actions_admin() { //if(OC_ADMIN) if (Params::getParam('file') == 'oc-content/themes/bender/admin/settings.php') { if (Params::getParam('donation') == 'successful') { osc_set_preference('donation', '1', 'bender'); osc_reset_preferences(); } } switch (Params::getParam('action_specific')) { case 'settings': $footerLink = Params::getParam('footer_link'); osc_set_preference('keyword_placeholder', Params::getParam('keyword_placeholder'), 'bender'); osc_set_preference('footer_link', $footerLink ? '1' : '0', 'bender'); osc_set_preference('defaultShowAs@all', Params::getParam('defaultShowAs@all'), 'bender'); osc_set_preference('defaultShowAs@search', Params::getParam('defaultShowAs@all')); osc_set_preference('defaultLocationShowAs', Params::getParam('defaultLocationShowAs'), 'bender'); osc_set_preference('header-728x90', trim(Params::getParam('header-728x90', false, false, false)), 'bender'); osc_set_preference('homepage-728x90', trim(Params::getParam('homepage-728x90', false, false, false)), 'bender'); osc_set_preference('sidebar-300x250', trim(Params::getParam('sidebar-300x250', false, false, false)), 'bender'); osc_set_preference('search-results-top-728x90', trim(Params::getParam('search-results-top-728x90', false, false, false)), 'bender'); osc_set_preference('search-results-middle-728x90', trim(Params::getParam('search-results-middle-728x90', false, false, false)), 'bender'); osc_add_flash_ok_message(__('Theme settings updated correctly', 'bender'), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/bender/admin/settings.php')); break; case 'upload_logo': $package = Params::getFiles('logo'); if ($package['error'] == UPLOAD_ERR_OK) { $img = ImageResizer::fromFile($package['tmp_name']); $ext = $img->getExt(); $logo_name = 'bender_logo'; $logo_name .= '.' . $ext; $path = osc_uploads_path() . $logo_name; $img->saveToFile($path); osc_set_preference('logo', $logo_name, 'bender'); osc_add_flash_ok_message(__('The logo image has been uploaded correctly', 'bender'), 'admin'); } else { osc_add_flash_error_message(__("An error has occurred, please try again", 'bender'), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/bender/admin/header.php')); break; case 'remove': $logo = osc_get_preference('logo', 'bender'); $path = osc_uploads_path() . $logo; if (file_exists($path)) { @unlink($path); osc_delete_preference('logo', 'bender'); osc_reset_preferences(); osc_add_flash_ok_message(__('The logo image has been removed', 'bender'), 'admin'); } else { osc_add_flash_error_message(__("Image not found", 'bender'), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/bender/admin/header.php')); break; } }
<?php include "../cbImage.php"; include "../ImageResizer.class.php"; $c = new Image("cars.jpg"); $r = new ImageResizer($c); //print_r($c->getType()); //$r->scalePercentage(80); $r->Save("test.jpg", 100);
<?php require_once dirname(dirname(__FILE__)) . '/util.php'; require_once dirname(dirname(__FILE__)) . '/services/DropboxService.php'; require_once dirname(dirname(__FILE__)) . '/ImageResizer.php'; $service = new DropboxService(); error_reporting(E_ERROR | E_PARSE); session_start(); $userid = $_SESSION['userid']; $chosenDate = $_SESSION['chosenDate']; $diplayDate = $_SESSION['diplayDate']; $saveTo = dirname(dirname(__FILE__)) . '/pictures/' . 'test1' . '/temp/' . '20120527_115207.jpg'; $thumbnail = dirname(dirname(__FILE__)) . '/pictures/' . 'test1' . '/thumbnails/' . '20120527_115207.jpg'; $optimized = dirname(dirname(__FILE__)) . '/pictures/' . 'test1' . '/optimized/' . '20120527_115207.jpg'; $main = dirname(dirname(__FILE__)) . '/pictures/' . 'test1' . '/main/' . '20120527_115207.jpg'; $service->saveFileToDB($saveTo, '10'); $resizer = new ImageResizer($saveTo); $resizer->resize(80, $thumbnail); $resizer->resize(460, $optimized); $resizer->resize(800, $main);
function doModel() { switch ($this->action) { case 'import': // calling import view $this->doView('tools/import.php'); break; case 'import_post': // calling $sql = Params::getFiles('sql'); //dev.conquer: if the file es too big, we can have problems with the upload or with memory $content_file = file_get_contents($sql['tmp_name']); $conn = getConnection(); if ($conn->osc_dbImportSQL($content_file)) { osc_add_flash_message(_m('Import complete'), 'admin'); } else { osc_add_flash_message(_m('There was a problem importing data to the database'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=import'); break; case 'images': // calling images view $this->doView('tools/images.php'); break; case 'images_post': $preferences = Preference::newInstance()->toArray(); $path = osc_content_path() . 'uploads/'; $dir = opendir($path); while ($file = readdir($dir)) { if (preg_match('|([0-9]+)_thumbnail\\.png|i', $file, $matches)) { $orig_file = str_replace('_thumbnail.', '_original.', $file); $tmpName = osc_content_path() . 'uploads/' . $orig_file; if (!file_exists($orig_file)) { copy(str_replace('_original.', '.', $tmpName), $tmpName); } // Create thumbnail $thumbnailPath = osc_content_path() . 'uploads/' . $file; $size = explode('x', osc_thumbnail_dimensions()); ImageResizer::fromFile($tmpName)->resizeTo($size[0], $size[1])->saveToFile($thumbnailPath); // Create preview $thumbnailPath = osc_content_path() . 'uploads/' . str_replace('_thumbnail.', '_preview.', $file); $size = explode('x', osc_preview_dimensions()); ImageResizer::fromFile($tmpName)->resizeTo($size[0], $size[1])->saveToFile($thumbnailPath); // Create normal size $thumbnailPath = osc_content_path() . 'uploads/' . str_replace('_thumbnail.', '.', $file); $size = explode('x', osc_normal_dimensions()); ImageResizer::fromFile($tmpName)->resizeTo($size[0], $size[1])->saveToFile($thumbnailPath); if (!osc_keep_original_image()) { @unlink($tmpName); } } } closedir($dir); osc_add_flash_message(_m('Re-generation complete'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=images'); break; case 'upgrade': $this->doView('tools/upgrade.php'); break; case 'backup': $this->doView('tools/backup.php'); break; case 'backup-sql': //databasse dump... if (Params::getParam('bck_dir') != '') { $path = trim(Params::getParam('bck_dir')); if (substr($path, -1, 1) != "/") { $path .= '/'; } } else { $path = osc_base_path(); } $filename = 'OSClass_mysqlbackup.' . date('YmdHis') . '.sql'; switch (osc_dbdump($path, $filename)) { case -1: $msg = _m('Path is empty'); break; case -2: $msg = _m('Could not connect with the database') . '. Error: ' . mysql_error(); break; case -3: $msg = _m('Could not select the database') . '. Error: ' . mysql_error(); break; case -4: $msg = _m('There are no tables to back up'); break; case -5: $msg = _m('The folder is not writable'); break; default: $msg = _m('Backup has been done properly'); break; } osc_add_flash_message($msg, 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); break; case 'backup-zip': //zip of the code just to back it up if (Params::getParam('bck_dir') != '') { $archive_name = trim(Params::getParam('bck_dir')); if (substr(trim($archive_name), -1, 1) != "/") { $archive_name .= '/'; } $archive_name = Params::getParam('bck_dir') . '/OSClass_backup.' . date('YmdHis') . '.zip'; } else { $archive_name = osc_base_path() . "OSClass_backup." . date('YmdHis') . ".zip"; } $archive_folder = osc_base_path(); if (osc_zip_folder($archive_folder, $archive_name)) { $msg = _m('Archiving successful!'); } else { $msg = _m('Error, the zip file was not created at the specified directory'); } osc_add_flash_message($msg, 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); break; case 'backup_post': $this->doView('tools/backup.php'); break; default: } }
function doModel() { switch ($this->action) { case 'comments': //calling the comments settings view $this->doView('settings/comments.php'); break; case 'comments_post': // updating comment $iUpdated = 0; $enabledComments = Params::getParam('enabled_comments'); $enabledComments = $enabledComments != '' ? true : false; $moderateComments = Params::getParam('moderate_comments'); $moderateComments = $moderateComments != '' ? true : false; $numModerateComments = Params::getParam('num_moderate_comments'); $commentsPerPage = Params::getParam('comments_per_page'); $notifyNewComment = Params::getParam('notify_new_comment'); $notifyNewComment = $notifyNewComment != '' ? true : false; $notifyNewCommentUser = Params::getParam('notify_new_comment_user'); $notifyNewCommentUser = $notifyNewCommentUser != '' ? true : false; $regUserPostComments = Params::getParam('reg_user_post_comments'); $regUserPostComments = $regUserPostComments != '' ? true : false; $msg = ''; if (!osc_validate_int(Params::getParam("num_moderate_comments"))) { $msg .= _m("Number of moderate comments must only contain numeric characters") . "<br/>"; } if (!osc_validate_int(Params::getParam("comments_per_page"))) { $msg .= _m("Comments per page must only contain numeric characters") . "<br/>"; } if ($msg != '') { osc_add_flash_error_message($msg, 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=comments'); } $iUpdated += Preference::newInstance()->update(array('s_value' => $enabledComments), array('s_name' => 'enabled_comments')); if ($moderateComments) { $iUpdated += Preference::newInstance()->update(array('s_value' => $numModerateComments), array('s_name' => 'moderate_comments')); } else { $iUpdated += Preference::newInstance()->update(array('s_value' => '-1'), array('s_name' => 'moderate_comments')); } $iUpdated += Preference::newInstance()->update(array('s_value' => $notifyNewComment), array('s_name' => 'notify_new_comment')); $iUpdated += Preference::newInstance()->update(array('s_value' => $notifyNewCommentUser), array('s_name' => 'notify_new_comment_user')); $iUpdated += Preference::newInstance()->update(array('s_value' => $commentsPerPage), array('s_name' => 'comments_per_page')); $iUpdated += Preference::newInstance()->update(array('s_value' => $regUserPostComments), array('s_name' => 'reg_user_post_comments')); if ($iUpdated > 0) { osc_add_flash_ok_message(_m("Comment settings have been updated"), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=comments'); break; case 'locations': // calling the locations settings view $location_action = Params::getParam('type'); $mCountries = new Country(); switch ($location_action) { case 'add_country': // add country $countryCode = strtoupper(Params::getParam('c_country')); $countryName = Params::getParam('country'); $exists = $mCountries->findByCode($countryCode); if (isset($exists['s_name'])) { osc_add_flash_error_message(sprintf(_m('%s already was in the database'), $countryName), 'admin'); } else { $countries_json = osc_file_get_contents('http://geo.osclass.org/geo.download.php?action=country_code&term=' . urlencode($countryCode)); $countries = json_decode($countries_json); $mCountries->insert(array('pk_c_code' => $countryCode, 's_name' => $countryName)); CountryStats::newInstance()->setNumItems($countryCode, 0); if (isset($countries->error)) { // Country is not in our GEO database // We have no region for user-typed countries } else { // Country is in our GEO database, add regions and cities $manager_region = new Region(); $regions_json = osc_file_get_contents('http://geo.osclass.org/geo.download.php?action=region&country_code=' . urlencode($countryCode) . '&term=all'); $regions = json_decode($regions_json); if (!isset($regions->error)) { if (count($regions) > 0) { foreach ($regions as $r) { $manager_region->insert(array("fk_c_country_code" => $r->country_code, "s_name" => $r->name)); $id = $manager_region->dao->insertedId(); RegionStats::newInstance()->setNumItems($id, 0); } } unset($regions); unset($regions_json); $manager_city = new City(); if (count($countries) > 0) { foreach ($countries as $c) { $regions = $manager_region->findByCountry($c->id); if (!isset($regions->error)) { if (count($regions) > 0) { foreach ($regions as $region) { $cities_json = osc_file_get_contents('http://geo.osclass.org/geo.download.php?action=city&country=' . urlencode($c->name) . '®ion=' . urlencode($region['s_name']) . '&term=all'); $cities = json_decode($cities_json); if (!isset($cities->error)) { if (count($cities) > 0) { foreach ($cities as $ci) { $manager_city->insert(array("fk_i_region_id" => $region['pk_i_id'], "s_name" => $ci->name, "fk_c_country_code" => $ci->country_code)); $id = $manager_city->dao->insertedId(); CityStats::newInstance()->setNumItems($id, 0); } } } unset($cities); unset($cities_json); } } } } } } } osc_add_flash_ok_message(sprintf(_m('%s has been added as a new country'), $countryName), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations'); break; case 'edit_country': // edit country $ok = $mCountries->update(array('s_name' => Params::getParam('e_country')), array('pk_c_code' => Params::getParam('country_code'))); if ($ok) { osc_add_flash_ok_message(_m('Country has been edited'), 'admin'); } else { osc_add_flash_error_message(_m('There were some problems editing the country'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations'); break; case 'delete_country': // delete country $countryId = Params::getParam('id'); Item::newInstance()->deleteByRegion($countryId); $mRegions = new Region(); $mCities = new City(); $aCountries = $mCountries->findByCode($countryId); $aRegions = $mRegions->findByCountry($aCountries['pk_c_code']); foreach ($aRegions as $region) { // remove city_stats CityStats::newInstance()->deleteByRegion($region['pk_i_id']); // remove region_stats RegionStats::newInstance()->delete(array('fk_i_region_id' => $region['pk_i_id'])); } //remove country stats CountryStats::newInstance()->delete(array('fk_c_country_code' => $aCountries['pk_c_code'])); $ok = $mCountries->deleteByPrimaryKey($aCountries['pk_c_code']); if ($ok) { osc_add_flash_ok_message(sprintf(_m('%s has been deleted'), $aCountries['s_name']), 'admin'); } else { osc_add_flash_error_message(sprintf(_m('There was a problem deleting %s'), $aCountries['s_name']), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations'); break; case 'add_region': // add region if (!Params::getParam('r_manual')) { $this->install_location_by_region(); } else { $mRegions = new Region(); $regionName = Params::getParam('region'); $countryCode = Params::getParam('country_c_parent'); $country = Country::newInstance()->findByCode($countryCode); $exists = $mRegions->findByName($regionName, $countryCode); if (!isset($exists['s_name'])) { $data = array('fk_c_country_code' => $countryCode, 's_name' => $regionName); $mRegions->insert($data); $id = $mRegions->dao->insertedId(); RegionStats::newInstance()->setNumItems($id, 0); osc_add_flash_ok_message(sprintf(_m('%s has been added as a new region'), $regionName), 'admin'); } else { osc_add_flash_error_message(sprintf(_m('%s already was in the database'), $regionName), 'admin'); } } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations&country_code=' . @$countryCode . "&country=" . @$country['s_name']); break; case 'edit_region': // edit region $mRegions = new Region(); $newRegion = Params::getParam('e_region'); $regionId = Params::getParam('region_id'); $exists = $mRegions->findByName($newRegion); if (!isset($exists['pk_i_id']) || $exists['pk_i_id'] == $regionId) { if ($regionId != '') { $aRegion = $mRegions->findByPrimaryKey($regionId); $country = Country::newInstance()->findByCode($aRegion['fk_c_country_code']); $mRegions->update(array('s_name' => $newRegion), array('pk_i_id' => $regionId)); ItemLocation::newInstance()->update(array('s_region' => $newRegion), array('fk_i_region_id' => $regionId)); osc_add_flash_ok_message(sprintf(_m('%s has been edited'), $newRegion), 'admin'); } } else { osc_add_flash_error_message(sprintf(_m('%s already was in the database'), $newRegion), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations&country_code=' . @$country['pk_c_code'] . "&country=" . @$country['s_name']); break; case 'delete_region': // delete region $mRegion = new Region(); $mCities = new City(); $regionId = Params::getParam('id'); if ($regionId != '') { Item::newInstance()->deleteByRegion($regionId); $aRegion = $mRegion->findByPrimaryKey($regionId); $country = Country::newInstance()->findByCode($aRegion['fk_c_country_code']); // remove city_stats CityStats::newInstance()->deleteByRegion($regionId); $mCities->delete(array('fk_i_region_id' => $regionId)); // remove region_stats RegionStats::newInstance()->delete(array('fk_i_region_id' => $regionId)); $mRegion->delete(array('pk_i_id' => $regionId)); osc_add_flash_ok_message(sprintf(_m('%s has been deleted'), $aRegion['s_name']), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations&country_code=' . @$country['pk_c_code'] . "&country=" . @$country['s_name']); break; case 'add_city': // add city $mRegion = new Region(); $mCities = new City(); $regionId = Params::getParam('region_parent'); $countryCode = Params::getParam('country_c_parent'); $newCity = Params::getParam('city'); $exists = $mCities->findByName($newCity, $regionId); $region = $mRegion->findByPrimaryKey($regionId); $country = Country::newInstance()->findByCode($region['fk_c_country_code']); if (!isset($exists['s_name'])) { $mCities->insert(array('fk_i_region_id' => $regionId, 's_name' => $newCity, 'fk_c_country_code' => $countryCode)); $id = $mCities->dao->insertedId(); CityStats::newInstance()->setNumItems($id, 0); osc_add_flash_ok_message(sprintf(_m('%s has been added as a new city'), $newCity), 'admin'); } else { osc_add_flash_error_message(sprintf(_m('%s already was in the database'), $newCity), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations&country_code=' . @$country['pk_c_code'] . "&country=" . @$country['s_name'] . "®ion=" . $regionId); break; case 'edit_city': // edit city $mRegion = new Region(); $mCities = new City(); $newCity = Params::getParam('e_city'); $cityId = Params::getParam('city_id'); $exists = $mCities->findByName($newCity); if (!isset($exists['pk_i_id']) || $exists['pk_i_id'] == $cityId) { $city = $mCities->findByPrimaryKey($cityId); $region = $mRegion->findByPrimaryKey($city['fk_i_region_id']); $country = Country::newInstance()->findByCode($region['fk_c_country_code']); $mCities->update(array('s_name' => $newCity), array('pk_i_id' => $cityId)); ItemLocation::newInstance()->update(array('s_city' => $newCity), array('fk_i_city_id' => $cityId)); osc_add_flash_ok_message(sprintf(_m('%s has been edited'), $newCity), 'admin'); } else { osc_add_flash_error_message(sprintf(_m('%s already was in the database'), $newCity), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations&country_code=' . @$country['pk_c_code'] . "&country=" . @$country['s_name'] . "®ion=" . @$region['pk_i_id']); break; case 'delete_city': // delete city $mRegion = new Region(); $mCities = new City(); $cityId = Params::getParam('id'); Item::newInstance()->deleteByCity($cityId); $aCity = $mCities->findByPrimaryKey($cityId); // remove region_stats $region = $mRegion->findByPrimaryKey($aCity['fk_i_region_id']); $country = Country::newInstance()->findByCode($region['fk_c_country_code']); CityStats::newInstance()->delete(array('fk_i_city_id' => $cityId)); $mCities->delete(array('pk_i_id' => $cityId)); osc_add_flash_ok_message(sprintf(_m('%s has been deleted'), $aCity['s_name']), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=locations&country_code=' . @$country['pk_c_code'] . "&country=" . @$country['s_name'] . "®ion=" . @$region['pk_i_id']); break; } $aCountries = $mCountries->listAll(); $this->_exportVariableToView('aCountries', $aCountries); $this->doView('settings/locations.php'); break; case 'permalinks': // calling the permalinks view $htaccess = Params::getParam('htaccess_status'); $file = Params::getParam('file_status'); $this->_exportVariableToView('htaccess', $htaccess); $this->_exportVariableToView('file', $file); $this->doView('settings/permalinks.php'); break; case 'permalinks_post': // updating permalinks option $htaccess_file = osc_base_path() . '.htaccess'; $rewriteEnabled = Params::getParam('rewrite_enabled') ? true : false; if ($rewriteEnabled) { Preference::newInstance()->update(array('s_value' => '1'), array('s_name' => 'rewriteEnabled')); $rewrite_base = REL_WEB_URL; $htaccess = <<<HTACCESS <IfModule mod_rewrite.c> RewriteEngine On RewriteBase {$rewrite_base} RewriteRule ^index\\.php\$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . {$rewrite_base}index.php [L] </IfModule> HTACCESS; // 1. OK (ok) // 2. OK no apache module detected (warning) // 3. No se puede crear + apache // 4. No se puede crear + no apache $status = 3; if (file_exists($htaccess_file)) { if (is_writable($htaccess_file) && file_put_contents($htaccess_file, $htaccess)) { $status = 1; } } else { if (is_writable(osc_base_path()) && file_put_contents($htaccess_file, $htaccess)) { $status = 1; } } if (!@apache_mod_loaded('mod_rewrite')) { $status++; } $errors = 0; $item_url = substr(str_replace('//', '/', Params::getParam('rewrite_item_url') . '/'), 0, -1); if (!osc_validate_text($item_url)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $item_url), array('s_name' => 'rewrite_item_url')); } $page_url = substr(str_replace('//', '/', Params::getParam('rewrite_page_url') . '/'), 0, -1); if (!osc_validate_text($page_url)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $page_url), array('s_name' => 'rewrite_page_url')); } $cat_url = substr(str_replace('//', '/', Params::getParam('rewrite_cat_url') . '/'), 0, -1); if (!osc_validate_text($cat_url)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $cat_url), array('s_name' => 'rewrite_cat_url')); } $search_url = substr(str_replace('//', '/', Params::getParam('rewrite_search_url') . '/'), 0, -1); if (!osc_validate_text($search_url)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $search_url), array('s_name' => 'rewrite_search_url')); } if (!osc_validate_text(Params::getParam('rewrite_search_country'))) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => Params::getParam('rewrite_search_country')), array('s_name' => 'rewrite_search_country')); } if (!osc_validate_text(Params::getParam('rewrite_search_region'))) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => Params::getParam('rewrite_search_region')), array('s_name' => 'rewrite_search_region')); } if (!osc_validate_text(Params::getParam('rewrite_search_city'))) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => Params::getParam('rewrite_search_city')), array('s_name' => 'rewrite_search_city')); } if (!osc_validate_text(Params::getParam('rewrite_search_city_area'))) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => Params::getParam('rewrite_search_city_area')), array('s_name' => 'rewrite_search_city_area')); } if (!osc_validate_text(Params::getParam('rewrite_search_category'))) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => Params::getParam('rewrite_search_category')), array('s_name' => 'rewrite_search_category')); } if (!osc_validate_text(Params::getParam('rewrite_search_user'))) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => Params::getParam('rewrite_search_user')), array('s_name' => 'rewrite_search_user')); } if (!osc_validate_text(Params::getParam('rewrite_search_pattern'))) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => Params::getParam('rewrite_search_pattern')), array('s_name' => 'rewrite_search_pattern')); } $rewrite_contact = substr(str_replace('//', '/', Params::getParam('rewrite_contact') . '/'), 0, -1); if (!osc_validate_text($rewrite_contact)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_contact), array('s_name' => 'rewrite_contact')); } $rewrite_feed = substr(str_replace('//', '/', Params::getParam('rewrite_feed') . '/'), 0, -1); if (!osc_validate_text($rewrite_feed)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_feed), array('s_name' => 'rewrite_feed')); } $rewrite_language = substr(str_replace('//', '/', Params::getParam('rewrite_language') . '/'), 0, -1); if (!osc_validate_text($rewrite_language)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_language), array('s_name' => 'rewrite_language')); } $rewrite_item_mark = substr(str_replace('//', '/', Params::getParam('rewrite_item_mark') . '/'), 0, -1); if (!osc_validate_text($rewrite_item_mark)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_item_mark), array('s_name' => 'rewrite_item_mark')); } $rewrite_item_send_friend = substr(str_replace('//', '/', Params::getParam('rewrite_item_send_friend') . '/'), 0, -1); if (!osc_validate_text($rewrite_item_send_friend)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_item_send_friend), array('s_name' => 'rewrite_item_send_friend')); } $rewrite_item_contact = substr(str_replace('//', '/', Params::getParam('rewrite_item_contact') . '/'), 0, -1); if (!osc_validate_text($rewrite_item_contact)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_item_contact), array('s_name' => 'rewrite_item_contact')); } $rewrite_item_new = substr(str_replace('//', '/', Params::getParam('rewrite_item_new') . '/'), 0, -1); if (!osc_validate_text($rewrite_item_new)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_item_new), array('s_name' => 'rewrite_item_new')); } $rewrite_item_activate = substr(str_replace('//', '/', Params::getParam('rewrite_item_activate') . '/'), 0, -1); if (!osc_validate_text($rewrite_item_activate)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_item_activate), array('s_name' => 'rewrite_item_activate')); } $rewrite_item_edit = substr(str_replace('//', '/', Params::getParam('rewrite_item_edit') . '/'), 0, -1); if (!osc_validate_text($rewrite_item_edit)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_item_edit), array('s_name' => 'rewrite_item_edit')); } $rewrite_item_delete = substr(str_replace('//', '/', Params::getParam('rewrite_item_delete') . '/'), 0, -1); if (!osc_validate_text($rewrite_item_delete)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_item_delete), array('s_name' => 'rewrite_item_delete')); } $rewrite_item_resource_delete = substr(str_replace('//', '/', Params::getParam('rewrite_item_resource_delete') . '/'), 0, -1); if (!osc_validate_text($rewrite_item_resource_delete)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_item_resource_delete), array('s_name' => 'rewrite_item_resource_delete')); } $rewrite_user_login = substr(str_replace('//', '/', Params::getParam('rewrite_user_login') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_login)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_login), array('s_name' => 'rewrite_user_login')); } $rewrite_user_dashboard = substr(str_replace('//', '/', Params::getParam('rewrite_user_dashboard') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_dashboard)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_dashboard), array('s_name' => 'rewrite_user_dashboard')); } $rewrite_user_logout = substr(str_replace('//', '/', Params::getParam('rewrite_user_logout') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_logout)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_logout), array('s_name' => 'rewrite_user_logout')); } $rewrite_user_register = substr(str_replace('//', '/', Params::getParam('rewrite_user_register') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_register)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_register), array('s_name' => 'rewrite_user_register')); } $rewrite_user_activate = substr(str_replace('//', '/', Params::getParam('rewrite_user_activate') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_activate)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_activate), array('s_name' => 'rewrite_user_activate')); } $rewrite_user_activate_alert = substr(str_replace('//', '/', Params::getParam('rewrite_user_activate_alert') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_activate_alert)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_activate_alert), array('s_name' => 'rewrite_user_activate_alert')); } $rewrite_user_profile = substr(str_replace('//', '/', Params::getParam('rewrite_user_profile') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_profile)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_profile), array('s_name' => 'rewrite_user_profile')); } $rewrite_user_items = substr(str_replace('//', '/', Params::getParam('rewrite_user_items') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_items)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_items), array('s_name' => 'rewrite_user_items')); } $rewrite_user_alerts = substr(str_replace('//', '/', Params::getParam('rewrite_user_alerts') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_alerts)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_alerts), array('s_name' => 'rewrite_user_alerts')); } $rewrite_user_recover = substr(str_replace('//', '/', Params::getParam('rewrite_user_recover') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_recover)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_recover), array('s_name' => 'rewrite_user_recover')); } $rewrite_user_forgot = substr(str_replace('//', '/', Params::getParam('rewrite_user_forgot') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_forgot)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_forgot), array('s_name' => 'rewrite_user_forgot')); } $rewrite_user_change_password = substr(str_replace('//', '/', Params::getParam('rewrite_user_change_password') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_change_password)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_change_password), array('s_name' => 'rewrite_user_change_password')); } $rewrite_user_change_email = substr(str_replace('//', '/', Params::getParam('rewrite_user_change_email') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_change_email)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_change_email), array('s_name' => 'rewrite_user_change_email')); } $rewrite_user_change_email_confirm = substr(str_replace('//', '/', Params::getParam('rewrite_user_change_email_confirm') . '/'), 0, -1); if (!osc_validate_text($rewrite_user_change_email_confirm)) { $errors += 1; } else { Preference::newInstance()->update(array('s_value' => $rewrite_user_change_email_confirm), array('s_name' => 'rewrite_user_change_email_confirm')); } osc_reset_preferences(); $rewrite = Rewrite::newInstance(); osc_run_hook("before_rewrite_rules", array(&$rewrite)); $rewrite->clearRules(); /***************************** ********* Add rules ********* *****************************/ // Contact rules $rewrite->addRule('^' . osc_get_preference('rewrite_contact') . '/?$', 'index.php?page=contact'); // Feed rules $rewrite->addRule('^' . osc_get_preference('rewrite_feed') . '/?$', 'index.php?page=search&sFeed=rss'); $rewrite->addRule('^' . osc_get_preference('rewrite_feed') . '/(.+)/?$', 'index.php?page=search&sFeed=$1'); // Language rules $rewrite->addRule('^' . osc_get_preference('rewrite_language') . '/(.*?)/?$', 'index.php?page=language&locale=$1'); // Search rules $rewrite->addRule('^' . $search_url . '$', 'index.php?page=search'); $rewrite->addRule('^' . $search_url . '/(.*)$', 'index.php?page=search&sParams=$1'); // Item rules $rewrite->addRule('^' . osc_get_preference('rewrite_item_mark') . '/(.*?)/([0-9]+)/?$', 'index.php?page=item&action=mark&as=$1&id=$2'); $rewrite->addRule('^' . osc_get_preference('rewrite_item_send_friend') . '/([0-9]+)/?$', 'index.php?page=item&action=send_friend&id=$1'); $rewrite->addRule('^' . osc_get_preference('rewrite_item_contact') . '/([0-9]+)/?$', 'index.php?page=item&action=contact&id=$1'); $rewrite->addRule('^' . osc_get_preference('rewrite_item_new') . '/?$', 'index.php?page=item&action=item_add'); $rewrite->addRule('^' . osc_get_preference('rewrite_item_new') . '/([0-9]+)/?$', 'index.php?page=item&action=item_add&catId=$1'); $rewrite->addRule('^' . osc_get_preference('rewrite_item_activate') . '/([0-9]+)/(.*?)/?$', 'index.php?page=item&action=activate&id=$1&secret=$2'); $rewrite->addRule('^' . osc_get_preference('rewrite_item_edit') . '/([0-9]+)/(.*?)/?$', 'index.php?page=item&action=item_edit&id=$1&secret=$2'); $rewrite->addRule('^' . osc_get_preference('rewrite_item_delete') . '/([0-9]+)/(.*?)/?$', 'index.php?page=item&action=item_delete&id=$1&secret=$2'); $rewrite->addRule('^' . osc_get_preference('rewrite_item_resource_delete') . '/([0-9]+)/([0-9]+)/([0-9A-Za-z]+)/?(.*?)/?$', 'index.php?page=item&action=deleteResource&id=$1&item=$2&code=$3&secret=$4'); // Item rules $id_pos = stripos($item_url, '{ITEM_ID}'); $title_pos = stripos($item_url, '{ITEM_TITLE}'); $cat_pos = stripos($item_url, '{CATEGORIES'); $param_pos = 1; if ($title_pos !== false && $id_pos > $title_pos) { $param_pos++; } if ($cat_pos !== false && $id_pos > $cat_pos) { $param_pos++; } $comments_pos = 1; if ($id_pos !== false) { $comments_pos++; } if ($title_pos !== false) { $comments_pos++; } if ($cat_pos !== false) { $comments_pos++; } $rewrite->addRule('^' . str_replace('{ITEM_CITY}', '.*', str_replace('{CATEGORIES}', '.*', str_replace('{ITEM_TITLE}', '.*', str_replace('{ITEM_ID}', '([0-9]+)', $item_url . '\\?comments-page=([0-9al]*)')))) . '$', 'index.php?page=item&id=$1&comments-page=$2'); $rewrite->addRule('^([a-z]{2})_([A-Z]{2})/' . str_replace('{ITEM_CITY}', '.*', str_replace('{CATEGORIES}', '.*', str_replace('{ITEM_TITLE}', '.*', str_replace('{ITEM_ID}', '([0-9]+)', $item_url . '\\?comments-page=([0-9al]*)')))) . '$', 'index.php?page=item&id=$3&lang=$1_$2&comments-page=$4'); $rewrite->addRule('^' . str_replace('{ITEM_CITY}', '.*', str_replace('{CATEGORIES}', '.*', str_replace('{ITEM_TITLE}', '.*', str_replace('{ITEM_ID}', '([0-9]+)', $item_url)))) . '$', 'index.php?page=item&id=$1'); $rewrite->addRule('^([a-z]{2})_([A-Z]{2})/' . str_replace('{ITEM_CITY}', '.*', str_replace('{CATEGORIES}', '.*', str_replace('{ITEM_TITLE}', '.*', str_replace('{ITEM_ID}', '([0-9]+)', $item_url)))) . '$', 'index.php?page=item&id=$3&lang=$1_$2'); // User rules $rewrite->addRule('^' . osc_get_preference('rewrite_user_login') . '/?$', 'index.php?page=login'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_dashboard') . '/?$', 'index.php?page=user&action=dashboard'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_logout') . '/?$', 'index.php?page=main&action=logout'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_register') . '/?$', 'index.php?page=register&action=register'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_activate') . '/([0-9]+)/(.*?)/?$', 'index.php?page=register&action=validate&id=$1&code=$2'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_activate_alert') . '/([a-zA-Z0-9]+)/(.+)$', 'index.php?page=user&action=activate_alert&email=$2&secret=$1'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_profile') . '/?$', 'index.php?page=user&action=profile'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_profile') . '/([0-9]+)/?$', 'index.php?page=user&action=pub_profile&id=$1'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_items') . '/?$', 'index.php?page=user&action=items'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_alerts') . '/?$', 'index.php?page=user&action=alerts'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_recover') . '/?$', 'index.php?page=login&action=recover'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_forgot') . '/([0-9]+)/(.*)/?$', 'index.php?page=login&action=forgot&userId=$1&code=$2'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_change_password') . '/?$', 'index.php?page=user&action=change_password'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_change_email') . '/?$', 'index.php?page=user&action=change_email'); $rewrite->addRule('^' . osc_get_preference('rewrite_user_change_email_confirm') . '/([0-9]+)/(.*?)/?$', 'index.php?page=user&action=change_email_confirm&userId=$1&code=$2'); // Page rules $pos_pID = stripos($page_url, '{PAGE_ID}'); $pos_pSlug = stripos($page_url, '{PAGE_SLUG}'); $pID_pos = 1; $pSlug_pos = 1; if (is_numeric($pos_pID) && is_numeric($pos_pSlug)) { // set the order of the parameters if ($pos_pID > $pos_pSlug) { $pID_pos++; } else { $pSlug_pos++; } $rewrite->addRule('^' . str_replace('{PAGE_SLUG}', '([\\p{L}\\p{N}_\\-,]+)', str_replace('{PAGE_ID}', '([0-9]+)', $page_url)) . '/?$', 'index.php?page=page&id=$' . $pID_pos . "&slug=\$" . $pSlug_pos); $rewrite->addRule('^([a-z]{2})_([A-Z]{2})/' . str_replace('{PAGE_SLUG}', '([\\p{L}\\p{N}_\\-,]+)', str_replace('{PAGE_ID}', '([0-9]+)', $page_url)) . '/?$', 'index.php?page=page&lang=$1_$2&id=$' . ($pID_pos + 2) . '&slug=$' . ($pSlug_pos + 2)); } else { if (is_numeric($pos_pID)) { $rewrite->addRule('^' . str_replace('{PAGE_ID}', '([0-9]+)', $page_url) . '/?$', 'index.php?page=page&id=$1'); $rewrite->addRule('^([a-z]{2})_([A-Z]{2})/' . str_replace('{PAGE_ID}', '([0-9]+)', $page_url) . '/?$', 'index.php?page=page&lang=$1_$2&id=$3'); } else { $rewrite->addRule('^' . str_replace('{PAGE_SLUG}', '([\\p{L}\\p{N}_\\-,]+)', $page_url) . '/?$', 'index.php?page=page&slug=$1'); $rewrite->addRule('^([a-z]{2})_([A-Z]{2})/' . str_replace('{PAGE_SLUG}', '([\\p{L}\\p{N}_\\-,]+)', $page_url) . '/?$', 'index.php?page=page&lang=$1_$2&slug=$3'); } } // Clean archive files $rewrite->addRule('^(.+?)\\.php(.*)$', '$1.php$2'); // Category rules $id_pos = stripos($item_url, '{CATEGORY_ID}'); $title_pos = stripos($item_url, '{CATEGORY_SLUG}'); $cat_pos = stripos($item_url, '{CATEGORIES'); $param_pos = 1; if ($title_pos !== false && $id_pos > $title_pos) { $param_pos++; } if ($cat_pos !== false && $id_pos > $cat_pos) { $param_pos++; } $rewrite->addRule('^' . str_replace('{CATEGORIES}', '(.+)', str_replace('{CATEGORY_SLUG}', '([^/]+)', str_replace('{CATEGORY_ID}', '([0-9]+)', $cat_url))) . '$', 'index.php?page=search&sCategory=$' . $param_pos); osc_run_hook("after_rewrite_rules", array(&$rewrite)); //Write rule to DB $rewrite->setRules(); $msg_error = '<br/>' . _m('All fields are required.') . " " . sprintf(_mn('One field was not updated', '%s fields were not updated', $errors), $errors); switch ($status) { case 1: $msg = _m("Permalinks structure updated"); if ($errors > 0) { $msg .= $msg_error; osc_add_flash_warning_message($msg, 'admin'); } else { osc_add_flash_ok_message($msg, 'admin'); } break; case 2: $msg = _m("Permalinks structure updated."); $msg .= " "; $msg .= _m("However, we can't check if Apache module <b>mod_rewrite</b> is loaded. If you experience some problems with the URLs, you should deactivate <em>Friendly URLs</em>"); if ($errors > 0) { $msg .= $msg_error; } osc_add_flash_warning_message($msg, 'admin'); break; case 3: $msg = _m("File <b>.htaccess</b> couldn't be filled out with the right content."); $msg .= " "; $msg .= _m("Here's the content you have to add to the <b>.htaccess</b> file. If you can't create the file, please deactivate the <em>Friendly URLs</em> option."); $msg .= "</p><pre>" . htmlentities($htaccess, ENT_COMPAT, "UTF-8") . '</pre><p>'; if ($errors > 0) { $msg .= $msg_error; } osc_add_flash_error_message($msg, 'admin'); break; case 4: $msg = _m("File <b>.htaccess</b> couldn't be filled out with the right content."); $msg .= " "; $msg .= _m("Here's the content you have to add to the <b>.htaccess</b> file. If you can't create the file or experience some problems with the URLs, please deactivate the <em>Friendly URLs</em> option."); $msg .= "</p><pre>" . htmlentities($htaccess, ENT_COMPAT, "UTF-8") . '</pre><p>'; if ($errors > 0) { $msg .= $msg_error; } osc_add_flash_error_message($msg, 'admin'); break; } } else { Preference::newInstance()->update(array('s_value' => '0'), array('s_name' => 'rewriteEnabled')); Preference::newInstance()->update(array('s_value' => '0'), array('s_name' => 'mod_rewrite_loaded')); osc_add_flash_ok_message(_m('Friendly URLs successfully deactivated'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=permalinks'); break; case 'spamNbots': // calling the spam and bots view $akismet_key = osc_akismet_key(); $akismet_status = 3; if ($akismet_key != '') { require_once osc_lib_path() . 'Akismet.class.php'; $akismet_obj = new Akismet(osc_base_url(), $akismet_key); $akismet_status = 2; if ($akismet_obj->isKeyValid()) { $akismet_status = 1; } } View::newInstance()->_exportVariableToView('akismet_status', $akismet_status); $this->doView('settings/spamNbots.php'); break; case 'akismet_post': // updating spam and bots option $updated = 0; $akismetKey = Params::getParam('akismetKey'); $akismetKey = trim($akismetKey); $updated = Preference::newInstance()->update(array('s_value' => $akismetKey), array('s_name' => 'akismetKey')); if ($akismetKey == '') { osc_add_flash_info_message(_m('Your Akismet key has been cleared'), 'admin'); } else { osc_add_flash_ok_message(_m('Your Akismet key has been updated'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=spamNbots'); break; case 'recaptcha_post': // updating spam and bots option $iUpdated = 0; $recaptchaPrivKey = Params::getParam('recaptchaPrivKey'); $recaptchaPrivKey = trim($recaptchaPrivKey); $recaptchaPubKey = Params::getParam('recaptchaPubKey'); $recaptchaPubKey = trim($recaptchaPubKey); $iUpdated += Preference::newInstance()->update(array('s_value' => $recaptchaPrivKey), array('s_name' => 'recaptchaPrivKey')); $iUpdated += Preference::newInstance()->update(array('s_value' => $recaptchaPubKey), array('s_name' => 'recaptchaPubKey')); if ($recaptchaPubKey == '') { osc_add_flash_info_message(_m('Your reCAPTCHA key has been cleared'), 'admin'); } else { osc_add_flash_ok_message(_m('Your reCAPTCHA key has been updated'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=spamNbots'); break; case 'currencies': // currencies settings $currencies_action = Params::getParam('type'); switch ($currencies_action) { case 'add': // calling add currency view $aCurrency = array('pk_c_code' => '', 's_name' => '', 's_description' => ''); $this->_exportVariableToView('aCurrency', $aCurrency); $this->_exportVariableToView('typeForm', 'add_post'); $this->doView('settings/currency_form.php'); break; case 'add_post': // adding a new currency $currencyCode = Params::getParam('pk_c_code'); $currencyName = Params::getParam('s_name'); $currencyDescription = Params::getParam('s_description'); // cleaning parameters $currencyName = strip_tags($currencyName); $currencyDescription = strip_tags($currencyDescription); $currencyCode = strip_tags($currencyCode); $currencyCode = trim($currencyCode); if (!preg_match('/^.{1,3}$/', $currencyCode)) { osc_add_flash_error_message(_m('The currency code is not in the correct format'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=currencies'); } $fields = array('pk_c_code' => $currencyCode, 's_name' => $currencyName, 's_description' => $currencyDescription); $isInserted = Currency::newInstance()->insert($fields); if ($isInserted) { osc_add_flash_ok_message(_m('Currency added'), 'admin'); } else { osc_add_flash_error_message(_m("Currency couldn't be added"), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=currencies'); break; case 'edit': // calling edit currency view $currencyCode = Params::getParam('code'); $currencyCode = strip_tags($currencyCode); $currencyCode = trim($currencyCode); if ($currencyCode == '') { osc_add_flash_warning_message(sprintf(_m("The currency code '%s' doesn't exist"), $currencyCode), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=currencies'); } $aCurrency = Currency::newInstance()->findByPrimaryKey($currencyCode); if (!$aCurrency) { osc_add_flash_warning_message(sprintf(_m("The currency code '%s' doesn't exist"), $currencyCode), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=currencies'); } $this->_exportVariableToView('aCurrency', $aCurrency); $this->_exportVariableToView('typeForm', 'edit_post'); $this->doView('settings/currency_form.php'); break; case 'edit_post': // updating currency $currencyName = Params::getParam('s_name'); $currencyDescription = Params::getParam('s_description'); $currencyCode = Params::getParam('pk_c_code'); // cleaning parameters $currencyName = strip_tags($currencyName); $currencyDescription = strip_tags($currencyDescription); $currencyCode = strip_tags($currencyCode); $currencyCode = trim($currencyCode); if (!preg_match('/.{1,3}/', $currencyCode)) { osc_add_flash_error_message(_m('Error: the currency code is not in the correct format'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=currencies'); } $updated = Currency::newInstance()->update(array('s_name' => $currencyName, 's_description' => $currencyDescription), array('pk_c_code' => $currencyCode)); if ($updated == 1) { osc_add_flash_ok_message(_m('Currency updated'), 'admin'); } else { osc_add_flash_info_message(_m('No changes were made'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=currencies'); break; case 'delete': // deleting a currency $rowChanged = 0; $aCurrencyCode = Params::getParam('code'); if (!is_array($aCurrencyCode)) { $aCurrencyCode = array($aCurrencyCode); } $msg_current = ''; foreach ($aCurrencyCode as $currencyCode) { if (preg_match('/.{1,3}/', $currencyCode) && $currencyCode != osc_currency()) { $rowChanged += Currency::newInstance()->delete(array('pk_c_code' => $currencyCode)); } // foreign key error if (Currency::newInstance()->getErrorLevel() == '1451') { $msg_current .= sprintf('</p><p>' . _m("%s couldn't be deleted because it has listings associated to it"), $currencyCode); } else { if ($currencyCode == osc_currency()) { $msg_current .= sprintf('</p><p>' . _m("%s couldn't be deleted because it's the default currency"), $currencyCode); } } } $msg = ''; $status = ''; switch ($rowChanged) { case '0': $msg = _m('No currencies have been deleted'); $status = 'error'; break; case '1': $msg = _m('One currency has been deleted'); $status = 'ok'; break; default: $msg = sprintf(_m('%s currencies have been deleted'), $rowChanged); $status = 'ok'; break; } if ($status == 'ok' && $msg_current != '') { $status = 'warning'; } switch ($status) { case 'error': osc_add_flash_error_message($msg . $msg_current, 'admin'); break; case 'warning': osc_add_flash_warning_message($msg . $msg_current, 'admin'); break; case 'ok': osc_add_flash_ok_message($msg, 'admin'); break; } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=currencies'); break; default: // calling the currencies view $aCurrencies = Currency::newInstance()->listAll(); $this->_exportVariableToView('aCurrencies', $aCurrencies); $this->doView('settings/currencies.php'); break; } break; case 'mailserver': // calling the mailserver view $this->doView('settings/mailserver.php'); break; case 'mailserver_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action can't be done because it's a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=mailserver'); } // updating mailserver $iUpdated = 0; $mailserverAuth = Params::getParam('mailserver_auth'); $mailserverAuth = $mailserverAuth != '' ? true : false; $mailserverPop = Params::getParam('mailserver_pop'); $mailserverPop = $mailserverPop != '' ? true : false; $mailserverType = Params::getParam('mailserver_type'); $mailserverHost = Params::getParam('mailserver_host'); $mailserverPort = Params::getParam('mailserver_port'); $mailserverUsername = Params::getParam('mailserver_username'); $mailserverPassword = Params::getParam('mailserver_password'); $mailserverSsl = Params::getParam('mailserver_ssl'); if (!in_array($mailserverType, array('custom', 'gmail'))) { osc_add_flash_error_message(_m('Mail server type is incorrect'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=mailserver'); } $iUpdated += Preference::newInstance()->update(array('s_value' => $mailserverAuth), array('s_name' => 'mailserver_auth')); $iUpdated += Preference::newInstance()->update(array('s_value' => $mailserverPop), array('s_name' => 'mailserver_pop')); $iUpdated += Preference::newInstance()->update(array('s_value' => $mailserverType), array('s_name' => 'mailserver_type')); $iUpdated += Preference::newInstance()->update(array('s_value' => $mailserverHost), array('s_name' => 'mailserver_host')); $iUpdated += Preference::newInstance()->update(array('s_value' => $mailserverPort), array('s_name' => 'mailserver_port')); $iUpdated += Preference::newInstance()->update(array('s_value' => $mailserverUsername), array('s_name' => 'mailserver_username')); $iUpdated += Preference::newInstance()->update(array('s_value' => $mailserverPassword), array('s_name' => 'mailserver_password')); $iUpdated += Preference::newInstance()->update(array('s_value' => $mailserverSsl), array('s_name' => 'mailserver_ssl')); if ($iUpdated > 0) { osc_add_flash_ok_message(_m('Mail server configuration has changed'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=mailserver'); break; case 'media': // calling the media view $max_upload = (int) ini_get('upload_max_filesize'); $max_post = (int) ini_get('post_max_size'); $memory_limit = (int) ini_get('memory_limit'); $upload_mb = min($max_upload, $max_post, $memory_limit) * 1024; $this->_exportVariableToView('max_size_upload', $upload_mb); $this->doView('settings/media.php'); break; case 'media_post': // updating the media config $status = 'ok'; $error = ''; $iUpdated = 0; $maxSizeKb = Params::getParam('maxSizeKb'); $allowedExt = Params::getParam('allowedExt'); $dimThumbnail = Params::getParam('dimThumbnail'); $dimPreview = Params::getParam('dimPreview'); $dimNormal = Params::getParam('dimNormal'); $keepOriginalImage = Params::getParam('keep_original_image'); $use_imagick = Params::getParam('use_imagick'); $type_watermark = Params::getParam('watermark_type'); $watermark_color = Params::getParam('watermark_text_color'); $watermark_text = Params::getParam('watermark_text'); switch ($type_watermark) { case 'none': $iUpdated += Preference::newInstance()->update(array('s_value' => ''), array('s_name' => 'watermark_text_color')); $iUpdated += Preference::newInstance()->update(array('s_value' => ''), array('s_name' => 'watermark_text')); $iUpdated += Preference::newInstance()->update(array('s_value' => ''), array('s_name' => 'watermark_image')); break; case 'text': $iUpdated += Preference::newInstance()->update(array('s_value' => $watermark_color), array('s_name' => 'watermark_text_color')); $iUpdated += Preference::newInstance()->update(array('s_value' => $watermark_text), array('s_name' => 'watermark_text')); $iUpdated += Preference::newInstance()->update(array('s_value' => ''), array('s_name' => 'watermark_image')); $iUpdated += Preference::newInstance()->update(array('s_value' => Params::getParam('watermark_text_place')), array('s_name' => 'watermark_place')); break; case 'image': // upload image & move to path if ($_FILES['watermark_image']['error'] == UPLOAD_ERR_OK) { if ($_FILES['watermark_image']['type'] == 'image/png') { $tmpName = $_FILES['watermark_image']['tmp_name']; $path = osc_content_path() . 'uploads/watermark.png'; if (move_uploaded_file($tmpName, $path)) { $iUpdated += Preference::newInstance()->update(array('s_value' => $path), array('s_name' => 'watermark_image')); } else { $error .= _m('There was a problem uploading the watermark image') . "<br />"; } } else { $error .= _m('The watermark image has to be a .PNG file') . "<br />"; } } else { $error .= _m('There was a problem uploading the watermark image') . "<br />"; } $iUpdated += Preference::newInstance()->update(array('s_value' => ''), array('s_name' => 'watermark_text_color')); $iUpdated += Preference::newInstance()->update(array('s_value' => ''), array('s_name' => 'watermark_text')); $iUpdated += Preference::newInstance()->update(array('s_value' => Params::getParam('watermark_image_place')), array('s_name' => 'watermark_place')); break; default: break; } // format parameters $maxSizeKb = strip_tags($maxSizeKb); $allowedExt = strip_tags($allowedExt); $dimThumbnail = strip_tags($dimThumbnail); $dimPreview = strip_tags($dimPreview); $dimNormal = strip_tags($dimNormal); $keepOriginalImage = $keepOriginalImage != '' ? true : false; $use_imagick = $use_imagick != '' ? true : false; // is imagick extension loaded? if (!@extension_loaded('imagick')) { $use_imagick = false; } // max size allowed by PHP configuration? $max_upload = (int) ini_get('upload_max_filesize'); $max_post = (int) ini_get('post_max_size'); $memory_limit = (int) ini_get('memory_limit'); $upload_mb = min($max_upload, $max_post, $memory_limit) * 1024; // set maxSizeKB equals to PHP configuration if it's bigger if ($maxSizeKb > $upload_mb) { $status = 'warning'; $maxSizeKb = $upload_mb; // flash message text warning $error .= sprintf(_m("You cannot set a maximum file size higher than the one allowed in the PHP configuration: <b>%d KB</b>"), $upload_mb); } $iUpdated += Preference::newInstance()->update(array('s_value' => $maxSizeKb), array('s_name' => 'maxSizeKb')); $iUpdated += Preference::newInstance()->update(array('s_value' => $allowedExt), array('s_name' => 'allowedExt')); $iUpdated += Preference::newInstance()->update(array('s_value' => $dimThumbnail), array('s_name' => 'dimThumbnail')); $iUpdated += Preference::newInstance()->update(array('s_value' => $dimPreview), array('s_name' => 'dimPreview')); $iUpdated += Preference::newInstance()->update(array('s_value' => $dimNormal), array('s_name' => 'dimNormal')); $iUpdated += Preference::newInstance()->update(array('s_value' => $keepOriginalImage), array('s_name' => 'keep_original_image')); $iUpdated += Preference::newInstance()->update(array('s_value' => $use_imagick), array('s_name' => 'use_imagick')); if ($error != '') { switch ($status) { case 'error': osc_add_flash_error_message($error, 'admin'); break; case 'warning': osc_add_flash_warning_message($error, 'admin'); break; default: osc_add_flash_ok_message($error, 'admin'); break; } } else { osc_add_flash_ok_message(_m('Media config has been updated'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=media'); break; case 'images_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action can't be done because it's a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=media'); } $wat = new Watermark(); $aResources = ItemResource::newInstance()->getAllResources(); foreach ($aResources as $resource) { osc_run_hook('regenerate_image', $resource); $path = osc_content_path() . 'uploads/'; // comprobar que no haya original $img_original = $path . $resource['pk_i_id'] . "_original*"; $aImages = glob($img_original); // there is original image if (count($aImages) == 1) { $image_tmp = $aImages[0]; } else { $img_normal = $path . $resource['pk_i_id'] . ".*"; $aImages = glob($img_normal); if (count($aImages) == 1) { $image_tmp = $aImages[0]; } else { $img_thumbnail = $path . $resource['pk_i_id'] . "_thumbnail*"; $aImages = glob($img_thumbnail); $image_tmp = $aImages[0]; } } // extension preg_match('/\\.(.*)$/', $image_tmp, $matches); if (isset($matches[1])) { $extension = $matches[1]; // Create normal size $path_normal = $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '.jpg'; $size = explode('x', osc_normal_dimensions()); ImageResizer::fromFile($image_tmp)->resizeTo($size[0], $size[1])->saveToFile($path); if (osc_is_watermark_text()) { $wat->doWatermarkText($path, osc_watermark_text_color(), osc_watermark_text(), 'image/jpeg'); } elseif (osc_is_watermark_image()) { $wat->doWatermarkImage($path, 'image/jpeg'); } // Create preview $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_preview.jpg'; $size = explode('x', osc_preview_dimensions()); ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path); // Create thumbnail $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_thumbnail.jpg'; $size = explode('x', osc_thumbnail_dimensions()); ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path); // update resource info ItemResource::newInstance()->update(array('s_path' => 'oc-content/uploads/', 's_name' => osc_genRandomPassword(), 's_extension' => 'jpg', 's_content_type' => 'image/jpeg'), array('pk_i_id' => $resource['pk_i_id'])); osc_run_hook('regenerated_image', ItemResource::newInstance()->findByPrimaryKey($resource['pk_i_id'])); // si extension es direfente a jpg, eliminar las imagenes con $extension si hay if ($extension != 'jpg') { @unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . "." . $extension); @unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . "_original." . $extension); @unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . "_preview." . $extension); @unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . "_thumbnail." . $extension); } // .... } else { // no es imagen o imagen sin extesión } } osc_add_flash_ok_message(_m('Re-generation complete'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=media'); break; case 'update': // update index view $iUpdated = 0; $sPageTitle = Params::getParam('pageTitle'); $sPageDesc = Params::getParam('pageDesc'); $sContactEmail = Params::getParam('contactEmail'); $sLanguage = Params::getParam('language'); $sDateFormat = Params::getParam('dateFormat'); $sCurrency = Params::getParam('currency'); $sWeekStart = Params::getParam('weekStart'); $sTimeFormat = Params::getParam('timeFormat'); $sTimezone = Params::getParam('timezone'); $sNumRssItems = Params::getParam('num_rss_items'); $maxLatestItems = Params::getParam('max_latest_items_at_home'); $numItemsSearch = Params::getParam('default_results_per_page'); $contactAttachment = Params::getParam('enabled_attachment'); $selectableParent = Params::getParam('selectable_parent_categories'); $bAutoCron = Params::getParam('auto_cron'); $bMarketSources = Params::getParam('market_external_sources') == 1 ? 1 : 0; // preparing parameters $sPageTitle = strip_tags($sPageTitle); $sPageDesc = strip_tags($sPageDesc); $sContactEmail = strip_tags($sContactEmail); $sLanguage = strip_tags($sLanguage); $sDateFormat = strip_tags($sDateFormat); $sCurrency = strip_tags($sCurrency); $sWeekStart = strip_tags($sWeekStart); $sTimeFormat = strip_tags($sTimeFormat); $sNumRssItems = (int) strip_tags($sNumRssItems); $maxLatestItems = (int) strip_tags($maxLatestItems); $numItemsSearch = (int) $numItemsSearch; $contactAttachment = $contactAttachment != '' ? true : false; $bAutoCron = $bAutoCron != '' ? true : false; $error = ""; $msg = ''; if (!osc_validate_text($sPageTitle)) { $msg .= _m("Page title field is required") . "<br/>"; } if (!osc_validate_text($sContactEmail)) { $msg .= _m("Contact email field is required") . "<br/>"; } if (!osc_validate_int($sNumRssItems)) { $msg .= _m("Number of listings in the RSS has to be a numeric value") . "<br/>"; } if (!osc_validate_int($maxLatestItems)) { $msg .= _m("Max latest listings has to be a numeric value") . "<br/>"; } if (!osc_validate_int($numItemsSearch)) { $msg .= _m("Number of listings on search has to be a numeric value") . "<br/>"; } if ($msg != '') { osc_add_flash_error_message($msg, 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings'); } $iUpdated += Preference::newInstance()->update(array('s_value' => $sPageTitle), array('s_section' => 'osclass', 's_name' => 'pageTitle')); $iUpdated += Preference::newInstance()->update(array('s_value' => $sPageDesc), array('s_section' => 'osclass', 's_name' => 'pageDesc')); if (!defined('DEMO')) { $iUpdated += Preference::newInstance()->update(array('s_value' => $sContactEmail), array('s_section' => 'osclass', 's_name' => 'contactEmail')); } $iUpdated += Preference::newInstance()->update(array('s_value' => $sLanguage), array('s_section' => 'osclass', 's_name' => 'language')); $iUpdated += Preference::newInstance()->update(array('s_value' => $sDateFormat), array('s_section' => 'osclass', 's_name' => 'dateFormat')); $iUpdated += Preference::newInstance()->update(array('s_value' => $sCurrency), array('s_section' => 'osclass', 's_name' => 'currency')); $iUpdated += Preference::newInstance()->update(array('s_value' => $sWeekStart), array('s_section' => 'osclass', 's_name' => 'weekStart')); $iUpdated += Preference::newInstance()->update(array('s_value' => $sTimeFormat), array('s_section' => 'osclass', 's_name' => 'timeFormat')); $iUpdated += Preference::newInstance()->update(array('s_value' => $sTimezone), array('s_section' => 'osclass', 's_name' => 'timezone')); $iUpdated += Preference::newInstance()->update(array('s_value' => $bMarketSources), array('s_section' => 'osclass', 's_name' => 'marketAllowExternalSources')); if (is_int($sNumRssItems)) { $iUpdated += Preference::newInstance()->update(array('s_value' => $sNumRssItems), array('s_section' => 'osclass', 's_name' => 'num_rss_items')); } else { if ($error != '') { $error .= "</p><p>"; } $error .= _m('Number of listings in the RSS must be an integer'); } if (is_int($maxLatestItems)) { $iUpdated += Preference::newInstance()->update(array('s_value' => $maxLatestItems), array('s_section' => 'osclass', 's_name' => 'maxLatestItems@home')); } else { if ($error != '') { $error .= "</p><p>"; } $error .= _m('Number of recent listings displayed at home must be an integer'); } $iUpdated += Preference::newInstance()->update(array('s_value' => $numItemsSearch), array('s_section' => 'osclass', 's_name' => 'defaultResultsPerPage@search')); $iUpdated += Preference::newInstance()->update(array('s_value' => $contactAttachment), array('s_name' => 'contact_attachment')); $iUpdated += Preference::newInstance()->update(array('s_value' => $bAutoCron), array('s_name' => 'auto_cron')); $iUpdated += Preference::newInstance()->update(array('s_value' => $selectableParent), array('s_name' => 'selectable_parent_categories')); if ($iUpdated > 0) { if ($error != '') { osc_add_flash_error_message($error . "</p><p>" . _m('General settings have been updated'), 'admin'); } else { osc_add_flash_ok_message(_m('General settings have been updated'), 'admin'); } } else { if ($error != '') { osc_add_flash_error_message($error, 'admin'); } } $this->redirectTo(osc_admin_base_url(true) . '?page=settings'); break; case 'check_updates': osc_admin_toolbar_update_themes(true); osc_admin_toolbar_update_plugins(true); osc_add_flash_ok_message(_m('Last check') . ': ' . date("Y-m-d H:i"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings'); break; case 'latestsearches': //calling the comments settings view $this->doView('settings/searches.php'); break; case 'latestsearches_post': // updating comment if (Params::getParam('save_latest_searches') == 'on') { Preference::newInstance()->update(array('s_value' => 1), array('s_name' => 'save_latest_searches')); } else { Preference::newInstance()->update(array('s_value' => 0), array('s_name' => 'save_latest_searches')); } if (Params::getParam('customPurge') == '') { osc_add_flash_error_message(_m('Custom number could not be left empty'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=latestsearches'); } else { Preference::newInstance()->update(array('s_value' => Params::getParam('customPurge')), array('s_name' => 'purge_latest_searches')); osc_add_flash_ok_message(_m('Last search settings have been updated'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=latestsearches'); } break; default: // calling the view $aLanguages = OSCLocale::newInstance()->listAllEnabled(); $aCurrencies = Currency::newInstance()->listAll(); $this->_exportVariableToView('aLanguages', $aLanguages); $this->_exportVariableToView('aCurrencies', $aCurrencies); $this->doView('settings/index.php'); break; } }
function theme_osclasswizards_actions_admin() { if (Params::getParam('file') == 'oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php') { if (Params::getParam('donation') == 'successful') { osc_set_preference('donation', '1', 'osclasswizards_theme'); osc_reset_preferences(); } } switch (Params::getParam('action_specific')) { case 'settings': osc_set_preference('welcome_message', Params::getParam('welcome_message'), 'osclasswizards_theme'); osc_set_preference('defaultShowAs@all', Params::getParam('defaultShowAs@all'), 'osclasswizards_theme'); osc_set_preference('defaultShowAs@search', Params::getParam('defaultShowAs@all')); osc_add_flash_ok_message(__('Theme settings updated correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php')); break; case 'templates_home': osc_set_preference('show_banner', Params::getParam('show_banner') ? '1' : '0', 'osclasswizards_theme'); osc_set_preference('keyword_placeholder', Params::getParam('keyword_placeholder'), 'osclasswizards_theme'); osc_set_preference('show_search_country', Params::getParam('show_search_country') ? '1' : '0', 'osclasswizards_theme'); osc_set_preference('premium_listings_shown_home', Params::getParam('premium_listings_shown_home'), 'osclasswizards_theme'); osc_set_preference('sub_cat_limit', Params::getParam('sub_cat_limit'), 'osclasswizards_theme'); osc_set_preference('show_popular', Params::getParam('show_popular'), 'osclasswizards_theme'); osc_set_preference('show_popular_regions', Params::getParam('show_popular_regions'), 'osclasswizards_theme'); osc_set_preference('show_popular_cities', Params::getParam('show_popular_cities'), 'osclasswizards_theme'); osc_set_preference('show_popular_searches', Params::getParam('show_popular_searches'), 'osclasswizards_theme'); osc_set_preference('popular_regions_limit', Params::getParam('popular_regions_limit'), 'osclasswizards_theme'); osc_set_preference('popular_cities_limit', Params::getParam('popular_cities_limit'), 'osclasswizards_theme'); osc_set_preference('popular_searches_limit', Params::getParam('popular_searches_limit'), 'osclasswizards_theme'); osc_add_flash_ok_message(__('Templates settings updated correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#templates')); break; case 'templates_search': osc_set_preference('premium_listings_shown', Params::getParam('premium_listings_shown'), 'osclasswizards_theme'); osc_add_flash_ok_message(__('Templates settings updated correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#templates')); break; case 'templates_item_post': $locations_input_as = Params::getParam('locations_input_as', 'osclasswizards_theme'); $locations_required = Params::getParam('locations_required', 'osclasswizards_theme'); $category_multiple_selects = Params::getParam('category_multiple_selects', 'osclasswizards_theme'); osc_set_preference('title_minimum_length', Params::getParam('title_minimum_length', 'osclasswizards_theme'), 'osclasswizards_theme'); osc_set_preference('description_minimum_length', Params::getParam('description_minimum_length', 'osclasswizards_theme'), 'osclasswizards_theme'); osc_set_preference('locations_input_as', $locations_input_as, 'osclasswizards_theme'); osc_set_preference('locations_required', $locations_required ? '1' : '0', 'osclasswizards_theme'); osc_set_preference('category_multiple_selects', $category_multiple_selects ? '1' : '0', 'osclasswizards_theme'); osc_add_flash_ok_message(__('Templates settings updated correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#templates')); break; case 'ads_mgmt': osc_set_preference('header-728x90', trim(Params::getParam('header-728x90', false, false, false)), 'osclasswizards_theme'); osc_set_preference('homepage-728x90', trim(Params::getParam('homepage-728x90', false, false, false)), 'osclasswizards_theme'); osc_set_preference('sidebar-300x250', trim(Params::getParam('sidebar-300x250', false, false, false)), 'osclasswizards_theme'); osc_set_preference('search-results-top-728x90', trim(Params::getParam('search-results-top-728x90', false, false, false)), 'osclasswizards_theme'); osc_set_preference('search-results-middle-728x90', trim(Params::getParam('search-results-middle-728x90', false, false, false)), 'osclasswizards_theme'); osc_add_flash_ok_message(__('Ads management updated correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#ads')); break; case 'categories_icons': $catsIcons = Params::getParam('cat-icons'); foreach ($catsIcons as $catId => $iconName) { osc_set_preference('cat-icons-' . $catId, $iconName, 'osclasswizards_theme_cat_icons'); } osc_add_flash_ok_message(__('Category icons settings updated correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#category-icons')); break; case 'theme_style': $color_mode = Params::getParam('theme_color_mode'); osc_set_preference('theme_color_mode', $color_mode, 'osclasswizards_theme'); osc_set_preference('google_fonts', Params::getParam('google_fonts'), 'osclasswizards_theme'); $rtl_view = Params::getParam('rtl_view', 'osclasswizards_theme'); osc_set_preference('rtl_view', $rtl_view ? '1' : '0', 'osclasswizards_theme'); osc_set_preference('custom_css', trim(Params::getParam('custom_css', false, false, false)), 'osclasswizards_theme'); osc_add_flash_ok_message(__('Theme color settings updated correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#theme-style')); break; case 'facebook': osc_set_preference('facebook-url', trim(Params::getParam('facebook-url', false, false, false)), 'osclasswizards_theme'); osc_set_preference('facebook-width', trim(Params::getParam('facebook-width', false, false, false)), 'osclasswizards_theme'); osc_set_preference('facebook-height', trim(Params::getParam('facebook-height', false, false, false)), 'osclasswizards_theme'); osc_set_preference('facebook-hidecover', trim(Params::getParam('facebook-hidecover', false, false, false)), 'osclasswizards_theme'); osc_set_preference('facebook-showface', trim(Params::getParam('facebook-showface', false, false, false)), 'osclasswizards_theme'); osc_set_preference('facebook-showpost', trim(Params::getParam('facebook-showpost', false, false, false)), 'osclasswizards_theme'); osc_set_preference('facebook-showitem', trim(Params::getParam('facebook-showitem', false, false, false)), 'osclasswizards_theme'); osc_set_preference('facebook-showsearch', trim(Params::getParam('facebook-showsearch', false, false, false)), 'osclasswizards_theme'); osc_add_flash_ok_message(__('Facebook Page settings updated correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#facebook')); break; case 'upload_favicon': $package = Params::getFiles('favicon'); if ($package['error'] == UPLOAD_ERR_OK) { $img = ImageResizer::fromFile($package['tmp_name']); $ext = $img->getExt(); $logo_name = 'favicon'; $logo_name .= '.' . $ext; $path = osc_uploads_path() . $logo_name; $img->saveToFile($path); osc_set_preference('favicon', $logo_name, 'osclasswizards_theme'); osc_add_flash_ok_message(__('The favicon image has been uploaded correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } else { osc_add_flash_error_message(__("An error has occurred, please try again", OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#favicon')); break; case 'upload_logo': $package = Params::getFiles('logo'); if ($package['error'] == UPLOAD_ERR_OK) { $img = ImageResizer::fromFile($package['tmp_name']); $ext = $img->getExt(); $logo_name = 'logo'; $logo_name .= '.' . $ext; $path = osc_uploads_path() . $logo_name; $img->saveToFile($path); osc_set_preference('logo', $logo_name, 'osclasswizards_theme'); osc_add_flash_ok_message(__('The logo image has been uploaded correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } else { osc_add_flash_error_message(__("An error has occurred, please try again", OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#logo')); break; case 'remove_favicon': $logo = osc_get_preference('favicon', 'osclasswizards_theme'); $path = osc_uploads_path() . $logo; if (file_exists($path)) { @unlink($path); osc_delete_preference('favicon', 'osclasswizards_theme'); osc_reset_preferences(); osc_add_flash_ok_message(__('The favicon image has been removed', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } else { osc_add_flash_error_message(__("Image not found", OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#favicon')); break; case 'remove': $logo = osc_get_preference('logo', 'osclasswizards_theme'); $path = osc_uploads_path() . $logo; if (file_exists($path)) { @unlink($path); osc_delete_preference('logo', 'osclasswizards_theme'); osc_reset_preferences(); osc_add_flash_ok_message(__('The logo image has been removed', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } else { osc_add_flash_error_message(__("Image not found", OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#logo')); break; case 'upload_homeimage': $package = Params::getFiles('homeimage'); if ($package['error'] == UPLOAD_ERR_OK) { $img = ImageResizer::fromFile($package['tmp_name']); $ext = $img->getExt(); $logo_name = 'homeimage'; $logo_name .= '.' . $ext; $path = osc_uploads_path() . $logo_name; $img->saveToFile($path); osc_set_preference('homeimage', $logo_name, 'osclasswizards_theme'); osc_add_flash_ok_message(__('The banner image has been uploaded correctly', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } else { osc_add_flash_error_message(__("An error has occurred, please try again", OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#banner')); break; case 'remove_homeimage': $logo = osc_get_preference('homeimage', 'osclasswizards_theme'); $path = osc_uploads_path() . $logo; if (file_exists($path)) { @unlink($path); osc_delete_preference('homeimage', 'osclasswizards_theme'); osc_reset_preferences(); osc_add_flash_ok_message(__('The banner image has been removed', OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } else { osc_add_flash_error_message(__("Image not found", OSCLASSWIZARDS_THEME_FOLDER), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/' . OSCLASSWIZARDS_THEME_FOLDER . '/admin/settings.php#banner')); break; } }
<?php include "../cbImage.php"; include "../ImageResizer.class.php"; $c = new Image("cars.jpg"); $r = new ImageResizer($c); //print_r($c->getType()); //$r->scalePercentage(80); $r->ScalePercentage(10); // means 10% of real size of image $r->show();
/** * Helper function that imports a image file and shrinks it to max allowed dimensions */ public static function importImage($type, &$key, $category = 0, $blind = false, $max_width = 800, $max_height = 800) { $error = ErrorHandler::getInstance(); if (!file_exists($key['tmp_name'])) { throw new \Exception('file ' . $key['tmp_name'] . ' dont exist!'); } $info = getimagesize($key['tmp_name']); switch ($info['mime']) { case 'image/jpeg': break; case 'image/png': break; case 'image/gif': break; default: $error->add('Uploaded file ' . $key['name'] . ' is not an image (mimetype ' . $info['mime'] . ')'); return false; } $fileId = self::import($type, $key, $category, $blind); if (!$fileId) { return false; } $im = new ImageResizer(File::get($fileId)); if ($im->width >= $max_width || $im->height >= $max_height) { $im->resizeAspect($max_width, $max_height); $im->render($im->mimetype, self::getUploadPath($fileId)); self::sync($fileId); //updates tblFiles.size } return $fileId; }
function doModel() { //specific things for this class switch ($this->action) { case 'bulk_actions': break; case 'regions': //Return regions given a countryId $regions = Region::newInstance()->findByCountry(Params::getParam("countryId")); echo json_encode($regions); break; case 'cities': //Returns cities given a regionId $cities = City::newInstance()->findByRegion(Params::getParam("regionId")); echo json_encode($cities); break; case 'location': // This is the autocomplete AJAX $cities = City::newInstance()->ajax(Params::getParam("term")); foreach ($cities as $k => $city) { $cities[$k]['label'] = $city['label'] . " (" . $city['region'] . ")"; } echo json_encode($cities); break; case 'location_countries': // This is the autocomplete AJAX $countries = Country::newInstance()->ajax(Params::getParam("term")); echo json_encode($countries); break; case 'location_regions': // This is the autocomplete AJAX $regions = Region::newInstance()->ajax(Params::getParam("term"), Params::getParam("country")); echo json_encode($regions); break; case 'location_cities': // This is the autocomplete AJAX $cities = City::newInstance()->ajax(Params::getParam("term"), Params::getParam("region")); echo json_encode($cities); break; case 'delete_image': // Delete images via AJAX $ajax_photo = Params::getParam('ajax_photo'); $id = Params::getParam('id'); $item = Params::getParam('item'); $code = Params::getParam('code'); $secret = Params::getParam('secret'); $json = array(); if ($ajax_photo != '') { $files = Session::newInstance()->_get('ajax_files'); $success = false; foreach ($files as $uuid => $file) { if ($file == $ajax_photo) { $filename = $files[$uuid]; unset($files[$uuid]); Session::newInstance()->_set('ajax_files', $files); $success = @unlink(osc_content_path() . 'uploads/temp/' . $filename); break; } } echo json_encode(array('success' => $success, 'msg' => $success ? _m('The selected photo has been successfully deleted') : _m("The selected photo couldn't be deleted"))); return false; } if (Session::newInstance()->_get('userId') != '') { $userId = Session::newInstance()->_get('userId'); $user = User::newInstance()->findByPrimaryKey($userId); } else { $userId = null; $user = null; } // Check for required fields if (!(is_numeric($id) && is_numeric($item) && preg_match('/^([a-z0-9]+)$/i', $code))) { $json['success'] = false; $json['msg'] = _m("The selected photo couldn't be deleted, the url doesn't exist"); echo json_encode($json); return false; } $aItem = Item::newInstance()->findByPrimaryKey($item); // Check if the item exists if (count($aItem) == 0) { $json['success'] = false; $json['msg'] = _m("The listing doesn't exist"); echo json_encode($json); return false; } if (!osc_is_admin_user_logged_in()) { // Check if the item belong to the user if ($userId != null && $userId != $aItem['fk_i_user_id']) { $json['success'] = false; $json['msg'] = _m("The listing doesn't belong to you"); echo json_encode($json); return false; } // Check if the secret passphrase match with the item if ($userId == null && $aItem['fk_i_user_id'] == null && $secret != $aItem['s_secret']) { $json['success'] = false; $json['msg'] = _m("The listing doesn't belong to you"); echo json_encode($json); return false; } } // Does id & code combination exist? $result = ItemResource::newInstance()->existResource($id, $code); if ($result > 0) { $resource = ItemResource::newInstance()->findByPrimaryKey($id); if ($resource['fk_i_item_id'] == $item) { // Delete: file, db table entry if (defined(OC_ADMIN)) { osc_deleteResource($id, true); Log::newInstance()->insertLog('ajax', 'deleteimage', $id, $id, 'admin', osc_logged_admin_id()); } else { osc_deleteResource($id, false); Log::newInstance()->insertLog('ajax', 'deleteimage', $id, $id, 'user', osc_logged_user_id()); } ItemResource::newInstance()->delete(array('pk_i_id' => $id, 'fk_i_item_id' => $item, 's_name' => $code)); $json['msg'] = _m('The selected photo has been successfully deleted'); $json['success'] = 'true'; } else { $json['msg'] = _m("The selected photo does not belong to you"); $json['success'] = 'false'; } } else { $json['msg'] = _m("The selected photo couldn't be deleted"); $json['success'] = 'false'; } echo json_encode($json); return true; break; case 'alerts': // Allow to register to an alert given (not sure it's used on admin) $encoded_alert = Params::getParam("alert"); $alert = osc_decrypt_alert(base64_decode($encoded_alert)); // check alert integrity / signature $stringToSign = osc_get_alert_public_key() . $encoded_alert; $signature = hex2b64(hmacsha1(osc_get_alert_private_key(), $stringToSign)); $server_signature = Session::newInstance()->_get('alert_signature'); if ($server_signature != $signature) { echo '-2'; return false; } $email = Params::getParam("email"); $userid = Params::getParam("userid"); if (osc_is_web_user_logged_in()) { $userid = osc_logged_user_id(); $user = User::newInstance()->findByPrimaryKey($userid); $email = $user['s_email']; } if ($alert != '' && $email != '') { if (osc_validate_email($email)) { $secret = osc_genRandomPassword(); if ($alertID = Alerts::newInstance()->createAlert($userid, $email, $alert, $secret)) { if ((int) $userid > 0) { $user = User::newInstance()->findByPrimaryKey($userid); if ($user['b_active'] == 1 && $user['b_enabled'] == 1) { Alerts::newInstance()->activate($alertID); echo '1'; return true; } else { echo '-1'; return false; } } else { $aAlert = Alerts::newInstance()->findByPrimaryKey($alertID); osc_run_hook('hook_email_alert_validation', $aAlert, $email, $secret); } echo "1"; } else { echo "0"; } return true; } else { echo '-1'; return false; } } echo '0'; return false; break; case 'runhook': // run hooks $hook = Params::getParam('hook'); if ($hook == '') { echo json_encode(array('error' => 'hook parameter not defined')); break; } switch ($hook) { case 'item_form': osc_run_hook('item_form', Params::getParam('catId')); break; case 'item_edit': $catId = Params::getParam("catId"); $itemId = Params::getParam("itemId"); osc_run_hook("item_edit", $catId, $itemId); break; default: osc_run_hook('ajax_' . $hook); break; } break; case 'custom': // Execute via AJAX custom file if (Params::existParam('route')) { $routes = Rewrite::newInstance()->getRoutes(); $rid = Params::getParam('route'); $file = '../'; if (isset($routes[$rid]) && isset($routes[$rid]['file'])) { $file = $routes[$rid]['file']; } } else { // DEPRECATED: Disclosed path in URL is deprecated, use routes instead // This will be REMOVED in 3.4 $file = Params::getParam('ajaxfile'); } if ($file == '') { echo json_encode(array('error' => 'no action defined')); break; } // valid file? if (strpos($file, '../') !== false || strpos($file, '..\\') !== false || stripos($file, '/admin/') !== false) { //If the file is inside an "admin" folder, it should NOT be opened in frontend echo json_encode(array('error' => 'no valid ajaxFile')); break; } if (!file_exists(osc_plugins_path() . $file)) { echo json_encode(array('error' => "ajaxFile doesn't exist")); break; } require_once osc_plugins_path() . $file; break; case 'check_username_availability': $username = osc_sanitize_username(Params::getParam('s_username')); if (!osc_is_username_blacklisted($username)) { $user = User::newInstance()->findByUsername($username); if (isset($user['s_username'])) { echo json_encode(array('exists' => 1, 's_username' => $username)); } else { echo json_encode(array('exists' => 0, 's_username' => $username)); } } else { echo json_encode(array('exists' => 1, 's_username' => $username)); } break; case 'ajax_upload': // Include the uploader class require_once LIB_PATH . "AjaxUploader.php"; $uploader = new AjaxUploader(); $original = pathinfo($uploader->getOriginalName()); $filename = uniqid("qqfile_") . "." . $original['extension']; $result = $uploader->handleUpload(osc_content_path() . 'uploads/temp/' . $filename); // auto rotate $img = ImageResizer::fromFile(osc_content_path() . 'uploads/temp/' . $filename)->autoRotate(); $img->saveToFile(osc_content_path() . 'uploads/temp/auto_' . $filename, $original['extension']); $result['uploadName'] = 'auto_' . $filename; echo htmlspecialchars(json_encode($result), ENT_NOQUOTES); break; case 'ajax_validate': $id = Params::getParam('id'); if (!is_numeric($id)) { echo json_encode(array('success' => false)); die; } $secret = Params::getParam('secret'); $item = Item::newInstance()->findByPrimaryKey($id); if ($item['s_secret'] != $secret) { echo json_encode(array('success' => false)); die; } $nResources = ItemResource::newInstance()->countResources($id); $result = array('success' => $nResources < osc_max_images_per_item(), 'count' => $nResources); echo json_encode($result); break; case 'delete_ajax_upload': $files = Session::newInstance()->_get('ajax_files'); $success = false; $filename = ''; if (isset($files[Params::getParam('qquuid')]) && $files[Params::getParam('qquuid')] != '') { $filename = $files[Params::getParam('qquuid')]; unset($files[Params::getParam('qquuid')]); Session::newInstance()->_set('ajax_files', $files); $success = @unlink(osc_content_path() . 'uploads/temp/' . $filename); } echo json_encode(array('success' => $success, 'uploadName' => $filename)); break; default: echo json_encode(array('error' => __('no action defined'))); break; } // clear all keep variables into session Session::newInstance()->_dropKeepForm(); Session::newInstance()->_clearVariables(); }
public static function setConfig($config) { self::$_config = $config; }
# ---------------------------------------------------------------------------------------------------- # LOAD CONFIG # ---------------------------------------------------------------------------------------------------- include "classes/class_imageResizer.php"; /* * imageResizer.php * * Forces image resampling "on the fly" when a image is requisited * Parameters: * @img (file) = image file to be resized (must be an absolute path like /var/www/site/www/upload/file.jpg) * @newWidth (int) = new width :P * @newHeight (int) = new height :P * @debug (flag) = if error message will be displayed * NOTES * - this feature is controlled by FORCE_ANTIALIASED_IMAGES flag in conf section * - no enabled, simly turn constant on * - use this feature only when absolutely necessity of resize, instead of HTML resizing */ $file = trim($_GET['img']); if (isset($_GET['newWidth']) && isset($_GET['newWidth'])) { $newWidth = trim($_GET['newWidth']); $newHeight = trim($_GET['newHeight']); } else { header('location:index.php'); } $rimg = new ImageResizer($file); if ($_GET['debug']) { echo $rimg->error(); } $rimg->resize($newWidth, $newHeight); $rimg->close();
function theme_pop_actions_admin() { //if(OC_ADMIN) if (Params::getParam('file') == 'oc-content/themes/pop/admin/settings.php') { if (Params::getParam('donation') == 'successful') { osc_set_preference('donation', '1', 'pop_theme'); osc_reset_preferences(); } } switch (Params::getParam('subaction')) { case 'color-update': /* theme color staff here */ $aParams = Params::getParamsAsArray(); unset($aParams['page']); unset($aParams['action']); unset($aParams['file']); unset($aParams['CSRFName']); unset($aParams['CSRFToken']); osc_set_preference('pop-theme-colors', json_encode($aParams), 'pop_theme'); osc_add_flash_ok_message(__('Theme settings updated correctly', 'pop'), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/pop/admin/color_settings.php')); break; case 'color-restore': $aParams = pop_getColorScheme(true); osc_set_preference('pop-theme-colors', json_encode($aParams), 'pop_theme'); osc_add_flash_ok_message(__('Theme settings updated correctly', 'pop'), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/pop/admin/color_settings.php')); break; default: break; } switch (Params::getParam('action_specific')) { case 'settings': $footerLink = Params::getParam('footer_link'); osc_set_preference('pop_max_premium', Params::getParam('pop_max_premium'), 'pop_theme'); osc_set_preference('keyword_placeholder', Params::getParam('keyword_placeholder'), 'pop_theme'); osc_set_preference('footer_link', $footerLink ? '1' : '0', 'pop_theme'); osc_set_preference('header-728x90', trim(Params::getParam('header-728x90', false, false, false)), 'pop_theme'); osc_set_preference('search-results-300x250', trim(Params::getParam('search-results-300x250', false, false, false)), 'pop_theme'); osc_set_preference('item-detail-300x250', trim(Params::getParam('item-detail-300x250', false, false, false)), 'pop_theme'); osc_add_flash_ok_message(__('Theme settings updated correctly', 'pop'), 'admin'); osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/pop/admin/settings.php')); break; case 'upload_logo': $package = Params::getFiles('logo'); if ($package['error'] == UPLOAD_ERR_OK) { $img = ImageResizer::fromFile($package['tmp_name']); $ext = $img->getExt(); $logo_name = 'pop_logo'; $logo_name .= '.' . $ext; $path = osc_uploads_path() . $logo_name; move_uploaded_file($package['tmp_name'], $path); osc_set_preference('logo', $logo_name, 'pop_theme'); osc_add_flash_ok_message(__('The logo image has been uploaded correctly', 'pop'), 'admin'); } else { osc_add_flash_error_message(__("An error has occurred, please try again", 'pop'), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/pop/admin/header.php')); break; case 'remove': $logo = osc_get_preference('logo', 'pop_theme'); $path = osc_uploads_path() . $logo; if (file_exists($path)) { @unlink($path); osc_delete_preference('logo', 'pop_theme'); osc_reset_preferences(); osc_add_flash_ok_message(__('The logo image has been removed', 'pop'), 'admin'); } else { osc_add_flash_error_message(__("Image not found", 'pop'), 'admin'); } osc_redirect_to(osc_admin_render_theme_url('oc-content/themes/pop/admin/header.php')); break; } }
public function save() { global $_CONF, $_PATHS; if (is_object($this->__template)) { $strServer = Setting::getValueByName('ftp_server'); $strUsername = Setting::getValueByName('ftp_username'); $strPassword = Setting::getValueByName('ftp_password'); $strRemoteFolder = Setting::getValueByName('ftp_remote_folder'); //*** Element. $objElement = new Element(); $objElement->setParentId($this->__parent->getId()); $objElement->setAccountId($_CONF['app']['account']->getId()); $objElement->setPermissions($this->__permissions); $objElement->setActive($this->active); $objElement->setName($this->name); $objElement->setUsername($this->username); $objElement->setSort($this->sort); $objElement->setTypeId(ELM_TYPE_LOCKED); $objElement->setTemplateId($this->__template->getId()); $objElement->save(true, false); //*** Activate default schedule. $objSchedule = new ElementSchedule(); $objSchedule->setStartActive(0); $objSchedule->setStartDate(APP_DEFAULT_STARTDATE); $objSchedule->setEndActive(0); $objSchedule->setEndDate(APP_DEFAULT_ENDDATE); $objElement->setSchedule($objSchedule); //*** Alias. if ($objElement->isPage()) { $objAlias = new Alias(); $objAlias->setAlias($this->alias); $objElement->setAlias($objAlias); } foreach ($this->__fields as $intTemplateFieldId => $arrField) { $objTemplateField = TemplateField::selectByPK($intTemplateFieldId); $objField = new ElementField(); $objField->setElementId($objElement->getId()); $objField->setTemplateFieldId($objTemplateField->getId()); $objField->save(); foreach ($arrField as $intLanguage => $arrValue) { $objValue = $objField->getNewValueObject(); switch ($objField->getTypeId()) { case FIELD_TYPE_FILE: case FIELD_TYPE_IMAGE: //*** Upload file. $arrPath = parse_url($arrValue['value']); if ($arrPath !== false) { $strFile = @file_get_contents(str_replace(" ", "%20", $arrValue['value'])); if ($strFile !== false) { $strOriginalName = array_pop(explode("/", $arrPath['path'])); $strLocalValue = ImageField::filename2LocalName($strOriginalName); $objImageField = new ImageField($intTemplateFieldId); $arrSettings = $objImageField->getSettings(); if (file_put_contents($_PATHS['upload'] . $strOriginalName, $strFile) !== false) { if (count($arrSettings) > 1) { foreach ($arrSettings as $key => $arrSetting) { $strFileName = FileIO::add2Base($strLocalValue, $arrSetting['key']); if (copy($_PATHS['upload'] . $strOriginalName, $_PATHS['upload'] . $strFileName)) { if ($objTemplateField->getTypeId() == FIELD_TYPE_IMAGE && (!empty($arrSetting['width']) || !empty($arrSetting['height']))) { //*** Resize the image. $intQuality = empty($arrSetting['quality']) ? 75 : $arrSetting['quality']; ImageResizer::resize($_PATHS['upload'] . $strFileName, $arrSetting['width'], $arrSetting['height'], $arrSetting['scale'], $intQuality, true, NULL, false, $arrSetting['grayscale']); } //*** Move file to remote server. $objUpload = new SingleUpload(); if (!$objUpload->moveToFTP($strFileName, $_PATHS['upload'], $strServer, $strUsername, $strPassword, $strRemoteFolder)) { Log::handleError("File {$strFileName} could not be moved to remote server. " . $objUpload->errorMessage()); } } } //*** Move original file. if (rename($_PATHS['upload'] . $strOriginalName, $_PATHS['upload'] . $strLocalValue)) { $objUpload = new SingleUpload(); if (!$objUpload->moveToFTP($strLocalValue, $_PATHS['upload'], $strServer, $strUsername, $strPassword, $strRemoteFolder)) { Log::handleError("File {$strLocalValue} could not be moved to remote server. " . $objUpload->errorMessage()); } } //*** Unlink original file. @unlink($_PATHS['upload'] . $strOriginalName); } else { if ($objTemplateField->getTypeId() == FIELD_TYPE_IMAGE && (!empty($arrSettings[0]['width']) || !empty($arrSettings[0]['height']))) { $strFileName = FileIO::add2Base($strLocalValue, $arrSettings[0]['key']); //*** Resize the image. if (rename($_PATHS['upload'] . $strOriginalName, $_PATHS['upload'] . $strFileName)) { $intQuality = empty($arrSettings[0]['quality']) ? 75 : $arrSettings[0]['quality']; ImageResizer::resize($_PATHS['upload'] . $strFileName, $arrSettings[0]['width'], $arrSettings[0]['height'], $arrSettings[0]['scale'], $intQuality, true, NULL, false, $arrSettings[0]['grayscale']); //*** Move file to remote server. $objUpload = new SingleUpload(); if (!$objUpload->moveToFTP($strFileName, $_PATHS['upload'], $strServer, $strUsername, $strPassword, $strRemoteFolder)) { Log::handleError("File {$strFileName} could not be moved to remote server."); } } } //*** Move original file. if (file_exists($_PATHS['upload'] . $strOriginalName) && rename($_PATHS['upload'] . $strOriginalName, $_PATHS['upload'] . $strLocalValue)) { //*** Move file to remote server. $objUpload = new SingleUpload(); if (!$objUpload->moveToFTP($strLocalValue, $_PATHS['upload'], $strServer, $strUsername, $strPassword, $strRemoteFolder)) { Log::handleError("File {$strLocalValue} could not be moved to remote server."); } } //*** Unlink original file. @unlink($_PATHS['upload'] . $strOriginalName); } $objValue->setValue($strOriginalName . ":" . $strLocalValue . "\n"); } } } break; default: $objValue->setValue($arrValue['value']); } $objValue->setLanguageId($intLanguage); $objValue->setCascade($arrValue['cascade']); $objField->setValueObject($objValue); //*** Activate the language. $objElement->setLanguageActive($intLanguage, true); } } return $objElement; } }
public function uploadItemResources($aResources, $itemId) { if ($aResources != '') { $wat = new Watermark(); $itemResourceManager = ItemResource::newInstance(); $numImagesItems = osc_max_images_per_item(); $numImages = $itemResourceManager->countResources($itemId); foreach ($aResources['error'] as $key => $error) { if ($numImagesItems == 0 || $numImagesItems > 0 && $numImages < $numImagesItems) { if ($error == UPLOAD_ERR_OK) { $numImages++; $tmpName = $aResources['tmp_name'][$key]; $itemResourceManager->insert(array('fk_i_item_id' => $itemId)); $resourceId = $itemResourceManager->dao->insertedId(); // Create normal size $normal_path = $path = osc_content_path() . 'uploads/' . $resourceId . '.jpg'; $size = explode('x', osc_normal_dimensions()); ImageResizer::fromFile($tmpName)->resizeTo($size[0], $size[1])->saveToFile($path); if (osc_is_watermark_text()) { $wat->doWatermarkText($path, osc_watermark_text_color(), osc_watermark_text(), 'image/jpeg'); } elseif (osc_is_watermark_image()) { $wat->doWatermarkImage($path, 'image/jpeg'); } // Create preview $path = osc_content_path() . 'uploads/' . $resourceId . '_preview.jpg'; $size = explode('x', osc_preview_dimensions()); ImageResizer::fromFile($normal_path)->resizeTo($size[0], $size[1])->saveToFile($path); // Create thumbnail $path = osc_content_path() . 'uploads/' . $resourceId . '_thumbnail.jpg'; $size = explode('x', osc_thumbnail_dimensions()); ImageResizer::fromFile($normal_path)->resizeTo($size[0], $size[1])->saveToFile($path); if (osc_keep_original_image()) { $path = osc_content_path() . 'uploads/' . $resourceId . '_original.jpg'; move_uploaded_file($tmpName, $path); } $s_path = 'oc-content/uploads/'; $resourceType = 'image/jpeg'; $itemResourceManager->update(array('s_path' => $s_path, 's_name' => osc_genRandomPassword(), 's_extension' => 'jpg', 's_content_type' => $resourceType), array('pk_i_id' => $resourceId, 'fk_i_item_id' => $itemId)); osc_run_hook('uploaded_file', ItemResource::newInstance()->findByPrimaryKey($resourceId)); } } } unset($itemResourceManager); } }
function doModel() { switch ($this->action) { case 'import': // calling import view $this->doView('tools/import.php'); break; case 'import_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=import'); } // calling $sql = Params::getFiles('sql'); if (isset($sql['size']) && $sql['size'] != 0) { $content_file = file_get_contents($sql['tmp_name']); $conn = DBConnectionClass::newInstance(); $c_db = $conn->getOsclassDb(); $comm = new DBCommandClass($c_db); if ($comm->importSQL($content_file)) { osc_add_flash_ok_message(_m('Import complete'), 'admin'); } else { osc_add_flash_error_message(_m('There was a problem importing data to the database'), 'admin'); } } else { osc_add_flash_error_message(_m('No file was uploaded'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=import'); break; case 'images': // calling images view $this->doView('tools/images.php'); break; case 'images_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=images'); } $preferences = Preference::newInstance()->toArray(); $wat = new Watermark(); $aResources = ItemResource::newInstance()->getAllResources(); foreach ($aResources as $resource) { osc_run_hook('regenerate_image', $resource); $path = osc_content_path() . 'uploads/'; // comprobar que no haya original $img_original = $path . $resource['pk_i_id'] . "_original*"; $aImages = glob($img_original); // there is original image if (count($aImages) == 1) { $image_tmp = $aImages[0]; } else { $img_normal = $path . $resource['pk_i_id'] . ".*"; $aImages = glob($img_normal); if (count($aImages) == 1) { $image_tmp = $aImages[0]; } else { $img_thumbnail = $path . $resource['pk_i_id'] . "_thumbnail*"; $aImages = glob($img_thumbnail); $image_tmp = $aImages[0]; } } // extension preg_match('/\\.(.*)$/', $image_tmp, $matches); if (isset($matches[1])) { $extension = $matches[1]; // Create normal size $path_normal = $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '.jpg'; $size = explode('x', osc_normal_dimensions()); ImageResizer::fromFile($image_tmp)->resizeTo($size[0], $size[1])->saveToFile($path); if (osc_is_watermark_text()) { $wat->doWatermarkText($path, osc_watermark_text_color(), osc_watermark_text(), 'image/jpeg'); } elseif (osc_is_watermark_image()) { $wat->doWatermarkImage($path, 'image/jpeg'); } // Create preview $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_preview.jpg'; $size = explode('x', osc_preview_dimensions()); ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path); // Create thumbnail $path = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_thumbnail.jpg'; $size = explode('x', osc_thumbnail_dimensions()); ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path); // update resource info ItemResource::newInstance()->update(array('s_path' => 'oc-content/uploads/', 's_name' => osc_genRandomPassword(), 's_extension' => 'jpg', 's_content_type' => 'image/jpeg'), array('pk_i_id' => $resource['pk_i_id'])); osc_run_hook('regenerated_image', ItemResource::newInstance()->findByPrimaryKey($resource['pk_i_id'])); // si extension es direfente a jpg, eliminar las imagenes con $extension si hay if ($extension != 'jpg') { $files_to_remove = osc_content_path() . 'uploads/' . $resource['pk_i_id'] . "*" . $extension; $fs = glob($files_to_remove); if (is_array($fs)) { array_map("unlink", $fs); } } // .... } else { // no es imagen o imagen sin extesión } } osc_add_flash_ok_message(_m('Re-generation complete'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=images'); break; case 'upgrade': $this->doView('tools/upgrade.php'); break; case 'backup': $this->doView('tools/backup.php'); break; case 'backup-sql': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); } //databasse dump... if (Params::getParam('bck_dir') != '') { $path = trim(Params::getParam('bck_dir')); if (substr($path, -1, 1) != "/") { $path .= '/'; } } else { $path = osc_base_path(); } $filename = 'OSClass_mysqlbackup.' . date('YmdHis') . '.sql'; switch (osc_dbdump($path, $filename)) { case -1: $msg = _m('Path is empty'); osc_add_flash_error_message($msg, 'admin'); break; case -2: $msg = sprintf(_m('Could not connect with the database. Error: %s'), mysql_error()); osc_add_flash_error_message($msg, 'admin'); break; case -3: $msg = sprintf(_m('Could not select the database. Error: %s'), mysql_error()); osc_add_flash_error_message($msg, 'admin'); break; case -4: $msg = _m('There are no tables to back up'); osc_add_flash_error_message($msg, 'admin'); break; case -5: $msg = _m('The folder is not writable'); osc_add_flash_error_message($msg, 'admin'); break; default: $msg = _m('Backup has been done properly'); osc_add_flash_ok_message($msg, 'admin'); break; } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); break; case 'backup-zip': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because is a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); } //zip of the code just to back it up if (Params::getParam('bck_dir') != '') { $archive_name = trim(Params::getParam('bck_dir')); if (substr(trim($archive_name), -1, 1) != "/") { $archive_name .= '/'; } $archive_name = Params::getParam('bck_dir') . '/OSClass_backup.' . date('YmdHis') . '.zip'; } else { $archive_name = osc_base_path() . "OSClass_backup." . date('YmdHis') . ".zip"; } $archive_folder = osc_base_path(); if (osc_zip_folder($archive_folder, $archive_name)) { $msg = _m('Archiving successful!'); osc_add_flash_ok_message($msg, 'admin'); } else { $msg = _m('Error, the zip file was not created at the specified directory'); osc_add_flash_error_message($msg, 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=backup'); break; case 'backup_post': $this->doView('tools/backup.php'); break; case 'maintenance': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action cannot be done because is a demo site"), 'admin'); $this->doView('tools/maintenance.php'); break; } $mode = Params::getParam('mode'); if ($mode == 'on') { $maintenance_file = ABS_PATH . '.maintenance'; $fileHandler = @fopen($maintenance_file, 'w'); if ($fileHandler) { osc_add_flash_ok_message(_m('Maintenance mode is ON'), 'admin'); } else { osc_add_flash_error_message(_m('There was an error creating .maintenance file, please create it manually at the root folder'), 'admin'); } fclose($fileHandler); $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=maintenance'); } else { if ($mode == 'off') { $deleted = @unlink(ABS_PATH . '.maintenance'); if ($deleted) { osc_add_flash_ok_message(_m('Maintenance mode is OFF'), 'admin'); } else { osc_add_flash_error_message(_m('There was an error removing .maintenance file, please remove it manually from the root folder'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=tools&action=maintenance'); } } $this->doView('tools/maintenance.php'); break; default: } }
function parsePages($intElmntId, $strCommand) { global $objLang, $_CLEAN_POST, $objLiveUser, $_CONF, $_PATHS, $DBAConn, $objMultiUpload; $objTpl = new HTML_Template_IT($_PATHS['templates']); $blnUiError = Request::get('err', 0); switch ($strCommand) { case CMD_LIST: $objTpl->loadTemplatefile("multiview.tpl.htm"); $objTpl->setVariable("MAINTITLE", $objLang->get("pcmsElements", "menu")); $objElement = Element::selectByPK($intElmntId); if (empty($intElmntId)) { $strElmntName = "Website"; } else { if (is_object($objElement)) { $strElmntName = $objElement->getName(); } else { $strElmntName = ""; } } if (is_object($objElement) || empty($intElmntId)) { if (empty($intElmntId)) { $objElements = Elements::getFromParent(0, false); } else { $objElements = $objElement->getElements(false); } if (is_object($objElements)) { //*** Initiate child element loop. $listCount = 0; $intPosition = request("pos"); $intPosition = !empty($intPosition) && is_numeric($intPosition) ? $intPosition : 0; $intPosition = floor($intPosition / $_SESSION["listCount"]) * $_SESSION["listCount"]; $objElements->seek($intPosition); //*** Loop through the elements. foreach ($objElements as $objSubElement) { //if (Permissions::hasElementPermission(SPINCMS_ELEMENTS_READ, $objSubElement)) { $objTemplate = Template::selectByPK($objSubElement->getTemplateId(), array('name')); $strMeta = $objLang->get("editedBy", "label") . " " . $objSubElement->getUsername() . ", " . Date::fromMysql($objLang->get("datefmt"), $objSubElement->getModified()); $objTpl->setCurrentBlock("multiview-item"); if ($objSubElement->getTypeId() != ELM_TYPE_LOCKED) { $objTpl->setVariable("BUTTON_DUPLICATE", $objLang->get("duplicate", "button")); $objTpl->setVariable("BUTTON_DUPLICATE_HREF", "javascript:PElement.duplicate({$objSubElement->getId()});"); $objTpl->setVariable("BUTTON_REMOVE", $objLang->get("delete", "button")); $objTpl->setVariable("BUTTON_REMOVE_HREF", "javascript:PElement.remove({$objSubElement->getId()});"); } $objTpl->setVariable("MULTIITEM_VALUE", $objSubElement->getId()); //if (Permissions::hasElementPermission(SPINCMS_ELEMENTS_WRITE, $objSubElement)) { $objTpl->setVariable("MULTIITEM_HREF", "href=\"?cid=" . NAV_PCMS_ELEMENTS . "&eid={$objSubElement->getId()}&cmd=" . CMD_EDIT . "\""); //} else { // $objTpl->setVariable("MULTIITEM_HREF", ""); //} if ($objSubElement->getActive() < 1) { $objTpl->setVariable("MULTIITEM_ACTIVE", " class=\"inactive\""); } $strValue = htmlspecialchars($objSubElement->getName()); $strShortValue = getShortValue($strValue, 50); $intSize = strlen($strValue); $objTpl->setVariable("MULTIITEM_NAME", $intSize > 50 ? $strShortValue : $strValue); $objTpl->setVariable("MULTIITEM_TITLE", $intSize > 50 ? $strValue : ""); $strTypeClass = ""; if ($objSubElement->getTypeId() == ELM_TYPE_FOLDER) { $strTypeClass = "folder"; } else { $objChildElements = $objSubElement->getElements(); if (is_object($objChildElements) && $objChildElements->count() > 0) { switch ($objSubElement->getTypeId()) { case ELM_TYPE_DYNAMIC: $strTypeClass = "widget-dynamic"; break; case ELM_TYPE_LOCKED: $strTypeClass = "widget-locked"; break; default: $strTypeClass = "widget"; } } else { switch ($objSubElement->getTypeId()) { case ELM_TYPE_DYNAMIC: $strTypeClass = "element-dynamic"; break; case ELM_TYPE_LOCKED: $strTypeClass = "element-locked"; break; default: $strTypeClass = "element"; } } } $objTpl->setVariable("MULTIITEM_TYPE_CLASS", $strTypeClass); if (is_object($objTemplate)) { $objTpl->setVariable("MULTIITEM_TYPE", ", " . $objTemplate->getName()); } $objTpl->setVariable("MULTIITEM_META", $strMeta); $objTpl->parseCurrentBlock(); $listCount++; if ($listCount >= $_SESSION["listCount"]) { break; } //} } //*** Render page navigation. $pageCount = ceil($objElements->count() / $_SESSION["listCount"]); if ($pageCount > 0) { $currentPage = ceil(($intPosition + 1) / $_SESSION["listCount"]); $previousPos = $intPosition - $_SESSION["listCount"] > 0 ? $intPosition - $_SESSION["listCount"] : 0; $nextPos = $intPosition + $_SESSION["listCount"] < $objElements->count() ? $intPosition + $_SESSION["listCount"] : $intPosition; $objTpl->setVariable("PAGENAV_PAGE", sprintf($objLang->get("pageNavigation", "label"), $currentPage, $pageCount)); $objTpl->setVariable("PAGENAV_PREVIOUS", $objLang->get("previous", "button")); $objTpl->setVariable("PAGENAV_PREVIOUS_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&pos={$previousPos}"); $objTpl->setVariable("PAGENAV_NEXT", $objLang->get("next", "button")); $objTpl->setVariable("PAGENAV_NEXT_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&pos={$nextPos}"); //*** Top page navigation. for ($intCount = 0; $intCount < $pageCount; $intCount++) { $objTpl->setCurrentBlock("multiview-pagenavitem-top"); $position = $intCount * $_SESSION["listCount"]; if ($intCount != $intPosition / $_SESSION["listCount"]) { $objTpl->setVariable("PAGENAV_HREF", "href=\"?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&pos={$position}\""); } $objTpl->setVariable("PAGENAV_VALUE", $intCount + 1); $objTpl->parseCurrentBlock(); } //*** Bottom page navigation. for ($intCount = 0; $intCount < $pageCount; $intCount++) { $objTpl->setCurrentBlock("multiview-pagenavitem-bottom"); $position = $intCount * $_SESSION["listCount"]; if ($intCount != $intPosition / $_SESSION["listCount"]) { $objTpl->setVariable("PAGENAV_HREF", "href=\"?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&pos={$position}\""); } $objTpl->setVariable("PAGENAV_VALUE", $intCount + 1); $objTpl->parseCurrentBlock(); } } } } //*** Render list action pulldown. if (!is_object($objElement) || $objElement->getTypeId() != ELM_TYPE_LOCKED) { $arrActions[$objLang->get("choose", "button")] = 0; $arrActions[$objLang->get("delete", "button") . " "] = "delete"; $arrActions[$objLang->get("duplicate", "button") . " "] = "duplicate"; $arrActions[$objLang->get("activate", "button") . " "] = "activate"; $arrActions[$objLang->get("deactivate", "button") . " "] = "deactivate"; if (is_object($objElement)) { $arrActions[$objLang->get("export", "button") . " "] = "export"; } foreach ($arrActions as $key => $value) { $objTpl->setCurrentBlock("multiview-listactionitem"); $objTpl->setVariable("LIST_ACTION_TEXT", $key); $objTpl->setVariable("LIST_ACTION_VALUE", $value); $objTpl->parseCurrentBlock(); } } //*** Render the rest of the page. $objTpl->setCurrentBlock("multiview"); $objTpl->setVariable("ACTIONS_OPEN", $objLang->get("pcmsOpenActionsMenu", "menu")); $objTpl->setVariable("ACTIONS_CLOSE", $objLang->get("pcmsCloseActionsMenu", "menu")); $objTpl->setVariable("LIST_LENGTH_HREF_10", "href=\"?list=10&cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}\""); $objTpl->setVariable("LIST_LENGTH_HREF_25", "href=\"?list=25&cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}\""); $objTpl->setVariable("LIST_LENGTH_HREF_100", "href=\"?list=100&cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}\""); switch ($_SESSION["listCount"]) { case 10: $objTpl->setVariable("LIST_LENGTH_HREF_10", ""); break; case 25: $objTpl->setVariable("LIST_LENGTH_HREF_25", ""); break; case 100: $objTpl->setVariable("LIST_LENGTH_HREF_100", ""); break; } $objTpl->setVariable("LIST_LENGTH_HREF", "&cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}"); if (!is_object($objElement) || $objElement->getTypeId() != ELM_TYPE_LOCKED) { $objTpl->setVariable("LIST_WITH_SELECTED", $objLang->get("withSelected", "label")); $objTpl->setVariable("BUTTON_LIST_SELECT", $objLang->get("selectAll", "button")); $objTpl->setVariable("BUTTON_LIST_SELECT_HREF", "javascript:PElement.multiSelect()"); $objTpl->setVariable("LIST_ACTION_ONCHANGE", "PElement.multiDo(this, this[this.selectedIndex].value)"); } $objTpl->setVariable("LIST_ITEMS_PER_PAGE", $objLang->get("itemsPerPage", "label")); if (!isset($objElement) || $objElement->getTypeId() != ELM_TYPE_DYNAMIC && $objElement->getTypeId() != ELM_TYPE_LOCKED) { $objTpl->setVariable("BUTTON_NEWSUBJECT", $objLang->get("newElement", "button")); $objDefaultLang = ContentLanguage::getDefault(); if (!is_object($objDefaultLang)) { $objTpl->setVariable("BUTTON_NEWSUBJECT_HREF", "javascript:alert('" . $objLang->get("elementBeforeLanguage", "alert") . "')"); } else { $objTpl->setVariable("BUTTON_NEWSUBJECT_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_ADD); } $objTpl->setVariable("BUTTON_NEWFOLDER", $objLang->get("newFolder", "button")); $objTpl->setVariable("BUTTON_NEWFOLDER_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_ADD_FOLDER); if ($objLiveUser->checkRight($_CONF['app']['navRights'][NAV_PCMS_TEMPLATES] == true)) { $objTpl->setVariable("BUTTON_EXPORT_ELEMENT", $objLang->get("export", "button")); $objTpl->setVariable("BUTTON_EXPORT_ELEMENT_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_EXPORT_ELEMENT); $objTpl->setVariable("BUTTON_IMPORT_ELEMENT", $objLang->get("import", "button")); $objTpl->setVariable("BUTTON_IMPORT_ELEMENT_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_IMPORT_ELEMENT); } } if (!isset($objElement) || $objElement->getTypeId() != ELM_TYPE_LOCKED) { $objTpl->setVariable("BUTTON_NEWDYNAMIC", $objLang->get("newDynamic", "button")); $objTpl->setVariable("BUTTON_NEWDYNAMIC_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_ADD_DYNAMIC); if ($intElmntId > 0) { $objElement = Element::selectByPK($intElmntId); $objTpl->setVariable("BUTTON_EDIT", $objLang->get("edit", "button")); $objTpl->setVariable("BUTTON_EDIT_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_EDIT); } } $objTpl->setVariable("LABEL_SUBJECT", $objLang->get("elementsIn", "label") . " "); $objTpl->setVariable("SUBJECT_NAME", $strElmntName); $objTpl->setVariable("EID", $intElmntId); $objTpl->parseCurrentBlock(); break; case CMD_REMOVE: if (strpos($intElmntId, ',') !== false) { //*** Multiple elements submitted. $arrElements = explode(',', $intElmntId); $objElements = Element::selectByPK($arrElements); $intParent = $objElements->current()->getParentId(); foreach ($objElements as $objElement) { $objElement->delete(); } } else { //*** Single element submitted. $objElement = Element::selectByPK($intElmntId); $intParent = $objElement->getParentId(); $objElement->delete(); } //*** Redirect the page. $strReturnTo = request('returnTo'); if (empty($strReturnTo)) { header("Location: " . Request::getUri() . "/?cid=" . request("cid") . "&cmd=" . CMD_LIST . "&eid=" . $intParent); exit; } else { header("Location: " . Request::getURI() . $strReturnTo); exit; } break; case CMD_DUPLICATE: if (strpos($intElmntId, ',') !== false) { //*** Multiple elements submitted. $arrElements = explode(',', $intElmntId); $objElements = Element::selectByPK($arrElements); $intParent = $objElements->current()->getParentId(); foreach ($objElements as $objElement) { $objElement->setUsername($objLiveUser->getProperty("name")); $objDuplicate = $objElement->duplicate($objLang->get("copyOf", "label")); //*** Update the search index. $objSearch = new Search(); $objSearch->updateIndex($objDuplicate->getId()); } } else { //*** Single element submitted. $objElement = Element::selectByPK($intElmntId); $intParent = $objElement->getParentId(); $objElement->setUsername($objLiveUser->getProperty("name")); $objDuplicate = $objElement->duplicate($objLang->get("copyOf", "label")); //*** Update the search index. $objSearch = new Search(); $objSearch->updateIndex($objDuplicate->getId()); } //*** Redirect the page. $strReturnTo = request('returnTo'); if (empty($strReturnTo)) { header("Location: " . Request::getURI() . "/?cid=" . request("cid") . "&cmd=" . CMD_LIST . "&eid=" . $intParent); exit; } else { header("Location: " . Request::getURI() . $strReturnTo); exit; } break; case CMD_ACTIVATE: case CMD_DEACTIVATE: if (strpos($intElmntId, ',') !== false) { //*** Multiple elements submitted. $arrElements = explode(',', $intElmntId); $objElements = Element::selectByPK($arrElements); $intParent = $objElements->current()->getParentId(); foreach ($objElements as $objElement) { if ($strCommand == CMD_ACTIVATE) { $objElement->setActive(1); } else { $objElement->setActive(0); } $objElement->save(); } } else { //*** Single element submitted. $objElement = Element::selectByPK($intElmntId); $intParent = $objElement->getParentId(); if ($strCommand == CMD_ACTIVATE) { $objElement->setActive(1); } else { $objElement->setActive(0); } $objElement->save(); } //*** Redirect the page. $strReturnTo = request('returnTo'); if (empty($strReturnTo)) { header("Location: " . Request::getURI() . "/?cid=" . request("cid") . "&cmd=" . CMD_LIST . "&eid=" . $intParent); exit; } else { header("Location: " . Request::getURI() . $strReturnTo); exit; } break; case CMD_ADD: case CMD_EDIT: case CMD_ADD_FOLDER: case CMD_ADD_DYNAMIC: $objTpl->loadTemplatefile("elementfields.tpl.htm"); $blnError = false; $blnIsFolder = false; $blnIsDynamic = false; //*** Check the element type (element or folder) if ($strCommand == CMD_EDIT) { $objElement = Element::selectByPK($intElmntId); if (is_object($objElement) && $objElement->getTypeId() == ELM_TYPE_FOLDER) { $blnIsFolder = true; } else { if (is_object($objElement) && $objElement->getTypeId() == ELM_TYPE_DYNAMIC) { $blnIsDynamic = true; } } } else { if ($strCommand == CMD_ADD_FOLDER) { $blnIsFolder = true; } else { if ($strCommand == CMD_ADD_DYNAMIC) { $blnIsDynamic = true; } } } //*** Check if the rootfolder has been submitted. if ($strCommand == CMD_EDIT && $intElmntId == 0) { //*** Redirect to list mode. header("Location: " . Request::getURI() . "/?cid=" . request("cid") . "&cmd=" . CMD_LIST . "&eid=" . $intElmntId); exit; } //*** Check if an invalid element has been submitted. if ($strCommand == CMD_EDIT && !is_object($objElement)) { //*** Redirect to list mode. header("Location: " . Request::getURI() . "/?cid=" . request("cid") . "&cmd=" . CMD_LIST . "&eid=0"); exit; } //*** Set section title. if ($blnIsFolder) { if ($strCommand == CMD_EDIT) { $objTpl->setVariable("MAINTITLE", $objLang->get("folderDetailsFor", "label")); $objTpl->setVariable("MAINSUB", $objElement->getName()); } else { $objTpl->setVariable("MAINTITLE", $objLang->get("folderDetails", "label")); } } else { if ($blnIsDynamic) { if ($strCommand == CMD_EDIT) { $objTpl->setVariable("MAINTITLE", $objLang->get("dynamicDetailsFor", "label")); $objTpl->setVariable("MAINSUB", $objElement->getName()); } else { $objTpl->setVariable("MAINTITLE", $objLang->get("dynamicDetails", "label")); } } else { if ($strCommand == CMD_EDIT) { $objTpl->setVariable("MAINTITLE", $objLang->get("pageDetailsFor", "label")); $objTpl->setVariable("MAINSUB", $objElement->getName()); } else { $objTpl->setVariable("MAINTITLE", $objLang->get("pageDetails", "label")); } } } //*** Post the element form if submitted. if (count($_CLEAN_POST) > 0 && !empty($_CLEAN_POST['dispatch']) && $_CLEAN_POST['dispatch'] == "addElement") { //*** The element form has been posted. //*** Check sanitized input. if (is_null($_CLEAN_POST["frm_active"])) { $objTpl->setVariable("ERROR_ACTIVE_ON", " error"); $objTpl->setVariable("ERROR_ACTIVE", $objLang->get("active", "formerror")); $blnError = true; } if ($strCommand == CMD_ADD_FOLDER || $blnIsFolder) { if (is_null($_CLEAN_POST["frm_ispage"])) { $objTpl->setVariable("ERROR_ISPAGE_ON", " error"); $objTpl->setVariable("ERROR_ISPAGE", $objLang->get("isPage", "formerror")); $blnError = true; } } if ($strCommand == CMD_ADD_DYNAMIC || $blnIsDynamic) { if (is_null($_CLEAN_POST["frm_feed"])) { $objTpl->setVariable("ERROR_FEED_ON", " error"); $objTpl->setVariable("ERROR_FEED", $objLang->get("feed", "formerror")); $blnError = true; } if (is_null($_CLEAN_POST["frm_feedpath"])) { $objTpl->setVariable("ERROR_FEEDPATH_ON", " error"); $objTpl->setVariable("ERROR_FEEDPATH", $objLang->get("feedPath", "formerror")); $blnError = true; } if (is_null($_CLEAN_POST["frm_maxitems"])) { $objTpl->setVariable("ERROR_MAXITEMS_ON", " error"); $objTpl->setVariable("ERROR_MAXITEMS", $objLang->get("maxItems", "formerror")); $blnError = true; } } if (is_null($_CLEAN_POST["frm_name"])) { $objTpl->setVariable("ERROR_NAME_ON", " error"); $objTpl->setVariable("ERROR_NAME", $objLang->get("templateName", "formerror")); $blnError = true; } if (is_null($_CLEAN_POST["frm_apiname"])) { $objTpl->setVariable("ERROR_APINAME_ON", " error"); $objTpl->setVariable("ERROR_APINAME", $objLang->get("commonTypeWord", "formerror")); $blnError = true; } /* if (is_null($_CLEAN_POST["frm_alias"])) { $objTpl->setVariable("ERROR_ALIAS_ON", " error"); $objTpl->setVariable("ERROR_ALIAS", $objLang->get("commonTypeWord", "formerror")); $blnError = true; } */ if (is_null($_CLEAN_POST["frm_template"]) && !$blnIsFolder) { $objTpl->setVariable("ERROR_TEMPLATE_ON", " error"); $objTpl->setVariable("ERROR_TEMPLATE", $objLang->get("commonTypeText", "formerror")); $blnError = true; } if (is_null($_CLEAN_POST["frm_description"])) { $objTpl->setVariable("ERROR_NOTES_ON", " error"); $objTpl->setVariable("ERROR_NOTES", $objLang->get("commonTypeText", "formerror")); $blnError = true; } if (is_null($_CLEAN_POST["dispatch"])) { $blnError = true; } //*** Check element specific fields. //*** TODO!! if ($blnError === true) { //*** Display global error. if ($blnIsFolder) { $objTpl->setVariable("FORM_ISPAGE_VALUE", isset($_POST["frm_ispage"]) && $_POST["frm_ispage"] == "on" ? "checked=\"checked\"" : ""); } $objTpl->setVariable("FORM_ACTIVE_VALUE", isset($_POST["frm_active"]) && $_POST["frm_active"] == "on" ? "checked=\"checked\"" : ""); $objTpl->setVariable("FORM_NAME_VALUE", $_POST["frm_name"]); $objTpl->setVariable("FORM_APINAME_VALUE", $_POST["frm_apiname"]); //$objTpl->setVariable("FORM_ALIAS_VALUE", $_POST["frm_alias"]); if ($blnIsDynamic) { $objTpl->setVariable("FORM_MAXITEMS_VALUE", $_POST["frm_maxitems"]); } $objTpl->setVariable("FORM_NOTES_VALUE", $_POST["frm_description"]); $objTpl->setVariable("ERROR_MAIN", $objLang->get("main", "formerror")); //*** Display element specific errors. //*** TODO!! } else { //*** Input is valid. Save the element. if ($strCommand == CMD_EDIT) { $objElement = Element::selectByPK($intElmntId); $objParent = Element::selectByPK($objElement->getParentId()); } else { $objParent = Element::selectByPK($_POST["eid"]); $objPermissions = new ElementPermission(); if (is_object($objParent)) { $objPermissions->setUserId($objParent->getPermissions()->getUserId()); $objPermissions->setGroupId($objParent->getPermissions()->getGroupId()); } $objElement = new Element(); $objElement->setParentId($_POST["eid"]); $objElement->setAccountId($_CONF['app']['account']->getId()); $objElement->setPermissions($objPermissions); } $objElement->setActive(empty($_CLEAN_POST["frm_active"]) ? 0 : 1); $objElement->setIsPage(empty($_CLEAN_POST["frm_ispage"]) ? 0 : 1); $objElement->setName($_CLEAN_POST["frm_name"]); $objElement->setApiName($_CLEAN_POST["frm_apiname"]); $objElement->setDescription($_CLEAN_POST["frm_description"]); $objElement->setUsername($objLiveUser->getProperty("name")); //*** Get remote settings. $strServer = Setting::getValueByName('ftp_server'); $strUsername = Setting::getValueByName('ftp_username'); $strPassword = Setting::getValueByName('ftp_password'); $strRemoteFolder = Setting::getValueByName('ftp_remote_folder'); if ($blnIsFolder) { $objElement->setTypeId(ELM_TYPE_FOLDER); } else { if ($blnIsDynamic) { $objElement->setTypeId(ELM_TYPE_DYNAMIC); $objElement->setTemplateId($_CLEAN_POST["frm_template"]); } else { $objElement->setTypeId(ELM_TYPE_ELEMENT); $objElement->setTemplateId($_CLEAN_POST["frm_template"]); } } $objElement->save(); if ($blnIsDynamic) { $intFeedId = $_CLEAN_POST["frm_feed"]; if (empty($intFeedId)) { $intFeedId = $objParent->getFeed()->getFeedId(); } $objElementFeed = new ElementFeed(); $objElementFeed->setFeedId($intFeedId); $objElementFeed->setFeedPath($_CLEAN_POST["frm_feedpath"]); $objElementFeed->setMaxItems($_CLEAN_POST["frm_maxitems"]); if ($_CLEAN_POST["frm_dynamic_alias_check"]) { $objElementFeed->setAliasField($_CLEAN_POST["frm_dynamic_alias"]); } else { $objElementFeed->setAliasField(""); } $objElement->setFeed($objElementFeed); } //*** Handle the publish values. $objElement->clearSchedule(); $objSchedule = new ElementSchedule(); if (!empty($_CLEAN_POST["publish_start"])) { $strDate = $_CLEAN_POST["publish_start_date"]; if (empty($strDate)) { $strDate = strftime($_CONF['app']['universalDate']); } $strDate = Date::convertDate($strDate, $_CONF['app']['universalDate'], "%d %B %Y"); $strHour = empty($_CLEAN_POST["publish_start_hour"]) ? "00" : $_CLEAN_POST["publish_start_hour"]; $strMinute = empty($_CLEAN_POST["publish_start_minute"]) ? "00" : $_CLEAN_POST["publish_start_minute"]; $strDate = $strDate . " " . $strHour . ":" . $strMinute . ":00"; $objSchedule->setStartActive(1); $objSchedule->setStartDate(Date::toMysql($strDate)); } else { //*** If not set we set the date to 0. This is nessecary for the client side library, $objSchedule->setStartActive(0); $objSchedule->setStartDate(APP_DEFAULT_STARTDATE); } if (!empty($_CLEAN_POST["publish_end"])) { $strDate = $_CLEAN_POST["publish_end_date"]; if (empty($strDate)) { $strDate = strftime($_CONF['app']['universalDate']); } $strDate = Date::convertDate($strDate, $_CONF['app']['universalDate'], "%d %B %Y"); $strHour = empty($_CLEAN_POST["publish_end_hour"]) ? "00" : $_CLEAN_POST["publish_end_hour"]; $strMinute = empty($_CLEAN_POST["publish_end_minute"]) ? "00" : $_CLEAN_POST["publish_end_minute"]; $strDate = $strDate . " " . $strHour . ":" . $strMinute . ":00"; $objSchedule->setEndActive(1); $objSchedule->setEndDate(Date::toMysql($strDate)); } else { //*** If not set we set the date in the far future. This is nessecary for the client side library, $objSchedule->setEndActive(0); $objSchedule->setEndDate(APP_DEFAULT_ENDDATE); } $objElement->setSchedule($objSchedule); //*** Handle the meta values. if ($objElement->isPage()) { $objElement->clearMeta(); $objElement->clearAliases(); $arrFields = array("title", "keywords", "description"); $objContentLangs = ContentLanguage::select(); foreach ($objContentLangs as $objContentLanguage) { //*** Insert the value by language. foreach ($arrFields as $value) { $objMeta = new ElementMeta(); $arrCascades = explode(",", request("frm_meta_{$value}_cascades")); $blnCascade = in_array($objContentLanguage->getId(), $arrCascades) ? 1 : 0; $objMeta->setName($value); $objMeta->setValue(request("frm_meta_{$value}_{$objContentLanguage->getId()}")); $objMeta->setLanguageId($objContentLanguage->getId()); $objMeta->setCascade($blnCascade); $objElement->setMeta($objMeta); } $objAlias = new Alias(); $arrCascades = explode(",", request("frm_meta_alias_cascades")); $blnCascade = in_array($objContentLanguage->getId(), $arrCascades) ? 1 : 0; $objAlias->setAlias(request("frm_meta_alias_{$objContentLanguage->getId()}")); $objAlias->setLanguageId($objContentLanguage->getId()); $objAlias->setCascade($blnCascade); $objElement->setAlias($objAlias); } } //*** Handle element values. if (!$blnIsFolder) { //*** Cache and clear values. $objCachedFields = $objElement->getFields(true); $objElement->clearFields(); $objElement->clearLanguages(); //*** Insert the active flag by language. $arrActives = explode(",", request("language_actives")); $objContentLangs = ContentLanguage::select(); foreach ($objContentLangs as $objContentLanguage) { $blnActive = in_array($objContentLanguage->getId(), $arrActives) ? true : false; $objElement->setLanguageActive($objContentLanguage->getId(), $blnActive); if ($strCommand == CMD_ADD && !isset($_POST['language_actives'])) { $objElement->setLanguageActive($objContentLanguage->getId(), true); } } //*** Cache to handsome array. $arrFieldCache = array(); foreach ($objCachedFields as $objCacheField) { foreach ($objContentLangs as $objContentLanguage) { if ($objCacheField->getTypeId() == FIELD_TYPE_FILE || $objCacheField->getTypeId() == FIELD_TYPE_IMAGE) { $arrFieldCache[$objCacheField->getTemplateFieldId()][$objContentLanguage->getId()] = $objCacheField->value[$objContentLanguage->getId()]->getValue(); } } } foreach ($_REQUEST as $key => $value) { //*** Template Fields. if (substr($key, 0, 4) == "efv_") { //*** Get the template Id from the request $intTemplateFieldId = substr($key, 4); //*** Is the Id really an Id? if (is_numeric($intTemplateFieldId)) { $objTemplateField = TemplateField::selectByPK($intTemplateFieldId); $objField = new ElementField(); $objField->setElementId($objElement->getId()); $objField->setTemplateFieldId($intTemplateFieldId); $objField->save(); //*** Get the cascade value for the currentfield. $arrCascades = explode(",", request("efv_{$intTemplateFieldId}_cascades")); //*** Loop through the languages to insert the value by language. $objContentLangs = ContentLanguage::select(); foreach ($objContentLangs as $objContentLanguage) { //*** Insert the value by language. in_array($objContentLanguage->getId(), $arrCascades) ? $blnCascade = true : ($blnCascade = false); $strValue = request("efv_{$intTemplateFieldId}_{$objContentLanguage->getId()}"); //*** Check for certain type requirements. switch ($objTemplateField->getTypeId()) { case FIELD_TYPE_FILE: case FIELD_TYPE_IMAGE: $cacheFileValue = ""; $arrCurrent = is_array($strValue) ? $strValue : array(); foreach ($arrCurrent as $value) { if (!empty($value)) { $arrFile = explode(":", $value); if (count($arrFile) > 1 && !empty($arrFile[1])) { $cacheFileValue .= $value . "\n"; //*** Remove file from cache. if (isset($arrFieldCache[$intTemplateFieldId]) && isset($arrFieldCache[$intTemplateFieldId][$objContentLanguage->getId()])) { $arrFieldCache[$intTemplateFieldId][$objContentLanguage->getId()] = str_replace($value, "", $arrFieldCache[$intTemplateFieldId][$objContentLanguage->getId()]); } } } } //*** Multifile SWFUpload foreach ($arrCurrent as $value) { if (!empty($value)) { $arrFile = explode(":", $value); if (count($arrFile) > 1 && empty($arrFile[1])) { //*** Any image manipulation? $strLocalValue = ImageField::filename2LocalName($arrFile[0]); $objImageField = new ImageField($intTemplateFieldId); $arrSettings = $objImageField->getSettings(); if (count($arrSettings) > 1) { foreach ($arrSettings as $key => $arrSetting) { $strFileName = FileIO::add2Base($strLocalValue, $arrSetting['key']); if (copy($_PATHS['upload'] . $arrFile[0], $_PATHS['upload'] . $strFileName)) { if ($objTemplateField->getTypeId() == FIELD_TYPE_IMAGE && (!empty($arrSetting['width']) || !empty($arrSetting['height']))) { //*** Check if the image has the right size. $blnResize = true; $arrSize = getimagesize($_PATHS['upload'] . $strFileName); if ($arrSize !== false) { if ($arrSize[0] == $arrSetting['width'] && $arrSize[1] == $arrSetting['height']) { //*** Skip image resize. $blnResize = false; } } //*** Resize the image. if ($blnResize) { $intQuality = empty($arrSetting['quality']) ? 75 : $arrSetting['quality']; ImageResizer::resize($_PATHS['upload'] . $strFileName, $arrSetting['width'], $arrSetting['height'], $arrSetting['scale'], $intQuality, true, NULL, false, $arrSetting['grayscale']); } } //*** Move file to remote server. $objUpload = new SingleUpload(); if (!$objUpload->moveToFTP($strFileName, $_PATHS['upload'], $strServer, $strUsername, $strPassword, $strRemoteFolder)) { Log::handleError("File could not be moved to remote server. " . $objUpload->errorMessage()); } } } //*** Move original file. if (rename($_PATHS['upload'] . $arrFile[0], $_PATHS['upload'] . $strLocalValue)) { $objUpload = new SingleUpload(); if (!$objUpload->moveToFTP($strLocalValue, $_PATHS['upload'], $strServer, $strUsername, $strPassword, $strRemoteFolder)) { Log::handleError("File could not be moved to remote server. " . $objUpload->errorMessage()); } } //*** Unlink original file. @unlink($_PATHS['upload'] . $arrFile[0]); } else { if ($objTemplateField->getTypeId() == FIELD_TYPE_IMAGE && (!empty($arrSettings[0]['width']) || !empty($arrSettings[0]['height']))) { $strFileName = FileIO::add2Base($strLocalValue, $arrSettings[0]['key']); //*** Resize the image. if (rename($_PATHS['upload'] . $arrFile[0], $_PATHS['upload'] . $strFileName)) { //*** Check if the image has the right size. $blnResize = true; $arrSize = getimagesize($_PATHS['upload'] . $strFileName); if ($arrSize !== false) { if ($arrSize[0] == $arrSettings[0]['width'] && $arrSize[1] == $arrSettings[0]['height']) { //*** Skip image resize. $blnResize = false; } } if ($blnResize) { $intQuality = empty($arrSettings[0]['quality']) ? 75 : $arrSettings[0]['quality']; ImageResizer::resize($_PATHS['upload'] . $strFileName, $arrSettings[0]['width'], $arrSettings[0]['height'], $arrSettings[0]['scale'], $intQuality, true, NULL, false, $arrSettings[0]['grayscale']); } //*** Move file to remote server. $objUpload = new SingleUpload(); if (!$objUpload->moveToFTP($strFileName, $_PATHS['upload'], $strServer, $strUsername, $strPassword, $strRemoteFolder)) { Log::handleError("File could not be moved to remote server."); } } } //*** Move original file. if (file_exists($_PATHS['upload'] . $arrFile[0]) && rename($_PATHS['upload'] . $arrFile[0], $_PATHS['upload'] . $strLocalValue)) { //*** Move file to remote server. $objUpload = new SingleUpload(); if (!$objUpload->moveToFTP($strLocalValue, $_PATHS['upload'], $strServer, $strUsername, $strPassword, $strRemoteFolder)) { Log::handleError("File could not be moved to remote server."); } } //*** Unlink original file. @unlink($_PATHS['upload'] . $arrFile[0]); } //*** Set file value. $cacheFileValue .= $arrFile[0] . ":" . $strLocalValue . "\n"; } } } //*** Check newly uploaded files. $strFiles = "efv_{$intTemplateFieldId}_{$objContentLanguage->getId()}_new"; $fileValue = $cacheFileValue; if (isset($_FILES[$strFiles])) { if ($objTemplateField->getTypeId() == FIELD_TYPE_FILE) { $objValue = $objTemplateField->getValueByName("tfv_file_extension"); $strExtensions = is_object($objValue) ? $objValue->getValue() : ""; if (!empty($strExtensions)) { $strExtensions = str_replace("%s", Setting::getValueByName('file_upload_extensions'), $strExtensions); $objMultiUpload->setExtensions(explode(" ", strtolower($strExtensions))); } else { $objMultiUpload->setExtensions(explode(" ", strtolower(Setting::getValueByName('file_upload_extensions')))); } } else { $objMultiUpload->setExtensions(explode(" ", strtolower(Setting::getValueByName('image_upload_extensions')))); } $objMultiUpload->setTempNames($_FILES[$strFiles]['tmp_name']); $objMultiUpload->setOriginalNames($_FILES[$strFiles]['name']); $objMultiUpload->setErrors($_FILES[$strFiles]['error']); $objMultiUpload->uploadFiles(); if ($objMultiUpload->getTotalFiles() == $objMultiUpload->getSuccessFiles()) { //*** Everything is cool. $localValues = $objMultiUpload->getLocalNames(); //*** Any image manipulation? $blnResize = false; $objImageField = new ImageField($intTemplateFieldId); $arrSettings = $objImageField->getSettings(); if ($objTemplateField->getTypeId() == FIELD_TYPE_IMAGE && (!empty($arrSettings[0]['width']) || !empty($arrSettings[0]['height']))) { $blnResize = true; } foreach ($objMultiUpload->getOriginalNames() as $subkey => $subvalue) { if (!empty($subvalue)) { $fileValue .= $subvalue . ":" . $localValues[$subkey] . "\n"; //*** Check if the image has the right size. if ($blnResize) { $arrSize = getimagesize($_PATHS['upload'] . $localValues[$subkey]); if ($arrSize !== false) { if ($arrSize[0] == $arrSettings[0]['width'] && $arrSize[1] == $arrSettings[0]['height']) { //*** Skip image resize. $blnResize = false; } } } //*** Resize the image. if ($blnResize) { $intQuality = empty($arrSettings[0]['quality']) ? 75 : $arrSettings[0]['quality']; ImageResizer::resize($_PATHS['upload'] . $localValues[$subkey], $arrSettings[0]['width'], $arrSettings[0]['height'], $arrSettings[0]['scale'], $intQuality, true, NULL, false, $arrSettings[0]['grayscale']); } } } //*** Move file to remote server. if (!$objMultiUpload->moveToFTP($strServer, $strUsername, $strPassword, $strRemoteFolder)) { $strMessage = $objLang->get("moveToFTP", "alert"); $fileValue = $cacheFileValue; } } else { $strMessage = $objMultiUpload->errorMessage() . "<br />"; $strMessage .= "Files: " . $objMultiUpload->getTotalFiles() . " and Success: " . $objMultiUpload->getSuccessFiles(); } } $strValue = $fileValue; break; case FIELD_TYPE_BOOLEAN: if ($strValue == "1") { $strValue = "true"; } if (empty($strValue)) { $strValue = "false"; } break; } $objValue = $objField->getNewValueObject(); $objValue->setValue($strValue); $objValue->setLanguageId($objContentLanguage->getId()); $objValue->setCascade($blnCascade ? 1 : 0); $objField->setValueObject($objValue); } } } //*** Feed Fields. if (substr($key, 0, 4) == "tpf_") { //*** Get the template Id from the request $intTemplateFieldId = substr($key, 4); //*** Is the Id really an Id? if (is_numeric($intTemplateFieldId)) { //*** Get the cascade value for the currentfield. $arrCascades = explode(",", request("efv_{$intTemplateFieldId}_cascades")); //*** Loop through the languages to insert the value by language. $objContentLangs = ContentLanguage::select(); foreach ($objContentLangs as $objContentLanguage) { //*** Insert the value by language. in_array($objContentLanguage->getId(), $arrCascades) ? $blnCascade = true : ($blnCascade = false); $strValue = request("tpf_{$intTemplateFieldId}_{$objContentLanguage->getId()}"); $objFeedField = new ElementFieldFeed(); $objFeedField->setElementId($objElement->getId()); $objFeedField->setTemplateFieldId($intTemplateFieldId); $objFeedField->setFeedPath(str_replace("----", "/", $strValue)); $objFeedField->setXpath(str_replace("----", "/", $strValue)); $objFeedField->setLanguageId($objContentLanguage->getId()); $objFeedField->setCascade($blnCascade ? 1 : 0); $objFeedField->save(); } } } } //*** Remove deleted files. $objFtp = new FTP($strServer, NULL, NULL, true); $objFtp->login($strUsername, $strPassword); $objFtp->pasv(true); foreach ($arrFieldCache as $intTemplateFieldId => $arrLanguage) { foreach ($arrLanguage as $strValue) { $arrValues = explode("\n", $strValue); foreach ($arrValues as $value) { if (!empty($value)) { //*** Find file name. $arrFile = explode(":", $value); if (count($arrFile) > 1 && count($arrFile) < 3) { //*** Check if the file is used by other elements. if (!ElementField::fileHasDuplicates($value)) { //*** Remove file. $strFile = $strRemoteFolder . $arrFile[1]; $objFtp->delete($strFile); //*** Resized variations? $objImageField = new ImageField($intTemplateFieldId); $arrSettings = $objImageField->getSettings(); foreach ($arrSettings as $key => $arrSetting) { if (!empty($arrSetting['width']) || !empty($arrSetting['height'])) { //*** Remove file. $strFile = $strRemoteFolder . FileIO::add2Base($arrFile[1], $arrSetting['key']); $objFtp->delete($strFile); } } } } } } } } //*** Update the search index. $objSearch = new Search(); $objSearch->updateIndex($objElement->getId()); //*** Clear cache if caching enabled. $objElement->clearCache($objFtp); $objElement->clearZeroCache($objFtp); } else { //*** Activate all languages for the folder type. $objContentLangs = ContentLanguage::select(); foreach ($objContentLangs as $objContentLanguage) { $objElement->setLanguageActive($objContentLanguage->getId(), true); } } //*** Redirect the page. if (empty($strMessage)) { $intForward = $objElement->getParentId(); $varCmd = CMD_LIST; $intForwardToElement = null; $varValue = Setting::getValueByName("edit_after_save"); if ($varValue && $strCommand == CMD_ADD) { $intForwardToElement = $objElement->getId(); $varCmd = CMD_EDIT; } else { if (Setting::getValueByName('next_after_save') && $intForward > 0) { //*** Try to get first child element if (Setting::getValueByName("next_is_child")) { $objChildren = $objElement->getElements(); if (is_object($objChildren) && $objChildren->count() > 0) { $objChild = $objChildren->current(); $intForwardToElement = $objChild->getId(); if ($intForwardToElement > 0) { $varCmd = CMD_EDIT; } } } //*** Get next sibling $objParent = Element::selectByPK($objElement->getParentId()); $objChildren = $objParent->getElements(); $blnBreak = false; if (is_object($objChildren) && is_null($intForwardToElement)) { foreach ($objChildren as $objChild) { if ($blnBreak) { $intForwardToElement = $objChild->getId(); $varCmd = CMD_EDIT; break; } if ($objElement->getId() == $objChild->getId()) { $blnBreak = true; } } } } } if (!empty($intForwardToElement) && $intForwardToElement !== 0) { $intForward = $intForwardToElement; } header("Location: " . Request::getUri() . "/?cid=" . $_POST["cid"] . "&cmd=" . $varCmd . "&eid=" . $intForward); exit; } else { $_SESSION['uiError'] = $strMessage; header("Location: " . Request::getUri() . "/?cid=" . $_POST["cid"] . "&cmd=" . CMD_EDIT . "&eid=" . $objElement->getId() . "&err=1"); exit; } } } //*** Parse the page. $objElement = Element::selectByPK($intElmntId); //*** Errors. if ($blnUiError) { $objTpl->setCurrentBlock("error-main"); $objTpl->setVariable("ERROR_MAIN", $_SESSION['uiError']); $objTpl->parseCurrentBlock(); } //*** Render the template pulldown. if ($blnIsFolder) { $objTpl->setCurrentBlock("headertitel_simple"); $objTpl->setVariable("HEADER_TITLE", $objLang->get("details", "label")); $objTpl->parseCurrentBlock(); $objTemplates = NULL; } else { $objTpl->setCurrentBlock("headertitel_simple"); $objTpl->setVariable("HEADER_TITLE", $objLang->get("details", "label")); $objTpl->parseCurrentBlock(); if (is_object($objElement)) { if ($strCommand == CMD_EDIT) { $objTemplate = Template::selectByPK($objElement->getTemplateId()); $objTemplates = new DBA__Collection(); $objTemplates->addObject($objTemplate); } else { $objTemplates = $objElement->getSubTemplates(); } } else { $strSql = sprintf("SELECT * FROM pcms_template WHERE parentId = '0' AND accountId = '%s'", $_CONF['app']['account']->getId()); $objTemplates = Template::select($strSql); } } if (is_object($objTemplates)) { foreach ($objTemplates as $objTemplate) { $objTpl->setCurrentBlock("list_template"); $objTpl->setVariable("TEMPLATELIST_VALUE", $objTemplate->getId()); $objTpl->setVariable("TEMPLATELIST_TEXT", $objTemplate->getName()); $objTpl->parseCurrentBlock(); } //*** Render fields if there is only one template. if ($objTemplates->count() == 1 || $strCommand == CMD_EDIT) { $strLanguageBlock = $blnIsDynamic ? "feed.list_language" : "list_language"; $intDefaultLanguage = ContentLanguage::getDefault()->getId(); $intSelectLanguage = $intDefaultLanguage; $objContentLangs = ContentLanguage::select(); foreach ($objContentLangs as $objContentLanguage) { $objTpl->setCurrentBlock($strLanguageBlock); $objTpl->setVariable("LANGUAGELIST_VALUE", $objContentLanguage->getId()); if ($intDefaultLanguage == $objContentLanguage->getId()) { $objTpl->setVariable("LANGUAGELIST_TEXT", $objContentLanguage->getName() . " (" . $objLang->get("default", "label") . ")"); } else { $objTpl->setVariable("LANGUAGELIST_TEXT", $objContentLanguage->getName()); } if ($intSelectLanguage == $objContentLanguage->getId()) { $objTpl->setVariable("LANGUAGELIST_SELECTED", " selected=\"selected\""); } $objTpl->parseCurrentBlock(); } $objTemplates->rewind(); $objFields = $objTemplates->current()->getFields(); $objTpl->setVariable("LABEL_ELEMENT_FIELDS", $objLang->get("elementFields", "label")); $strFields = ""; if (!$blnIsDynamic) { foreach ($objFields as $objField) { $objFieldTpl = new HTML_Template_ITX($_PATHS['templates']); $objFieldTpl->loadTemplatefile("elementfield.tpl.htm"); //*** Get the field value from the element. $strValue = ""; if (is_object($objElement)) { $strValue = $objElement->getValueByTemplateField($objField->getId()); } $strDescription = $objField->getDescription(); //*** Get the field type object. $objType = TemplateFieldType::selectByPK($objField->getTypeId()); $intMaxFileCount = null; switch ($objField->getTypeId()) { case FIELD_TYPE_DATE: $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.date', 'elementfield_date.tpl.htm'); foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.{$objType->getInput()}.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); if (is_object($objElement)) { $strValue = $objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId(), true); $strValue = Date::fromMysql($_CONF['app']['universalDate'], $strValue); } else { $strValue = ""; } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", htmlspecialchars($strValue)); $objFieldTpl->parseCurrentBlock(); } $objValue = $objField->getValueByName("tfv_field_format"); $strFormatValue = is_object($objValue) ? $objValue->getValue() : ""; $objFieldTpl->setCurrentBlock("field.date"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_DATE_FORMAT", $strFormatValue); $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_LARGETEXT: $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.simpletext', 'elementfield_textarea.tpl.htm'); foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.simpletext.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); if (is_object($objElement)) { $strValue = htmlspecialchars($objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId())); } else { $strValue = ""; } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objFieldTpl->parseCurrentBlock(); } //*** Calculate and set the textarea height. $minHeight = 115; $maxHeight = 400; $intHeight = $minHeight; $objValue = $objField->getValueByName("tfv_field_max_characters"); $strMaxChar = is_object($objValue) ? $objValue->getValue() : ""; if (!empty($strMaxChar) && is_numeric($strMaxChar)) { $intHeight = ($strMaxChar - 500) * 0.05 + $minHeight; if ($intHeight < $minHeight) { $intHeight = $minHeight; } if ($intHeight > $maxHeight) { $intHeight = $maxHeight; } } $objFieldTpl->setCurrentBlock("field.simpletext"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); $objFieldTpl->setVariable("FIELD_HEIGHT", "{$intHeight}px"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_SELECT_LIST_SINGLE: case FIELD_TYPE_SELECT_LIST_MULTI: if ($objField->getTypeId() == FIELD_TYPE_SELECT_LIST_SINGLE) { $objDefaultValue = $objField->getValueByName("tfv_list_default"); $objValue = $objField->getValueByName("tfv_list_value"); $strFieldClass = "select-one"; $strMultiple = ""; } else { $objDefaultValue = $objField->getValueByName("tfv_multilist_default"); $objValue = $objField->getValueByName("tfv_multilist_value"); $strFieldClass = "select-multiple"; $strMultiple = "multiple=\"multiple\""; } $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.select', 'elementfield_selectlist.tpl.htm'); $strTemplValue = is_object($objDefaultValue) ? $objDefaultValue->getValue() : ""; foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.select.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); //*** Determine the selected value for the list. if (is_object($objElement)) { $strValue = $objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId()); } else { $strValue = NULL; } if (!empty($strValue) || !is_null($strValue)) { //*** Do Nothing. } elseif (!empty($strTemplValue)) { $strValue = $strTemplValue; } $arrDefaultValue = explode("\n", $strValue); $arrValue = array(); foreach ($arrDefaultValue as $value) { $value = trim($value); if (!empty($value)) { array_push($arrValue, $value); } } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", implode(",", $arrValue)); $objFieldTpl->parseCurrentBlock(); } //*** Render options for the list. $strListValue = is_object($objValue) ? $objValue->getValue() : ""; $arrValues = explode("\n", $strListValue); foreach ($arrValues as $value) { if (!empty($value)) { //*** Determine if we have a label. $arrValue = explode(":", $value); if (count($arrValue) > 1) { $optionLabel = trim($arrValue[0]); $optionValue = trim($arrValue[1]); } else { $optionLabel = trim($value); $optionValue = trim($value); } $objFieldTpl->setCurrentBlock("field.select.option"); $objFieldTpl->setVariable("FIELD_VALUE", $optionValue); $objFieldTpl->setVariable("FIELD_TEXT", xhtmlsave($optionLabel)); $objFieldTpl->parseCurrentBlock(); } } $objFieldTpl->setCurrentBlock("field.select"); $objFieldTpl->setVariable("FIELD_SELECT_SIZE", 1); $objFieldTpl->setVariable("FIELD_CLASS", $strFieldClass); $objFieldTpl->setVariable("FIELD_MULTIPLE", $strMultiple); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_CHECK_LIST_SINGLE: case FIELD_TYPE_CHECK_LIST_MULTI: if ($objField->getTypeId() == FIELD_TYPE_CHECK_LIST_SINGLE) { $objDefaultValue = $objField->getValueByName("tfv_list_default"); $objValue = $objField->getValueByName("tfv_list_value"); $strType = "radio"; } else { $objDefaultValue = $objField->getValueByName("tfv_multilist_default"); $objValue = $objField->getValueByName("tfv_multilist_value"); $strType = "checkbox"; } $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.check', 'elementfield_checklist.tpl.htm'); $strTemplValue = is_object($objDefaultValue) ? $objDefaultValue->getValue() : ""; foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.check.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); //*** Determine the selected value for the list. if (is_object($objElement)) { $strValue = $objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId()); } else { $strValue = NULL; } if (!empty($strValue) || !is_null($strValue)) { //*** Do Nothing. } elseif (!empty($strTemplValue)) { $strValue = $strTemplValue; } $arrDefaultValue = explode("\n", $strValue); $arrValue = array(); foreach ($arrDefaultValue as $value) { $value = trim($value); if (!empty($value)) { array_push($arrValue, $value); } } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", implode(",", $arrValue)); $objFieldTpl->parseCurrentBlock(); } //*** Render options for the list. $strListValue = is_object($objValue) ? $objValue->getValue() : ""; $arrValues = explode("\n", $strListValue); $intCount = 0; foreach ($arrValues as $value) { if (!empty($value)) { //*** Determine if we have a label. $arrValue = explode(":", $value); if (count($arrValue) > 1) { $optionLabel = trim($arrValue[0]); $optionValue = trim($arrValue[1]); } else { $optionLabel = trim($value); $optionValue = trim($value); } $objFieldTpl->setCurrentBlock("field.check.item"); $objFieldTpl->setVariable("SUBFIELD_TYPE", $strType); $objFieldTpl->setVariable("SUBFIELD_VALUE", $optionValue); $objFieldTpl->setVariable("SUBFIELD_TEXT", $optionLabel); $objFieldTpl->setVariable("SUBFIELD_ID", "efv_{$objField->getId()}_sub_{$intCount}"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); $objFieldTpl->parseCurrentBlock(); $intCount++; } } $objFieldTpl->setCurrentBlock("field.list"); $objFieldTpl->setVariable("SUBFIELD_TYPE", $strType); $objFieldTpl->parseCurrentBlock(); $objFieldTpl->setCurrentBlock("field.check"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_IMAGE: $objValue = $objField->getValueByName('tfv_image_count'); $intMaxFileCount = is_object($objValue) ? $objValue->getValue() : 10000; $strCurrentTitle = $objLang->get("imagesCurrent", "label"); $strNewTitle = $objLang->get("imagesNew", "label"); $strThumbPath = Setting::getValueByName("web_server") . Setting::getValueByName("file_folder"); $strUploadPath = Request::getURI() . $_CONF['app']['baseUri'] . "files/"; case FIELD_TYPE_FILE: if (!isset($intMaxFileCount)) { $objValue = $objField->getValueByName('tfv_file_count'); $intMaxFileCount = is_object($objValue) ? $objValue->getValue() : 10000; $strCurrentTitle = $objLang->get("filesCurrent", "label"); $strNewTitle = $objLang->get("filesNew", "label"); $strThumbPath = Setting::getValueByName("web_server") . Setting::getValueByName("file_folder"); $strUploadPath = Request::getURI() . $_CONF['app']['baseUri'] . "files/"; } if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); } $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.file', 'elementfield_file.tpl.htm'); foreach ($objContentLangs as $objContentLanguage) { if (is_object($objElement)) { $strValue = $objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId(), true); } else { $strValue = ""; } $intFileCount = 0; if (!empty($strValue)) { $arrValues = explode("\n", $strValue); foreach ($arrValues as $value) { if (!empty($value)) { $arrValue = explode(":", $value); if (count($arrValue) > 1) { $strValue = $arrValue[1]; $strLabel = $arrValue[0]; //*** Media library item? if (count($arrValue) > 2) { $strValue = $arrValue[1] . ":" . $arrValue[2]; } } else { $strValue = $arrValue[0]; $strLabel = $arrValue[0]; } $intFileCount++; $objFieldTpl->setCurrentBlock("field.file.edit"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID_COUNT", "efv_{$objField->getId()}_{$objContentLanguage->getId()}_{$intFileCount}"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", "{$strLabel}:{$strValue}"); $objFieldTpl->parseCurrentBlock(); } } } $objFieldTpl->setCurrentBlock("field.file.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); $objFieldTpl->setVariable("FIELD_LANGUAGE_CURRENT_FILES", $intFileCount); $objFieldTpl->setVariable("FIELD_LANGUAGE_ALTTEXT_VALUE", ""); $objFieldTpl->parseCurrentBlock(); } $intFileCount = 0; if (!empty($strValue)) { $arrValues = explode("\n", $strValue); foreach ($arrValues as $value) { if (!empty($value)) { $arrValue = explode(":", $value); if (count($arrValue) > 1) { $strValue = $arrValue[1]; $strLabel = $arrValue[0]; } else { $strValue = $arrValue[0]; $strLabel = $arrValue[0]; } if ($objField->getTypeId() == FIELD_TYPE_IMAGE) { $objFieldTpl->setCurrentBlock("thumbnail"); $objFieldTpl->setVariable("FIELD_ORIGINAL_VALUE", $strLabel); $objFieldTpl->setVariable("FIELD_VALUE", $strValue); $objFieldTpl->parseCurrentBlock(); } $objFieldTpl->setCurrentBlock("field.{$objType->getInput()}.edit"); $objFieldTpl->setVariable("FIELD_FILE_ID", "efv_{$objField->getId()}"); $objFieldTpl->setVariable("FIELD_ORIGINAL_VALUE", $strLabel); $objFieldTpl->setVariable("FIELD_VALUE", $strValue); $objFieldTpl->parseCurrentBlock(); $intFileCount++; } } } //*** Parse the rest of the block. $objFieldTpl->setCurrentBlock("field.file.select-type.library"); $objFieldTpl->setVariable("LABEL_LIBRARY", $objLang->get("pcmsInlineStorage", "menu")); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); $objFieldTpl->parseCurrentBlock(); $objFieldTpl->setCurrentBlock("field.file.select-type.upload"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); $objFieldTpl->parseCurrentBlock(); $objFieldTpl->setCurrentBlock("field.file"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); $objFieldTpl->setVariable("FIELD_BROWSE_NAME", $objLang->get("browseImage", "label")); //$objFieldTpl->setVariable("FIELD_ALT_NAME", $objLang->get("altImage", "label")); $objFieldTpl->setVariable("FIELD_CURRENT_FILES", $intFileCount); $objFieldTpl->setVariable("FIELD_MAX_FILES", $intMaxFileCount); $objFieldTpl->setVariable("FIELD_THUMB_PATH", $strThumbPath); $objFieldTpl->setVariable("FIELD_UPLOAD_PATH", $strUploadPath); $objFieldTpl->setVariable("FIELD_MAX_CHAR", 60); $objFieldTpl->setVariable("STORAGE_ITEMS", StorageItems::getFolderListHTML()); $objFieldTpl->setVariable("LABEL_CHOOSE_FOLDER", $objLang->get("chooseFolder", "label")); $objFieldTpl->setVariable("FIELD_HEADER_CURRENT", $strCurrentTitle); $objFieldTpl->setVariable("FIELD_HEADER_NEW", $strNewTitle); $objFieldTpl->setVariable("FIELD_LABEL_REMOVE", $objLang->get("delete", "button")); $objFieldTpl->setVariable("FIELD_LABEL_CANCEL", strtolower($objLang->get("cancel", "button"))); $objFieldTpl->setVariable("FIELD_LABEL_ALT", $objLang->get("alttag", "button")); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } if ($objField->getTypeId() == FIELD_TYPE_FILE) { $objValue = $objField->getValueByName("tfv_file_extension"); $strExtensions = is_object($objValue) ? $objValue->getValue() : ""; if (!empty($strExtensions)) { $strExtensions = str_replace("%s", Setting::getValueByName('file_upload_extensions'), $strExtensions); } else { $strExtensions = strtolower(Setting::getValueByName('file_upload_extensions')); } } else { $strExtensions = strtolower(Setting::getValueByName('image_upload_extensions')); } $objFieldTpl->setVariable("FIELD_FILE_TYPE", "*" . implode("; *", explode(" ", $strExtensions))); $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_SMALLTEXT: case FIELD_TYPE_NUMBER: case FIELD_TYPE_LINK: $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.text', 'elementfield_text.tpl.htm'); foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.text.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); if (is_object($objElement)) { $strValue = htmlspecialchars($objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId())); } else { $strValue = ""; } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objFieldTpl->parseCurrentBlock(); if ($objField->getTypeId() == FIELD_TYPE_LINK) { $objFieldTpl->setCurrentBlock("field.text.elementvalue"); $objFieldTpl->setVariable("FIELD_ELEMENT_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); $objFieldTpl->setVariable("ELEMENT_FIELD_ID", "efv_{$objField->getId()}"); $objFieldTpl->setVariable("FIELD_CLASS", "deeplink"); $elementTrail = Element::generateElementTrailString($strValue); $objFieldTpl->setVariable("FIELD_ELEMENT_VALUE", htmlentities($elementTrail)); $objFieldTpl->parseCurrentBlock(); } } $objFieldTpl->setCurrentBlock("field.text"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_MOVABLECANVAS_COORDINATES: $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.mccoordinates', 'elementfield_mccoordinates.tpl.htm'); foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.mccoordinates.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); if (is_object($objElement)) { $strValue = htmlspecialchars($objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId())); } else { $strValue = ""; } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objFieldTpl->parseCurrentBlock(); } $objFieldTpl->setCurrentBlock("field.mccoordinates"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } $objFieldTpl->setVariable("MC-API-ID", $objField->getValueByName("tfv_field_api_key")->getValue()); $objFieldTpl->setVariable("MC-MAP-ID", $objField->getValueByName("tfv_field_map_key")->getValue()); if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_SIMPLETEXT: $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.simpletext', 'elementfield_simpletext.tpl.htm'); foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.simpletext.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); if (is_object($objElement)) { $strValue = htmlspecialchars($objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId())); } else { $strValue = ""; } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objFieldTpl->parseCurrentBlock(); } //*** Calculate and set the textarea height. $minHeight = 115; $maxHeight = 400; $intHeight = $minHeight; $objValue = $objField->getValueByName("tfv_field_max_characters"); $strMaxChar = is_object($objValue) ? $objValue->getValue() : ""; if (!empty($strMaxChar) && is_numeric($strMaxChar)) { $intHeight = ($strMaxChar - 500) * 0.05 + $minHeight; if ($intHeight < $minHeight) { $intHeight = $minHeight; } if ($intHeight > $maxHeight) { $intHeight = $maxHeight; } } $objFieldTpl->setCurrentBlock("field.simpletext"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); $objFieldTpl->setVariable("FIELD_HEIGHT", "{$intHeight}px"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_USER: $strFieldClass = "select-one"; $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.select', 'elementfield_selectlist.tpl.htm'); foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.select.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); //*** Determine the selected value for the list. if (is_object($objElement)) { $strValue = $objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId()); } else { $strValue = ""; } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objFieldTpl->parseCurrentBlock(); } //*** Render options for the list. global $objLiveAdmin; $filters = array('container' => 'auth', 'filters' => array('account_id' => array($_CONF['app']['account']->getId()))); $objUsers = $objLiveAdmin->getUsers($filters); if (is_array($objUsers)) { foreach ($objUsers as $objUser) { $objFieldTpl->setCurrentBlock("field.select.option"); $objFieldTpl->setVariable("FIELD_VALUE", $objUser["perm_user_id"]); $objFieldTpl->setVariable("FIELD_TEXT", xhtmlsave($objUser["handle"])); $objFieldTpl->parseCurrentBlock(); } } $objFieldTpl->setCurrentBlock("field.select"); $objFieldTpl->setVariable("FIELD_SELECT_SIZE", 1); $objFieldTpl->setVariable("FIELD_CLASS", $strFieldClass); $objFieldTpl->setVariable("FIELD_MULTIPLE", ""); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } $objFieldTpl->parseCurrentBlock(); break; case FIELD_TYPE_BOOLEAN: $objDefaultValue = $objField->getValueByName("tfv_boolean_default"); $strTemplValue = is_object($objDefaultValue) ? $objDefaultValue->getValue() : ""; $objFieldTpl->addBlockfile('ELEMENT_FIELD', 'field.checkbox', 'elementfield_checkbox.tpl.htm'); foreach ($objContentLangs as $objContentLanguage) { $objFieldTpl->setCurrentBlock("field.checkbox.value"); $objFieldTpl->setVariable("FIELD_LANGUAGE_ID", "efv_{$objField->getId()}_{$objContentLanguage->getId()}"); if (is_object($objElement)) { $strValue = $objElement->getValueByTemplateField($objField->getId(), $objContentLanguage->getId()); } else { $strValue = NULL; } if (!empty($strValue) || !is_null($strValue)) { //*** Do Nothing. } elseif (!empty($strTemplValue)) { $strValue = $strTemplValue; } $objFieldTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objFieldTpl->parseCurrentBlock(); } $objFieldTpl->setCurrentBlock("field.checkbox"); $objFieldTpl->setVariable("FIELD_ID", "efv_{$objField->getId()}"); if ($objField->getRequired()) { $objFieldTpl->setVariable("FIELD_REQUIRED", "* "); } $objFieldTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); $objFieldTpl->setVariable("FIELD_VALUE", $strValue); if (!empty($strDescription)) { $objFieldTpl->setVariable("FIELD_DESCRIPTION", $objField->getDescription()); } if (is_object($objElement)) { $objElementField = $objElement->getFieldByTemplateField($objField->getId()); if (is_object($objElementField)) { $objFieldTpl->setVariable("FIELD_CASCADES", implode(",", $objElementField->getCascades())); } } $objFieldTpl->parseCurrentBlock(); break; } $strFields .= $objFieldTpl->get(); } } if (!empty($strFields)) { $objTpl->setVariable("ELEMENT_FIELDS", $strFields); } if (!$blnIsDynamic) { $objTpl->setVariable("LABEL_LANGUAGE", $objLang->get("language", "form")); $objTpl->setVariable("ACTIVE_LANGUAGE", $intDefaultLanguage); $objTpl->setVariable("DEFAULT_LANGUAGE", $intDefaultLanguage); } else { $objTpl->setCurrentBlock("feedlanguage"); $objTpl->setVariable("LABEL_LANGUAGE", $objLang->get("language", "form")); $objTpl->setVariable("ACTIVE_LANGUAGE", $intDefaultLanguage); $objTpl->setVariable("DEFAULT_LANGUAGE", $intDefaultLanguage); $objTpl->parseCurrentBlock(); } //*** Meta tab. if (is_object($objElement) && $objElement->isPage()) { $objTpl->setCurrentBlock("meta-title"); $objTpl->setVariable("HEADER", $objLang->get("meta", "label")); $objTpl->parseCurrentBlock(); $objTpl->setCurrentBlock("description-meta"); $objTpl->setVariable("LABEL", $objLang->get("metaInfo", "form")); $objTpl->parseCurrentBlock(); //*** Meta specific labels $objTpl->setVariable("LABEL_META_ALIAS", $objLang->get("alias", "form")); $objTpl->setVariable("LABEL_META_TITLE", $objLang->get("metaTitle", "label")); $objTpl->setVariable("LABEL_META_KEYWORDS", $objLang->get("metaKeywords", "label")); $objTpl->setVariable("LABEL_META_DESCRIPTION", $objLang->get("metaDescription", "label")); $objTpl->setVariable("META_KEYWORDS_NOTE", $objLang->get("metaKeywords", "tip")); $objTpl->setVariable("META_DESCRIPTION_NOTE", $objLang->get("metaDescription", "tip")); $objTpl->setVariable("META_ALIAS_NOTE", $objLang->get("alias", "tip")); $objTpl->setVariable("ACTIVE_META_LANGUAGE", $intSelectLanguage); $objTpl->setVariable("DEFAULT_META_LANGUAGE", $intDefaultLanguage); $objTpl->setVariable("LABEL_META_LANGUAGE", $objLang->get("language", "form")); //*** Meta languages $objContentLangs = ContentLanguage::select(); foreach ($objContentLangs as $objContentLanguage) { $objTpl->setCurrentBlock("list_meta-language"); $objTpl->setVariable("LANGUAGELIST_VALUE", $objContentLanguage->getId()); if ($intDefaultLanguage == $objContentLanguage->getId()) { $objTpl->setVariable("LANGUAGELIST_TEXT", $objContentLanguage->getName() . " (" . $objLang->get("default", "label") . ")"); } else { $objTpl->setVariable("LANGUAGELIST_TEXT", $objContentLanguage->getName()); } if ($intSelectLanguage == $objContentLanguage->getId()) { $objTpl->setVariable("LANGUAGELIST_SELECTED", " selected=\"selected\""); } $objTpl->parseCurrentBlock(); } //*** Meta language values. foreach ($objContentLangs as $objContentLanguage) { $strValue = $strCommand != CMD_ADD ? $objElement->getAlias($objContentLanguage->getId()) : ''; $objTpl->setCurrentBlock("field.meta_alias.value"); $objTpl->setVariable("FIELD_ALIAS_ID", "frm_meta_alias_{$objContentLanguage->getId()}"); $objTpl->setVariable("FIELD_ALIAS_VALUE", $strValue); $objTpl->parseCurrentBlock(); $objMeta = is_object($objElement) && $strCommand != CMD_ADD ? $objElement->getMeta($objContentLanguage->getId()) : NULL; $strValue = is_object($objMeta) ? $objMeta->getValueByValue("name", "title") : ""; $objTpl->setCurrentBlock("field.meta_title.value"); $objTpl->setVariable("FIELD_LANGUAGE_ID", "frm_meta_title_{$objContentLanguage->getId()}"); $objTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objTpl->parseCurrentBlock(); $strValue = is_object($objMeta) ? $objMeta->getValueByValue("name", "keywords") : ""; $objTpl->setCurrentBlock("field.meta_keywords.value"); $objTpl->setVariable("FIELD_LANGUAGE_ID", "frm_meta_keywords_{$objContentLanguage->getId()}"); $objTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objTpl->parseCurrentBlock(); $strValue = is_object($objMeta) ? $objMeta->getValueByValue("name", "description") : ""; $objTpl->setCurrentBlock("field.meta_description.value"); $objTpl->setVariable("FIELD_LANGUAGE_ID", "frm_meta_description_{$objContentLanguage->getId()}"); $objTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objTpl->parseCurrentBlock(); } //*** Meta language cascades. if ($strCommand != CMD_ADD) { $objTpl->setVariable("META_ALIAS_CASCADES", implode(",", Alias::getCascades($objElement->getId()))); $objTpl->setVariable("META_TITLE_CASCADES", implode(",", ElementMeta::getCascades($objElement->getId(), "title"))); $objTpl->setVariable("META_KEYWORDS_CASCADES", implode(",", ElementMeta::getCascades($objElement->getId(), "keywords"))); $objTpl->setVariable("META_DESCRIPTION_CASCADES", implode(",", ElementMeta::getCascades($objElement->getId(), "description"))); } } } //*** Feeds if dynamic. if ($blnIsDynamic) { if ($strCommand == CMD_EDIT) { $objElementFeed = $objElement->getFeed(); $objFeed = Feed::selectByPK($objElementFeed->getFeedId()); $objFeeds = new DBA__Collection(); $objFeeds->addObject($objFeed); $objParent = Element::selectByPK($objElement->getParentId()); } else { $objFeeds = Feed::select(); $objParent = Element::selectByPK($intElmntId); } if (isset($objParent) && $objParent->getTypeId() == ELM_TYPE_DYNAMIC) { $objNodes = $objParent->getFeed()->getStructuredNodes(); $objTpl->setCurrentBlock("list_feedpath"); $objTpl->setVariable("VALUE", ""); $objTpl->setVariable("TEXT", "Basepath"); $objTpl->parseCurrentBlock(); $objTpl->setCurrentBlock("list_feedpath"); $objTpl->setVariable("VALUE", ""); $objTpl->setVariable("TEXT", "-------------"); $objTpl->parseCurrentBlock(); if (count($objNodes) > 0) { foreach ($objNodes as $objSubElement) { $objTpl->setCurrentBlock("list_feedpath"); $objTpl->setVariable("VALUE", $objSubElement->getName()); $objTpl->setVariable("TEXT", $objSubElement->getName()); $objTpl->parseCurrentBlock(); } } } else { if (is_object($objFeeds)) { foreach ($objFeeds as $objFeed) { $objTpl->setCurrentBlock("list_feed"); $objTpl->setVariable("FEEDLIST_VALUE", $objFeed->getId()); $objTpl->setVariable("FEEDLIST_TEXT", $objFeed->getName()); $objTpl->parseCurrentBlock(); } } } if ($strCommand == CMD_EDIT) { $blnDynamicAlias = false; $objFeedFields = $objElementFeed->getStructuredNodes(); foreach ($objFeedFields as $objFeedField) { $objTpl->setCurrentBlock("list_feed_field"); $objTpl->setVariable("FEEDLIST_VALUE", $objFeedField->getName()); $objTpl->setVariable("FEEDLIST_TEXT", $objFeedField->getName()); if ($objElementFeed->getAliasField() == $objFeedField->getName()) { $objTpl->setVariable("FEEDLIST_SELECTED", "selected=\"selected\""); $blnDynamicAlias = true; } $objTpl->parseCurrentBlock(); } if ($blnDynamicAlias) { $objTpl->setVariable("FORM_DYNAMIC_ALIAS_VALUE", "checked=\"checked\""); } $objTpl->setVariable("FORM_MAXITEMS_VALUE", $objElementFeed->getMaxItems()); //*** Template fields. foreach ($objFields as $objField) { foreach ($objContentLangs as $objContentLanguage) { $objTpl->setCurrentBlock("feed.field.value"); $objTpl->setVariable("FIELD_LANGUAGE_ID", "tpf_{$objField->getId()}_{$objContentLanguage->getId()}"); if (is_object($objElement)) { $strValue = htmlspecialchars($objElement->getFeedValueByTemplateField($objField->getId(), $objContentLanguage->getId())); } else { $strValue = ""; } $objTpl->setVariable("FIELD_LANGUAGE_VALUE", $strValue); $objTpl->parseCurrentBlock(); } $objTpl->setCurrentBlock("feed.field"); $objTpl->setVariable("FIELD_ID", "tpf_{$objField->getId()}"); $objTpl->setVariable("FIELD_NAME", html_entity_decode($objField->getName())); if (is_object($objElement)) { $objFeedField = $objElement->getFeedFieldByTemplateField($objField->getId()); if (is_object($objFeedField)) { $objTpl->setVariable("FIELD_CASCADES", implode(",", $objFeedField->getCascades())); } } $objTpl->parseCurrentBlock(); } //*** Feed fields. $objFeedFields = $objElementFeed->getStructuredNodes(); $strFields = renderRecursiveFeedFields($objFeedFields); $objTpl->setCurrentBlock("feed.tag"); $objTpl->setVariable("FEEDFIELDS", $strFields); $objTpl->parseCurrentBlock(); } } } //*** Render the element form. $objTpl->setCurrentBlock("description-details"); $objTpl->setVariable("LABEL", $objLang->get("requiredFields", "form")); $objTpl->parseCurrentBlock(); $objTpl->setVariable("LABEL_ACTIVE", $objLang->get("active", "form")); $objTpl->setVariable("LABEL_NAME", $objLang->get("name", "form")); $objTpl->setVariable("LABEL_NOTES", $objLang->get("notes", "form")); //$objTpl->setVariable("LABEL_ALIAS", $objLang->get("alias", "form")); $objTpl->setVariable("APINAME_NOTE", $objLang->get("apiNameNote", "tip")); //$objTpl->setVariable("ALIAS_NOTE", $objLang->get("alias", "tip")); $objTpl->setVariable("LABEL_SAVE", $objLang->get("save", "button")); if (isset($objElement) && $objElement->getTypeId() == ELM_TYPE_LOCKED) { $objTpl->setVariable("DISABLED_SAVE", "disabled=\"disabled\""); } if ($blnIsFolder) { $objTpl->setVariable("LABEL_ELEMENTNAME", $objLang->get("folderName", "form")); $objTpl->setVariable("LABEL_ISPAGE", $objLang->get("pageContainer", "form")); if ($blnError === false && is_object($objElement)) { $objTpl->setVariable("FORM_ISPAGE_VALUE", $objElement->getIsPage() ? "checked=\"checked\"" : ""); } } else { $objTpl->setVariable("LABEL_ELEMENTNAME", $objLang->get("elementName", "form")); $objTpl->setVariable("LABEL_TEMPLATENAME", $objLang->get("template", "form")); if ($blnIsDynamic) { if (isset($objParent) && $objParent->getTypeId() == ELM_TYPE_DYNAMIC) { $objTpl->setVariable("LABEL_FEEDPATH", $objLang->get("basepath", "form")); } else { $objTpl->setVariable("LABEL_FEEDNAME", $objLang->get("feed", "form")); } $objTpl->setVariable("LABEL_MAXITEMS", $objLang->get("maxItems", "form")); } } //*** Predefine schedule variables. $intStartHour = 8; $intStartMinute = 0; $intEndHour = 17; $intEndMinute = 0; //*** Insert values if action is edit. if ($strCommand == CMD_EDIT) { if ($blnError === false) { $objTpl->setVariable("FORM_ACTIVE_VALUE", $objElement->getActive() ? "checked=\"checked\"" : ""); $objTpl->setVariable("FORM_NAME_VALUE", str_replace("\"", """, $objElement->getName())); $objTpl->setVariable("FORM_APINAME_VALUE", $objElement->getApiname()); //$objTpl->setVariable("FORM_ALIAS_VALUE", $objElement->getAlias()); $objTpl->setVariable("FORM_NOTES_VALUE", $objElement->getDescription()); } $objTpl->setVariable("BUTTON_CANCEL_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$objElement->getParentId()}&cmd=" . CMD_LIST); $objTpl->setVariable("BUTTON_FORMCANCEL_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$objElement->getParentId()}&cmd=" . CMD_LIST); if (!$blnIsFolder && $objElement->getTypeId() != ELM_TYPE_DYNAMIC) { $objTpl->setVariable("ACTIVES_LANGUAGE", implode(",", $objElement->getLanguageActives())); } //*** Publish specific values. $objSchedule = $objElement->getSchedule(); if ($objSchedule->getStartActive()) { $strValue = Date::fromMysql("%d %B %Y", $objSchedule->getStartDate()); $objTpl->setVariable("START_DATE_DISPLAY", empty($strValue) ? " " : $strValue); $objTpl->setVariable("START_DATE_VALUE", Date::fromMysql($_CONF['app']['universalDate'], $objSchedule->getStartDate())); $strValue = Date::fromMysql("%H", $objSchedule->getStartDate()); if (!empty($strValue)) { $intStartHour = $strValue; } $strValue = Date::fromMysql("%M", $objSchedule->getStartDate()); if (!empty($strValue)) { $intStartMinute = $strValue; } $objTpl->setVariable("START_DATE_ACTIVE", "checked=\"checked\""); } else { $objTpl->setVariable("START_DATE_DISPLAY", " "); } if ($objSchedule->getEndActive()) { $strValue = Date::fromMysql("%d %B %Y", $objSchedule->getEndDate()); $objTpl->setVariable("END_DATE_DISPLAY", empty($strValue) ? " " : $strValue); $objTpl->setVariable("END_DATE_VALUE", Date::fromMysql($_CONF['app']['universalDate'], $objSchedule->getEndDate())); $strValue = Date::fromMysql("%H", $objSchedule->getEndDate()); if (!empty($strValue)) { $intEndHour = $strValue; } $strValue = Date::fromMysql("%M", $objSchedule->getEndDate()); if (!empty($strValue)) { $intEndMinute = $strValue; } $objTpl->setVariable("END_DATE_ACTIVE", "checked=\"checked\""); } else { $objTpl->setVariable("END_DATE_DISPLAY", " "); } } else { if ($blnError === false) { if (Setting::getValueByName('elmnt_active_state') == 1) { $objTpl->setVariable("FORM_ACTIVE_VALUE", "checked=\"checked\""); } } $objTpl->setVariable("BUTTON_CANCEL_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_LIST); $objTpl->setVariable("BUTTON_FORMCANCEL_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_LIST); //*** Publish specific values. $objTpl->setVariable("START_DATE_DISPLAY", " "); $objTpl->setVariable("END_DATE_DISPLAY", " "); } //*** Render tabs. if (is_object($objTemplates) && ($objTemplates->count() == 1 || $strCommand == CMD_EDIT)) { if (!$blnIsFolder) { //*** Fields tab. $objTpl->setCurrentBlock("field-title"); $objTpl->setVariable("HEADER", $objLang->get("fields", "label")); $objTpl->parseCurrentBlock(); $objTpl->setCurrentBlock("description-fields"); $objTpl->setVariable("LABEL", $objLang->get("requiredFields", "form")); $objTpl->parseCurrentBlock(); //*** Set all language as active by default for a new element if ($strCommand == CMD_ADD) { $objContentLangs = ContentLanguage::select(); $aActiveLanguages = array(); foreach ($objContentLangs as $objContentLang) { $aActiveLanguages[] = $objContentLang->getId(); } $objTpl->setVariable("ACTIVES_LANGUAGE", implode(",", $aActiveLanguages)); } } //*** Permissions tab. // $objTpl->setCurrentBlock("permission-title"); // $objTpl->setVariable("HEADER", $objLang->get("permissions", "label")); // $objTpl->parseCurrentBlock(); // $objTpl->setCurrentBlock("description-permission"); // $objTpl->setVariable("LABEL", $objLang->get("permissionInfo", "form")); // $objTpl->parseCurrentBlock(); } //*** Publish tab. $objTpl->setCurrentBlock("publish-title"); $objTpl->setVariable("HEADER", $objLang->get("publish", "label")); $objTpl->parseCurrentBlock(); $objTpl->setCurrentBlock("description-publish"); $objTpl->setVariable("LABEL", $objLang->get("publishInfo", "form")); $objTpl->parseCurrentBlock(); //*** Publish specific labels $objTpl->setVariable("LABEL_START_DATE", $objLang->get("startDate", "label")); $objTpl->setVariable("LABEL_END_DATE", $objLang->get("endDate", "label")); $objTpl->setVariable("LABEL_DATE", $objLang->get("date", "label")); $objTpl->setVariable("LABEL_TIME", $objLang->get("time", "label")); foreach (range(0, 23) as $hour) { $objTpl->setCurrentBlock("date.start.hour"); $objTpl->setVariable("VALUE", $hour); $objTpl->setVariable("LABEL", str_pad($hour, 2, 0, STR_PAD_LEFT)); if (trim($intStartHour) == $hour) { $objTpl->setVariable("SELECTED", "selected=\"selected\""); } $objTpl->parseCurrentBlock(); } foreach (range(0, 45, 15) as $minute) { $objTpl->setCurrentBlock("date.start.minute"); $objTpl->setVariable("VALUE", $minute); $objTpl->setVariable("LABEL", str_pad($minute, 2, 0, STR_PAD_LEFT)); if (trim($intStartMinute) == $minute) { $objTpl->setVariable("SELECTED", "selected=\"selected\""); } $objTpl->parseCurrentBlock(); } foreach (range(0, 23) as $hour) { $objTpl->setCurrentBlock("date.end.hour"); $objTpl->setVariable("VALUE", $hour); $objTpl->setVariable("LABEL", str_pad($hour, 2, 0, STR_PAD_LEFT)); if (trim($intEndHour) == $hour) { $objTpl->setVariable("SELECTED", "selected=\"selected\""); } $objTpl->parseCurrentBlock(); } foreach (range(0, 45, 15) as $minute) { $objTpl->setCurrentBlock("date.end.minute"); $objTpl->setVariable("VALUE", $minute); $objTpl->setVariable("LABEL", str_pad($minute, 2, 0, STR_PAD_LEFT)); if (trim($intEndMinute) == $minute) { $objTpl->setVariable("SELECTED", "selected=\"selected\""); } $objTpl->parseCurrentBlock(); } $objTpl->setVariable("LANG", strtolower($objLang->get("abbr"))); //*** Render the element form. $objTpl->setVariable("BUTTON_CANCEL", $objLang->get("back", "button")); $objTpl->setVariable("BUTTON_FORMCANCEL", $objLang->get("cancel", "button")); $objTpl->setVariable("CID", NAV_PCMS_ELEMENTS); $objTpl->setVariable("CMD", $strCommand); $objTpl->setVariable("EID", $intElmntId); break; case CMD_EXPORT_ELEMENT: $objTpl->loadTemplatefile("export.tpl.htm"); $arrElementIds = NULL; // export via selection of (multiple) elements if (isset($_GET['sel'])) { $arrElementIds = explode(',', $intElmntId); $objChild = Element::selectByPK($arrElementIds[0]); $objElement = Element::selectByPK($objChild->getParentId()); } else { $objElement = Element::selectByPK($intElmntId); } //*** Set section title. $objTpl->setVariable("MAINTITLE", $objLang->get("export", "label")); //*** Set tab title. $objTpl->setCurrentBlock("headertitel_simple"); $objTpl->setVariable("HEADER_TITLE", $objLang->get("exportOptions", "label")); $objTpl->parseCurrentBlock(); $objTpl->setVariable("FORM_NAME", "exportForm"); //*** Handle request & create export if ($_SERVER['REQUEST_METHOD'] == 'POST') { $arrElementFilters = array(); $arrTemplateFilters = array(); foreach ($_POST['elem'] as $id => $val) { $arrElementFilters[] = intval($id); $objTmpElement = Element::selectByPK(intval($id)); if (!in_array($objTmpElement->getTemplateId(), $arrTemplateFilters)) { $arrTemplateFilters[] = $objTmpElement->getTemplateId(); } } if ($_POST['sel'] == 1) { $includeSelf = false; $arrElementIds = explode(',', $intElmntId); $objChild = Element::selectByPK($arrElementIds[0]); $objElement = Element::selectByPK($objChild->getParentId()); } else { $includeSelf = true; $objElement = Element::selectByPK($intElmntId); } $strZipFile = ImpEx::exportFrom($objElement->getId(), $objElement->getTemplateId(), $arrElementFilters, $arrTemplateFilters, $_CONF['app']['account']->getId(), true, true, $includeSelf); //*** Return XML. header("HTTP/1.1 200 OK"); header("Pragma: public"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header('Content-Type: application/octetstream; charset=utf-8'); header("Content-Length: " . (string) filesize($strZipFile)); header('Content-Disposition: attachment; filename="' . date("Y-m-d") . '_exportElements.zip"'); header("Content-Transfer-Encoding: binary\n"); readfile($strZipFile); unlink($strZipFile); exit; } //*** Create element checkboxes $objTpl->setVariable("SELECT_ITEMS", $objLang->get("selectElements", "label")); $objTpl->setVariable("FORM_CHECKBOXES", createElementTree($objElement, isset($_GET['sel']), $arrElementIds)); //*** Set form buttons $objTpl->setVariable("BUTTON_FORMCANCEL_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_LIST); $objTpl->setCurrentBlock("singleview"); $objTpl->setVariable("BUTTON_CANCEL", $objLang->get("back", "button")); $objTpl->setVariable("BUTTON_FORMCANCEL", $objLang->get("cancel", "button")); $objTpl->setVariable("LABEL_SAVE", $objLang->get("export", "button")); $objTpl->setVariable("CID", NAV_PCMS_ELEMENTS); $objTpl->setVariable("CMD", CMD_EXPORT_ELEMENT); $objTpl->setVariable("EID", $intElmntId); $objTpl->setVariable("SEL", isset($_GET['sel']) ? '1' : '0'); $objTpl->parseCurrentBlock(); break; case CMD_IMPORT_ELEMENT: $objTpl->loadTemplatefile("import.tpl.htm"); //*** Parse the template. $objElement = Element::selectByPK($intElmntId); //*** Set section title. $objTpl->setVariable("MAINTITLE", $objLang->get("import", "label")); //*** Set tab title. $objTpl->setCurrentBlock("headertitel_simple"); $objTpl->setVariable("HEADER_TITLE", $objLang->get("importOptions", "label")); $objTpl->parseCurrentBlock(); //*** Handle request & do import if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_FILES["file"]["name"])) { if ($_FILES["file"]["error"] > 0) { $objTpl->setVariable('ERROR_MAIN', 'Error: ' . $_FILES["file"]["error"]); } else { if (end(explode(".", $_FILES["file"]["name"])) !== 'zip') { $objTpl->setVariable('ERROR_MAIN', 'Error: Only *.ZIP files allowed'); } else { if (!ImpEx::importIn($_FILES["file"]["tmp_name"], $objElement->getId(), $objElement->getTemplateId(), $_CONF['app']['account']->getId(), false, true, true)) { $objTpl->setVariable('ERROR_MAIN', 'Templates and/or fields of templates in file do not match the destination templates'); } } } } $objTpl->setVariable('CUR_LOCATION', $objElement->getName()); $objTpl->setVariable("IMPORT_FILE", $objLang->get("importFile", "label")); $objTpl->setVariable("IMPORT_FILE_TIP", $objLang->get("importFile", "tip")); //*** Set form buttons $objTpl->setVariable("BUTTON_FORMCANCEL_HREF", "?cid=" . NAV_PCMS_ELEMENTS . "&eid={$intElmntId}&cmd=" . CMD_LIST); $objTpl->setCurrentBlock("singleview"); $objTpl->setVariable("BUTTON_CANCEL", $objLang->get("back", "button")); $objTpl->setVariable("BUTTON_FORMCANCEL", $objLang->get("cancel", "button")); $objTpl->setVariable("LABEL_SAVE", $objLang->get("import", "button")); $objTpl->setVariable("CID", NAV_PCMS_ELEMENTS); $objTpl->setVariable("CMD", CMD_IMPORT_ELEMENT); $objTpl->setVariable("EID", $intElmntId); $objTpl->parseCurrentBlock(); break; } return $objTpl->get(); }
function doModel() { switch ($this->action) { case 'media': // calling the media view $max_upload = (int) ini_get('upload_max_filesize'); $max_post = (int) ini_get('post_max_size'); $memory_limit = (int) ini_get('memory_limit'); $upload_mb = min($max_upload, $max_post, $memory_limit) * 1024; $this->_exportVariableToView('max_size_upload', $upload_mb); $this->doView('settings/media.php'); break; case 'media_post': // updating the media config osc_csrf_check(); $status = 'ok'; $error = ''; $iUpdated = 0; $maxSizeKb = Params::getParam('maxSizeKb'); $dimThumbnail = strtolower(Params::getParam('dimThumbnail')); $dimPreview = strtolower(Params::getParam('dimPreview')); $dimNormal = strtolower(Params::getParam('dimNormal')); $keepOriginalImage = Params::getParam('keep_original_image'); $forceAspectImage = Params::getParam('force_aspect_image'); $forceJPEG = Params::getParam('force_jpeg'); $use_imagick = Params::getParam('use_imagick'); $type_watermark = Params::getParam('watermark_type'); $watermark_color = Params::getParam('watermark_text_color'); $watermark_text = Params::getParam('watermark_text'); switch ($type_watermark) { case 'none': $iUpdated += osc_set_preference('watermark_text_color', ''); $iUpdated += osc_set_preference('watermark_text', ''); $iUpdated += osc_set_preference('watermark_image', ''); break; case 'text': $iUpdated += osc_set_preference('watermark_text_color', $watermark_color); $iUpdated += osc_set_preference('watermark_text', $watermark_text); $iUpdated += osc_set_preference('watermark_image', ''); $iUpdated += osc_set_preference('watermark_place', Params::getParam('watermark_text_place')); break; case 'image': // upload image & move to path $watermark_file = Params::getFiles('watermark_image'); if ($watermark_file['tmp_name'] != '' && $watermark_file['size'] > 0) { if ($watermark_file['error'] == UPLOAD_ERR_OK) { if ($watermark_file['type'] == 'image/png') { $tmpName = $watermark_file['tmp_name']; $path = osc_content_path() . 'uploads/watermark.png'; if (move_uploaded_file($tmpName, $path)) { $iUpdated += osc_set_preference('watermark_image', $path); } else { $status = 'error'; $error .= _m('There was a problem uploading the watermark image') . "<br />"; } } else { $status = 'error'; $error .= _m('The watermark image has to be a .PNG file') . "<br />"; } } else { $status = 'error'; $error .= _m('There was a problem uploading the watermark image') . "<br />"; } } $iUpdated += osc_set_preference('watermark_text_color', ''); $iUpdated += osc_set_preference('watermark_text', ''); $iUpdated += osc_set_preference('watermark_place', Params::getParam('watermark_image_place')); break; default: break; } // format parameters $maxSizeKb = trim(strip_tags($maxSizeKb)); $dimThumbnail = trim(strip_tags($dimThumbnail)); $dimPreview = trim(strip_tags($dimPreview)); $dimNormal = trim(strip_tags($dimNormal)); $keepOriginalImage = $keepOriginalImage != '' ? true : false; $forceAspectImage = $forceAspectImage != '' ? true : false; $forceJPEG = $forceJPEG != '' ? true : false; $use_imagick = $use_imagick != '' ? true : false; if (!preg_match('|([0-9]+)x([0-9]+)|', $dimThumbnail, $match)) { $dimThumbnail = is_numeric($dimThumbnail) ? $dimThumbnail . "x" . $dimThumbnail : "100x100"; } if (!preg_match('|([0-9]+)x([0-9]+)|', $dimPreview, $match)) { $dimPreview = is_numeric($dimPreview) ? $dimPreview . "x" . $dimPreview : "100x100"; } if (!preg_match('|([0-9]+)x([0-9]+)|', $dimNormal, $match)) { $dimNormal = is_numeric($dimNormal) ? $dimNormal . "x" . $dimNormal : "100x100"; } // is imagick extension loaded? if (!@extension_loaded('imagick')) { $use_imagick = false; } // max size allowed by PHP configuration? $max_upload = (int) ini_get('upload_max_filesize'); $max_post = (int) ini_get('post_max_size'); $memory_limit = (int) ini_get('memory_limit'); $upload_mb = min($max_upload, $max_post, $memory_limit) * 1024; // set maxSizeKB equals to PHP configuration if it's bigger if ($maxSizeKb > $upload_mb) { $status = 'warning'; $maxSizeKb = $upload_mb; // flash message text warning $error .= sprintf(_m("You cannot set a maximum file size higher than the one allowed in the PHP configuration: <b>%d KB</b>"), $upload_mb); } $iUpdated += osc_set_preference('maxSizeKb', $maxSizeKb); $iUpdated += osc_set_preference('dimThumbnail', $dimThumbnail); $iUpdated += osc_set_preference('dimPreview', $dimPreview); $iUpdated += osc_set_preference('dimNormal', $dimNormal); $iUpdated += osc_set_preference('keep_original_image', $keepOriginalImage); $iUpdated += osc_set_preference('force_aspect_image', $forceAspectImage); $iUpdated += osc_set_preference('force_jpeg', $forceJPEG); $iUpdated += osc_set_preference('use_imagick', $use_imagick); if ($error != '') { switch ($status) { case 'error': osc_add_flash_error_message($error, 'admin'); break; case 'warning': osc_add_flash_warning_message($error, 'admin'); break; default: osc_add_flash_ok_message($error, 'admin'); break; } } else { osc_add_flash_ok_message(_m('Media config has been updated'), 'admin'); } $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=media'); break; case 'images_post': if (defined('DEMO')) { osc_add_flash_warning_message(_m("This action can't be done because it's a demo site"), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=media'); } osc_csrf_check(); $aResources = ItemResource::newInstance()->getAllResources(); foreach ($aResources as $resource) { osc_run_hook('regenerate_image', $resource); if (strpos($resource['s_content_type'], 'image') !== false) { if (file_exists(osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . "_original." . $resource['s_extension'])) { $image_tmp = osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . "_original." . $resource['s_extension']; $use_original = true; } else { if (file_exists(osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . "." . $resource['s_extension'])) { $image_tmp = osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . "." . $resource['s_extension']; $use_original = false; } else { if (file_exists(osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . "_preview." . $resource['s_extension'])) { $image_tmp = osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . "_preview." . $resource['s_extension']; $use_original = false; } else { $use_original = false; continue; } } } // Create normal size $path_normal = $path = osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . '.' . $resource['s_extension']; $size = explode('x', osc_normal_dimensions()); $img = ImageResizer::fromFile($image_tmp)->resizeTo($size[0], $size[1]); if ($use_original) { if (osc_is_watermark_text()) { $img->doWatermarkText(osc_watermark_text(), osc_watermark_text_color()); } elseif (osc_is_watermark_image()) { $img->doWatermarkImage(); } } $img->saveToFile($path); // Create preview $path = osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . '_preview.' . $resource['s_extension']; $size = explode('x', osc_preview_dimensions()); ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path); // Create thumbnail $path = osc_base_path() . $resource['s_path'] . $resource['pk_i_id'] . '_thumbnail.' . $resource['s_extension']; $size = explode('x', osc_thumbnail_dimensions()); ImageResizer::fromFile($path_normal)->resizeTo($size[0], $size[1])->saveToFile($path); osc_run_hook('regenerated_image', ItemResource::newInstance()->findByPrimaryKey($resource['pk_i_id'])); } else { // no es imagen o imagen sin extesión } } osc_add_flash_ok_message(_m('Re-generation complete'), 'admin'); $this->redirectTo(osc_admin_base_url(true) . '?page=settings&action=media'); break; } }
<?php include "../cbImage.php"; include "../ImageResizer.class.php"; $c = new Image("cars.jpg"); $r = new ImageResizer($c); //print_r($c->getType()); //$r->scalePercentage(80); $r->Resize(320, 200); $r->show();
<?php namespace cd; set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../core/'); require_once 'core.php'; require_once 'ImageResizer.php'; $file = '/home/ml/Skrivbord/DSC_1853.JPG'; $x = new ImageResizer($file); $x->resizeAspect(800, 800); $x->render('gif', 'resized.gif'); echo "resized to " . $x->getWidth() . "x" . $x->getHeight() . "\n";