Error In Include(Rdbauthmanager.php)

My works OK on live server

but when I try to show on locahost I show:

include(RDbAuthManager.php) [<a href=‘function.include’>function.include</a>]: failed to open stream: No such file or directory

/Applications/MAMP/htdocs/yii/1.1.12/framework/YiiBase.php(423)

411 {

412 include($classFile);

413 if(YII_DEBUG && basename(realpath($classFile))!==$className.’.php’)

414 throw new CException(Yii::t(‘yii’,‘Class name “{class}” does not match class file “{file}”.’, array(

415 ‘{class}’=>$className,

416 ‘{file}’=>$classFile,

417 )));

418 break;

419 }

420 }

421 }

422 else

423 include($className.’.php’);

424 }

425 else // class name with namespace in PHP 5.3

426 {

427 $namespace=str_replace(’\\’,’.’,ltrim($className,’\\’));

428 if(($path=self::getPathOfAlias($namespace))!==false)

429 include($path.’.php’);

430 else

431 return false;

432 }

433 return class_exists($className,false) || interface_exists($className,false);

434 }

435 return true;

Where is it the problem and how can I fix it?

Thanks

Hi

u can create the file in comoponent folder RDbAuthManager.php and paste the code


<?php

/**

* Rights authorization manager class file.

*

* @author Christoffer Niska <cniska@live.com>

* @copyright Copyright &copy; 2010 Christoffer Niska

* @since 0.9.7

*/

class RDbAuthManager extends CDbAuthManager

{

	/**

	 * @var string the name of the rights table.

	 */

	public $rightsTable = 'Rights';


	private $_items = array();

	private $_itemChildren = array();


	/**

	 * Adds an item as a child of another item.

	 * Overloads the parent method to make sure that

	 * we do not add already existing children.

	 * @param string $itemName the item name.

	 * @param string $childName the child item name.

	 * @throws CException if either parent or child doesn't exist or if a loop has been detected.

	 */

	public function addItemChild($itemName, $childName)

	{

		// Make sure that the item doesn't already have this child.

		if( $this->hasItemChild($itemName, $childName)===false )

			return parent::addItemChild($itemName, $childName);

	}


	/**

	* Assigns an authorization item to a user making sure that

	* the user doesn't already have this assignment.

	* Overloads the parent method to make sure that

	* we do not assign already assigned items.

	* @param string $itemName the item name.

	* @param mixed $userId the user ID (see {@link IWebUser::getId})

	* @param string $bizRule the business rule to be executed when {@link checkAccess} is called

	* for this particular authorization item.

	* @param mixed $data additional data associated with this assignment.

	* @return CAuthAssignment the authorization assignment information.

	* @throws CException if the item does not exist or if the item has already been assigned to the user.

	*/

	public function assign($itemName, $userId, $bizRule=null, $data=null)

	{

		// Make sure that this user doesn't already have this assignment.

		if( $this->getAuthAssignment($itemName, $userId)===null )

			return parent::assign($itemName, $userId, $bizRule, $data);

	}


	/**

	* Returns the authorization item with the specified name.

	* Overloads the parent method to allow for runtime caching.

	* @param string $name the name of the item.

	* @param boolean $allowCaching whether to accept cached data.

	* @return CAuthItem the authorization item. Null if the item cannot be found.

	*/

	public function getAuthItem($name, $allowCaching=true)

	{

		// Get all items if necessary and cache them.

		if( $allowCaching && $this->_items===array() )

			$this->_items = $this->getAuthItems();


		// Get the items from cache if possible.

		if( $allowCaching && isset($this->_items[ $name ]) )

		{

			return $this->_items[ $name ];

		}

		// Attempt to get the item.

		else if( ($item = parent::getAuthItem($name))!==null )

		{

			return $item;

		}


		// Item does not exist.

		return null;

	}




	/**

	* Returns the specified authorization items.

	* @param array $names the names of the authorization items to get.

	* @param boolean $nested whether to nest the items by type.

	* @return array the authorization items.

	*/

	public function getAuthItemsByNames($names, $nested=false)

	{

		// Get all items if necessary and cache them.

		if( $this->_items===array() )

			$this->_items = $this->getAuthItems();


		// Collect the items we want.

		$items = array();

		foreach( $this->_items as $name=>$item )

		{

			if( in_array($name, $names) )

			{

				if( $nested===true )

					$items[ $item->getType() ][ $name ] = $item;

				else

					$items[ $name ] = $item;

			}

		}


		return $items;

	}


	/**

	* Returns the authorization items of the specific type and user.

	* Overloads the parent method to allow for sorting.

	* @param integer $type the item type (0: operation, 1: task, 2: role). Defaults to null,

	* meaning returning all items regardless of their type.

	* @param mixed $userId the user ID. Defaults to null, meaning returning all items even if

	* they are not assigned to a user.

	* @param boolean $sort whether to sort the items according to their weights.

	* @return array the authorization items of the specific type.

	*/

	public function getAuthItems($type=null, $userId=null, $sort=true)

