/** * Return an array of custom tags, indexed by name */ public function getCustomtagsByName() { if (!$this->_objects) { global $icmsConfig; $ret = array(); $criteria = new icms_db_criteria_Compo(); $criteria_language = new icms_db_criteria_Compo(); $criteria_language->add(new icms_db_criteria_Item('language', $icmsConfig['language'])); $criteria_language->add(new icms_db_criteria_Item('language', 'all'), 'OR'); $criteria->add($criteria_language); $icms_permissions_handler = new icms_ipf_permission_Handler($this); $granted_ids = $icms_permissions_handler->getGrantedItems('view_customtag'); if ($granted_ids && count($granted_ids) > 0) { $criteria->add(new icms_db_criteria_Item('customtagid', '(' . implode(', ', $granted_ids) . ')', 'IN')); $customtagsObj = $this->getObjects($criteria, TRUE); foreach ($customtagsObj as $customtagObj) { $ret[$customtagObj->getVar('name')] = $customtagObj; } } $this->_objects = $ret; } return $this->_objects; }
/** * * @param obj $criteria * @param str $perm_name */ public function setGrantedObjectsCriteria(&$criteria, $perm_name) { $icmspermissions_handler = new icms_ipf_permission_Handler($this); $grantedItems = $icmspermissions_handler->getGrantedItems($perm_name); if (count($grantedItems) > 0) { $criteria->add(new icms_db_criteria_Item($this->keyName, '(' . implode(', ', $grantedItems) . ')', 'IN')); return true; } else { return false; } }
public function __construct(&$handler) { parent::__construct($handler); $this->_deprecated = icms_core_Debug::setDeprecated('icms_ipf_permission_Handler', sprintf(_CORE_REMOVE_IN_VERSION, '1.4')); }
/** * * @param obj $icmsObj Object * @param int $objectid * @param str $created_success_msg Message to display on successful creation * @param str $modified_success_msg Message to display on successful modification * @param bool $redirect_page Whether to redirect afterwards, or not * @param bool $debug Whether to display debug information, or not */ public function &doStoreFromDefaultForm(&$icmsObj, $objectid, $created_success_msg, $modified_success_msg, $redirect_page = false, $debug = false) { global $impresscms; $this->postDataToObject($icmsObj); if ($icmsObj->isNew()) { $redirect_msg = $created_success_msg; } else { $redirect_msg = $modified_success_msg; } // Check if there were uploaded files $uploaderResult = true; if (isset($_POST['icms_upload_image']) || isset($_POST['icms_upload_file'])) { $uploaderObj = new icms_file_MediaUploadHandler($icmsObj->getImageDir(true), $this->handler->_allowedMimeTypes, $this->handler->_maxFileSize, $this->handler->_maxWidth, $this->handler->_maxHeight); foreach ($_FILES as $name => $file_array) { if (isset($file_array['name']) && $file_array['name'] != "" && in_array(str_replace('upload_', '', $name), array_keys($icmsObj->vars))) { if ($uploaderObj->fetchMedia($name)) { $uploaderObj->setTargetFileName(time() . "_" . $uploaderObj->getMediaName()); if ($uploaderObj->upload()) { $uploaderResult = $uploaderResult && true; // Find the related field in the icms_ipf_Object $related_field = str_replace('upload_', '', $name); $uploadedArray[] = $related_field; // if it's a richfile if ($icmsObj->vars[$related_field]['data_type'] == XOBJ_DTYPE_FILE) { $object_fileurl = $icmsObj->getUploadDir(); $fileObj = $icmsObj->getFileObj($related_field); $fileObj->setVar('url', $object_fileurl . $uploaderObj->getSavedFileName()); $fileObj->setVar('mid', $_POST['mid_' . $related_field]); $fileObj->setVar('caption', $_POST['caption_' . $related_field]); $fileObj->setVar('description', $_POST['desc_' . $related_field]); $icmsObj->storeFileObj($fileObj); $icmsObj->setVar($related_field, $fileObj->getVar('fileid')); } else { $eventResult = $this->handler->executeEvent('beforeFileUnlink', $icmsObj); if (!$eventResult) { $icmsObj->setErrors("An error occured during the beforeFileUnlink event"); $uploaderResult = $uploaderResult && false; } $old_file = $icmsObj->getUploadDir(true) . $icmsObj->getVar($related_field); if (is_file($old_file)) { unlink($old_file); } $icmsObj->setVar($related_field, $uploaderObj->getSavedFileName()); $eventResult = $this->handler->executeEvent('afterFileUnlink', $icmsObj); if (!$eventResult) { $icmsObj->setErrors("An error occured during the afterFileUnlink event"); $uploaderResult = $uploaderResult && false; } } } else { $icmsObj->setErrors($uploaderObj->getErrors(false)); $uploaderResult = $uploaderResult && false; } } else { $icmsObj->setErrors($uploaderObj->getErrors(false)); $uploaderResult = $uploaderResult && false; } } } } if ($uploaderResult) { if ($debug) { $storeResult = $this->handler->insertD($icmsObj); } else { $storeResult = $this->handler->insert($icmsObj); } } else { $storeResult = false; } if ($storeResult) { if ($this->handler->getPermissions()) { $icmspermissions_handler = new icms_ipf_permission_Handler($this->handler); $icmspermissions_handler->storeAllPermissionsForId($icmsObj->id()); } } if ($redirect_page === null) { return $icmsObj; } else { if (!$storeResult) { redirect_header($impresscms->urls['previouspage'], 3, _CO_ICMS_SAVE_ERROR . $icmsObj->getHtmlErrors()); } else { $redirect_page = $redirect_page ? $redirect_page : icms_get_page_before_form(); redirect_header($redirect_page, 2, $redirect_msg); } } }
/** * Retreive the group that have been granted access to a specific permission for this object * * @return string $group_perm name of the permission */ public function getGroupPerm($group_perm) { if (!$this->handler->getPermissions()) { $this->setError("Trying to access a permission that does not exists for this object's handler"); return false; } $icmspermissions_handler = new icms_ipf_permission_Handler($this->handler); $ret = $icmspermissions_handler->getGrantedGroups($group_perm, $this->id()); if (count($ret) == 0) { return false; } else { return $ret; } }
/** * * @return array */ public function UserCanUpload() { $handler = new icms_ipf_permission_Handler($this); return $handler->getGrantedItems('use_extension'); }