/** * Class factory. This is used for instantiating the extended classes. * * @param string The type of the class to be called (user, forum etc.) * @param vB_Registry An instance of the vB_Registry object. * @param integer One of the ERRTYPE_x constants * @param string Option to force loading a class from a specific file; no extension * * @return vB_DataManager An instance of the desired class */ function &datamanager_init($classtype, &$registry, $errtype = ERRTYPE_STANDARD, $forcefile = '') { static $called; if (empty($called)) { // include the abstract base class require_once(DIR . '/includes/class_dm.php'); $called = true; } if (preg_match('#^\w+$#', $classtype)) { $classtype = strtolower($classtype); if ($forcefile) { $classfile = preg_replace('#[^a-z0-9_]#i', '', $forcefile); } else { $classfile = str_replace('_multiple', '', $classtype); } require_once(DIR . '/includes/class_dm_' . $classfile . '.php'); switch($classtype) { case 'userpic_avatar': case 'userpic_profilepic': case 'userpic_sigpic': $object = vB_DataManager_Userpic::fetch_library($registry, $errtype, $classtype); break; case('socialgroupicon'): $object = vB_DataManager_SocialGroupIcon::fetch_library($registry, $errtype, $classtype); break; default: $classname = 'vB_DataManager_' . $classtype; $object = new $classname($registry, $errtype); } return $object; } }
/** * Any checks to run immediately before saving. If returning false, the save will not take place. * * @access protected * * @param boolean $doquery Do the query? * @return boolean True on success; false if an error occurred */ function pre_save($doquery = true) { if ($this->presave_called !== null) { return $this->presave_called; } if ($file =& $this->fetch_field('filedata')) { $this->setr_info('filedata', $file); $this->do_unset('filedata'); if (!is_writable($this->fetch_path($this->fetch_field('groupid'), $this->info['group']['icondateline'], false, true))) { $this->error('upload_invalid_imagepath'); return false; } if ($thumb =& $this->fetch_field('thumbnail_filedata')) { $this->setr_info('thumbnail_filedata', $thumb); $this->do_unset('thumbnail_filedata'); } require_once(DIR . '/includes/class_image.php'); $image =& vB_Image::fetch_library($this->registry); } return parent::pre_save($doquery); }