	{

		// We need to sort the items.

		if( $sort===true )

		{

			if( $type===null && $userId===null )

			{

				$sql = "SELECT name,t1.type,description,t1.bizrule,t1.data,weight

					FROM {$this->itemTable} t1

					LEFT JOIN {$this->rightsTable} t2 ON name=itemname

					ORDER BY t1.type DESC, weight ASC";

				$command=$this->db->createCommand($sql);

			}

			else if( $userId===null )

			{

				$sql = "SELECT name,t1.type,description,t1.bizrule,t1.data,weight

					FROM {$this->itemTable} t1

					LEFT JOIN {$this->rightsTable} t2 ON name=itemname

					WHERE t1.type=:type

					ORDER BY t1.type DESC, weight ASC";

				$command=$this->db->createCommand($sql);

				$command->bindValue(':type', $type);

			}

			else if( $type===null )

			{

				$sql = "SELECT name,t1.type,description,t1.bizrule,t1.data,weight

					FROM {$this->itemTable} t1

					LEFT JOIN {$this->assignmentTable} t2 ON name=t2.itemname

					LEFT JOIN {$this->rightsTable} t3 ON name=t3.itemname

					WHERE userid=:userid

					ORDER BY t1.type DESC, weight ASC";

				$command=$this->db->createCommand($sql);

				$command->bindValue(':userid', $userId);

			}

			else

			{

				$sql = "SELECT name,t1.type,description,t1.bizrule,t1.data,weight

					FROM {$this->itemTable} t1

					LEFT JOIN {$this->assignmentTable} t2 ON name=t2.itemname

					LEFT JOIN {$this->rightsTable} t3 ON name=t3.itemname

					WHERE t1.type=:type AND userid=:userid

					ORDER BY t1.type DESC, weight ASC";

				$command=$this->db->createCommand($sql);

				$command->bindValue(':type', $type);

				$command->bindValue(':userid', $userId);

			}


			$items = array();

			foreach($command->queryAll() as $row)

				$items[ $row['name'] ] = new CAuthItem($this, $row['name'], $row['type'], $row['description'], $row['bizrule'], unserialize($row['data']));

		}

		// No sorting required.

		else

		{

			$items = parent::getAuthItems($type, $userId);

		}


		return $items;

	}


	/**

	 * Returns the children of the specified item.

	 * Overloads the parent method to allow for caching.

	 * @param mixed $names the parent item name. This can be either a string or an array.

	 * The latter represents a list of item names (available since version 1.0.5).

	 * @param boolean $allowCaching whether to accept cached data.

	 * @return array all child items of the parent

	 */

	public function getItemChildren($names, $allowCaching=true)

	{

		// Resolve the key for runtime caching.

		$key = $names===(array)$names ? implode('|', $names) : $names;


		// Get the children from cache if possible.

		if( $allowCaching && isset($this->_itemChildren[ $key ])===true )

		{

			return $this->_itemChildren[ $key ];

		}

		// Children not cached or cached data is not accepted.

		else

		{

			// We only have one name.

			if( is_string($names) )

			{

				$condition = 'parent='.$this->db->quoteValue($names);

			}

			// We have multiple names.

			else if( $names===(array)$names && $names!==array() )

			{

				foreach($names as &$name)

					$name=$this->db->quoteValue($name);


				$condition = 'parent IN ('.implode(', ', $names).')';

			}

			else

			{

				$condition = '1';

			}


			$sql = "SELECT name, type, description, bizrule, data

				FROM {$this->itemTable}, {$this->itemChildTable}

				WHERE {$condition} AND name=child";

			$children = array();

			foreach( $this->db->createCommand($sql)->queryAll() as $row )

			{

				if( ($data = @unserialize($row['data']))===false )

					$data = null;


				$children[ $row['name'] ] = new CAuthItem($this, $row['name'], $row['type'], $row['description'], $row['bizrule'], $data);

			}


			// Attach the authorization item behavior.

			$children = Rights::getAuthorizer()->attachAuthItemBehavior($children);


			// Cache the result.

			return $this->_itemChildren[ $key ] = $children;

		}

	}


	public function getAssignmentsByItemName($name)

	{

		$sql = "SELECT * FROM {$this->assignmentTable} WHERE itemname=:itemname";

		$command = $this->db->createCommand($sql);

		$command->bindValue(':itemname', $name);


		$assignments=array();

		foreach($command->queryAll($sql) as $row)

		{

			if(($data=@unserialize($row['data']))===false)

				$data=null;


			$assignments[ $row['userid'] ] = new CAuthAssignment($this, $row['itemname'], $row['userid'], $row['bizrule'], $data);

		}


		return $assignments;

	}


	/**

	* Updates the authorization items weight.

	* @param array $result the result returned from jui-sortable.

	*/

	public function updateItemWeight($result)

	{

		foreach( $result as $weight=>$itemname )

		{

			$sql = "SELECT COUNT(*) FROM {$this->rightsTable}

				WHERE itemname=:itemname";

			$command = $this->db->createCommand($sql);

			$command->bindValue(':itemname', $itemname);


			// Check if the item already has a weight.

			if( $command->queryScalar()>0 )

			{

				$sql = "UPDATE {$this->rightsTable}

					SET weight=:weight

					WHERE itemname=:itemname";

				$command = $this->db->createCommand($sql);

				$command->bindValue(':weight', $weight);

				$command->bindValue(':itemname', $itemname);

				$command->execute();

			}

			// Item does not have a weight, insert it.

			else

			{

				if( ($item = $this->getAuthItem($itemname))!==null )

				{

					$sql = "INSERT INTO {$this->rightsTable} (itemname, type, weight)

						VALUES (:itemname, :type, :weight)";

					$command = $this->db->createCommand($sql);

					$command->bindValue(':itemname', $itemname);

					$command->bindValue(':type', $item->getType());

					$command->bindValue(':weight', $weight);

					$command->execute();

				}

			}

		}

	}

}



hope u are running.

Best Regards,

Ankit Modi

[quote=“Ankit Modi, post:2, topic:61673”]

u can create the file in comoponent folder RDbAuthManager.php and paste the code

[/code]

Do you mean in "protected/components"??

But on live (working) server, I don’t have this file?

ok so u can check the server folder in every module it’s one comoponnet folder

otherwise u can create the protectd/comopnents new file